智谱 MCP 工具 magian1127/deepseek-harness-zhipu_plan_tools
DeepSeek Harnessv0.1.8Zhipu (GLM Coding Plan) MCP servers into DSH - 接入智谱的工具
32.1/100
综合分
3
GitHub 星标
549
npm 周下载
—/5
用户评分
数据截至 2026/10/25 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add deepseek-harness-zhipu_plan_toolsnpm 源 · deepseek-harness-zhipu_plan_tools 的发布者账号已校验与本仓库一致
状态速览
判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态信任档位:已验证
是什么
dsh 原生插件 · model
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 11 天前
档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
社区实装还没有人打卡 · 装过的第一个就是你
安装兼容性检查✓ 自动检查通过展开查看检查明细 ↓
以下结论由程序自动检查 npm 包、engines 声明与入口文件得出,未做人工实机验证——能装不等于用着没问题。
✓npm 包deepseek-harness-zhipu_plan_tools @ 0.1.8
✓Node 引擎要求 ^22.19.0 || >=24.0.0 · 基线 Node 22.19 满足
✓dsh CLI 依赖未声明 dsh 版本约束
✓入口文件main/exports/bin 已声明
验证方式:npm registry 存在性 + package.json 静态校验 · 最后检查 2026/10/21 15:44:35
安全扫描自动 · 静态分析源码v2.7.0🔵 扫描:含敏感能力尚无人工评估展开查看扫描说明与证据 ↓
安全扫描自动 · 静态分析源码
v2.7.0静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。
可执行外部命令读写/删除本地文件发起外部网络请求
查看扫描证据(共 71 处,展示前 67 条)
- 读取本地文件lib/index.js:195
const lines = readFileSync(join(home, CREDENTIALS_FILE), "utf8").split(/ ? /); - 读取本地文件lib/index.js:341
const manifest = JSON.parse(readFileSync(manifestPath, "utf8")); - 发起网络请求lib/index.js:932
const response = await fetch(current, { - 发起网络请求lib/index.js:1120
const response = await fetch(endpoint, { - 发起网络请求lib/index.js:1322
async fetch(request, signal) { - 发起网络请求lib/index.js:1424
response = await fetch(endpoint, { - 读取本地文件bin/cli/main.mjs:116
if (existsSync(manifestFilePath)) { - 读取本地文件bin/cli/main.mjs:118
manifest = JSON.parse(readFileSync(manifestFilePath, 'utf8')); - 发起网络请求bin/cli/probes.mjs:13
return fetch(`http://127.0.0.1:${port}/`, { signal: controller.signal }) - 发起网络请求bin/cli/probes.mjs:26
return await fetch(`http://127.0.0.1:${port}/`, { signal: controller.signal }) - 读取本地文件bin/cli/probes.mjs:61
if (!existsSync(path)) - 读取本地文件bin/cli/probes.mjs:64
const manifest = JSON.parse(readFileSync(path, 'utf8')); - 读取本地文件bin/cli/probes.mjs:73
return existsSync(patchPath(name)); - 读取本地文件bin/cli/invocations.mjs:17
if (existsSync(bundled)) { - 执行外部命令来自配置/变量bin/cli/invocations.mjs:39
? spawnSync(process.execPath, [cli.file, ...args], { stdio: 'inherit' }) - 读取本地文件bin/cli/invocations.mjs:47
if (!existsSync(join(dir, 'package.json'))) { - 写入本地文件bin/patch-row.mjs:46
writeFileSync(tmp, data); - 写入本地文件bin/patch-row.mjs:47
renameSync(tmp, path); - 删除本地文件bin/patch-row.mjs:51
unlinkSync(tmp); - 读取本地文件bin/patch-row.mjs:88
if (Date.now() - statSync(lockPath).mtimeMs > LOCK_STALE_MS) { - 删除本地文件bin/patch-row.mjs:89
unlinkSync(lockPath); - 删除本地文件bin/patch-row.mjs:107
unlinkSync(lockPath); - 读取本地文件bin/patch-row.mjs:139
const existing = existsSync(path) ? readFileSync(path, 'utf8').replace(/ /g, '\n') : null; - 读取本地文件bin/patch-row.mjs:139
const existing = existsSync(path) ? readFileSync(path, 'utf8').replace(/ /g, '\n') : null; - 读取本地文件bin/patch-row.mjs:176
if (!existsSync(path)) - 读取本地文件bin/patch-row.mjs:179
if (!existsSync(path)) - 读取本地文件bin/patch-row.mjs:181
const original = readFileSync(path, 'utf8').replace(/ /g, '\n'); - 读取本地文件bin/cli/spawn.mjs:20
if (existsSync(path)) - 读取本地文件bin/cli/spawn.mjs:31
if (existsSync(path)) - 读取本地文件bin/cli/spawn.mjs:73
lines = readFileSync(path, 'utf8').replace(/ /g, '\n').split('\n'); - 读取本地文件bin/cli/spawn.mjs:108
if (!existsSync(candidate)) - 执行外部命令来自配置/变量bin/cli/spawn.mjs:125
return spawnSync(file, args, options); - 执行外部命令来自配置/变量bin/cli/spawn.mjs:133
return spawnSync(resolved, args, nativeOptions); - 执行外部命令来自配置/变量bin/cli/spawn.mjs:140
return spawnSync(direct.file, [...direct.argsPrefix, ...args], directOptions); - 读取本地文件bin/cli/spawn.mjs:155
if (!existsSync(powershell)) { - 执行外部命令来自配置/变量bin/cli/spawn.mjs:165
return spawnSync(powershell, [ - 读取本地文件lib/credentials.js:35
const lines = readFileSync(join(home, CREDENTIALS_FILE), 'utf8').split(/ ? /); - 发起网络请求lib/deepseek-fallback.js:63
response = await fetch(endpoint, { - 发起网络请求lib/http-fallback.js:226
const response = await fetch(current, { - 发起网络请求lib/mcp-http.js:106
const response = await fetch(endpoint, { - 读取本地文件lib/settings-schema.js:73
const manifest = JSON.parse(readFileSync(manifestPath, 'utf8')); - 发起网络请求lib/zhipu-reader.js:44
async fetch(request, signal) { - 写入本地文件src/bin/patch-row.mts:51
writeFileSync(tmp, data) - 写入本地文件src/bin/patch-row.mts:52
renameSync(tmp, path) - 删除本地文件src/bin/patch-row.mts:55
unlinkSync(tmp) - 读取本地文件src/bin/patch-row.mts:92
if (Date.now() - statSync(lockPath).mtimeMs > LOCK_STALE_MS) { - 删除本地文件src/bin/patch-row.mts:93
unlinkSync(lockPath) - 删除本地文件src/bin/patch-row.mts:109
unlinkSync(lockPath) - 读取本地文件src/bin/patch-row.mts:143
const existing = existsSync(path) ? readFileSync(path, 'utf8').replace(/ /g, '\n') : null - 读取本地文件src/bin/patch-row.mts:143
const existing = existsSync(path) ? readFileSync(path, 'utf8').replace(/ /g, '\n') : null - 读取本地文件src/bin/patch-row.mts:176
if (!existsSync(path)) return false - 读取本地文件src/bin/patch-row.mts:178
if (!existsSync(path)) return false - 读取本地文件src/bin/patch-row.mts:179
const original = readFileSync(path, 'utf8').replace(/ /g, '\n') - 读取本地文件src/credentials.ts:43
const lines = readFileSync(join(home, CREDENTIALS_FILE), 'utf8').split(/ ? /) - 发起网络请求src/deepseek-fallback.ts:78
response = await fetch(endpoint, { - 发起网络请求src/http-fallback.ts:219
const response = await fetch(current, { - 发起网络请求src/mcp-http.ts:133
const response = await fetch(endpoint, { - 读取本地文件src/settings-schema.ts:96
const manifest = JSON.parse(readFileSync(manifestPath, 'utf8')) as { - 发起网络请求src/types.ts:53
fetch( - 发起网络请求src/zhipu-reader.ts:55
async fetch(request, signal) { - 读取本地文件verify-build.mjs:26
check(artifact, existsSync(join(root, artifact))) - 读取本地文件verify-build.mjs:31
if (!existsSync(join(root, file))) continue - 执行外部命令来自配置/变量verify-build.mjs:32
const res = spawnSync(process.execPath, ['--check', join(root, file)], { stdio: 'inherit' }) - 读取本地文件verify-build.mjs:37
const clientText = existsSync(join(root, 'lib/client.js')) ? readFileSync(join(root, 'lib/client.js'), 'utf8') : '' - 读取本地文件verify-build.mjs:37
const clientText = existsSync(join(root, 'lib/client.js')) ? readFileSync(join(root, 'lib/client.js'), 'utf8') : '' - 执行外部命令来自配置/变量verify-build.mjs:43
const usage = spawnSync(process.execPath, [join(root, 'bin/dsh-zhipu.mjs')], { stdio: 'inherit' }) - 读取本地文件verify-build.mjs:44
const cliText = readFileSync(join(root, 'bin/cli/main.mjs'), 'utf8')
扫描于 2026/11/3(0 天前) · 范围 入口闭包 + 全包扫描 · 来源 npm 发布包
静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个
功能亮点
- 接入智谱MCP服务
最近更新
在 GitHub 查看全部 →v0.1.82026-10-18
行为变化:
· 要求 DeepSeek Harness >=0.2.0-rc.2 = 0.1.7-alpha.2」收敛为与门禁一致的区间。
核对结论:
· DSH 0.2.1 的破坏性变更本包均不涉及(工具呈现 both、agent-instructions 的 dshHome、/invariant 子路径、子路径插件展示清单、session cwd、account model catalog、pi-ai 路由更名);
· web provider 契约未变,searchProvider / fetchProvider 仍是 volatile 字符串,回退语义与 web_search 的 scope shadow 语义不受影响。
其它:
· 同步 package-lock.json 版本至 0.1.8。
v0.1.72026-09-27
新功能:
· 桌面版(Electron)支持:profileNameFrom(argv, electronVersion)——桌面 Host(Electron RunAsNode)argv 无 --profile 时判 desktop,settings-schema 的 createRequire 锚定随之正确
· 插件 CLI 按名拒绝 desktop profile(含阻止 pnpm 兜底);desktop profile 运行态探测端口默认 19387
配套:
· 新增 locale/ 双语元数据与 exports(0.1.7-rc 插件页本地化)
· README 双语补桌面版 link 安装方式;搜索/网页读取凭据存于 $DSH_HOME,Web 与桌面版共用
安装(Web):dsh plugin --profile web add deepseek-harness-zhipu_plan_tools;桌面版见 README「桌面版 DSH」一节。
v0.1.62026-09-23
zhipu 0.1.6:插件配置迁到插件页组合包槽位,并修复搜索来源被截断
变更
· 插件配置迁到 DSH 0.1.7 契约:配置表单向 plugins.bundle.config(键为本包 npm 包名)注册,配置存储归 profile 行所有,随 settings 存储退役同步;client 半边精简。
· 最低 DSH 要求提升为 0.1.7-alpha.2。
修复
· 修复搜索来源被截断:scoped web_search 的合并来源上限由 12 提升为 40,智谱上游超量返回的来源不再被 seam 截断、来源面板不再显示截断标记。
数据来自仓库的 GitHub Release,可能与插件实际版本不一致。
README
由 DeepSeek 最新模型翻译生成deepseek-harness-zhipu_plan_tools
智谱 MCP 三件套 · DeepSeek Harness 插件
· English
把智谱(GLM Coding Plan)三个 MCP Server 的能力以 DSH 原生 provider / 工具形式接入:内置 web_search / web_fetch 后端替换为智谱联网搜索与网页读取,并可选注册三个 github_ 开源仓库工具。全部设置都在插件卡片中保存并实时生效。
功能与设置顺序
在侧栏 「插件」页 → deepseek-harness-zhipu_plan_tools 页面(DSH 0.1.6+)查看配置表单。
展开完整文档(README 剩余 1 节)
deepseek-harness-zhipu_plan_tools
智谱 MCP 三件套 · DeepSeek Harness 插件
· English
把智谱(GLM Coding Plan)三个 MCP Server 的能力以 DSH 原生 provider / 工具形式接入:内置 web_search / web_fetch 后端替换为智谱联网搜索与网页读取,并可选注册三个 github_ 开源仓库工具。全部设置都在插件卡片中保存并实时生效。
功能与设置顺序
在侧栏 「插件」页 → deepseek-harness-zhipu_plan_tools 页面(DSH 0.1.6+)查看配置表单。下表严格按表单从上到下排列:
| 设置 | 默认值 | 说明 |
| 启用智谱工具 | 开 | 总开关;关闭后搜索/读取进入兼容回退,仓库工具和相关提示卸载,设置入口保留 |
| 联网搜索(接管 web_search) | 开 | 通过智谱 web_search_prime 搜索,并替换模型可见的内置搜索说明 |
| 网页读取(接管 web_fetch) | 开 | 通过智谱 webReader 返回 Markdown;DSH v0.1.2 起 Web 端预设默认提供 web_fetch,安装后即生效 |
| 开源仓库工具 | 关 | 注册 github_search_doc、github_get_repo_structure、github_read_file |
| 提示词中文化 | 关 | 将插件注入的提示、工具说明与 github_ 工具错误消息从默认英文切换为中文;工具名不变 |
| 凭据引用名 | ZAI_CODING_CN_API_KEY | 只保存引用名,不保存 API Key |
卡片默认收起,底部依次为“恢复默认值 / 放弃修改 / 保存”。完整设置语义和关闭后的回退边界见行为契约。
工作机制
- 搜索/读取 = provider 替换:注册到 DSH web 服务的 provider,由 cordis.patch.yml 把 web 行的 searchProvider / fetchProvider 指向本插件;模型看到的工具名不变(web_search / web_fetch),后端换成智谱。
- 仓库工具 = 原生注册:三个 github_ 工具经 ctx.tools.register 注册,带系统提示指引与通用卡片,60 秒协作超时;历史中的过期或畸形参数仅降级为通用卡片,不影响会话重放,实际执行仍严格校验参数。
- 凭据:统一引用 ZAI_CODING_CN_API_KEY(智谱 GLM Coding Plan API Key),三层解析(DSH 凭据服务 → 环境变量 → ~/.dsh/.credentials.yaml 直读);Key 永不写入配置或日志。
- 尊重 Agent 预设:极简模式(minimal 预设)是“仅持久 shell + str_replace_editor”的双工具组合,该模式下不注册 web_search 阴影;zread 开启时还在该 Agent 作用域 deny 全局 github_ 工具(该 deny 不依赖 search 开关,插件启用即生效),保持双工具承诺。
- 热更新:设置 applies: 'live' 实时生效;Host 产物在当前 DSH 版本下没有免重启热通道(hmr 服务面已移除 registerConfig/partialReload,profile bundle 又位于官方 watcher 默认排除的 node_modules 下),改 src/ 后需 npm run build 并由用户重启一次 dsh web,lib/client.js 的改动则由 DSH client HMR 自动换血。
环境要求
- DeepSeek Harness >=0.2.0-rc.2 <0.3.0-0(package.json 的 engines.dsh 门禁;0.1.x 及更早会被宿主拒绝加载,0.3.0 起同样拒绝);Web 使用 web,Open Design stdio 使用 open-design,DSH 一次性任务可用 headless
- Node.js ^22.19.0 || >=24.0.0
- 智谱 GLM Coding Plan API Key;默认引用名为 ZAI_CODING_CN_API_KEY
安装
npm 注册表安装:
Web GUI:持久安装
dsh plugin --profile web add deepseek-harness-zhipu_plan_tools
Open Design 的真实 stdio profile
dsh plugin --profile open-design add deepseek-harness-zhipu_plan_tools
可选:DSH 自带 headless
dsh plugin --profile headless add deepseek-harness-zhipu_plan_tools
仅用于正在运行的 Web GUI 热安装
npx -y deepseek-harness-zhipu_plan_tools install --profile web
bundle 按 profile 隔离:Open Design 实际运行 dsh --profile open-design --stdio,不是 headless。两个非 Web profile 都在下一次短进程启动时加载;open-design 的 stdout 是严格 JSONL,本插件信息日志会改走 stderr。
桌面版 DSH(Electron 应用):本插件兼容桌面版(桌面 Host 端口 19387);桌面 profile(~/.dsh/profiles/desktop)由桌面应用独占,dsh plugin CLI 与本插件 CLI 都按名拒绝 --profile desktop。link 开发安装(桌面应用未运行时执行)——编辑 ~/.dsh/profiles/desktop/package.json:
"dependencies": { "deepseek-harness-zhipu_plan_tools": "link:<本仓库绝对路径>" },
"dsh": { "profile": { "bundles": [ /* 官方 bundle 保持原样,末尾追加 */ "deepseek-harness-zhipu_plan_tools" ] } }
在 profile 目录内执行 pnpm install 物化链接,启动桌面应用即挂载;改源码后 npm run build 并重启桌面应用;卸载移除两处条目后重新 pnpm install。搜索/网页读取的凭据存于 $DSH_HOME,Web 与桌面版共用。
本地源码联调:
npm install
node bin/dsh-zhipu.mjs install --profile web --link <项目绝对路径>
dsh plugin --profile open-design add "link:<项目绝对路径>"
dsh plugin --profile headless add "link:<项目绝对路径>"
本包 patch 含 web.config,项目桥接/临时行只用于 Web 热安装;其它 profile 使用官方持久通道。分别核对:
npx -y deepseek-harness-zhipu_plan_tools status --profile web
dsh plugin --profile open-design list
dsh --profile open-design --dump-default-config
dsh plugin --profile headless list
首次使用:添加 zai-coding-cn 提供商
使用本插件前,先在 DSH 设置中添加 zai-coding-cn 提供商(一个步骤,安装后只需做一次):
1. 打开 DSH 设置 → 模型;
2. 「提供方」下拉选择 zai-coding-cn(注意不是海外的 zai,本插件走智谱中国区端点 open.bigmodel.cn);
保存后 DSH 会自动使用 ZAI_CODING_CN_API_KEY 参数(即配置中 apiKeyEnv: ZAI_CODING_CN_API_KEY)作为该提供商的 API Key——这正是本插件默认的凭据引用名 credentialRef。
因此你只需保证 ZAI_CODING_CN_API_KEY 已存在于环境变量或 ~/.dsh/.credentials.yaml,插件零额外配置即可取到智谱 Coding Plan Key;若你在环境变量中配置了别的名字,可在插件页配置表单中把 credentialRef 改成对应名字。
Open Design/stock headless 没有设置页面,但同一 ${DSH_HOME:-~/.dsh} 下共用 settings.yaml 与凭据:可先在 Web GUI 保存设置,后续 open-design / headless 进程读取同一 dsh-zhipu 命名空间。
web_fetch(网页读取)可用性
自 DSH v0.1.2 起,Web 端 agent 预设(standard / ptc / cordis)默认在模型工具目录中提供 web_fetch。本插件只接管其后端 provider、不改工具开关:安装挂载后 web_fetch 默认即走智谱 webReader,无需额外启用步骤。
旧版 DSH(Web 组合尚未默认提供 web_fetch 时)才需要在 profile patch (~/.dsh/profiles/web/cordis.patch.yml)中启用:
- id: tool-web
config:
fetch: true
数据边界:开启态抓取在智谱云端执行(本地不连接目标地址,URL 会提交给智谱 MCP);关闭态回退本地受限 HTTP(S) 抓取,详见行为契约。
设置与数据
六个字段 enabled / search / reader / zread / zhPrompt / credentialRef 按上方卡片顺序存入 DSH settings.yaml 的 dsh-zhipu 命名空间。API Key 本身不进入该命名空间。
关闭 search / reader 会实时进入兼容回退(使用 DEEPSEEK_API_KEY 的 DeepSeek 搜索、受限 HTTP(S) 文本抓取),但不会改写 profile 中静态绑定的 provider。要让其他 provider 重新接管仍需卸载本插件;精确边界见关闭后的回退语义。
插件不上传额外数据、不做遥测;网络调用限于智谱官方 MCP、兼容回退端点和用户明确传入的 HTTP(S) 页面。
卸载
dsh plugin --profile web remove deepseek-harness-zhipu_plan_tools
dsh plugin --profile open-design remove deepseek-harness-zhipu_plan_tools
dsh plugin --profile headless remove deepseek-harness-zhipu_plan_tools
正在运行的 Web GUI 也可使用:
npx -y deepseek-harness-zhipu_plan_tools remove --profile web
卸载按 profile 独立清理;两个短进程 profile 从下一次调用起不再加载。settings.yaml 中的值可能保留。
开发
npm run typecheck # 三个 tsconfig 全量类型检查
npm run build # host(lib/)+ client(lib/client.js)+ CLI(bin/)+ tests(.tsbuild/)
npm test # 构建 + node:test 测试套件
npm run verify # 产物存在性 + 语法 + client bundle 格式 + CLI usage 冒烟
node scripts/smoke-live.mjs # 真实 API 冒烟(需要凭据;search/reader/zread)
改 src/ 后运行 npm run build;Host 以实际 provider/tool 变化验收,Client 以当前 profile 提供的 bundle 与设置卡验收。复杂 patch 的首次挂载限制见开发指南。
开发文档
- 行为契约
- 运行架构
- 开发指南
- 故障排查
- 发布流程
路线图
技术路线图只在运行架构维护;版本与 npm 发布状态只在发布流程维护。
License
MIT预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
magian1127/deepseek-harness-zhipu_plan_tools
Zhipu (GLM Coding Plan) MCP servers into DSH - 接入智谱的工具
相关插件 · 模型接入
API 中继安全审计toby-bridges/api-relay-audit
面向 AI API 中转与 LLM 代理的本地安全审计。
★ 897已汉化DSH
69.4
免费搜索插件DDDMUC/dsh-free-search
DeepSeek Harness 免费搜索插件 —— 无需 API key,零成本,多引擎可切换。 一个插件,给…
★ 814已汉化DSH
68.8
免费联网搜索liustack/modsearch
在官方 App 里模型能联网,切到 API 就不能了。ModSearch 把联网补回来:网页搜索、X…
★ 863已汉化DSH
68.5
OpenCode 免费模型FishBottle7/opencode2dsh
在 DSHDeepSeek Harness里原生使用 OpenCode Zen 的免费匿名模型。
★ 385已汉化DSH
67.9
AI 模型网关tingly-dev/tingly-box
Tingly Box Web UI 演示
★ 373已汉化DSH
67.4
WorkBuddy 账号池XDTrees/dsh-xdpool
把你能白嫖的模型额度接进 DSH 同一个池:WorkBuddy 多账号自动容错、十三家扫码登录、76…
★ 359已汉化DSH
67.1
这是你的仓库?认领条目