进阶 onorca.dev 2026-10-18 18:52:10 · 17 阅读

第17章 Orca Agent 休眠机制:后台资源优化与会话恢复指南

Agent 休眠

Orca 会在后台 Agent 终端空闲时将其暂停,并在你重新打开 worktree 时自动恢复。当同时打开数十个 worktree 时,空闲的 Agent 会占用大量资源——每个 Agent 都是一个驻留内存中的活动 PTY,维持着模型会话。Agent 休眠功能允许 Orca 在 Agent 完成且长时间无交互后静默停止这些终端,下次打开该 worktree 时则恢复原有会话。

休眠对象

Orca 仅在满足以下所有条件时,才对 Agent 终端执行休眠:

* Agent 处于完成(done)状态——已结束上一轮交互,且不再等待输入。 * 该终端不属于当前活跃 worktree,也不在任何正在渲染前台终端的 worktree 中。 * Agent 结束后未接收过任何键盘输入。 * Agent 属于支持会话恢复的类型:Claude、Codex、Gemini、Antigravity、OpenCode、Pi、MiMo Code、Droid、Grok、Devin 或 OMP。 * 空闲时间已超过配置的闲置窗口期(默认 30 分钟)。 * 当前没有移动端会话正在驱动该终端。 * 没有未决的编排 Dispatch 任务(状态为 pending、dispatched 或 unknown)。只有在运行时确认任务 completed、failed 或 circuit_broken 后,才允许休眠。 * 该面板上不存在存活的 subagent / teammate(仅 provider 返回 "done" 是不够的,只要子进程仍挂载,就不能休眠)。

若终端未能通过上述任一检查,将继续保持运行。若 worktree 包含多个 Agent 面板,它们将作为一个整体进行休眠,以确保不会出现部分暂停 worktree 的情况。

你也可从侧边栏手动让 worktree 休眠(若存在嵌套子项,可使用“休眠及其后代”功能)。详见 Worktrees。手动休眠会保留已完成或被中断的可恢复会话,因此重新打开 worktree 时仍可使用相同的恢复参数启动——即使面板不再处于“活动”状态,也不会抹除这些会话记录。

调整闲置窗口期

在 Agent 休眠开关下方,“休眠后”设置项决定了完成的后台 Agent 需在空闲多少分钟后才会被 Orca 暂停。

* 默认值:30 分钟。 * 范围:1 分钟至 24 小时。

计时器从 Agent 最后一次完成更新开始;任何键盘输入、新输出产生或切换回该 Agent 的终端标签页都会重置计时。

较长的窗口期意味着用减少暂停次数换取内存节省;较短的窗口期则会更积极地暂停,但切换回时会增加恢复成本。

查找休眠中的 worktree

侧边栏的筛选菜单控制是否显示休眠中的 worktree。如果你经常隐藏它们,建议在“设置 → 快捷键”中为“切换休眠工作区”分配快捷键,以便在不打开筛选菜单的情况下显示或隐藏。

恢复会话

当你打开一个已休眠的 worktree 时,Orca 会使用与 Agent 会话历史中相同的恢复参数重新启动 Agent CLI——例如 `claude --resume `、`codex resume ` 等——从而使对话、工作目录及 provider 会话从断点处继续。无需点击任何按钮,恢复是终端回到前台时自动完成的一部分。

恢复过程还会复用 Orca 首次打开该 Agent 时所捕获的启动命令、参数及私有环境变量。

如果因任何原因 Agent CLI 无法恢复会话(如转录文件被删除、provider 轮换了会话 ID),终端将打开至全新提示符,而之前的转录文件仍保留在该 Agent 的会话历史中。

限制

仅支持休眠列表中列出的可恢复 Agent。Cursor CLI、Hermes、Copilot、Trae 及其他不支持恢复的终端将被保留运行状态。

后续步骤

* Agent 会话历史——手动恢复任意历史会话,包括 Orca 未执行休眠的会话。 * 热切换 Codex 账户——在不重启会话的情况下切换活跃的 Codex 登录,此功能可与休眠协同工作。

评论 (0)