MCP基本使用
MCP版本用日期定义最早的正式版本2024-11-05截止当前最新的是2026-07-28这一版协议有根本性改动Python SDK需要使用 v2。下面的概念是针对 2024-11-05 版的2026-07-28 变成无状态协议了下文属于该版本的会额外指出MCP就是 JSON-RPC 2.0 消息通信规范也就是Agent要完成任务时需要使用的远程函数的调用方式无非MCP协议将这种调用规范化了以JSON数据格式交互。MCP Server 主要提供3种东西Tools工具、功能、Resources上下文和数据、Prompts模板消息和工作流常用 / 命令触发另外提供了分页太长按游标分次读取、完成服务端引导客户完善参数和日志记录服务端告诉客户端发生的一些情况。MCP Client 主要提供2种东西Roots服务端从客户端获得根的位置项目根目录或仓库根目录等、Sampling服务器给客户端提问题客户端去调用LLM获得回答后回复服务器服务器实现了代理行为。容纳一堆 MCP Client 的AI应用称为 MCP HostMCP Server可能是本地的也可能是远程的。协议本身定义的传输机制是2种stdio MCP Server作为子进程和 HTTP with SSE MCP Server 包含 SSE 和 HTTP POST 两个端点客户端打开 SSE连接时服务端将 POST URI 告诉客户端以便客户端发消息给服务端。协议允许在保证生命周期情况下自定义传输。注意2025-03-26 版本用 Streamable HTTP 代替了 HTTP with SSE。作为远程函数MCP请求包含method 和 paramsMCP响应包含result 或 error 二选一。另外MCP请求和MCP响应都包含id 整数或字符串响应中的 id 必须和对应的请求的 id 一致。另外还有一种MCP通知消息它可以是服务器到客户端也可以是客户端到服务器它包含 method 和 params并且不得有 id因为通知不求回报。客户端或服务器都可以发送ping请求ping method来了解对方活着没。双方都可以发送notifications/cancelled 通知消息来表达要撤销某个请求的立场。对于可能的长耗时响应可以在请求时给参数添加元数据_meta progressToken接收者可以回复notifications/progress 通知消息报告进度用相同的 progressToken 表明这是哪个请求的响应进度。MCP常见的SDK是 Python SDK 和 TypeScript SDK。下载比较新的 Python 版本 3.14 python-3.14.8-amd64.exe并安装。pip install mcp[cli]2 安装 SDK版本2变动太大网上大量资料都是针对版本1的。下面是MCP服务器的例子传输模式用了 stdio也就是服务器作为子进程存在一般测试的时候用该模式生产环境应该用 SSE基本上就是一些方法头上加对应的装饰器from mcp.server.fastmcp import FastMCP import datetime import urllib.parse mcp FastMCP(mcp-server-1) # v2中名为 MCPServer # Tool 1 mcp.tool(description浮点加法计算器) def add(a: float, b: float) - float: return a b # Tool 2 mcp.tool(description字符串反转) def reverse_string(text: str) - str: return text[::-1] # Tool 3 mcp.tool(description获取当前时间) def get_current_time() - str: return datetime.datetime.now().isoformat() # static resource mcp.resource(docs://about) def get_about() - str: 返回Server基本信息 # 也可以这样用文档字符串指定 description return This is an MCP Server demo for the study of MCP development # dynamic resource mcp.resource(greeting://{name}, description动态资源带参数) def get_greeting(name: str) - str: decoded_name urllib.parse.unquote(name) return fHello, {decoded_name}! Welcome to study MCP Server development # prompt mcp.prompt() def review_code(code: str) - str: Review a piece of code. return fPlease review this code:\n\n{code} # start MCP Server (stdio mode) if __name__ __main__: mcp.run(transport stdio)下面是使用上述服务器的客户端的例子客户端代码包括的步骤是1、创建客户端对象2、创建会话3、会话初始化4、之后就是正常的协议操作5、用了with语法所以会话和客户端对象会自动关闭。SDK把复杂的初始化等通信步骤包装了所以用起来没那么麻烦。。调用prompts和调用tools是类似的远程函数调用使用静态和动态资源则需要URI。from mcp import ClientSession, StdioServerParameters from mcp.client.stdio import stdio_client import asyncio async def main(): server_params StdioServerParameters( commandpython, args[my_first_mcp_server.py], ) async with stdio_client(server_params) as (r, w): async with ClientSession(r, w) as session: await session.initialize() tools await session.list_tools() print( Tools available ) for tool in tools.tools: print(f - {tool.name}: {tool.description}) ctResult await session.call_tool(add, {a: 3, b: 4}) print(f\n add(3, 4) {ctResult.structuredContent[result]}) ctResult await session.call_tool(reverse_string, {text: This is a MCP test.}) print(f reverse_string(This is a MCP test.) is {ctResult.structuredContent[result]}) ctResult await session.call_tool(get_current_time, {}) print(f current time: {ctResult.structuredContent[result]}) resources await session.list_resources() print(\n Resources available ) for resource in resources.resources: print(f - {resource.name}: {resource.uri} {resource.description}) rrr await session.read_resource(docs://about) print(rrr.contents[0].mimeType, \t, rrr.contents[0].text) resources await session.list_resource_templates() for resource in resources.resourceTemplates: print(f - {resource.name}: {resource.uriTemplate} {resource.description}) rrr await session.read_resource(greeting://Jack-Ma) print(rrr.contents[0].mimeType, \t, rrr.contents[0].text) prompts await session.list_prompts() print(\n Prompts available ) for prompt in prompts.prompts: print(f - {prompt.name}: {prompt.description}) pResult await session.get_prompt(review_code, {code: echo dos bat! aaa.txt}) print(pResult.messages[0].content.text) if __name__ __main__: asyncio.run(main())输出如下D:\py_prj\mcpTestpython my_client1.py Tools available - add: 浮点加法计算器 - reverse_string: 字符串反转 - get_current_time: 获取当前时间 add(3, 4) 7.0 reverse_string(This is a MCP test.) is .tset PCM a si sihT current time: 2026-10-10T16:00:56.479329 Resources available - get_about: docs://about 返回Server基本信息 text/plain This is an MCP Server demo for the study of MCP development - get_greeting: greeting://{name} 动态资源带参数 text/plain Hello, Jack-Ma! Welcome to study MCP Server development Prompts available - review_code: Review a piece of code. Please review this code: echo dos bat! aaa.txt此图来源 参考2我们来把上述程序传输方式改成 Streamable HTTP。首先是服务器端mcp对象的settings属性中设置host和port然后 run(...) 中改传输方式并指定 path。# ....................................... # start MCP Server (stdio mode) if __name__ __main__: mcp.settings.host 0.0.0.0 mcp.settings.port 8888 mcp.run(transport streamable-http, mount_path/mcp)再修改客户端其实就是创建 client 对象的语句改动了一下from mcp import ClientSession #, StdioServerParameters #from mcp.client.stdio import stdio_client from mcp.client.streamable_http import streamable_http_client import asyncio async def main(): # server_params StdioServerParameters( # commandpython, # args[my_first_mcp_server.py], # ) # async with stdio_client(server_params) as (r, w): async with streamable_http_client(http://localhost:8888/mcp) as (r, w, _): # .......................................................一个终端运行服务端另一个终端运行客户端。客户端的输出是和前面一样的服务端的输出如下多次运行客户端服务端输出会从 Created new transport with session ID: 这里开始D:\py_prj\mcpTestpython my_first_mcp_server.py [32mINFO[0m: Started server process [[36m16216[0m] [32mINFO[0m: Waiting for application startup. [10/12/26 12:28:10] INFO StreamableHTTP session manager started streamable_http_manager.py:164 [32mINFO[0m: Application startup complete. [32mINFO[0m: Uvicorn running on [1mhttp://0.0.0.0:8888[0m (Press CTRLC to quit) [10/12/26 12:28:34] INFO Created new transport with session ID: streamable_http_manager.py:330 5948d71511ae447c84fa31bc925c0ede [32mINFO[0m: 127.0.0.1:60822 - [1mPOST /mcp HTTP/1.1[0m [32m200 OK[0m [32mINFO[0m: 127.0.0.1:60826 - [1mGET /mcp HTTP/1.1[0m [32m200 OK[0m [32mINFO[0m: 127.0.0.1:60825 - [1mPOST /mcp HTTP/1.1[0m [32m202 Accepted[0m [32mINFO[0m: 127.0.0.1:60828 - [1mPOST /mcp HTTP/1.1[0m [32m200 OK[0m [10/12/26 12:28:35] INFO Processing request of type ListToolsRequest server.py:733 [32mINFO[0m: 127.0.0.1:60830 - [1mPOST /mcp HTTP/1.1[0m [32m200 OK[0m INFO Processing request of type CallToolRequest server.py:733 [32mINFO[0m: 127.0.0.1:60832 - [1mPOST /mcp HTTP/1.1[0m [32m200 OK[0m INFO Processing request of type CallToolRequest server.py:733 [32mINFO[0m: 127.0.0.1:60836 - [1mPOST /mcp HTTP/1.1[0m [32m200 OK[0m INFO Processing request of type CallToolRequest server.py:733 [32mINFO[0m: 127.0.0.1:60838 - [1mPOST /mcp HTTP/1.1[0m [32m200 OK[0m [10/12/26 12:28:36] INFO Processing request of type ListResourcesRequest server.py:733 [32mINFO[0m: 127.0.0.1:60840 - [1mPOST /mcp HTTP/1.1[0m [32m200 OK[0m INFO Processing request of type ReadResourceRequest server.py:733 [32mINFO[0m: 127.0.0.1:60842 - [1mPOST /mcp HTTP/1.1[0m [32m200 OK[0m INFO Processing request of type ListResourceTemplatesRequest server.py:733 [32mINFO[0m: 127.0.0.1:60844 - [1mPOST /mcp HTTP/1.1[0m [32m200 OK[0m [10/12/26 12:28:37] INFO Processing request of type ReadResourceRequest server.py:733 [32mINFO[0m: 127.0.0.1:60846 - [1mPOST /mcp HTTP/1.1[0m [32m200 OK[0m INFO Processing request of type ListPromptsRequest server.py:733 [32mINFO[0m: 127.0.0.1:60848 - [1mPOST /mcp HTTP/1.1[0m [32m200 OK[0m INFO Processing request of type GetPromptRequest server.py:733 [10/12/26 12:28:38] INFO Terminating session: 5948d71511ae447c84fa31bc925c0ede streamable_http.py:831 [32mINFO[0m: 127.0.0.1:60850 - [1mDELETE /mcp HTTP/1.1[0m [32m200 OK[0m用Wireshark捕获一下过滤器 tcp.port8888 http可以发现会话 initialize 时客户向服务器发送 POST请求头部 accept 包含了application/json, text/event-stream 服务器回复 200 text/event-stream响应头部包含了 mcp-session-id。之后客户会先向服务器发送一个空的 GET 请求根据参考6这是客户想升级为SSE的意思头部包含了 mcp-protocol-version: 2025-11-25 表明了客户端支持的协议版本再发送 POST 请求以通知消息告诉服务器 initialized 初始化结束客户端准备就绪服务器则以 202 回复表示知道了但事情还没完因为之后会有更多 SSE。如果服务器压根不支持客户端提出的协议连接就该终止。。此后基本上是客户端一个POST请求服务端以 text/event-stream 内容格式下发数据。这个流程其实和HTTP with SSE差不多但 Streamable HTTP 是允许服务器只支持无状态的HTTP而不支持SSE的从 2026-07-28 版本协议彻底改成无状态来看Streamable HTTP 像一个过渡产品。参考1MCP协议实战用Python 5分钟搭建一个MCP Server附完整代码https://zhuanlan.zhihu.com/p/2056732722438090859#:~:text%E6%9C%AC%E6%96%87%E7%94%A8%E4%B8%80%E6%AE%B5%E5%8F%AF%E7%9B%B4%E6%8E%A5%E8%BF%90%E8%A1%8C%E7%9A%84%20Python%E4%BB%A3%E7%A0%81%EF%BC%8C%E5%B8%A6%E4%BD%A0%E4%BB%8E%E9%9B%B6%E6%90%AD%E5%BB%BA%E7%AC%AC%E4%B8%80%E4%B8%AA%20MCP%20Server%EF%BC%8C%E8%A7%A3%E5%86%B3%22Agent%E6%83%B3%E6%93%8D%E4%BD%9C%E6%95%B0%E6%8D%AE%E5%BA%93%2F%E6%9F%A5%E5%A4%A9%E6%B0%94%2F%E5%8F%91%E9%82%AE%E4%BB%B6%EF%BC%8C%E5%8D%B4%E4%B8%8D%E7%9F%A5%E9%81%93%E5%A6%82%E4%BD%95%E6%A0%87%E5%87%86%E5%8C%96%E6%8E%A5%E5%85%A5%22%E7%9A%84%E7%97%9B%E7%82%B9%E3%80%82%20%E9%80%82%E5%90%88%E6%9C%89Python%E5%9F%BA%E7%A1%80%E7%9A%84%E5%BC%80%E5%8F%91%E8%80%85%E9%98%85%E8%AF%BB%EF%BC%8C%E9%99%84%E5%AE%8C%E6%95%B4%E6%8A%A5%E9%94%99%E6%8E%92%E6%9F%A5%E6%8C%87%E5%8D%97%E3%80%82%202024%E5%B9%B411%E6%9C%88%EF%BC%8C,Anthropic%20%E5%8F%91%E5%B8%83%E4%BA%86%20MCP%E5%8D%8F%E8%AE%AE%EF%BC%8C%E5%88%9D%E8%A1%B7%E5%BE%88%E7%AE%80%E5%8D%95%EF%BC%9A%E8%AE%A9%20AI%20Agent%20%E8%BF%9E%E6%8E%A5%E5%A4%96%E9%83%A8%E5%B7%A5%E5%85%B7%E6%97%B6%EF%BC%8C%E4%B8%8D%E5%86%8D%E9%9C%80%E8%A6%81%E4%B8%BA%E6%AF%8F%E4%B8%AA%E5%B7%A5%E5%85%B7%E5%86%99%E4%B8%80%E5%A5%97%E5%AE%9A%E5%88%B6%E5%8C%96%E7%9A%84%E8%83%B6%E6%B0%B4%E4%BB%A3%E7%A0%81%E3%80%82https://zhuanlan.zhihu.com/p/2056732722438090859#:~:text%E6%9C%AC%E6%96%87%E7%94%A8%E4%B8%80%E6%AE%B5%E5%8F%AF%E7%9B%B4%E6%8E%A5%E8%BF%90%E8%A1%8C%E7%9A%84%20Python%E4%BB%A3%E7%A0%81%EF%BC%8C%E5%B8%A6%E4%BD%A0%E4%BB%8E%E9%9B%B6%E6%90%AD%E5%BB%BA%E7%AC%AC%E4%B8%80%E4%B8%AA%20MCP%20Server%EF%BC%8C%E8%A7%A3%E5%86%B3%22Agent%E6%83%B3%E6%93%8D%E4%BD%9C%E6%95%B0%E6%8D%AE%E5%BA%93%2F%E6%9F%A5%E5%A4%A9%E6%B0%94%2F%E5%8F%91%E9%82%AE%E4%BB%B6%EF%BC%8C%E5%8D%B4%E4%B8%8D%E7%9F%A5%E9%81%93%E5%A6%82%E4%BD%95%E6%A0%87%E5%87%86%E5%8C%96%E6%8E%A5%E5%85%A5%22%E7%9A%84%E7%97%9B%E7%82%B9%E3%80%82%20%E9%80%82%E5%90%88%E6%9C%89Python%E5%9F%BA%E7%A1%80%E7%9A%84%E5%BC%80%E5%8F%91%E8%80%85%E9%98%85%E8%AF%BB%EF%BC%8C%E9%99%84%E5%AE%8C%E6%95%B4%E6%8A%A5%E9%94%99%E6%8E%92%E6%9F%A5%E6%8C%87%E5%8D%97%E3%80%82%202024%E5%B9%B411%E6%9C%88%EF%BC%8C,Anthropic%20%E5%8F%91%E5%B8%83%E4%BA%86%20MCP%E5%8D%8F%E8%AE%AE%EF%BC%8C%E5%88%9D%E8%A1%B7%E5%BE%88%E7%AE%80%E5%8D%95%EF%BC%9A%E8%AE%A9%20AI%20Agent%20%E8%BF%9E%E6%8E%A5%E5%A4%96%E9%83%A8%E5%B7%A5%E5%85%B7%E6%97%B6%EF%BC%8C%E4%B8%8D%E5%86%8D%E9%9C%80%E8%A6%81%E4%B8%BA%E6%AF%8F%E4%B8%AA%E5%B7%A5%E5%85%B7%E5%86%99%E4%B8%80%E5%A5%97%E5%AE%9A%E5%88%B6%E5%8C%96%E7%9A%84%E8%83%B6%E6%B0%B4%E4%BB%A3%E7%A0%81%E3%80%82参考2规范 – Model Context Protocol Specification参考3协议规范 What is the Model Context Protocol (MCP)? - Model Context Protocol参考4 MCP Python SDK - MCP Python SDK参考5(99 封私信 / 99 条消息) 跟着MCP官方学习Python SDK精华版 - 知乎参考6MCP 协议更新详解从 HTTPSSE 到 Streamable HTTPStreamable HTTP 是对 MC - 掘金

相关新闻

企业微信 AI 客服答不准怎么办?兜底话术与置信度阈值

企业微信 AI 客服答不准怎么办?兜底话术与置信度阈值

客户问的是一款产品的偏门参数,AI 一本正经地答错了。这种错比不回复更伤:客户按错信息做了决定,回头算在品牌头上。答不准通常不是模型变笨,而是两件事没配好——该兜底的时候它硬答,该收进知识库的问题它够不着。## …

2026/10/13 6:59:55 阅读更多 →
恶意代码概述

恶意代码概述

1. 计算机病毒(Virus)核心特点:必须依附文件,需要人为触发,不能自己网上传播 原理:寄生在正常文件里(exe / 文档)。必须用户手动打开这个带毒文件,病毒才会激活&#xff…

2026/10/13 6:59:55 阅读更多 →
恶意代码检测毕设实战:PE特征提取与机器学习模型训练

恶意代码检测毕设实战:PE特征提取与机器学习模型训练

简介:这份资源是一套基于机器学习的恶意代码检测项目源码,面向计算机、人工智能、通信工程、自动化等专业的在校学生与教师,也适合作为毕设、课程设计或项目立项演示的参考。项目围绕恶意代码的特征提取、向量化与模型训练展开,涵…

2026/10/13 6:58:55 阅读更多 →

最新新闻

Spring Boot 3.x API密钥轮换机制:从状态机设计到平滑过渡

Spring Boot 3.x API密钥轮换机制:从状态机设计到平滑过渡

做后端开发这几年,只要接口走的是 API 密钥认证,密钥轮换就是一个绕不开的话题。Spring Boot 3.x 项目里,密钥轮换的坑尤其隐蔽:表面上看,更新一下数据库里的 key,客户端换一下配置就行,但实际一…

2026/10/13 7:38:09 阅读更多 →
深度学习优化算法与参数初始化:从梯度下降到动量实战

深度学习优化算法与参数初始化:从梯度下降到动量实战

2020年2月16日,我的深度学习笔记写到第八篇。上一篇从经验风险最小化聊到泛化误差,基本把“优化目标”讲清楚了;但目标归目标,真正让模型训练起来的是优化算法本身。这篇笔记把镜头拉到更新公式这一层,重点拆两块&…

2026/10/13 7:38:09 阅读更多 →
真三MOD专用蓝宝石渲染管线2.2b优化指南

真三MOD专用蓝宝石渲染管线2.2b优化指南

简介:本资源是魔兽争霸III玩家专用的自定义地图优化版本,面向熟悉真三国无双类RPG地图的中高级玩家,解决原版平衡性不足、技能冗余或运行卡顿等问题。压缩包为RAR格式,共2个文件:核心地图文件BT蓝宝石专署2.2b.w3x&…

2026/10/13 7:38:09 阅读更多 →
SpringBoot毕业生就业去向登记管理系统:毕设源码与二次开发指南

SpringBoot毕业生就业去向登记管理系统:毕设源码与二次开发指南

简介:这份资源是面向计算机专业毕业生与Java初学者的一套完整就业去向登记管理系统源码,可直接作为毕业设计或课程设计参考。系统基于SpringBoot框架开发,覆盖需求分析、总体设计、详细设计与功能测试全流程,包含功能结构、数据结…

2026/10/13 7:38:09 阅读更多 →
Spring Boot 3.x API密钥认证与密钥轮换实战指南

Spring Boot 3.x API密钥认证与密钥轮换实战指南

“你的服务对接了十几个下游调用方,大家约定好每次请求头里带一个 API Key,服务端校验通过才放行。密钥用了一年,安全团队突然要求立即轮换,你改配置、重启、发通知,结果重启期间服务不可用,调用方新旧密钥…

2026/10/13 7:38:09 阅读更多 →
链表分解:从内存布局到指针偏移的底层实践

链表分解:从内存布局到指针偏移的底层实践

1. 项目概述:这不是“拆链子”,而是把链表“掰开揉碎”讲清楚 “链表的分解”这五个字,乍看像一道算法题的标题,但实际在一线教学、代码评审和系统调试中,它代表一种极其关键的底层思维训练——不是单纯地写个反转或删…

2026/10/13 7:37:09 阅读更多 →

日新闻

物联网系统集成避坑指南:从选型到验收的关键要点

物联网系统集成避坑指南:从选型到验收的关键要点

做了这么多年物联网系统集成的项目,我最大的感受是,大部分坑不是出在技术前沿,而是出在一些看起来很平常的地方。设备选了便宜的、协议没问清楚、现场没摸透、验收标准写得含糊——这些细枝末节,最后都会变成延期、超支和扯皮的大…

2026/10/13 0:00:57 阅读更多 →
ESP32舵机控制全攻略:从PWM原理到高级玩法与常见故障排查

ESP32舵机控制全攻略:从PWM原理到高级玩法与常见故障排查

如果你玩ESP32有一阵子了,很难不碰到舵机控制这道坎。做智能小车要转方向,做机械臂要抬关节,做云台要偏航俯仰,背后都是同一个东西在干活:舵机。而我见过太多人卡在“代码能编译、舵机就是不听话”这个阶段&#xff0c…

2026/10/13 0:00:57 阅读更多 →
CAN总线原理与STM32实战:抗干扰、仲裁、错误处理全解析

CAN总线原理与STM32实战:抗干扰、仲裁、错误处理全解析

1. 为什么CAN总线至今仍是工业现场的“硬通货”?——从汽车底盘到智能温室的真实需求你有没有拆过一辆老款燃油车的中控台?或者调试过某高校实验室里那台跑着Modbus协议却频频丢帧的PLC控制柜?又或者,在某个农业物联网项目里&…

2026/10/13 0:00:57 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/13 2:54:56 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/12 0:16:38 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/13 1:58:08 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 21:05:09 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 14:48:49 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 18:11:17 阅读更多 →