dsh-flashback:用檢查點讓任務狀態熬過上下文壓縮

前言

在 DeepSeek Harness(DSH)裏做長會話時,宿主會把較早的對話壓成摘要以騰出上下文窗口。壓縮是有損的:壓過幾次之後,當初否決過的方案、定下來的參數、測試是否跑過這類細節會從摘要裏消失,模型有時還會推翻剛確認過的結論。社區插件 dsh-flashback 的做法是:讓模型在里程碑處寫入檢查點,插件把副本放在系統提示詞裏並在每次壓縮後重新注入,檢查點只落在插件自有目錄,不往工作區寫文件。

這是什麼

dsh-flashback 由維護者 Saretheya 發佈,在 SkillHub 等社區目錄中歸類爲「記憶」類插件(npm 包名 dsh-flashback,當前版本 1.0.1,MIT 許可)。它面向 DSH 0.2.x,目標是在上下文被多次壓縮後仍保留任務的目標、已定結論、否決方案、待辦與證據摘要。

與「把筆記寫進 repo」不同:數據全部在 <DSH_HOME>/plugins/dsh-flashback/data/ 下,按工作區標識分目錄存放 current.md、元數據與最多 20 代歷史代際;卸載插件時隨插件目錄消失,不修改 cordis.patch.yml 或工作區裏的 settings.yaml。

核心功能

檢查點與重注入

模型通過工具 checkpoint_write 寫入或更新檢查點;舊代自動歸檔。checkpoint_read 可讀全文或按關鍵詞過濾行。插件把活躍檢查點掛到 DSH 系統提示詞的首段(該段不參與壓縮),因此可以在任意多次壓縮之後仍被注入。

四檔注入策略

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

情形 注入內容 說明
同一會話 全文(單份注入上限 12000 字符) 與會話綁定的權威副本
跨會話、7 天內且主題相關 摘要卡片(≤900 字符) 依賴檢查點裏的 topic 與 keywords
跨會話、過期或主題不相關 一行指針 約 95 字符量級
尚無檢查點 不注入 0 字符

跨會話時若未寫 topic 和 keywords,相關判斷會偏保守,往往只給一行提示;需要全文時用 checkpoint_read 自行讀取。

工具與上下文狀態

除上述讀寫工具外,還提供 context_status:查看真實 token 佔用、窗口,以及當前檢查點爲何被注入或未注入。context_compact 在宿主提供壓縮服務時可預約一次主動壓縮;若壓縮服務不在插件所在平面,則只落盤並如實告知,核心落盤與重注入能力不受影響。

單份寫入上限 60000 字符(超出拒絕);注入超限會截斷並提示,全文仍可通過 checkpoint_read 獲取。

何時寫檢查點

插件不依賴模型「自覺」,會在多種渠道施加紀律:

  1. 上下文檔位提醒:按佔用比例在 warm(≥50%)、near(≥80%)、over(≥90%)檔位各注入一次提醒,建議先 checkpoint_write 再 context_compact(在 near/over 檔位強調立刻更新)。
  2. 常駐系統提示詞段:本會話已有檢查點時,每輪說明該段爲會話權威副本(與項目 repo 衝突時以 repo 爲準),以及上下文緊張時的先後順序。
  3. 隨包 skill context-checkpoint:聲明裏程碑、壓縮後對賬、壓力信號、溢出類報錯等觸發寫檢查點的情形。
  4. 壓縮後喚醒消息:壓縮完成後提示檢查點已就緒、歷史已壓縮,要求直接續做而非重述已完成工作。

若任務長期不到 50% 佔用且從不壓縮,上述自動提醒可能不會出現;可在 AGENTS.md 里約定里程碑紀律(例如每個模塊改完調用一次 checkpoint_write)。

安裝與啓用

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

dsh plugin --profile desktop add dsh-flashback

裝好重啓 DSH 即可使用。插件零外部依賴(僅 node:* 與包內模塊),peer 依賴爲 @deepseek-ai/cordis >=4.0.1 <5,Node 引擎要求 ^22.19.0 || >=24.0.0。

典型用法

長任務推進中,在根因明確、方案敲定、模塊改完、測試通過或用戶確認決策等節點,調用 checkpoint_write,並在元數據裏填寫 topic 與 keywords,以便日後跨會話仍能收到摘要卡片而非僅一行指針。檢查點正文宜包含:當前目標、已定結論、已否決方案及原因、待辦、關鍵證據(如測試輸出要點)。

上下文佔用升高時,按插件注入的提醒先更新檢查點,再視環境調用 context_compact。壓縮後若模型行爲像「從零開始」,可結合 context_status 確認注入檔位,並用 checkpoint_read 覈對全文。

用 context_status 排查「爲什麼沒注入全文」或 token 佔用是否符合預期,是調試時的常規步驟。

適用場景與注意

適合:單次會話內多次壓縮仍要保持決策一致;隔幾天在同一工作區繼續同一主題;需要本地工作狀態但不希望檢查點進 Git 的場景。

注意:

  • 插件不會自動總結對話;寫什麼由模型(或你在 AGENTS.md 裏的紀律)決定。
  • 跨會話相關性是關鍵詞級判斷,不是語義 embedding;誤判時保守地少佔 token。
  • 同一份 data/ 目錄只允許一個插件實例生效;多 DSH 實例共享同一插件目錄時,後到者會休眠。
  • DSH 生態是「一切皆插件」;SkillHub 等目錄爲社區站點,與 DeepSeek / 幻方無官方從屬關係。
  • 插件以當前 DSH 進程權限運行,安裝前宜自行查看 GitHub 倉庫 源碼與 MIT 許可證。

結尾

dsh-flashback 把「壓縮碰不到的系統提示詞段」當作檢查點載體,在合適的時機提醒落盤,並按會話關係控制注入體量,用來緩解長會話裏結論被摘要衝掉的問題。更多信息見社區目錄頁 Saretheya/dsh-flashback 與倉庫 https://github.com/Saretheya/dsh-flashback。

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

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

小夜