dsh-zai-coding-models
English | 中文
A 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-cnmodels 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
dsh plugin --profile web add dsh-zai-coding-models
(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:
- 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.
Known limits
- The
modelslist replaces the route's catalog — that is DSH semantics, not a choice. The list is pinned per plugin release, so when pi-ai shipsglm-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.yamlalready declaresmodelsforzai-coding-cn, your layer wins over the plugin's. Keep exactly one source. - The patch replaces the whole config of the
llm-pi-airow; 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):
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
No comments yet. Be the first to write one.