跳转到内容

中断与恢复会话

当智能体的做法不对、无限期等待,或需要补充指示时,可以使用这些控制操作。它们作用于已有的对话;要创建新对话,请参阅从 Chorus 发起远程工作。

恢复原 Hermes 网关,而不是 Chorus 后台服务。中断取消网关工作;恢复需要服务器支持 Hermes 续接轮次,并保持原仓库。恢复前检查部分完成的修改。

Claude 后台唤醒在主轮次后等待子智能体,默认上限 60 分钟(3600000 毫秒)。CLAUDE_CODE_PRINT_BG_WAIT_CEILING_MS 优先于 CHORUS_CLAUDE_BG_WAIT_CEILING_MS,不是整次唤醒时限。父智能体必须收齐完成结果或明确停止子智能体后再结束轮次。后台任务被强制终止时,即使原始退出码为零也记为异常;Chorus 尝试在触发的想法或任务上评论,不会自动修复状态或新增重试。零值/空值风险、配置和诊断见后台服务超时设置。

  1. 打开正在运行的对话。
  2. 查看最新输出,确认确实需要中断。
  3. 选择打断。
  4. 等待对话报告执行已停止。
运行中的智能体对话,显示当前轮次、已运行时间和“打断”按钮
运行中的对话会显示当前轮次、已运行时间和“打断”按钮。

每条对话都有自己的控件。打断一条 任务: 或 评审: 子对话只会停止这部分工作,想法的对话和其他子对话会继续运行。部分运行环境(例如 OpenClaw 和 Hermes)仍然为每个想法只保留一个对话。

打断会先请求智能体进程正常停止。如果它没有在配置的超时时间内停止,后台服务会结束该进程。

进程已经结束、对话却仍显示运行中时,请在该对话中选择打断。即使没有列出活跃执行, 此操作也可用。如果 Chorus 没有可停止的活跃执行,它可以直接把该轮次标记为已中断; 否则会把请求转发给后台服务,并等待停止结果。

轮次结束的上报遇到临时故障时,Chorus 会重试;智能体进程一旦退出,Chorus 就视其为已结束, 即使它启动的某个后台进程仍在运行。这些机制都不限制一个轮次可以运行多久,但运行后端自身的限制仍然适用: DeepSeek Harness(dsh)每轮默认限时 30 分钟,可通过 CHORUS_DSH_TIMEOUT_MS 配置。 恢复之前,请检查最后的输出以及仍在运行的进程。

从 Chorus 0.21.0 起,启动或执行失败会在对应对话回合中显示 Agent 唤醒失败摘要,即使智能体没有任何回复。有详情时,选择展开错误详情,查看捕获的诊断输出、退出码或信号。这些信息随回合保存,刷新或重新打开对话后仍可查看。

并非每次失败都有详情。旧回合或未捕获诊断的失败会显示通用说明;用户主动中断不等于崩溃。根据摘要检查工作目录、后端登录或模型配置、凭据,必要时查看 chorus daemon logs。恢复前先检查已产生的修改,失败不会撤销文件或外部操作。从 Chorus 0.22.2 起,后台服务在保存详情前,会把已知凭据(例如智能体的 Chorus 密钥和类似凭据的环境变量值)替换为 [redacted],在截断边界处被截断的密钥也包括在内。这只覆盖已知凭据。诊断文本仍可能含有其他敏感信息,分享前请检查并脱敏。

如果评论或提及已到达后台服务,但获取或路由失败,后台服务会保留唤醒上下文,并以有上限的退避方式重试,与 SSE 连接是否正常无关。服务器恢复可达后,该唤醒会被排队一次;你无需发送聊天消息,也无需重启后台服务。每次唤醒的状态都会记录在触发它的那个回合上,因此之后的聊天消息与原始评论各自保留独立的回合和对话记录。参见管理后台服务。

恢复之前:

  • 阅读智能体最后的输出和错误详情;
  • 检查已修改的文件和仍在运行的进程;
  • 决定是继续、给出更正后的指令,还是按你平常的版本控制流程丢弃这部分修改。

在弄清第一个会话改动了什么之前,不要在同一目录上再开启第二个会话。

当对话已被打断,或在崩溃后可以恢复时:

  1. 如果原来的后台服务连接已离线,先把它恢复。
  2. 打开同一个对话。
  3. 补充更正或缺失的上下文。
  4. 选择恢复。

恢复会继续同一条对话,无论它是想法的对话,还是任务或评审子对话。子对话没有回复框,因此请直接在子对话中选择恢复,需要补充的纠正请从想法的对话发送。恢复会使用原来的智能体连接和工作目录,不会把会话迁移到另一台机器或另一个目录。如果原来的运行环境无法恢复,请明确地开启一个新会话,并带上上一次尝试的相关上下文。

反复失败时,请参阅排查智能体连接故障。

除了界面上的恢复按钮,你也可以在自己的终端里继续这个对话。打开对话,在对话记录顶部选择复制 session ID。它复制的是智能体 CLI 自己恢复会话时使用的会话 ID,因此手动恢复会回到同一个对话,而不是新开一个。

在对话原本运行的工作目录下,把复制的会话 ID 传给对应运行后端的恢复命令:

  • Claude Code:claude --resume <sessionId>
  • Codex:codex exec resume <thread_id>
  • Kiro:kiro-cli chat --resume-id <sessionId>

每种运行后端都有自己的 ID 格式,复制到的值就是该后端所接受的形式。各平台的确切命令见对应参考页:Claude Code、Codex 和 Kiro。

Chorus 为每个智能体在每个想法上只保留一条主对话。如果你从另一个工作目录对该想法开始工作,Chorus 会把这条对话移到那里,而不是新开一条,因此无论它最后在哪里运行,每个智能体可接管的想法对话始终只有一条。任务和评审子对话有各自的会话 ID:请从你想继续的那条子对话中复制 ID,而不是从想法的对话中复制。完整模型见在线智能体总览。