Title: 未使用的 MCP 工具 schema 每个步骤全量重发;MCP 重连失败后静默注销,模型与用户都无提示
Labels: enhancement, cost
===== 以下为 Issue 正文 =====
这里有两个相关但独立的问题,都关于 MCP 工具集对会话成本与可靠性的影响。
问题 1:无关 MCP 工具的 schema 每步全量重发
被排查会话的 request/header 记录显示:
| 项 |
值 |
| 注册工具总数 |
79 |
| 工具 schema 载荷 |
106.6 KB(约 27 K token) |
| 其中来自一个与本次任务完全无关的项目管理类 MCP |
50 个工具 |
这 106.6 KB 在每一个 step 的请求里都重复发送。作为对照,该会话整轮累计增长的对话正文只有约 29 K token——也就是说,光工具 schema 的固定载荷就与全部对话内容同量级,而其中 50/79 从未被调用。
问题 2:MCP 断连后静默注销
同一个会话窗口内,另一个 MCP(记忆/上下文类,openviking)持续重连失败,日志依次为:
[E] [mcp] mcp: openviking: connection attempt 1/10 failed
[E] [mcp] mcp: openviking: connection attempt 2/10 failed
…
[W] [mcp] mcp: openviking: connection lost after 10 attempts, tools unregistered
问题在于:
- 只有宿主日志里有记录,用户界面与模型侧都没有任何提示;
- 工具被注销后模型并不知情,仍会按先前上下文去调用已消失的工具,得到难以理解的失败。
期望
- 能按会话/任务裁剪工具集,或者默认对未使用的 MCP 工具做懒注册,避免每步携带 27 K token 的死重。
- MCP 连接状态变化(尤其是"工具已被注销")要作为一条模型可见的提示注入,并在 UI 上有持久可见的状态标识。
建议
- 提供 per-session / per-preset 的工具白名单,或按 MCP 分组开关;并在请求构造时跳过本轮明显无关的分组。
- 记录并暴露"每步工具 schema 字节数 / token 数"指标,便于用户自己发现死重(当前需要人工解日志才能看到)。
- MCP 注销时注入一条系统级提示告知模型该 MCP 的工具已不可用;同时在 UI 上给持久的连接状态。
环境
@deepseek-ai/dsh 0.1.5-rc.2 / dsh-plugin-desktop 2.0.10 / Windows 11 build 26200 AMD64。
Title: 未使用的 MCP 工具 schema 每个步骤全量重发;MCP 重连失败后静默注销,模型与用户都无提示
Labels:
enhancement,cost===== 以下为 Issue 正文 =====
这里有两个相关但独立的问题,都关于 MCP 工具集对会话成本与可靠性的影响。
问题 1:无关 MCP 工具的 schema 每步全量重发
被排查会话的
request/header记录显示:这 106.6 KB 在每一个 step 的请求里都重复发送。作为对照,该会话整轮累计增长的对话正文只有约 29 K token——也就是说,光工具 schema 的固定载荷就与全部对话内容同量级,而其中 50/79 从未被调用。
问题 2:MCP 断连后静默注销
同一个会话窗口内,另一个 MCP(记忆/上下文类,
openviking)持续重连失败,日志依次为:问题在于:
期望
建议
环境
@deepseek-ai/dsh0.1.5-rc.2/dsh-plugin-desktop2.0.10/ Windows 11 build 26200 AMD64。