Provides a Windows desktop floating widget for DeepSeek Harness, switching state actions based on real-time agent events while displaying project phases and to-do progress.
- Language
- JavaScript
- License
- MIT
- Branch
- main
Install
$ dsh plugin --profile web add dsh-dafeiyuRun the command above in your terminal to install this plugin via the dsh CLI. You can switch Profile in the top-right corner. New to dsh? Read the beginner tutorial
Install via your agent
Install the DeepSeek Harness plugin QCYTSN/dsh-dafeiyu for me: review the repository at https://github.com/QCYTSN/dsh-dafeiyu first, then run the install command and verify the plugin loads successfully.
Paste this instruction to the DSH Web GUI assistant — it will install and verify for you.
One-Line Description
DSH Da Fei Yu is a small fish floating window that stays on top of the Windows desktop. It is enabled by the DeepSeek Harness plugin and starts/exits together with DSH. By subscribing to DSH's Session events, it can switch between thinking, working, waiting, completed, and error states in real-time, allowing you to see what the Agent is currently doing at a glance even when you switch to VS Code, browsers, or other software.
Core Features
- Displays the character on the Windows desktop as a borderless, transparent, always-on-top window, bound to the DSH Host lifecycle
- Maps DSH Agent events (turn/start, assistant/message, tool/call, tool/result, todo/write, turn/end, etc.) into 7 states: Idle, Thinking, Working, Waiting, Completed, Error, Disconnected
- Based on the current phase and actual todos, displays the project name, phase name, current todo, and "Completed N/M steps" progress in the bubble
- When multiple DSH Sessions run in parallel, selects the most attention-requiring task based on priority (Waiting > Error > Working > Thinking > Idle), while listing other active tasks in the bubble
- Adjust size, bubble, activity level, whether to respond to sub-agents and other parameters in real-time through DSH WebUI's "Settings → Plugins → Plugin Config → Da Fei Yu Desktop Companion" without needing to restart the floating window
- Supports desktop interactions such as drag, single/double click, right-click menu, hide for this session, close for this session, etc.; window position and settings are automatically saved
Technical Implementation
- Languages: JavaScript (Node.js, ESM) + Python 3 (Helper subprocess, PySide6/Qt desktop rendering)
- Key Dependencies: @deepseek-ai/schemastery (Schema definition for DSH settings panel); PySide6>=6.7,<7 (Helper desktop rendering); PyInstaller (packages Helper into .exe, regular users don't need to install themselves)
- Architecture Pattern: DSH plugin injects via Cordis patch, injecting sub-capabilities like settings, webServer, sessions into
apply(); subscribes to globalsession/eventandsession/disposed, withCompanionReducermerging events into a message stream, then writes to Helper subprocess's stdin via JSONL protocol; Helper renders transparent borderless window withQt.WindowStaysOnTopHint | FramelessWindowHint, and receives configuration via environment variables (DSH_DAFEIYU_SCALE, etc.) - Entry Files: Node side
src/index.js(exportsapply,ConfigSchema,HelperProcess,CompanionReducer); DSH settings panellib/client.js(injects@deepseek-ai/dsh-client-ui-settings-plugins); desktop renderingruntime/helper.py
Use Cases
DSH Da Fei Yu is suitable for users who "open DSH and let the Agent work on its own, while they go write code in VS Code or attend meetings": you want to know at any time whether the Agent is still thinking, stuck on which tool call, waiting for your confirmation, or has finished this round, but don't want to constantly switch back to the DSH tab. It doesn't read screens or monitor other applications—the state comes entirely from DSH's real event stream, making it suitable for scenarios requiring privacy and "only seeing real progress"; it's not suitable for users who need screenshots, monitoring other applications, or displaying desktop companions on macOS or pure Linux.
Prerequisites & Compatibility
| Dependency | Minimum Version | Description |
|---|---|---|
| DSH | Not declared | Plugin injects via dsh.bundle.patch, requires DSH WebUI (dsh plugin --profile web) |
| Node.js | >=22.19 | Only needed by plugin host process (package.json#engines.node) |
| Python + PySide6 | Python 3 + PySide6>=6.7,<7 | Only needed when developing from source or rebuilding Helper; regular users don't need to install themselves via prebuilt .exe |
| Operating System | Windows 10/11 x64 | Desktop floating window runtime target; CPU restricted to x64 |
| WSL2 | — | Can install via dsh plugin --profile web add in WSL terminal, Helper runs via cmd.exe calling Windows .exe |
| Native Modules | PySide6 (Helper only) | Helper is already packaged as standalone .exe via PyInstaller in the package |
Installation
dsh plugin --profile web add github:QCYTSN/dsh-dafeiyu
Configuration Options
| Config | Type | Description | Default |
|---|---|---|---|
| 启用大肥鱼 | Toggle | Exits desktop companion immediately when disabled; no manual restart needed when re-enabled | Enabled |
| 角色大小 | 70%–140% (Slider) | Adjusts overall size of desktop floating window character | 100% |
| 气泡大小 | 80%–120% (Slider) | Adjusts status bubble size, balancing information readability | 100% |
| 活跃程度 | Quiet / Standard / Lively | Controls frequency of micro-movements like blinking and observing when idle | Standard |
| 减少动态效果 | Toggle | Reduces walking, loop frames and programmatic swaying; rendering frame rate also drops to 25 FPS | Disabled |
| 气泡显示 | Always Show / Fully Hide / Custom | In custom mode, can check which states show bubbles | Always Show |
| 自定义显示状态 | Multi-select (Idle/Thinking/Working/Waiting/Completed/Error) | Only effective when "Bubble Display=Custom", determines which states show bubbles | Completed, Error, Waiting |
| 响应子 Agent | Toggle | Allows sub-agents to seize pet status when enabled; defaults to following only top-level tasks to avoid excessive state jumping | Disabled |
FAQ
Q: Installation command succeeded, but I can't see Da Fei Yu on the desktop.
A: First confirm the installation used --profile web; then you must completely exit DSH Host (not just close the browser tab) and restart; go to DSH's "Settings → Plugins → Plugin Config → Da Fei Yu Desktop Companion" and confirm "Enable Da Fei Yu" is checked; also confirm you're using the installation package with prebuilt Helper (runtime/bin/win32-x64/dsh-dafeiyu-helper.exe exists), not just source code clone.
Q: I closed the DSH browser tab, but Da Fei Yu is still on the desktop.
A: Da Fei Yu is bound to the DSH Host process lifecycle, not the browser tab. As long as DSH is still running in the background, it will continue to display; it will automatically close after completely exiting DSH Host.
Q: Why does the status card only show the phase name without "Completed N/M steps" numbers?
A: Numbered progress is only reliably calculated when the DSH Agent writes structured todos (todo/write events). When DSH doesn't provide real todos, the status card only displays the current working phase to avoid fabricating percentages.
Q: After right-clicking "Close for This Session", Da Fei Yu didn't come back automatically.
A: Expected behavior. "Close for This Session" suppresses auto-restart during the current DSH run; it will recover after completely exiting and restarting DSH. To permanently close, just uncheck "Enable Da Fei Yu" in DSH settings.
Q: I'm a regular user, do I need to install Python or PySide6 myself?
A: No. The npm alpha package and GitHub Release .tgz package already include the Windows x64 dsh-dafeiyu-helper.exe (PyInstaller packaged), and DSH will automatically pull it up. Only when developing from source or rebuilding Helper yourself do you need to install PySide6>=6.7,<7 locally.
Q: Can I use it on macOS or pure Linux?
A: No. The current Alpha desktop floating window only supports Windows x64; WSL2 can display the floating window by calling the Windows Helper via cmd.exe, but regular Linux, remote Linux, and containers are not targets for this version's desktop display.
Q: Does this plugin read the screen, monitor other applications, or upload data?
A: No. The plugin only subscribes to DSH's session/event and session/disposed, doesn't read or save model API Keys, doesn't take screenshots, doesn't monitor keyboard or other applications, and doesn't send telemetry; the settings card reuses DSH's own local Web service (/plugins/dsh-dafeiyu/config, and only accepts 127.0.0.1 requests), doesn't open new network ports.
Q: How do I uninstall?
A: Completely exit DSH Host, then run dsh plugin --profile web remove dsh-dafeiyu, then restart DSH. Plugin code and Helper will be removed from the web profile; DSH may retain a historical settings file that no longer takes effect, which won't start processes or occupy ports.
Getting Started Difficulty
Beginner — No additional configuration needed: install the plugin, start DSH, start a task and you can see Da Fei Yu working; the only things to care about are "confirm the system is Windows x64", and the few toggles in the settings panel are all in the Chinese UI.
Known Issues & Limitations
- Alpha Status: Version is
0.1.0-alpha.12, settings panel and desktop status text use Simplified Chinese (README.md:81), interface and defaults may still be adjusted. - Windows x64 + WSL2 Only: Helper actually runs on Windows x64; regular Linux, remote Linux, containers, macOS cannot display desktop floating windows (README.md:111-112, src/helper-process.js:16-31).
- Bad Historical Version: 0.1.0-alpha.7 released Windows Helper missing PySide6/Qt, causing desktop floating window not to appear; this version has been marked "Known broken release" and needs to upgrade to alpha.8 or later (CHANGELOG.md:134-138).
- DSH Config Sync Issue: Early alpha version's cordis.patch.yml didn't sync
bubbleScale/bubbleMode/bubbleStates, DSH Harness updates may causefailed to apply loader entry; 0.1.0-alpha.12 has been fixed (CHANGELOG.md:23, cordis.patch.yml:5-15). - No Fake Progress: When DSH doesn't write structured todos, status card only shows current working phase, won't fabricate completion percentage (src/companion-reducer.js:81-90).
- Sub-Agent Not Responsive by Default: Defaults to following the most recently active top-level DSH Session; enabling "Respond to Sub-Agent" changes the state priority strategy, which may cause the desktop floating window to change more frequently (README.md:269-276, src/companion-reducer.js:53-56,111-121).
- Running from Source Requires Python + PySide6: Only when developers run Helper from source do they need to install PySide6>=6.7,<7 locally (requirements.txt:1, README.md:39-41); regular installation via prebuilt package doesn't need this step.
DSH 大肥鱼 🐋
住在 Windows 桌面上、由 DeepSeek Harness 真实工作状态驱动的 Agent 伴侣。
入口属于 DSH,生命周期属于 DSH,显示层属于桌面。

DSH 大肥鱼不是一个需要单独启动的桌宠应用。它由 DSH 插件启用,跟随 DSH 一起启动和退出,并以透明、无边框、始终置顶的原生窗口显示在桌面上。即使切换到 VS Code、浏览器或文件管理器,也能知道 DSH 当前在思考、修改、测试、等待还是已经完成。
当前版本:
0.1.2· Windows / WSL2 Alpha
关注最新进展
- 最新版本永远以 npm
latest和 GitHub Releases 为准(Releases 里同时提供.tgz安装包);顶部的版本徽章会自动更新。 - 给仓库 Star 只是收藏,不会收到更新通知。想第一时间知道「更新了什么」:
- 打开仓库点 Watch → Custom → Releases,只订阅 Release 通知;
- 或直接订阅 Releases 的 feed:https://github.com/QCYTSN/dsh-dafeiyu/releases.atom
- 已安装用户升级:完全退出 DSH 后执行
然后重新启动 DSH 即可。dsh plugin --profile web update dsh-dafeiyu
它有什么用?
- 离开 DSH 页面也能看到状态:大肥鱼始终显示在 Windows 桌面最上层。
- 反馈来自真实 Agent 事件:不会读取屏幕,也不会把你在其他软件里的操作误判为 DSH 工作。
- 展示足够但不过量的信息:项目名、当前阶段、正在进行的步骤和真实待办进度会显示在状态卡上。
- 有生命力但不打扰:思考、查找、修改、执行、验证、等待、完成和错误都有对应动作与自然文案。
- 没有第二套应用入口:无需单独运行 Helper、安装 Python或配置额外端口。
如果 DSH 没有提供待办清单,大肥鱼只显示“分析阶段”“实现阶段”“验证阶段”等可靠信息, 不会编造完成百分比。
状态展示
| 思考 | 工作 |
|---|---|
![]() | ![]() |
| 等待确认 | 完成 |
|---|---|
![]() | ![]() |
| 遇到问题 |
|---|
![]() |
状态大致按照下面的流程变化:
stateDiagram-v2
[*] --> 空闲
空闲 --> 思考: DSH 开始一轮任务
思考 --> 工作: 搜索、读取、修改、执行或测试
工作 --> 思考: 整理工具结果
思考 --> 等待: 需要用户确认
工作 --> 等待: 需要用户确认
思考 --> 完成: 本轮任务完成
工作 --> 完成: 本轮任务完成
思考 --> 错误: 任务异常结束
工作 --> 错误: 工具或任务失败
等待 --> 思考: 用户继续任务
错误 --> 思考: 用户重试
完成 --> 空闲
多个 DSH Session 同时运行时,默认优先展示最需要注意的顶层任务:
等待确认 > 错误 > 工作 > 思考 > 空闲
当有多个活动任务时,状态气泡会同时列出这些任务的状态。
系统要求
- Windows 10/11 x64,或 WSL2(通过 Windows interop 运行桌面 Helper)
- 已安装并能正常运行的 DeepSeek Harness WebUI
- DSH CLI 中可以使用
plugin --profile web命令 - npm 上的稳定版
dsh-dafeiyu(或抢先测试的dsh-dafeiyu@alpha),或 GitHub Release 中的.tgz安装包
普通用户不需要安装 Python、PySide6 或单独运行
dsh-dafeiyu-helper.exe。Windows Helper 已经包含在发布包里。
当前 Alpha 版的设置与桌面状态文案使用简体中文。
安装插件
1. 完全退出 DSH
先关闭 DSH Host,而不只是关闭浏览器标签页。安装或更新时不要让旧版插件继续运行。
2. 一行命令安装
在 PowerShell 中进入你的 DSH 安装目录,例如:
cd D:\DSH
然后从 npm 安装稳定版:
pnpm exec dsh plugin --profile web add dsh-dafeiyu
如果你的系统已经能直接使用全局 dsh 命令,只需要:
dsh plugin --profile web add dsh-dafeiyu
想抢先试用新功能(@alpha 测试版)的用户,把命令里的包名换成 dsh-dafeiyu@alpha 即可。
如果 DSH 运行在 WSL2,请在 WSL 终端执行同一条安装命令。插件会自动通过
cmd.exe 启动包内的 Windows Helper,不需要手动 chmod,也不需要在 WSL
安装 Python 或 PySide6。当前支持范围是 Windows x64 上的 WSL2;普通 Linux、
远程 Linux 和容器不是本版本的桌面显示目标。
3. GitHub Release 备用安装方式
进入 GitHub Releases,下载最新的:
dsh-dafeiyu-<version>.tgz
不要解压这个文件。
不解压,在 DSH 目录中直接安装下载的插件包:
pnpm exec dsh plugin --profile web add "C:\Users\you\Downloads\dsh-dafeiyu-<version>.tgz"
4. 启动 DSH
照常启动 DSH WebUI。插件默认启用,大肥鱼会由 DSH 自动拉起;不要手动打开 Helper。
5. 找到设置入口
在 DSH WebUI 中进入:
设置 → 插件 → 插件配置 → 大肥鱼桌面伴侣

怎么使用?
安装后不需要额外操作:
- 启动 DSH。
- 在 DSH 中开始一个项目任务。
- 大肥鱼根据 DSH 的真实事件切换动作和状态卡。
- 切换到其他窗口继续工作;大肥鱼仍然保持在桌面最上层。
- DSH Host 真正退出后,大肥鱼自动退出。
状态卡可能显示:
- 项目目录名称,例如
dsh-dafeiyu - 当前阶段,例如“分析阶段”“实现阶段”“验证阶段”
- 当前待办,例如“完善项目文档”
- 真实进度,例如“已完成 3/5 步”
- 等待、完成或错误提示
大肥鱼不会监听 VS Code、浏览器或其他应用,也不会截图。只有 DSH Agent 的事件能够 改变它的工作状态。
可配置项目
| 设置 | 作用 |
|---|---|
| 启用大肥鱼 | 立即显示或关闭桌面伴侣 |
| 角色大小 | 在 70%~140% 之间调整 |
| 气泡大小 | 在 80%~120% 之间调整状态气泡,兼顾信息可读性 |
| 气泡显示 | 常驻显示、完全隐藏,或自定义哪些状态显示气泡 |
| 活跃程度 | 控制空闲时眨眼、观察等微动作频率 |
| 减少动态效果 | 减少走动、循环帧和程序化晃动 |
| 响应子 Agent | 允许子 Agent 状态参与优先级选择;默认关闭 |
设置由 DSH 保存,更新插件后通常不需要重新配置。
桌面互动
- 拖动:按住大肥鱼移动位置,位置会自动保存。
- 点击或双击:触发摸头、戳一下、尾巴等短互动,之后恢复最新 DSH 状态。
- 右键菜单:调整大小、气泡大小、减少动态、打开 WebUI、本次隐藏或本次关闭。
- 本次隐藏:只隐藏窗口,不禁用插件。
- 本次关闭:关闭当前 Helper,本次 DSH 运行期间不会自动重启;下次启动 DSH 会再次出现。
更新插件
GitHub 仓库出现新提交后,已经安装的插件不会自动变化。新版本发布后,完全退出 DSH,然后更新 npm 稳定版包:
cd D:\DSH
pnpm exec dsh plugin --profile web update dsh-dafeiyu
也可以再次执行安装命令,它会解析 npm latest 标签指向的新版本:
pnpm exec dsh plugin --profile web add dsh-dafeiyu
使用 @alpha 测试版的用户,把更新命令里的包名换成 dsh-dafeiyu@alpha 即可。
使用 GitHub Release 安装的用户,可以下载新 .tgz 后覆盖安装:
pnpm exec dsh plugin --profile web add "C:\Users\you\Downloads\dsh-dafeiyu-<new-version>.tgz"
以上方式都会替换插件及随包携带的 Windows Helper,并保留 DSH 已保存的设置。详细 说明见 插件更新与回退。
回退到旧版本
完全退出 DSH,重新安装之前保留的旧版 .tgz:
cd D:\DSH
pnpm exec dsh plugin --profile web add "C:\Users\you\Downloads\dsh-dafeiyu-<old-version>.tgz"
卸载插件
完全退出 DSH 后运行:
cd D:\DSH
pnpm exec dsh plugin --profile web remove dsh-dafeiyu
然后重新启动 DSH。插件代码和 Helper 会从 web profile 中移除。DSH 可能保留一份
不会再生效的历史设置,这不会启动进程或占用额外端口。
常见问题
安装后没有看到大肥鱼
- 确认安装使用的是
--profile web。 - 完全退出并重新启动 DSH Host。
- 进入“设置 → 插件 → 插件配置”确认“启用大肥鱼”已经勾选。
- 确认使用 Windows x64 发布包,而不是只克隆了缺少预构建 Helper 的源码。
关闭了 DSH 网页,为什么大肥鱼还在?
大肥鱼绑定的是 DSH Host 生命周期,而不是浏览器标签页。只要 DSH 后台仍在运行, 大肥鱼就会继续显示;真正退出 DSH Host 后它会自动关闭。
为什么没有显示数字进度?
只有 DSH 写入了结构化待办时,插件才能可靠计算“已完成 3/5 步”。没有真实待办数据时, 状态卡只显示当前工作阶段,避免制造虚假的百分比。
右键选择“本次关闭”后为什么没有自动回来?
这是预期行为。“本次关闭”会抑制当前 DSH 运行期间的自动重启;完全退出并重新启动 DSH 后会恢复。若想永久关闭,请在 DSH 设置中取消“启用大肥鱼”。
隐私与边界
- 不读取或保存模型 API Key
- 不截图,不读取其他窗口内容
- 不发送遥测
- 不监听键盘输入或其他应用行为
- 不新开网络端口;设置卡复用 DSH 的本地 Web 服务
- 默认只跟随最近活跃的顶层 DSH Session
开发与测试
pnpm install
npm test
py -3 -m unittest discover -s runtime/tests -t .
开发时可以从源码运行 Helper,但正式用户不应手动启动它:
py -3 -m pip install -r requirements.txt
py -3 runtime\helper.py
构建 Windows Helper:
python -m pip install -r requirements.txt pyinstaller
$env:DSH_DAFEIYU_BUILD_PYTHON = (Get-Command python).Source
npm run build:helper:windows
更多文档
相关项目:QCYTSN/ds-local-pet 是独立桌宠版本; 本仓库是只服务于 DSH 状态的插件版本。
License
代码采用 MIT License。角色视觉资产不适用 MIT 代码许可证,来源和使用边界 见 ASSET_LICENSE.md。
Read the usage guide →
Install steps, key points, FAQ and compatibility for this plugin — auto-derived from indexed fields.
Listing badge
[](https://deepseek-plugin.org/plugins/QCYTSN/dsh-dafeiyu)Paste this markdown into your GitHub README to link back to this listing. The badge only states the listing — not a security endorsement.




