状态与交互
所有形象共享同一套状态机、动画和跟随逻辑,只在外观渲染上有所不同。
七种状态
| 状态 | 气泡 | 表现 | 跟随鼠标 |
|---|---|---|---|
idle | 发呆中… | 安静呼吸浮动 | 否 |
working | 努力干活! | 锐利眼神、双手快速敲打 | 否 |
question | 嗯? | 歪头、大小眼、问号 | 是,光标侧方 |
error | 呜呜…出错了 | 橙色警示、下撇嘴、警示三角 | 是,光标侧方 |
happy | 太棒了! | 弯月笑眼、跳跃、举手 | 否 |
done | 任务完成! | 开心动作与撒花 | 是,光标正下方 |
sneaky | 暗中使劲… | 搓手、东张西望 | 否 |
关键切换规则
开心是短暂状态
PostToolUse 触发 happy。约 6 秒后,如果没有其他状态接替,会自动回到 working。
error 不属于临时状态。工具失败、429 或过载等错误会持续显示,直到新事件明确改变状态。
等待回答时不被普通工作覆盖
进入 question 后,普通的 working 不会打断它。只有 happy、error、done、sneaky 或 idle 等结果态可以退出疑问状态,避免等待用户确认时表情来回跳动。
后台任务仍在跑时会“暗中使劲”
收到 Stop 时,程序会读取事件携带的 transcript,检查已经启动但尚未结束的后台任务:
- 仍有任务运行:进入
sneaky,并记录 transcript 路径; - 每约 5 秒重新检查一次;
- 全部后台任务完成后:自动转为
done,不必等待额外的Stop。
鼠标跟随有缓冲时间
question、error 和 done 会跟随鼠标,但进入状态后有约 4 秒缓冲。光标已经位于宠物窗口内时,宠物不会继续移动;拖拽和双击暂停也会优先于跟随。
单个宠物操作
| 操作 | 效果 |
|---|---|
| 左键拖拽 | 移动宠物位置 |
| 左键双击:普通状态 | 显示或隐藏气泡 |
左键双击:question / error / done | 暂停或恢复鼠标跟随 |
| 右键 | 打开宠物菜单 |
宠物右键菜单包括:
- 当前状态与会话标题(只读);
- 显示或隐藏气泡;
- 复制完整 Hooks 配置;
- 切换当前实例的形象;
- 关闭此宠物,不影响其他会话和托盘进程。
托盘菜单
| 菜单项 | 作用 |
|---|---|
| 复制配置 | 复制当前端口对应的完整 HTTP Hooks 配置 |
| 停止 Hooks 监听 | 保持 HTTP 服务在线并正常应答,但丢弃收到的事件;图标变灰 |
| 恢复 Hooks 监听 | 恢复处理后续事件,图标恢复彩色 |
| 关闭所有 | 关闭全部宠物,保留托盘进程 |
| 关闭完成 | 只关闭当前状态为 done 的宠物,sneaky 等其他状态保留 |
| 退出 | 关闭所有宠物并结束整个程序 |
手动关闭某个宠物后,如果同一会话再收到事件,管理器会按当前规则重新创建对应实例。