智能体名册
工作区侧边的二十个智能体,每个都有自己的脸。
先看效果
三行加一个群组。每一行从注册表读取状态,并根据宿主自己的数据显示状态点与徽标;按钮代替真实宿主会发布的事件。
Nova
Atlas
Iris
holdState 优先于事实,所以庆祝会盖在这一行已知的任何东西之上,存活时间一到就交还。WorkingBadge 有意与角色分开:一行可以在忙而脸不必表现出来,这正是让长列表保持安静的方法。
什么时候用
工作区侧边那一列智能体:有谁、谁在忙、谁有东西要给你。角色在这里首先是身份——由智能体 id 推导出的一张稳定的脸,什么都不用存——其次才是状态。二十行同时在屏幕上,任何会动的东西都得配得上它占的注意力,而且所有行共用一个舞台。
用到的组件
AgentAvatar——照片、群组簇或角色,按智能体记录自动选择。AvatarStack——群组成员,每一个都按自己的轮廓从后一个身上抠出。AvatarStatusDot与UnreadBadge——角落里的在线状态与计数。WorkingBadge——三个错相的点,给那些在忙、但脸不必动的行。useMarkCommands——holdFacts、holdState、releaseState;名册和对话读的是同一份注册表。MarkStageProvider——二十个空闲的果冻只花一个引擎。
状态怎么走
用 useMarkCommand(id, 'avatar') 读取注册表。表面很重要:composing 的事实在头像上会解析为 idle,因为正在写的回复在对话里是重点,在二十张脸的列表里是噪音。
每个状态的样子
| 状态 | 眼睛 | 嘴 | 特效 | 编号 | HUD | |
|---|---|---|---|---|---|---|
idle空闲 | dot → dot → dot → dotLeft → dot → dotRight | none | — | 02 | — | |
working工作 | dotDown → dot → dotDown | none | arc | 1632 | gauge | |
waiting等待 | dot → dotLeft → dot → dotRight | none | ellipsis | 48 | timer | |
notifying通知 | dotWide → arch → dot | dot | — | 50 | notify | |
celebrate庆祝 | star → archWide → wink → arch | grin | sparkle | 2533 | kpi | |
sleeping睡眠 | curve | none | zz | 00 | clock |
waiting 把身体交给 orbit 腰带;notifying 保留身体,改为点亮角落的徽标。idle 在三条频率互不相关的正弦波上眨眼和张望,所以一行待上十分钟也不会出现循环。
接下来
- AgentAvatar——每个 id 一张固定的脸
- AvatarStack——重叠的群组头像
- 徽标与状态——未读数与状态点