Brings WorkBuddy's free and paid models (domestic and international) into DSH without the WorkBuddy desktop app; published as @bushizhanghan/dsh-workmate, installable on dsh 0.2.0-rc.2 through 0.2.1 including prereleases.
Install
# from npm (prebuilt)
dsh plugin --profile web add @bushizhanghan/dsh-workmate
# from a prebuilt release tarball
dsh plugin --profile web add "https://github.com/bushizhanghan/dsh-workbuddy/releases/latest/download/dsh-workmate.tgz"
# from GitHub (first run asks for allowBuilds approval — follow the hint, retry)
dsh plugin --profile web add github:bushizhanghan/dsh-workbuddy
Any plugin you install runs third-party code with your own permissions — it can read your files, use your credentials, and reach the network, and tool approvals don’t sandbox it. GitHub-sourced plugins also run build scripts at install time — pnpm blocks those until you allow them, so an install can stop with ERR_PNPM_GIT_DEP_PREPARE_NOT_ALLOWED or ERR_PNPM_IGNORED_BUILDS; dsh prints the exact key to add under allowBuilds in your profile’s pnpm-workspace.yaml, and the install works on the next run. Allowing a build is a trust decision: only install sources you trust, and pin a commit (github:owner/repo#sha).
README
- Sign-in: per-region browser OAuth, no desktop sign-in at all; a credential from an installed desktop app can still be imported read-only
- Accounts: region-isolated multi-account list, explicit switching, credit display and warnings; accounts can be given their own names; the plugin's copies are kept apart from the desktop auth files
- One-click check-in: daily check-in, the cat's growth trip and every growth-center task (签到 / 猫猫旅行) collected in a single action; auto check-in is available and off by default
- Device isolation: each account's credential, its model catalog and its credit balance stand apart; switching accounts never touches in-flight requests
- Works out of the box: install it, enable it, and use it from DSH — no extra configuration; DSH 0.2.0-rc.2 desktop is supported today
Compatibility fork of
Faide-cyber/dsh-workbuddy, maintained by @bushizhanghan. Published as@bushizhanghan/dsh-workmate. Two code changes only: the host version range is widened to0.2.0-rc.2 ~ 0.2.1, and the client name is rewritten in outgoing request bodies. Code and license follow upstream (MIT, © Faide-cyber). Switch back to the official package once upstream ships the fix.
Differences from upstream
Two changes relative to upstream 1.0.12 (commit 9951d25); see patches/ for the full diffs:
| # | Change | Why |
|---|---|---|
| 1 | The seven @deepseek-ai/dsh-* peers go from the exact pin 0.2.0-rc.2 to >=0.2.0-rc.2 <0.2.1 || >=0.2.1-0 <0.3.0-0 |
dsh compares every @deepseek-ai/dsh* peer against the running runtime before loading a plugin. An exact pin fails wholesale on 0.2.1-rc.2, so the plugin is rejected with "requires host 0.2.0-rc.2, currently running 0.2.1-rc.2". A single >=0.2.0-rc.2 <0.3.0-0 segment is not enough either: under plain semver it excludes prereleases like 0.2.1-rc.2, which surfaces as ERESOLVE at install time |
| 2 | DeepSeek Harness is rewritten to DeepSeek-Harness in the chat request body |
the upstream service validates the client name, and the host's default name (with a space) is treated as an unknown client |
No host downgrade and no compatibility.json exemption needed — the range covers 0.2.1 by itself. The <0.3.0-0 upper bound is deliberate: 0.3 may change the plugin API, and this package will not pretend otherwise.
Quick start
- Node 22+, with DSH installed.
- Install the plugin and start:
dsh plugin --profile web add @bushizhanghan/dsh-workmate
dsh web
- Open Settings → Plugins → DSH WorkBuddy, click Connect, and sign in on the WorkBuddy page that opens.
- Pick a WorkBuddy model in the model selector — with the default free models only scope, the list is exactly what that region's catalog prices
x0.00right now.
You can also sign in from a terminal:
dsh plugin --profile web exec dsh-workmate login
Restart dsh web after installing, updating, or signing in. Refreshing the browser is not enough — Node modules stay in memory.
The default model can be set in ~/.dsh/settings.yaml:
agent-default-model:
provider: workbuddy-ai
model: hy3
reasoningEffort: high
Use an id the region actually lists: the model list is whatever that region's live catalog returns, so a pinned default can become stale. hy3 is free in both regions at the time of writing.
How sign-in works
Each region uses the official CLI auth endpoints independently:
POST /v2/plugin/auth/state?platform=CLI&nonce=(internationalwww.workbuddy.ai, domesticcopilot.tencent.com)- Open the returned
authUrl - Poll
GET /v2/plugin/auth/token?state=(upstream returns11217while still pending) - The token is written to the region's plugin copy: international
$DSH_HOME/.workbuddy-ai-auth.json, domestic$DSH_HOME/.workbuddy-cn-auth.json
The desktop app's workbuddy-desktop-ai.info (international) and workbuddy-desktop.info (domestic) are read-only — the plugin never writes them. It only stores its own per-region credential copies obtained through OAuth.
The settings card lists every imported account. Switching only affects subsequent requests; in-flight requests keep using the original account, and bulk credit/check-in operations do not change the current selection.
Disconnect / logout only deletes that region's own plugin credentials; the desktop app is untouched.
Configuration
Settings → Plugins → DSH WorkBuddy:
- Connect / Disconnect: per-region browser sign-in, or delete that region's plugin credentials
- Domestic/international account lists, explicit switching, remaining credits, and a connectivity test
- Tick domestic accounts, auto check-in (off by default)
- The active account refreshes read-only every 15 minutes and others every 60 minutes by default — configurable
- Free models only (default) / All models
Or configure it in the profile's cordis.patch.yml:
- id: llm-workbuddy
config:
modelScope: free # international: or all
cnModelScope: free # domestic: or all
probeConsent: false # real model probing off by default
autoCheckin: false # domestic auto check-in off by default
refreshActiveMinutes: 15
refreshInactiveMinutes: 60
# Hosts used to reach DSH Web over the LAN (do not add these to LOOPBACK)
# allowedHosts: ["192.168.1.10"]
# authFile / cnAuthFile: rarely needed; only for a non-default desktop credential path
Environment variables:
| Variable | Effect |
|---|---|
DSH_WORKBUDDY_AUTH_FILE |
Override the international desktop credential path (OAuth credentials still go to the plugin's own file) |
DSH_WORKBUDDY_CN_AUTH_FILE |
Override the domestic desktop credential path |
CLI
dsh plugin --profile web exec dsh-workmate login
dsh plugin --profile web exec dsh-workmate status
dsh plugin --profile web exec dsh-workmate doctor
dsh plugin --profile web exec dsh-workmate logout
status / doctor accept --json. logout only deletes $DSH_HOME/.workbuddy-ai-auth.json.
Troubleshooting
| Symptom | Fix |
|---|---|
| No card in settings / no WorkBuddy in the model list | Restart dsh web; refreshing the browser is not enough |
dsh web exits after clicking Connect |
On headless Linux without xdg-open, update to a build with spawn error handling; use the sign-in link on the card |
403 request-not-trusted when opening the card over a LAN IP |
Add that IP/hostname to allowedHosts; do not put it in the loopback list |
| Signed in but no models | The region's catalog request failed or returned nothing — check connectivity and whether the token is still valid; the list stays empty rather than borrowing the other region's models |
doctor says signed-out |
Run login first, or confirm the international desktop app is signed in |
| Want paid models | Switch the scope to "All models" on the settings card — credits will be burned |
dsh plugin --profile web exec dsh-workmate doctor
Disclaimer
For personal learning and research only, driving your own WorkBuddy account on your own machine. Follow the WorkBuddy terms of service. This project is not affiliated with Tencent, WorkBuddy, or DeepSeek.
License
Links
More in this category
Ebony-Vinyl/dsh-our-free-model★ 34394
Adds free model lanes to DeepSeek Harness — DeepSeek V4.1 Flash, Kimi K3 and others — with no login, sign-up or API key, plus a local OpenAI-compatible gateway, fallback routing and a usage dashboard.
V1ki/dsh-plugin-subscriptions★ 491
Use ChatGPT (Codex), Claude, and Grok subscriptions as DeepSeek Harness LLM providers, with Settings login, model catalogs, usage, plus image_generate, video_generate, and x_search tools.
Mars-Sea/dsh-commandcode-provider★ 423
Unofficial Command Code LLM provider: registers a `commandcode` route with a live model catalog and reasoning-effort support.
dingminhua/dsh-connect-workbuddy★ 372
Connects locally signed-in WorkBuddy models to DSH, supports per-model image input opt-in, account switching, and a read-only credits overview with daily check-in.
FishBottle7/opencode2dsh★ 319
Exposes OpenCode Zen free models to DeepSeek Harness, with no API key.
cv-superding/dsh-deepseek-web-login★ 294
Adds a deepseek-web provider that uses chat.deepseek.com web models in DSH, with browser login capture, PoW request signing, SSE streaming, and prompting-based tool calls.
Community comments
Comments are public GitHub Discussions. Loading them connects to GitHub and Giscus; a GitHub account is required to post.