dsh-signal-pet:用角落小宠物读真实会话事件的忙碌/出错指示器

前言

在 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 对比表中有完整列举)。

交互与验收钩子

  1. 点一下宠物:收成小圆点,只留状态环颜色;再点展开。偏好记在 localStorage。
  2. data-pet-state:根元素与图层上的当前状态(idle / thinking / working / error / celebrate),供 CSS、截图与断言使用。
  3. 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 半区须重启进程才会加载插件)。

典型用法

经过上面的安装步骤后:

  1. 正常发起智能体回合,观察角落宠物随 thinking / working / error / celebrate 变化。
  2. 需要收起干扰时,点击宠物;状态环颜色仍表示当前相位。
  3. 写自动化或样式时,查询根节点上的 data-pet-state、data-pet-mode。
  4. 验收庆祝动画时,可对 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
羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜