Letter2025/dsh-tool-search ↗★ 3
dsh-tool-search
Tool search & slimming for DeepSeek Harness: Hermes-style progressive disclosure — search, describe, and call long-tail tools on demand while keeping core tools eager
安装
npx -p @deepseek-ai/dsh dsh plugin --profile web add github:Letter2025/dsh-tool-search说明文档
阅读完整 README ↗dsh-tool-search
DeepSeek Harness(DSH)的工具搜索与瘦身插件:Hermes 风格渐进式披露。当工具目录变大(挂了多个 MCP 服务或插件工具)时,每个工具的 JSON schema 都会在每一轮注入模型上下文——大量 token 花在本次任务根本用不到的工具上。本插件把长尾工具折叠到三个桥接工具后面,让模型通过配置的 rerank 模型按需搜索、加载和调用。
- 核心工具永远直通——文件/终端/必备工具始终直接可见。
- 桥接工具——
tool_search/tool_describe/tool_call替代被折叠的 schema。 - 分级披露——目录越大,模型可见清单自动越精简。
- 对话式配置——随包技能
tool-slimmer-setup通过对话帮你分组,并引导配置 rerank 模型。 - 全局或按项目——分组/匹配器存在
~/.dsh/dsh-tool-search.json(全局)或/.dsh/dsh-tool-search.json(按项目),由你选择。
安装
dsh plugin --profile web add dsh-tool-search
工作原理
灵感来自 Hermes Agent 的 Tool Search。每一轮,插件的 system-prompt/assemble 监听器计算档位并替换模型可见工具:
| 档位 | 条件 | 模型看到 |
|---|---|---|
| 0 | 目录很小 / 无可折叠工具 | 全量直通,桥不出现 |
| 1 | 分组清单塞得进预算 | 桥 + ## 组 名称/描述清单 |
| 2 | 只有纯名称塞得进 | 桥 + 纯名称清单 |
| 3 | 纯名称也超预算 | 桥 + 每组一行摘要(组名: 数量) |
预算 = min(thresholdPct% × 上下文窗口, listingMaxTokens),每轮重算。清单挂在 runtime context 上,不会被 complete prompt 组合丢弃。
动态注入:搜索、查看或调用某个延迟工具后,该工具会进入会话的可见集(LRU 上限 maxWarmTools),完整 schema 注入后续轮次的上下文——模型按需把工具拉进上下文,而不是永远堆着全部工具。
tool_call 执行时,插件以真实工具名走 ctx.tools.execute——审批、守卫、会话事件全部对着底层工具,永远不是桥本身。tool_search 用配置的 rerank 模型排序;未配置 matcher 或 rerank 失败时降级为关键词匹配(精确名 > 名字词 > 描述词),永不报错。