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

前言

在 DeepSeek Harness(DSH)裏做長會話時,宿主會把較早的對話壓成一條摘要。壓一次往往還能接受;多壓幾輪之後,「當初爲什麼否決方案 A」「參數定的是 0.75 還是 0.8」「測試到底有沒有跑過」這類細節會從上下文裏消失,模型有時還會推翻剛纔已經確認過的結論。

單靠對話歷史無法可靠地保留這些「已定結論」。社區插件 dsh-track(維護者 Saretheya,目錄分類爲記憶)的做法是:讓模型在里程碑處寫入檢查點,插件把檢查點存進插件自有目錄,並在每次壓縮之後重新注入系統提示詞,使關鍵狀態不隨有損摘要一起被沖走。檢查點不會寫入你的工作區。

這是什麼

dsh-track 是面向 DSH 0.2.x 的 Cordis 插件(npm 包名 dsh-track,當前版本 1.0.1,MIT 許可)。它不負責改 DSH 的壓縮算法,而是把檢查點放在系統提示詞中不參與壓縮的區段裏,作爲跨越多次壓縮的權威副本。

插件在 SkillHub 社區目錄中的簡介與 GitHub 一致:模型寫入檢查點,插件在每次壓縮後將其重新注入系統提示詞;數據只落在插件目錄,不污染工作區。

核心功能

檢查點讀寫與上下文狀態

插件向模型暴露以下工具(名稱以 README 爲準):

工具 作用
checkpoint_write 寫下或更新檢查點;舊代自動歸檔,保留最近 20 代
checkpoint_read 讀回全文,或按關鍵詞過濾行
context_status 查看真實 token 佔用、窗口,以及當前檢查點爲何被注入或未注入
context_compact 在宿主提供壓縮服務時預約一次主動壓縮;若拿不到壓縮服務則只落盤並如實告知

寫入檢查點時,README 強調跨會話召回務必填寫 topic 與 keywords,否則跨會話時往往只會得到一行指針而非摘要卡片。

四檔注入策略

插件不會每輪都把整份檢查點塞進上下文,而是按檢查點與會話的關係選擇體量:

情形 注入內容 README 記載的實測體積
同一會話 全文(單份注入上限 12000 字符) 起約 240 字符
跨會話、7 天內、主題相關 摘要卡片(≤900 字符) 約 175 字符
跨會話、過期或主題不相關 一行指針 約 95 字符
尚無檢查點 不注入 0 字符

「主題相關」由檢查點裏的 topic 與 keywords 做關鍵詞級判斷,不是語義 embedding;誤判方向偏保守,寧可少給也不白佔 token。

主動提醒與壓縮後喚醒

除常駐提示詞段和隨包分發的 context-checkpoint 技能(里程碑、壓縮後對賬、上下文壓力等觸發條件)外,插件會在上下文佔用跨越檔位時向會話注入提醒(同一檔位只提醒一次):

檔位 觸發閾值 提醒要點
warm 佔用 ≥ 窗口 50% 先 checkpoint_write 落盤,再 context_compact
near 佔用 ≥ 80% 立刻更新檢查點
over 佔用 ≥ 90% 立即更新檢查點

壓縮執行完成後,插件還會注入後續消息,提示檢查點已落盤、歷史已壓縮,要求模型直接接着做、不要重述已完成工作。

數據存放位置

全部數據在 DSH 插件目錄下,工作區不會新增文件:

<DSH_HOME>/plugins/dsh-track/data/
├── checkpoints/<工作區標識>/
│   ├── current.md
│   ├── current.meta.json
│   └── gen-NNN.md
├── active-variant.lock
├── tmp/
└── logs/

README 說明:單份寫入上限 60000 字符(超出拒絕);單份注入上限 12000 字符(超出截斷並提示,全文仍可用 checkpoint_read);跨會話卡片有效期 7 天;context_compact 在落盤超過 10 分鐘新鮮度窗口時會拒絕預約。

安裝與啓用

需要 DSH 0.2.x(README 記載在 0.2.1-rc.5 實測)。官方安裝命令如下:

dsh plugin --profile desktop add dsh-track

安裝後重啓 DSH。插件不修改你的 cordis.patch.yml,也不寫 settings.yaml;卸載後數據隨插件目錄消失。Node 引擎要求見 package.json:^22.19.0 || >=24.0.0。

典型用法

下面介紹一條可復現的主線,細節以 README 爲準。

  1. 在長任務中於里程碑(根因確定、方案定稿、測試通過、用戶確認決策等)調用 checkpoint_write,寫清當前目標、已定結論、否決方案及原因、待辦與證據;並填寫 topic、keywords 以便日後跨會話召回。
  2. 當佔用接近上限時,按插件提醒先更新檢查點再調用 context_compact(若環境支持);壓縮後依賴系統提示詞中的檢查點副本繼續執行,無需從零複述。
  3. 需要覈對注入策略或 token 佔用時,調用 context_status;需要全文或按行檢索時,調用 checkpoint_read。
  4. 若任務長期佔用低於 50%、幾乎不觸發壓縮,README 建議在項目 AGENTS.md 中約定里程碑紀律(例如每個模塊改完調用一次 checkpoint_write),避免完全依賴自動提醒。

適用場景與注意

適合誰:在 DSH 桌面或 Web 上做長時間編碼、排查或方案迭代,且擔心多輪上下文壓縮導致結論與證據丟失的開發者。

已知限制(來自 README):插件不會自動總結對話,「寫什麼」仍由模型(及你在 AGENTS.md 中的紀律)決定;主動壓縮是否可用取決於 DSH 裝配;同一 data/ 目錄只允許一個插件實例生效,多實例指向同一目錄時後到的會休眠。

安全與信任:插件以當前 DSH 進程的權限運行,檢查點內容可能包含任務細節。安裝前應閱讀 GitHub 倉庫 源碼與 MIT 許可證,確認符合你的環境與合規要求。SkillHub 目錄(saretheya/dsh-track)是社區站點,與 DeepSeek / 幻方無官方從屬關係;DSH 生態理念是「一切皆插件」,本文介紹的是社區維護的 memory 類插件之一。

結尾

經過上面的步驟,你可以把 dsh-track 理解爲:在壓縮碰不到的系統提示詞區段裏放一塊「路標」,用可控 token 成本的注入策略,讓任務狀態在壓縮之後仍能接上。

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

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

小夜