dsh-minimal-anchor:DSH 第一回合的工具精简

前言

DeepSeek Harness (dsh) 在初始化新会话时,通常会在第一回合就将完整的工具集(包括文件编辑、bash 执行、子代理等)发送给模型。这种全量 schema 的方式容易导致模型在探索阶段过早地执行操作,而非专注于分析。dsh-minimal-anchor 是一个针对这一问题的插件,它通过挂钩 DSH 的提示词组装流程,仅在第一回合对工具列表进行裁剪,并注入结构化前言,让模型在探索阶段保持专注。

插件定位

dsh-minimal-anchor 是一个 DeepSeek Harness 插件,由开发者 rand0wn 维护。其核心作用是保护第一回合免受工具模式过载的影响。它采用 MIT 许可证开源。

核心功能

  1. 第一回合工具裁剪:仅在会话的第一回合,将工具列表限制在白名单内。
  2. 结构化前言注入:在第一回合的提示词中添加简短的探索导向前言。
  3. 后续回合无感:从第二回合开始,插件完全让路,恢复完整的工具集和正常的提示词组装流程。

安装与启用

安装插件需要将包添加到指定 profile 的依赖中,并显式声明在 bundles 列表中才能生效。

  1. 安装插件:
    dsh plugin --profile <name> add dsh-minimal-anchor
  1. 声明激活:
    插件安装为依赖后,必须将其添加到 profile 的 package.json 的 dsh.profile.bundles 字段中:
    {
      "dsh": {
        "profile": {
          "bundles": [
            "@deepseek-ai/dsh-base",
            "@deepseek-ai/dsh-headless",
            "dsh-minimal-anchor"
          ]
        }
      }
    }
  1. 验证安装:
    使用 dsh --profile <name> --dump-config 检查输出中是否包含 minimal-anchor 条目。

典型用法

这是一个被动插件,无需额外的调用命令。

  • 正常启动:直接使用 dsh web、dsh --profile headless "..." 等常规命令启动。
  • 自动生效:每个新会话的第一回合会自动带上裁剪后的工具列表和前言;后续回合保持原样。

配置

配置文件位于 profiles/<name>/cordis.patch.yml。以下是默认配置示例:

- insert:
    - id: minimal-anchor
      name: 'dsh-minimal-anchor'
      config:
        whitelistedTools: [read, glob, grep]
        enforcePreamble: true
        customPreamble: 'Your own turn-1 framing text.'
字段 默认值 说明
whitelistedTools [read, glob, grep] 第一回合保留的工具名称。必须与 harness 中注册的名称完全一致。
enforcePreamble true 是否强制注入结构化前言。
customPreamble (内置探索导向文本) 自定义前言内容。仅在 enforcePreamble 为 true 时生效。

工作原理

该插件通过挂钩 @deepseek-ai/dsh-system-prompt 包中的 system-prompt/assemble 流水线来实现。
* 首次组装:使用 WeakSet 记录作用域,第一次组装时,将工具列表过滤为白名单,并在前面插入前言,然后调用 next() 继续执行后续监听器。
* 后续组装:同一个作用域的后续组装直接调用 next(),不做任何修改,确保工具集恢复原状。

注意事项与故障排查

  1. 工具名称匹配:如果第一回合工具列表为空,通常是因为 whitelistedTools 中的名称与实际注册的工具名称不符。请使用 dsh --profile <name> --dump-config 查看实际工具名。
  2. Bundle 必须声明:仅通过 dsh plugin add 安装依赖是不够的,必须将其加入 dsh.profile.bundles 才能激活 dsh.bundle 补丁。
  3. Config 类型限制:导出的 Config 必须是 schemastery 的 schema(即 z.object({...})),不能是普通对象。否则在 fork 场景下会报错 Cannot read properties of undefined (reading 'validate')。
  4. 生态说明:DSH 采用插件化架构,本插件为社区开发,与 DeepSeek 官方无直接从属关系。

总结

dsh-minimal-anchor 适合希望在会话初期引导模型进行探索而非立即执行操作的 DSH 使用者。它通过极轻量的介入,解决了第一回合模式过载的问题。

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

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

小夜