dsh-sunder:给 DSH 换一套提示词

前言

DeepSeek Harness(DSH)是面向智能体开发者的提示词工程与运行时管理工具。在多插件协作场景下,宿主自身的身份段与其它 bundle 的提示词段经常互相覆盖、冲突。如果不想修改 DSH 源码,又希望在每次请求中注入统一的身份与规则,就需要一个能动态接管系统提示的 bundle。menghuanshiguang/dsh-sunder 就是为此设计的 DSH 插件:它通过注册三段提示词与访问器守卫,把指令层面的控制权交给你,而不是宿主默认行为。

它是什么

dsh-sunder 是一个 DSH bundle(插件),由维护者 menghuanshiguang 开源,当前版本 1.6.1,在 GitHub 上有 1 个星标。它通过三个提示词段(sunder:identity、sunder:rules、sunder:footer)和一组 sunder_* 工具,在每轮请求中动态注入身份声明、规则与公告,并防止其它插件整段替换导致控制权丢失。它不修改 DSH 源码,不扫描项目目录,不提权或绕过审批,只改动内容层的提示词。

核心功能

三段提示词与预设

插件注册三段提示词,分别占据系统提示的首段、工具段之后、以及整份提示的末尾。规则段提供 full、concise、dev 三档预设,分别对应完整规则、压缩规则(约 60% 长度)与开发模式附加段。通过 preset 配置项选择,不改变三段在提示词中的顺序。

关闭宿主身份段

bundle patch 会把宿主的 system-prompt 的 includeHarnessIdentity 置为 false,避免默认身份声明与 Sunder 段互相打架,让 Sunder 的身份声明排在第一位。

防止被整段替换

插件给 systemPrompt.assemble 装了一层访问器守卫(guard)。每次组装后,它补齐缺失的 sunder:* 段;当其它插件用 complete: true 整段替换时,Sunder 用三段整体替换那一段,而不是与它共存。守卫失效时还有 system-prompt/assemble waterfall 兜底。

公告中心

插件从远端 feed 拉取公告,支持镜像链兜底。网络不通时使用随包的 announcements.json。未读公告以运行期上下文的形式进入当轮提示,也可逐条确认。公告是纯文本,只做字符串投影,不当作代码执行。

每轮规则卡

每个请求轮次的第一次请求,插件会把一段精简规则卡(约 100 字)作为真实 user 消息追加到本批输入末尾。这条消息排在运行期上下文快照之后、模型回答之前,任何 scope、complete 段、历史压缩都无法挪动或删除它。同一 turn 不会重复注入。

更新检查与安装

插件会检查 GitHub Releases,缓存 6 小时。发现新版本时,会在当轮提示里带一句提醒。需要时调用 sunder_update action=apply 直接安装新版本,它会先快照、校验包名,再写安装目录。

可观测工具

插件注册 sunder_status、sunder_config、sunder_prompt 三个工具,分别返回版本、生效配置和最终提示词文本。DSH 设置页有一个只读的 Sunder 分区与未读公告横幅。所有持久化数据在一个 JSON 文件里。

安装与启用

一键脚本(推荐)

在仓库根目录执行:

node scripts/install.mjs                        # 安装到 $DSH_HOME/profiles/desktop
node scripts/install.mjs -p D:\some\profile     # 指定其它 profile
node scripts/install.mjs --dry-run              # 只看计划,不写文件
node scripts/install.mjs --uninstall            # 卸载

脚本会在 <profile>/node_modules/dsh-sunder 建 junction 指向本仓库,在 <profile>/package.json 的 dependencies 写入 "dsh-sunder": "link:<仓库路径>",并把 dsh-sunder 追加到 dsh.profile.bundles。

手动挂到 profile

在 profile 的 package.json 里添加依赖,并加入 bundles 列表:

{
  "dependencies": {
    "dsh-sunder": "link:D:/dsh/sunder"
  },
  "dsh": {
    "profile": {
      "bundles": [
        "@deepseek-ai/dsh-base",
        "@deepseek-ai/dsh-web-app",
        "dsh-sunder"
      ]
    }
  }
}

然后在 profile 目录执行 npm install 或 pnpm install,再重启 DSH。

安装后确认

启动日志里应出现类似 [dsh-sunder] v1.6.1 active — language=zh, preset=full, think_header=on, fake_history=on, prompt sections registered, guard=on 的信息。在会话中调用 sunder_status,能看到 placements=sunder:identity@-100000,sunder:rules@10150,sunder:footer@10300。状态文件出现在 $DSH_HOME/sunder/state.json。

典型用法

验证安装

在会话里调用 sunder_status,返回里应出现 dsh-sunder 1.6.1、preset=full、guard=on。

修改预设

在 profile 的 cordis.patch.yml 中配置 preset:

- id: sunder
  name: dsh-sunder
  inject: [systemPrompt]
  config:
    preset: concise
    language: zh

重启 DSH 后,规则段长度会变为约 full 的 60%。

注入自定义文本

在配置中添加 extraPrompt:

- id: sunder
  config:
    extraPrompt: |
      本机没有外网,别建议我查在线文档。

这段文本会追加到规则段末尾。

手动检查更新

在会话中调用:

sunder_update action=apply

插件会检查 GitHub Releases,发现新版本时自动安装。

适用场景与注意

适合需要统一身份声明与规则约束、不想修改 DSH 源码的智能体开发者。插件以当前 DSH 进程的权限运行,安装前应检查源码与许可证。它只改动提示词内容,不涉及文件读写、工具调用、沙箱与审批策略,也不转发模型流量。

短结尾

dsh-sunder 通过三段提示词与访问器守卫,把指令层面的控制权交给你,而不是宿主默认行为。它提供预设、公告中心、每轮规则卡与更新检查,是 DSH 生态中一个专注于内容层的实用 bundle。

参考链接

  • 插件目录:https://www.skillhub.cn/plugins/menghuanshiguang/dsh-sunder
  • GitHub 仓库:https://github.com/menghuanshiguang/dsh-sunder
羽毛球分组比赛记分
小程序二维码

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

Xiaoye