跳转至

菜单栏图标状态

适用范围:macOS 应用(apps/macos)。渲染:CritterIconRenderer.makeIcon(...)。动画/状态连接:CritterStatusLabel + CritterStatusLabel+Behavior.swift。

Dock 图标

在 Mac 应用的仪表盘中,通过设置 → 本机 → Dock 图标选择 Dock 图标:

  • Original(默认):纸片底衬上的原版 Molty 剪影。
  • Heritage:旧版 README 中的龙虾,举起螯爪。
  • Clawmark:粗壮、立体感强的龙虾螯钳。
  • Origami:折叠出多个切面的 Molty。
  • Pincer:单一螯钳剪影,腕部圆润流畅。
  • Open C:圆形螯爪,带有两个相对的钳尖。

每种设计都有浅色和深色版本。 在 macOS 26 及更高版本中,Original 使用原生图标样式,包括系统设置 → 外观 → 图标与小组件样式中的设置。要自动切换,请在那里选择深色 → 自动;否则默认图标样式即使应用窗口为深色时也可能保持浅色。在较旧的 macOS 版本上,Original 会在应用运行期间跟随浅色/深色外观。

其他设计在 OpenClaw 运行期间跟随 macOS 的浅色/深色外观。

选择会按每个 OpenClaw 配置文件分别保存,并立即生效。 自定义设计会更改正在运行的应用的 Dock 图标;退出后,Finder 和 Dock 磁贴会使用随附的 Original 图标。菜单栏小动物及其动画是独立的。

Original 的源文件是 apps/macos/Icon.icon;其他矢量设计位于 apps/macos/AppIconDesigns。编辑后,使用 bash scripts/generate-mac-app-icons.sh 重新生成成对图标,并使用 bash scripts/generate-mac-app-icons.sh --check 验证。生成器负责自定义深色背景和单色前景颜色,Apple 的资源编译器提供 macOS 蒙版和内边距。打包时还会编译主要的 Icon Composer 文档以支持原生样式。

状态

状态 触发条件 视觉效果
空闲 默认 正常眨眼/摆动动画;睁眼时保持光泽高光
暂停 isPaused=true 触角下垂(“下班”状态),眼睛睁开;无动作
睡眠 Gateway 已断开连接/未配置 触角下垂,眼睛闭合为 ⌣ ⌣ 眼睑;无动作
庆祝 消息已发送(sendCelebrationTick) 眼睛闪现快乐的 ∩ ∩ 弧线约 0.9 秒,并踢一下腿
语音唤醒(大耳朵) 听到唤醒词 触角竖直竖起并变高(earScale=1.9);静音后恢复
工作 isWorking=true 或存在活动的 IconState 腿部摆动加快(legWiggle 最高 1.0),并带轻微水平偏移;与空闲摆动叠加

当会话有活动作业或工具时,工具活动徽章(SF Symbol 图形,例如用于 exec 的 chevron.left.slash.chevron.right)可渲染在同一个宠物图标之上。该徽章来自 IconState/ActivityKind;完整状态模型见 菜单栏。

语音唤醒耳朵

  • 触发:AppStateStore.shared.triggerVoiceEars(ttl: nil),由语音唤醒采集管道(VoiceWakeRuntime)以及语音唤醒调试/测试工具(VoiceWakeTester、VoiceWakeOverlayController)调用。
  • 停止:stopVoiceEars(),在采集完成时调用。
  • 结束前的静音窗口:通常为 2.0s;如果只听到触发词且之后没有后续语音,则为 5.0s(VoiceWakeRuntime.silenceWindow / triggerOnlySilenceWindow)。
  • 在增强期间,空闲的眨眼/摆动/腿部/耳朵计时器会被暂停(earBoostActive 在 CritterStatusLabel+Behavior 中作为动画任务的门控)。

形状与尺寸

  • 画布:18x18pt 模板图像,渲染到 36x36px 位图后备存储(2x),确保图标在 Retina 上保持清晰。
  • 耳朵缩放默认为 1.0;语音增强会将 earScale 设为 1.9,且不会改变整体框架。
  • antennaDroop(0-1)将触角向下折叠,用于暂停和睡眠姿态。
  • 腿部疾走使用最高 1.0 的 legWiggle,并伴有轻微水平抖动。

行为说明

  • 耳朵或工作状态没有外部 CLI/代理切换开关;两者均由应用内部信号驱动(AppState.setWorking、AppState.triggerVoiceEars),以避免意外抖动。
  • 任何新增 TTL 都应保持较短(远低于 10 秒),以便在作业挂起时图标能快速回到默认状态。

本页原文 Markdown:在 AtomGit 查看·内容源自开源项目 cl/openclaw