dsh-personal-system-rules:把個人規則寫進系統提示,並加上三類 Agent 守衛

前言

在 DeepSeek Harness(dsh)裏跑 Agent 時,常見兩類問題:一是希望有一套長期生效的「全局規則」(編碼風格、回覆語言、禁止事項),又不想每次手動粘貼進對話;二是模型有時會連續多步只調工具、不寫說明,或在相同工具調用上打轉,todo 列表長期停在 in_progress 卻不再更新。單靠模型自律不夠穩,需要在 harness 層做注入與步進守衛。

下面介紹社區插件 dsh-personal-system-rules(維護者 NingYuanLee),分類爲工作流。它把用戶指定的 Markdown 規則文件註冊爲系統提示段,並在每步 Agent 執行前可選啓用靜默提醒、重複工具調用檢測、任務狀態(stale todo)守衛;規則正文與守衛參數可在 dsh 設置彈窗「個性化規則」裏編輯並熱更新。當前 npm 包版本爲 0.6.0,許可證 MIT。

這是什麼

dsh-personal-system-rules 是一個 dsh 插件:將 ~/.dsh/PERSONAL-SYSTEM-RULES.md(或通過 config.file 指定的文件)以段名 user:agents-md 注入系統提示,默認 order 爲 10150;同時通過 agent/pre-step 鉤子掛載三類可選守衛。設置入口與插件詳情頁共用同一頁面「設置 → 個性化規則」。

與「只在 Cursor Rules 或單次對話裏寫提示」相比,這裏的規則掛在 dsh profile 與官方 settings 機制上,改文件後約 1 秒輪詢生效,改守衛參數保存後熱更新,無需重啓 dsh。

核心功能

系統提示段

插件把規則 Markdown 原樣注入系統提示,並可配置注入前的 header 說明段。默認文件路徑爲 $DSH_HOME/PERSONAL-SYSTEM-RULES.md;watchFile 以 1 秒輪詢,保存後下一次模型請求即生效。

靜默提醒(silent-step)

當連續 maxSilentSteps 步(默認 2)沒有可見文本輸出時,注入一條提醒,要求模型說明進展;同一條 Agent 鏈只提醒一次。設爲 0 關閉。

重複操作循環檢測

當連續 repeatLimit 步執行完全相同的工具調用(工具名 + 歸一化後的參數)時觸發。repeatAction 可選:

  • remind:注入提醒(默認行爲)
  • stop:走與用戶點停止相同的取消路徑(agent.cancel,保留排隊輸入)

默認 repeatLimit: 0 表示關閉。文本回復、參數變化或新用戶輪次會重置重複計數。

任務狀態守衛(stale-todo)

若本輪存在 todo 列表且仍有 in_progress 項,連續 maxStaleTodoSteps 步(默認 6)未重寫列表時提醒一次,之後每隔同樣步數再提醒。本輪未建列表(短任務)或全部完成時不觸發;0 關閉。自定義提醒文案可含佔位符 {count}(未更新步數)、{inProgress}(進行中項數)。

設置界面

「規則正文」與「守衛」兩塊可在彈窗編輯;保存經官方 settings 寫回 profile 的 cordis.patch.yml 並熱更新。file、header、order 爲普通配置,需在 patch 中修改;改 file 後需重載插件。

安裝與啓用

安裝前請確認環境:Node.js >= 22.19.0,dsh >= 0.2.1-rc.2 且 < 0.3.0-0。極簡預設下系統提示被截斷,本插件不生效;插件停用或加載失敗時不注入任何內容。

從 npm(推薦):

先用 --dump-config 準備好 profile,再添加插件:

dsh --profile my-profile --from-default-profile web --dump-config
dsh plugin --profile my-profile add dsh-personal-system-rules

從 git(固定 tag v0.6.0):

dsh plugin --profile my-profile add "git+https://github.com/NingYuanLee/dsh-personal-system-rules.git#v0.6.0"

從 GitHub Release tarball:

dsh plugin --profile my-profile add "https://github.com/NingYuanLee/dsh-personal-system-rules/releases/download/v0.6.0/dsh-personal-system-rules-0.6.0.tgz"

包不含 prepare / postinstall,安裝不會執行構建腳本。

配置要點

插件在 profile 中典型片段如下(字段含義以 README 爲準):

- id: system-agents-md
  name: dsh-personal-system-rules
  config:
    # file 缺省爲 $DSH_HOME/PERSONAL-SYSTEM-RULES.md
    header: |
      # 用戶全局系統層規則
      以下內容來自用戶全局 PERSONAL-SYSTEM-RULES.md,是系統層指令,必須遵守。
    maxSilentSteps: 2
    silentReminder: ''
    repeatLimit: 0
    repeatAction: remind
    repeatReminder: ''
    maxStaleTodoSteps: 6
    staleTodoReminder: ''

maxSilentSteps、silentReminder、repeatLimit、repeatAction、repeatReminder、maxStaleTodoSteps、staleTodoReminder 爲 volatile() 字段,可在設置彈窗編輯並熱更新。需要更強循環約束時,可將 repeatLimit 設爲大於 0 的正整數,並按需選擇 remind 或 stop。

典型用法

  1. 安裝插件後,在 $DSH_HOME/PERSONAL-SYSTEM-RULES.md 寫入你的全局規則(例如「始終用中文回覆」「改代碼前先讀周邊文件」)。
  2. 打開 dsh 設置 → 個性化規則,在「規則正文」中直接編輯或確認與文件一致的內容;在「守衛」裏按任務類型調整 maxSilentSteps、repeatLimit、maxStaleTodoSteps。
  3. 發起 Agent 任務:規則隨系統提示生效;若模型長時間無文字、重複同一工具調用或 todo 長期不更新,守衛按配置注入提醒或中止本輪。

三個守衛共用同一 agent/pre-step 鉤子,檢測邏輯爲純函數並在倉庫內獨立測試,便於理解行爲邊界。

適用場景與注意

適合: 需要在 dsh 層統一 Agent 行爲約束的開發者;長跑工具鏈任務中希望減少「無聲刷步驟」、工具死循環、todo 假進行中的情況。

注意:

  • 循環檢測只認「工具名 + 參數完全相同」的連續調用;換參數、插入文本步驟或新用戶消息會重置計數。
  • repeatAction: stop 不是強殺進程,而是與用戶停止同一路徑的取消。
  • 安裝任意 dsh 插件都會以當前 dsh 進程的用戶權限運行第三方代碼;安裝前請閱讀 源碼 與 MIT 許可證。
  • DeepSeek Harness 生態理念是「一切皆插件」;社區目錄 SkillHub 插件頁 爲獨立站點,與 DeepSeek / 幻方無官方從屬關係。

結尾

dsh-personal-system-rules 把個人規則文件固定進系統提示,並用可配置的步進守衛約束 Agent 的常見失控模式;規則與守衛均可從設置彈窗維護。進一步瞭解可訪問社區目錄頁與 GitHub 倉庫:

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

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

小夜