前言¶
在 DeepSeek Harness(DSH)裏做長會話時,宿主會把早期對話壓成一條摘要。壓一兩次往往還能接着幹;多壓幾輪之後,「當初爲什麼否決方案 A」「參數定的是 0.75 還是 0.8」「測試到底有沒有跑過」這類細節會從上下文裏消失,模型還可能推翻剛纔已經確認過的結論。單靠對話歷史,很難在多次壓縮後保持同一條任務線的連續性。
下面介紹社區插件 dsh-cairn(維護者 Saretheya,GitHub:Saretheya/dsh-cairn)。它在里程碑處讓模型寫入檢查點,存進插件自有目錄,並在每次壓縮後把檢查點重新注入系統提示詞——利用 DSH 系統提示首節點不參與壓縮這一機制,把「壓縮碰不到的地方」當作權威副本。檢查點不會寫入你的工作區。
這是什麼¶
dsh-cairn 的定位是:在上下文被 DSH 有損壓縮之後,仍保留當前目標、已定結論、否決方案、待辦與證據。README 用登山路標(cairn)作比喻:沿途堆幾塊石頭,後人循石而行。
插件分類在 SkillHub 目錄中歸爲「記憶」;npm 包 dsh-cairn 當前版本爲 1.0.1(以 package.json 爲準),許可 MIT,目標 DSH 版本 0.2.x(README 寫明 0.2.1-rc.5 實測)。它不修改你的 cordis.patch.yml,也不寫 settings.yaml;卸載後數據隨插件目錄一起消失。
核心功能¶
檢查點與重注入¶
模型通過工具 checkpoint_write 寫下或更新檢查點;舊代自動歸檔,保留最近 20 代。插件在 systemPrompt.section 中注入內容,因此可跨越任意多次壓縮。
注入不是每輪全文塞滿,而是按檢查點與會話關係分四檔(README 中的「四檔注入策略」):
| 情形 | 注入內容 | README 實測體積參考 |
|---|---|---|
| 同一會話 | 全文(≤12000 字符) | 起約 240 字符 |
| 跨會話、7 天內、主題相關 | 摘要卡片(≤900 字符) | 約 175 字符 |
| 跨會話、過期或主題不相關 | 一行指針 | 約 95 字符 |
| 尚無檢查點 | 不注入 | 0 字符 |
跨會話時「主題相關」依賴檢查點裏的 topic 和 keywords;README 強調這兩個字段務必填寫,否則跨會話往往只會得到一行提示。
工具一覽¶
| 工具 | 作用 |
|---|---|
checkpoint_write |
寫入/更新檢查點 |
checkpoint_read |
讀回全文,或按關鍵詞過濾行 |
context_status |
查看 token 佔用、窗口,以及檢查點爲何被注入或未注入 |
context_compact |
在支持壓縮服務的環境裏預約主動壓縮;若宿主壓縮服務不在插件所在平面,則只落盤並如實告知 |
另隨包提供 context-checkpoint 技能,聲明裏程碑、壓縮後對賬、上下文壓力等觸發條件;並在壓縮完成後注入喚醒消息,提示模型直接接着做、勿重述已完成工作。
主動提醒(非全靠模型自覺)¶
插件在上下文佔用跨越檔位時會向會話注入提醒(同一檔位只提醒一次):
| 檔位 | 閾值 | 提醒要點 |
|---|---|---|
warm |
≥ 窗口 50% | 先 checkpoint_write,再 context_compact |
near |
≥ 80% | 立刻更新檢查點 |
over |
≥ 90% | 立即更新檢查點 |
本會話已有檢查點時,系統提示詞還會常駐一段規則:上下文緊張時先落盤再壓縮;與項目 repo 衝突時以 repo 爲準。
數據存放位置¶
全部在插件目錄,工作區不增文件:
<DSH_HOME>/plugins/dsh-cairn/data/
├── checkpoints/<工作區標識>/
│ ├── current.md
│ ├── current.meta.json
│ └── gen-NNN.md
├── active-variant.lock
├── tmp/
└── logs/
單份寫入上限 60000 字符(超出拒絕);注入上限 12000 字符(超出截斷並提示,全文仍可用 checkpoint_read)。跨會話卡片有效期 7 天;context_compact 要求落盤新鮮度在 10 分鐘內。
安裝與啓用¶
DSH 生態裏能力以插件形式擴展;社區目錄頁見 SkillHub:Saretheya/dsh-cairn,與 DeepSeek / 幻方無官方從屬關係,安裝前建議自行查看源碼與許可證。
官方 README 給出的安裝命令如下:
dsh plugin --profile desktop add dsh-cairn
安裝後重啓 DSH。需要 DSH 0.2.x;Node 引擎要求見 package.json(^22.19.0 || >=24.0.0)。插件以當前 DSH 進程權限運行,安裝前應確認你信任維護者與代碼內容。
典型用法¶
README 沒有單獨的長篇「教程腳本」,用法圍繞工具與紀律展開,可按下面順序理解。
-
在里程碑寫檢查點
根因確定、方案拍板、模塊改完、測試通過、用戶確認決策等時機,調用checkpoint_write,內容應包含目標、結論、否決方案及原因、待辦與證據(Evidence);並填寫topic、keywords以便日後跨會話召回。 -
上下文變緊時
收到插件的warm/near/over提醒時,先更新檢查點,再視環境調用context_compact。壓縮發生後,依賴系統提示中的檢查點與喚醒消息繼續任務,可用checkpoint_read查全文或過濾行。 -
排查注入行爲
調用context_status查看當前窗口占用以及本工作區檢查點爲何注入摘要、全文或僅一行指針。 -
純增量、長期不壓縮的場景
README 指出:若任務從不到 50% 且從不壓縮,上述檔位提醒可能不會觸發。可在項目AGENTS.md裏寫里程碑紀律(例如「每個模塊改完調用一次checkpoint_write」),把落盤變成固定動作。
寫入檢查點示例結構以 README 語義爲準(字段名以工具/schema 爲準):目標、已定結論、已否決方案、待辦、Evidence 要點,以及 topic / keywords。
適用場景與注意¶
適合誰:長時間在同一 DSH 會話裏做複雜任務(調試、多輪方案比較、測試證據追蹤),或希望在 7 天內用新會話接着同一主題且控制 token 的人。
已知限制(來自 README):
- 插件不會自動總結對話;寫什麼由模型(及你在
AGENTS.md中的紀律)決定。 - 跨會話相關性是關鍵詞級,不是語義 embedding;策略偏保守,可能只給一行指針。
- 主動壓縮是否可用取決於 DSH 裝配;核心落盤與重注入不依賴該能力。
- 同一
data/目錄只允許一個實例生效;多實例指向同一插件目錄時,後到的會休眠。
安全與信任:插件讀寫僅限 <DSH_HOME>/plugins/dsh-cairn/data/,不寫入工作區;仍建議在安裝前閱讀 倉庫源碼 與 MIT 許可證條款。
結尾¶
dsh-cairn 不改動 DSH 壓縮本身,而是把檢查點放在系統提示中壓縮無法觸及的位置,並在壓縮後重新注入,減輕「摘要把細節沖掉、模型否認剛纔結論」的問題。數據留在插件目錄,不污染項目倉庫。
- 目錄頁:https://www.skillhub.cn/plugins/Saretheya/dsh-cairn
- GitHub:https://github.com/Saretheya/dsh-cairn