DSH(DeepSeek Harness)的核心理念是「一切皆插件」。在工程化開發中,如何讓新會話無縫接續舊進度、如何讓單次產出的價值沉澱爲長期資產,是常見痛點。dsh-ledger-memory 針對這一場景,爲 DSH 提供了一套宿主側的記憶管理方案。
它不管理原始對話記錄,而是爲每個項目建立獨立的、可回溯的長期記憶載體 —— 臺賬。圍繞臺賬,插件提供了活動日誌、上下文壓縮與跨會話交接能力。
核心機制¶
1. 會話接續與注入¶
新會話開始時,插件會將活躍臺賬全文注入上下文。若內容未變更,則不重複注入,以避免破壞 prompt 緩存。
回合結束時,插件會要求模型將本次產出的狀態(已完成 / 受阻 / 下一步)寫回活躍臺賬。
2. 上下文壓縮與逐字膠囊¶
臺賬內容會隨會話增長。當水位達到閾值(默認 70%)時,插件會觸發壓縮。
在壓縮之前,插件會將用戶原話、報錯原文、變更文件清單持久化爲逐字膠囊。壓縮後的內容連同膠囊指針一起注回上下文,確保細節不丟失。
3. 分流壓縮(Triage)¶
壓縮並非簡單截斷,而是通過 ledger_triage 將內容劃爲三桶:
* 留(keep):當前狀態、未驗證假設。壓縮後逐字注回。
* 落(stash):後續可能需要查閱的依據。寫入 _stash/ 目錄,永不注入。
* 丟(drop):已被取代的內容,僅記錄日誌。
4. 跨會話交接¶
插件會生成交接單,並在新會話的首輪注入中提供指針,使新對話無需使用者主動查詢即可接手。
安裝與啓用¶
環境要求:Node.js ≥ 22.19。
# 走 npm 安裝
npm install dsh-ledger-memory
# 或走 DSH 自帶的插件命令
dsh plugin add dsh-ledger-memory
安裝完成後,必須重啓客戶端才生效。內核對已加載的插件不會因文件改動自動重載。
使用方式¶
安裝後無需額外配置。在一個項目目錄中開始工作,插件會自動檢測臺賬狀態。
常用命令¶
在對話中敲 /ledger(不帶參數會彈出卡片),或使用子命令:
/ledger status:查看狀態(臺賬是否存在、使用的文件、行數、Git 狀態)。/ledger show:將當前活躍臺賬全文輸出。/ledger init:初始化臺賬(由 AI 依據項目類型設計結構)。/ledger update:讓 AI 將本次會話的進展寫回臺賬。/ledger archive:將最舊的已完成條目移入歸檔目錄。/ledger compact:立刻執行一次全量壓縮。/ledger light:輕量壓縮(僅壓縮上一個回覆的一段,需顯式使用)。/ledger log:查看活動日誌(L0-L4)。/ledger handoff:生成交接單。/ledger lock [路徑]:將本場對話鎖定到指定項目目錄(用於總工作區下的子項目管理)。/ledger principles:查看根本原則(僅限使用者本人執行)。
鎖定子項目¶
若會話建立在包含多個項目的總工作區上,插件默認將操作落在當前目錄。此時可通過鎖定指定目標:
/ledger lock 20-DSH插件/04-其餘插件/10.項目臺賬
鎖定後,本場對話的全部工具調用均落在該目錄。鎖定狀態會跨重啓保持。
文件結構¶
插件管理以下文件,語義分離:
LEDGER.md:當前狀態,每回合注入。JOURNAL.md:回合流水,只追加,不注入。decisions/:長期決策,一卡一文件。_ledger-log/:活動日誌 L0-L4,只追加,永不注入。_stash/:分流中的”落”部分,只追加。_handoff/:交接單。goals/:目標樹。lessons/:經驗與教訓,一卡一文件。PRINCIPLES.md:根本原則,僅使用者本人可修改。
注意事項¶
- 不自動寫入:插件負責在適當時機向模型注入指令,由模型調用
ledger_write等工具落盤。模型忽略指令時,回合不會落盤。插件會在後續步驟再次要求(閘門機制)。 - 日誌不注入:活動日誌(L0-L4)主要用於排查,永遠不會注入到上下文中。
- 原則修改:
/ledger principles僅限使用者本人執行,模型只能提議或請求授權窗口。
總結¶
dsh-ledger-memory 通過臺賬、膠囊與分流壓縮機制,解決了 DSH 在工程化場景下記憶碎片化、上下文截斷與項目交接難的問題。它讓每一次對話都能成爲項目長期資產的一部分。
- 插件目錄:https://www.skillhub.cn/plugins/18477514055/dsh-ledger-memory
- 源碼地址:https://github.com/18477514055/dsh-ledger-memory