DeepSeek Harness 插件

dsh-waterball-pet

Water ball pet plugin for the dsh web GUI: a floating sky-blue water ball with white eyes that reacts to agent activity (idle / thinking / tool) and ships an enable toggle plus size in the Web UI(英文原文)

跳到安装方式

来源信息

GitHub 仓库
sundusk/dsh-waterball-pet
最近更新
2026年8月17日
分类
趣味扩展
GitHub stars
3
载体类型
plugin
目录证据
上游声明已找到 dsh.bundle
证据路径
package.json#dsh.bundle
核对版本
0.1.0-rc.8
上游核对日期
2026-08-20

该证据由上游目录提供。本站没有安装、运行或安全审核这个插件。

安装

默认先复制一段 Prompt,让 Agent 读 GitHub 仓库和源码;需要自己装时再切到命令。

复制这段 Prompt,发给 DSH、Codex 或其他 Agent,让它先读 GitHub 仓库和源码。

请先不要安装或执行任何命令。阅读这个插件的 GitHub 仓库、README 和关键源码,然后用清楚、直接的方式回答以下问题,帮助我判断它是否适合我的需求:

1. 这个插件是什么,解决什么问题;
2. 适合哪些用户和典型使用场景;
3. 安装后如何使用,并给出一个最小使用示例;
4. 有哪些已知限制,以及隐私、安全、兼容性或维护风险;
5. 给出“推荐 / 有条件推荐 / 不推荐”的明确建议和理由。

请区分仓库明确说明、根据源码推断和未知信息。证据不足时请明确说明,不要猜测或照抄 README。

GitHub:https://github.com/sundusk/dsh-waterball-pet
插件名:dsh-waterball-pet
作者:sundusk

检查来源文件

安装前先看这个插件目录里的 README 和其他文件。

文件资源管理器2 个文件
README.md来源说明 · 只读预览

dsh-waterball-pet

一个适用于 DeepSeek Harness Web UI 的漂浮水球宠物插件。水球使用纯 SVG 绘制, 内部颜色会随 Agent 的会话状态变化(外层白色渐变保持不变),球体带柔和投影与 底部接触阴影,便于在浅色页面上看清边界。眼睛可在设置中切换白色/黑色或隐藏。 支持在 Web UI 中开关、调整大小和拖动位置。

> This is a floating water-ball pet plugin for the DeepSeek Harness Web UI. It is > drawn with SVG and reacts to Agent session events: the ball's inner color > changes with the state while the white outer edge of the gradient stays > constant. A soft drop shadow and a static ground contact shadow keep the ball > visible against light page backgrounds. Eyes can be switched to white or black, > or hidden, from the plugin settings. The Web UI settings card controls > visibility, size, and position.

状态外观

以下为不同状态下的水球样式:

状态黑色眼睛白色眼睛隐藏眼睛
空闲 · idle<img src="./docs/assets/waterball-idle-blue-black-eyes.png" width="96" alt="空闲,蓝色水球,黑色眼睛"><img src="./docs/assets/waterball-idle-blue-white-eyes.png" width="96" alt="空闲,蓝色水球,白色眼睛"><img src="./docs/assets/waterball-idle-blue-no-eyes.png" width="96" alt="空闲,蓝色水球,无眼睛">
思考 / 工作 · waiting<img src="./docs/assets/waterball-waiting-green-black-eyes.png" width="96" alt="思考,绿色水球,黑色眼睛"><img src="./docs/assets/waterball-waiting-green-white-eyes.png" width="96" alt="思考,绿色水球,白色眼睛"><img src="./docs/assets/waterball-waiting-green-no-eyes.png" width="96" alt="思考,绿色水球,无眼睛">
工具调用 · jumping<img src="./docs/assets/waterball-jumping-purple-black-eyes.png" width="96" alt="工具调用,紫色水球,黑色眼睛"><img src="./docs/assets/waterball-jumping-purple-white-eyes.png" width="96" alt="工具调用,紫色水球,白色眼睛"><img src="./docs/assets/waterball-jumping-purple-no-eyes.png" width="96" alt="工具调用,紫色水球,无眼睛">
授权等待 · authorizing<img src="./docs/assets/waterball-authorizing-yellow-black-eyes.png" width="96" alt="授权等待,黄色水球,黑色眼睛"><img src="./docs/assets/waterball-authorizing-yellow-white-eyes.png" width="96" alt="授权等待,黄色水球,白色眼睛"><img src="./docs/assets/waterball-authorizing-yellow-no-eyes.png" width="96" alt="授权等待,黄色水球,无眼睛">
做出你的抉择 · questioning<img src="./docs/assets/waterball-questioning-pink-black-eyes.png" width="96" alt="做出你的抉择,粉色水球,黑色眼睛"><img src="./docs/assets/waterball-questioning-pink-white-eyes.png" width="96" alt="做出你的抉择,粉色水球,白色眼睛"><img src="./docs/assets/waterball-questioning-pink-no-eyes.png" width="96" alt="做出你的抉择,粉色水球,无眼睛">
完成 · done<img src="./docs/assets/waterball-done-cyan-black-eyes.png" width="96" alt="完成,青色水球,黑色眼睛"><img src="./docs/assets/waterball-done-cyan-white-eyes.png" width="96" alt="完成,青色水球,白色眼睛"><img src="./docs/assets/waterball-done-cyan-no-eyes.png" width="96" alt="完成,青色水球,无眼睛">
出错 · failed<img src="./docs/assets/waterball-failed-red-black-eyes.png" width="96" alt="出错,红色水球,黑色眼睛"><img src="./docs/assets/waterball-failed-red-white-eyes.png" width="96" alt="出错,红色水球,白色眼睛"><img src="./docs/assets/waterball-failed-red-no-eyes.png" width="96" alt="出错,红色水球,无眼睛">
停止 / 中断 · stopped<img src="./docs/assets/waterball-stopped-charcoal-black-eyes.png" width="96" alt="停止,深灰色水球,黑色眼睛"><img src="./docs/assets/waterball-stopped-charcoal-white-eyes.png" width="96" alt="停止,深灰色水球,白色眼睛"><img src="./docs/assets/waterball-stopped-charcoal-no-eyes.png" width="96" alt="停止,深灰色水球,无眼睛">
点击挥手 · waving<img src="./docs/assets/waterball-waving-orange-black-eyes.png" width="96" alt="点击挥手,橙色水球,黑色眼睛"><img src="./docs/assets/waterball-waving-orange-white-eyes.png" width="96" alt="点击挥手,橙色水球,白色眼睛"><img src="./docs/assets/waterball-waving-orange-no-eyes.png" width="96" alt="点击挥手,橙色水球,无眼睛">

状态、内部颜色与操作

水球内部颜色随状态变化,外层白色渐变始终不变。眼睛颜色与显隐可在设置中调整。

状态mood内部颜色触发事件 / 操作动画与持续时间
空闲idle蓝色 #4fb3f7没有活动;activity/statusidle上下浮动
思考 / 工作waiting绿色 #34d399turn/startstep/startassistant/chunk;或 activity/statuswaiting / thinking左右张望,持续到下一状态
工具调用jumping紫色 #a855f7tool/call;或 activity/statustool跳跃,持续到工具结果
授权等待authorizing黄色 #facc15approval/asked柔和呼吸,直到 approval/decided(批准→继续,拒绝/取消→出错)
做出你的抉择questioning粉色 #ec4899tool/callask_user_question左右摆动,直到 tool/result(回答→继续思考;取消/关闭→停止)
工具结果后继续思考waiting绿色 #34d399tool/result回到思考动画
完成done青色 #22d3eeactivity/statusdone;或 turn/endreason=completed欢快跳动约 2.5 秒
出错failed红色 #f87171turn/endreason=error低头沮丧约 3 秒
中断 / 停止stopped深灰 #111827turn/endreason=abortedblockedmax-tokens 或其他停止原因静止下沉约 3 秒
点击挥手waving橙色 #fb923c单击水球左右摇摆约 1.6 秒

标准 DSH 会话事件始终作为状态来源;如果额外安装了活动状态插件,也兼容 activity/status 事件。

安装

从 GitHub 安装(推荐)

需要已安装 Node.js、pnpm 和 DeepSeek Harness:

dsh plugin --profile web add github:sundusk/dsh-waterball-pet

仓库已包含构建后的 host/browser 两个插件部分,安装时不需要执行第三方构建脚本, 可以直接使用。安装完成后重启 dsh web,然后打开 Web UI,在「设置 → 插件」的 插件配置列表中启用「水球宠物」(卡片与内置的 Shell / Agent loop / Web search 卡片平级,位于「Web UI 插件」分组之外)。

> 兼容性注意:白名单问题 > > 插件能够从 GitHub 安装成功,不代表当前 DeepSeek Harness 宿主版本已经允许 > waterball 设置命名空间。Harness 的 @deepseek-ai/dsh-host-apiproxy 会维护一份 > Web UI 设置白名单;如果你的版本还没有包含 waterball,可能出现以下情况: > > - 插件已经安装,但设置卡片显示不可用或只读; > - 启用、大小、位置等设置无法保存; > - 某些宿主版本中水球覆盖层也可能不会显示。 > > 遇到这些情况,请先升级 DeepSeek Harness 到包含 waterball 白名单的版本,重启 > dsh web 后再检查。修改本机 npx 缓存中的宿主文件只能作为临时开发排查手段, > 不会替其他用户解决这个问题,也可能在重新安装后被覆盖。这个兼容性问题属于 > Harness 宿主,不是 npm/GitHub 分发方式本身造成的。

本地开发安装

dsh plugin --profile web add link:<本仓库绝对路径>

重启 dsh web 后生效。插件代码修改后运行 pnpm build,并将更新后的 lib/ 一并提交。

结构

  • src/index.ts — host 半区:监听标准 session 事件与可选的 activity/status 相位,

提供 GET /api/waterball/status,注册 waterball 设置命名空间。

  • src/client/index.ts — browser 半区:渲染水球、轮询状态、注册插件配置卡片。
  • cordis.patch.yml — bundle patch 插件行,插件 ID 为 ui-waterball
  • shared/ — 独立仓库使用的客户端构建预设。
  • lib/ — 已提交的 host/browser 构建产物,保证 GitHub 安装无需执行构建脚本。

English

State appearance

Water ball styles for each state:

StateBlack eyesWhite eyesHidden eyes
Idle · idle<img src="./docs/assets/waterball-idle-blue-black-eyes.png" width="96" alt="Idle blue water ball, black eyes"><img src="./docs/assets/waterball-idle-blue-white-eyes.png" width="96" alt="Idle blue water ball, white eyes"><img src="./docs/assets/waterball-idle-blue-no-eyes.png" width="96" alt="Idle blue water ball, no eyes">
Thinking / working · waiting<img src="./docs/assets/waterball-waiting-green-black-eyes.png" width="96" alt="Thinking green water ball, black eyes"><img src="./docs/assets/waterball-waiting-green-white-eyes.png" width="96" alt="Thinking green water ball, white eyes"><img src="./docs/assets/waterball-waiting-green-no-eyes.png" width="96" alt="Thinking green water ball, no eyes">
Tool call · jumping<img src="./docs/assets/waterball-jumping-purple-black-eyes.png" width="96" alt="Tool call purple water ball, black eyes"><img src="./docs/assets/waterball-jumping-purple-white-eyes.png" width="96" alt="Tool call purple water ball, white eyes"><img src="./docs/assets/waterball-jumping-purple-no-eyes.png" width="96" alt="Tool call purple water ball, no eyes">
Awaiting approval · authorizing<img src="./docs/assets/waterball-authorizing-yellow-black-eyes.png" width="96" alt="Awaiting approval yellow water ball, black eyes"><img src="./docs/assets/waterball-authorizing-yellow-white-eyes.png" width="96" alt="Awaiting approval yellow water ball, white eyes"><img src="./docs/assets/waterball-authorizing-yellow-no-eyes.png" width="96" alt="Awaiting approval yellow water ball, no eyes">
Awaiting your choice · questioning<img src="./docs/assets/waterball-questioning-pink-black-eyes.png" width="96" alt="Question pink water ball, black eyes"><img src="./docs/assets/waterball-questioning-pink-white-eyes.png" width="96" alt="Question pink water ball, white eyes"><img src="./docs/assets/waterball-questioning-pink-no-eyes.png" width="96" alt="Question pink water ball, no eyes">
Completed · done<img src="./docs/assets/waterball-done-cyan-black-eyes.png" width="96" alt="Completed cyan water ball, black eyes"><img src="./docs/assets/waterball-done-cyan-white-eyes.png" width="96" alt="Completed cyan water ball, white eyes"><img src="./docs/assets/waterball-done-cyan-no-eyes.png" width="96" alt="Completed cyan water ball, no eyes">
Error · failed<img src="./docs/assets/waterball-failed-red-black-eyes.png" width="96" alt="Error red water ball, black eyes"><img src="./docs/assets/waterball-failed-red-white-eyes.png" width="96" alt="Error red water ball, white eyes"><img src="./docs/assets/waterball-failed-red-no-eyes.png" width="96" alt="Error red water ball, no eyes">
Stopped / interrupted · stopped<img src="./docs/assets/waterball-stopped-charcoal-black-eyes.png" width="96" alt="Stopped charcoal water ball, black eyes"><img src="./docs/assets/waterball-stopped-charcoal-white-eyes.png" width="96" alt="Stopped charcoal water ball, white eyes"><img src="./docs/assets/waterball-stopped-charcoal-no-eyes.png" width="96" alt="Stopped charcoal water ball, no eyes">
Click reaction · waving<img src="./docs/assets/waterball-waving-orange-black-eyes.png" width="96" alt="Click reaction orange water ball, black eyes"><img src="./docs/assets/waterball-waving-orange-white-eyes.png" width="96" alt="Click reaction orange water ball, white eyes"><img src="./docs/assets/waterball-waving-orange-no-eyes.png" width="96" alt="Click reaction orange water ball, no eyes">

State, ball colors, and interactions

The water-ball's inner color follows the current state; the white outer edge of the gradient never changes. Eye color and visibility are adjustable in settings.

StatemoodBall colorTrigger / operationAnimation and duration
IdleidleBlue #4fb3f7No active work; activity/status phase idleGentle bobbing
Thinking / workingwaitingGreen #34d399turn/start, step/start, assistant/chunk; or activity/status phase waiting / thinkingSide-to-side tilt until the next state
Tool calljumpingPurple #a855f7tool/call; or activity/status phase toolHopping until the tool result
Awaiting approvalauthorizingYellow #facc15approval/askedSoft breathing until approval/decided (allowed → continue; rejected/cancelled → error)
Awaiting your choicequestioningPink #ec4899tool/call of ask_user_questionSide-to-side tilt until tool/result (answered → continue thinking; cancelled/dismissed → stopped)
Thinking after a tool resultwaitingGreen #34d399tool/resultReturns to the thinking animation
CompleteddoneCyan #22d3eeactivity/status phase done; or turn/end with reason=completedCheerful jump for about 2.5 seconds
ErrorfailedRed #f87171turn/end with reason=errorDrooping animation for about 3 seconds
Stopped / interruptedstoppedDark gray #111827turn/end with reason=aborted, blocked, max-tokens, or another stop reasonSinking animation for about 3 seconds
Click reactionwavingOrange #fb923cClick the water ballSide-to-side wave for about 1.6 seconds

The plugin always supports standard DSH session events. It also accepts the optional activity/status events when an activity-tracking plugin is installed.

Install from GitHub

Requirements: Node.js, pnpm, and DeepSeek Harness.

dsh plugin --profile web add github:sundusk/dsh-waterball-pet

The repository includes the prebuilt host and browser artifacts, so installation does not need to run a third-party build script. Restart dsh web, then enable Water Ball Pet under Settings → Plugins → Web UI Plugins.

> Compatibility note: host allowlist > > A successful GitHub installation does not guarantee that the installed DeepSeek Harness > host supports the waterball settings namespace. The Harness > @deepseek-ai/dsh-host-apiproxy package maintains an allowlist for Web UI settings. > If your Harness version does not include waterball, the plugin may install but its > settings card can be unavailable or read-only, settings such as enabled/size/position > may not persist, and some host versions may not render the water-ball overlay. > > If this happens, upgrade DeepSeek Harness to a release that includes waterball in the > host allowlist, restart dsh web, and check again. Editing the local npx cache is only a > temporary development workaround; it does not fix other users' installations and may be > overwritten during reinstall. This is a Harness host compatibility issue, not a GitHub > or npm distribution issue.

Local development

dsh plugin --profile web add link:<absolute-path-to-this-repository>

Run pnpm build after changing the source and commit the updated lib/ artifacts.

桌面悬浮球(推荐)

水球不只可以活在网页里。如果你希望它出现在整个电脑桌面上——即使不看 DeepSeek Harness 的 Web UI,也能随时知道任务进度——可以试试 dsh-macDesktop-pet:一款 macOS 原生 悬浮球应用,在桌面上显示一颗置顶的发光小球,颜色随 Agent 状态呼吸变化(思考=绿、 调工具=紫、完成=青、出错=红),瞄一眼桌面即可掌握运行状态。

> Desktop companion: a native macOS app that shows an always-on-top glowing ball breathing > with the Agent's state, so you can track progress at a glance without opening the Web UI.