把智谱 BigModel 接进 DeepSeek Harness(DSH),走的是和上一篇接百炼完全相同的路:智谱提供 OpenAI 兼容接口,DSH 的模型提供商按 openai-completions 配置,两端要对齐的还是 API Key、BASE_URL、模型名 三样。差异全在平台侧:接口路径是 /api/paas/v4,Key 是「点号两段式」而不是 sk- 开头,没有地域概念,但多了「按量与编程套餐 Key 不通用」和一套更细的业务错误码。
一、BigModel 侧:注册、拿 Key
访问智谱开放平台(open.bigmodel.cn)注册并完成实名认证,然后在个人中心进 API Keys 页面创建 Key。两点和本机其他提供商不一样的地方:
- Key 格式是两段式:形如
32位十六进制ID.密钥串,中间用点号分隔。复制时务必两段完整——只拷了前段照样创建得出去,调用时才报 401。 - 按量计费与 GLM Coding Plan 的 Key 不通用:订阅了编程套餐就用对应产品入口发的 Key,拿错类型会被拒(业务错误码 1315 说得直白:「该 API Key 仅限企业编程套餐场景使用,请到官网更换对应产品类型的 API Key」)。
二、先 curl 验证,再进配置
智谱 OpenAI 兼容接口的基础地址是 https://open.bigmodel.cn/api/paas/v4,对话补全的完整 endpoint 在其后加 /chat/completions。老规矩,命令行先打通:
curl -s https://open.bigmodel.cn/api/paas/v4/chat/completions \
-H "Authorization: Bearer $BIGMODEL_API_KEY" \
-H "Content-Type: application/json" \
-d '{"model": "glm-4.5-air", "messages": [{"role": "user", "content": "你好"}]}'
# 返回含 choices 的正常 JSON 即通一个官方文档里值得留意的细节:流式(SSE)调用如果在推理过程中异常终止,不会返回正常的错误码报文,而是把异常原因放进 finish_reason 字段——排错时别只盯着 HTTP 状态码。
三、写 DSH 的 provider 条目
还是改 profile 的 cordis.patch.yml(Windows 在 %USERPROFILE%\.dsh\profiles\desktop\,Linux/macOS 在 ~/.dsh/profiles/ 对应档下),给 @deepseek-ai/dsh-llm-pi-ai 加条目。下面是本机实际在跑的写法:
- id: llm-bigmodel # 条目 id,整棵树内唯一
name: "@deepseek-ai/dsh-llm-pi-ai"
config:
providers:
bigmodel: # provider 名,会话里全名是 bigmodel/glm-5.2 这种
displayName: 智谱BigModel
apiKeyEnv: BIGMODEL_API_KEY # 密钥引用名,不是 Key 本身
api: openai-completions
baseURL: https://open.bigmodel.cn/api/paas/v4
models:
- id: glm-4.5-air # 轻量档,日常问答便宜
name: glm-4.5-air
- id: glm-4.7
name: glm-4.7
- id: glm-5.1
name: glm-5.1
- id: glm-5.2
name: glm-5.2
- id: glm-5.3
name: glm-5.3
- id: glm-5.3-flash
name: glm-5.3-flash
- id: glm-5.3-flashx
name: glm-5.3-flashx和百炼条目对照着看,差异一眼就能数完:
| 项 | 智谱 BigModel | 阿里云百炼 |
|---|---|---|
baseURL | https://open.bigmodel.cn/api/paas/v4,全平台一个 | 按地域/业务空间选(北京专属域名、老 dashscope 域名等) |
| Key 形态 | 点号两段式 ID.secret | sk- 开头,按地域绑定 |
models id | 无供应商前缀,直接用 glm-* 模型代码 | 三方直供模型可能带 vendor/ 前缀 |
| 错误反馈 | HTTP 码 + 业务码双层(1000/1211/1302…) | HTTP 码 + OpenAI 风格 error code |
写 models 列表时以控制台模型页的模型代码为准;DSH 发起调用就按这里的 id 原样传 model 参数,写错报 400/1211「模型不存在,请检查模型代码」。
四、和百炼并存:一个 entry,多家提供商
config.providers 是个映射,多个提供商可以写在同一个条目里——本机就是 bigmodel 和 bailian 挂在同一条 llm-pi-ai 下。接入后的切换体验是统一的:会话里用 bigmodel/glm-5.2 或 bailian/qwen3.8-flash 这种「provider/model」全名选模型,工具链、权限档位、MCP 配置都不用动。
API Key 依旧落 ~/.dsh/.credentials.yaml 的 refs 段,键名与 apiKeyEnv 逐字一致:
# ~/.dsh/.credentials.yaml(节选,密钥已打码)
refs:
BIGMODEL_API_KEY: 94d1****.7S6k****
BAILIAN_API_KEY: sk-****五、把 GLM 设为默认模型
要让新会话默认走智谱,加一个指向 @deepseek-ai/dsh-agent-default-model 的条目:
- id: agent-default-model
name: "@deepseek-ai/dsh-agent-default-model"
config:
provider: bigmodel
model: glm-5.2改完重启 DSH(profile 的 patch 层在启动时组合),新建会话确认模型显示为 bigmodel/...,发一句话能正常流式输出即接通。
六、常见问题速查
智谱的报错是「外层 HTTP 状态码 + 响应体里的业务错误码」两层,光看 HTTP 码不够,排错时把 error.code 一起看:
| 业务码 / HTTP | 官方含义 | 实际多是什么原因 |
|---|---|---|
| 1000 / 401 | 身份验证失败 | Key 复制不全(丢了点号后段)、多拷了空格,或 refs 键名和 apiKeyEnv 不一致 |
| 1003 / 401 | Token 已过期 | 控制台重新生成 Key,更新凭据条目后重启 |
| 1113 / 429 | 账户已欠费 | 充值;或给子账号换有额度的 Key |
| 1211 / 400 | 模型不存在 | models 里的 id 与模型代码不一致,逐个核对 |
| 1261 / 400 | Prompt 超长 | 长会话撞上下文上限:开新会话,或换更长上下文的型号 |
| 1301 / 400 | 输入或生成内容涉敏 | 内容风控,改写提示语;Agent 场景偶发于工具回传内容 |
| 1302 / 1308 / 429 | 速率限制 / 用量上限 | 并发压太高,降频等限额重置;或申请提额 |
| 1309 / 1315 / 429 | Coding Plan 到期 / Key 类型不符 | 按量与编程套餐的 Key 不通用,去对应产品入口换 Key |
| 改完配置没反应 | — | 老三样:编辑的应是 cordis.patch.yml、条目 id 别撞名、重启 DSH 再验 |
到这里,这台 DSH 的模型侧就有了三条路线:智谱的 GLM 系、百炼的千问/DeepSeek/Kimi 混编,再加上本地 LM Studio——全都收敛成同一个 openai-completions provider 写法。以后接任何一家 OpenAI 兼容的模型服务,都是这四十行 YAML 的事。相关配置背景可看DSH Desktop 上手指南。
评论区