前言¶
在 DeepSeek Harness(DSH)里跑智能体时,每一步能「准入」的工具往往不少。若把全部工具定义一次性摊进上下文,输入 token 会迅速膨胀,模型也要在多份 schema 里反复比对。常见做法是懒加载或分步披露,但仍可能多出一轮「先想清楚用哪个工具」的请求。
下面介绍社区插件 dsh-lean-context(维护者 LizzzMax,SkillHub 分类为模型推理)。它在当前步骤已准入的工具集合上,于本机构建内存关键词索引,对名称、描述、参数、动作别名与 URI 方案做排序;在动作与对象匹配明确时,可直接暴露一个被延后的工具,否则通过 dsh_search_tools 返回最多三个候选,再由 dsh_call_tool 经 DSH 常规执行器完成调用。
这是什么¶
DSH Lean Context 的定位是:DeepSeek Harness 的本地工具发现与保守预选(conservative tool preselection)。检索在内存中完成,不依赖嵌入服务,也不额外占用一次模型请求。
- 维护者:LizzzMax
- 包名:
dsh-lean-context(package.json版本 0.1.2,许可证 MIT) - 引擎要求:DSH 0.2.2-rc.1(README 中在 Web Standard 模式下验证)
- 目录页:SkillHub — dsh-lean-context
- 源码:GitHub — LizzzMax/dsh-lean-context
核心功能¶
按步骤构建关键词索引¶
插件针对当前 DSH 步骤已准入的工具,为每个 agent 维护一份内存内的关键词索引,并对工具的名称、描述、参数、动作别名以及 URI 方案进行排序匹配。
保守预选与搜索调用¶
- 当用户意图中的动作与对象匹配足够清晰时,可直接预选并暴露一个被延后的(deferred)工具,无需用户点名工具名。
- 否则,模型可调用
dsh_search_tools,最多得到三个候选。 - 选定后通过
dsh_call_tool调用,实际执行仍委托给 DSH 原生执行器;每次搜索与调用仅看到该步骤准入的工具。
与默认披露策略的配合¶
该 bundle 会替换 profile 中默认的原生执行器入口,再把真实调用交还给 DSH 原生执行器。默认将 mcp__ 前缀的工具延后披露,其余工具保持可见;可通过配置覆盖延后前缀与固定可见工具(见下文安装一节)。
Token 基准(README 自述,单次对比)¶
作者在 README 中给出与 dsh-tool-lazy-dispatcher 1.2.0 的对比表(环境:DSH 0.2.2-rc.1、Web Standard、gpt-6.1-sol medium reasoning,Lean Context 0.1.0,两档 profile 均含 OpenViking;合计含输入与输出 token,含缓存输入)。供参考,非独立复现结论:
| 任务 | lazy dispatcher | Lean Context | 节省 token |
|---|---|---|---|
| 短回复、无工具 | 11,835 | 10,741 | 1,094 (9.2%) |
| 更新六个本地文件 | 63,630 | 46,781 | 16,849 (26.5%) |
| 经 MCP 读资源 | 36,443 | 21,986 | 14,457 (39.7%) |
| 合计 | 111,908 | 79,508 | 32,400 (29.0%) |
同一 README 还记录模型请求次数由 9 次降为 7 次;具体路径会随模型执行路线变化(例如文件任务中 baseline 曾多一次 pwd,Lean Context 侧从 glob 起手)。
安装与启用¶
生态上 DSH 强调「一切皆插件」;SkillHub 为社区目录站点,与 DeepSeek / 幻方无官方从属关系。安装前建议在 GitHub 阅读源码与 MIT 许可证,并理解插件以当前 DSH 进程的权限运行。
在 DSH Web 中添加¶
- 打开 Settings → Plugins → Add Plugin。
- 可粘贴 latest release 中的 package URL,或安装已下载的
.tgz,或将源码目录作为本地包安装。 - 也可直接以 npm 包名
dsh-lean-context安装。 - 在 profile 中启用 dsh-lean-context bundle。
每个 profile 只应使用一个工具披露(tool-disclosure)bundle。若从 GitHub release 升级到 0.1.1 及之后版本,需先移除旧的 dsh-tool-index bundle,再启用 dsh-lean-context。
配置示例¶
README 中的 bundle 配置片段如下(deferredPrefixes 控制延后披露的前缀,pinnedTools 可把指定工具钉在可见列表):
- id: tool-index
config:
deferredPrefixes: ["mcp__"]
pinnedTools: ["mcp__browser__screenshot"]
开发者可在插件目录执行 npm test,覆盖关键词排序、保守预选与精确发现等用例(node --test test/*.test.mjs)。
典型用法¶
README 给出的自然语言示例包括:
- 「Take a screenshot of the current web page」——动作与页面截图对象较明确时,可预选匹配工具而无需用户写出工具名。
- 「Read the memo at this resource URI」——在 prompt 中给出资源 URI 与阅读目标时,Lean Context 可预选读取类工具;作者在 MCP 任务基准中描述模型直接调用该工具并取得预期值。
意图模糊时,可先走 dsh_search_tools 缩小范围,再 dsh_call_tool。问题与反馈可提交至 dsh-tool-index Issues(README 链接,尤其欢迎「选错工具」的 query 样例)。
适用场景与注意¶
适合谁: 在 DSH Web Standard 下编排多工具、MCP 与本地文件操作的智能体开发者;希望在少占上下文的前提下仍能让模型稳定找到当前步骤允许的工具。
应注意:
- 验证环境与
engines.dsh一致(0.2.2-rc.1),避免与未测试的 DSH 版本混用。 - 与
dsh-tool-lazy-dispatcher等其它披露方案勿在同一 profile 叠用多个 tool-disclosure bundle。 - 延后披露会减少一步可见 schema,依赖索引质量;安装后应对关键业务工具做一轮真实 prompt 验证。
- 插件逻辑在 DSH 进程内执行,安装前请自行审计
index.mjs、search.mjs与cordis.patch.yml。
结尾¶
dsh-lean-context 把工具发现放在本机内存索引上完成,用保守预选和最多三候选的搜索,在自述基准中降低上下文 token 并略减模型请求。若你在 Harness 里被长工具列表拖慢,可按上文步骤在 profile 中启用并配置延后前缀。
- 目录页:https://www.skillhub.cn/plugins/LizzzMax/dsh-lean-context
- GitHub:https://github.com/LizzzMax/dsh-lean-context