前言¶
在 DeepSeek Harness(DSH)裏,智能體做探索時會產生不少中間步驟:讀取、搜索、試驗、工具調用與輸出。這些步驟寫進 durable log 便於審計,但如果繼續留在模型可見的會話表面,後續請求會一直攜帶這些中間過程,佔掉本來可用於當前任務的上下文。
@dpskh/tool-rewind 解決的是這個問題:在保留 durable log 的前提下,把最近一個 checkpoint mark 之後的探索表面摺疊成一份自動生成報告。下一輪請求開始時,模型看到的是報告,而不是探索過程中的每一步。
這是什麼¶
@dpskh/tool-rewind 是 dpskh 維護的 DeepSeek Harness 插件,定位爲 exploration fold。掛載後,它提供兩個入口:
ctx.rewind
rewind
其中 ctx.rewind 是服務接口,rewind 是面向模型的插件工具。它需要與 @dpskh/tool-checkpoint 配合使用:checkpoint 負責記錄 mark,rewind 負責摺疊 mark 之後的探索表面。
該插件不修改上游包,也不寫自己的 session events;摺疊只提交一個 core-vocabulary 的 user/message 替換。當前已覈實資料中的包信息如下:
name: @dpskh/tool-rewind
version: 0.2.0
private: true
license: MIT
核心能力¶
摺疊探索表面¶
它讀取 session 中最新的 checkpoint mark,選擇該 mark 之後的一段 surface span,通過 ctx.llm 生成報告,然後把這段探索表面替換爲報告。
這個替換使用與 DSH compaction seam 相同的機制:
surfaceOp: { op: 'replace' }
替換之後,後續請求不再攜帶探索過程中的中間步驟;durable log 仍保留完整探索內容,用於審計。
服務調用¶
文檔給出的服務調用方式是:
ctx.rewind.rewind(agent, signal)
這一步會完成三件事:選擇最新 mark 之後的 surface span,調用報告生成,然後提交替換後的 user/message 報告。
如果摺疊失敗,插件不會寫入內容:原探索區域保持完整,mark 仍然 active,調用會以 classified RewindError 拒絕。資料列出的失敗類型如下:
NO_CHECKPOINT
EMPTY_REGION
UNBALANCED
FOLD_IN_PROGRESS
CHANGED
SHRINK
插件使用 per-session in-process lock 拒絕同一 session 的併發摺疊。只要 session 中存在 active checkpoint mark,它會注入一個 turn-stopping warning,使當前 turn 不能結束,直到 rewind 摺疊探索。
報告生成¶
報告由 ctx.llm 生成。報告調用中的 provider/model 解析順序爲:
- 配置裏的 override;
- session 最後一次 routed
request/headerconfig; - agent options。
如果這三處都無法解析出 provider/model,報告調用會失敗。
當 route 暴露 off reasoning effort 時,報告調用會禁用 thinking。空完成會重試,最多重試次數由配置項 maxSummarizationRetries 決定。
報告調用會複用 session 的 system prompt 和 tool schemas,使其保持爲 last routed request 的前綴,從而維持 warm prefix cache。
安裝與啓用¶
當前已覈實資料沒有給出官方安裝命令。不要憑包名拼接命令;下面只展示資料中出現的掛載配置。
單獨配置 @dpskh/tool-rewind:
- id: tool-rewind
name: '@dpskh/tool-rewind'
config:
toolName: rewind
maxTokens: 1024
maxSummarizationRetries: 2
summarizationProvider: deepseek
summarizationModel: deepseek-chat
reportLanguage: en
字段含義如下:
toolName: rewind
maxTokens: 1024
maxSummarizationRetries: 2
summarizationProvider: deepseek
summarizationModel: deepseek-chat
reportLanguage: en
實際使用時通常需要和 checkpoint 插件一起掛載:
- id: tool-checkpoint
name: '@dpskh/tool-checkpoint' # https://github.com/dpskh/dsh-checkpoint
- id: tool-rewind
name: '@dpskh/tool-rewind'
config:
reportLanguage: en
只掛載 @dpskh/tool-rewind 時,因爲沒有 checkpoint mark,摺疊沒有對象,會以 no-checkpoint error 失敗。
典型用法¶
調用服務¶
在 DSH 代碼或插件邏輯中,可以直接調用:
ctx.rewind.rewind(agent, signal)
這個調用負責選擇表面範圍、生成報告,並提交替換後的報告消息。
模型工具返回¶
rewind 工具無參數,資料給出的返回對象爲:
{ markId, foldedNodes, start, end, foldedChars, reportChars }
模型可見性¶
替換後的報告從下一次請求開始對模型可見。探索過程中的 durable events 仍留在 log 中,但不再出現在模型可見的表面上。
插件還會加入一個系統提示段落:
tool:rewind
用於建立 fold discipline,也就是在標記後的探索發生後及時摺疊,而不是把中間步驟一直留在模型可見表面。
適用場景與注意¶
適合誰¶
適合需要同時保留審計日誌和壓縮模型可見上下文的 DSH 智能體場景。常見做法是:
- 用
@dpskh/tool-checkpoint標記探索起點; - 讓智能體完成一段探索;
- 用
@dpskh/tool-rewind把這段探索摺疊爲報告; - 後續請求只基於報告繼續,而不是基於整段中間過程。
需要注意的限制¶
-
必須有 checkpoint mark。
rewind單獨工作時,會因爲缺少 mark 而失敗。 -
一個 marker 只摺疊一次。
對同一個 marker 再次摺疊會被拒絕爲空區域。新一輪探索需要新的 checkpoint。 -
shrink 檢查基於字符數,不是 token 數。
報告必須比被摺疊區域的模型可見文本更短。圖像塊沒有文本尺度,會被保守忽略。 -
某些 route 下可能出現空完成。
如果 route 沒有暴露offreasoning effort,默認 thinking 可能耗盡maxTokens,導致空完成。此時只能依賴maxSummarizationRetries的重試預算。 -
自動 compaction 可能先於 rewind 發生。
如果自動 compaction 在rewind運行前遮蔽了部分探索,摺疊會覆蓋表面上仍然剩餘的部分;storage-resident mark 仍會保留。 -
失敗時不寫入。
失敗會保留原區域,保留 active mark,並以 classifiedRewindError拒絕。 -
安裝前需要檢查源碼與許可證。
插件以當前 DSH 進程權限運行。安裝前建議檢查源碼、依賴和MIT許可證是否符合你的使用環境。
鏈接¶
目錄頁:
https://dshfind.com/zh/plugins/dpskh/dsh-rewind?ref=badge
GitHub:
https://github.com/dpskh/dsh-rewind