前言¶
DeepSeek Harness(DSH)把「一切皆插件」写进官方仓库说明。网页界面跑起来之后,任务完成、会话开始、等待批准、请求出错,这些状态大多还是落在面板和日志里,要盯着看才知道发生了什么。主题与外观这一类插件里,换皮肤、改布局比较常见;把工作台本身做成一只会动的伙伴,是另一条路。
whale-girl 走的就是后一条。它在 DSH 网页界面右下角放一只 QQ 宠物形态的桌宠:可以拖拽,可以投喂和玩耍,也会跟着任务、会话和陪伴时长往上攒资历。本文按社区插件目录页、仓库 README、成长系统与状态机文档、以及 package.json / 配置源码交叉核对后整理:它是什么、能做什么、怎么装、怎么配。
需要先说清边界:社区插件目录(deepseek-harness-plugin.com)是独立站点,和 DeepSeek / 幻方没有官方从属关系,不能当成官方应用商店。DSH 本体在 deepseek-ai/deepseek-harness。
这是什么¶
whale-girl 是一款面向 DSH 网页界面的主题与外观插件,由 vlln 维护,GitHub 仓库为 vlln/whale-girl。截至 2026 年 8 月 17 日,仓库约 197 stars,许可证 MIT,主要语言 JavaScript。仓库 package.json 里的版本号是 0.1.0。
它解决的问题很具体:在 Web GUI 里放一只悬浮桌宠,把 agent 工作台上已经发生的事变成可见的动作和一份只增不减的账本。目录页的定位是:
DSH 网页界面的 QQ 宠物形态桌宠:右下角悬浮、可拖拽/投喂/玩耍的积累型伙伴。
实现形态也写在 package.json 的 dsh 字段里:官方 bundle 插件(dsh.bundle 指向 cordis.patch.yml),客户端声明 platform: web。也就是说,它挂在网页端,不是终端 TUI 插件。
默认角色是「鲸鱼娘」。README 写明角色形象由 ZipZipPipe 创作(「鲸鱼娘」表情包角色),sprites 基于其角色设定生成。素材清单 lib/assets/manifest.json 里,该角色的 credit 也是 ZipZipPipe。
核心功能¶
右下角悬浮,可拖、可喂、可玩¶
装完并重启 web 之后,宠物出现在右下角。README 给出的基本操作是:
- 点击弹出菜单:🍗 喂食、🎾 玩耍
- 拖拽可移动
- hover 显示状态条:资历等级、任务数、最近共同回忆
- 初始配置 / 欢迎页(onboarding)阶段宠物隐藏
喂食和玩耍本身不加经验,只触发啃咬 / 抛接球,然后进入开心状态,并弹出可配置的回话气泡。成长文档把这类互动明确写成「纯乐趣,无数值影响」。
跟着工作台走的 15 个状态¶
宠物不是循环播一段待机动画。仓库把行为收成一张 15 态状态机,角色必须为全部 15 个状态提供素材(缺一会被 verify-assets 门禁拒收)。README 里的对照如下:
| 你做什么 / 发生什么 | 宠物表现 |
|---|---|
| 拖拽宠物 | 被斜向拉扯(drag) |
| 点击菜单喂食 / 玩耍 | 啃咬 / 抛接球(eat / play)→ 开心(joy) |
| 空闲 ≥60s | 打盹(sleep);互动时醒过来(wake) |
| 任务完成 / 升级 / 称号 / 回合完成 | 举手欢呼(celebrate) |
| 任务失败 / 请求出错 | 惊吓(error)→ 失落(disappointed) |
| 新会话开始 | 挥手欢迎(welcome) |
| 任一会话运行 / 思考中 | 沉思陪伴(think,偶尔插入 working) |
| 等待批准 | 期待等待(wait) |
| 周期游走 | 散步(walk) |
| 常态 | 待机(idle,随机眨眼 / 转身) |
状态机文档还补了几条转换规则,写文章时值得单独记住:
- 拖拽优先级最高;放下后有 1.5 秒缓冲,再回到底层状态。
- 失败情绪窗口不会被新会话的欢迎盖掉。
- 会话在思考或等待批准时,会压住睡觉和散步。
think是思考陪伴的常态;working是客户端节奏器随机插入的工作姿态,不是任务指示灯。
完整优先级和触发源以仓库 docs/state-machine.md 为准。
积累型成长:经验、称号、回忆¶
成长系统设计成「零负反馈」:无衰减、无惩罚、无需求。失败只计数,并播一段短暂失落,不扣资历。权威说明在 docs/growth-system.md。
经验来源是核实过的这几项:
| 来源 | XP | 触发 |
|---|---|---|
| 完成任务 | +10 | 任务完成(页面关闭期也不漏记) |
| 新会话(startup) | +5 | agent/session-start,source 为 startup |
| 续接 / 延续(resume / compact / clear) | +2 | 同上,其余 source |
| 活跃陪伴时长 | 累积 | 任务运行中按轮询差分累加;单次增量封顶 5 分钟 |
请求错误不计数、不惩罚,只触发情绪。等级由经验派生,公式是 xpForLevel(L) = 50·L·(L−1)/2,也就是 2 级 50、3 级 150、4 级 300。文档写明:level 永远由 xp 计算,禁止手写。
称号是封闭集合,由统计数据幂等派生,解锁时写入回忆并触发庆祝:
| 称号 | 解锁条件 |
|---|---|
| 初次协作 | 完成 ≥1 任务 |
| 勤劳伙伴 | 完成 ≥20 任务 |
| 百炼成钢 | 完成 ≥100 任务 |
| 常驻伙伴 | 累计活跃 ≥6 小时 |
| 越挫越勇 | 失败 ≥5 次 |
| 广结善缘 | 开启 ≥10 会话 |
回忆是环形日志,最多 8 条,hover 状态条展示最新一条。多角色共用同一份账本:资历记的是陪伴关系,不是某个外观。
XP 数值、等级曲线、称号集合与阈值属于语义层,配置门禁不允许用户改。README 的原话是:改这些会破坏积累账本一致性。
可换角色,行为文法共通¶
菜单里有「🎭 换角色」,也可以改 localStorage 键 whale-girl:character。每个角色必须提供全部 15 状态素材;事件到动作的映射全角色共通,角色只能填资源槽,不能改触发或优先级。
仓库把「加角色」写成资源级贡献:产出 15 张 sheet 加一段 manifest 条目,不必改代码。操作说明在 docs/adding-a-character.md,验收命令是:
node scripts/gates/verify-assets.mjs
README 还把它标成官方 repository-plugin 格式的完整范本,结构和门禁可对照仓库根目录的 AGENTS.md。这是给插件作者看的,日常使用桌宠不需要读这些。
安装与启用¶
社区目录页给出的安装命令是:
dsh plugin add github:vlln/whale-girl
仓库 README 推荐走 web profile,并钉到 main 分支(说明构建产物已入库):
dsh plugin --profile web add "github:vlln/whale-girl#main"
也可以从本地目录安装:
dsh plugin --profile web add <whale-girl 本地路径>
装完必须重启 web,bundle 层在启动时合成,右下角才会出现宠物。之后更新用:
dsh plugin --profile web update whale-girl
同样要重启才生效。
如需可复现安装,目录页建议固定 commit 哈希,写法是:
dsh plugin add github:vlln/whale-girl#<commit>
把 <commit> 换成实际哈希。目录页和 DSH 官方文档都提醒:插件以当前 dsh 进程的权限运行,安装时可能执行代码;安装前应检查源代码仓库和许可证。
典型用法¶
日常互动¶
重启 web 后,按 README 的路径即可复现:
- 看右下角是否出现宠物。若正停留在初始配置或欢迎页,宠物会隐藏,进到工作台后再看。
- 点击宠物打开菜单,选喂食或玩耍,观察啃咬 / 抛接球,以及随后的开心动画和气泡。
- 按住拖到别处,放下后会先缓冲再回到待机或当前陪伴态。
- 鼠标悬停,看等级、任务数和最近一条回忆。
- 开一个新会话,应看到挥手欢迎;会话思考中进入沉思;等待批准时进入期待等待。
- 任务成功会欢呼并记账;失败会惊吓再失落,经验不扣。
空闲达到配置里的 sleepAfterMs(默认 60 秒)会打盹。拖拽、喂食、玩耍或打开菜单都会被当成用户在场,空闲计时从这次交互重新起算。
配置(改完热生效)¶
参数走宿主 settings,写在 /settings.yaml 的 whale-girl: 段,或用设置 UI。README 写明修改后热生效,不用重启。仓库给出的示例如下:
whale-girl:
enabled: true # 网页端渲染开关(与桌面伴侣并存时设 false 关闭网页端宠物,避免双宠物)
size: 110 # 宠物尺寸 px(64–160)
opacity: 1 # 常态透明度(0.2–1)
walk:
enabled: true # 游走开关
sleepAfterMs: 60000
这些默认值可以在 lib/src/config.mjs 里对上。同一份源码还暴露了更细的体验层项,例如游走间隔、游走速度、各情绪窗口时长、喂食 / 玩耍回话文案池。语义层(XP、称号、回忆条数上限)不在这份 schema 里,门禁会拦住把它们配出去的改动。
enabled 专门处理「网页端宠物和桌面伴侣同时存在」的情况:并存时把网页端关掉,避免屏幕上出现两只。
适用场景与注意事项¶
适合这些情况:
- 主要在 DSH 网页界面里跑 agent,希望任务、会话、批准等待有一眼能看见的反馈
- 想在主题与外观之外,给工作台加一个可积累、只增不减的轻量伙伴
- 准备给 whale-girl 画新角色,或把它当作 repository-plugin 的结构范本
使用前注意下面几条,都来自目录页、仓库文档或 DSH 官方安装说明,不是额外发挥:
- 只覆盖 web。
package.json声明dsh.client.platform为web。终端或不带 Web GUI 的 profile 装了也不会按桌宠来用。 - 插件跑在当前 dsh 进程权限下。 目录页写了:安装时可能执行代码。装之前看仓库和 MIT 许可证;生产或共享环境建议固定 commit,避免
main后续推送悄悄改掉实际运行的内容。 - 社区目录不是官方商店。 whale-girl 是 vlln 维护的社区开源项目。目录站点与 DeepSeek / 幻方无官方从属关系。
- 不要和皮肤插件当成同一个东西。 目录「相关插件」里有
dsh-deep-whale(鲸鱼娘皮肤系列),那是另一套皮肤,不是这只桌宠。 - 成长规则不能配。 等级、称号、XP 来源是代码级封闭集合。能调的是尺寸、透明度、游走、睡眠等待和文案这类体验层。
- 装完要重启 web。 配置热更新只管 settings;插件本身的 bundle 合成发生在启动时。
- 角色形象有署名。 默认鲸鱼娘形象来自 ZipZipPipe 的角色设定,二次使用或再创作应回到仓库致谢与许可证自行判断。
仓库成长文档里还列了一些未实现方向(例如按 token 消耗给 XP、更多称号维度)。那些只是文档中的规划,当前版本不能当成已有能力。
小结¶
whale-girl 把 DSH 网页工作台收成一只 QQ 形态桌宠:右下角悬浮,可拖拽、投喂、玩耍;任务、会话和陪伴时长会变成等级、称号和回忆。状态机有 15 个动作,成长账本只增不减,配置面只开放体验层。它解决的不是加速推理或补工具,而是让长时间开着的 Web GUI 多一层看得见的陪伴和反馈。
相关地址:
- 社区目录页:https://deepseek-harness-plugin.com/zh-CN/plugins/whale-girl/
- GitHub 仓库:https://github.com/vlln/whale-girl
- DeepSeek Harness 官方仓库:https://github.com/deepseek-ai/deepseek-harness