dsh-persona-anchor:釘住人設文本,避開 AGENTS.md 預算限制

前言

在 DSH 工作流中,人設通常寫在全局 ~/.dsh/AGENTS.md 裏,由 @deepseek-ai/dsh-agent-instructions 插件注入。該注入插件爲“全局 + 項目 AGENTS.md”共享 65536 字節的指令預算。其渲染規則是“按最寬泛 → 最具體排序,先整份丟掉最寬泛的”。如果人設恰好在最寬泛的那份裏,項目文件一旦變大,人設就是第一個被犧牲的。更麻煩的是,這個過程靜默發生,只會在注入塊頂部留一行 Workspace instruction budget …,不報錯。

現有的注入配置(如 maxBytes)沒有任何 pin 或 alwaysInclude 選項能保住某個文件。另一個直覺方案 personaPrefix 也會失效,因爲 dsh-system-prompt 的 assemble() 邏輯中,默認 agent preset(如 standard)已經註冊了同名的 deployment:persona-prefix section,新寫入的會被直接覆蓋。

dsh-persona-anchor 旨在解決這個問題:換一個沒人會註冊的 section 名,通過 systemPrompt.section() 通道直接注入,完全繞過 AGENTS.md 的 65536 字節預算。

這是什麼

這是一個 DSH host plugin(web profile),它將指定的「人設」文本釘進 system prompt section。

核心功能:
* 將人設文本釘進 system prompt section。
* 不消耗 AGENTS.md 的指令預算。
* 依賴:僅 Node.js 內置模塊。

安裝

安裝前請確認當前 DSH 進程支持 --profile web。

dsh plugin --profile web add github:harmless0819-dev/dsh-persona-anchor

配置

在 DSH 的插件配置文件中添加以下內容:

- id: dsh-persona-anchor
  name: dsh-persona-anchor
  config:
    file: 'C:/Users/<you>/.dsh/persona.md'   # 必填,人設文件的絕對路徑
    onError: log                             # log(默認)| throw

配置項說明:

鍵 默認值 說明
file 必填 人設文件絕對路徑
section deployment:persona-anchor section 名;建議保持默認,確保唯一性
maxBytes 524288 (512 KiB) 單次讀取上限,防止誤操作讀取過大文件
onError 'log' 讀文件失敗時的行爲:log 僅告警 / throw 觸發錯誤
order 部署人設位 section 排序位置
reloadMs 0 若大於 0,則定時重讀文件
route true 是否註冊狀態路由以報告錯誤

典型用法

  1. 在磁盤上創建人設文件,例如 ~/.dsh/persona.md。
  2. 在插件配置中指定該文件的絕對路徑。
  3. 修改配置後,新開一個會話。
  4. 詢問 AI “你的名字/設定是什麼”。
  5. 若人設未生效,插件會註冊一個狀態路由報告 state.error,從中可以看到失敗原因(如文件不存在、過大或爲空)。

注意事項

  • 自用性質:這是一個自用插件,已在本地跑通。
  • 可選依賴:webServer 是可選依賴。代碼通過 ctx.inject([...]) 延遲註冊,因此寫進頂層 inject 不會導致沒有 webServer 的 headless profile 加載失敗。
  • 容錯機制:讀文件失敗默認不拋異常,只在日誌和狀態裏報告,避免一個人設文件打不開就把整個 profile 搞掛。

結尾

dsh-persona-anchor 提供了一條繞過 AGENTS.md 預算限制的路徑,適合需要確保人設文本在所有場景下都存在的開發者。更多詳情與源碼可參考:GitHub。

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

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

小夜