dsh-cairn:讓任務狀態熬過 DSH 上下文壓縮

前言

在 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 沒有單獨的長篇「教程腳本」,用法圍繞工具與紀律展開,可按下面順序理解。

  1. 在里程碑寫檢查點
    根因確定、方案拍板、模塊改完、測試通過、用戶確認決策等時機,調用 checkpoint_write,內容應包含目標、結論、否決方案及原因、待辦與證據(Evidence);並填寫 topic、keywords 以便日後跨會話召回。

  2. 上下文變緊時
    收到插件的 warm / near / over 提醒時,先更新檢查點,再視環境調用 context_compact。壓縮發生後,依賴系統提示中的檢查點與喚醒消息繼續任務,可用 checkpoint_read 查全文或過濾行。

  3. 排查注入行爲
    調用 context_status 查看當前窗口占用以及本工作區檢查點爲何注入摘要、全文或僅一行指針。

  4. 純增量、長期不壓縮的場景
    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
羽毛球分组比赛记分
小程序二维码

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

小夜