macOS 菜单栏应用通过图标和状态行显示智能体的工作状态,让用户随时了解 OpenClaw 的运行情况。
概述
OpenClaw 菜单栏应用显示智能体的实时状态,包括正在执行的任务、健康检查状态等信息。菜单栏会根据智能体的活动状态动态更新图标和文本。
状态显示规则
优先级
- "Main" 会话始终优先显示
- 健康状态仅在空闲时显示
- 设备(Nodes)显示,而非客户端(Clients)
会话管理
会话通过 runId 和 sessionKey 标识,默认优先显示 main 会话。
图标状态
状态类型
idle- 空闲状态workingMain(ActivityKind)- 主会话工作中workingOther(ActivityKind)- 其他会话工作中overridden(ActivityKind)- 覆盖状态
视觉效果
- workingMain: 动画效果 + 完整色调
- workingOther: 柔和色调 + 无动画
- idle: 静态图标
活动类型与图标
| 活动类型 | 图标 | 描述 |
|---|---|---|
exec |
💻 | 执行命令 |
read |
📄 | 读取文件 |
write |
✍️ | 写入文件 |
edit |
📝 | 编辑文件 |
attach |
📎 | 附加资源 |
| 其他 | 🛠️ | 通用工具 |
状态文本格式
显示格式
状态文本使用 · 作为分隔符,显示简短标签:
# 主会话示例
Main · exec: pnpm test
# 其他会话示例
Other · read: apps/macos/Sources/OpenClaw/AppState.swift
# 空闲状态
Idle · Health: OK
文本组成
- 会话标识: Main / Other
- 活动类型: exec / read / write / edit 等
- 详细信息: 命令或文件路径
节点与上下文
节点(Nodes)
菜单栏的 "Nodes" 部分显示设备信息,而非客户端信息。
上下文(Context)
"Usage" 信息显示在 Context 部分,包含提供者数据。
事件来源
控制通道
状态更新来自控制通道的 agent 流:
job事件 - 执行状态tool事件 - 工具阶段
标签解析
系统会解析 args.command 或文件路径生成状态标签。
调试功能
图标覆盖
开发时可以通过 @AppStorage("iconOverride") 覆盖图标状态进行测试。
测试要点
- 状态切换稳定性
- 无闪烁效果
- 正确的降级回退
使用场景
- 快速查看智能体当前状态
- 监控任务执行进度
- 区分主会话和后台会话
- 健康状态一览