AI 简明手册
DeepSeek Harness 源码解读 · 会话与循环按下 Esc 后,系统怎样取消和恢复

按下 Esc 后,系统怎样取消和恢复

先设定故障

DSH 取消是显式传递的线:每轮新建 AbortController,Esc 清空 inbox 并 abort。崩溃重启不截断,补错误占位并合成 interrupted 边界。

失败如何传播

  1. 取消权随轮次走

    取消权随轮次走,同一 signal 发给各边界,循环在每个 await 边界检查。中断也记平账:catch 定 aborted,finally 写 turn/end。取消原因不落日志。

    [repo]

  2. 恢复补齐而非截断

    恢复时不直接截断日志:先补悬空工具结果占位,再关闭 step,最后合成标为 interrupted 的 turn/end。只读或幂等操作才可重试,有副作用的操作要先核实;活跃会话的加载流程不会等待历史会话修复完成。

    [repo]

恢复与防线

  • 崩溃恢复时合成的 closer 有差异吗: 流式输出中只需关 step 和 turn/end;工具执行中还需先补 tool/result。

  • 为何取消失效跨轮次: 每轮用新 AbortController,旧 signal 无法取消新一轮任务。

仍会失效的地方

  • 本页结论对应 revision 0a53fb55bea101816fa226bb964ae2bed71c343b。文件位置、命名和默认行为可能随版本变化,引用实现细节时应同时记录 commit。

来源与核验

  1. [repo] DeepSeek Harness 官方源码(固定 revision)
  2. [official] DeepSeek Harness 官方介绍

Revision:0a53fb55bea101816fa226bb964ae2bed71c343b · 核验日期:2026-08-31