DSH Plugin MarketA community catalog for DeepSeek Harness plugins

dsh-grok-buddy

Verified Interface & experience ★ 2 0.2.2

Grok Bot's own face in your DSH sidebar: the GrokBot avatar shows each session's six runtime states — idle, working, waiting, blocked, thinking, done — with no extra UI. Color is project identity; motion is state.

What it is

Grok Bot's own face in your DSH sidebar: the GrokBot avatar shows each session's six runtime states — idle, working, waiting, blocked, thinking, done — with no extra UI. Color is project identity; motion is state.

How to install

Run this in the DSH web profile, then refresh the page.

$ dsh plugin --profile web add dsh-grok-buddy@0.2.2

DSH versions accepted

>=0.1.7-rc.1

Author and traction

devzer0o0 · ★ 2 · Updated 2026-11-10

About this plugin

dsh-grok-buddy

把 Grok Bot 本人那张脸,装进 DeepSeek Harness 的会话列表

每个会话在侧栏那一行,原来的彩色小圆点换成一只会呼吸的 GrokBot 头像。

它在思考、在跑工具、在等你点确认、失败了、还是刚干完 —— 看脸就知道。

= 22">

左边是 DSH 默认的彩色小圆点,右边是装上之后。位置、行高、槽位宽度都没变,只是圆点换成了一张脸。

---

这是什么

一句话:DSH 侧栏里每个会话的状态,由 Grok Bot 那张脸来演。

它没有另画一套图标,也不是随便找个 emoji 顶上去 —— 用的是 Grok Bot 自己的头像和表情:

一颗圆滚滚的 blob,两只眼睛贴在球面上,转头时会跟着透视变形、转到背面会消失;

表情切换是带弹簧的形变,平时还会随机眨眼。

它真的会动 —— 下面这张是从产品渲染器逐帧抓下来的(不是示意图):

目录

  • [这是什么](#这是什么)
  • [为什么是这张脸](#为什么是这张脸)
  • [三层分开:状态 / 动作 / 表情](#三层分开状态--动作--表情)
  • [六态判定(唯一语义)](#六态判定唯一语义)
  • [颜色是身份,动作是状态](#颜色是身份动作是状态)
  • [界面适配:不是只有侧栏那一种行](#界面适配不是只有侧栏那一种行)
  • [安装](#安装)
  • [刷新、重启与验收](#刷新重启与验收三件事不一样)
  • [诊断(默认关闭)](#诊断默认关闭)
  • [工作原理](#工作原理)
  • [开发](#开发)
  • [未完成与已知边界](#未完成与已知边界)
  • [致谢与许可](#致谢与许可)

为什么是这张脸

Grok Bot 的设计文章把这件事讲得很清楚:他们要解决的不是「怎么再塞一个进度指示器」,

而是「怎么让头像本身承担状态」。

> We could have represented each state with a separate indicator, but that would

> have added another layer of UI for the user to interpret. Instead, we explored

> how much of the lifecycle the avatar itself could carry.

所以这里也照做:不新增任何 UI 元素,只把侧栏原本那个彩色小圆点换成一个会呼吸的头像。

会话行高保持 32px,头像画布从 20px 适度放大到 24px(边长增加 20%)。

画布包含彩带的安全边距,因此头像本体从约 13.3px 增至 16px,不是把彩带裁掉来放大脸。

前导位同步扩展;有定时任务时钟时按「24px 头像 + 2px 间隔 + 16px 时钟」并排,标题顺延。

24px 下思考单点约 4.5–5.4 CSS px;彩带保留官网小尺寸加粗与前后遮挡。

原生项目文件夹仍是 16px,不受会话头像尺寸调整影响。

三层分开:状态 / 动作 / 表情

这是本插件最容易被误解的地方,先讲清楚:

| 层 | 是什么 | 出现在哪里 |

| --- | --- | --- |

| 运行状态(runtimePhase / displayPhase) | 只有六种:idle / working / waiting / blocked / thinking / done | 接口、文档、读屏标签、data-dsgb-phase |

| 动作(motion) | 内部动画资源名:rest / spin / half-lidded / bang / tri-dot / orbit | data-dsgb-motion(明确标注是动画资源) |

| 图形构成(figure) | 这一态画的是什么:avatar / avatar+trail / exclamation / dots / avatar+orbit | data-dsgb-figure |

| 表情素材(expression) | 25 张眼型,只服务 idle / working / done 的眼睛造型 | 只在渲染引擎内部 |

所以:

  • 素材库有多少条,不等于插件有多少种状态。 素材库里还有 proud、excited、

curious、sleeping 等二十多个预设,它们不是运行状态,也不再是六态动画的实现。

  • 表情图里的名字,不等于运行状态。 [docs/faces.html](docs/faces.html) 里那些 sleeping /

waking / searching / curious / proud 只是 idle 的表情素材参考,不参与会话状态判定。

  • 事实与标志位(selected / seen / consumed / stale)也不是状态。

六态判定(唯一语义)

实现在 [src/decision.js](src/decision.js),宿主与页面共用这一份,没有第二套优先级。

| 状态 | 中文 | 判定条件 |

| --- | --- | --- |

| idle | 空闲 | 默认;没有在途任务;或完成展示已结束/已被消费 |

| working | 正在处理 | 会话活跃,且当前任务还有未结束的工具调用 |

| waiting | 正在等待 | 会话活跃,且有未解决的审批、提问或计划评审 |

| blocked | 已阻止 | 当前任务已被确认因错误而停止,且该停止尚未被真实恢复或新一轮取代;提醒被看过并切走后展示退回 idle(事实仍为 blocked) |

| thinking | 思考 | 会话活跃,处于模型请求/推理/生成阶段,且无更高优先级事实 |

| done | 完成 | 当前轮有明确的成功终态,且完成展示仍活跃、未被消费 |

blocked = 任务级错误停止(不是「有错误」)

一句话定义:**当前会话的当前任务已被确认因错误停止执行,且这个停止事实还没有被

真实恢复执行或新一轮任务取代。**

它明确不表示:出现过错误 / 有一条 error 记录 / 某个工具调用失败 / 模型正在自动重试 /

暂时没有输出 / 网络看起来异常 / 用户主动取消。

事实分三层,代码里也分开存([lib/fold.js](lib/fold.js)):

| 层 | 字段 | 作用 |

| --- | --- | --- |

| A. 错误诊断 | facts.error | 某次工具/请求/重试报了什么错。只用于日志与 tooltip,不参与判定 |

Compare in this category

The five most-starred plugins in the same category.

PluginAuthor StarsVersionUpdated
open-design nexu-io 106.9K 0.25.1 2026-11-10
huashu-design alchaincyf 29.1K 3.3.0 2026-11-10
dsh-web zhu1090093659 10.3K 0.0.1 2026-11-10
baoyu-design JimLiu 6.3K 2.12.2 2026-11-10
dsh-wallpaper-engine elysia395 6.3K 1.4.2 2026-11-10