前言¶
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。
结语¶
该插件通过中缀拼接的方式维护了模型的完整上下文,适合需要精细化调试或局部修正的场景。