whale-girl:给 DeepSeek Harness 网页界面加一只会升级的桌宠

前言

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.jsondsh 字段里:官方 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. 拖拽优先级最高;放下后有 1.5 秒缓冲,再回到底层状态。
  2. 失败情绪窗口不会被新会话的欢迎盖掉。
  3. 会话在思考或等待批准时,会压住睡觉和散步。
  4. 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 的路径即可复现:

  1. 看右下角是否出现宠物。若正停留在初始配置或欢迎页,宠物会隐藏,进到工作台后再看。
  2. 点击宠物打开菜单,选喂食或玩耍,观察啃咬 / 抛接球,以及随后的开心动画和气泡。
  3. 按住拖到别处,放下后会先缓冲再回到待机或当前陪伴态。
  4. 鼠标悬停,看等级、任务数和最近一条回忆。
  5. 开一个新会话,应看到挥手欢迎;会话思考中进入沉思;等待批准时进入期待等待。
  6. 任务成功会欢呼并记账;失败会惊吓再失落,经验不扣。

空闲达到配置里的 sleepAfterMs(默认 60 秒)会打盹。拖拽、喂食、玩耍或打开菜单都会被当成用户在场,空闲计时从这次交互重新起算。

配置(改完热生效)

参数走宿主 settings,写在 /settings.yamlwhale-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 官方安装说明,不是额外发挥:

  1. 只覆盖 web。 package.json 声明 dsh.client.platformweb。终端或不带 Web GUI 的 profile 装了也不会按桌宠来用。
  2. 插件跑在当前 dsh 进程权限下。 目录页写了:安装时可能执行代码。装之前看仓库和 MIT 许可证;生产或共享环境建议固定 commit,避免 main 后续推送悄悄改掉实际运行的内容。
  3. 社区目录不是官方商店。 whale-girl 是 vlln 维护的社区开源项目。目录站点与 DeepSeek / 幻方无官方从属关系。
  4. 不要和皮肤插件当成同一个东西。 目录「相关插件」里有 dsh-deep-whale(鲸鱼娘皮肤系列),那是另一套皮肤,不是这只桌宠。
  5. 成长规则不能配。 等级、称号、XP 来源是代码级封闭集合。能调的是尺寸、透明度、游走、睡眠等待和文案这类体验层。
  6. 装完要重启 web。 配置热更新只管 settings;插件本身的 bundle 合成发生在启动时。
  7. 角色形象有署名。 默认鲸鱼娘形象来自 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
羽毛球分组比赛记分
小程序二维码

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

小夜