Skip to content
dsh.fish
Bundle

dsh-zai-coding-models

DeepSeek Harness bridge plugin: exposes the newest Zhipu/Z.AI coding-plan models (e.g. glm-5.3) on the zai-coding-cn route before the bundled pi-ai catalog catches up.

Source
auuduu
License
MIT
Updated
Updated 2 days ago

Readme

# dsh-zai-coding-models

English | [中文](README.zh.md)

A [DeepSeek Harness](https://github.com/deepseek-ai/deepseek-harness) (DSH) bridge
plugin that exposes the **newest Zhipu / Z.AI coding-plan models** — currently
**GLM-5.3** — on the stock `zai-coding-cn` provider route, before the pi-ai
catalog bundled with your DSH release catches up.

If you bought a Zhipu (智谱) coding plan / token plan, added the API key in the
DSH Models page, and the model picker only offers models one generation behind
(no GLM-5.3), this plugin is for you: your token plan works with the newest
models the moment Zhipu ships them — no DSH upgrade, no restart dance, no
hand-editing of `settings.yaml`.

## What it does

DSH resolves each provider's model list from the pi-ai catalog compiled into
its dependency tree. When Zhipu ships a new model (GLM-5.3 went live on the
coding endpoint in August 2026) the catalog lags behind by a release cycle or
two. DSH has a first-class escape hatch — a provider profile's `models` list
declared in configuration — and this plugin is exactly that escape hatch,
packaged so `dsh plugin add` carries it for you:

- keeps the six bundled `zai-coding-cn` models untouched (glm-4.5-air,
  glm-4.7, glm-5-turbo, glm-5.1, glm-5.2, glm-5v-turbo);
- adds **glm-5.3** with its official capabilities: text-only, 1M context,
  128K max output, thinking levels Low / Medium / High / Max (thinking cannot
  be turned off on GLM-5.3 — Low is the lightest setting);
- sets the compat flags the endpoint needs (`thinkingFormat: zai`,
  `supportsReasoningEffort: true` — without the latter the effort parameter is
  silently dropped);
- touches nothing else: your API key, endpoint, and every other provider keep
  living in your own settings as before.

## Install

```bash
dsh plugin --profile web add dsh-zai-coding-models                  # from npm
dsh plugin --profile web add github:auuduu/dsh-zai-coding-models   # from GitHub
```

(replace `web` with `tui`/`headless`/your profile). Then restart DSH once —
plugin bundles are read at boot. Your `ZAI_CODING_CN_API_KEY` (stored through
the Models page) is picked up as-is; GLM-5.3 appears in the model picker under
the existing Z.AI Coding CN provider.

To remove: `dsh plugin --profile web remove dsh-zai-coding-models`.

## How it works

The package declares a `dsh.bundle.patch` layer that targets the stock
`llm-pi-ai` composition row and supplies a base provider profile:

```yaml
- id: llm-pi-ai
  config:
    providers:
      zai-coding-cn:
        models:
          - id: glm-4.5-air        # id-only entries inherit
          - id: glm-4.7            #   everything from the
          - id: glm-5-turbo        #   installed catalog
          - id: glm-5.1
          - id: glm-5.2
          - id: glm-5v-turbo
          - id: glm-5.3
            name: GLM-5.3
            contextWindow: 1000000
            maxTokens: 131072
            reasoningEfforts:
              low: low
              medium: high
              high: high
              max: max
            compat:
              thinkingFormat: zai
              supportsReasoningEffort: true
```

DSH merges your user settings per-provider on top of this base, so a profile
that only stores `apiKeyEnv: ZAI_CODING_CN_API_KEY` (what the Models page
writes) merges cleanly. The same YAML works standalone in
`~/.dsh/settings.yaml` if you prefer not to install anything — see
[the manual recipe](#manual-recipe-no-plugin).

## Known limits

- **The `models` list replaces the route's catalog** — that is DSH semantics,
  not a choice. The list is pinned per plugin release, so when pi-ai ships
  `glm-5.4`, this plugin must release a new version to carry it (and if it
  already bundles the model you wanted, uninstall the plugin to return to the
  catalog). Watch releases, or just check the picker after DSH upgrades.
- If your *user* `settings.yaml` already declares `models` for
  `zai-coding-cn`, your layer wins over the plugin's. Keep exactly one source.
- The patch replaces the whole config of the `llm-pi-ai` row; the stock row
  ships config-less, but if a future DSH release puts config there, this
  plugin may need a bump.

## Manual recipe (no plugin)

Add to `~/.dsh/settings.yaml` (hot-reloaded, no restart needed):

```yaml
llm-pi-ai:
  providers:
    zai-coding-cn:
      apiKeyEnv: ZAI_CODING_CN_API_KEY   # keep whatever you have
      models:
        - id: glm-4.5-air
        - id: glm-4.7
        - id: glm-5-turbo
        - id: glm-5.1
        - id: glm-5.2
        - id: glm-5v-turbo
        - id: glm-5.3
          name: GLM-5.3
          contextWindow: 1000000
          maxTokens: 131072
          reasoningEfforts:
            low: low
            medium: high
            high: high
            max: max
          compat:
            thinkingFormat: zai
            supportsReasoningEffort: true
```

## Upstream status

pi (the project behind pi-ai) already carries glm-5.3 on `main`
(`packages/ai`, generated from the models.dev database); the moment a pi-ai
release ships and a DSH release adopts it, this plugin becomes redundant for
that model. It is intentionally a bridge, following the contribution path DSH
recommends for ecosystem work.

## License

MIT

Install

dsh plugin --profile web add github:auuduu/dsh-zai-coding-models#8f2e33a5fbf7775e13e520b8fd0b4662cf8c97ea

Profile: web

Source