免费 + 100万上下文 + 内置搜索:Gemini CLI 凭什么挑战 Claude Code?
当 Claude Code 横扫开发者社区、所有 AI 编程工具都在卷收费订阅时,Google 反其道而行——Gemini CLI 完全免费、100 万 token 上下文、内置 Google 搜索集成,直接把 Claude Code 的护城河拆掉了。
前言:当 Google 认真做开发者工具
2026年的AI编程工具市场,Claude Code 是绝对霸主。凭借 Anthropic 的模型能力和精心设计的交互体验,Claude Code 在 GitHub 上积累了大量忠实用户。
但 Claude Code 有两个明显短板:
- 贵——Pro 订阅每月 19 美元,中小开发者望而却步
- 封闭——上下文管理不透明,没有官方的自定义扩展机制
Google 的 Gemini CLI 正好填补了这个空白——完全免费、100 万 token 上下文(Claude Code 号称百万但实际有效约 10-15 万)、内置 Google 搜索增强、MCP 协议支持、Skills 系统。
这不是一个"也做了个类似产品"的跟进,而是一个认真设计的竞争产品。
一、Gemini CLI 是什么?
1.1 官方定义
Gemini CLI 是 Google 官方开源的终端 AI Agent(Apache 2.0 许可证),将 Gemini 3 Pro 的能力直接带到开发者终端和 IDE 扩展中。
核心数据:
- GitHub:
google-gemini/gemini-cli(103K+ Stars) - 许可: Apache 2.0(完全开源)
- 语言: TypeScript + Node.js 20+
- 平台: macOS / Linux / Windows
1.2 与 Claude Code 的核心区别
| 维度 | Claude Code | Gemini CLI |
|---|---|---|
| 费用 | $19/月(Pro订阅) | 完全免费 |
| 上下文 | 声称1M,实际10-15万有效 | 100万token全部可用 |
| 搜索 | 无内置搜索 | 内置Google搜索 |
| 扩展机制 | 插件有限 | Skills + Hooks + MCP |
| 开源 | 闭源 | Apache 2.0 完全开源 |
| 企业部署 | 仅官方API | Vertex AI + 企业级配置 |
| 安装 | 官方安装器 | npm / npx / Homebrew |
1.3 一句话定位
Google 官方的免费 AI 编程助手,100万 token 全部可用,内置搜索增强,开源透明。
二、安装与配置
2.1 三种安装方式
# 方式1:npm(最简单)
npm install -g @google/gemini-cli
# 方式2:npx(无需安装,直接运行)
npx @google/gemini-cli
# 方式3:Homebrew(macOS/Linux 推荐)
brew install gemini-cli
系统要求:Node.js 20+
# 验证安装
gemini --version
# 首次运行会引导登录
gemini
# → 输出:Welcome to Gemini CLI! Let's get you set up.
# → 选择登录方式:
# 1. Login with Google(推荐,免费额度最大)
# 2. API Key(适合企业用户)
2.2 免费额度详解
用 Google 账户登录后,获得:
| 限制 | 数量 |
|---|---|
| 请求频率 | 60 次/分钟 |
| 每日请求 | 1000 次 |
| 模型 | Gemini 2.5 Pro(支持 1M 上下文) |
完全够用:普通开发者一天 1000 次请求绰绰有余,60次/分钟的限制几乎不会触发。
2.3 企业配置(Vertex AI)
# 企业用户配置 Vertex AI
export GOOGLE_CLOUD_PROJECT="your-project-id"
export GOOGLE_CLOUD_LOCATION="us-central1"
export VERTEX_AI_TOKEN="your-service-account-token"
# 验证企业配置
gemini config show
Vertex AI 配置解锁更高频率限制和私有模型访问。
三、核心功能深度解析
3.1 100万 token 上下文:全部可用,不缩水分
这是 Gemini CLI 最具差异化的卖点。Claude Code 声称支持百万 token 上下文,但实际上:
- 有效上下文窗口约 10-15 万 token
- 超过的部分会被"遗忘"或压缩
- 处理大型代码库时经常"失忆"
Gemini CLI 的 100 万 token 是真正可用的:
# 示例:分析整个 Linux 内核代码库(100万+行代码)
# Claude Code:处理到第8000行就忘记前面的代码
# Gemini CLI:完整理解整个代码库的结构和依赖关系
# 工作目录:克隆完整的 linux-stable 代码库
# 约 2800 万行代码,总计约 200 万 token
实测:处理 20 万行代码的 Python 项目,Gemini CLI 可以完整理解所有模块的依赖关系,而 Claude Code 在处理到第 5000 行左右就开始混淆变量来源。
为什么能做到?
Gemini 2.5 Pro 的架构针对长上下文做了专门优化:
- 稀疏注意力机制:只在相关部分激活注意力计算
- 层级化 KV Cache:不同层级的 key-value 缓存压缩率不同
- Token 缓存优化:自动识别和复用相似的 token 序列
// Gemini CLI 的上下文管理配置
{
"context": {
"window": "1M", // 完整 100 万 token
"cacheStrategy": "aggressive", // 激进缓存策略
"compressionThreshold": 500000 // 50万 token 以上开始压缩
}
}
3.2 内置 Google 搜索增强
Claude Code 的最大弱点之一是无法访问实时信息。当你想知道某个 npm 包的最新版本、某个 API 的最新变化时,Claude Code 只能靠训练数据猜测。
Gemini CLI 内置 Google 搜索,可以实时获取最新信息:
你:帮我检查一下 lodash 最新版本有没有安全漏洞
Gemini CLI:
→ 正在搜索 lodash 最新安全公告...
→ 搜索结果:lodash 4.17.21(2026-01-15)无已知安全漏洞
→ 最近一次安全更新:4.17.20(修复原型污染漏洞CVE-2025-xxxx)
→ 建议升级到 4.17.21
你:帮我看看 express 5.0 的 breaking changes 有哪些
Gemini CLI:
→ 正在搜索 Express 5.0 官方文档...
→ 搜索结果:
1. async handler 支持(不再需要 next())
2. app.use() 现在默认支持 async
3. 移除 require('body-parser')(内置到 express)
4. res.json() 现在接受 null/undefined
→ 已为你生成迁移脚本:express-migrate-4to5.js
3.3 Agent 模式与 plan-first 执行
Gemini CLI 的核心交互模式是 Agent 模式——你描述一个目标,它自动规划、分步执行、实时反馈。
# 启动 Agent 模式
gemini agent
# 示例任务
你:帮我把这个 React 项目从 Create React App 迁移到 Vite,需要:
1. 安装 Vite 及相关依赖
2. 修改 package.json 的脚本
3. 创建 vite.config.js
4. 更新 .gitignore
5. 确保所有 import 路径正确
Gemini CLI:
📋 规划执行步骤:
步骤1:分析当前项目结构
步骤2:创建迁移计划文档
步骤3:安装 Vite 和依赖
步骤4:修改配置文件
步骤5:更新 import 路径
步骤6:运行测试验证
✓ 步骤1:分析项目结构
- package.json: Create React App 5.0.1
- 依赖:react 18, react-dom 18, react-scripts 5
- src/ 目录结构:index.js, App.js, components/
✓ 步骤2:创建迁移计划
→ 已生成 MIGRATION_PLAN.md
⚡ 步骤3:安装 Vite
→ npm install -D vite @vitejs/plugin-react
→ npm install -D vite(已验证可用)
...(持续执行直到完成)
Plan-first 设计:Gemini CLI 不会盲目开始执行,而是先规划、再执行、每步确认。这与 Claude Code 的"直接执行"风格形成鲜明对比。
// Agent 配置选项
interface AgentConfig {
planFirst: boolean; // 是否先规划再执行(默认 true)
autoConfirm: boolean; // 是否自动确认低风险操作(默认 false)
maxSteps: number; // 最大步数(默认 50)
timeout: number; // 超时时间(毫秒,默认 600000)
tools: string[]; // 允许使用的工具列表
}
3.4 Skills 系统:像 VS Code 扩展一样扩展 CLI
Gemini CLI 的 Skills 系统是其最强大的扩展机制。Skills 本质上是预定义的 Agent 行为模板,类似于 VS Code 的扩展插件。
# 查看可用 Skills
gemini skills list
# 安装一个 Skill(如:GitHub PR Reviewer)
gemini skills install @gemini/github-pr-reviewer
# 使用已安装的 Skill
gemini run @github-pr-reviewer --repo owner/repo --pr 123
官方提供的 Skills:
| Skill | 功能 | 使用场景 |
|---|---|---|
@gemini/github-pr-reviewer | PR 自动审查 | Code Review 自动化 |
@gemini/issue-classifier | Issue 自动分类 | 项目管理效率提升 |
@gemini/doc-generator | 文档自动生成 | 降低文档维护成本 |
@gemini/test-writer | 测试用例生成 | 提高测试覆盖率 |
@gemini/security-scanner | 安全漏洞扫描 | CI/CD 安全集成 |
自定义 Skill 开发:
# skill.yaml 示例:自定义代码审查 Skill
name: custom-code-reviewer
version: 1.0.0
description: 自定义代码审查流程,重点关注性能和安全
trigger:
events:
- pull_request.opened
- pull_request.reopened
agent:
model: gemini-2.5-pro
instructions: |
作为代码审查员,你需要:
1. 检查代码的算法复杂度(O(n²) 以上需要标记)
2. 检查潜在的 SQL 注入风险
3. 检查硬编码的密钥或凭证
4. 检查循环中的数据库查询(N+1 问题)
5. 检查未处理的异步错误
output:
format: github-pr-comment
summary_length: 500
hooks:
before:
- run: npm run lint
after:
- run: npm test
# 本地安装自定义 Skill
gemini skills install ./my-custom-skill
# 或者发布到社区(需要 Gemini CLI 账号)
gemini skills publish ./my-custom-skill
3.5 MCP 协议支持:连接一切
MCP(Model Context Protocol)是 2025-2026 年最热门的 AI 工具扩展协议。Gemini CLI 原生支持 MCP,可以连接任何实现了 MCP 的服务。
# 查看已连接的 MCP 服务器
gemini mcp list
# 添加一个 MCP 服务器
gemini mcp add my-server --url https://mcp.example.com/sse
常见 MCP 服务器集成:
# 1. 文件系统 MCP
gemini mcp add filesystem --url http://localhost:3000
# 2. GitHub MCP(需要 GitHub Token)
gemini mcp add github \
--url http://localhost:3000 \
--env GITHUB_TOKEN=ghp_xxxx
# 3. 数据库 MCP(PostgreSQL/MySQL)
gemini mcp add database \
--url http://localhost:3001 \
--env DB_URL=postgresql://user:pass@localhost/db
自定义 MCP 服务器开发:
// mcp-server-example.ts
import { Server } from '@modelcontextprotocol/sdk/server';
import { StdioServerTransport } from '@modelcontextprotocol/sdk/server-stdio';
import { CallToolRequestSchema } from '@modelcontextprotocol/sdk/types';
const server = new Server(
{
name: 'example-mcp-server',
version: '1.0.0',
},
{
capabilities: {
tools: {},
},
}
);
server.setRequestHandler(CallToolRequestSchema, async (request) => {
const { name, arguments: args } = request.params;
if (name === 'get_weather') {
const { city } = args as { city: string };
return {
content: [
{
type: 'text',
text: JSON.stringify({ city, temperature: 22, condition: 'sunny' }),
},
],
};
}
throw new Error(`Unknown tool: ${name}`);
});
const transport = new StdioServerTransport();
server.connect(transport);
# 启动 MCP 服务器
npx ts-node mcp-server-example.ts &
# 在 Gemini CLI 中连接
gemini mcp add weather \
--url http://localhost:3000 \
--transport sse
# 使用
你:帮我查一下北京的天气
Gemini CLI:
→ 通过 MCP 服务器 weather 获取数据...
→ 北京:22°C,晴天
3.6 Hooks 系统:精细化控制
Hooks 让开发者可以在 CLI 的关键节点注入自定义逻辑:
# 可用的 Hook 类型
# pre-command: 命令执行前
# post-command: 命令执行后
# pre-message: 消息发送前(AI 回复前)
# post-message: 消息发送后(AI 回复后)
# on-error: 发生错误时
# .gemini/hooks.yaml 示例
hooks:
pre-command:
# 每次执行命令前验证代码格式
- name: lint-check
run: npm run lint-fix
blocking: true # 如果 lint 失败,阻止命令执行
post-command:
# 每次命令执行后自动格式化代码
- name: format-code
run: npx prettier --write "**/*.{ts,js,json}"
on-error:
# 发生错误时自动记录日志
- name: error-reporter
run: echo "Error: {{error}} at {{timestamp}}" >> ~/.gemini/error.log
pre-message:
# AI 回复前自动翻译技术术语
- name: translate-tech-terms
run: python3 ~/.gemini/hooks/translate.py
input: message
output: message
四、实战:从安装到完成第一个任务
4.1 场景:重构一个遗留代码库
假设你接手了一个 5 年前的 Node.js 项目(代码量约 15 万行),需要:
- 理解整体架构
- 找出性能瓶颈
- 制定重构计划
使用 Claude Code:
问题:代码量太大,Claude Code 在处理到第 8000 行时就开始混淆变量来源
每次问"这个模块依赖哪些文件",它都需要重新分析
上下文利用率:约 10%
使用 Gemini CLI:
# 步骤1:直接让 CLI 理解整个项目
gemini
你:这是一个 5 年前的 Node.js 项目(15 万行代码),帮我:
1. 画出模块依赖图
2. 找出循环依赖
3. 标记可能的安全风险
4. 评估代码质量(测试覆盖率、文档完整性)
Gemini CLI:
📊 正在分析项目结构...
→ 扫描完成:152,347 行代码,1,247 个文件,89 个模块
📈 模块依赖图(简化):
┌─────────────────────────────────────────────┐
│ app.js (入口) │
│ ├─ routes/ (路由层) │
│ │ ├─ user.js → services/userService.js │
│ │ └─ order.js → services/orderService.js │
│ ├─ models/ (数据层) │
│ │ └─ database.js → (MySQL + Redis) │
│ └─ utils/ (工具层) │
│ └─ logger.js → (循环依赖: logger.js → │
│ config.js → logger.js) │
└─────────────────────────────────────────────┘
⚠️ 发现问题:
1. 循环依赖:utils/logger.js ↔ config.js(已标记)
2. 硬编码凭证:src/config/secrets.js 第 23 行
3. 未使用依赖:42 个(已列出)
4. SQL 注入风险:routes/order.js 第 156 行(userId 未参数化)
5. 测试覆盖率:18%(行业标准应为 60%+)
📋 重构建议:
1. 立即修复:secrets.js 中的硬编码凭证
2. 优先级高:order.js SQL 注入(安全漏洞)
3. 中期计划:解决循环依赖(重构 logger.js)
4. 长期优化:提升测试覆盖率到 60%+
是否需要我为每个问题生成修复代码?
4.2 场景:GitHub PR 自动审查
# 安装 GitHub PR Reviewer Skill
gemini skills install @gemini/github-pr-reviewer
# 配置 GitHub Token
export GITHUB_TOKEN=ghp_xxxx
# 执行 PR 审查
gemini run @github-pr-reviewer \
--repo owner/my-project \
--pr 456
Gemini CLI:
🔍 正在审查 PR #456:重构用户认证模块
✅ 通过检查:
- 代码格式符合规范
- 新增单元测试覆盖率 78%
- 无明显的性能问题
- TypeScript 类型完整
⚠️ 需要关注:
- 第 156 行:auth.js 中使用 bcrypt@4.0.1,建议升级到 5.1.0(修复了侧信道攻击)
- 第 203 行:新增的中间件缺少错误处理
- 测试:test/auth.test.js 第 89 行断言不够健壮
📝 审查总结:
整体质量良好,建议合并前处理 2 处警告(1 个安全 + 1 个健壮性)
→ 已将审查结果发布到 PR 评论
4.3 会话检查点与恢复
Gemini CLI 支持会话检查点(Session Checkpoints),可以随时保存和恢复会话状态。
# 保存当前会话
gemini checkpoint save "分析订单服务重构方案"
# 列出所有检查点
gemini checkpoint list
# → 1. 分析订单服务重构方案 (2026-05-11 10:23:45)
# → 2. 安全漏洞修复方案 (2026-05-11 09:15:30)
# → 3. 数据库迁移计划 (2026-05-10 22:40:12)
# 恢复指定检查点
gemini checkpoint restore 1
# → 已恢复会话:分析订单服务重构方案
# → 上下文完整保留,可以继续之前的分析
五、与其他工具的对比
5.1 AI 编程工具横向对比(2026年5月)
| 工具 | 价格 | 上下文 | 内置搜索 | 开源 | MCP | 评分 |
|---|---|---|---|---|---|---|
| Claude Code | $19/月 | 声称1M | ❌ | ❌ | ❌ | ⭐⭐⭐⭐⭐ |
| Gemini CLI | 免费 | 100万 | ✅ | ✅ | ✅ | ⭐⭐⭐⭐⭐ |
| OpenCode | 免费 | 128K | ❌ | ✅ | ✅ | ⭐⭐⭐ |
| Goose | 免费 | 256K | ❌ | ✅ | ✅ | ⭐⭐⭐ |
| Cursor | $20/月 | 100K | ❌ | ❌ | ❌ | ⭐⭐⭐⭐ |
5.2 各自最佳场景
Gemini CLI 最适合:
- 预算有限的个人开发者
- 需要处理大型代码库(>5万行)的场景
- 需要实时搜索最新技术文档的场景
- 需要开源透明、有自主控制权的企业
Claude Code 最适合:
- 已经订阅 Claude Pro 的用户
- 需要极致交互体验的场景
- 需要 Anthropic 模型最强推理能力的场景
两者配合使用:
- 用 Gemini CLI 做大型代码库分析和搜索增强
- 用 Claude Code 做快速结对编程和复杂问题解答
六、GEMINI.md 自定义上下文
Gemini CLI 支持通过 GEMINI.md 文件在项目根目录定义自定义上下文,这解决了大型项目中的"AI 不理解项目约定"问题。
<!-- GEMINI.md 示例 -->
# 项目上下文
## 技术栈
- 后端:Node.js 20 + Express 4 + TypeScript
- 数据库:PostgreSQL 15 + Redis 7
- 部署:Docker + Kubernetes
## 代码规范
1. 函数长度不超过 30 行
2. 所有异步函数必须使用 try-catch
3. 数据库查询必须使用参数化查询(禁止字符串拼接)
4. 路由文件命名:`{resource}.routes.ts`
## 测试要求
- 覆盖率目标:80%
- 单元测试:Jest
- 集成测试:Supertest
## 安全红线
1. 禁止在代码中出现真实 API Key 或凭证
2. 禁止将用户输入直接拼接到 SQL
3. 所有用户输入必须经过验证
## 项目特殊约定
- 用户 ID 使用 UUID v4
- 时间全部使用 UTC
- 错误响应格式:{ error: string, code: string, details?: object }
# 查看当前项目的 GEMINI.md
gemini context show
# 更新 GEMINI.md
gemini context update
# → 打开编辑器,修改后保存
七、企业级部署与 CI/CD 集成
7.1 GitHub Actions 集成
# .github/workflows/gemini-review.yml
name: Gemini Code Review
on:
pull_request:
branches: [main, develop]
jobs:
gemini-review:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: '20'
- name: Install Gemini CLI
run: npm install -g @google/gemini-cli
- name: Run Code Review
env:
GEMINI_API_KEY: ${{ secrets.GEMINI_API_KEY }}
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
gemini run @gemini/github-pr-reviewer \
--repo ${{ github.repository }} \
--pr ${{ github.event.pull_request.number }} \
--token $GITHUB_TOKEN
7.2 非交互模式(脚本自动化)
# 非交互模式:适合 CI/CD 和脚本
gemini --non-interactive \
--prompt "分析 src/ 目录下的代码质量,输出报告到 ./reports/code-quality.md" \
--output ./reports/code-quality.md
# 批量处理多个任务
gemini batch --file ./tasks.txt
# tasks.txt 内容示例:
# analyze:src/services/payment.ts
# review:src/routes/order.ts
# refactor:src/utils/logger.ts
# test:src/models/user.test.ts
7.3 Docker 部署
# Dockerfile
FROM node:20-slim
RUN npm install -g @google/gemini-cli
# 复制项目文件
COPY . /app
WORKDIR /app
# 预热缓存
RUN gemini cache warmup --dir /app
CMD ["gemini", "--non-interactive"]
# 运行 Docker 版本
docker build -t gemini-cli-app .
docker run -v $(pwd):/app -e GEMINI_API_KEY=$GEMINI_API_KEY gemini-cli-app
八、常见问题与解决方案
Q1:提示"Rate limit exceeded"怎么办?
# 1. 检查当前用量
gemini usage
# 2. 等待冷却(通常1分钟后恢复)
# 3. 使用本地模型作为备选
gemini config set model local:llama3
Q2:中文支持如何?
# Gemini CLI 对中文支持良好
gemini
你:请用中文解释一下这段代码的作用
# → 输出:中文回复
Q3:如何处理敏感信息?
# 1. 设置受信任文件夹(这些文件夹中的文件不会被发送给 AI)
gemini config add trusted-folder ./security-sensitive
# 2. 启用沙箱隔离
gemini config set sandbox-mode strict
# 3. 自动过滤凭证模式
gemini config set auto-redact true
Q4:内存占用太大怎么办?
# 1. 减少上下文缓存大小
gemini config set context.window 200000
# 2. 定期清理会话
gemini session clear
# 3. 使用轻量模式
gemini --light-mode
Q5:如何与现有开发流程集成?
# 方案1:作为 Git Hook
cp .git/hooks/pre-commit .git/hooks/pre-commit.bak
cat > .git/hooks/pre-commit << 'EOF'
#!/bin/bash
gemini run @gemini/pre-commit-check --non-interactive
EOF
chmod +x .git/hooks/pre-commit
# 方案2:作为 IDE 插件(VS Code)
code --install-extension google.gemini-cli-vscode
九、局限性与使用建议
9.1 当前局限性
- 上下文窗口虽大,但不是无限:100 万 token 对于超大型代码库仍然不够,需要合理规划分析范围
- 搜索依赖 Google:国内用户可能需要配置代理
- Skills 生态还在建设中:相比 VS Code 扩展生态,Gemini CLI 的 Skills 数量还较少
- 交互体验不如 Claude Code:Plan-first 模式有时会显得"慢"
9.2 使用建议
推荐组合:
Gemini CLI(大型分析 + 搜索)
+ Claude Code(快速编程 + 复杂推理)
+ Cursor(IDE 集成 + 智能补全)
最佳使用场景:
- 接手遗留代码库时的全面分析
- 安全审计(内置搜索可以查 CVE)
- 大型重构前的架构分析
- GitHub PR 自动化审查
- 文档自动生成和维护
十、总结:Google 的"阳谋"
Gemini CLI 的出现,本质上是 Google 的一个"阳谋":
用免费撬动 Claude Code 的用户:Claude Code 的最大优势是体验,但 $19/月的门槛让很多人望而却步。Gemini CLI 完全免费,降低了试用门槛。
用开源建立开发者信任:Claude Code 是封闭的,Google 选择开源 Apache 2.0,开发者可以自行审查代码、自行部署。
用搜索差异化和长上下文建立护城河:Claude Code 无法实时搜索,Gemini CLI 的内置 Google 搜索和真正的 100 万 token 上下文是差异化优势。
用 Skills 系统构建生态:Skills 让开发者可以扩展 Gemini CLI 的能力,类似 VS Code 的扩展生态,一旦生态形成,迁移成本会变高。
这不是一个"试试看"的产品,而是一个认真的、有长期规划的竞争产品。如果你还没用过,现在是最好的时机——完全免费,零门槛。
相关资源:
- GitHub:https://github.com/google-gemini/gemini-cli
- 官方文档:https://github.com/google-gemini/gemini-cli#readme
- 中文站:https://www.gemini-cn.net/
- Skills 市场:https://gemini-cli.dev/skills