dsh-lean-context:DSH 本地工具检索与保守预选

前言

在 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 中的示例面向自然语言任务,而非要求用户写出工具全名。

  1. 可说「Take a screenshot of the current web page」:动作与页面对象明确时,可能直接预选截图类工具。
  2. 可说「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。

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜