Skip to content

Menu Bar

  • We surface the current agent work state in the menu bar icon and in the first status row of the menu.
  • Health status is hidden while work is active; it returns when all sessions are idle.
  • The “Nodes” block in the menu lists devices only (paired nodes via node.list), not client/presence entries.
  • A “Usage” section appears under Context when provider usage snapshots are available.
  • Sessions: events arrive with runId (per-run) plus sessionKey in the payload. The “main” session is the key main; if absent, we fall back to the most recently updated session.
  • Priority: main always wins. If main is active, its state is shown immediately. If main is idle, the most recently active non‑main session is shown. We do not flip‑flop mid‑activity; we only switch when the current session goes idle or main becomes active.
  • Activity kinds:
    • job: high‑level command execution (state: started|streaming|done|error).
    • tool: phase: start|result with toolName and meta/args.
  • idle
  • workingMain(ActivityKind)
  • workingOther(ActivityKind)
  • overridden(ActivityKind) (debug override)
  • exec → 💻
  • read → 📄
  • write → ✍️
  • edit → 📝
  • attach → 📎
  • default → 🛠️
  • idle: normal critter.
  • workingMain: badge with glyph, full tint, leg “working” animation.
  • workingOther: badge with glyph, muted tint, no scurry.
  • overridden: uses the chosen glyph/tint regardless of activity.
  • While work is active: <Session role> · <activity label>
    • 範例:Main · exec: pnpm testOther · read: apps/macos/Sources/OpenClaw/AppState.swift
  • 閒置時:回退到健康摘要。
  • 來源:control‑channel agent 事件(ControlChannel.handleAgentEvent)。
  • 解析欄位:
    • 帶有 data.statestream: "job",用於開始/停止。
    • 帶有 data.phasename、可選 meta/argsstream: "tool"
  • 標籤:
    • execargs.command 的第一行。
    • read/write:縮短的路徑。
    • edit:路徑加上來自 meta/diff 計數的推斷變更類型。
    • 回退:工具名稱。
  • Settings ▸ Debug ▸ “Icon override” 選擇器:
    • System (auto)(預設)
    • Working: main(依工具種類)
    • Working: other(依工具種類)
    • Idle
  • 透過 @AppStorage("iconOverride") 儲存;對應到 IconState.overridden
  • 觸發主要 session 工作:驗證圖示立即切換,且狀態列顯示主要標籤。
  • 在主要 session 閒置時觸發非主要 session 工作:圖示/狀態顯示非主要;保持穩定直到完成。
  • 在其他作用中時啟動主要 session:圖示立即切換到主要。
  • 快速工具爆發:確保徽章不會閃爍(工具結果上的 TTL 寬限期)。
  • 所有 session 閒置後,健康列會重新出現。