dsh-tool-activator:为 DSH 按需加载工具、压缩初始上下文

前言

DeepSeek Harness(DSH)采用插件化工具模型,已安装的工具越多,每次请求附带的 schema 与说明往往越大。若全部默认注入,模型开头就要消化一长串工具定义,既占 token,也容易分散注意力。社区工作流类插件 dsh-tool-activator 的做法是:默认只加载一小套基础工具,其余工具以目录形式可见,由模型在需要时通过 activate_tools 再启用。下面介绍其定位、行为、配置与典型用法。

这是什么

dsh-tool-activator 是面向 DSH 的插件(npm 包名 dsh-tool-activator,当前资料中版本为 0.5.0,MIT 许可证)。仓库与目录页见 Tranquillitatis-Lab/dsh-tool-activator 与 SkillHub 目录。分类为工作流;它不改变工具在宿主内的实际执行路由,主要管「哪些工具的完整 schema 默认进上下文、哪些仅以简述目录呈现并按需激活」。

系统要求(README 原文):DSH ≥ 0.2.0-rc.2;Node.js ≥ 22.19.0。

核心行为

默认可见与按需隐藏

默认作为「基础工具」加载的标识包括:read、glob、grep、write、edit、skill、ask_user_question、todo_write。以上均可通过配置取消默认加载;只有 activate_tools 始终加载且不可关闭。

模型在每次对话中通常能看到:

  1. 配置为默认加载的工具(完整 schema);
  2. 本会话已激活的工具;
  3. 工具 activate_tools 本身;
  4. 其余工具的 <available_tools> 简述目录(标识、名称、一句说明),由插件注入,不占用宿主运行时上下文快照。

其余已安装且在当前 agent 作用域可见的工具默认隐藏,由模型按标识激活。目录中除常见内置工具外,任意已安装插件的工具也可作为标识请求;开启 autoGroupMcp 时,mcp__server__tool 可按 MCP 服务聚合为 mcp.server 等形式。实际集合以运行时的 <available_tools> 为准。

activate_tools 怎么用

模型按需请求加载工具或组,参数形如:

{
  "identifiers": ["web_search", "web_fetch"],
  "reason": "需要检索并核对用户要求的公开资料"
}

已激活条目在上下文中以精简形式呈现(保留标识符与可调用成员名),避免重复冗长描述。

与请求头、defer_loading

对支持对话中途变更工具声明的路由(README 以 deepseek-flash 等、toolUpdate 能力为例),插件可将全部工具一次性声明:基础工具正常声明,其余标 defer_loading(不占上下文 token)。激活时不改写声明列表,只在会话尾部追加 tool_addition,便于前缀缓存仍有效。

不支持该能力的路由则退回「按激活状态过滤声明列表」:功能不变,但每次新激活会重算请求头。

group_tools(仅在用户要求整理分组时)

用户明确要求整理工具分组时,模型可调用 group_tools:

  • action: "list":查看当前作用域分组与成员、未分组工具、基础与锁定工具。
  • action: "apply":通过 ops 增删改分组;basic 分组仅可 update 成员,不可 add / remove 整个分组。

结果写入配置中的 groups 字段,与插件配置页「工具分组」为同一份数据;一次调用要么全部成功要么全部拒绝。

配置

进入 DSH 官方插件管理页,打开 dsh-tool-activator 卡片,表单直接显示在该插件页面上(README 未给出单独的 CLI 安装命令,以管理页与宿主插件机制为准)。

分区 含义
默认激活 每次请求带完整 schema 的工具;基础工具排在最前;仅 activate_tools 固定开启
按需激活 其余工具,由 activate_tools 启用

开关将把工具写入或移出 basicTools;清单由宿主 Remote toolActivator/catalog 提供,覆盖当前 live agent 作用域。

常规:

  • requireApproval:非完全权限时激活前需确认;缺审批服务则拒绝;完全权限 danger-full-access 时无需确认。
  • autoGroupMcp:按 mcp__server__tool 前缀聚合同一 MCP 服务。

工具分组:结构化编辑标识符、名称、说明与成员勾选;留空则各工具独立成条。

执行、持久化与生命周期

  • 工具仍通过 DSH 原有 dispatcher 执行,不改变底层沙箱或运行路由。
  • 已完成的激活状态随标准会话日志与 seed 恢复。
  • Cordis 负责注册、监听及 HMR 清理;卸载时清理样式与实例。

README 记载:2026-10-11 完全权限相关修复后,304 个用例等均通过;真实 GUI E2E、打包发布及真实 profile 为未验证项。

适用场景与注意

适合:工具、MCP 插件较多,希望默认上下文保持精简、由模型在任务明确后再加载 bash、web_fetch、终端、子 agent 等能力的 DSH 用户。

注意:

  1. 插件在当前 DSH 进程权限下运行;安装或启用前应阅读源码与 MIT 许可证,并理解 requireApproval 与权限等级的关系。
  2. SkillHub 等为社区目录,与 DeepSeek / 幻方无官方从属关系;以你实际连接的仓库与 npm 包为准核对版本。
  3. 不要擅自调用 group_tools 重组目录,除非用户明确要求。

结尾

dsh-tool-activator 用「基础工具 + 目录 + activate_tools」把 DSH 的工具发现做成可扩展工作流,在支持 defer_loading 的路由上还能减少反复重写请求头的成本。进一步了解实现与配置截图见 GitHub README;在宿主中从插件管理页打开该卡片即可调整默认与按需工具。

  • 目录页:https://www.skillhub.cn/plugins/Tranquillitatis-Lab/dsh-tool-activator
  • GitHub:https://github.com/Tranquillitatis-Lab/dsh-tool-activator
  • npm:https://www.npmjs.com/package/dsh-tool-activator
羽毛球分组比赛记分
小程序二维码

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

Xiaoye