前言¶
在 DeepSeek Harness(DSH)里跑智能体回合时,「正在思考」「工具在跑」「刚报错」往往分散在日志和转圈里,你要低头找状态才能确认。社区里也有把宠物叠在界面上的做法,但不少实现偏装饰:动得热闹,却说不清此刻该盯什么。
dsh-signal-pet(维护者 dingchenhui0618-arch)把「好玩」和「有用」绑在同一只角落宠物上:它订阅真实的 harness 事件流,用颜色、连线和动效表达 thinking、工具执行、错误和长任务完成;同时提供 data-pet-state 等稳定钩子,方便截图验收和自动化。插件在 SkillHub 目录分类为「趣味换装」,当前 GitHub 星标为 0;许可证 MIT,版本 0.1.0,要求 DSH >=0.2.1-rc.2 <0.3.0。
下面介绍它解决什么问题、状态如何映射、怎么装怎么用,以及和同类灵感插件的差异。
这是什么¶
一句话:住在界面角落的状态宠物,读真实会话事件,兼任一眼可见的忙碌/出错指示器。
宿主半区监听 harness 事件并折叠成快照,客户端只负责绘制。它不做内容识别、不做纯装饰挡输入;位置会主动避开输入框和当前焦点元素。
核心功能¶
状态与触发(来自真实事件,非客户端猜测)¶
| 状态 | 触发 | 表现 |
|---|---|---|
idle |
没有活跃会话 | 慢慢上下飘 |
thinking |
agent/status 变 running |
同样动作,速度快 3 倍多 |
working |
有工具正在执行 | 紫色环 + 每个运行中的工具一条流动连线 |
error |
tools/result 报错,或 agent/error |
红环 + 抖 5 下 + 错误摘要 |
celebrate |
跑了 10 秒以上的回合结束 | 跳 4 下 + 三颗火花 |
优先级是产品设计:错误压过一切。哪怕同时在跑工具,只要刚出过错,宠物仍是红的——职责是「出事时你一定会注意到」。
宿主侧折叠的事件类型包括:agent/status、tools/pre-execute、tools/result、agent/error、agent/turn-stopping(README 对比表中有完整列举)。
交互与验收钩子¶
- 点一下宠物:收成小圆点,只留状态环颜色;再点展开。偏好记在
localStorage。 data-pet-state:根元素与图层上的当前状态(idle/thinking/working/error/celebrate),供 CSS、截图与断言使用。data-pet-mode:图层上为animated/static/collapsed。
避让 UI¶
在五个候选角里选第一个完全不重叠的位置;都不行则选重叠最小的,并以 clear: false 落成类名 vp-blocked,表明未能完全让开。
障碍物按行为识别,而非 DSH 类名:
textarea, input, [contenteditable="true"], [role="textbox"], [data-pet-avoid]
外加当前获得焦点的元素。任意元素可加 data-pet-avoid 作为逃生口。
无障碍¶
在 prefers-reduced-motion: reduce 下,宠物退化为静态角标:关闭 keyframe,身体缩成 22px 圆点,状态环颜色与文字标签保留。
HTTP 面(调试与验收)¶
GET /dsh-signal-pet 当前快照(phase、计数、最近工具、错误、忙碌时长)
GET /dsh-signal-pet/state 同上(别名)
POST /dsh-signal-pet/reset 清空状态
POST /dsh-signal-pet/pulse 强制触发一次庆祝(验收动画,无需等长任务)
不干扰工作(硬约束)¶
tools/pre-execute 是决定工具是否执行的 waterfall;宿主监听器在任何路径都会 next(),包括内部出错时。状态折叠、事件记录、路由注册包在 try/catch 里,失败时只是宠物不灵,不会让回合失败。
可配置项¶
apply(ctx, config) 中均可覆盖:
| key | 默认 | 说明 |
|---|---|---|
errorTtlMs |
12000 |
错误在宠物上停留多久后回落 |
celebrateMs |
2600 |
一次庆祝持续多久 |
celebrateAfterMs |
10000 |
回合至少跑这么久才庆祝 |
maxTethers |
6 |
最多画几条工具连线 |
enabled |
true |
关闭后不再记录事件 |
安装与启用¶
DSH 生态是「一切皆插件」;SkillHub 插件目录 是社区站点,与 DeepSeek / 幻方无官方从属关系。安装前请自行查看仓库源码与 MIT 许可证;插件以当前 dsh 进程权限运行。
npm 版 CLI 管理的 profile:
dsh plugin --profile <name> add <插件目录>
桌面版: desktop profile 由 Electron 应用独占,npm 版 CLI 会被拒绝(profile "desktop" is managed exclusively by the Electron application)。需使用应用自带的 CLI:
"<app>/resources/runtime/cli/bin/dsh" plugin --profile desktop add <插件目录>
装完后重启一次 app(host 半区须重启进程才会加载插件)。
典型用法¶
经过上面的安装步骤后:
- 正常发起智能体回合,观察角落宠物随
thinking/working/error/celebrate变化。 - 需要收起干扰时,点击宠物;状态环颜色仍表示当前相位。
- 写自动化或样式时,查询根节点上的
data-pet-state、data-pet-mode。 - 验收庆祝动画时,可对 HTTP 面
POST /dsh-signal-pet/pulse,而不必真的跑满 10 秒任务。
和 dsh-think-bounce-pet 的关系(README 已说明)¶
灵感来自 9livewolf/dsh-think-bounce-pet。原版 README 无 LICENSE 文件,本插件未复用其代码,仅阅读 README 后从零实现。
差异要点:本插件覆盖更多会话事件、反映工具连线与错误(且错误优先级最高)、长回合庆祝、UI 避让、prefers-reduced-motion 降级,以及 data-pet-state / data-pet-mode;原版强项是物理弹跳、鼠标碰撞与设置页——本插件刻意未做物理引擎与设置页,目标集中在「一眼可见的指示器」。
适用场景与注意¶
- 适合:长期在 DSH 界面里盯回合状态、希望少翻日志、又愿意在角落留一个可验收的状态宠物的人。
- 注意:依赖 DSH 事件语义与版本区间;
webServer.register或shell.overlay失败时可能无 HTTP 面或 overlay 降级,但 README 写明事件监听仍尽量保持、且不阻断工具链。 - 安全:安装即信任插件在宿主内监听事件与注册路由;请从官方仓库核对行为后再用于敏感环境。
结尾¶
dsh-signal-pet 把会话事件流翻译成角落里的颜色、连线与动效,错误优先、避让输入、减少动效时仍保留状态信息。若要进一步了解或提 issue,可看目录页与 GitHub:
- 目录页:https://www.skillhub.cn/plugins/dingchenhui0618-arch/dsh-signal-pet
- 仓库:https://github.com/dingchenhui0618-arch/dsh-signal-pet