DevEco Code 弹出Built-in model service is currently overloaded. Please retry later or set up a custom model.的时候,内置免费模型通道已经排不上队,你手里那条"帮我生成一个 ArkTS 登录页"的自然语言指令会直接停在终端里。本文从这条报错切入,顺着deveco.jsonc的 Provider 字段,把模型通道换成 TaoToken(官网:https://taotoken.net/?utm_source=taotoken_aicg_blog_end)提供的自定义通道,让 DevEco Code 在写 ArkTS 时不再被免费模型负载卡住。
1. 先确认你撞上的是"模型服务繁忙"而不是别的错
原文 7.4 记录的报错原文是这样:
Built-in model service is currently overloaded. Please retry later or set up a custom model.这句话其实包含两层信息。第一层是现状:内置模型服务此刻过载,重试可能成功也可能继续排队。第二层是官方给的出路:or set up a custom model,也就是挂一个自定义模型通道进来。很多人只看到前半句就一直点重试,结果是 Build 模式生成到一半断开、Plan 模式任务拆解超时、Goal 模式的迭代循环刚起步就停在原地。
这条报错最容易出现在三个动作上:
- 在 Build 模式下让 Agent 一口气生成 ArkTS 页面加 Hvigor 构建加推包;
- 在 Plan 模式下让它先拆需求、再落技术方案;
- 在 Goal 模式下跑从需求到自验证的端到端特性交付。
这三条链路都要频繁调用模型,只要内置通道的并发被占满,终端就会把上面那句话原样吐出来。你的 Node.js、DEVECO_HOME、华为账号登录、HDC 设备连接可能全都是好的,唯一被卡住的就是模型这一环。
适用场景因此很明确:你已经装好 DevEco Code,也能正常deveco启动、正常登录,但就是没法稳定地让 Agent 帮你写 ArkTS。本文假设你处于这种"工具没坏、通道挤爆"的状态。
2. 排障方向:为什么改 deveco.jsonc 比反复重试更稳
原文 9.3 已经给过自定义模型的入口,共两个:一个是在 DevEco Code 里按Ctrl+A进入 Provider 选择界面;另一个是直接改deveco.jsonc里的 Provider 字段。
两条路的区别值得说清楚:
Ctrl+A的 Provider 界面适合快速切换,改完立刻生效,但每次换机器、换项目、重装工具都要重新点一遍,一旦你在多台设备之间同步工程,配置就对不齐。
deveco.jsonc是文件级配置,可以跟着项目走,也可以放进你的个人配置备份里,出问题时能直接打开看是哪一行的 Base URL 或 model 写错了。排障场景下,能看见原文的文件永远比图形界面更好定位。
这里还要把边界讲清楚:TaoToken 在这条链路里只负责提供 Key 和 Base URL 两个东西。它不参与 DevEco Code 的语法检查,不替你调用 Hvigor 编译构建,也不替你把 HAP 推到模拟器或真机。编译、推包、真机调试这些环节仍然由 DevEco Code 配合 DevEco Studio、HDC 自己完成。
换句话说,你换掉的只是"模型从哪来",不是"谁来干活"。
3. 在 TaoToken 侧准备 Key 和模型 ID
第一步,打开官网完成注册:https://taotoken.net/?utm_source=taotoken_aicg_blog_end
注册之后进控制台,创建一个 API Key。这个 Key 就是你稍后要填进deveco.jsonc里apiKey字段的值,创建时复制完整,不要只复制一部分。
第二步,去模型广场确认你要用的模型 ID。原文 9.3 给出的支持列表是 DeepSeek、智谱(GLM)、通义千问(Qwen),以及其它支持标准协议的模型。你可以从中挑一个作为主模型:想写 ArkTS 页面结构和状态管理,DeepSeek 系列通常够用;想让它更贴合中文注释和文档描述,智谱或通义千问也是常见选择。
需要特别提醒的是:模型广场里显示的"模型名称"和你需要填进配置文件的"模型 ID"不一定是同一个字符串。请以模型广场页面上标注的可调用 ID 为准,不要凭记忆写,也不要拿别处的模型名硬套。写错了会出现请求能发出去、但返回模型不存在的情况。
第三步,把两个东西记下来:
- API Key(占位符写作
YOUR_API_KEY) - API 基址:
https://taotoken.net/api
这个基址填进工具时末尾不带/v1,也不加末尾斜杠。
4. deveco.jsonc 里 Provider 字段怎么写
先定位配置文件。DevEco Code 的用户级配置一般放在~/.deveco/目录下,你可以在终端里确认:
ls -la ~/.deveco/如果当前项目里已经有deveco.jsonc,优先改项目里的那份,避免用户级配置和项目级配置互相覆盖。
打开文件后,找到或新增 Provider 相关段落。下面这段是可以直接照着改的结构,字段名请对齐你本地文件里已有的写法,不要盲目整段覆盖:
{ // 自定义模型通道 "provider": { "name": "taotoken", "baseURL": "https://taotoken.net/api", "apiKey": "YOUR_API_KEY", "model": "REPLACE_WITH_MODEL_ID" } }三个字段的填法逐条对应:
baseURL填https://taotoken.net/api。不要写成https://taotoken.net/api/v1,也不要写成https://taotoken.net/api/。多一个字符都可能让 DevEco Code 拼出错误路径。
apiKey填你刚创建的那串 Key。粘贴时注意前后不要带空格、不要带换行,JSON 字符串里也不要有中文引号。
model填模型广场上复制来的模型 ID,比如你选的是 DeepSeek 系列就填对应的 DeepSeek ID,选智谱就填 GLM 对应的 ID,选通义千问就填 Qwen 对应的 ID。同一个 Provider 只填一个主模型即可,后续需要切换再改。
如果你的deveco.jsonc里已经有别的 Provider 配置,正确做法是把taotoken这一段追加进去,然后在 DevEco Code 里把当前 Provider 切到taotoken,而不是把原有段落全部删掉。原有的登录态、会话相关字段不要动。
改完保存文件,别急着启动,先做一次 JSONC 语法自检:注释符是//,允许尾随逗号,但引号必须是英文半角,括号要配平。一个没闭合的引号会让整份配置被忽略,然后你会看到一个"改了但好像没生效"的假象。
5. 重启 DevEco Code 并用一条自然语言指令验证
配置文件是启动时读取的,改完必须退出再进。在终端里按Ctrl+C退出当前会话,然后重新启动:
cd your-harmonyos-project deveco重启之后,先看状态区显示的 Provider 是不是已经切到taotoken。如果状态区还显示内置模型,说明配置文件里的 Provider 名称和你在界面上选中的那个没对上。
接着发一条最小的自然语言构建指令,用原文 6.2 里那种 Build 模式的写法:
帮我新增一个设置页面,包含深色/浅色主题切换开关和通知开关观察三件事:
第一,终端是否还会出现Built-in model service is currently overloaded。如果这条报错不再出现,说明模型通道已经换到 TaoToken 侧,排障目标达成。
第二,Agent 是否开始正常产出SettingPage.ets这类 ArkTS 文件。这一步能确认模型是真的在工作,而不是请求发出去了但没有内容回来。
第三,后续的 Hvigor 编译、HDC 推包流程是否照旧。这一步很重要——它反过来证明 TaoToken 只提供了模型通道,编译和部署还是 DevEco Code 自己完成的,链路没有被人为截断。
如果你想验证得更彻底一点,可以先跑一条轻量的 Plan 模式指令,比如让它拆一个用户认证模块的需求,看它能不能给出结构化的任务列表。Plan 模式比 Build 模式对模型调用更密集,能过这一关,说明通道基本稳定。
6. 改完 deveco.jsonc 仍然报错的排查顺序
改完配置依然弹模型服务繁忙,或者出现别的异常,按下面这个顺序捋,别一上来就重装工具。
第一类,配置没生效。最常见的原因是没重启 DevEco Code,或者你改的是项目里的deveco.jsonc,但工具实际读的是~/.deveco/下的用户级配置。先确认改的文件路径和实际加载路径是同一个。
第二类,Base URL 写错。检查是不是多写了/v1,是不是末尾多了斜杠,是不是写成了站点的其它路径。正确值就是https://taotoken.net/api,一个字符都别加。
第三类,apiKey 没粘全或带了杂质。重新回官网控制台复制一次,粘贴进配置文件后肉眼检查首尾有没有多余空格。如果 Key 已经被你删除或重置过,旧值必然失效,要用新的。
第四类,model 字段填的不是模型 ID。把模型广场上的可调用 ID 原样复制过来,不要用页面上展示的显示名,也不要凭印象写。
第五类,JSONC 语法错误。整个文件括号没闭合、字符串引号用了中文引号、字段之间少了逗号,都会让配置解析失败。可以用编辑器的 JSON 校验功能快速过一遍。
第六类,Provider 没切过去。文件改对了,但 DevEco Code 当前选中的还是内置模型,那自然还是走原来的通道。重启后进Ctrl+A的 Provider 界面确认一次选中的是taotoken。
如果六类都排除了,报文变成连接超时或者网关拒绝,那属于网络层问题,检查终端能否正常访问外网、是否被本地代理规则拦截。这时候和"模型服务繁忙"已经不是同一类故障了。
7. 把自定义通道固化下来,继续用自然语言写 ArkTS
整条链路其实只有三个动作:在官网拿到 Key,在模型广场确认模型 ID,在deveco.jsonc的 Provider 里把 Base URL、apiKey、model 三项填对,然后重启验证。它的价值在于:当内置免费模型再次过载时,你的 Build、Plan、Goal 三种模式都不会被同一句话打断,ArkTS 的自然语言工作流可以继续往下跑。
如果你准备把这套配置沿用到团队的其它机器,建议顺手把 Key 管理起来,方便轮换和回收:https://taotoken.net/console/api-keys?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content=deveco_code_provider
关于标准协议下的接入细节和字段约定的更多说明,可以对照这份文档核对:https://taotoken.net/doc/ClaudeCodeAnthropic?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content=deveco_code_provider
配好之后,回到你的 HarmonyOS 工程目录,输入deveco,把那条被"模型服务繁忙"打断过的需求重新发出去。