按下 Esc 后,系统怎样取消和恢复
先设定故障
DSH 取消是显式传递的线:每轮新建 AbortController,Esc 清空 inbox 并 abort。崩溃重启不截断,补错误占位并合成 interrupted 边界。
失败如何传播
取消权随轮次走
取消权随轮次走,同一 signal 发给各边界,循环在每个 await 边界检查。中断也记平账:catch 定 aborted,finally 写 turn/end。取消原因不落日志。
[repo]
恢复补齐而非截断
恢复时不直接截断日志:先补悬空工具结果占位,再关闭 step,最后合成标为 interrupted 的 turn/end。只读或幂等操作才可重试,有副作用的操作要先核实;活跃会话的加载流程不会等待历史会话修复完成。
[repo]
恢复与防线
崩溃恢复时合成的 closer 有差异吗: 流式输出中只需关 step 和 turn/end;工具执行中还需先补 tool/result。
为何取消失效跨轮次: 每轮用新 AbortController,旧 signal 无法取消新一轮任务。
仍会失效的地方
本页结论对应 revision
0a53fb55bea101816fa226bb964ae2bed71c343b。文件位置、命名和默认行为可能随版本变化,引用实现细节时应同时记录 commit。
来源与核验
- [repo] DeepSeek Harness 官方源码(固定 revision)
- [official] DeepSeek Harness 官方介绍
Revision:0a53fb55bea101816fa226bb964ae2bed71c343b · 核验日期:2026-08-31