你在 DeepSeek Harness(下面简称 DSH)里让它改一个稍微大一点的功能,然后顺手切到编辑器看代码,或者开个浏览器查文档。过一会儿你会想知道它跑到哪一步了:是在读文件、在跑测试,还是停在一个确认框上等你点头。
于是切回 DSH 页面看一眼,再切回来。一趟两趟还好,任务一长,光来回切窗口就够烦的。
dsh-dafeiyu(DSH 大肥鱼)想解决的就是这一下「抬头看一眼」。 它是一个跟着 DSH 启停的桌面伴侣插件:桌面上多一只透明背景、无边框、始终置顶的角色,头顶挂着状态气泡,把 Agent 正在干什么直接写在你眼前。你在哪个应用里干活都看得见它,不用切回浏览器。
它是一只「只报状态」的桌面伴侣
大肥鱼由 DSH 插件启动,也随 DSH 一起退出。它是一个原生窗口,不是网页里的浮层,所以可以停在 DSH 窗口之外,跟你的编辑器、浏览器并排待着。
它报的状态来自 DSH 的会话事件。项目文档里专门写了一句:大肥鱼不会读取屏幕,推理强度和进度只显示上游真正提供的信息。也就是说,它不会去猜你在干什么,也不会截你的屏。
下面这张是项目仓库里的桌面实机截图:大肥鱼就待在桌面上。

它是社区项目,不是 DeepSeek 官方产品。项目自己的说明里写得很直白:unofficial fan-made project,与 DeepSeek 没有隶属或背书关系。
状态气泡里写的是什么
按项目文档,它会显示这几类真实任务状态:
思考、查找、修改、执行、验证、等待确认、完成、错误。
不是随便转个圈就完事:思考就摆思考的样子,调工具的时候换成干活的动作,需要你批准或回答时切到等待,跑完一轮会有一个完整的庆祝动作,工具临时失败或回合出错则是另一套表现。
下面这五张是项目仓库里收录的桌面状态图,依次对应其中几种状态。
思考中:

干活中(查找、修改、执行、验证都落在这里):

等你批准或者回答:

一轮任务完成:

出错:

动作的衔接也做了处理:点击类的互动会完整播完,再回到当前任务状态;来了新任务可以立刻打断装饰动作。拖拽期间只播悬空姿势,松手后完整落地。
气泡里不止有状态:项目、步骤、待办和多任务
状态只是第一层。按文档,大肥鱼还会显示:
- 当前项目和正在进行的步骤;
- 多个任务同时跑的时候,气泡里会列出正在运行的任务和它们各自的状态;
- DSH 提供的待办进度;没有真实进度数据时,就退一步显示当前阶段。
最后一条值得留意:进度条只有在 DSH 真的给出了结构化待办时才准,否则它显示的是阶段,不是编出来的百分比。
顺带把 DeepSeek 余额放在桌面上
最实用的一块大概是余额:它默认出现在状态气泡底部和设置页里,两个客户端共用同一套查询逻辑。
下面这张是项目仓库里的原生窗口实拍图,图里的余额是演示数据。

余额来源可以在设置里选:
| 来源 | 凭据来自哪里 | 查的是什么 |
|---|---|---|
| 自动(默认) | 优先用 DSH 模型设置里的 DeepSeek API Key;没配就尝试已登录账户 | 对应来源的余额 |
| API Key | DSH 的凭据服务(旧版 Host 读启动环境) | DeepSeek 的余额接口 |
| 已登录账户 | DSH 的 DeepSeek 账户服务 | 账户充值与赠送钱包 |
几条使用细节:
- 凭据在 DSH 的模型/账户设置里配,大肥鱼设置页不需要你再填一遍 API Key;
- API 余额和账户余额分开标明来源,人民币和美元也分开显示;
- 每 1 分钟自动刷新,同一个 Host 内共享缓存;手动刷新最快 5 秒一次;
- 查询失败时保留上一次成功的结果,并标明「上次查询」;没配置、授权失败和网络失败给的是不同的提示;
- Key、登录凭据和上游原始报错不会进入余额页面、角色消息或事件流;
- 没有余额凭据也能正常显示任务状态,余额这一项可以单独关掉。
插件本身不会发起模型调用——查余额就是查余额。
能摸头,也能拖走
大肥鱼保留了桌宠该有的手感:拖动、摸头、戳身体、碰尾巴,都有对应的动作。
这些动作和任务状态之间是有优先级的:工作、等待和错误消息会立刻打断待机或点击动作;完成提示会接管装饰动作;点击动作在播放期间不接第二个点击,状态被打断后还留 1.2 秒冷却。
待机动作的频率由「安静 / 标准 / 活泼」三档决定,每次待机动作播完后分别休息 45~90 / 25~45 / 12~22 秒。想让它彻底安静,打开「减少动态」:角色固定在站姿,待机和点击动画都停,但状态和余额照常更新。
设置入口和常用设置
DSH 0.2 里,设置入口是左侧的 插件 → dsh-dafeiyu。在插件列表里打开 dsh-dafeiyu,就是它自己的设置页;改动实时生效。

按项目文档,设置页里有这些项:
| 设置 | 作用 |
|---|---|
| 启用大肥鱼 | 开关当前 profile 的原生角色 |
| 角色大小 / 气泡大小 | 独立调整;小气泡保留基本字号 |
| 安静 / 标准 / 活泼 | 待机动作后的休息间隔 |
| 减少动态 | 固定姿势、停掉待机与点击动画 |
| 提示音 | 完成/出错时播放声音 |
| 气泡显示 | 常驻、隐藏,或只在指定状态显示 |
| 子 Agent | 允许子 Agent 的状态参与显示 |
| 页面内角色 | 在 DSH 页面右下角显示轻量角色,默认关闭 |
| 打开目标 | 自动、WebUI 或官方桌面端 |
| 显示余额 / 余额来源 | 余额开关与来源选择 |
原生窗口上还有右键菜单:调整大小、减少动态、打开对应的 DSH 客户端,以及只在本次运行隐藏/关闭角色。
如果你的 WebUI 不在默认地址,可以在启动 Host 时设置环境变量 DSH_DAFEIYU_WEBUI_URL,它会优先于自动推断的地址。
先想清楚:你要装在哪一边
这是安装前最容易被绕晕的地方——WebUI 里装的插件不会自动出现在官方桌面端,两边用的是各自的 profile。
| 使用方式 | 安装位置 | 设置入口 | 右键菜单的打开目标 |
|---|---|---|---|
| 浏览器 WebUI | web profile |
左侧插件 → dsh-dafeiyu | WebUI,默认 http://127.0.0.1:3080/ |
| 官方桌面端 | desktop profile |
左侧插件 → dsh-dafeiyu | 通过 dsh://open 唤起桌面应用 |
两边都启用的话,会各自启动一只原生角色;只想要一只,就在其中一个 profile 里关掉大肥鱼。第三方桌面包装器可能仍然在用 web profile,以它的实际启动方式为准。
安装
命令行走一遍之前,先完全退出对应的 DSH Host,装完再启动。走应用内的插件管理,就按应用提示重启。
官方桌面端:推荐直接在应用里装
- 打开官方 DeepSeek Harness 桌面应用,点左侧 插件;
- 点 添加插件,输入
dsh-dafeiyu@0.1.18,点 安装; - 装完点 立即启用,大肥鱼就出现在桌面上了;
- 在插件列表打开 dsh-dafeiyu,调角色、气泡和余额设置。
这条路用的是桌面应用自带的安装环境,你不需要装 Node.js,也不用敲 npm 命令。失败了就展开「查看安装详情」,把日志留着。
只填 dsh-dafeiyu 也能装,但会取安装源里的最新版——新版本刚发的时候,默认源可能还是旧的,填明确的版本号更稳,装完在详情页核对一下版本。
浏览器 WebUI
已全局安装 DSH:
dsh plugin --profile web add dsh-dafeiyu@0.1.18
dsh web
用 npx(不用全局装 DSH):
npx -y @deepseek-ai/dsh plugin --profile web add dsh-dafeiyu@0.1.18
npx -y @deepseek-ai/dsh web
从 DSH 源码跑的用户,在 Harness 仓库里执行:
pnpm dsh plugin --profile web add dsh-dafeiyu@0.1.18
pnpm dsh web
官方桌面端的命令行装法
桌面端也有命令行,但必须用桌面应用自带的 dsh:
- 先启动一次官方桌面应用,让它初始化
desktopprofile,然后完全退出; - 用应用自带的命令(支持命令注册的版本可以从应用菜单的 Manage dsh command… 配置,也可以直接调安装目录里的
resources/runtime/cli/bin/dsh,Windows 是dsh.cmd); - 执行:
dsh plugin --profile desktop add dsh-dafeiyu@0.1.18
- 重新打开桌面应用,在左侧插件 → dsh-dafeiyu 里调角色。
独立安装的 npm / npx @deepseek-ai/dsh CLI 改不了官方桌面端的 profile,别拿它去装桌面端。
离线装:用 Release 安装包
打开最新版下载页,在 Assets 里下载 dsh-dafeiyu-0.1.18.tgz,不用解压,用对应客户端的命令装:
# WebUI;路径换成你实际下载的位置
npx -y @deepseek-ai/dsh plugin --profile web add "C:\Downloads\dsh-dafeiyu-0.1.18.tgz"
# 官方桌面端;必须用应用自带的 dsh
dsh plugin --profile desktop add "C:\Downloads\dsh-dafeiyu-0.1.18.tgz"
桌面端也可以在 添加插件 的输入框里直接填 .tgz 的完整路径。
两个坑要避开:一是不要下载 GitHub 自动生成的 Source code (zip / tar.gz),那是源码不是安装包;二是 Windows、Linux、macOS 共用同一个 .tgz,不用找平台专属版本。
平台支持
| 平台 | 原生角色 |
|---|---|
| Windows 10 / 11 x64 | 随包提供 Helper;WSL2 可以通过 Windows 互操作启动 |
| Linux x64 | 随包提供 Qt Helper,需要图形桌面;glibc 2.35+,Ubuntu 24.04 有验收记录 |
| macOS 12+ | 原生 Swift / AppKit Helper,Universal 构建;实验性支持 |
标准安装包已经包含 Helper,不需要你另外装 Python,也不用单独启动什么程序,那是从源码开发才要走的路。
还有一点常被忽略:原生角色显示在 Host 所在的那台机器上。如果你连的是远程服务器,或者 Host 跑在没有图形桌面的环境里,桌面上是不会出现角色的——这种情况下可以改用「页面内角色」,它在浏览器里显示。
更新与排错
WebUI 用户完全退出 DSH 之后:
npx -y @deepseek-ai/dsh plugin --profile web update dsh-dafeiyu
官方桌面端 0.2.0-rc.2 暂时不支持应用内自动更新:在插件页面卸载大肥鱼,再添加 dsh-dafeiyu@0.1.18 并立即启用;或者完全退出应用后用自带的命令 dsh plugin --profile desktop update dsh-dafeiyu。做完重启客户端。
碰到问题时,项目文档给了几条比较实用的线索:
- 桌面端安装只显示
[exit 1]:这个信息不足以定位原因,要附上插件安装的详细日志(例如hub.log)、DSH 版本、系统和安装方式; - 余额查不出来:去 DSH 里检查凭据,以及你用的网关是否实现了同样的余额接口;
- 角色不出现:依次检查 profile、插件启用开关,以及 Host 有没有可用图形桌面。
动手之前,三点值得知道
第一,0.1.18 修的是两件事。 右键打不开官方桌面端(Helper 继承了 ELECTRON_RUN_AS_NODE 环境变量,导致 dsh://open 拉起的是另一个 Node 进程),以及气泡或提醒变化时角色位置发生偏移。角色帧和动画时长保持不变。
第二,素材和代码的许可是分开的。 代码是 MIT。当前角色动画来自社区项目 PC2005-cloud/dsh-pet,按来源的 24 fps 转成透明 WebP 帧,清单里 16 组动作、3,444 帧,画布统一 412 × 344;上游是 MIT,许可证随包分发。旧版大肥鱼帧已经归档到 legacy/,不在 MIT 覆盖范围内,也不随当前的 npm 包分发。另外鼠标手型指针图来自 Chromium 项目(BSD 3-Clause),提示音是这个仓库自己生成的。要用它的美术素材做别的事,先把 ASSET_LICENSE.md 读完。
第三,「大肥鱼」在社区里不止一个。 同一个词至少对应几种不同的东西:
- PC2005-cloud/dsh-pet:网页右下角的桌宠,纯陪伴,不感知 Agent 状态——也就是上面说的素材来源;
- 1190fasheqi/dafeiyu-pet 和作者的 QCYTSN/ds-local-pet:独立桌宠版,带自己的 AI 对话、天气播报和系统资源提醒;
- 还有右下角的余额小挂件类插件。
dsh-dafeiyu 属于插件版:只跟随 DSH 会话事件报状态、查余额,不做第二套聊天、不存 API Key、不做天气和硬件监控。 这几条在项目的取舍文档里是明确写出来的。所以看到别处说「大肥鱼能聊天」时,先确认说的是哪个项目。
入口
- 项目仓库:QCYTSN/dsh-dafeiyu(MIT)
- 最新版下载页:releases/latest,安装包
dsh-dafeiyu-0.1.18.tgz - npm:dsh-dafeiyu
- 更新日志:CHANGELOG.md
想收更新通知的话,在仓库上选 Watch → Custom → Releases;Star 只是收藏。
