dsh-tool-activator:按需加载 DeepSeek Harness 工具上下文

前言

DeepSeek Harness (DSH) 的插件化架构允许接入丰富的工具能力。但在实际使用中,向模型一次性展示所有可用工具会显著增加初始上下文长度,可能导致注意力分散或触发不必要的权限请求。dsh-tool-activator 插件通过精简初始工具列表,将工具加载策略从“全量展示”转变为“基础工具默认加载,其余工具按需激活”。

核心功能

该插件主要解决初始工具上下文过重的问题,具体能力包括:

  • 精简初始上下文:默认仅向模型展示基础工具,其余工具隐藏。
  • 按需加载机制:模型通过调用 activate_tools 接口,在需要时动态加载特定工具或工具组。
  • 基础工具固化:提供一组固定的基础工具,不可关闭。
  • 配置项支持:支持配置 requireApproval(审批策略)和 autoGroupMcp(MCP 工具聚合)。
  • 工具分组管理:支持对工具进行结构化分组配置。
  • 状态持久化:激活状态随会话日志和 seed 恢复。

工作机制

DSH 运行时默认向模型展示以下内容:基础工具、已激活工具、activate_tools 接口定义,以及未激活工具的 <available_tools> 目录(仅包含标识符、名称和简述)。

默认基础工具

以下八个工具默认始终可用,且不可关闭:
read, glob, grep, write, edit, skill, ask_user_question, todo_write

按需激活示例

模型可请求激活特定的工具或工具组。请求格式为 JSON,包含标识符列表和激活理由:

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

<available_tools> 目录的示例内容如下:

<available_tools description="These tools are installed but not yet enabled. Use activate_tools to enable them when needed.">
  <tool identifier="web_search" name="web_search">Search the public web for current information.</tool>
  <tool identifier="mcp.mail" name="mail">send: Send a message through the mailbox.</tool>
</available_tools>

配置

配置通过官方插件管理页进行。进入 dsh-tool-activator 插件卡片页面即可看到配置表单。

工具列表分区

表单将工具分为两个区域:

  1. 默认激活:每次请求都带完整 schema 的工具。基础工具(如 read、write 等)固定在此处,且带有“基础工具”标记,不允许关闭。
  2. 按需激活:其余已安装且可见的工具。模型可使用 activate_tools 获取。

在列表中切换某项的开关,即可将其在“默认激活”和“按需激活”之间移动。

常规配置

  • requireApproval:控制非完全权限下的激活行为。当模型尝试激活工具时,如果未通过审批策略,该插件会直接拒绝请求(除非当前进程拥有完全权限 danger-full-access)。
  • autoGroupMcp:开启后,MCP 工具会按 server 前缀(如 mcp__server__tool)聚合显示为 mcp.server。

工具分组

在“工具分组”区,可以使用结构化编辑器管理工具。每个分组包含标识符、名称、说明、工具勾选(从真实工具列表中选择)和说明节绑定。留空则每个工具独立成为条目。

系统要求

  • DeepSeek Harness (DSH) 版本:\(\ge\) 0.2.0-rc.2
  • Node.js 版本:\(\ge\) 22.19.0

测试与状态

根据 2026-10-11 的测试记录,插件在完全权限修复后通过了 12 个文件和 304 个用例的测试,同时也通过了 lint、类型检查与构建流程。

生态背景

DSH 理念是“一切皆插件”。本插件由社区开发者 hairyf 维护,遵循 MIT 许可证。第三方声明详见 THIRD_PARTY_NOTICES.md。社区目录与 DeepSeek / 幻方无官方从属关系。

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

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

小夜