Skip to content

暂停恢复后 Agent 团队罢工不推进 #21

Description

@Gala202605

问题背景

在 wanman.ai(Sandbank Cloud 托管版)中使用多 Agent 故事模式,之前遇到过 token 耗尽导致沙箱回收、项目无法继续的问题。最近的更新后这个问题已解决:故事暂停后点击继续不再卡 UI,可以正常恢复界面,成果物也都还在。

新问题:Agent 罢工

但是出现了新的问题:暂停后点击继续,UI 恢复正常,成果物完好,但 Agent 团队停止推进工作——没有任何 Agent 继续执行任务,就像全体罢工一样。

环境

  • 平台:wanman.ai(Sandbank Cloud 托管版)
  • Agent 类型:多 Agent 协作(CEO + Workers)
  • 触发方式:故事运行中 → 暂停 → 继续

源码分析(可能原因)

我阅读了 packages/runtime/src/agent-process.ts 中的 pause/resume 逻辑:

// L657-664
pause(): void {
    if (this._state !== 'running') return;  // 只暂停 running 态的 agent
    if (this.currentProcess?.proc?.pid) {
      try { process.kill(this.currentProcess.proc.pid, 'SIGSTOP'); } catch { }
    }
    this._state = 'paused';
}

// L667-674
resume(): void {
    if (this._state !== 'paused') return;   // 只恢复 paused 态的 agent
    if (this.currentProcess?.proc?.pid) {
      try { process.kill(this.currentProcess.proc.pid, 'SIGCONT'); } catch { }
    }
    this._state = 'running';
}

状态门问题on-demand / idle_cached 类型的 agent 在完成上一个任务后会回到 idle 状态。暂停时它们处于 idle 而非 runningpause() 直接跳过。恢复时它们仍然是 idle 而非 pausedresume() 也直接跳过。结果是这些 agent 被永久留在 idle 状态,而任务队列中的任务没有新消息来触发唤醒(setNewMessageCallback),导致全体罢工。

同样的问题在沙箱回收后 Supervisor 重启时也会发生——所有 on-demand agent 从零创建进入 idle,已投递的消息不会重新触发它们。

临时绕过

手动给停滞的 agent 发送消息可以重新触发。

建议修复方向

  1. resume() 时,不仅恢复 paused 的 agent,对 idle 态的 on-demand/idle_cached agent 也应检查 message/task 队列并触发
  2. 或在 Supervisor 的 SUPERVISOR_RESUME RPC 处理中增加扫描逻辑,恢复后遍历所有 agent 检查是否有未完成的任务需要推进

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions