前言¶
DeepSeek Harness (DSH) 的設計理念是“一切皆插件”。在實際使用中,經常會遇到需要模型記住長期約束的情況,例如“本次會話必須用中文寫註釋”或“禁止修改現有的測試用例”。這些要求往往需要跨輪次持久化。
dsh-baize-rules(Baize)是一個 DSH 插件,旨在解決這一問題。它將用戶設定的持久化“必須做/禁止做”要求,以純文本規則的形式,在對話開始時注入到模型請求中。
核心功能¶
該插件提供了一套完整的規則管理機制:
-
三重作用域,全部注入
規則分爲global(全局,所有會話生效)、session(當前會話)和project(當前工作目錄)三個作用域。無論規則存儲在哪裏,只要處於激活狀態,都會被注入到模型中。 -
持久化存儲
所有規則數據均寫入$DSH_HOME(默認爲~/.dsh),支持跨會話和重啓後保留。 -
特定性優先
渲染順序爲project > session > global。當上下文預算有限時,更具體的規則優先被保留。 -
容錯機制
規則文件讀取具備容錯性。如果某個作用域的文件損壞或被手動編輯破壞,該作用域會被置爲空,並給出警告,而不會導致整個對話流程中斷。 -
去重與長線程保持
通過 SHA-1 哈希抑制重複注入。在會話生命週期變化(如啓動、恢復、清除、壓縮)或規則文本更新後,會自動重新發布規則快照,確保長對話中規則不被遺忘。 -
安全防護
規則內容中的特殊字符(如</system-reminder>)會被轉義,防止用戶文本意外關閉插件注入的框架。 -
統一數據源
命令行接口(CLI)與 Web UI 共享同一套存儲核心,確保狀態一致。 -
標籤與模板
規則支持標籤(如#frontend),用於 UI 篩選。標籤默認不消耗模型上下文預算,除非開啓injectTags選項。支持將常用規則保存爲模板,應用模板會生成內容副本,後續模板修改不影響已應用的規則。 -
衝突安全寫入
寫入時攜帶文件版本號,如果檢測到文件在他處被修改,寫入操作會被拒絕並提示重試,避免數據丟失。
安裝與啓用¶
通過 npm 安裝插件到指定的 profile(默認 web profile):
dsh plugin --profile web add dsh-baize-rules@0.2.4
如果 DSH 由 pm2 管理,安裝後需要重啓進程以加載新插件:
pm2 restart dsh
典型用法¶
插件提供了完整的 CLI 命令集進行管理:
- 查看當前規則:
/baize-rules
這等同於列出所有作用域的規則。
- 添加規則(默認添加到 session 作用域):
/baize-rules add Write comments in Chinese.
- 添加全局規則:
/baize-rules global add Don't delete or rewrite existing tests.
- 列出特定作用域:
/baize-rules list project
- 編輯、禁用、啓用規則:
/baize-rules edit <id>
/baize-rules disable <id>
/baize-rules enable <id>
- 切換默認作用域:
/baize-rules scope global
- 清除規則:
/baize-rules clear session
適用場景與注意¶
適用場景:
- 個人習慣的強制約束(如語言、格式)。
- 跨項目的通用規則。
- 單個會話內的臨時約束。
與 AGENTS.md 的區別:
DSH 自帶 @deepseek-ai/dsh-agent-instructions 插件,讀取工作區的 AGENTS.md。dsh-baize-rules 與其互補:前者適合項目級、版本控制、團隊共享的約定;後者適合個人、跨項目或特定會話的需求。兩者都通過 user/message 注入,並共享相同的優先級機制。
重要注意:
- 規則是純文本,不強制使用 must/mustNot 標記,由內容語言本身表達含義。
- 若當前沒有激活的規則,則不會注入任何內容。
- 插件以當前 DSH 進程的權限運行,安裝前建議檢查源碼與許可證。
結語¶
dsh-baize-rules 爲 DSH 用戶提供了在對話層面管理模型行爲的工具。通過將規則作爲持久化的 user/message 注入,它解決了長期約束記憶的問題,使模型行爲更加可控。
- 目錄頁:https://www.skillhub.cn/plugins/bvcvb/dsh-baize-rules
- GitHub:https://github.com/bvcvb/dsh-baize-rules