1. 为什么要在 HagiCode 里同时接 GLM 和 Gemini CLI
如果你正在用 HagiCode 做日常开发,大概率会遇到一个很现实的问题:不同任务对模型的需求完全不一样。写业务代码时希望模型稳、少胡说,做重构和长上下文分析时又希望它能一口气读完整个模块;而到了写脚本、跑批处理、做命令行小工具的时候,又希望模型能直接落到终端里执行,而不是在编辑器里来回复制粘贴。
GLM 系列在中文语境和代码补全上表现稳定,Gemini CLI 则擅长把模型能力直接搬进终端工作流。把这两者放进同一个 HagiCode 工作区,你就能做到:编辑器里用 GLM 做主力补全和对话,终端里用 Gemini CLI 做批量文件处理和脚本生成,两边共享同一套模型接入配置,切换成本几乎为零。
这篇内容面向的是需要在同一工作流里切换模型的开发者。我会先讲清楚 HagiCode 的模型配置结构,再给出可复制的配置片段,然后一步步把 Gemini CLI 接进来,最后用几个真实请求验证多模型是否真的生效。整个过程不需要你改 HagiCode 源码,全部通过配置文件和命令行完成。
核心检索词先明确:HagiCode 多模型配置、GLM 接入、Gemini CLI 集成、模型切换验证。适合谁?适合已经在用 HagiCode、想把手里的模型资源统一管理、并且愿意花二十分钟做一次本地环境搭建的人。下面直接进入操作。
2. TaoToken 前置准备:拿到 Base URL 和 API Key
在动 HagiCode 配置之前,先把模型接入的“通行证”准备好。TaoToken 在这里扮演的是统一接入层:你不需要分别去每个模型厂商申请 Key、记不同的 Base URL,而是用一套地址和 Key 覆盖 GLM、Gemini 等模型的调用。
第一步,打开官网 https://taotoken.net/?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content= 注册并登录。登录后进入控制台,地址是 https://taotoken.net/console?utm_source=taotoken_aicg_blog_end&utm_content=console&utm_campaign=rewrite 。在控制台里你能看到账户余额、调用统计,以及最关键的 API Key 管理入口。
第二步,创建 API Key。进入 https://taotoken.net/api-keys?utm_source=taotoken_aicg_blog_end&utm_content=api-keys&utm_campaign=rewrite ,点新建,复制生成的 Key。这个 Key 只显示一次,建议直接存进本地密码管理器或者环境变量文件,不要贴在代码仓库里。
第三步,确认 API 地址。TaoToken 的 API 根地址是 https://taotoken.net/api ,注意这个地址不带任何查询参数,配置里直接写它就行。模型对话的调试页面在 https://taotoken.net/models?utm_source=taotoken_aicg_blog_end&utm_content=models&utm_campaign=rewrite ,你可以先在这里手动发一条消息,确认 Key 能用、模型能返回,再去配 HagiCode,这样能省掉后面排查“到底是 Key 错还是配置错”的时间。
这里有个容易踩的坑:很多人会把官网首页地址当成 API 地址填进配置,结果请求直接 404。记住区分——官网是给人看的,API 根地址是给程序调用的,两者不是一回事。另外,Key 的权限和余额是绑定的,如果调用返回 401,先回控制台看 Key 是否被禁用、余额是否为零,再去查配置。
准备好这三样东西:API Key、Base URL(https://taotoken.net/api)、以及你想用的模型 ID(比如 GLM 系列和 Gemini 系列的模型标识),就可以进入 HagiCode 的配置环节了。模型 ID 的具体写法以控制台模型列表为准,不同时期上架的模型标识可能不同,配置前先核对一遍。
3. 可复制配置:HagiCode 模型片段与 Gemini CLI 接入
这一节是全文的核心,所有片段都可以直接复制。先讲 HagiCode 的模型配置,再讲 Gemini CLI 的接入,最后把两者串起来。
HagiCode 的模型配置通常放在工作区根目录的配置文件里,常见形式是 JSON 或 TOML。下面给一份 JSON 结构的模型配置片段,路径按你本地实际的工作区配置目录来放,字段名保持和原文一致:
{ "models": { "providers": { "taotoken": { "baseUrl": "https://taotoken.net/api", "apiKey": "sk-你的TaoToken密钥", "models": [ { "id": "glm-4-plus", "displayName": "GLM 主力", "contextWindow": 128000 }, { "id": "glm-4-flash", "displayName": "GLM 快速", "contextWindow": 128000 } ] } }, "defaultModel": "glm-4-plus" } }如果你更习惯 TOML,等价写法如下:
[models.providers.taotoken] baseUrl = "https://taotoken.net/api" apiKey = "sk-你的TaoToken密钥" [[models.providers.taotoken.models]] id = "glm-4-plus" displayName = "GLM 主力" contextWindow = 128000 [[models.providers.taotoken.models]] id = "glm-4-flash" displayName = "GLM 快速" contextWindow = 128000 [models] defaultModel = "glm-4-plus"配置里三个要素必须齐全:Base URL、API Key、Model ID。缺任何一个,请求都会失败。Base URL 写 https://taotoken.net/api ,不要加斜杠结尾,也不要带 UTM 参数。
接下来是 Gemini CLI 的接入。Gemini CLI 一般通过环境变量或配置文件读取模型接入信息。推荐用环境变量,避免把 Key 写进 shell 历史。在~/.zshrc或~/.bashrc里加:
export TAOTOKEN_API_KEY="sk-你的TaoToken密钥" export TAOTOKEN_BASE_URL="https://taotoken.net/api" export GEMINI_MODEL="gemini-2.0-flash"然后写 Gemini CLI 的配置文件,路径通常是~/.config/gemini-cli/config.json:
{ "provider": { "name": "taotoken", "baseUrl": "https://taotoken.net/api", "apiKeyEnv": "TAOTOKEN_API_KEY" }, "model": { "id": "gemini-2.0-flash", "maxOutputTokens": 8192 }, "cli": { "autoApproveReadOnly": true, "workingDirectory": "." } }注意apiKeyEnv指向的是环境变量名,不是 Key 本身,这样配置文件可以安全地提交到私有仓库。workingDirectory控制 CLI 的工作目录,建议设成你的项目根目录,避免它误操作到系统目录。
如果你用的是 Cline MCP 或 Codex 的 auth.json 体系,三件套同样要写全。以 Codex 的auth.json为例:
{ "baseUrl": "https://taotoken.net/api", "apiKey": "sk-你的TaoToken密钥", "model": "glm-4-plus" }Base URL、Key、Model ID 一个都不能少。我见过有人只填了 Key 和 Model,结果请求发到了默认的官方地址,自然报错。配置完成后,HagiCode 负责编辑器内的模型调用,Gemini CLI 负责终端内的模型调用,两者共用同一个 TaoToken 接入点,模型切换只需要改defaultModel或GEMINI_MODEL。
4. 验证请求:确认 GLM 与 Gemini CLI 都真的通了
配置写完不代表生效,必须用真实请求验证。验证分两条线:HagiCode 里的 GLM 调用,和终端里的 Gemini CLI 调用。
先验证 HagiCode。打开 HagiCode,新建一个对话,输入一句能明显区分模型的话,比如“用一句话说明你是什么模型”。如果返回内容符合 GLM 的风格,并且没有报错,说明编辑器侧的配置生效了。更严谨的做法是看 HagiCode 的日志输出,确认请求地址是 https://taotoken.net/api ,而不是其他地址。
再验证 Gemini CLI。在终端执行:
gemini-cli "列出当前目录下所有 .md 文件,并统计每个文件的行数"如果 CLI 正常返回文件列表和行数统计,说明终端侧接入成功。你也可以用一条更简单的命令确认模型身份:
gemini-cli --model gemini-2.0-flash "回复 OK 两个字母即可"预期结果是终端打印出 OK。如果这一步卡住或报错,先看错误类型,下一节会逐条对照。
多模型切换的验证动作:把 HagiCode 的defaultModel从glm-4-plus改成glm-4-flash,重启对话,再发同样的问题,观察响应速度和内容差异。然后在终端把GEMINI_MODEL换成另一个 Gemini 模型 ID,重新执行同一条命令。两次都能正常返回,说明多模型协同配置真正跑通了。
这里给一个批量验证的小脚本,放在项目根目录执行:
#!/bin/bash echo "=== 验证 HagiCode 配置 ===" grep -o '"baseUrl": "[^"]*"' .hagicode/models.json echo "=== 验证 Gemini CLI 环境变量 ===" echo "BASE_URL=$TAOTOKEN_BASE_URL" echo "MODEL=$GEMINI_MODEL" echo "=== 发起一次 CLI 请求 ===" gemini-cli "回复:配置验证通过"脚本会打印出当前生效的 Base URL 和模型 ID,再发一次真实请求。如果 Base URL 打印出来不是 https://taotoken.net/api ,说明环境变量被其他配置覆盖了,需要检查 shell 配置文件的加载顺序。
验证通过的标准很简单:编辑器里 GLM 能答,终端里 Gemini CLI 能答,切换模型后两者都还能答。三条都满足,环境就算搭好了。
5. 常见报错排查:401、local proxy failed、reading choices、OAuth
配置过程中最容易撞上的就是这几类报错,逐个说清楚原因和解法。
401 Unauthorized。这是最常见的,九成是 Key 的问题。先确认 API Key 复制完整,没有多余空格;再回控制台看 Key 是否被禁用、余额是否充足。如果 Key 没问题,检查配置里apiKey字段有没有被环境变量覆盖成空值。还有一种情况是 Base URL 写错,请求打到了别的服务,对方返回 401。确认地址是 https://taotoken.net/api 。
local proxy failed。这个报错通常出现在 Gemini CLI 侧,意思是 CLI 尝试走本地代理但失败了。检查你的 shell 里有没有设置HTTP_PROXY或HTTPS_PROXY指向一个不存在的本地端口。如果有,临时 unset 掉再试:
unset HTTP_PROXY HTTPS_PROXY gemini-cli "测试连接"另外确认~/.config/gemini-cli/config.json里的baseUrl没有被写成http://localhost:xxxx之类的本地地址。
reading choices 相关报错。这类错误一般出现在模型返回结构不符合预期时,比如返回体里没有choices字段。原因可能是模型 ID 写错,请求被路由到了一个不兼容的接口。核对model.id是否和控制台模型列表一致,注意大小写和连字符。如果用的是 GLM 系列,确认写的是glm-4-plus而不是glm4plus。
OAuth 报错。如果你之前用 Gemini CLI 登录过官方账号,本地可能残留了 OAuth 凭证,CLI 会优先走 OAuth 而不是你配置的 API Key。解决办法是清掉旧的凭证缓存,通常在~/.config/gemini-cli/下,删除credentials.json或类似文件,然后重新用 API Key 模式启动。启动时加--auth api-key参数可以强制走 Key 模式。
还有一个隐蔽的坑:配置文件路径不对。HagiCode 和 Gemini CLI 读取配置的路径不同,如果你把 Gemini CLI 的配置放到了 HagiCode 的目录下,CLI 根本读不到。确认~/.config/gemini-cli/config.json存在且可读,用cat看一眼内容是否完整。
排查顺序建议:先看报错类型,再查 Key 和 Base URL,最后查模型 ID 和配置文件路径。大部分问题都出在前两步。
6. 把多模型工作流固定下来
环境搭好之后,建议把配置固化,避免每次换机器都要重来。我的做法是把 HagiCode 的模型配置和 Gemini CLI 的配置都放进项目的.config目录,用符号链接指到用户目录,这样配置跟着仓库走,换电脑时 clone 下来就能用。
日常使用上,编辑器里默认用 GLM 做补全和对话,遇到需要批量处理文件、生成脚本、跑终端任务时切到 Gemini CLI。两边共用同一个 TaoToken 接入点,Key 和 Base URL 只需要维护一份。模型切换不用改代码,改配置里的 Model ID 就行。
如果你需要长期跑编码任务或 Agent 流程,可以了解下 Coding Plan,地址是 https://taotoken.net/coding-plan?utm_source=taotoken_aicg_blog_end&utm_content=coding-plan&utm_campaign=rewrite 。模型对话调试在 https://taotoken.net/models?utm_source=taotoken_aicg_blog_end&utm_content=models&utm_campaign=rewrite ,接入文档在 https://taotoken.net/doc?utm_source=taotoken_aicg_blog_end&utm_content=doc&utm_campaign=rewrite ,Key 管理还是 https://taotoken.net/api-keys?utm_source=taotoken_aicg_blog_end&utm_content=api-keys&utm_campaign=rewrite 。Claude Code 相关的接入说明在 https://taotoken.net/claude-code?utm_source=taotoken_aicg_blog_end&utm_content=claude-code&utm_campaign=rewrite 。
最后留一个实用技巧:在 HagiCode 里给不同模型配不同的快捷键,GLM 走主力补全,Gemini 走长上下文分析,切换时不用进设置页。Gemini CLI 那边可以用 alias 简化命令,比如alias gc='gemini-cli --model gemini-2.0-flash',终端里敲 gc 就能直接对话。配置一次,后面都是顺手的事。