Trae CN 配置内网API KEY的踩坑实录:3个坑,最后一个最致命
前言
天下苦trae模型排队久已。Trae 是字节出的 AI IDE,内置模型免费,但有时候想用自己的 Key 跑特定模型,总是要排队,晚上还好,白天几千人的队伍,一排就是十几分钟,而且随着使用时间久了,发现这个排队时间越来越长,且明显可以看到氪金用户在插队,导致名次时高时低。
寒极必春暖,苦尽会回甘。boss终于给我们配发了api key, cc-switch上一瞧,支持巨多模型;于是屁颠屁颠着手尝试在 Trae CN 配置上API KEY,可惜惨败。
本以为就是填个地址、贴个 Key 的事,结果踩了三个大坑,最后一个坑直接让整个方案不可行。如果你也打算在 Trae 里用自己的 API Key 接入api模型,这篇文章能帮你少走弯路。
坑1:改配置文件?Trae CN 根本不读
我第一反应是让auto模型ai去改 Trae 的配置文件。找到路径:
C:\Users\<用户名>\AppData\Roaming\Trae CN\User\settings.json
往里面加了一段:
"trae.customModels": [
{
"name": "GLM-5.1",
"provider": "openai-compatible",
"baseUrl": "http://xxx/v1",
"apiKey": "xxxxx",
"modelId": "glm-5.1"
}
]
重启 Trae,满怀期待地打开模型下拉框——什么都没有。
让auto模型ai解释一番:“翻了 Trae 的源码才发现,国内版的 settings.json 里根本没有解析 trae.customModels 这个字段的逻辑。自定义模型的配置走的是 Trae 内部的存储机制,只能通过 UI 操作添加。“,我被它蠢哭了o(╥﹏╥)o
教训:别折腾Trae CN的配置文件了,直接走 UI,且模型选聪明点的。
坑2:添加成功,但发消息一直转圈
老老实实走 UI:设置 → 模型 → 添加模型 → 自定义配置,填好地址和 Key,验证通过,模型出现在列表里了。
然而,选上glm-5.1这个模型发消息,提示Concurrency limit exceeded for account, please retry later。

改选glm-5这个模型发消息,一直转圈,没有任何响应。

第一反应是:可能这个key不支持流式输出?
查了一下trae文档,配置自定义模型时,非完整链接需要在 baseUrl 后面添加 v1。完整链接则需要拼接v1/chat/completions。可能有些厂商提供的连接是v2接口,需要在 baseUrl 后面添加 v2。
赶紧用 curl 测了一下:
# 先把请求体写入文件(PowerShell 直接传 JSON 会被转义!)
$body = '{"model":"glm-5.1","messages":[{"role":"user","content":"hello"}],"max_tokens":50}'
[System.IO.File]::WriteAllText("$env:TEMP\test.json", $body, [System.Text.UTF8Encoding]::new($false))
# 非流式测试
curl.exe -s -X POST "http://xxx/v1/chat/completions" -H "Content-Type: application/json" -H "Authorization: Bearer sk-xxx" -d "@$env:TEMP\test.json"
# 流式测试(加 "stream":true)
结果:非流式 200,流式也 200。返回是完全正常。
顺便提一个 PowerShell 的坑:直接用单引号传 JSON 给 curl.exe 会被 PowerShell 转义,导致 400 错误。必须先写入文件再用 @文件路径 方式传参。这个坑卡了我好一会儿。
转圈问题后来没有复现,可能是首次连接延迟或网络波动。
教训:遇到"转圈",先用 curl、cc-switch等工具直连测试,排除接口本身的问题。
坑3(致命):503 No available accounts——这不是你的问题
转圈问题消失后,我再次尝试发送消息,这次等来的是一个明确的错误:

No available accounts: no available accounts (HTTP Status: 503)
第一反应还是链接的问题。但 curl 测试明明一切正常啊?
让模型仔细分析后才发现:这个 503 根本不是api模型链接返回的,是 Trae 自己的后端返回的。
关键发现:Trae CN 的自定义模型功能,虽然允许你添加模型、验证 Key,但实际调用时,请求并不是直连你的api模型链接,而是经过 Trae 的后端代理转发。Trae 后端会先检查你的账户权限和额度:
- Free(免费)用户:自定义模型调用受限,额度用完或权限不足时返回 503
- Pro(付费)用户:自定义模型调用正常
也就是说,不管你的api模型链接有多正常、Key 有多有效,Free 用户就是用不了自定义模型。这不是配置问题,是平台限制。
深挖:凭什么说 503 是 Trae 后端返回的?
你可能会问:你怎么知道 503 不是api模型链接返回的?光凭猜测吗?
不是。我让模型ai翻了 Trae CN 的源码,找到了四层证据。
证据1:错误格式不对
"No available accounts" 不是 OpenAI 兼容 API 的标准错误格式。标准格式长这样:
{"error": {"message": "...", "type": "...", "code": "..."}}
而我们的api模型链接 curl 测试返回 200 完全正常,所以 503 不是api模型链接返回的。
证据2:客户端源码里找不到这个错误
Trae CN 安装目录下有个 main.js(约 1400 行、几十 MB 的混淆代码)。我搜了以下关键词,全部无匹配:
"No available accounts""availableAccounts""noAvailableAccount"
错误文本既不在客户端硬编码,也不是本地生成的,只能来自服务端响应。
证据3:WebSocket 连接地址的构造逻辑(铁证)
在 main.js 第 1377 行找到关键代码(已反混淆):
// WebSocket 连接地址构造
vse = async (t, e) => {
if (e?.isBytedanceUser || !e?.userInfo) return "";
if (e?.isBusinessUser) {
// 企业用户:连接到企业自己的后端
const i = e?.userInfo?.account?.saasBootConfig?.apiHost || "";
return i ? `wss://${new URL(i).host}/custom_model` : "";
}
// 普通 Trae 用户:连接到 Trae 官方域名的 WebSocket 服务
return vn({ config: t.trae, ctx: e });
}
看懂了吗?自定义模型的请求根本不是直连你的api模型链接,而是通过 WebSocket 连接到 Trae 服务端的 /custom_model 端点。Trae 服务端收到请求后,先做权限校验,再转发到你配置的api模型链接地址。
- Business 用户(企业版):走
wss://<企业apiHost>/custom_model - 普通 Trae 用户:走 Trae 官方域名的 WebSocket 服务
证据4:账户数据实锤
从 storage.json 的 iCubeServerData 中可以看到:
{
"entitlementInfo": {
"identityStr": "Free",
"identity": 0,
"isPayFreshman": false,
"permission": 0
}
}
identity: 0 + permission: 0 = Free 用户,没有自定义模型的调用权限。503 就是在这一层被拦的。
修正后的调用链路
所以之前说"HTTP 代理转发"不够精确,实际上是 WebSocket 连接到 Trae 服务端的 /custom_model 端点,由服务端做权限校验后再转发。
那怎么办?(推荐路线5)
路线1:继续人手用 Trae 内置的 GLM-5.1(最简单)
Trae CN 已经内置了 GLM-5.1,直接在模型下拉框选就行,走官方通道,Free 用户有免费额度。如果你只是想用 GLM-5.1,完全不需要折腾自己api模型链接。
路线2:升级 Pro 会员
如果你需要大量使用自定义模型(走自己的 Key),升级 Pro 后 503 问题消失。但这就不是"免费"了。
路线3:用 Cline 插件或者改用开源的trae-proxy绕过 Trae 代理
这是最硬核的方案:
- 安装 Trae 国际版(和国内版可以共存)
- 在插件市场安装 Cline 插件
- 在 Cline 里配置你的api模型链接地址和 Key
Cline 插件是直连你的 API 端点的,不经过 Trae 后端代理,所以不会出现 503。但缺点是 Cline 的交互体验不如 Trae 原生对话那么丝滑。
而trae-proxy是上一年的项目,现在好像没有在维护了。
路线4:改用codebody
可免费试用glm-5.1,但是要消耗积分。
路线5:改用claude等工具
亲测可行,爽哉。

一张图总结
你的api模型链接从头到尾都没被访问到——请求在 Trae 服务端就被拦了。
最后的忠告
- 别改配置文件:Trae CN 不读
trae.customModels,只能走 UI - 先 curl、cc-switch 测api模型链接:遇到问题先排除api模型链接本身
- PowerShell 传 JSON 要写文件:直接传会被转义导致 400
- Free 用户别折腾内网自定义模型:503 是平台限制,不是你的配置问题
- 内置模型优先:Trae CN 已内置 GLM-5.1 等主流模型,直接用
- API Key 别写文件:在 IDE 设置面板手动输入,避免泄露
希望这篇文章能帮你少踩几个坑。
与君共勉。

浙公网安备 33010602011771号