Open-source project
QCYTSN/dsh-dafeiyu avatar
QCYTSN/dsh-dafeiyu

DSH 大肥鱼 (dsh-dafeiyu): a desktop companion driven by real DeepSeek Harness events

Desktop-native BigFish companion for DeepSeek Harness — real Agent status, always on top on Windows.

333 stars27 forksJavaScriptMIT

At a glance

What is it?
DSH 大肥鱼 is a DSH plugin that opens a transparent, always-on-top native window showing the real state of a DeepSeek Harness agent. It is for Windows, WSL2 and Linux x64 users who leave the Harness tab and still want to know what the agent is doing.
Who is it for?
Adopt dsh-dafeiyu if you already run DeepSeek Harness WebUI and want agent state visible while you work in other windows, and you are on Windows, WSL2 or a glibc 2.35+ x64 Linux desktop. Skip it if you need a non-Chinese UI, run an ARM machine, or work over SSH without a graphical session, since the README lists those as outside this version's display targets.
Can I use it commercially?
Yes. MIT is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
Is it still maintained?
Yes. The repository last received commits 2 days ago.
What is it written in?
Mainly JavaScript, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on September 18, 2026, and from our analysis. They are not legal advice.

DEEP OPEN-SOURCE ANALYSIS

The gap dsh-dafeiyu fills for DeepSeek Harness users

DeepSeek Harness runs in a browser tab. Once you switch to an editor or a terminal, the only way to know whether the agent is still thinking, waiting for your confirmation or already finished is to switch back. dsh-dafeiyu, also called DSH 大肥鱼, puts that state in a transparent, frameless, always-on-top native window on the desktop. The README frames the split of responsibilities plainly: the entry point belongs to DSH, the lifecycle belongs to DSH, and only the display layer belongs to the desktop. That matters because it is not a standalone pet application. There is no second launcher to run, no Python or PySide6 install for normal users, and no extra port to configure. The audience is narrow and specific: people who already have a working DeepSeek Harness WebUI and a DSH CLI where `plugin --profile web` works. If you do not run DSH, this project has nothing to drive it.

How real Agent events become a state card

The plugin subscribes to DSH session events rather than inspecting the screen. The README states it does not read the screen and does not mistake activity in other applications for DSH work. States move through a documented flow: idle, thinking, working, waiting, done and error, with transitions such as thinking to working when the agent searches, reads, edits, executes or tests, and working back to thinking when tool results are consolidated. When several DSH sessions run at once, the top-level task is chosen by priority: waiting for confirmation outranks error, which outranks working, thinking and idle. A status bubble can list several active tasks at the same time. The package exports hint at the internal split: `./protocol`, `./reducer` and `./client` are separate entry points, and the repository ships `runtime/helper.py`, `runtime/animation_model.py` and `runtime/layout_store.py` alongside prebuilt Helper binaries under `runtime/bin/` and `native/macos/`. The reducer decides state; the Helper renders it. One detail is worth calling out because it is a deliberate restraint: if DSH does not provide a todo list, the companion shows only phase labels such as analysis, implementation and verification, and does not invent a completion percentage. Reasoning effort is shown only when DSH actually supplies the value used for a request, not inferred from a model name.

Installing the plugin and seeing the first status card

Installation happens through the DSH CLI, not through a separate installer. The README asks you to fully quit the DSH host first, not just close the browser tab, so the old plugin is not running during an install or update. On Windows, open PowerShell in your DSH directory and add the package from npm. The README gives this example:

powershell
cd D:\DSH
pnpm dsh plugin --profile web add dsh-dafeiyu

If a global `dsh` command already works on your system, the shorter form is `dsh plugin --profile web add dsh-dafeiyu`. For the alpha channel, the README says to replace the package name with `dsh-dafeiyu@alpha`.

On Linux x64 desktops and macOS the command is the same, run from your DSH directory with a Unix path:

bash
cd ~/deepseek-harness
pnpm dsh plugin --profile web add dsh-dafeiyu

There is also an offline path through GitHub Releases. You download the `.tgz` and install it without extracting it:

bash
pnpm dsh plugin --profile web add ~/Downloads/dsh-dafeiyu-<version>.tgz

After that, start the DSH WebUI as usual. The plugin is enabled by default and DSH pulls the companion up on its own; the README explicitly says not to open the Helper manually. The settings entry lives under Settings, then Plugins, then plugin configuration, then the BigFish desktop companion entry. Expect a Chinese-language UI in this alpha: the README states that the current alpha's settings and desktop status text use Simplified Chinese.

Where the platform support actually stops

The system requirements section is more honest than most. Windows 10/11 x64 and WSL2 are supported, with WSL2 launching the packaged Windows Helper through `cmd.exe` and no `chmod` or Python install required. Linux is x64 desktop only, glibc 2.35 or newer, and the README says the official binaries are built on Ubuntu 22.04 while desktop acceptance was only performed on Ubuntu 24.04 with glibc 2.39. Ubuntu 22.04 and other distributions have not had desktop acceptance; CI only builds and smoke-tests on Ubuntu 22.04 under Xvfb. A graphical session is required, meaning `DISPLAY` or `WAYLAND_DISPLAY`, with X11 or XWayland preferred over Wayland. Debian and Ubuntu desktops usually also need `libxcb-cursor0`. ARM, headless remote SSH, containers and pure server environments are named as outside this version's desktop display targets. macOS is experimental since 0.1.4: CI verified Universal architecture, AppKit rendering and process lifecycle, but the README says Apple Silicon real-device experience will continue to be validated through user feedback. The macOS app is ad-hoc signed only, with no Developer ID signing or notarization. Gatekeeper triggers in one specific case, according to the README's testing: extracting the `.app` with Finder adds a quarantine flag, while installing the `.tgz` directly through npm or tar does not propagate it. If you already extracted with Finder, the documented recovery is to open the Helper once from the context menu, or clear the flag.

What the companion will not tell you

The most important limitation is the one the project states itself: without a todo list from DSH, there is no progress percentage, only phase names. Anyone hoping for a precise completion bar will not get one, and that is by design rather than a missing feature. The second limitation is scope of input. Because state comes only from DSH agent events, the companion is silent about everything else on your machine, which is good for accuracy and useless if you wanted a general desktop activity indicator. The third is configuration surface. The settings table covers character size from 55% to 140% with a 60% mini preset in the right-click menu, bubble size from 80% to 120%, bubble display mode, activity level, reduced motion, notification sounds, and a toggle for whether sub-agent states participate in priority selection, which is off by default. There is no documented option to change the language of the status text, and no documented option to place the window on a specific monitor. If you need either, this is the wrong tool today. Finally, the priority rule means a single waiting task will mask a running one in the main display, even though the bubble can list multiple tasks.

dsh-dafeiyu versus a general-purpose desktop pet

The obvious alternative is a conventional desktop pet or status widget, typically a standalone application you launch yourself, which animates on a timer and knows nothing about your agent. The difference in approach is the data source. A generic pet is driven by its own animation loop and whatever system hooks it exposes; dsh-dafeiyu is driven by DSH session events through the plugin system, and its lifecycle is bound to the DSH host, exiting when the host truly exits. That binding is the whole design. It also means the generic pet keeps working when DSH is not running, while dsh-dafeiyu has nothing to display. A second alternative is simply watching the DSH WebUI or a terminal tail of agent logs. That costs nothing to install and gives you the raw output, but it requires the window to be visible and it gives you no at-a-glance state when you are in another application. The trade-off is real: dsh-dafeiyu buys ambient visibility at the cost of a plugin install, a native Helper binary and a platform support matrix that currently excludes ARM and headless environments.

Maintenance, upgrade path and licensing

The repository is not archived, and the last push was on 2026-09-16, one day before this writing, with v0.1.14 released on 2026-09-15 after v0.1.13 and v0.1.12 on 2026-09-14. The README points to `docs/UPDATING.md` for update and rollback guidance and to `CHANGELOG.md` for changes, and it warns that stars are bookmarks only and do not produce update notifications, recommending the Releases feed instead. The documented upgrade command for installed users is to fully quit DSH and run `dsh plugin --profile web update dsh-dafeiyu`, then restart DSH. The package requires Node 22.19 or newer and bundles its DeepSeek AI dependencies. The project is MIT licensed, but the assets are not covered by that alone: the repository carries a separate `ASSET_LICENSE.md` and `assets/dsh-pet-LICENSE.txt`, so if you plan to reuse the character art or sounds, read those files rather than assuming the MIT grant covers them. This is not legal advice; verify the asset terms yourself before redistribution.

Editorial conclusion

Adopt dsh-dafeiyu if you already run DeepSeek Harness WebUI and want agent state visible while you work in other windows, and you are on Windows, WSL2 or a glibc 2.35+ x64 Linux desktop. Skip it if you need a non-Chinese UI, run an ARM machine, or work over SSH without a graphical session, since the README lists those as outside this version's display targets. Before installing, confirm your DSH CLI accepts `plugin --profile web` and that your desktop provides DISPLAY or WAYLAND_DISPLAY, because the plugin only starts a Helper when DSH itself starts.

Frequently asked questions

How do I install dsh-dafeiyu?

Fully quit the DSH host first, then run `dsh plugin --profile web add dsh-dafeiyu` from your DSH directory, or the `pnpm dsh plugin --profile web add dsh-dafeiyu` form the README shows. Alternatively download the `.tgz` from GitHub Releases and install it without extracting. Start the DSH WebUI afterwards and the companion is launched by DSH.

Does dsh-dafeiyu work on macOS?

macOS 12.0 or newer on Apple Silicon or Intel is listed as experimental support, first provided in 0.1.4. CI verified Universal architecture, AppKit rendering and process lifecycle, but the README says Apple Silicon real-device experience will continue to be validated through user feedback, and the app is only ad-hoc signed.

Why does dsh-dafeiyu not show a completion percentage?

Because it only reports what DSH actually provides. If DSH does not supply a todo list, the companion shows reliable phase labels such as analysis, implementation and verification, and the README states it will not fabricate a completion percentage.

Official sources

  1. Issues
  2. License: MIT
  3. QCYTSN/dsh-dafeiyu on GitHub
  4. README
  5. Releases
Community notes

Community notes