Yan-Zero/dsh-progressive-tools ↗★ 0
dsh-progressive-tools
Standalone direct-first progressive tool disclosure for every DeepSeek Harness presentation mode
安装
npx -p @deepseek-ai/dsh dsh plugin --profile web add github:Yan-Zero/dsh-progressive-tools说明文档
阅读完整 README ↗dsh-progressive-tools
English | 中文
面向 DeepSeek Harness Native、Code 与 Both 模式中所有 Agent preset 的自动挂载、渐进式工具披露层。它只改变呈现层:即使实时 ToolRuntime 目录注册、注销、限制或遮蔽非 eager 工具,模型可见的工具前缀仍保持稳定。
安装与组装
按照 INSTALL.md 把这个自包含 bundle 安装到 dsh profile。bundle patch 会在 host plane 挂载插件一次,再由 ToolRuntime 与 SystemPrompt 的作用域视图将它传递给所有已有和未来的 Agent preset。无需复制、编辑或选择额外 preset。插件固定依赖 tools、systemPrompt 与 llm;只有 Agent 实际呈现 Code Mode 时才需要 codeRuntime。它不会修改 Harness checkout。
- id: progressive-tools
config:
eagerTools: []
maxSearchResults: 10
maxDescribeTools: 5
maxSummaryChars: 240
maxQueryChars: 500
maxToolNameChars: 200
maxResultBytes: 1048576
上述配置块是 profile cordis.patch.yml 中的可选覆盖;bundle 已经拥有 progressive-tools 行。eagerTools 只应包含真正稳定、需要直接声明的精确工具名。未知 eager 名称会让 assembly 失败。条目数、字素数和结果 UTF-8 字节上限都会在成功返回前强制执行。
各模式的稳定表面
| 有效模式 | 模型可见的稳定工具 | 描述后的调用方式 |
|---|---|---|
| Native,原生延迟披露 API | search_tools、describe_tools、eager 工具 | 使用返回的精确名称与参数发起普通工具调用 |
| Native,其他 API | search_tools、describe_tools、invoke_tool、eager 工具 | invoke_tool({ name, arguments }) |
| Code | 线路仅有 run_code,其 SDK 声明发现与 eager binding | 后续 run_code 中调用 tools[exactName](https://github.com/Yan-Zero/dsh-progressive-tools/blob/23f4253e81a38fee1e56e9853c93b1ae1fa6a21d/arguments) |
| Both | run_code、发现工具、eager 工具 | 普通调用或 Code binding |
invoke_tool 是能力兜底,不是第二套 Code transport。若解析后的模型支持 OpenAI Responses client tool search 或 Anthropic tool reference,插件会在 pi-ai 请求边界移除它。Code 与 Both 已有 run_code,因此不会暴露 invoke_tool。
发现协议
- Native/Both 直接调用
search_tools({})或search_tools({ query: "*" }),Code 则把它作为 Code binding 调用,以列出完整轻量目录。与 Harness Skills 的“摘要优先”形态一致,每项只包含精确name与有界 。文本查询只是可选的排序过滤器:各查询词独立匹配,不再要求全部命中;零命中时自动退回完整目录。需要时仍可显式传入 缩小响应。