Zhipu (GLM Coding Plan) web suite as native DSH providers and tools: rebinds the built-in web_search and web_fetch to Zhipu web search and Markdown page reading, optionally registers github_search_doc / github_get_repo_structure / github_read_file repo tools, and adds a settings card with toggles and a credential-ref field.
Install
# from npm (prebuilt)
dsh plugin --profile web add deepseek-harness-zhipu_plan_tools
# from GitHub (first run asks for allowBuilds approval — follow the hint, retry)
dsh plugin --profile web add github:magian1127/deepseek-harness-zhipu_plan_tools
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
Zhipu MCP suite · DeepSeek Harness plugin
Brings three Zhipu GLM Coding Plan MCP services into DSH as native providers and tools: it replaces the built-in web_search and web_fetch backends, and optionally adds three github_* repository tools. A bilingual settings card applies changes live.
Features and settings order
Expand Zhipu Tools under DSH Settings → Plugins → Plugin configuration. The rows below follow the card from top to bottom:
| Setting | Plugin default | Summary |
|---|---|---|
| Enable Zhipu tools | on | Master switch; off enters search/reader compatibility fallbacks and unregisters repo tools and related guidance while keeping the card |
Web search (takes over web_search) |
on | Routes search through Zhipu web_search_prime and replaces the model-visible built-in search guidance |
Web reader (takes over web_fetch) |
on | Routes reads through Zhipu webReader; DSH still keeps the web_fetch tool itself off by default |
| Repository tools | off | Adds github_search_doc, github_get_repo_structure, and github_read_file |
| Chinese prompts | off | Switches plugin-injected guidance and tool descriptions from the default English to Chinese; tool names stay unchanged |
| Credential reference | ZAI_CODING_CN_API_KEY |
Stores only the credential reference name, never the API key |
The card starts collapsed and ends with Restore defaults / Discard changes / Save. Search and reader are provider swaps, so model-facing web tool names stay unchanged; repository tools are registered natively and disappear from the model catalog when disabled. The web_search shadow is never registered under the minimal preset (the "persistent shell + str_replace_editor" two-tool composition), preserving that preset's promise. See the behavior contract for query guidance, data boundaries, and errors.
Requirements
- DeepSeek Harness Web GUI, profile
web, ≥0.1.2-alpha.1 - Node.js
^22.19.0 || >=24.0.0 - A Zhipu GLM Coding Plan API key referenced by
ZAI_CODING_CN_API_KEYby default
Install
Published package:
dsh plugin --profile web add deepseek-harness-zhipu_plan_tools
# Hot-install into a running DSH instance:
npx -y deepseek-harness-zhipu_plan_tools install --profile web
Local source development:
npm install
node bin/dsh-zhipu.mjs install --profile web --link <project-path>
This package patch includes web.config, so it is not compatible with dsh-zh's simple manifest reconcile. The CLI uses this project's bridge/temporary-entry strategy; after it reports completion, confirm status, the live provider/tool registries, and the existing GUI:
npx -y deepseek-harness-zhipu_plan_tools status --profile web
First use: add zai-coding-cn
Before calling the tools:
- Open DSH Settings → Models.
- Add the China-region provider
zai-coding-cn, not the overseaszai. - Ensure
ZAI_CODING_CN_API_KEYexists in the environment or${DSH_HOME:-~/.dsh}/.credentials.yaml.
The provider and this plugin then use the same credential reference. If your key uses a different environment-variable name, set that name as credentialRef in the plugin card. Resolution order and security guarantees are defined in Credentials and data boundaries.
Enable web_fetch
DSH normally keeps the web_fetch tool off. This plugin supplies its backend but does not change that independent switch. Enable it in the profile patch:
- id: tool-web
config:
fetch: true
Once enabled, web_fetch automatically uses the Zhipu reader. See the authoritative enablement boundary.
Settings and data
The six fields shown above are stored in that same order in the dsh-zhipu namespace of DSH settings.yaml and apply live; the API key itself is never stored there. Switching search/reader off enters compatibility fallbacks at runtime (the DSH DeepSeek request shape via DEEPSEEK_API_KEY; a bounded HTTP(S) text fetch), without restarting DSH. The HTTP fallback validates URLs, follows same-origin redirects only, and caps transfer and decoded output; its exact limits and residual DNS-rebinding boundary are documented in the behavior contract, together with credential lookup, failure codes, and telemetry boundaries.
Uninstall
dsh plugin --profile web remove deepseek-harness-zhipu_plan_tools
# or
npx -y deepseek-harness-zhipu_plan_tools remove --profile web
Removal clears the plugin's mount/dependency and hot-unloads it. Existing values under the dsh-zhipu settings namespace may remain for a later reinstall.
Development
Use Development for repository structure, hot paths, invariants, and test strategy. Use Release for the complete pre-publish checklist. The common local checks are:
npm run typecheck
npm run build
npm test
npm run verify
Do not restart DSH for development or verification; follow the documented hot path and refresh the existing GUI only when needed.
Documentation index
- Behavior contract — defaults, settings, credentials, boundaries, errors
- Architecture — runtime structure, module contracts, decisions, research, roadmap
- Development — repository layout, hot paths, invariants, tests
- Troubleshooting — symptom-driven diagnosis and runtime observation
- Release — validation, version notes, npm publishing
Roadmap
The technical roadmap is maintained in Architecture; release state belongs in Release.
License
MIT
Links
More in this category
Tencent/BrowserSkill#dsh-plugin-browserskill★ 1750
BrowserSkill bridge for controlling visible Chrome and Edge Agent Windows from DeepSeek Harness, with native browser tools, accessibility and VOM observations, screenshots, owned multi-session control, and a live Web UI overlay.
Lum1104/dsh-browser#bridge-browser★ 568
Chrome sidebar extension that lets DSH operate your browser directly, no vision capabilities required.
liustack/modsearch★ 348
Web search bridge for text-only agents: ask the web or X, get structured JSON evidence (search, fetch, citations).
DDDMUC/dsh-free-search★ 123
Free, keyless web search for DSH: 7 engines (DuckDuckGo/Bing/SearXNG free + Exa/Perplexity/DeepSeek paid), auto-failover, settings-page UI with API key inputs and official links, web_fetch, and an engine test tool.
Tabbit-Browser/dsh-plugin★ 99
Gives DeepSeek Harness control of the Tabbit Browser: auto-loads the tabbit-browser skill on install, detects official Tabbit and Tabbit Browser releases (>= 1.9.0), checks the tabbit-cli persistent runtime, diagnoses the per-platform DSH sandbox mode needed to call the CLI, and downloads the region-matched official installer via a background job when no qualifying version is present.
Tabbit-Browser/dsh-tabbit★ 99
Gives DeepSeek Harness control of the Tabbit Browser: auto-loads the tabbit-browser skill on install, detects official Tabbit and Tabbit Browser releases (>= 1.9.0), checks the tabbit-cli persistent runtime, diagnoses the per-platform DSH sandbox mode needed to call the CLI, and downloads the region-matched official installer via a background job when no qualifying version is present.
Community comments
Comments are public GitHub Discussions. Loading them connects to GitHub and Giscus; a GitHub account is required to post.