agent-robot-avatar 0.3.2 → 0.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +209 -124
- package/LICENSE +21 -21
- package/README.md +198 -446
- package/agent-robot-avatar.js +27 -25
- package/docs/README.de.md +185 -166
- package/docs/README.es.md +185 -225
- package/docs/README.fr.md +185 -225
- package/docs/README.ja.md +185 -225
- package/docs/README.ko.md +185 -225
- package/docs/README.pt.md +185 -225
- package/docs/README.ru.md +185 -0
- package/docs/README.zh-CN.md +202 -396
- package/docs/README.zh-TW.md +185 -227
- package/index.d.ts +141 -111
- package/package.json +79 -77
- package/src/agent-robot-avatar-actions.js +403 -400
- package/src/agent-robot-avatar-antenna.js +152 -152
- package/src/agent-robot-avatar-core.js +1155 -1152
- package/src/agent-robot-avatar-extension-host.js +78 -78
- package/src/agent-robot-avatar-failure.js +131 -131
- package/src/agent-robot-avatar-geometry.js +40 -40
- package/src/agent-robot-avatar-gestures.js +170 -0
- package/src/agent-robot-avatar-head-roundness.js +103 -103
- package/src/agent-robot-avatar-inspect.js +242 -242
- package/src/agent-robot-avatar-love.js +226 -0
- package/src/agent-robot-avatar-random.js +272 -0
- package/src/agent-robot-avatar-runtime.js +948 -860
- package/src/agent-robot-avatar-version.js +3 -3
- package/src/agent-robot-avatar-waiting.js +154 -121
- package/src/agent-robot-avatar-wrap.js +66 -0
- package/src/agent-robot-avatar-antenna-flash.js +0 -127
package/docs/README.zh-CN.md
CHANGED
|
@@ -1,396 +1,202 @@
|
|
|
1
|
-
# Agent Robot Avatar
|
|
2
|
-
|
|
3
|
-
<p align="center">
|
|
4
|
-
<img src="../assets/readme/agent-robot-avatar-header.jpg" alt="Agent Robot Avatar">
|
|
5
|
-
</p>
|
|
6
|
-
|
|
7
|
-
[English](https://github.com/CX-ArtLab/agent-robot-avatar/blob/main/README.md) | [简体中文](https://github.com/CX-ArtLab/agent-robot-avatar/blob/main/docs/README.zh-CN.md) | [
|
|
8
|
-
|
|
9
|
-
   
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
Agent
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
-
|
|
40
|
-
-
|
|
41
|
-
-
|
|
42
|
-
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
avatar
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
avatar.
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
avatar.play('
|
|
116
|
-
|
|
117
|
-
avatar.play('
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
avatar
|
|
131
|
-
```
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
## 睡眠唤醒策略
|
|
205
|
-
|
|
206
|
-
新增属性:
|
|
207
|
-
|
|
208
|
-
```html
|
|
209
|
-
<agent-robot-avatar wake-on="manual"></agent-robot-avatar>
|
|
210
|
-
```
|
|
211
|
-
|
|
212
|
-
| 值 | 行为 |
|
|
213
|
-
| --- | --- |
|
|
214
|
-
| `activity` | 默认值;保留原行为,页面指针/键盘活动可以自动唤醒头像。 |
|
|
215
|
-
| `interaction` | 只有直接与这个头像交互时自动唤醒;页面其他区域活动不唤醒。 |
|
|
216
|
-
| `manual` | 页面活动和头像交互都不会自动唤醒,由宿主显式控制。 |
|
|
217
|
-
|
|
218
|
-
显式调用仍保持显式语义:`avatar.play('wake')` 在所有模式下都可唤醒;`avatar.noteActivity()` 默认记录活动并唤醒,即使宿主是在真实 `keydown`、`pointerdown` 或 `click` 事件处理函数中调用它也一样。`noteActivity(false)` 只记录活动、不唤醒。页面环境活动与头像直接交互的自动唤醒会走独立来源并继续遵守 `wake-on`;自动唤醒的 `action-state` source 为 `automatic`,宿主显式唤醒仍为 `api`。其他程序动作可以按照动作语义离开睡眠;`reset()` 始终回到 `idle`。不同实例可以使用不同策略。
|
|
219
|
-
|
|
220
|
-
## 减少动态效果
|
|
221
|
-
|
|
222
|
-
新增:
|
|
223
|
-
|
|
224
|
-
```html
|
|
225
|
-
<agent-robot-avatar motion="auto"></agent-robot-avatar>
|
|
226
|
-
```
|
|
227
|
-
|
|
228
|
-
| 值 | 行为 |
|
|
229
|
-
| --- | --- |
|
|
230
|
-
| `auto` | 默认;遵循系统 `prefers-reduced-motion`,并响应运行期间的偏好变化。 |
|
|
231
|
-
| `reduce` | 保留可辨认的静态状态,减少持续、弹性和闪烁类动画。 |
|
|
232
|
-
| `full` | 始终使用普通动画,不受系统减少动态效果偏好影响。 |
|
|
233
|
-
|
|
234
|
-
reduce 模式会简化等待转圈、待机游走/眨眼、惯性跟随、弹性回弹、天线弹簧和闪烁等装饰动态,但 waiting / input 等语义生命周期仍持续存在,直到宿主结束或替换。自动睡眠使用独立、可取消的计时调度,不依赖持续绘制,因此 reduce 已暂停绘制时仍能按 `auto-sleep` 进入睡眠;用户活动和运行时修改超时会重新调度,waiting/input 不会被自动睡眠覆盖。影响画面的静态状态会先提交最终 SVG 再暂停,包括最终闭眼的 sleep 姿态。切换 motion 不会恢复已经被取消的旧动作,也不会改变 `action-state` 的语义。
|
|
235
|
-
|
|
236
|
-
## 鼠标 / 指针跟随
|
|
237
|
-
|
|
238
|
-
```js
|
|
239
|
-
avatar.setPointerFollow(false);
|
|
240
|
-
avatar.setPointerFollow(true);
|
|
241
|
-
```
|
|
242
|
-
|
|
243
|
-
高频指针更新会合并为每个动画帧最多处理最新位置一次,普通模式下的视线跟随保持不变。
|
|
244
|
-
|
|
245
|
-
## 移动端拖拽
|
|
246
|
-
|
|
247
|
-
头像交互区域使用 `touch-action: pinch-zoom`:单指移动交给头像拖拽逻辑,同时保留双指缩放能力;从头像外部开始的页面滚动仍按页面正常手势处理。
|
|
248
|
-
|
|
249
|
-
`pointercancel`、指针捕获丢失、reset、动作替换或卸载都会恢复形状,并且不会把手势取消误判成 `success` / `angry`。
|
|
250
|
-
|
|
251
|
-
## 天线闪动
|
|
252
|
-
|
|
253
|
-
```js
|
|
254
|
-
avatar.setAntennaFlash(true);
|
|
255
|
-
avatar.setAntennaFlash(false);
|
|
256
|
-
```
|
|
257
|
-
|
|
258
|
-
状态闪动默认关闭;reduce 模式会停止不必要的持续闪烁。
|
|
259
|
-
|
|
260
|
-
## 审视表情配置
|
|
261
|
-
|
|
262
|
-
可以在加载组件前配置:
|
|
263
|
-
|
|
264
|
-
```html
|
|
265
|
-
<script>
|
|
266
|
-
window.AgentRobotAvatarInspectConfig = {
|
|
267
|
-
aperture: 24,
|
|
268
|
-
scanOffset: 12,
|
|
269
|
-
};
|
|
270
|
-
</script>
|
|
271
|
-
<script type="module" src="./agent-robot-avatar.js"></script>
|
|
272
|
-
```
|
|
273
|
-
|
|
274
|
-
加载前已经提供的有效值会被保留,只对缺失或无效项补默认值。配置通过 `Number(...)` 转换并要求有限值;`aperture` 限制在 `6–40`,`scanOffset` 限制在 `0–24`,时间参数限制在对应的 `0/40–2400 ms` 范围。加载后仍可修改同一个 `window.AgentRobotAvatarInspectConfig` 对象,每次开始 inspect 时会再次规范化。默认配置的视觉效果保持不变。
|
|
275
|
-
|
|
276
|
-
## 头部圆角
|
|
277
|
-
|
|
278
|
-
```js
|
|
279
|
-
avatar.setHeadRoundness(0); // 更方
|
|
280
|
-
avatar.setHeadRoundness(50); // 默认
|
|
281
|
-
avatar.setHeadRoundness(100); // 更圆
|
|
282
|
-
|
|
283
|
-
console.log(avatar.getHeadRoundness());
|
|
284
|
-
```
|
|
285
|
-
|
|
286
|
-
输入值限制在 `0–100`。天线模块和圆角模块现在复用同一套头部扁平化几何计算,避免默认形状出现实现偏差。
|
|
287
|
-
|
|
288
|
-
`head-roundness-change`:
|
|
289
|
-
|
|
290
|
-
```js
|
|
291
|
-
avatar.addEventListener('head-roundness-change', (event) => {
|
|
292
|
-
console.log(event.detail.value);
|
|
293
|
-
});
|
|
294
|
-
```
|
|
295
|
-
|
|
296
|
-
## `face-state` 视觉事件
|
|
297
|
-
|
|
298
|
-
```js
|
|
299
|
-
avatar.addEventListener('face-state', (event) => {
|
|
300
|
-
console.log(event.detail.state);
|
|
301
|
-
});
|
|
302
|
-
```
|
|
303
|
-
|
|
304
|
-
该事件继续用于视觉同步和旧接入;涉及真实 Agent 生命周期和无障碍播报时优先使用 `action-state`。
|
|
305
|
-
|
|
306
|
-
## 基础属性
|
|
307
|
-
|
|
308
|
-
```html
|
|
309
|
-
<agent-robot-avatar
|
|
310
|
-
size="160px"
|
|
311
|
-
color="#08090b"
|
|
312
|
-
auto-sleep="30000"
|
|
313
|
-
wake-on="activity"
|
|
314
|
-
motion="auto">
|
|
315
|
-
</agent-robot-avatar>
|
|
316
|
-
```
|
|
317
|
-
|
|
318
|
-
| 属性 | 说明 |
|
|
319
|
-
| --- | --- |
|
|
320
|
-
| `size` | 正像素尺寸;支持 `140` 和 `140px`。不支持的单位、非法字符串、0、负数和非有限值统一回退到 `112px`。 |
|
|
321
|
-
| `color` | 头像主色。 |
|
|
322
|
-
| `auto-sleep` | 无操作后自动睡眠的毫秒数;`0` 关闭。 |
|
|
323
|
-
| `wake-on` | `activity`(默认)、`interaction`、`manual`。 |
|
|
324
|
-
| `motion` | `auto`(默认)、`reduce`、`full`。 |
|
|
325
|
-
|
|
326
|
-
动态修改尺寸后,拖拽坐标和指针跟随会使用当前实际布局尺寸。
|
|
327
|
-
|
|
328
|
-
## 默认行为
|
|
329
|
-
|
|
330
|
-
普通模式下继续保留随机眨眼、轻微视线活动、指针跟随、头部惯性和自然回待机等既有风格。开启 reduce 后会简化这些装饰动作。
|
|
331
|
-
|
|
332
|
-
## 拖拽交互
|
|
333
|
-
|
|
334
|
-
- 空闲状态大幅向外拉:恢复后触发 `angry` 视觉反馈
|
|
335
|
-
- 空闲状态大幅向中心挤压:恢复后触发 `success` 视觉反馈
|
|
336
|
-
- 小幅拖动:只产生形变
|
|
337
|
-
- 程序动作活跃时:可以形变,但拖拽表情不覆盖程序动作
|
|
338
|
-
- reset / 新动作 / pointercancel / 丢失捕获 / 卸载:统一取消旧拖拽后续反应
|
|
339
|
-
|
|
340
|
-
## 不可见暂停与性能
|
|
341
|
-
|
|
342
|
-
组件在自身或父容器没有可见布局区域、或离开视口后暂停持续帧绘制;重新可见时按当前有效状态恢复,不补播已经失效的动作。有限动作的计时和 Promise 不依赖持续绘制,因此不会因为不可见而无限挂起。
|
|
343
|
-
|
|
344
|
-
指针移动按动画帧合并,只处理每帧最新位置。现有页面隐藏和稳定 sleep 暂停机制继续保留;实例卸载时会清理观察器与媒体查询监听。
|
|
345
|
-
|
|
346
|
-
## 交互 Demo
|
|
347
|
-
|
|
348
|
-
`demo/index.html` 是完整交互 Demo,包含全部公开表情、指针跟随、拖拽形变、等待生命周期、圆角、颜色与模拟 Agent 对话状态。Demo 专用 JavaScript 与 npm 运行时保持分离。
|
|
349
|
-
|
|
350
|
-
## 项目结构
|
|
351
|
-
|
|
352
|
-
```text
|
|
353
|
-
agent-robot-avatar.js 正式组件入口
|
|
354
|
-
src/ 可复用组件运行时与表情模块
|
|
355
|
-
demo/ 完整交互 Demo 与 Demo 专用辅助脚本
|
|
356
|
-
examples/ 最小集成与无障碍示例
|
|
357
|
-
assets/support/ 支持项目 / 支付二维码素材
|
|
358
|
-
docs/ 多语言文档
|
|
359
|
-
README.md 英文主文档
|
|
360
|
-
CHANGELOG.md 正式版本记录
|
|
361
|
-
CONTRIBUTING.md 贡献指南
|
|
362
|
-
package.json 包与分发元数据
|
|
363
|
-
LICENSE MIT License
|
|
364
|
-
```
|
|
365
|
-
|
|
366
|
-
## 分发
|
|
367
|
-
|
|
368
|
-
软件包以 `agent-robot-avatar` 名称发布到 npm。npm 包包含公开入口、TypeScript 类型声明、`src/` 运行时、文档和支持项目素材;Demo 专用文件和测试文件不会进入运行时包。
|
|
369
|
-
|
|
370
|
-
## 兼容性与验证
|
|
371
|
-
|
|
372
|
-
面向支持 ES Modules、Custom Elements、SVG、Pointer Events、Web Animations API、`IntersectionObserver`、`ResizeObserver` 和 `matchMedia` 的现代浏览器。
|
|
373
|
-
|
|
374
|
-
自动浏览器测试覆盖 Chromium、Firefox 和 WebKit;移动端拖拽取消另外使用 Chromium 可信触摸模拟验证。真实手机是否验证以对应 PR / 发布说明为准。
|
|
375
|
-
|
|
376
|
-
## 参与贡献
|
|
377
|
-
|
|
378
|
-
欢迎提交 Issue 和 Pull Request。提交修改前请先阅读 [`CONTRIBUTING.md`](../CONTRIBUTING.md)。
|
|
379
|
-
|
|
380
|
-
## 项目状态
|
|
381
|
-
|
|
382
|
-
v0.3.2 是当前公开版本。当前刻意保持较小的公开 API,以便在未来 `1.0.0` 稳定性承诺之前继续谨慎演进。
|
|
383
|
-
|
|
384
|
-
Agent Robot Avatar 为独立开发的开源项目,不隶属于、代表或获得任何 AI 平台或品牌的官方背书。
|
|
385
|
-
|
|
386
|
-
## License
|
|
387
|
-
|
|
388
|
-
MIT License。详见 [`LICENSE`](../LICENSE)。
|
|
389
|
-
|
|
390
|
-
## 请我喝杯咖啡
|
|
391
|
-
|
|
392
|
-
如果这个项目对你有帮助,也可以请我喝杯咖啡:
|
|
393
|
-
|
|
394
|
-
| Ko-fi | 支付宝 | 微信支付 |
|
|
395
|
-
| --- | --- | --- |
|
|
396
|
-
| <a href='https://ko-fi.com/P0E625WIOI' target='_blank'><img height='36' style='border:0px;height:36px;' src='https://storage.ko-fi.com/cdn/kofi6.png?v=6' border='0' alt='Buy Me a Coffee at ko-fi.com' /></a> | <img src="../assets/support/alipay.png" alt="支付宝收款码" width="160"> | <img src="../assets/support/wechat-pay.png" alt="微信支付收款码" width="160"> |
|
|
1
|
+
# Agent Robot Avatar
|
|
2
|
+
|
|
3
|
+
<p align="center">
|
|
4
|
+
<img src="../assets/readme/agent-robot-avatar-header.jpg" alt="Agent Robot Avatar">
|
|
5
|
+
</p>
|
|
6
|
+
|
|
7
|
+
[English](https://github.com/CX-ArtLab/agent-robot-avatar/blob/main/README.md) | [简体中文](https://github.com/CX-ArtLab/agent-robot-avatar/blob/main/docs/README.zh-CN.md) | [Español](https://github.com/CX-ArtLab/agent-robot-avatar/blob/main/docs/README.es.md) | [Русский](https://github.com/CX-ArtLab/agent-robot-avatar/blob/main/docs/README.ru.md) | [Français](https://github.com/CX-ArtLab/agent-robot-avatar/blob/main/docs/README.fr.md) | [Português](https://github.com/CX-ArtLab/agent-robot-avatar/blob/main/docs/README.pt.md) | [Deutsch](https://github.com/CX-ArtLab/agent-robot-avatar/blob/main/docs/README.de.md) | [日本語](https://github.com/CX-ArtLab/agent-robot-avatar/blob/main/docs/README.ja.md) | [한국어](https://github.com/CX-ArtLab/agent-robot-avatar/blob/main/docs/README.ko.md) | [繁體中文](https://github.com/CX-ArtLab/agent-robot-avatar/blob/main/docs/README.zh-TW.md)
|
|
8
|
+
|
|
9
|
+
 [](../LICENSE) [](https://github.com/CX-ArtLab/agent-robot-avatar/actions/workflows/validate.yml) [](https://ko-fi.com/P0E625WIOI)
|
|
10
|
+
|
|
11
|
+
   
|
|
12
|
+
|
|
13
|
+
一个轻量、富表现力的机器人头像 Web Component,适用于 AI Agent 与交互式应用。
|
|
14
|
+
|
|
15
|
+
可用于 AI 助手、Agent 界面、桌面伙伴、虚拟宠物、数字吉祥物、聊天机器人头像及其他交互角色体验。
|
|
16
|
+
|
|
17
|
+
可用于 AI 助手、Agent 界面,包括类似 ChatGPT、Claude、Codex、Cursor、Grok Bot、Gemini CLI 和 OpenCode 的产品与体验。
|
|
18
|
+
|
|
19
|
+
使用 SVG 与原生 JavaScript 构建,以原生 Custom Element 运行,运行时零依赖。
|
|
20
|
+
|
|
21
|
+
Agent Robot Avatar 还可作为 AG-UI 风格 Agent 界面的视觉反馈层。
|
|
22
|
+
|
|
23
|
+
<p align="center">
|
|
24
|
+
<img src="../assets/demo/agent-robot-avatar-demo.gif" alt="Agent Robot Avatar 交互动画演示" width="560">
|
|
25
|
+
</p>
|
|
26
|
+
|
|
27
|
+
## 嵌入式眼睛版本(实验性)
|
|
28
|
+
|
|
29
|
+
独立的 C++11 眼睛表情核心,在机器人和开发板的屏幕上画出同样的 18 种表情。固件示例覆盖 26 种开发板与屏幕组合(ESP32、ESP32-S3、RP2040;ST7789、ST7735、GC9A01 圆屏、ILI9341/9342/9488、CO5300 AMOLED、ST7701S RGB 屏、SSD1306/SH1106 OLED,含 LilyGO、M5Stack、微雪、Seeed、乐鑫等开发板)。所有示例都在 CI 中编译通过,尚未实机验证;如果你在实物上试过,欢迎提交实机验证报告。
|
|
30
|
+
|
|
31
|
+
[查看硬件接入说明](https://github.com/CX-ArtLab/agent-robot-avatar/blob/main/embedded/README.zh-CN.md)。现有 Web 组件与 Demo 保持不变。
|
|
32
|
+
|
|
33
|
+
## 在线 Demo
|
|
34
|
+
|
|
35
|
+
[打开交互 Demo](https://cx-artlab.github.io/agent-robot-avatar/?lang=zh-CN)
|
|
36
|
+
|
|
37
|
+
## 特点
|
|
38
|
+
|
|
39
|
+
- 原生 Web Component
|
|
40
|
+
- SVG 渲染 + 原生 JavaScript
|
|
41
|
+
- 运行时零依赖
|
|
42
|
+
- 自动眨眼与轻微待机动作
|
|
43
|
+
- 眼睛跟随指针与头部惯性运动
|
|
44
|
+
- 果冻式局部拖拽形变与弹性恢复
|
|
45
|
+
- 按住挤压与可拖动的弹簧天线交互
|
|
46
|
+
- 可通过程序控制 Agent 状态与表情
|
|
47
|
+
- 支持 waiting、success、failure、warning、review、blocked、system error 等反馈
|
|
48
|
+
- 支持减少动态效果
|
|
49
|
+
- 可配置自动睡眠行为
|
|
50
|
+
- 可调头部圆角
|
|
51
|
+
- 可选天线状态闪烁
|
|
52
|
+
- 内置 TypeScript 类型声明
|
|
53
|
+
|
|
54
|
+
## 安装
|
|
55
|
+
|
|
56
|
+
```bash
|
|
57
|
+
npm install agent-robot-avatar
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
```js
|
|
61
|
+
import 'agent-robot-avatar';
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
也可以直接加载仓库源码:
|
|
65
|
+
|
|
66
|
+
```html
|
|
67
|
+
<script type="module" src="./agent-robot-avatar.js"></script>
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
然后添加组件:
|
|
71
|
+
|
|
72
|
+
```html
|
|
73
|
+
<agent-robot-avatar id="avatar"></agent-robot-avatar>
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
无需初始化代码,头像会自动进入默认待机状态。
|
|
77
|
+
|
|
78
|
+
## 基础用法
|
|
79
|
+
|
|
80
|
+
```js
|
|
81
|
+
const avatar = document.querySelector('#avatar');
|
|
82
|
+
|
|
83
|
+
avatar.play('success');
|
|
84
|
+
avatar.play('wary');
|
|
85
|
+
avatar.play('refuse');
|
|
86
|
+
|
|
87
|
+
avatar.reset();
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
可用动作:
|
|
91
|
+
|
|
92
|
+
`idle` · `bored` · `waiting-spin` · `waiting-wrap` · `waiting-wave` · `input` · `affirm` · `success` · `failure` · `wary` · `inspect` · `angry` · `refuse` · `surprise` · `love` · `random` · `sleep` · `wake`
|
|
93
|
+
|
|
94
|
+
`waiting-wave`(等待 · 波动):双眼错开节奏上下起伏,每轮周期 1.1 秒、振幅 10 SVG 单位。`play('waiting-wave')` 连续播放三轮并回正;`startWaiting({ variant: 'wave' })` 持续循环,直到被其他动作替换或调用 `stopWaiting()`。支持减少动态效果设置,动作生命周期事件统一使用 `waiting`。
|
|
95
|
+
|
|
96
|
+
动作名描述的是头像做出的样子:`refuse` 是摇头,用于 Agent 不能或不会执行某个请求;`failure` 用于任务或连接没有成功;`wary` 是侧头、上下打量的警惕眼神,用于需要用户确认的操作。0.5 版的旧名字(`send`、`warning`、`error`、`blocked` 等)在 1.0 之前仍可使用,但会在控制台提示改名,详见[升级对照表](../CHANGELOG.md#upgrading-from-05x)。
|
|
97
|
+
|
|
98
|
+
`love` 用于表达喜欢或感谢:两只眼睛向中间靠拢合成一颗爱心,跳动三下后恢复。
|
|
99
|
+
|
|
100
|
+
`random` 播放老虎机式的转动:两只眼睛各自在滚筒上滚动,随后左眼减速、弹跳着停下,右眼稍后停下。`slot` 是它的别名。
|
|
101
|
+
|
|
102
|
+
一个典型的 Agent 请求流程:
|
|
103
|
+
|
|
104
|
+
```js
|
|
105
|
+
avatar.startWaiting();
|
|
106
|
+
|
|
107
|
+
// 第二种等待:眼睛从一侧转出,再从另一侧转入。
|
|
108
|
+
avatar.startWaiting({ variant: 'wrap' });
|
|
109
|
+
|
|
110
|
+
// 另一种等待动作:双眼错开节奏上下波动。
|
|
111
|
+
avatar.startWaiting({ variant: 'wave' });
|
|
112
|
+
|
|
113
|
+
try {
|
|
114
|
+
const result = await runAgentRequest();
|
|
115
|
+
await avatar.play(result.ok ? 'success' : 'failure');
|
|
116
|
+
} catch (error) {
|
|
117
|
+
await avatar.play('failure');
|
|
118
|
+
}
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
## 常用选项
|
|
122
|
+
|
|
123
|
+
```html
|
|
124
|
+
<agent-robot-avatar
|
|
125
|
+
size="160"
|
|
126
|
+
color="#08090b"
|
|
127
|
+
auto-sleep="30000"
|
|
128
|
+
wake-on="activity"
|
|
129
|
+
motion="auto">
|
|
130
|
+
</agent-robot-avatar>
|
|
131
|
+
```
|
|
132
|
+
|
|
133
|
+
| 属性 | 用途 |
|
|
134
|
+
| --- | --- |
|
|
135
|
+
| `size` | 头像像素尺寸 |
|
|
136
|
+
| `color` | 头像主色 |
|
|
137
|
+
| `auto-sleep` | 自动睡眠前的空闲时间;`0` 为关闭 |
|
|
138
|
+
| `wake-on` | 自动唤醒策略:`activity`、`interaction` 或 `manual` |
|
|
139
|
+
| `motion` | 动态效果策略:`auto`、`reduce` 或 `full` |
|
|
140
|
+
| `press-squeeze` | 按住头像中心进行挤压;设为 `false` 可关闭 |
|
|
141
|
+
| `antenna-drag` | 拖动天线、弹簧复原并接愤怒表情;设为 `false` 可关闭 |
|
|
142
|
+
|
|
143
|
+
常用运行时控制:
|
|
144
|
+
|
|
145
|
+
```js
|
|
146
|
+
avatar.setPointerFollow(false);
|
|
147
|
+
avatar.setHeadRoundness(75);
|
|
148
|
+
avatar.setPressSqueeze(true);
|
|
149
|
+
avatar.setAntennaDrag(true);
|
|
150
|
+
```
|
|
151
|
+
|
|
152
|
+
按住头像中心会开始挤压;移动超过 4 个 CSS 像素后,同一次指针操作会切换为原有的头部拖动。拖动天线沿用头部拖动的距离限制,复原后接原有的愤怒反应。
|
|
153
|
+
|
|
154
|
+
## 事件与集成
|
|
155
|
+
|
|
156
|
+
组件通过 `face-state` 报告视觉状态变化,通过 `action-state` 报告语义动作生命周期变化。
|
|
157
|
+
|
|
158
|
+
宿主应用集成和无障碍状态播报优先使用 `action-state`。可查看 [`examples/accessibility.html`](../examples/accessibility.html) 中的请求生命周期示例。
|
|
159
|
+
|
|
160
|
+
最小集成示例位于 [`examples/basic.html`](../examples/basic.html)。
|
|
161
|
+
|
|
162
|
+
## 兼容性
|
|
163
|
+
|
|
164
|
+
面向支持 ES Modules、Custom Elements、SVG、Pointer Events、Web Animations API、`IntersectionObserver`、`ResizeObserver` 和 `matchMedia` 的现代浏览器。
|
|
165
|
+
|
|
166
|
+
自动浏览器测试覆盖 Chromium、Firefox 和 WebKit。
|
|
167
|
+
|
|
168
|
+
## 参与贡献
|
|
169
|
+
|
|
170
|
+
欢迎提交 Issue 和 Pull Request。提交修改前请阅读 [`CONTRIBUTING.md`](../CONTRIBUTING.md)。
|
|
171
|
+
|
|
172
|
+
## 项目状态
|
|
173
|
+
|
|
174
|
+
**当前公开版本:v0.6.0**
|
|
175
|
+
|
|
176
|
+
公开 API 会在未来 `1.0.0` 稳定性承诺前继续保持精简并谨慎演进。
|
|
177
|
+
|
|
178
|
+
Agent Robot Avatar 为独立开发的开源项目,不隶属于、代表或获得任何 AI 平台或品牌的官方背书。
|
|
179
|
+
|
|
180
|
+
## 角色设计与视觉标识
|
|
181
|
+
|
|
182
|
+
Agent Robot Avatar 角色,包括机器人外观与视觉标识,均为 CX ArtLab 的原创设计。
|
|
183
|
+
|
|
184
|
+
MIT License 适用于软件和源代码,允许在应用中使用、修改和分发该头像,但不会转移 Agent Robot Avatar 名称、角色身份或视觉标识的所有权,也不授予将其作为其他方原创角色或独立品牌进行展示的权利。
|
|
185
|
+
|
|
186
|
+
本项目提及的第三方产品名称仅用于说明可能的使用场景,不代表任何关联或官方认可。
|
|
187
|
+
|
|
188
|
+
## 许可证
|
|
189
|
+
|
|
190
|
+
MIT License。详见 [`LICENSE`](../LICENSE)。
|
|
191
|
+
|
|
192
|
+
---
|
|
193
|
+
|
|
194
|
+
## 请我喝杯咖啡
|
|
195
|
+
|
|
196
|
+
如果这个项目对你有帮助,也可以请我喝杯咖啡:
|
|
197
|
+
|
|
198
|
+
| Ko-fi | 支付宝 | 微信支付 |
|
|
199
|
+
| --- | --- | --- |
|
|
200
|
+
| <a href='https://ko-fi.com/P0E625WIOI' target='_blank'><img height='36' style='border:0px;height:36px;' src='https://storage.ko-fi.com/cdn/kofi6.png?v=6' border='0' alt='Buy Me a Coffee at ko-fi.com' /></a> | <img src="../assets/support/alipay.png" alt="支付宝收款码" width="160"> | <img src="../assets/support/wechat-pay.png" alt="微信支付收款码" width="160"> |
|
|
201
|
+
|
|
202
|
+
|