Skip to content

dsh-plugin-free-ai

Verified

dsh-plugin-free-ai · v0.1.2 · MIT

Qwen, DeepSeek, Kimi and Z.ai web chats as DeepSeek Harness model providers, signed in through your own browser account

Install

dsh plugin add dsh-plugin-free-ai

Confirm the layer applied with dsh --profile default --dump-config — see the install guide.

Source

Tags

Creators

Readme

dsh-plugin-free-ai

Qwen, DeepSeek, Kimi and Z.ai web chats as model providers for DeepSeek Harness, signed in with your own browser account. The same provider core as the AI Free VSCode extension.

Unofficial. It drives the providers' web chats the way their own web apps do; their terms of service apply, and a change on their side can break it until the plugin is updated.

Requirements

  • DeepSeek Harness 0.2.x (npm i -g @deepseek-ai/dsh), Node.js 20 or newer.
  • Google Chrome. The sign-in windows and the Qwen and Z.ai browser bridges run in your installed Chrome: the providers' anti-bot checks let it through, unlike an automated browser. Without Chrome the plugin falls back to Playwright's Chromium, which you then install with npx playwright install chromium.
  • An account on each provider you use (free).

Install

dsh plugin --profile <name> add dsh-plugin-free-ai

Use

Model routes: qwen-web, deepseek-web, kimi-web, zai-web. Point the agent at one in the profile's cordis.patch.yml:

- id: agent-default-model
  config:
    provider: qwen-web
    model: qwen3.8-max

- id: agent-loop
  config:
    agents:
      - id: main
        provider: qwen-web
        model: qwen3.8-max
        cwd: !!js process.cwd()

agent-default-model matters as well: other parts of the harness (session titles, subagents) use it, and its shipped default is the paid deepseek-official route, which fails without an API key.

Qwen and Z.ai may ask for a captcha in a browser window now and then, more often for a new profile; solve it there and the request continues.

Models: qwen3.8-max, qwen3.7-plus, qwen3.7-max, qwen3.6-plus, qwen3.5-plus (Qwen); deepseek-default, deepseek-expert (DeepSeek); kimi-instant (Kimi); glm-5.3, glm-5.2, glm-5.3-flash, glm-4.7 (Z.ai). The harness model picker lists them per route.

Signing in and out

The first request to a route without a session opens that provider's sign-in window by itself. To manage sessions ahead of time, use the /free-ai command in the chat input of an open session (Web, Desktop and TUI; headless runs have no commands):

Command Does
/free-ai status Shows which providers are signed in
/free-ai login qwen Opens the Qwen sign-in window in Chrome on the machine DSH runs on, and waits
/free-ai logout qwen Forgets the Qwen session and its browser profile

Provider names: qwen, deepseek, kimi, zai. With autoSignIn: false a request without a session fails at once and /free-ai login is the only way in.

Configuration

- id: free-ai
  config:
    providers: [qwen, deepseek, kimi, zai]   # routes to register
    autoSignIn: true                   # open the sign-in window when there is no session
    browserMode: auto                  # auto | headed | headless (Qwen and Z.ai bridges)
    loginTimeoutMs: 300000
    proxy: ""                          # e.g. http://host:3128 for the browser windows
    debug: false                       # DEBUG lines in the log

Files

Everything lives under ~/.ai-free-vscode/dsh/: the browser profiles (separate from the VS Code extension's, as Chrome opens a profile in one process at a time), sessions.json with the sign-ins (mode 600), and free-ai.log.

Kimi reaches for its own server-side ipython/shell on long sessions; such a call is stopped before Kimi runs it and handed to the harness's bash tool, or asked again.