前言¶
DeepSeek Harness (DSH) 的模型上下文在每次調用時都會從會話 surface 重新推導。官方現有的“回退到末尾”式的編輯(如 dsh-edit-turn 的默認行爲)在替換一條消息時會丟棄該消息之後的所有內容。這是因爲 assistant/message 被格式明令禁止攜帶 sourceEventSeqs,無法在原地替換。
dsh-rerun-turn 插件通過官方的 surface-replace 契約實現了“中綴重跑”:重跑任意一輪模型回答,並保留後續輪次,使後續調用讀到的是修改後的歷史上下文。
核心功能¶
- 中綴重跑:重跑任意一輪迴答並保留後續輪次,實現中綴拼接。
- 官方契約:僅使用官方
surface-replace契約,無自定義事件類型,確保兼容性。 - 靜默載體:遮蔽載體不佔輪次、不佔步驟,對用戶不可見。
- 重放保真:逐事件複製,丟棄
usage、內嵌 stream、系統消息等,確保上下文一致。 - 崩潰可恢復:基於日誌狀態可恢復中斷的重跑。
- 圖片支持:原提示詞中的圖片可重新發送。
- UI:中英雙語,跟隨 DSH 當前語言,皮膚友好。
安裝與啓用¶
從官方目錄安裝:
dsh plugin --profile web add dsh-rerun-turn
從本地目錄安裝(開發用):
dsh plugin --profile web add /path/to/dsh-rerun-turn
patchReload: live 的 profile 會熱加載;否則重啓該 profile 對應的 DSH 進程。
典型用法¶
- 懸停觸發:把鼠標移到想重跑的那條模型回答上。
- 點擊執行:點擊動作條裏的 ↻(重跑這一輪)。
- 後臺處理:後臺立刻開始執行。舊的一輪及其後內容先從模型上下文移除,提示詞重新發給模型,生成結束後後續輪次自動重放回來。
- 結果呈現:界面上被退役的舊行隱藏,新生成的回答與重放的行正常出現,最終順序即爲模型讀到的順序。
配置¶
- id: dsh-rerun-turn
config:
confirm: false # 默認 false:一次點擊即執行
autoResume: true # 默認 true:中斷的重放在會話空閒時自動續傳
idleTimeoutMs: 600000 # 等待新回答落地的最長時間
devTools: false # 默認 false:端到端驗證用的 /dev/* 迴環路由
| 字段 | 默認 | 含義 |
|---|---|---|
confirm |
false |
客戶端是否先彈一次確認。 |
autoResume |
true |
/state 是否在會話空閒時自動完成被中斷的重放。 |
idleTimeoutMs |
600000 |
等待新回答閉合的最長時間。 |
devTools |
false |
是否掛載驗證用迴環路由。 |
注意事項¶
- 文件附件:文件附件暫時拒絕。
- 載體形狀:靜默載體內容形狀由裝載時對已安裝適配器的一次探測決定(0.1.27)。如果無法證明適配器會丟掉空 user 消息,則使用零寬空格。
- 重放保真:重放時會丟棄
usage、內嵌 stream、系統消息等,只保留核心事件。 - 安全限制:宿主路由只限本機迴環,並校驗 Host 與 Origin。
結語¶
該插件通過中綴拼接的方式維護了模型的完整上下文,適合需要精細化調試或局部修正的場景。