dsh-aora-ball:用会话状态驱动 DSH 界面内的表情球

前言

在 DeepSeek Harness(DSH)里跑智能体时,界面往往只有日志和步骤列表:思考、调工具、报错、收尾,状态变化都在后台事件里,肉眼不容易跟上。有人会在 IDE 里开第二个窗口盯输出,也有人干脆不看,等 turn 结束再读结果。下面介绍的是社区插件 dsh-aora-ball:在 DSH 桌面界面里常驻一颗约 148px 的表情球,把 user/message、tool/call、turn/end 等会话事件映射成 32 种 SVG 表情,并附带设置面板与内置状态服务;和「只看文字进度」相比,它把同一套事件做成了可见的反馈,但不替代 DSH 本身的日志与审批流程。

这是什么

dsh-aora-ball(维护者 tang-coder-hub)属于社区目录里的「趣味换装」类插件。目录页:skillhub.cn/plugins/tang-coder-hub/dsh-aora-ball;源码:github.com/tang-coder-hub/dsh-aora-ball。

插件在 DSH Web 客户端注入一颗 Emotion Ball:引擎来自 sam70361/aora-bot 的 emotion-ball(32 种状态、纯 SVG、零依赖),四个 js 已内联进提交产物 client.js,不联网、不加载外部脚本。Host 侧监听 DSH 会话事件,Client 侧渲染球并支持拖动、图钉锁定、空闲时眼睛跟鼠标等交互。

package.json 中声明的兼容范围为 DSH >=0.2.1-rc.2 <0.3.0、Node >=20.18,且仅支持 desktop profile。

核心功能

会话事件 → 表情

32 个 emotionId 与 DSH 事件对应;README 中的映射表是核对用法时的依据。典型链路如下:

  • 用户发消息(user/message)→ 接收任务(31),竖直弹一下。
  • Turn / step 开始 → 思考中(30),头顶青蓝环带。
  • tool/call 按工具类型区分:联网加载(36)、检索资料(40)、专注(16)、翻找回忆(37);2 秒内第 3 次以上调用会切到慌张(17)。
  • tool/result 失败时按连续错误递进:诶?(11)→ 困惑(20)→ 生气(21);成功则回到思考中(30)。
  • 审批(approval/asked)→ 等待输入(35);各类 agent/error 映射到无奈、拒绝受限、联网加载、停止终止或通用出错等。
  • turn/end 根据是否用工具、步数、是否中断,在输出回复、完成撒花、满意、开心或失落等状态间选择;约 8 秒后回落待机放空(02)。

其余编号(如睡眠 00、唤醒 01、加载苏醒 05 等)由引擎 idle 与过渡逻辑驱动;静置足够久会自动进入睡眠。

内置状态服务

插件在 127.0.0.1:8778 起一个极小的 HTTP 状态服务(node:http,零依赖):

  • Host 侧 index.js 把会话事件转成 { emotionId, tips } 写入内存。
  • Client 每 700ms GET /state 驱动表情球。
  • 若 8778 已被占用,会降级为向该地址 POST;服务不可用时不影响 DSH 主流程,球会停在待机。

设置与交互

设置路径:设置 → 内置插件 → 表情球(与「图像生成」「OpenCode 调色板」等同排页签)。选项包括显示开关、尺寸 80–280px、四角停靠或自由拖动(视口比例记位置)、边缘间距、是否跟随会话状态、文字提示、图钉固定、眼睛跟鼠标、空闲睡觉时长、空闲溜达等;另有「表情墙」可点选 32 种表情试播,以及状态服务在线情况。配置保存在 localStorage["aora-ball:settings"],改完即时生效(「空闲多久去睡觉」改完需重启 DSH)。

交互摘要:空闲时眼跟光标;自由拖动模式下按住球移动;左上角图钉锁定;双击球或 Alt+B 显隐。

安装与启用

DSH 生态是「一切皆插件」;社区插件目录在独立站点 skillhub.cn,与 DeepSeek / 幻方无官方从属关系。安装前建议浏览 GitHub 源码与许可证(插件主体 MIT,内联引擎有单独第三方条款,见仓库 THIRD-PARTY.md)。插件以当前 DSH 进程权限运行,并监听本地 8778 端口。

  1. 在 desktop profile 下执行官方安装命令:
dsh plugin --profile desktop add github:tang-coder-hub/dsh-aora-ball
  1. 安装完成后重启 DSH。右下角会出现表情球。

  2. 在 设置 → 内置插件 → 表情球 中调整尺寸与位置。将「位置模式」设为自由拖动后,可按住球拖到任意位置;位置按视口比例记住,改窗口尺寸不会错位。

仓库已提交构建好的 client.js,装完即可用,无需本地执行 node build.mjs。

卸载:

dsh plugin --profile desktop remove dsh-aora-ball

典型用法

跟会话看状态

正常对话、多步工具调用或报错时,无需额外配置:打开「跟随会话状态」即可让球随事件切换。若只想当桌面装饰,可关闭跟随,球会保持待机。

手动驱动表情(调试)

状态服务起来后,可用 curl 写入状态(README 示例为 Windows curl.exe,Linux/macOS 可改用系统自带的 curl):

curl.exe -X POST http://127.0.0.1:8778/state -H "content-type: application/json" -d "{\"emotionId\":\"33\",\"tips\":\"任务完成\"}"
curl.exe http://127.0.0.1:8778/state

设置面板里的「表情墙」同样可逐个预览 32 种表情,高亮与当前 emotionId 一致。

改引擎或默认尺寸(维护者 / 二次开发)

  • engine/ 为上游四个源文件(未改动)。
  • client.tpl.js 为模板,node build.mjs 内联生成 client.js。
  • 模板里 BASE 默认 148;运行时缩放由设置面板滑块通过 transform: scale() 完成,一般不必改代码。

适用场景与注意

适合谁: 长期在 DSH desktop 里调试智能体、希望从界面一眼看出「在思考 / 在搜 / 在写 / 出错 / 完成」的开发者;也适合需要轻量桌面陪伴感、又希望状态与真实会话一致的用户。

注意:

  • 仅 desktop profile;Web 或其它 profile 不在 package.json 声明范围内。
  • DSH 版本需落在 >=0.2.1-rc.2 <0.3.0,升级 DSH 前对照仓库 dsh.compatibility。
  • 8778 端口冲突时会走降级逻辑;若你自建服务占用了该端口,需了解 POST 降级行为。
  • 内联 Emotion Ball 引擎:上游为非商业免费、商业需授权;球形角色形象仅限个人学习研究,商用或再分发前请读 THIRD-PARTY.md。

结尾

dsh-aora-ball 把 DSH 会话事件接到 32 种内联 SVG 表情上,并配上拖动、图钉、设置面板与本地状态服务,适合在 desktop 里做「状态可见化」的趣味换装。当前仓库版本为 0.5.0(以 package.json 为准)。

  • 目录页:https://www.skillhub.cn/plugins/tang-coder-hub/dsh-aora-ball
  • GitHub:https://github.com/tang-coder-hub/dsh-aora-ball
羽毛球分组比赛记分
小程序二维码

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

Xiaoye