Gemini CLI 接入
5 分钟配置 Gemini 命令行工具,避开常见认证陷阱。通过 MoaCode 中转使用 Gemini CLI,支持 macOS / Linux / Windows。
一、环境准备
Gemini CLI 依赖 Node.js,版本必须 ≥ 20:
node -v| 显示结果 | 判断 | 下一步 |
|---|---|---|
| v20.x.x 或更高 | ✅ 通过 | 直接安装 Gemini CLI |
| v18.x.x 或更低 | ❌ 未通过 | 前往 nodejs.org 升级 |
| 命令不存在 | ❌ 未通过 | 前往 nodejs.org 下载 |
二、安装 Gemini CLI
方式 1:npm 全局安装(推荐)
npm install -g @google/gemini-cli稳定性高、配置读取正确、全局可用,易于更新卸载。
方式 2:npx 临时运行(只想测试一次时用,每次启动都要重新下载)
npx https://github.com/google-gemini/gemini-cli不要用 Homebrew 安装
经测试 Homebrew 版本存在环境变量读取问题(无法正确读取全局环境变量、配置文件路径识别错误),官方尚未修复,请勿使用 brew install gemini-cli。
验证安装:
gemini --version三、一键配置 MoaCode 接入
MoaCode 提供一键配置脚本,自动创建 ~/.gemini 配置目录、写入 API 密钥与端点、设置模型映射。
获取脚本:
按系统复制对应命令(macOS/Linux 复制 Unix 命令到终端;Windows 复制 PowerShell 命令)粘贴执行即可。
Windows 用户必读:PowerShell 版本与 BOM 问题
先看你的 PowerShell 版本:
$PSVersionTable.PSVersion| 主版本号 | 怎么做 |
|---|---|
| 7 及以上 | 直接原样跑安装命令,没有 BOM 问题 |
| 5 | 推荐升级到 PowerShell 7(下方方案 A);或留在 5.1 打补丁(方案 B) |
问题根源:Windows PowerShell 5.1 默认的 UTF-8 编码带 BOM(文件开头 3 个不可见字节 EF BB BF),会导致生成的配置文件出问题:
settings.json带 BOM → CLI 直接报错Unexpected token '' ... is not valid JSON.env带 BOM → 不报错但静默失效:第一行变量名被解析成GOOGLE_GEMINI_BASE_URL,中转地址不生效,CLI 拿着中转 Key 去连 Google 官方端点然后鉴权失败——很容易误判成"key 不对"
方案 A:升级到 PowerShell 7(推荐)
# 1. 安装 PowerShell 7(一次性,5.1 仍保留,互不影响)
winget install --id Microsoft.PowerShell --source winget
# 2. 切到 pwsh
pwsh
# 3. 原样运行 Dashboard 复制的安装命令建议把 Windows Terminal 的默认配置文件切到 pwsh,避免下次又用 5.1 重新踩坑。
方案 B:留在 5.1,装完打补丁
把安装命令和 BOM 修复合并成一条执行($base / $url / $key 按 Dashboard 复制的实际值填写):
& {
$base = 'https://moacode.org'
$url = 'https://moacode.org/gemini'
$key = '你的_cr_开头的key'
# 1. 跑官方安装脚本
iwr -useb $base/setup_gemini.ps1 | iex
# 2. 立刻剥掉 BOM(settings.json 和 .env 都要处理)
foreach ($f in @('settings.json', '.env')) {
$p = Join-Path $env:USERPROFILE ".gemini\$f"
if (Test-Path $p) {
$t = [IO.File]::ReadAllText($p).TrimStart([char]0xFEFF)
[IO.File]::WriteAllText($p, $t, (New-Object Text.UTF8Encoding $false))
Write-Host "[FIXED] $p" -ForegroundColor Green
}
}
}两个文件必须一起修
只修 settings.json 会漏掉 .env——后者带 BOM 不报错但静默失效,更难查。且每次重跑安装脚本 BOM 都会回来,补丁要跟着重跑。
验证是否有 BOM:
Format-Hex "$env:USERPROFILE\.gemini\settings.json" | Select-Object -First 1输出开头是 EF BB BF 就是有 BOM;是 7B(即 {)就是干净的。.env 同理,干净的开头应为 47 4F 4F 47 4C(GOOGL)。
四、配置文件说明
安装脚本在 ~/.gemini/(Windows:%USERPROFILE%\.gemini\)下生成两个文件:
.env — 凭据和端点:
GOOGLE_GEMINI_BASE_URL="https://moacode.org/gemini"
GEMINI_API_KEY="cr_xxxxxxxxxxxxxxxxxxxxxxxx"| 变量 | 作用 |
|---|---|
GOOGLE_GEMINI_BASE_URL | 中转地址,替换 Google 官方端点 |
GEMINI_API_KEY | MoaCode 的 Key(cr_ 开头,不是 Google 官方 key) |
settings.json — CLI 行为:
{
"security": {
"auth": {
"selectedType": "gemini-api-key"
}
},
"general": {
"previewFeatures": true
}
}| 字段 | 作用 |
|---|---|
security.auth.selectedType | 用 API key 鉴权,跳过 Google 账号 OAuth 登录 |
general.previewFeatures | 开启预览功能。使用 gemini-3-pro-preview 这类 preview 模型必须为 true |
安装脚本每次运行会自动备份旧配置(形如 settings.json.backup.20260831_095632),确认新配置可用后可清理。
五、启动与验证
必须用 -m 指定模型
MoaCode 使用了特定的模型映射,直接运行 gemini 会报 Model is not allowed。启动时必须加 -m 参数。
# ❌ 错误
gemini
# ✅ 正确
gemini -m gemini-3-pro-preview验证三步(第 2 条最有诊断价值——配置错误、鉴权失败、模型名不对都会直接打在标准输出上):
# 1. CLI 本身能跑
gemini --version
# 2. 非交互模式发一次真实请求(报错不会被 TUI 吞掉)
gemini -p "hi" -m gemini-3-pro-preview
# 3. 进交互模式
gemini -m gemini-3-pro-preview正常启动后 .gemini/ 下会新生成 history/ 目录和 projects.json,可作为初始化成功的旁证。
常用模型速查(完整清单见站内 Model catalog):
| 模型名称 | 适用场景 | 成本 |
|---|---|---|
| gemini-3-pro-preview | 复杂推理、代码生成、长上下文 | 较高 |
| gemini-3-pro-high | 高性能任务 | 中等 |
| gemini-2.5-flash | 快速响应、日常问答 | 较低 |
六、常见错误排查
错误 1:API key not valid(最常见)
{ "code": 400, "message": "API key not valid. Please pass a valid API key." }根本原因(.env 文件陷阱):Gemini CLI 会自动检测当前目录及上级目录的 .env 文件并强制优先使用,覆盖全局配置。
# 1. 检查当前/上级目录是否有干扰的 .env
ls -la | grep .env
ls -la ../ | grep .env
# 2a. 方案 A(推荐):删除干扰的 .env 后重启
rm .env
# 2b. 方案 B(需保留 .env 时):把正确配置复制到当前目录
cp -r ~/.gemini ./Windows 用户另需排查 BOM 问题(见第三节)。
错误 2:Model is not allowed
| 原因 | 解决 |
|---|---|
忘记加 -m 参数 | 加上 -m gemini-3-pro-preview |
用了官方模型名(如 gemini-pro) | 换成 MoaCode 映射名(下表) |
| 模型名拼写错误 | 对照 Model catalog 核对 |
| 官方模型名 | MoaCode 映射名 |
|---|---|
| gemini-pro | gemini-3-pro-preview |
| gemini-flash | gemini-2.5-flash |
错误 3:RESOURCE_EXHAUSTED
{ "code": 400, "status": "RESOURCE_EXHAUSTED" }Google 官方调用额度达到上限(官方速率限制,非 MoaCode 问题)。处理:等 1–5 分钟重试;或在接口管理开启自动渠道切换;或升级订阅套餐。
错误 4:SyntaxError / unsupported engine
Node.js 版本低于 20。升级:
nvm install --lts && nvm use --lts
node -v # 应显示 v20+错误 5:命令瞬间返回,一个字都没有
Gemini CLI 是 TUI 程序,初始化崩溃时报错会随屏幕缓冲区一起被擦掉。排查:
# 非交互模式绕开 TUI,错误不会被吞
gemini -p "hi" -m gemini-3-pro-preview
# 看退出码(0 = 正常,非 0 = 崩溃)
echo $LASTEXITCODE # PowerShell;bash 用 echo $?常见诱因:.env 带 BOM(Windows)、Node 版本过低、previewFeatures 未开启。
错误 6:Request cancelled / This request failed
CLI 默认折叠了错误详情,先打开:
/settings→ 把 Error Verbosity 调到最高F12→ 打开 diagnostics 面板看实际状态码
429 = 排队限流(与配置无关);401/403 = 鉴权问题,回查 .env;404 = 中转未代理该端点。
七、终极排查流程(3 步)
- 先看服务状态:moacode.org/provider-status——🔴 服务异常时等待修复即可,不要继续排查自己的配置
- 彻底重置环境:
rm -rf ~/.gemini
npm uninstall -g @google/gemini-cli
npm install -g @google/gemini-cli
# 重新运行一键配置脚本,然后测试:
gemini -p "hi" -m gemini-2.5-flashRemove-Item -Recurse -Force $env:USERPROFILE\.gemini
npm uninstall -g @google/gemini-cli
npm install -g @google/gemini-cli
# 重新运行一键配置脚本(注意 BOM,见第三节),然后测试- 仍未解决则提交工单,附上三样信息:终端报错截图(含完整命令)、F12 diagnostics 面板的红色报错截图(
Ctrl+S激活交互后滚动查找)、文字描述(系统 / 工作目录 / 操作过程 / 已做过哪些排查)
相关页面
- Nano Banana 生图 — Gemini 协议生图 API
- 模型目录与价格
- 常见报错与排查