opencodex Cursor 桥接 mcp_tools 工具通告通道加固实战:channel 一致性缺陷修复与回归验证
【免费下载链接】opencodexUniversal provider proxy for OpenAI Codex Claude Code — use any LLM (Claude, Gemini, Grok, DeepSeek, Ollama…) with Codex CLI, App, SDK, and Claude Code项目地址https://gitcode.com/gh_mirrors/ope/opencodex点击查看免费下载本指南围绕 opencodexUniversal provider proxy for OpenAI Codex Claude CodeCursor 适配器中的一次关键加固展开修复AgentRunRequest.mcp_tools工具通告通道与RequestContext.tools、事件状态clientToolNames之间可见集不一致的缺陷并通过回归测试锁定边界行为。读完本文你将理解 Cursor 路由下客户端工具为何无法被模型调用、正确的 protobuf 封装形状如何避免解析崩溃以及如何用同一份过滤后的可见集保证多条通告通道的一致性。背景为什么 Cursor 路由下的客户端工具不可见在 Cursor 桥接中Codex 的客户端工具如mcp__node_repl__js、mcp__codex_apps__*系列由 opencodex 通过合成 Provider 标识opencodex-responses通告见 tool-naming.ts 中OCX_RESPONSES_TOOL_PROVIDER opencodex-responses。根因分析001_wp1_root_cause.md确认这不是权限问题而是未注册 / 合成 Provider 路由缺口——Cursor 只会把挂载在可路由的provider.mcpServers下的 MCP 工具暴露给模型的可调用目录而合成 Provideropencodex-responses无法被 Cursor 路由于是其下的工具被隐藏/丢弃。此前唯一通告通道是 native-exec 的RequestContext.tools即requestContextArgs实测中模型会回复我没有这个工具并回退到 Cursor 原生 Shell。而顶层AgentRunRequest.mcp_tools通道McpTools封装才是 Cursor 真正注册进模型可调用目录的通道。修复主线用正确的 McpTools 封装形状恢复 wire 兼容性早期 Phase 42 曾尝试把工具镜像进mcp_tools但 Cursor 实况解析器直接崩溃parse binary: illegal tag: field no 13 wire type 7wire type 7 是非法类型这是序列化形状错误而非通道被拒绝。加固文档004_fix_mcp_tools_channel.md确认正确姿势是用McpToolsSchema封装赋值const mcpToolDefs buildCursorToolDefinitions(request.tools, request.toolChoice); // ... ...(mcpToolDefs.length 0 ? { mcpTools: create(McpToolsSchema, { mcpTools: mcpToolDefs }) } : {}),实现在 protobuf-request.ts 的encodeCursorRunRequest/prepareCursorRunRequest中buildCursorToolDefinitions把request.tools映射为McpToolDefinitionname、toolName、providerIdentifier、description、inputSchema见 tool-definitions.ts再以create(McpToolsSchema, { mcpTools: defs })封装进runRequest.mcpTools。该形状与生成的 protobuf 定义McpTools.mcp_tools repeated McpToolDefinition严格对应。修复后实况端到端验证通过cursor/gpt-5.6-luna与cursor/claude-4.5-sonnet均产生了对注入工具的FINAL function_call而修复前所有变体裸名、mcp_前缀名、mcp_instructions等都产生零次工具调用。RequestContext.tools通道被保留作为第二条通告通道两通道同时填充。加固核心三通道可见集必须来自同一过滤结果A-gate 评审折叠了一个 BLOCKERmcp_tools原先直接取自原始request.tools而另外两处——RequestContext.toolslive-transport.ts 附近的requestContextArgs与事件状态clientToolNameslive-transport.ts 的clientToolDefs.map(tool tool.toolName || tool.name)——都来自经cursorToolsForActivePrompt(...)过滤后的可见集。以通用的工具计数演示类 prompt如 use any 3 tools为例这类 prompt 会把客户端工具收窄到裸exec_command。若mcp_tools仍通告非 exec 工具模型一旦调用其中某个工具就会被当作未知 Responses 工具拒绝见 protobuf-events.ts 的recordToolCall未知工具判定。因此加固后的encodeCursorRunRequest改为从同一份cursorToolsForActivePrompt(request.tools, activePromptText(request), request.toolChoice)可见集构建mcp_tools使三条通道mcp_tools、RequestContext.tools、事件状态名称保持一致// Hoisted out of the mcp_tools spread below so the estimate can read the same // filtered definitions the wire carries. Both helpers are pure. const mcpToolDefs buildCursorToolDefinitions(visibleTools, request.toolChoice);cursorToolsForActivePrompt可见集的裁决逻辑过滤规则位于 tool-guidance.ts当shouldUseNativeExecOnlyForGenericToolUse判定为通用工具计数演示时可见集收窄为仅执行路径工具isCursorExecutionPathTool否则返回完整工具集。识别逻辑isGenericToolUseCountDemoPrompt覆盖中英文与韩文模式如/\buse\sany\stools?\b/i、/\b\d\stools?\b/i等见 tool-guidance.ts并支持从 prompt 中解析期望的工具数量requestedCursorToolUseCount上限 50。正因为buildCursorToolDefinitions接收的是过滤后的visibleToolsmcp_tools的最终内容才与事件状态clientToolNames完全一致杜绝了通告了但调用即被拒的跨通道漂移。非阻塞结论审计无需修改的确认项加固评审同时确认了四项无需改动的边界无双重执行返回的客户端工具调用只被 surfacing 一次并按 call id 去重——事件状态中的completedToolCalls: Setstringprotobuf-events.ts在recordToolCall、toolCallCompleted、dropInvalidFreeformCall等路径统一先查重再处理OCX_RESPONSES的mcpArgs由 Responses bridge 拦截不会在本地重复执行。wire 形状正确create(McpToolsSchema, { mcpTools: defs })与McpTools.mcp_tools repeated McpToolDefinition一一对应。空工具与toolChoice:none均产出空列表mcpToolDefs为空时字段保持 unset除非显式设置suppressDefaultCursorToolCatalog此时序列化一个显式空McpTools封装以抑制 Cursor 默认原生目录。性能可忽略仅为一次小规模的同步 filter/map 加编码。回归测试用测试锁定每条边界加固在 cursor-blob.test.tstests/providers/cursor/目录下新增了describe(Cursor AgentRunRequest.mcp_tools channel)测试组逐一锁定行为场景输入断言普通 prompt含mcp__node_repl命名空间工具mcp_tools [mcp__node_repl__js]通用工具计数 promptuse any 3 tools exec_command 非 exec 工具mcp_tools [exec_command]过滤器一致性即 BLOCKER 的测试通用 prompt 统一 execuse any 3 tools execwait node_replmcp_tools [exec]空工具tools: []mcpToolsunset抑制默认目录tools: []suppressDefaultCursorToolCatalog: truemcpTools.mcpTools []显式空封装toolChoice: none含 node_repl 工具mcpToolsunset测试辅助函数mcpToolNames(bytes)从编码后的AgentClientMessage反解run.mcpTools.mcpTools.map(def def.toolName)cursor-blob.test.ts直接断言 wire 层真实载荷。验证与交付加固交付验证分三层类型检查bunx tsc --noEmit退出码 0单元测试bun test tests/cursor-blob.test.ts13 项全部通过完整bun test tests/cursor-*.test.ts265 项通过 / 0 失败此前为 261 项本次净增 4 项实况验证本轮不占用实况 Cursor probe线上代理端口 10100不受影响改动在代理重启后生效。最终状态为 DONEchannel 一致性缺陷已修复、边界行为由测试锁定、经 sol 评审后提交到分支。对于运行中的线上代理重启前现有会话行为不变工具 RESULT 返回路径未改动既有 client-tool bridgefunction_callsurfacing → Codex 执行 → 结果作为历史在下一轮回放如需完整多轮浏览器往返node_repl → result → 下一次调用可另行做一次端到端冒烟验证。延伸阅读修复发现与实况验证全过程004_fix_mcp_tools_channel.md根因分析合成 Provider 路由缺口001_wp1_root_cause.md工具定义与 wire 编码tool-definitions.ts、protobuf-request.ts可见集过滤与 prompt 识别tool-guidance.ts事件状态与工具调用去重protobuf-events.ts赞分享【免费下载链接】opencodexUniversal provider proxy for OpenAI Codex Claude Code — use any LLM (Claude, Gemini, Grok, DeepSeek, Ollama…) with Codex CLI, App, SDK, and Claude Code项目地址https://gitcode.com/gh_mirrors/ope/opencodex点击查看免费下载相关推荐opencodex PR 73 Cherry-Pick 与传输加固Codex/Cursor 桥接层的错误分类与取消语义修复opencodex PR 73 Cherry Pick 与传输加固Codex/Cursor 桥接层的错误分类与取消语义修复 导读 本文基于 opencodexComposio 回归测试指南从复现缺陷到提交可验证的修复Composio 回归测试指南从复现缺陷到提交可验证的修复 导读 本文面向 Composio SDK 的贡献者与维护者系统讲解在仓库中开展回归测试Regr人工智能AI Agent工具调用MCP 服务MCP ClientsAptos MoveFlow State-Label 验证修复Move Prover 后置条件中间状态断言缺陷的修复与回归验证Aptos MoveFlow State Label 验证修复Move Prover 后置条件中间状态断言缺陷的修复与回归验证 导读 本指南围绕 Aptos区块链Web3创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

在 Meshery 中使用 Fluentd-ES 设计构建 Kubernetes 日志采集与 Elasticsearch 转发管道

在 Meshery 中使用 Fluentd-ES 设计构建 Kubernetes 日志采集与 Elasticsearch 转发管道

云原生微服务运维DevOps 【免费下载链接】meshery Meshery, the cloud native manager 项目地址: https://gitcode.com/GitHub_Trending/me/meshery 点击查看 免费下载 导读 本文围绕 Meshery Catalog 中的 fluentd deployment 可观测性设计(设计描述文…

2026/9/23 21:49:43 阅读更多 →
Relay 数据驻留与垃圾回收指南:理解 presence-of-data、Query Retention 与 GC 策略

Relay 数据驻留与垃圾回收指南:理解 presence-of-data、Query Retention 与 GC 策略

前端开发工具 【免费下载链接】relay Relay is a JavaScript framework for building data-driven React applications. 项目地址: https://gitcode.com/gh_mirrors/relay29/relay 点击查看 免费下载 Relay 在客户端内存 Store 中缓存查询结果,以便在无…

2026/9/23 21:49:43 阅读更多 →
statsmodels.othermod 模块实战指南:用 BetaModel 对单位区间连续因变量建模(Beta 回归)

statsmodels.othermod 模块实战指南:用 BetaModel 对单位区间连续因变量建模(Beta 回归)

数据分析数据科学科研 【免费下载链接】statsmodels Statsmodels: statistical modeling and econometrics in Python 项目地址: https://gitcode.com/gh_mirrors/st/statsmodels 点击查看 免费下载 statsmodels.othermod 是 statsmodels 中专门容纳"难以归入…

2026/9/23 21:49:43 阅读更多 →

最新新闻

555张仓库工人YOLO数据集:小而实的工业检测落地起点

555张仓库工人YOLO数据集:小而实的工业检测落地起点

简介:本资源是面向YOLO系列目标检测算法研究与工程实践的专用仓库工人场景数据集,适用于计算机视觉初学者、算法工程师及工业质检项目开发者,可直接用于YOLOv5/v7/v8/v9/v10/v11等主流版本的模型训练、验证与测试。压缩包共含1666个文件&…

2026/9/23 23:17:40 阅读更多 →
黑翅鸢算法优化CNN-BiLSTM-Attention的客流量预测实战

黑翅鸢算法优化CNN-BiLSTM-Attention的客流量预测实战

简介:这是一份基于黑翅鸢算法BKA-CNN-BiLSTM-Attention的客流量预测Matlab实现,面向计算机、电子信息工程、数学等专业的学生,可用于课程设计、期末大作业与毕业设计。代码采用参数化编程,注释清晰,附赠可直接运行的案…

2026/9/23 23:17:40 阅读更多 →
CNV数据契约验证实战:从接口治理到微服务稳定性提升

CNV数据契约验证实战:从接口治理到微服务稳定性提升

1. 从一次深夜告警说起:CNV到底是什么凌晨两点,监控大盘突然弹出一片红点,某个核心服务的响应时间从80毫秒飙到3秒,错误率突破15%。登录跳板机查日志,发现大量请求在调用下游接口时超时,但下游服务的监控指…

2026/9/23 23:17:40 阅读更多 →
ABB机器人视觉引导抓取:Socket通讯与四元数姿态解析实战

ABB机器人视觉引导抓取:Socket通讯与四元数姿态解析实战

简介:这份文档面向使用ABB机器人进行视觉集成的工程师与学习者,聚焦机器人与相机之间通过socket通讯完成数据交换与坐标转化的完整实现思路。内容围绕socket连接的建立与收发数据、字符串关键信息的提取,以及提取结果与机器人点位数据的转化三…

2026/9/23 23:17:40 阅读更多 →
DilateFormer:面向小目标识别的稀疏扩张注意力模型

DilateFormer:面向小目标识别的稀疏扩张注意力模型

简介:本资源是一份面向深度学习初学者与计算机视觉实践者的DilateFormer模型实战项目,聚焦图像分类任务落地,特别适配植物幼苗等细粒度分类场景。资源包含基于dilateformer_tiny模型的完整训练与推理代码、预处理脚本、配置文件及1987张植物幼…

2026/9/23 23:17:40 阅读更多 →
Java五子棋课程设计实战:Swing界面、二维数组与胜负判定

Java五子棋课程设计实战:Swing界面、二维数组与胜负判定

简介:一份基于 Java 的五子棋对战系统课程设计源码,适合 Java 学习者、高校学生及需要完成课设或实战练手的开发者参考,覆盖了从游戏初始化、玩家操作处理到胜负判断的完整流程。资源共 290 个文件、18.26MB,核心为 17 个 Java 源…

2026/9/23 23:16:40 阅读更多 →

日新闻

3招搞定手机怎么下载微信面试难题实战项目解析

3招搞定手机怎么下载微信面试难题实战项目解析

3招搞定手机怎么下载微信面试难题实战项目解析 面试被问“手机怎么下载微信”背后的原理,90%的人答不上来。别笑,这看似弱智的问题,实则是考察你对移动应用分发机制、安全校验及网络协议理解的试金石。我带过不少校招新人,他们背了八股文,却连一个A…

2026/9/23 0:00:23 阅读更多 →
2k显示屏性能优化踩坑:版本升级后API全变了,这份源码解析救了我

2k显示屏性能优化踩坑:版本升级后API全变了,这份源码解析救了我

2k显示屏性能优化踩坑:版本升级后API全变了,这份源码解析救了我 刚把开发环境的显示器从1080P换到2K,跑老项目直接报错,版本升级后 API…

2026/9/23 0:01:25 阅读更多 →
3步搞定美眉图实战项目,告别官方文档抓不住重点

3步搞定美眉图实战项目,告别官方文档抓不住重点

3步搞定美眉图实战项目,告别官方文档抓不住重点 官方文档翻了三遍还是云里雾里?别急,美眉图在实战项目中常被用来做数据可视化,但它的原理比你想的简单。今天咱们直接上手,用一个完整的小项目把美眉图跑通,不再死磕那些冗长的理论说明。…

2026/9/23 0:01:25 阅读更多 →

周新闻

Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化

Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化

直接铺开项目本身吧。这几个月我一直在折腾一件事:用Flutter给OpenHarmony做一款游戏集合类的App,说白了就是把若干小游戏塞进一个壳里,用统一入口分发。这个方向本身不算新鲜,真正让我花了不少心思的,是首页那堆游戏卡…

2026/9/23 4:55:02 阅读更多 →
Word表格编号全攻略:从列表编号到题注交叉引用

Word表格编号全攻略:从列表编号到题注交叉引用

写Word文档,最让人头疼的往往是那些“看起来不起眼”的小问题。比如表格编号这事:今天在表后面多加了两个空白行,明天给客户交稿前发现整个章节的编号全部错位,光是挨个改序号就能耗掉大半个下午。我前阵子帮人整理一份上百页的技…

2026/9/23 4:49:06 阅读更多 →
从第一个站到第二个站:独立开发者的静态网站选型与落地实践

从第一个站到第二个站:独立开发者的静态网站选型与落地实践

1. 项目概述1.1 核心需求解析做独立开发者这几年,说实话,第一个网站上线的那天晚上我兴奋得没睡着。但等它跑了半年,流量惨淡、功能臃肿、代码自己都懒得看第二遍之后,我才慢慢琢磨明白一个道理:第一个网站是练手&…

2026/9/23 9:53:41 阅读更多 →

月新闻

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能分类:[AI/大模型]细分主题:AI 增强型 CI/CD 流水线自动化与 GitOps 实践:Agent 工作流、工具调用与任务拆解:从原型到生产的验收清单很多团队在尝试用大…

2026/9/23 9:53:40 阅读更多 →
容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场分类:[工程技术]细分主题:Kubernetes 生产环境运维与排障实战:可复制的项目复盘模板与决策记录大部分团队的事故复盘报告,最后都变成了躺在 Confluence 或钉…

2026/9/23 9:53:40 阅读更多 →
容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步分类:[工程技术]细分主题:Docker 容器化技术与镜像安全管理:核心链路的逐步实现与关键代码取舍面对一个积累了五六年历史包袱的单体架构应用(包含 Web 接口、后台…

2026/9/23 9:53:40 阅读更多 →