Repository navigation
[Bug/反馈] PTC 全量展开 MCP 工具 SDK,缺少渐进披露入口(附 session 实测与 V4 文档勘误) #11846
VirgilMing
started this conversation in
General
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
问题
在当前 master 的内置 MCP + PTC 接入路径上,连接一个提供 46 个工具的 FoxMCP 后,即使当前任务不涉及浏览器,全部 46 个工具的描述、参数及输出类型声明仍会出现在系统提示的
ToolArgsMap/ToolOutputMap中。模型直接可调用的原生工具虽然只有run_code,但 MCP 工具的声明文本仍然全部占据上下文。当前缺少内置的“工具目录/搜索 → 按需取得完整声明 → 激活调用”配置入口。希望该路径也能支持渐进披露,而不是只能在启动时永久裁剪工具。
关联已有提案 #9670、#11718 和激活机制讨论 #9143。本帖补充 PTC 路径的 session 实测,以及当前 master 中一处与实现不一致的 V4 文档说明;仅给 MCP 定义补
deferLoading并不能处理 PTC 已生成的系统提示文本。环境与最小配置
v26.13.0,从源码启动 Web profile。0.2.2-alpha.2。ce7073d51254c26cd63b22a60835b8f948deb447,检查时与上游master一致;工作区无修改。deepseek-official / deepseek-flash。ptc。tools/list实测返回 46 个工具。相关 profile patch:
复现与观测
system/message与request/header。interface ToolArgsMap、interface ToolOutputMap和mcp__foxmcp__,与请求头的原生工具列表对照。本机真实会话日志的聚合结果:
ToolArgsMap顶层工具条目mcp__foxmcp__*条目ToolOutputMap顶层工具条目mcp__foxmcp__*条目request/header.header.toolsrun_code这里区分了两个证据:MCP 的
tools/list只证明服务端提供哪些工具;session 中的系统提示才证明这 46 个工具的声明确实进入了模型上下文。以上数字是字符数与条目数,不把它们当成精确 token 数,也不把常驻上下文等同于每轮全部按未缓存输入计费。源码路径
以下链接固定到上述提交:
response.tools构造并注册每个定义。配置 schema 中没有按需发现或延迟模式入口。describe()只提供run_code的原生 schema,但tools:sdk对所有传入定义生成声明。deferLoading延迟生成 SDK 文本的分支。deferLoading定义 已存在,但提供方的原生工具延迟加载与 PTC 的系统提示文本披露是不同层,不能假定添加一个标记就解决两者。PTC README 已说明当前固定开销与可见工具定义数量成正比,因此这里报告的是内置 MCP/PTC 组合的上下文开销及功能缺口,并非声称 README 已承诺渐进披露。
期望行为
希望为内置 MCP client 提供可选的按需发现模式,并让 PTC 的 SDK 提示配合:
master 已有
ctx.tools.register(definition, { when })条件可见性基础设施,社区也已有 #11709 的插件方案;本报告针对的是内置 MCP + PTC 组合尚无该配置入口。FoxMCP 的启动参数可以静态减少暴露的工具,但无法替代会话内按需发现。附:V4 文档状态与代码不一致
英文 V4 说明第 102 行 仍写着:
中文版同处 也保留了对应说明。
至少其中“提供方序列化、自动发出仍未实现”的状态与当前代码不符:
tool-addition/tool-removal,写入developer/message。defer_loading。建议同步修正文档中这两部分的实现状态,并明确“底层更新协议已支持”与“内置 MCP/PTC 按需发现入口尚未提供”的区别。
All reactions