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
羽毛球分组比赛记分
小程序二维码

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

小夜