前言¶
在 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 爲準。
- 在長任務中於里程碑(根因確定、方案定稿、測試通過、用戶確認決策等)調用
checkpoint_write,寫清當前目標、已定結論、否決方案及原因、待辦與證據;並填寫topic、keywords以便日後跨會話召回。 - 當佔用接近上限時,按插件提醒先更新檢查點再調用
context_compact(若環境支持);壓縮後依賴系統提示詞中的檢查點副本繼續執行,無需從零複述。 - 需要覈對注入策略或 token 佔用時,調用
context_status;需要全文或按行檢索時,調用checkpoint_read。 - 若任務長期佔用低於 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 成本的注入策略,讓任務狀態在壓縮之後仍能接上。