dsh-free-ai: Plugin Introduction - Connecting Free Model Channels to DSH

Introduction

The philosophy of DSH is “everything is a plugin,” and LLM providers themselves are also plugins. However, connecting every external model channel requires handling account login, token refresh, concurrent rate limiting, SSE stream parsing, and error retries on your own, which involves significant repetitive work. jianghuai24/dsh-free-ai does this: it unifies multiple free model channels as DSH providers, incorporating browser login, account pool rotation, daily check-ins, model blacklists, and a local OpenAI-compatible gateway.

The maintainer of this plugin is JiangHuai24, categorized under Model Inference. The prototype comes from dsh-codearts-auth (Gitee iJetLi/deepseek-harness-codearts, MIT, commit 345f0a07), extracted via vendor/channel-pack from dsh-our-free-model. Below is an introduction to its features, installation methods, and points to note.

What is this

One-sentence positioning: A DSH plugin that integrates free model channels into DSH’s LLM layer, allowing users to use models from these channels without writing their own adaptation code.

It solves the problem that login methods for free channels vary (browser, phone number, WeChat scan, OAuth callback), and account quotas and rate limiting strategies are inconsistent, requiring a separate adaptation layer to integrate directly into DSH. The plugin packages this adaptation layer into the pack.js single-file runtime, mounted on the host’s entry points for credentials, commands, and LLM.

Core Features

Supported channels: 13 noted in the README, covering CodeArts (Huawei Cloud), WorkBuddy (Domestic/International), LobsterAI, Qoder, TRAE, Cline, Loomy, Raccoon, MiniMax Code, ZCode, Gemini, etc.

  • Browser Login: Channels like CodeArts and WorkBuddy use browser login, which the plugin provides the flow for.
  • Account Pool: Rotation, rate limiting, cooldown, balance sorting, OAuth refresh; credentials are stored in DSH’s credentials store.
  • Daily Check-in: auto-checkin.ts is responsible for scheduling check-ins to earn points, writing results to auto-checkin.json.
  • Model Blacklist: dead-model-store.ts records models that have gone offline upstream to avoid repeated retries.
  • Local OpenAI-Compatible Gateway: openai-gateway/ provides a local OpenAI-format endpoint for external clients.

The App layer (client) is configured for the web platform with immediately: true, allowing browser pages to read and write account and model status via /api/channel-pack.

Installation and Enablement

The official installation command is in the README; execute it according to the profile corresponding to your account:

dsh plugin --profile desktop add link:<repository-directory>

Note: When installing via link, pack.js resolves @deepseek-ai/* based on the real path, whereas the packages provided by the host are inside app.asar and not in the profile dependencies. This may cause an error like ERR_MODULE_NOT_FOUND: @deepseek-ai/dsh-credentials at startup. If you encounter this issue, you need to copy the plugin entity into profiles/iso/node_modules/ to allow Node to find the profile’s module resolution path by traversing the directory upwards.

Do not enable together with dsh-our-free-model: Both will register the same-named providers like buddy/zcode/lobsterai and share the $DSH_HOME/channel-pack state directory; mounting them simultaneously will cause them to conflict. The correct sequence is: disable OFM first -> install this plugin -> re-login or import accounts using a backup.

Typical Usage

After installation, simply use the models of the corresponding channels in DSH; the login process follows each channel’s browser flow. A few useful details:

  • The ref for account credentials looks like BUDDY_ACCOUNT_AB12CD34; to keep the original 31 accounts, you need to keep the directory name consistent with the credentialRef; renaming requires re-login.
  • src/backup.ts provides export/import; export a copy before migrating.
  • The state file is at $DSH_HOME/channel-pack/state.json, which can be overridden by DSH_CHANNEL_PACK_STATE_DIR.
  • The Gemini channel requires you to provide your own OAuth client: set environment variables CMDC_PAK_GOOGLE_CLIENT_ID and CMDC_PAK_GOOGLE_CLIENT_SECRET (create a “Desktop App” type client in Google Cloud Console and register the redirect URI http://localhost:<port>/oauth-callback). The repository does not include any Google credentials internally.

Applicable Scenarios and Notes

Suitable for those already running multi-channel models on DSH who want to skip the adaptation layer, or who want to merge and manage free channels with existing model pools.

Points to note:

  1. This plugin runs with the permissions of the current DSH process and can read files and credential stores accessible to the host process. Please check the source code and license (MIT marked in README) before installing, and do not deploy directly to a production environment.
  2. The quota and availability of upstream free channels are determined by the upstream, and the plugin has an account pool and error retries internally, but it does not guarantee that a specific channel will always be available.
  3. The captcha supply system for ZCode (captcha-*.ts) is the most fragile; it may require manual updates after the upstream makes changes.
  4. After modifying source code in src/, you must repack; index.js mounts pack.js.

Conclusion

The value of dsh-free-ai lies in converging the entire set of cumbersome tasks of integrating free model channels—login, rate limiting, and check-ins—into a single plugin, allowing DSH users to simply install and log in to use. The plugin directory page is at https://www.skillhub.cn/plugins/JiangHuai24/dsh-free-ai, and the source code is at https://github.com/JiangHuai24/dsh-free-ai.

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

Xiaoye