文档 · 状态
状态
每个会话的 tmux 面板每两秒轮询一次,每次轮询得出一个状态,该行用一个带颜色的标记来表示它。
| 标记 | Compatible | 状态 | 含义 |
|---|---|---|---|
| ◐ | * | working | 智能体正在进行一个回合。 |
| ◆ | ? | waiting | 在等你:一个对话框、一次权限请求,或一个纯文本问题。 |
| ● | + | finished | 回合已结束。这是一个提醒,会变回 idle,时机是你进入该会话后,或按下 . 时。 |
| ✕ | x | errored | 工具报告了一个错误。 |
| ○ | . | idle | 没有任何东西在运行。 |
| ✕ | x | dead | tmux 会话已不存在。该行保留。 |
| ◌ | ~ | starting | 面板仍在启动中。 |
第一列是默认的 Advanced 标记。设置 → symbols 可切换为
Compatible,即为无法显示其他字符的字体准备的纯 ASCII 标记。在该模式下,启动中的行会显示
ASCII 旋转动画,分组用 > 和 v 表示折叠和展开,Y 标记 worktree 分支或分叉。
面板规则
检测时会用每个工具各自的正则规则匹配面板的可见内容,读取最新的回合来区分
finished 和 waiting,并把两次轮询之间发生变化的输出视为
working。没有任何总结行就结束的回合也能得出结果:一个
working 面板安静下来就算作 finished,如果最后停在一个问题上则算作
waiting。
持续时间超过启动它的回合、并会向智能体回报结果的工作(后台智能体、动态工作流,以及
Claude Code 移到后台的 MCP 调用)由 busy_line 匹配,因此在这些工作运行期间,回合结束时的总结仍会读作 working。留下后台 shell 或监视器在运行的回合会像其他回合一样结束,而当那个 shell 唤醒智能体时,随后的回合在结束前都读作
working。用量或速率限制横幅(limit_line)读作
errored。你在会话内部时轮询也会继续,所以状态始终是实时的。列表中的 dead 行或打开着的审查,会让轮询保持两秒的间隔。在 v0.43.2 之前,这两种情况都会让轮询器空转,因为每次轮询排队的工作在完成时又会请求一次新的轮询。
Claude Code hook
对 Claude Code 而言,状态是第一手信息而不是推断出来的。会话启动时带有一个生成的
--settings 文件,其中的
hook 把生命周期状态写入每个会话各自的状态文件,轮询器会优先读取它。Claude Code 的配置为此把
status_source 设为 claude-hooks。
StopFailure 的原因为 rate_limit 时,会写入 errored。面板规则仍会对其进行修正,因为 hook 看不到纯文本问题、Esc 中断或错误行,所以匹配到的面板判断会覆盖 hook 状态。当 hook 文件缺失或过期时,面板规则会完全接管。
阅读列表
每一行都内联显示状态和工具,折叠的分组会保留每种状态的计数,所以收起的子树依然能告诉你其中是否有需要你处理的会话。按 w,列表只保留 waiting、finished 和 errored 的行。再按一次显示完整的树。选中一个会话时,右侧会显示其面板的末尾部分,这样无需进入(attach)就能看到一个
waiting 智能体实际提出的问题。有其他智能体发来、正等待输入的消息时,该会话会显示
✉(Compatible 下为 @)以及名称旁的计数;请求在回合结束后归档或结束的会话会显示
↓ 或 ■(A 或 K),直到管理器执行该操作,或 c 将其取消。
通知
当一个会话的状态变为 waiting 或 errored 时,管理器会发出一条通知,每次状态转换只发一次。标题包含会话名称、它运行所在的目录、管理器为它创建了 worktree 时的分支,以及工具。worktree 会显示它所切出的仓库名。标题形如
deploy · api · am/fix-login · codex。横幅引用会话行上显示的那一行内容。waiting 的横幅带上智能体正在问的问题,例如
◆ Waiting: Do you want to create probe.txt?。finished 的横幅带上该行显示的提示词,例如 ● Finished: write three sentences about rivers。引用只有一行,截断到 120 个字符。如果该行没有可引用的内容,waiting 横幅保持为
◆ Waiting for your input,finished 横幅保持为 ● Finished。errored 横幅保持为 ✕ Errored。设置中的 notifications
行可以关闭通知(默认开启),notify on finish 行可以加入
finished 转换(默认关闭)。
在 macOS 上,桌面通知为 waiting、finished 和 errored 使用不同的提示音。Linux 通过
notify-send 发送相应的提示。在 Ghostty 或 cmux 中,状态以 OSC 777
转义序列发给负责绘制的终端,因此当管理器通过 SSH 运行在远程主机上时也能通知到你。在 WSL 下,横幅是通过
PowerShell 发出的原生 Windows 通知。其他终端使用操作系统的桌面通知,没有桌面的无头机器则退回到终端响铃。
每次通知时还可以运行一条 shell 命令。用
agent-manager settings set notify_command '<command>' 设置,用空值清除。它没有对应的设置行。管理器在横幅之后运行它,macOS 和 Linux 上通过
sh -c,Windows 上通过 PowerShell,并且受同样两个设置行控制。事件通过环境变量传入:AM_NOTIFY_KIND、AM_SESSION_ID、AM_SESSION_NAME、AM_TOOL、AM_CWD、AM_BRANCH、AM_TITLE
和 AM_BODY。在 Windows 上读作 $env:AM_BODY 等形式。运行超过 15 秒的命令会被停止。失败信息写入配置目录中的
notify-command.log,管理器照常运行。第一次设置命令以及每次修改命令时,会先显示一条 New notify command 横幅展示该命令,然后才运行它。