我给 SAP 接上 MCP 后,可以做哪些事情?TaoToken 统一 Key 实战拆解
1. 从「问 SAP 问题」到「查 SAP 证据」MCP 接入到底改变了什么SAP 系统通过 MCP 协议对接 AI 工具链指的是把 SAP 的 ADT、RFC、ABAP 三类接口封装成 MCP 工具让大模型在权限边界内直接读取程序源码、查询透明表数据、调用受控远程函数从而完成查询、调用与自动化动作。它适合已经有一定 ABAP 开发基础、手里有 DEV/QA 环境、想用 AI 辅助排查业务问题或整理技术文档的 SAP 顾问、开发和运维人员。很多人第一次听到「大模型连接 SAP」脑子里浮现的画面是在聊天窗口里问一句「VA01 是干什么的」然后 AI 给出一段标准解释。这种用法确实能用但它和真正把 SAP 接进 MCP 之后的能力差了一个数量级。没有连接企业系统之前大模型靠的是公开资料和训练数据。它能解释标准事务码、ABAP 语法、常见配置却不知道你们公司的 ZSDR001 里写了什么过滤条件不知道 ZMMFM003 为什么返回「库存地点不存在」更看不到开发系统已经修复、生产系统还没传输的版本差异。接入 MCP 之后情况变了。大模型可以在权限允许的范围内调用工具由工具进一步访问 SAP 的 ADT、RFC 或其他接口拿到当前系统里的真实信息。它开始从一个「懂一些 SAP 知识的聊天机器人」变成一个能协助取证、分析、开发、测试和知识沉淀的技术助手。这篇文章我会按可跟做的顺序拆开讲先讲清楚 MCP、ADT、RFC 三者的层次关系再给出可复制的 MCP 服务端配置片段和 TaoToken 统一 Key 的接入参数然后用 ADT 和 RFC 两条路径验证连通性最后把常见的报错逐个排掉。你可以边看边在自己的 DEV 环境里试。2. TaoToken 统一 Key 前置准备MCP 服务端与模型侧怎么接在动手写 SAP MCP Server 之前先把模型侧的调用通道准备好。我自己的做法是让 MCP Server 通过一个统一的 OpenAI 兼容入口去调用模型这样工具定义、鉴权、审计都集中在服务端模型侧只认一个 Base URL 和一把 Key。TaoToken 在这里扮演的角色就是那个统一入口。它的 API 地址是https://taotoken.net/api兼容 OpenAI 的/v1/chat/completions和/v1/models接口。你需要在控制台创建一把 API Key然后把它写进 MCP Server 的环境变量里而不是硬编码在代码中。创建 Key 的入口在控制台的 API Keys 页面https://taotoken.net/console/api-keys?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_contentapi_keys。拿到 Key 之后先别急着接 SAP用一条最简单的请求确认模型通道是通的。curl https://taotoken.net/api/v1/chat/completions \ -H Content-Type: application/json \ -H Authorization: Bearer $TAOTOKEN_API_KEY \ -d { model: claude-sonnet-4-5, messages: [ {role: user, content: 用一句话说明 ABAP 内表和透明表的区别} ] }如果返回里有正常的choices[0].message.content说明模型侧没问题。这一步很关键因为后面 SAP MCP 报错时你要能快速判断是模型通道的问题还是 SAP 接口的问题。接下来是模型 ID 的选择。MCP 场景下工具调用比较密集建议选支持 function calling 的模型。你可以在模型对话页面先试一下工具调用是否正常https://taotoken.net/models?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_contentmodels。如果只是做代码分析和文档整理长上下文模型会更稳如果要做多轮 Agent 编排编码计划类的套餐在成本上更划算入口在https://taotoken.net/coding-plan?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_contentcoding_plan。环境变量建议这样组织把模型侧和 SAP 侧彻底分开export TAOTOKEN_API_KEYsk-你的Key export TAOTOKEN_BASE_URLhttps://taotoken.net/api export SAP_BASE_URLhttps://your-sap-dev.example.com:44300 export SAP_CLIENT100 export SAP_USERmcp_service export SAP_PASSWORD你的SAP密码 export SAP_ENVDEV注意SAP 的登录凭据只保存在 MCP Server 这一侧不要传给大模型。模型拿到的是「工具使用权」不是 SAP 账号本身。这一点在正式环境里是硬性要求。如果你用的是 Claude Code 这类客户端来驱动 MCP配置里同样只填 Base URL 和 Key模型 ID 按客户端要求写。三件套缺一不可Base URL 指向https://taotoken.net/apiKey 用上面创建的Model ID 选一个支持工具调用的。接入文档在https://taotoken.net/doc?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_contentdoc里面有各客户端的字段对照。3. 可复制的 SAP MCP Server 配置ADT 与 RFC 双通道这一节给你可以直接抄的配置。我按「MCP 客户端配置 MCP Server 工具定义 ADT/RFC 适配层」三层来写路径和字段名尽量贴近真实项目。先看 MCP 客户端的配置。以常见的mcp.json或settings.json为例把 SAP MCP Server 注册进去{ mcpServers: { sap-adt: { command: python, args: [-m, sap_mcp.server], env: { TAOTOKEN_BASE_URL: https://taotoken.net/api, TAOTOKEN_API_KEY: ${TAOTOKEN_API_KEY}, SAP_BASE_URL: ${SAP_BASE_URL}, SAP_CLIENT: 100, SAP_USER: ${SAP_USER}, SAP_PASSWORD: ${SAP_PASSWORD}, SAP_ENV: DEV, SAP_ALLOW_WRITE: false } } } }SAP_ALLOW_WRITE这个开关很重要。DEV 环境可以设成true允许激活对象QA 设成false只读加受控测试PRD 永远false。不要指望用提示词告诉模型「别改生产」限制必须在服务端代码里真正执行。再看 MCP Server 的工具定义。用 FastMCP 写一个最小可用的 ADT 工具集from mcp.server.fastmcp import FastMCP import os, requests mcp FastMCP(sap_adt) SAP_BASE_URL os.environ[SAP_BASE_URL] SAP_CLIENT os.environ.get(SAP_CLIENT, 100) def make_adt_request(url: str, method: str GET, **kwargs): session requests.Session() session.auth (os.environ[SAP_USER], os.environ[SAP_PASSWORD]) session.headers.update({ Accept: application/xml, sap-client: SAP_CLIENT, }) return session.request(method, url, timeout30, **kwargs) mcp.tool(nameGetProgram) def get_program(program_name: str) - str: 读取指定 ABAP 程序的当前源码。 if not program_name: raise ValueError(program_name is required) url f{SAP_BASE_URL}/sap/bc/adt/programs/programs/{program_name}/source/main resp make_adt_request(url, GET) resp.raise_for_status() return resp.text mcp.tool(nameGetTableStructure) def get_table_structure(table_name: str) - str: 获取透明表或结构的字段定义。 url f{SAP_BASE_URL}/sap/bc/adt/ddic/tables/{table_name}/source/main resp make_adt_request(url, GET) resp.raise_for_status() return resp.textADT 的 URL 路径是固定的/sap/bc/adt/programs/programs/{name}/source/main取程序源码/sap/bc/adt/ddic/tables/{name}/source/main取表结构。真实项目里还要处理 CSRF Token、对象锁、超时重试和字符编码这些封装在make_adt_request内部就行。RFC 通道单独写一个适配器用 PyRFC 调用受控函数from pyrfc import Connection ALLOWED_FUNCTIONS { Z_GET_SALES_ORDER_INFO: readonly, BAPI_SALESORDER_GETDETAIL: readonly, } def get_rfc_conn(): return Connection( ashostos.environ[SAP_HOST], sysnros.environ.get(SAP_SYSNR, 00), clientSAP_CLIENT, useros.environ[SAP_USER], passwdos.environ[SAP_PASSWORD], langZH, ) mcp.tool(nameCallFunctionModule) def call_function_module(function_name: str, parameters: dict) - dict: 调用经过授权的远程函数模块。 if function_name not in ALLOWED_FUNCTIONS: raise PermissionError(f{function_name} 不在白名单内) conn get_rfc_conn() return conn.call(function_name, **parameters)白名单是 RFC 通道的生命线。CallFunctionModule这类工具属于高风险等级正式环境必须区分只读函数、可写函数、允许使用的环境以及是否需要人工确认。查询类可以自动执行可能修改数据的函数一定要暂停等用户确认。4. 验证连通性用 ADT 和 RFC 各跑一次真实请求配置写完先别急着让模型自由发挥手动验证两条通道是否通。这一步能帮你把「模型问题」和「SAP 接口问题」彻底分开。先验证 ADT。启动 MCP Server 后在客户端里发一条明确的工具调用请求{ name: GetProgram, arguments: { program_name: ZSDR001 } }如果返回的是 ABAP 源码文本说明 ADT 通道打通了。如果返回 401说明 SAP 凭据或 client 不对如果返回 404说明程序名拼错或者该程序在当前系统不存在。我试过把程序名写成小写ADT 会直接报 404SAP 对象名对大小写敏感这点要留意。再验证 RFC。调用一个只读函数{ name: CallFunctionModule, arguments: { function_name: Z_GET_SALES_ORDER_INFO, parameters: { IV_VBELN: 1234567890 } } }返回结构里应该能看到订单的抬头信息。如果报RFC_ERROR_LOGON_FAILURE检查SAP_HOST、SAP_SYSNR和用户权限如果报函数不存在确认该函数在 SAP 里已经激活并且勾选了「远程启用」。两条通道都通之后跑一个完整的证据链分析。假设用户问「销售订单 1234567890 在 ZSDR001 中查不到但 VA03 能看到帮我分析原因。」第一步模型调用GetProgram拿到 ZSDR001 的真实源码发现查询里固定限制了AUART ZOR。第二步模型调用ReadTableData查 VBAK{ name: ReadTableData, arguments: { table_name: VBAK, fields: [VBELN, AUART, VKORG], where: VBELN 1234567890, max_rows: 1 } }返回{VBELN: 1234567890, AUART: ZRE, VKORG: 1000}。第三步模型得出结论订单存在但实际类型是 ZRE被程序里AUART ZOR的过滤条件挡掉了。这个结论的依据是「当前系统源码 当前业务数据」和普通大模型凭经验列可能性有本质区别。ReadTableData这一层不能把模型生成的 SQL 直接转发给 SAP。必须限制只允许 SELECT、限制返回行数、控制可访问表、对敏感字段脱敏并记录用户和查询条件。MCP 不只是协议转换器它同时是 AI 访问 SAP 的安全网关。5. 常见报错排查401、local proxy failed、reading choices、OAuth这一节按真实报错来排。我把踩过的坑按现象、原因、处理三步写你对照自己的日志找。401 Unauthorized模型侧现象是 MCP Server 调用模型时返回 401。原因通常是TAOTOKEN_API_KEY没设、设错或者环境变量没被 MCP 进程继承。处理方式是先在终端里echo $TAOTOKEN_API_KEY确认有值再用第 2 节的 curl 命令单独测一次。如果 curl 通、MCP 不通就是 MCP 客户端的环境变量传递问题检查mcp.json里有没有写${TAOTOKEN_API_KEY}。401 UnauthorizedSAP 侧现象是 ADT 请求返回 401。原因是 SAP 用户密码错、client 不对或者该用户没有 ADT 访问权限。处理方式是先用 SAP GUI 或 Eclipse ADT 用同一账号登录一次确认账号可用再检查sap-client请求头是否和SAP_CLIENT一致。local proxy failed现象是客户端报local proxy failed或连接被拒。原因通常是 MCP Server 进程没起来或者端口被占用。处理方式是先手动运行python -m sap_mcp.server看有没有报错确认进程能正常启动再检查客户端配置里的command和args路径是否正确。如果是容器环境确认端口映射没冲突。reading choices 报错现象是模型返回里choices字段读不到报reading choices或类似。原因是模型通道返回了非预期结构常见于 Base URL 写错、模型 ID 不存在或者请求体格式不对。处理方式是确认 Base URL 是https://taotoken.net/api注意结尾不要多加/v1具体以接入文档为准模型 ID 用/v1/models列出来的有效值请求体里messages是数组。OAuth 相关报错现象是客户端提示 OAuth 授权失败或 token 过期。原因是部分客户端默认走 OAuth 流程而 MCP 场景下用的是 API Key。处理方式是在客户端配置里显式指定用 API Key 鉴权把 Base URL、Key、Model ID 三件套填全。如果客户端支持authType字段设成api_key。ADT 返回 403 Forbidden现象是程序源码读不到。原因是 SAP 用户缺少该对象的显示权限或者对象处于锁定状态。处理方式是让 Basis 给 MCP 服务账号加S_DEVELOP的显示权限并确认对象没有被传输锁占用。RFC 报 function not found现象是CallFunctionModule报函数不存在。原因是函数没激活、没勾选远程启用或者白名单里没加。处理方式是先在 SE37 里确认函数状态是「已释放」属性里勾了「远程启用的模块」再把函数名加进ALLOWED_FUNCTIONS。排错时有个通用原则先分层再定位。模型侧的问题用 curl 测SAP 侧的问题用 Eclipse ADT 测MCP 层的问题看 Server 日志。三层分开测比盯着一个报错猜要快得多。6. 把 SAP MCP 用起来从查询到受控自动化的边界通道打通、报错排完之后回到最初的问题接上 MCP 到底能做哪些事。我按风险从低到高列一下你可以对照自己的环境判断适合从哪一层切入。只读查询层是最安全的起点。读取 Z 报表、Include、函数模块、类、CDS View 和数据字典对象分析查询条件、内表读取、权限检查和数据流向。辅助排查业务问题时围绕单据逐步查状态、配置、自建表、程序和日志对比正常与异常数据形成可验证的证据链。这一层在 DEV、QA、PRD 都可以开PRD 保持只读即可。代码检查层可以结合真实源码检查数据库访问、内表性能、异常处理、硬编码和版本兼容性。进一步封装 ADT 的 Check Run、SLIN 或 ATC 之后还能把 SAP 自身的检查结果拉进来一起看。这一层建议在 DEV 和 QA 开PRD 不开。受控开发层要加严格门禁。流程是分析需求、读取现有源码、设计修改方案、用户确认、UpdateProgram、CheckAbapSyntax、ActivateAbapObject、读回并验证。MCP 能提高效率但不能取消需求确认、代码审查和变更管理。这一层只在 DEV 开且SAP_ALLOW_WRITE要配合人工确认一起用。传输与文档层适合做知识沉淀。查询 TR 包含的对象、对象激活状态以及开发、测试和生产之间的版本差异避免把版本不同误判成业务数据问题。通过读取函数、结构和数据元素生成接口封装文档、字段映射表、测试数据模板。问题处理完后把现象、证据、根因、解决方案和验证结果存成结构化案例下次类似问题先检索历史经验再结合当前 SAP 数据验证。安全控制上环境隔离、用户身份传递、工具分级、操作审计、人工确认这五件事要在 MCP Server 里真正落地。一次调用至少记录用户、环境、工具名称、参数摘要、执行结果和时间。涉及源码和业务数据时防止敏感内容被完整写进普通日志。如果你打算长期跑编码和 Agent 编排Coding Plan 在成本上比按次调用更可控入口在https://taotoken.net/coding-plan?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_contentcoding_plan。需要先确认模型通道和工具调用是否正常可以去模型对话页面试https://taotoken.net/models?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_contentmodels。Key 的创建和管理在 API Keys 页面https://taotoken.net/console/api-keys?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_contentapi_keys。字段对照和客户端配置参考接入文档https://taotoken.net/doc?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_contentdoc。真正有价值的不是让 AI 自动操作所有事务码而是在安全边界内把大模型的理解推理能力和 SAP 的真实系统证据连起来。大模型负责理解和推理MCP 负责工具调用和能力控制ADT 负责开发对象和技术能力RFC 负责受控的业务函数调用SAP 提供真实系统证据。先把连接稳定性、工具定义、权限边界、操作审计和环境隔离做好再谈自动化这条路才走得稳。

相关新闻

Android显示链路全解析:从Surface到屏幕的完整架构与排查实战

Android显示链路全解析:从Surface到屏幕的完整架构与排查实战

1. 从一张图说起:Android显示链路到底在讲什么很多人做Android开发做了三五年,日常跟View、Activity、Fragment打交道,觉得已经挺熟了。可一旦碰到画面撕裂、掉帧、HWC合成异常、截屏黑屏、投屏花屏这类问题,立马就懵了——因为这…

2026/10/12 0:26:44 阅读更多 →
Android显示链路全解析:从SurfaceFlinger到HWC与DRM的合成机制

Android显示链路全解析:从SurfaceFlinger到HWC与DRM的合成机制

1. 为什么值得花时间搞懂Android显示链路如果你做过几年Android开发,大概率遇到过这类问题:动画掉帧、画面撕裂、投屏延迟高、截屏黑屏、多屏异显不同步。这些问题排查到最后,往往都会指向同一个方向——显示链路。很多人对这条链路的认知停留…

2026/10/13 15:56:16 阅读更多 →
知网查重遇飘红?2026年DeepSeek+豆包+文心两步去AI痕迹,AIGC检测率80%快速降至10%

知网查重遇飘红?2026年DeepSeek+豆包+文心两步去AI痕迹,AIGC检测率80%快速降至10%

论文AIGC率降低,已经成了高校学生需要掌握的实用技能。 不少同学没有直接用AI生成全部内容,只是借助AI辅助润色,最终却被检测系统判定AIGC率过高,耽误论文提交。为了找到合规有效的解决方案,我近期测试了多种方案&…

2026/10/13 16:36:41 阅读更多 →

最新新闻

卡尔曼滤波器从一维到EKF:机器人状态估计实战笔记

卡尔曼滤波器从一维到EKF:机器人状态估计实战笔记

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

2026/10/13 18:56:01 阅读更多 →
POD-LSTM高维时间序列预测实战:降维+建模+可视化一站式指南

POD-LSTM高维时间序列预测实战:降维+建模+可视化一站式指南

简介:本资源是一份面向数据科学与工业智能领域工程师的POD-LSTM时间序列预测实战指南,聚焦高维多变量场景下的降维建模与可解释预测难题,适用于风电功率、设备状态监测、环境治理等实际业务场景。资源以1个146KB的docx文档形式交付&#xff0…

2026/10/13 18:56:01 阅读更多 →
LiteLLM:大模型多平台协议桥接与标准化调用实战指南

LiteLLM:大模型多平台协议桥接与标准化调用实战指南

1. 一个被严重低估的“协议翻译官”:LiteLLM到底在解决什么真问题?很多人第一次看到LiteLLM这个名字,下意识会以为它是又一个大模型训练框架、推理加速库,或者某种新型开源大模型。我最初也这么想——直到在某次跨平台AI服务集成中…

2026/10/13 18:56:01 阅读更多 →
华为AI DevSpace编译星闪WS63 SDK全攻略

华为AI DevSpace编译星闪WS63 SDK全攻略

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

2026/10/13 18:56:01 阅读更多 →
Django+Vue小说推荐系统:从爬虫到可视化完整实现

Django+Vue小说推荐系统:从爬虫到可视化完整实现

看到标题里同时出现了“DjangoVue.js”“小说推荐系统”“小说可视化”“小说爬虫”“大数据毕业设计”这一串关键词,我基本能猜到你在选毕设题目时经历了什么——翻了一下午题目清单,要么是太简单拿不出手,要么是纯理论写到头秃,…

2026/10/13 18:56:01 阅读更多 →
静态时序分析实战:从时序弧到时钟约束的完整解读

静态时序分析实战:从时序弧到时钟约束的完整解读

说实话,静态时序分析这个系列写到第二篇,我想换个切入点。上一篇我们把STA是什么、为什么需要它、建立时间和保持时间的基本定义聊了一遍。但很多刚接触时序分析的同学,看完概念之后对着工具报出来的一屏时序报告,还是会有一种&qu…

2026/10/13 18:54:57 阅读更多 →

日新闻

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

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

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

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/13 16:22:04 阅读更多 →
影刀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/13 14:57:39 阅读更多 →
黑夜航拍船只数据集训练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 阅读更多 →