前言¶
在 DSH 多工具調用場景中,模型經常需要先讀取、搜索、嘗試多個方案,再給出結論。這些中間步驟會進入上下文,使後續回合攜帶較多噪聲。
@dpskh/tool-checkpoint 解決的是其中一個環節:在探索開始前,先記錄一個持久化的探索起點標記。該插件本身不折疊內容,標記在 rewind 前保持惰性;後續由 @dpskh/tool-rewind 消費該標記,摺疊標記之後的中間步驟。
這是什麼¶
@dpskh/tool-checkpoint 是 DeepSeek Harness(DSH)的 checkpoint marker 插件,維護者爲 dpskh,許可證爲 MIT。
掛載後,它提供兩樣東西:
ctx.checkpoint:一個插件服務,用於在插件自有存儲域中按 session id 持久記錄 checkpoint mark。checkpoint:一個模型可調用的工具,供模型在探索開始前調用。
該插件的定位是記錄“探索從哪裏開始”,不負責摺疊上下文。摺疊工作由 @dpskh/tool-rewind 完成。
核心功能¶
持久記錄 checkpoint mark¶
標記保存在 checkpoint 存儲域中,路徑爲:
~/.dsh/storages/checkpoint.json
這個標記不是 session event,不進入模型可見歷史,也不進入 durable session log。
提供模型可調用的 checkpoint 工具¶
checkpoint 工具接受可選輸入:
{
"objective": "string"
}
調用後返回:
{
"id": "string",
"logLength": 0
}
其中:
id:插件自有的單調標記身份。logLength:標記時的 session log 長度。
供 rewind 消費¶
插件提供以下接口,供 @dpskh/tool-rewind 使用:
latestMark
hasActive
completeFold
這些接口用於讀取最新標記、判斷是否仍有待摺疊標記,並在摺疊成功後標記該 marker 已完成。
KV cache 行爲¶
README 說明該插件的 KV cache 效果爲 prefix-stable:工具 schema 固定,標記是存儲記錄而非會話事件,不會改變請求前綴。
啓用與配置¶
已覈實資料中未給出官方安裝命令,因此這裏不提供安裝命令。
啓用方式是在 DSH 插件配置中掛載該插件:
- id: tool-checkpoint
name: '@dpskh/tool-checkpoint'
config:
toolName: checkpoint
其中:
id:插件配置項 ID。name:插件包名,固定爲@dpskh/tool-checkpoint。config.toolName:模型可見的工具名,默認爲checkpoint。
與 @dpskh/tool-rewind 一起使用¶
單獨使用 checkpoint 時,只會記錄 inert marker,探索內容仍會留在上下文中。
單獨使用 rewind 時,由於沒有可消費的 checkpoint,會以 no-checkpoint 錯誤失敗。
因此需要同時掛載兩個插件:
- id: tool-checkpoint
name: '@dpskh/tool-checkpoint'
- id: tool-rewind
name: '@dpskh/tool-rewind'
config:
reportLanguage: en
其中 reportLanguage 是 tool-rewind 的配置項,示例中設置爲 en。
編程契約¶
插件服務接口爲:
ctx.checkpoint.mark(session, objective?)
調用後返回:
{ id, logLength }
含義如下:
session:當前會話標識。objective?:可選的目標描述。id:該次標記的插件內部身份。logLength:標記時 session log 的長度,可作爲後續摺疊錨點。
模型工作流¶
模型可以按下面的順序使用:
1、在需要超過一次工具調用的調查前,調用 checkpoint 工具。
{
"objective": "optional description"
}
2、收到返回結果:
{
"id": "string",
"logLength": 0
}
3、完成調查後,在結束回合前調用 rewind,摺疊標記之後的中間步驟。
這個流程的關鍵是:checkpoint 只負責標記,rewind 負責摺疊。
適用場景與注意¶
適合以下 DSH 工作流:
- 需要先進行多次工具調用的調查。
- 希望把探索中間步驟從模型可見上下文中摺疊掉。
- 需要保留 durable session log,同時減少中間過程佔用的場景。
需要注意:
1、沒有 rewind 的 marker 是 inert 的。探索仍會留在上下文中,不會因爲打了標記而自動消失。
2、每個 marker 只能摺疊一次。重複摺疊同一 marker 會被拒絕爲空區域。
3、標記不屬於 session event。它不進入模型可見歷史,也不進入 durable session log。
4、durable session log 保持 core-vocabulary,避免引入倉庫外插件事件導致 harness 無法識別。
5、插件以當前 dsh 進程權限運行。安裝前應檢查源碼、依賴與許可證。
鏈接¶
目錄頁:
https://www.skillhub.cn/plugins/dpskh/dsh-checkpoint
GitHub:
https://github.com/dpskh/dsh-checkpoint