前言¶
在 DeepSeek Harness(DSH)里,每一步能调用的工具集合可能很大,尤其是接入了 MCP 之后,工具名、描述和参数会整块进入上下文。以往常见做法是懒加载或整表披露,模型仍要在大量工具里做选择,既占 token,也可能多走一轮推理。dsh-lean-context(仓库 LizzzMax/dsh-tool-index)在本地为当前步骤已准入的工具建内存关键字索引,用排名和保守预选缩小可见面;动作与对象匹配明确时可直接暴露单个延迟工具,否则通过 dsh_search_tools 与 dsh_call_tool 完成搜索与调用。检索在进程内完成,不依赖向量服务,也不额外发起模型请求。
这是什么¶
dsh-lean-context 是 LizzzMax 维护的 DSH 插件,npm 包名为 dsh-lean-context,当前资料中的版本为 0.1.2,许可证 MIT,声明的 DSH 引擎版本为 0.2.2-rc.1。它在分类上常归到「模型推理」相关场景,核心不是换模型,而是减少工具披露带来的上下文体积,并尽量用一步选对工具。
插件为每个 agent 基于当前步骤已准入的工具构建内存关键字索引,对名称、描述、参数、动作别名和 URI scheme 做排序。默认会延迟以 mcp__ 为前缀的工具,其余工具保持可见;可通过配置覆盖延迟前缀和固定可见工具。该 bundle 会替换默认的 native executor 入口,实际调用仍委托给 DSH 原生执行器;官方 README 建议每个 profile 只启用一个工具披露类 bundle。
核心功能¶
关键字索引与排序¶
索引来源于本步允许使用的工具元数据,在内存中完成匹配与排序,无需 embedding 或外部检索服务。
保守预选与延迟披露¶
当用户意图中的动作、对象与某一工具高度一致时,可直接预选该工具(延迟工具在未选中前不整段进上下文)。意图含糊时,模型可调用 dsh_search_tools 获取最多三个候选,再用 dsh_call_tool 经 DSH 常规定步准入与执行器调用所选工具。
与懒加载调度器的对比(README 基准)¶
作者在 DSH 0.2.2-rc.1、Web Standard、gpt-6.1-sol(medium reasoning)下,对比了 Lean Context 0.1.0 与 dsh-tool-lazy-dispatcher 1.2.0(含本地兼容补丁),各任务各跑一轮。合计输入与输出 token(含缓存计入输入)从 111,908 降至 79,508,约节省 29.0%;模型请求次数从 9 次降至 7 次。以下为 README 中的分项表,仅供理解量级,不代表你环境的实测结果。
| 任务 | 懒加载调度器 | Lean Context | 节省 token | 模型请求 |
|---|---|---|---|---|
| 无工具短回复 | 11,835 | 10,741 | 1,094 (9.2%) | 1 → 1 |
| 更新六个本地文件 | 63,630 | 46,781 | 16,849 (26.5%) | 5 → 4 |
| 经 MCP 读资源 | 36,443 | 21,986 | 14,457 (39.7%) | 3 → 2 |
README 注明:MCP 任务中因预选 reader,模型可直接调用;文件任务中基线曾多一次 pwd,Lean Context 从 glob 起手,具体路径因模型执行而异。
安装与启用¶
在 DSH Web 中打开 Settings → Plugins → Add Plugin,粘贴 最新 release 中的包 URL;也可安装下载的 .tgz,或将源码目录作为本地包安装。另一种方式是在添加插件时直接填写 npm 包名:
dsh-lean-context
安装后,在 profile 中启用 dsh-lean-context bundle。若你从 GitHub release 升级且版本在 0.1.1 及之前链路内,需先移除旧的 dsh-tool-index bundle,再启用 dsh-lean-context。
作者在 README 中验证的配置为 DSH 0.2.2-rc.1、Web Standard 模式。安装与启用前,建议阅读仓库源码与 MIT 许可证;插件以当前 DSH 进程权限运行,与任何 DSH 插件一样,应确认你信任维护者与代码内容。
可选配置¶
在 profile 中可为 tool-index 设置延迟前缀与固定可见工具,例如:
- id: tool-index
config:
deferredPrefixes: ["mcp__"]
pinnedTools: ["mcp__browser__screenshot"]
deferredPrefixes 可纳入其他工具族做延迟披露;pinnedTools 用于让指定工具始终可见。
典型用法¶
README 中的示例面向自然语言任务,而非要求用户写出工具全名。
- 可说「Take a screenshot of the current web page」:动作与页面对象明确时,可能直接预选截图类工具。
- 可说「Read the memo at this resource URI」:带资源 URI 与阅读目标时,可能预选 MCP 读资源相关工具并一次取回结果。
不确定时,模型可走 dsh_search_tools 再 dsh_call_tool。每次搜索与调用仅针对该 DSH 步骤已准入的工具集合。
开发者可在插件目录执行 npm test,用于检查关键字排序、保守预选与精确发现等行为(node --test test/*.test.mjs)。
适用场景与注意¶
适合:工具数量多、MCP 工具名较长、希望压低工具相关 token 且接受「先搜索再调用」两阶段交互的 DSH profile。不适合:你必须让模型在每一步看到完整工具 schema、且不愿用延迟披露的场景。
注意:
- 每个 profile 只应使用一个工具披露 bundle,避免与默认或其他披露插件冲突。
- 默认延迟
mcp__,若你依赖其他前缀的大量工具,需用deferredPrefixes/pinnedTools调整。 - 星标与用户规模不构成选型依据;异常预选可在 GitHub Issues 反馈。
结尾¶
dsh-lean-context 把工具发现放在本地关键字索引上,用保守预选和 dsh_search_tools / dsh_call_tool 对接 DSH 原有执行链路,目标是在可复现的基准里明显减少上下文 token。目录页:https://www.skillhub.cn/plugins/LizzzMax/dsh-tool-index;源码与说明:https://github.com/LizzzMax/dsh-tool-index。