`dsh-thought-buddy` 是 [DeepSeek Harness](https://deepseek-harness.github.io/deepseek-harness/) Web GUI 的纯客户端插件。模型工作时,那行 `Deep diving...` 状态条前多了一只 Grok 风格的小机器人头像:眨眼、弹簧形变换表情、视线游移、整体轻摆——全部由 **纯 SVG + `requestAnimationFrame`** 实时绘制,零运行时依赖。每次头像切换表情,状态文字还会以**打字机效果**变换(先逐字符删除,再逐字打出下一个词)。
头像动画移植自 [nasawz/GrokBot](https://github.com/nasawz/GrokBot)(纯 Flutter `CustomPaint` 控件):25 种表情 × 2 眼 × 48 点眼环、18 种身体形态、39 种状态的表情池与眨眼节奏全部保留。

## 功能
| 功能 | 说明 |
|---|---|
| GrokBot 头像 | thinking 状态表情池 `[8,16,14,17,5]` 自动轮换,弹簧形变表情过渡、320ms 眨眼(随机 3.5–7s 间隔)、球面转头投影 + 视线游移、整体轻摆(1.7s 呼吸动画) |
| 表情联动打字机 | 每次表情切换时,状态行文字从 `Deep diving...` 以打字机效果变换(先逐字符删除、停顿后逐字打出),从 55 个候选词(`Accomplishing`…`Working`)轮换,如 `Reticulating...`;React 重渲染不会覆盖(文本 fiber 的 children 字符串始终不变,React bail out) |
| Emoji 模式 | 备用模式:在 emoji 列表间轮播(默认 `🤿 🫧 🌊 🐙 🔍 🧠 💭`),每次切换带弹跳入场 |
| 主题适配 | 跟随 `prefers-color-scheme`:亮色 `#5b7fe5/#fffdf7`,暗色 `#6689ea/#181a15`(与 DSH 主题一致) |
| 减少动效 | `prefers-reduced-motion: reduce` 时关闭摆动与转头,仅保留表情/眨眼 |
| 自动清理 | 状态条消失时动画自停;插入节点在 React 重渲染下存活,万一被清掉,下一次 mutation 自动补回 |
## 安装
复制下面这段指令,粘贴给你的 DSH Agent(本 Web GUI 里的助手)。Agent 会替你完成安装与验证——无需手动操作 npm 或编辑 profile:
```text
把 @dsh-plugin/dsh-thought-buddy 插件安装到我指定的 profile(如果我没说,先问我)。npm 包名是 `@dsh-plugin/dsh-thought-buddy`;可以使用 GitHub 源 `github:dsh-plugins/dsh-thought-buddy`,本地开发用 `file:<路径>` / `link:<路径>`。
步骤:
1. 添加插件依赖:`dsh plugin --profile