大肥鱼想吃饭 · Big Fat Fish Wants to Eat
一个住在 DeepSeek Harness Web UI 浮窗里的小鲸鱼娘跑酷,用来填满等 AI 回答的那几分钟:跳过生活里的糟心事,冲到大碗白米饭,回答好了会有提示。

| 胜利结算 | 失败结算 | 终点米饭 |
|---|---|---|
![]() |
![]() |
![]() |
中文
功能
- 随时可玩:AI 空闲、正在回答、刚回答完都能开一局;单局可选 0.5 / 1 / 2 / 3 分钟。
- 一个键:空格 / ↑ / W / 点击 / 触屏点击跳跃。撞到词就结束,冲到大碗白米饭就是通关。
- 只有文字的生活障碍:加班、内卷、PUA、内耗、焦虑、失眠、脱发、肥胖、贫穷、长痘、生病(英文模式显示 OT / RACE / PUA / BURN / ANX / SLEEP / HAIR / FAT / DEBT / ACNE / SICK)。纯文字、随机颜色、无边框无底板、不倾斜;每个障碍宽高随机,间距随机,并且用可达性规则保证下一跳一定跳得过去。障碍会随跳跃高度和本局进度变大。
- 米饭一直看得见:从第一帧就停在右侧,整局慢慢靠近,最后 5 秒加速冲向鲸鱼娘。
- 结算对话框:胜利 / 失败各有一张插画;关闭对话框会回到暂停的起始页,不会自动重开。
- 暂停 / 继续 / 重新开始;拖动标题栏可以移动游戏卡片。
- 圆形可拖动浮窗:带鲸鱼娘头像的圆形按钮,默认在右侧、从上往下 1/5 处;拖到任意位置后会按“最近边缘 + 纵向比例”记住,切换全屏/改变窗口大小时不会跑偏。有未读回答时出现一个小圆点,没有闪烁光效。
- 回答好提示:游戏区上方出现
回答好了提示条;开着音效时会响提示音。正在跑的这一局不会被强行打断。 - 中英文界面,在设置里切换。
- 防沉迷可选,默认关闭:温和档为 3 局 → 休息 30 秒、每次等待最多玩 5 分钟、每天最多 60 分钟、回答完成后 5 秒冷却、达到每日 80% 时轻提示。
- 音效默认关闭。
- 不联网、无遥测、无第三方运行时依赖;所有设置存在浏览器
localStorage。
安装
前提:已安装 DeepSeek Harness,并且带 Web UI(桌面版自带 Web UI;本项目在桌面版 0.2.1-rc.2 上开发验证)。
DSH 插件页的「添加插件」接受三种地址:npm 包名、GitHub 仓库地址、本地目录路径。本插件现在可以用后两种安装;npm 包名要等发布后才可用(见下)。
方式一:在 DSH 界面里安装(推荐)
- 打开 DSH 侧边栏的「插件」页,点「添加插件」。
- 在「包名或地址」输入框里填 GitHub 仓库地址:
https://github.com/Fr20210478/dsh-whale-chase-rice - 点「安装」,装好后按提示重启 DSH。对话面板右侧会出现圆形鲸鱼娘头像。
「添加插件」的输入框也接受 npm 包名和本地目录路径。插件包名就是 npm 包名:形如
dsh-xxx或@作者/插件名,也就是社区插件 README 安装命令里dsh plugin add或pnpm add后面那一段(示例:dsh-plugin-whale-pet)。本插件目前只通过 GitHub 分发;计划使用的 npm 包名是
dsh-whale-chase-rice,但尚未发布到 npm,所以现在请填上面的 GitHub 地址。等发布到 npm 后,也可以直接填这个包名,由 DSH 按「安装源」下载。填 GitHub 地址或
.tgz直链时不经过安装源,需要本机能直接访问 GitHub;如果访问不了,可以改用本地目录安装。
方式二:命令行安装
dsh plugin --profile web add https://github.com/Fr20210478/dsh-whale-chase-rice
把 web 换成你要安装到的 profile(Web UI 一般是 web)。桌面版正在运行时不能对它执行 dsh plugin,请先用上面的界面安装。
方式三:本地目录(开发 / 改代码时)
克隆仓库后,用 Harness 的插件管理器 install_bundle 指向仓库根目录(package.json 所在目录),或在「添加插件」里直接填这个目录的绝对路径。重启 Harness 后生效。需要移除时,在插件页卸载,或对 dsh-whale-chase-rice 执行 remove_bundle。
升级:插件页里没有「更新」按钮的插件,需要先卸载再安装新版本。
没出现头像? 到「插件」页确认这个 bundle 已安装并启用,然后重启 DSH。
使用
- 拖动圆形头像移动它;单击打开游戏。
- 拖动游戏卡片标题栏移动卡片;
Esc关闭,P暂停。 - 齿轮里设置:音效、语言、单局时长、防沉迷、统计重置、最佳分数重置。
- AI 回答好时,如果正在玩,这一局继续,提示条出现在游戏区上方;如果窗口收起且你玩过,会重新弹出并响一次提示音(音效开启时)。
替换美术
assets/ 下的 whale、victory、failure、rice 四个基名,支持 .png / .jpg / .jpeg / .webp;构建时取每个基名最新的文件,因此替换图片不需要改代码:
node scripts/build.mjs # 把最新图片内联进 client.js
# 或开发时保持监听:
npm run watch
只替换文件不会改变正在运行的插件:图片是在构建时内联进 client.js 的,必须先重新构建,再重新安装 / 重启 Harness(客户端热更新可用时会自动加载,否则需要重启)。建议尺寸:whale 512px 透明底、victory / failure 384px 透明底、rice 420px 透明底。详见 assets/README.md。
开发
node scripts/build.mjs # src/ + assets/ -> client.js
node --test # 29 个测试:游戏规则、防沉迷、bundle、界面
npm pack --dry-run # 检查最终会发布到 npm 的文件列表
client.js 里的模块 id 和版本号都从 package.json 读取,改包名或版本号后重新构建即可。
| 路径 | 作用 |
|---|---|
index.js |
Host 半(空实现) |
src/core.js |
纯游戏 / 防沉迷规则 |
src/render.js |
Canvas 场景、文字障碍、Q 版动画 |
src/client.template.js |
React 浮窗、启动器、对话框、设置 |
scripts/build.mjs |
把所有源码拼成 client.js |
test/ |
node:test 测试 |
locale/ |
插件管理器展示元数据(中 / 英) |
cordis.patch.yml |
插件行声明(name 即 npm 包名) |
许可
MIT。assets/ 里的鲸鱼娘插画是为本项目生成的;如果二次分发时想换形象,替换 assets/ 即可。
English
A tiny chibi whale-girl runner that lives in a floating window of the DeepSeek Harness Web UI. It fills the minutes you spend waiting for the AI: jump the burdens of work life, reach the bowl of rice, and get a nudge when the answer is ready.
| Victory | Failure | The goal |
|---|---|---|
![]() |
![]() |
![]() |
Features
- Playable any time, not only while the AI is replying. Runs are 0.5, 1, 2 or 3 minutes long.
- One input. Space / ↑ / W / click / tap to jump. Hit a word and the run ends; reach the rice bowl for the victory dialog.
- Text-only burdens: 加班, 内卷, PUA, 内耗, 焦虑, 失眠, 脱发, 肥胖, 贫穷, 长痘, 生病 (OT / RACE / PUA / BURN / ANX / SLEEP / HAIR / FAT / DEBT / ACNE / SICK in English). No outline, no chip fill, no rotation; random medium colours. Size and spacing are rolled per obstacle, a passability rule guarantees the next jump is possible, and burdens grow with the jump height and over the run.
- The rice bowl is always in sight: it waits at the right edge, drifts closer very slowly, then rushes toward the whale girl during the last five seconds.
- Result dialogs with the supplied illustrations. Closing a dialog returns to the paused start screen — it never auto-restarts.
- Pause / resume / restart; drag the card by its title bar.
- Circular draggable launcher with the whale-girl avatar; it defaults to the right edge, one fifth down. Positions are remembered as "nearest edge + vertical ratio", so fullscreen and window resizes keep the same relative spot. A static dot marks an unread answer; there is no glow.
- Answer-ready nudge: an
Answer readystrip above the play field plus an optional chime. A run already in progress is not interrupted. - English / 中文 interface.
- Anti-addiction, optional and off by default: 3 runs → 30 s rest, 5 min per AI wait, 60 min per day, a 5 s cooldown after an answer, and a notice at 80 % of the daily budget.
- Sound off by default. No network calls, no telemetry, no third-party
runtime dependencies; settings live in
localStorage.
Install
Requirements: DeepSeek Harness with the Web UI (the desktop app bundles one;
this project is developed and tested against the desktop app, 0.2.1-rc.2).
The plugin page's Add plugin field accepts three kinds of spec: an npm package name, a GitHub repository address, or a local directory path. For this plugin, use the last two for now; the npm package name becomes usable once it is published (see below).
Option 1: install from the DSH UI (recommended)
- Open the Plugins page in the DSH sidebar and click Add plugin.
- In Package name or address, enter the GitHub repository address:
https://github.com/Fr20210478/dsh-whale-chase-rice - Click Install and restart DSH when prompted. The circular whale-girl launcher appears at the right edge of the Conversation panel.
The Add plugin field also accepts an npm package name and a local directory path. The plugin package name is the npm package name — like
dsh-xxxor@author/plugin. It is the part afterdsh plugin addorpnpm addin a community plugin's README install command (example:dsh-plugin-whale-pet).This plugin is currently distributed only through GitHub; the planned npm package name is
dsh-whale-chase-rice, but it is not published to npm yet, so use the GitHub address above for now. Once the npm package exists, entering that package name downloads it through the selected Registry.A GitHub address or
.tgzlink is fetched directly and does not go through the registry, so this machine must reach GitHub itself; if it cannot, install from a local directory instead.
Option 2: command line
dsh plugin --profile web add https://github.com/Fr20210478/dsh-whale-chase-rice
Replace web with the profile you want. The desktop app owns its profile and
must be fully quit before dsh plugin can modify it — while it is running, use
the UI route above.
Option 3: local directory (development)
Clone the repository, then point the harness plugin manager (install_bundle)
at the repository root (the directory containing package.json), or enter
that absolute path in Add plugin, and restart Harness. Remove it later by
uninstalling it on the Plugins page or by calling remove_bundle for
dsh-whale-chase-rice.
Upgrades: plugins with no Update button on the Plugins page must be uninstalled and reinstalled to move to a newer version.
No launcher? Check that the bundle is installed and enabled on the Plugins page, then restart DSH.
Use
- Drag the circular avatar to move it; click it to open the game.
- Drag the card by its title bar.
Esccloses it,Ppauses. - Settings: sound, language, run length, anti-addiction, reset stats / best.
- When the AI finishes while you are playing, the run keeps going and the answer strip appears above it. If the window was closed and you had played, it reopens and the chime fires once (when sound is on).
Art
Replace any of whale, victory, failure, rice in assets/ with
.png / .jpg / .jpeg / .webp; the build picks the newest file per base name, so
no code changes are needed:
node scripts/build.mjs
# or keep it rebuilding while you iterate:
npm run watch
Replacing a file alone does not update the running plugin: art is inlined
into client.js at build time, so rebuild first and then reinstall / restart
Harness (a client hot reload may pick it up; otherwise restart). Suggested sizes: whale 512 px transparent,
victory / failure 384 px transparent, rice 420 px transparent. See
assets/README.md.
Development
node scripts/build.mjs # src/ + assets/ -> client.js
node --test # 29 tests: game rules, anti-addiction, bundle, UI
npm pack --dry-run # inspect the exact files that would be published
The module id and version inside client.js are read from package.json;
rebuild after renaming the package or bumping the version.
| Path | Role |
|---|---|
index.js |
Host half (nothing to serve) |
src/core.js |
Pure game and anti-addiction rules |
src/render.js |
Canvas scene, text burdens, chibi animation |
src/client.template.js |
React overlay, launcher, dialogs, settings |
scripts/build.mjs |
Concatenates everything into client.js |
test/ |
node:test suites |
locale/ |
Plugin-manager display metadata (EN / zh) |
cordis.patch.yml |
Plugin row declaration (name is the npm package name) |
License
MIT. The whale-girl illustrations in assets/ were generated for
this project; replace them if you redistribute the game with different art.



No comments yet. Be the first to write one.