微信 CodingPlan 接入 WorkBuddy
用途
把 2026 微信小程序开发大赛发放的 CodingPlan Token 落成 WorkBuddy 的可用模型:
探测网关 → 写入 ~/.workbuddy/models.json → 指引重启并选模型。
支持 Deepseek-v4-flash、GLM-5.2(网关 OpenAI 兼容,支持工具调用/流式/推理)。
何时使用
- 用户给出
chatapi.weixin.qq.com的 Token(一长串带/+=的字符),要求接入或配置 - 用户问"能不能接 GLM-5.2 / Deepseek-v4-flash 到我这里"
- 该网关报 400 / 401 / 429,需要定位原因
- 需要查看或移除已接入的 CodingPlan 模型
需要用户提供的信息
只有一项是必需的:Token(API Key)。 其余全部有默认值。
| 信息 | 必需 | 获取方式 / 默认值 |
|---|---|---|
| Token | ✅ | 浏览器打开 https://chatapi.weixin.qq.com,用报名/提交作品的那个微信号扫码登录 → 先点「订阅套餐」(免费,不点会 403/429)→ 复制"我的 Token" |
| 网关地址 | ❌ | 固定 https://chatapi.weixin.qq.com/openai/v1/chat/completions |
| 模型名 | ❌ | Deepseek-v4-flash / GLM-5.2(大小写敏感,见下) |
| 上下文/输出上限 | ❌ | 均 200000 / 48000 |
执行流程
1. 拿 Token
若用户没给,先说明上面表格里的领取路径,等用户粘贴。不要猜测或编造 Token。
拿到后不要把它写进工作区文件、日志或提交记录里;只允许写入 models.json。
2. 一键接入(推荐)
python3 ~/.workbuddy/skills/wechat-codingplan-setup/scripts/setup.py --token "<用户给的Token>"
脚本内部完成:Token 字符集校验 → 逐模型探测连通性 → 备份 models.json → 幂等写入
(重复执行不会产生重复条目,且保留用户其它模型)→ 输出重启提示。
其它模式:
... setup.py --check # 只探测,不写配置(排查时先跑这个)
... setup.py --list # 看已接入的模型和 Token 指纹
... setup.py --remove # 移除本技能写入的条目(自动备份)
... setup.py --dry-run # 演示将写入什么
Token 也可用环境变量 WECHAT_CODINGPLAN_TOKEN 传入;两者都没有时脚本会读 models.json
里已存的 Token(等于复检),再没有才交互式询问。
3. 手动接入(脚本不可用时)
编辑 ~/.workbuddy/models.json(纯数组,不是 { "models": [...] }),在数组里追加:
{
"id": "Deepseek-v4-flash",
"name": "微信CodingPlan Deepseek-v4-flash",
"vendor": "Custom",
"url": "https://chatapi.weixin.qq.com/openai/v1/chat/completions",
"apiKey": "<Token>",
"supportsToolCall": true,
"supportsImages": true,
"supportsReasoning": true,
"maxInputTokens": 200000,
"maxOutputTokens": 48000
}
GLM-5.2 同上,改 id / name,并把 supportsImages 设为 false。
改前先 cp models.json models.json.bak.$(date +%s)。
4. 交付给用户
- 明确告知:必须完全退出并重启 WorkBuddy,
models.json只在启动时读取 - 重启后在模型选择器里选「微信CodingPlan Deepseek-v4-flash」或「微信CodingPlan GLM-5.2」
- 若用户要教程发给队友,输出
references/tutorial.md的内容
硬约束(踩过的坑,务必遵守)
- 模型名大小写敏感。网关只认
Deepseek-v4-flash(首字母大写)和GLM-5.2。
Deepseek-v4.1-flash、deepseek-v4-flash(全小写)、Deepseek-V4.1-Flash均返回
400 invalid model: model name not found。官方文档说的"已支持 Deepseek-v4.1-flash"实际不成立。 - 官方文档 JSON 里的
vendor: "weixin-miniapp"不要照抄。WorkBuddy 只认它内置的
provider vendor(Custom/OpenAI/DeepSeek/ …),自定义模型必须用"Custom",
否则 UI 里可能不显示或无法编辑。 apiKey必须是无空白的可打印 ASCII(WorkBuddy 前端校验/^[\x21-\x7E]+$/)。
复制时带换行/空格会被拒,脚本会提前拦下。- 写完必须重启,热加载不生效。
models.json是纯数组;写成{"models": [...]}会导致自定义模型全部消失。
排错
| 现象 | 原因 | 处理 |
|---|---|---|
400 invalid model |
模型名拼错/大小写不对 | 用 --check 逐个探测,只用探测通过的 |
401 Authentication failed |
Token 错、不完整、已过期 | 重新扫码领取 |
403 / 429 |
没点「订阅套餐」,或额度用尽 | 去 chatapi.weixin.qq.com 点订阅 / 看用量 |
| 配置写了但模型选择器里没有 | 没重启,或 JSON 结构写错 | 重启;用 python3 -c "import json;json.load(open('...'))" 校验 |
| 重启后条目消失 | WorkBuddy 退出时回写了配置 | 先读当前文件,再重新 upsert |
额度:5h≈1200 次 / 周≈9000 次 / 30 天≈18000 次,并发 6;GLM-5.2 是推理模型,
首字延迟明显高于 Deepseek-v4-flash,日常改代码优先用后者。
资源
scripts/setup.py— 探测 + 幂等写入 + 备份 + 移除,全部逻辑在此references/tutorial.md— 面向人的完整图文教程,可直接发给队友references/gateway-notes.md— 网关协议细节(curl 示例、字段、实测结论)