2026年AI Agent面试通关秘籍:用TaoToken统一Key打通MCP与Function Call实战
1. 面试官为什么盯着 MCP 与 Function Call 不放2026 年的 AI Agent 岗位面试技术面里出现频率最高的组合拳就是 MCP 协议和 Function Call。原因很直接这两样东西决定了 Agent 能不能真正动手干活。模型再聪明如果调不动外部工具它就只是个聊天框。面试官想确认的是你不仅知道这两个概念还能在真实链路里把它们跑通。我梳理了最近几十份面经发现面试官考察这两个点时通常围绕三个层次展开。第一层是概念辨析MCP 和 Function Call 到底是不是一回事各自解决什么问题。第二层是工程落地你怎么定义工具、怎么管理鉴权、怎么处理调用失败。第三层是架构判断多智能体协作时工具调用链路怎么设计才不会乱。很多人卡在第二层。概念能背但一问到你的 endpoint 怎么配的鉴权信息放哪里模型返回的 tool_calls 怎么解析就开始含糊。这恰恰是面试官最在意的部分因为这说明你可能只是看过文档没有真正搭过。这篇内容的目标很明确给你一套可以直接复现的工具调用链路。用统一的 API 通道作为底座把 MCP 服务端和 Function Call 客户端串起来最后跑一次完整的调用验证。面试演示时你可以直接打开终端复现结果而不是干讲理论。先说清楚适合谁看。如果你正在准备 AI Agent 方向的面试需要一段能讲清楚、能演示的实战经历这篇对你有用。如果你已经在做 Agent 开发但工具调用链路总是零零散散、换个模型就要改一堆代码这篇也能帮你把结构理顺。核心检索词先摆出来AI Agent 面试里MCP 协议负责把工具标准化成服务Function Call 负责让模型决定何时调用两者配合才能撑起多智能体协作。理解这个分工是回答一切相关问题的起点。我试过用不同厂商的原生 Function Call 各写一套切换模型时改到怀疑人生。后来把工具层统一抽象用同一个 API 通道对接代码量直接砍掉一大半。下面就把这套结构拆开讲。2. TaoToken 统一 Key 的前置准备与 MCP 工具调用链路搭建在动手写代码之前先把底座搭好。所谓底座就是模型调用的入口。面试场景里你不可能现场去申请五六个厂商的账号所以用一个统一的 API 通道是最省事的做法。TaoToken 在这里扮演的角色就是统一入口一个 Key、一个 Base URL背后可以路由到不同的模型。先明确几个地址后面配置会反复用到。官网入口是 https://taotoken.net/?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content API 的基础地址是 https://taotoken.net/api 。注意 API 地址不带查询参数配置时直接填这个。拿到 Key 的路径是这样的进入控制台后创建 API Key然后把它保存到环境变量里。我建议不要硬编码在代码里面试演示时如果被问到Key 怎么管理的你可以直接说用环境变量加配置文件分离这是加分项。export TAOTOKEN_API_KEYsk-你的key export TAOTOKEN_BASE_URLhttps://taotoken.net/api接下来是 MCP 服务端的搭建。MCP 的核心思想是把工具抽象成服务服务端声明自己有哪些工具、每个工具需要什么参数客户端负责连接和调用。一个最小的 MCP 服务端可以用 Python 写声明一个查询天气的工具作为示例。# mcp_server.py from mcp.server import Server from mcp.server.stdio import stdio_server from mcp.types import Tool, TextContent app Server(demo-tools) app.list_tools() async def list_tools(): return [ Tool( nameget_weather, description查询指定城市的天气, inputSchema{ type: object, properties: { city: {type: string, description: 城市名称} }, required: [city] } ) ] app.call_tool() async def call_tool(name: str, arguments: dict): if name get_weather: city arguments.get(city) return [TextContent(typetext, textf{city} 今天晴气温 22 度)] raise ValueError(f未知工具: {name}) async def main(): async with stdio_server() as (read, write): await app.run(read, write, app.create_initialization_options()) if __name__ __main__: import asyncio asyncio.run(main())这段代码声明了一个工具并实现了调用逻辑。真实场景里你会连数据库或第三方接口但面试演示用这个足够说明问题。关键点是 inputSchema 用 JSON Schema 描述参数这是 MCP 和 Function Call 共通的部分。然后是客户端侧。客户端要做两件事连接 MCP 服务端拿到工具列表把这些工具转换成模型能理解的 Function Call 格式发给模型。模型返回 tool_calls 后客户端再去执行对应的 MCP 工具。这里有个容易踩的坑MCP 的工具描述格式和 OpenAI 风格的 Function Call 格式不完全一样需要做一层转换。转换的核心是把 MCP 的 name、description、inputSchema 映射到 Function Call 的 function 字段。def mcp_tool_to_function_call(mcp_tool): return { type: function, function: { name: mcp_tool.name, description: mcp_tool.description, parameters: mcp_tool.inputSchema } }这层转换看起来简单但它是整个链路的关键。面试时如果你能说清楚MCP 是服务端的标准Function Call 是模型侧的标准中间需要适配层面试官会认为你真的理解了两者的定位差异。多智能体协作的场景下这层适配更重要。规划智能体负责拆任务执行智能体负责调工具评审智能体负责检查结果。每个智能体可能连接不同的 MCP 服务端但都通过同一个 API 通道调用模型。统一 Key 的价值在这里体现得最明显不用为每个智能体单独配一套鉴权。3. 可复制的 endpoint 与 auth.json 配置片段这一节给你可以直接抄的配置。面试演示最怕现场配环境配半天所以提前把配置文件准备好到时候直接展示。先看模型调用的配置。如果你用的是兼容 OpenAI 接口的客户端配置长这样{ base_url: https://taotoken.net/api, api_key: 从环境变量读取, model: claude-sonnet-4-20250514, timeout: 60 }如果你用的是 Claude Code 这类工具配置会落在 settings 文件里。路径通常是项目根目录下的.claude/settings.json或者用户目录下的配置文件。内容大致是{ env: { ANTHROPIC_BASE_URL: https://taotoken.net/api, ANTHROPIC_API_KEY: sk-你的key, ANTHROPIC_MODEL: claude-sonnet-4-20250514 } }注意这里三个要素必须齐全Base URL、Key、Model ID。少任何一个都会报鉴权失败或者模型找不到。面试时如果被问到你怎么保证配置不出错你就说这三件套是固定检查项。如果你用的是 Codex 类的工具配置会落在auth.json里。这个文件的结构和上面不同它把鉴权信息和模型配置分开{ auth_mode: apikey, api_key: sk-你的key, base_url: https://taotoken.net/api, model: claude-sonnet-4-20250514 }路径一般在~/.codex/auth.json或者项目级的配置目录。写这个文件的时候注意权限别提交到 Git 仓库里。面试官如果问密钥怎么管理这就是你的答案配置文件加环境变量敏感信息不进版本控制。再看 MCP 客户端的配置。如果你用的是 Cline 或者类似的编辑器插件MCP 服务端的配置通常是一个 JSON 片段{ mcpServers: { demo-tools: { command: python, args: [/path/to/mcp_server.py], env: { TAOTOKEN_API_KEY: sk-你的key } } } }这个配置告诉客户端怎么启动 MCP 服务端。command 是启动命令args 是参数env 是环境变量。面试演示时你可以把这个片段和前面的模型配置一起展示说明工具层和模型层是分开配置的但共用同一个 Key。如果你用的是 CC Switch 这类工具来管理多个配置它的配置文件结构会稍有不同但核心三件套不变。CC Switch 的好处是可以在多个配置之间快速切换面试时你可以演示同一个工具切换不同模型代码不用改。这里要强调一个设计原则配置和代码分离。工具的定义在 MCP 服务端模型的调用在客户端鉴权信息在配置文件。三层各司其职换任何一层都不影响其他层。这个结构讲清楚面试官对你的工程能力会有直观判断。还有一个细节超时和重试。工具调用可能失败模型调用也可能超时。配置里加上 timeout 和 max_retries面试时被问到调用失败怎么办你就有具体答案。{ base_url: https://taotoken.net/api, api_key: sk-你的key, model: claude-sonnet-4-20250514, timeout: 60, max_retries: 2, retry_delay: 1.5 }这些参数不是摆设。我踩过的坑是默认超时太短复杂任务还没返回就断了重试次数太多失败请求堆积把额度耗光。所以超时给足重试控制在 2 次以内失败就降级处理。4. 一次完整的调用验证与成功结果解析配置准备好之后跑一次完整调用。这一步是面试演示的高潮你要让面试官看到从用户提问到工具执行再到结果返回的全过程。先写客户端主逻辑。核心流程是连接 MCP 服务端拿工具列表转换格式发给模型解析 tool_calls执行工具把结果回传给模型拿到最终回复。import os import json import asyncio from openai import OpenAI from mcp import ClientSession, StdioServerParameters from mcp.client.stdio import stdio_client client OpenAI( base_urlos.environ[TAOTOKEN_BASE_URL], api_keyos.environ[TAOTOKEN_API_KEY] ) async def run_agent(user_query: str): server_params StdioServerParameters( commandpython, args[mcp_server.py] ) async with stdio_client(server_params) as (read, write): async with ClientSession(read, write) as session: await session.initialize() tools_result await session.list_tools() functions [ { type: function, function: { name: t.name, description: t.description, parameters: t.inputSchema } } for t in tools_result.tools ] messages [{role: user, content: user_query}] response client.chat.completions.create( modelclaude-sonnet-4-20250514, messagesmessages, toolsfunctions, tool_choiceauto ) msg response.choices[0].message if msg.tool_calls: for call in msg.tool_calls: args json.loads(call.function.arguments) result await session.call_tool( call.function.name, args ) messages.append(msg) messages.append({ role: tool, tool_call_id: call.id, content: result.content[0].text }) final client.chat.completions.create( modelclaude-sonnet-4-20250514, messagesmessages, toolsfunctions ) return final.choices[0].message.content return msg.content if __name__ __main__: answer asyncio.run(run_agent(北京今天天气怎么样)) print(answer)跑起来之后你会看到类似这样的输出北京今天晴气温 22 度适合外出活动。这个结果说明整条链路通了模型识别出需要调用天气工具客户端执行了 MCP 工具把结果回传后模型生成了自然语言回复。面试演示时你可以把过程拆开讲。第一步模型返回的 tool_calls 长这样{ id: call_abc123, type: function, function: { name: get_weather, arguments: {\city\: \北京\} } }第二步客户端解析 arguments调用 MCP 的 call_tool。第三步工具返回结果客户端把它包装成 role 为 tool 的消息。第四步再次调用模型模型基于工具结果生成最终回复。这个两次调用模型的模式是 Function Call 的标准流程面试官如果问为什么调两次你就说第一次是让模型决定调什么工具第二次是让模型基于工具结果组织语言。多智能体场景下这个流程会嵌套。规划智能体先拆任务执行智能体对每个子任务跑一遍上面的流程评审智能体检查结果。但底层的工具调用机制是一样的只是外层多了一层编排。验证成功之后建议把日志打出来。面试时展示日志比展示代码更有说服力因为日志能证明你真的跑过。import logging logging.basicConfig(levellogging.INFO) logger logging.getLogger(agent) logger.info(f模型返回 tool_calls: {msg.tool_calls}) logger.info(f工具执行结果: {result.content[0].text})日志里能看到完整的调用链面试官一眼就能判断你是不是真的搭过。5. 本篇常见报错排查401、local proxy failed 与 reading choices工具调用链路涉及多个环节任何一个环节出问题都会报错。这一节把最常见的几个报错和排查方法列出来面试时如果被问到你遇到过什么问题这些就是你的素材。第一个高频报错是 401 Unauthorized。这个基本是鉴权问题排查顺序是先确认 Key 有没有正确设置到环境变量再确认 Base URL 有没有写错最后确认 Key 有没有过期或者额度耗尽。echo $TAOTOKEN_API_KEY echo $TAOTOKEN_BASE_URL如果环境变量是空的说明 export 没生效或者你在新的终端窗口里没重新加载。如果环境变量正常但还是 401检查 Base URL 是不是多了斜杠或者少了路径。正确的写法是https://taotoken.net/api不要写成https://taotoken.net/api/v1或者带查询参数的地址。第二个常见报错是 local proxy failed。这个通常出现在客户端连接 MCP 服务端的时候。原因可能是 MCP 服务端的启动命令写错了或者 Python 环境里没装 mcp 包。pip install mcp python mcp_server.py先单独跑一下服务端确认它能正常启动。如果服务端启动就报错客户端肯定连不上。如果服务端能启动但客户端还是报 local proxy failed检查配置文件里的 command 和 args 路径是不是绝对路径。相对路径在不同工作目录下会失效。第三个报错是 reading choices 相关的错误典型信息是KeyError: choices或者list index out of range。这个说明模型返回的结构和你预期的不一样。可能的原因有三个模型名称写错了导致请求被拒绝请求参数不合法比如 tools 格式不对或者返回的是流式响应但你按非流式解析了。print(response)把原始响应打出来看比猜快得多。如果是模型名称问题确认 Model ID 拼写正确。如果是 tools 格式问题检查每个 function 是否有 name、description、parameters 三个字段。如果是流式问题把 stream 参数设为 False 再试。第四个报错是 OAuth 相关的鉴权失败。有些工具或者服务端要求 OAuth 流程如果你直接用 API Key 会报错。排查方法是确认你用的鉴权方式和工具要求的一致。如果工具要求 OAuth你需要先走授权流程拿到 token再把 token 配到请求里。{ auth_type: oauth, access_token: 你的token, base_url: https://taotoken.net/api }注意不要把 OAuth token 和 API Key 混用两者是不同的鉴权机制。第五个报错是工具调用超时。模型返回了 tool_calls但工具执行时间太长导致整个请求超时。解决办法是给工具执行单独设超时并且把耗时操作异步化。result await asyncio.wait_for( session.call_tool(name, args), timeout30 )如果工具确实需要长时间执行考虑改成异步任务模式先返回一个任务 ID让模型告诉用户正在处理处理完再回调。把这些报错和排查方法整理成清单面试时被问到你怎么保证链路稳定你就可以逐条讲。面试官喜欢听具体的错误信息和解决过程而不是我会做好异常处理这种空话。6. 把工具调用链路讲成你的面试亮点回到面试本身。技术面里面试官问 MCP 和 Function Call本质上是在确认三件事你理解两者的定位差异你能搭出可运行的链路你能处理链路中的异常。这三件事对应上面三节的内容你只要能复现就能讲清楚。回答MCP 和 Function Call 的区别时不要只说MCP 是升级版。正确的说法是Function Call 是模型侧的能力让模型决定调用哪个函数MCP 是服务端的标准把工具抽象成可发现、可调用的服务。两者不是替代关系而是配合关系。Function Call 负责决策MCP 负责执行。回答多智能体怎么协作时用上面的链路举例规划智能体拆任务执行智能体通过 Function Call 决定调什么工具通过 MCP 执行工具评审智能体检查结果。每个智能体共用同一个 API 通道但各自连接不同的 MCP 服务端。这样讲既有架构又有细节。回答怎么保证稳定时把第 5 节的报错清单拿出来。401 怎么排查local proxy failed 怎么定位reading choices 怎么解决OAuth 怎么配。每一条都是真实踩过的坑比任何理论都有说服力。如果你需要长期做 Agent 开发或者面试里要展示完整的编码能力可以了解一下 Coding Plan 相关的方案它能帮你把模型调用和工具管理统一起来。如果只是想快速验证模型效果模型对话入口可以直接试。接入过程中遇到鉴权或配置问题接入文档里有详细说明API Keys 页面可以管理你的密钥。面试演示的最后一步建议你准备一个一键复现的脚本。把环境变量检查、服务端启动、客户端调用串成一个命令现场跑给面试官看。能跑通的代码比任何描述都管用。#!/bin/bash set -e echo 检查环境变量... test -n $TAOTOKEN_API_KEY || (echo 缺少 API Key exit 1) echo 启动 MCP 服务端... python mcp_server.py sleep 2 echo 执行调用验证... python client.py这个脚本跑通你的面试演示就稳了。剩下的就是把每个环节的原理讲清楚让面试官相信你不只是会跑脚本而是真的理解整条链路。

相关新闻

水文站点实时数据爬虫:Selenium+Requests混合方案实战

水文站点实时数据爬虫:Selenium+Requests混合方案实战

简介:本资源是一套面向Python初学者与数据爱好者设计的水文实时数据采集与可视化实践项目,聚焦网络爬虫与基础数据分析能力训练,适用于环境监测、水利信息化等场景的入门级技术验证。压缩包共9个文件,含3个核心Python脚本&#xf…

2026/10/18 23:09:18 阅读更多 →
PLaMo 2的MLX版本初体验:plamo-2-translate-bf16在Mac上免费本地运行8B英日翻译模型的完整概览指南

PLaMo 2的MLX版本初体验:plamo-2-translate-bf16在Mac上免费本地运行8B英日翻译模型的完整概览指南

【免费下载链接】plamo-2-translate-bf16 项目地址: https://ai.gitcode.com/hf_mirrors/mlx-community/plamo-2-translate-bf16 点击查看 免费下载 本文带你完整了解 plamo-2-translate-bf16:由 mlx-community 制作的 PLaMo 2 8B 英日翻译模型 MLX 版本…

2026/10/18 23:09:18 阅读更多 →
Windows 64位下CUDA 11.4与cuDNN v8.2.2.26运行库配置指南

Windows 64位下CUDA 11.4与cuDNN v8.2.2.26运行库配置指南

简介:这是一份面向 Windows 深度学习开发者的 CUDA 11.4 配套组件包,提供 NVIDIA cuDNN v8.2.2.26 的完整 x64 运行库与头文件,专为搭配 CUDA Toolkit 11.4 使用,适合需要配置 TensorFlow、PyTorch 等框架 GPU 加速环境的开发者。…

2026/10/18 23:09:18 阅读更多 →

最新新闻

豆包读取电商客服聊天窗口:本机客户端走本地端口即可完成会话监听

豆包读取电商客服聊天窗口:本机客户端走本地端口即可完成会话监听

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

2026/10/19 0:45:07 阅读更多 →
【Mac】vscode 配置 GD32E230CXXX 开发环境:从工具链到烧录的完整落地

【Mac】vscode 配置 GD32E230CXXX 开发环境:从工具链到烧录的完整落地

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

2026/10/19 0:45:07 阅读更多 →
大模型本地部署体积对照:从0.5B到70B量化版本配置清单

大模型本地部署体积对照:从0.5B到70B量化版本配置清单

大模型本地部署这件事,聊起来都是算力、精度、上下文,但真正动手之前,第一道门槛其实是“机器能不能装下”。我最近把一套开源模型家族的多个版本在本地环境里来回实测了几轮,从最小的0.5B到70B量化版都跑过一遍,最后整…

2026/10/19 0:44:06 阅读更多 →
疲劳驾驶数据集图片与XML标注不匹配?清洗与YOLO转换指南

疲劳驾驶数据集图片与XML标注不匹配?清洗与YOLO转换指南

简介:这是一份面向深度学习和图像识别入门练习的疲劳驾驶监测数据集,包含人体疲劳状态下的真实照片,可重点将打哈欠时的张嘴状态与闭眼状态作为疲劳判定标准,适合有一定Python基础、正在学习目标检测或图像分类的初学者&#xff0…

2026/10/19 0:44:06 阅读更多 →
VSCode + ollama + DeepSeek 低成本代码编辑器:把 Continue 的 Base URL 改到 TaoToken

VSCode + ollama + DeepSeek 低成本代码编辑器:把 Continue 的 Base URL 改到 TaoToken

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

2026/10/19 0:44:06 阅读更多 →
从 Harness Engineering 到 Trellis:用 TaoToken 统一 Key 打通 AI 编程助手工程化落地

从 Harness Engineering 到 Trellis:用 TaoToken 统一 Key 打通 AI 编程助手工程化落地

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

2026/10/19 0:44:06 阅读更多 →

日新闻

频率跟踪型PWM电源设计:臭氧发生器谐振点漂移与软开关实现

频率跟踪型PWM电源设计:臭氧发生器谐振点漂移与软开关实现

简介:本资源为电源技术方向的学术研究文档,聚焦介质阻挡放电型臭氧发生器电源的频率跟踪型PWM控制策略,面向电力电子、高压电源及臭氧应用领域的科研人员与工程技术人员。针对负载呈容性、等效电容随外加电压升高而增大、谐振频率随之漂移的难…

2026/10/19 0:00:47 阅读更多 →
Vibe Coding 遇上 TaoToken:把开发者思维圣殿的灵感流接入统一 Key 通道

Vibe Coding 遇上 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/19 0:00:47 阅读更多 →
HundredCV-Chat话题建模实战教程:利用4,871个内置话题标签构建主题分析系统

HundredCV-Chat话题建模实战教程:利用4,871个内置话题标签构建主题分析系统

【免费下载链接】HundredCV-Chat 项目地址: https://ai.gitcode.com/hf_mirrors/Jax-dan/HundredCV-Chat 点击查看 免费下载 HundredCV-Chat 是一个由 100 位青年简历数据开发而来的中文多轮对话数据集,共包含 24,750 组日常闲聊对话和 4,871 个话题标签…

2026/10/19 0:00:47 阅读更多 →

周新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型(GMM)的语音识别系统,很多人第一反应就是一堆数学公式,觉得门槛很高。但如果你真的在MATLAB里把它落地跑通,会发现核心其实就是三件事:把声音变成特征向量,用GMM给每个类别…

2026/10/18 0:00:55 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人,但落到具体操作上,无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程:对图像做反白、改调色板、彩色转灰度,最后把像素数据导出成txt文件。单看每一…

2026/10/18 0:00:55 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词,你会发现一个很有意思的现象:每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型,有人指的是运动控制系统,还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/18 0:00:55 阅读更多 →

月新闻

我发现了一个新思路:用 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/18 0:55:02 阅读更多 →
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/17 17:22:31 阅读更多 →
黑夜航拍船只数据集训练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/18 12:16:16 阅读更多 →