Gemini CLI 安装与工作流
High Contrast
Dark Mode
Light Mode
Sepia
Forest
2 min read331 words

Gemini CLI 安装与工作流

Google 的 Gemini CLI 是免费的,支持 100 万 token 上下文——这让它在处理超大型代码库时有独特优势,是 Claude Code 的有力补充。

Gemini CLI 定位

graph LR TASK[开发任务] --> DECIDE{选择工具} DECIDE -->|代码生成/调试/审查| CC[Claude Code] DECIDE -->|超大文件/整库理解| GC[Gemini CLI] DECIDE -->|Google Workspace 集成| GC DECIDE -->|多模型验证| BOTH[两者对比] CC --> CC1[CLAUDE.md 项目记忆] CC --> CC2[Skills 自定义命令] CC --> CC3[MCP 工具集成] GC --> GC1[1M Token 上下文] GC --> GC2[Google Search 接地] GC --> GC3[免费使用额度] style CC fill:#c8e6c9,stroke:#388e3c,stroke-width:2px style GC fill:#e3f2fd,stroke:#1565c0,stroke-width:2px

安装与配置

# 方式一:npm 安装(推荐)
npm install -g @google/gemini-cli
# 验证安装
gemini --version
# 方式二:直接运行(无需安装)
npx @google/gemini-cli
# 首次配置(选择认证方式)
gemini auth
# 选项 1: Google 账号登录(免费,有配额限制)
# 选项 2: API Key(付费,无限制)
#   export GEMINI_API_KEY="your_key"
"""
Gemini CLI 核心工作流演示
展示常见使用场景和最佳实践
"""
import subprocess
import os
from dataclasses import dataclass
from typing import Optional
@dataclass
class GeminiWorkflow:
"""Gemini CLI 工作流定义"""
name: str
command_template: str
use_case: str
advantage: str          # 相比 Claude Code 的优势
example_output: str
class GeminiCLIGuide:
"""Gemini CLI 使用指南"""
WORKFLOWS = [
GeminiWorkflow(
name="超大代码库理解",
command_template='gemini -p "分析整个代码库的架构,找出主要模块依赖关系" < <(find . -name "*.py" | xargs cat)',
use_case="首次接手遗留项目,快速理解 10 万行代码结构",
advantage="1M token 上下文,可以一次性处理整个代码库",
example_output="项目包含 4 个主要模块:auth(认证)、api(接口层)、core(业务逻辑)、utils(工具集)..."
),
GeminiWorkflow(
name="Git 历史分析",
command_template='git log --oneline -100 | gemini -p "分析最近 100 次提交,总结开发趋势和技术债务"',
use_case="代码审查、技术债务评估、团队开发习惯分析",
advantage="结合 Google Search 获取最新技术建议",
example_output="近期主要活动:75% 为功能开发,15% 为 Bug 修复,10% 为重构..."
),
GeminiWorkflow(
name="文档自动生成",
command_template='cat src/**/*.py | gemini -p "为这个 Python 项目生成完整的 API 文档(Markdown 格式)"',
use_case="批量为旧项目补充文档,无需逐文件处理",
advantage="大上下文窗口,跨文件理解类/函数关系",
example_output="# API 文档\n## UserService\n### create_user(email, password) -> User..."
),
GeminiWorkflow(
name="安全漏洞扫描",
command_template='cat $(find . -name "*.js" -not -path "*/node_modules/*") | gemini -p "扫描潜在的 XSS/CSRF/注入漏洞"',
use_case="代码提交前的安全审查,快速定位高风险代码",
advantage="全量扫描,不遗漏隐藏在深层文件的漏洞",
example_output="发现 3 个潜在问题:\n1. [高] src/api/user.js:45 存在 SQL 注入风险..."
),
GeminiWorkflow(
name="多文件重构建议",
command_template='gemini -p "给出将这个单体应用拆分为微服务的具体重构方案" < architecture.txt',
use_case="架构升级决策,需要理解全局依赖才能给出合理方案",
advantage="比逐文件分析更准确,能看到跨模块耦合",
example_output="建议拆分为 5 个服务:用户服务、订单服务、支付服务..."
),
]
INTERACTIVE_COMMANDS = {
"进入交互模式": "gemini",
"单次提问": 'gemini -p "你的问题"',
"分析文件": 'gemini -p "分析这个文件" < file.py',
"分析目录": 'find . -name "*.py" | head -20 | xargs gemini -p "分析这些文件"',
"使用 Google Search": 'gemini -p "搜索 Python 3.13 有哪些新特性" --tools google_search',
"保存输出": 'gemini -p "生成部署文档" < deploy.sh > deployment_guide.md',
"指定模型": 'gemini -p "复杂推理问题" --model gemini-2.0-flash-thinking',
}
FREE_TIER_LIMITS = {
"Gemini 2.0 Flash": "每分钟 15 次请求,每天 1500 次",
"Gemini 1.5 Pro": "每分钟 2 次请求,每天 50 次(100万token)",
"Gemini 2.0 Flash Thinking": "每分钟 10 次请求",
"上下文窗口": "最大 1,000,000 tokens(Gemini 1.5 Pro)",
}
@classmethod
def print_workflows(cls):
print("=== Gemini CLI 核心工作流 ===\n")
for wf in cls.WORKFLOWS:
print(f"【{wf.name}】")
print(f"  场景: {wf.use_case}")
print(f"  优势: {wf.advantage}")
print(f"  命令: {wf.command_template[:80]}...")
print()
@classmethod
def print_commands(cls):
print("=== 常用命令速查 ===\n")
for desc, cmd in cls.INTERACTIVE_COMMANDS.items():
print(f"  {desc}:")
print(f"    $ {cmd}\n")
@classmethod
def print_free_tier(cls):
print("=== 免费配额说明 ===\n")
for model, limit in cls.FREE_TIER_LIMITS.items():
print(f"  {model}: {limit}")
def run_gemini_demo():
"""演示 Gemini CLI 命令(不实际执行)"""
guide = GeminiCLIGuide()
guide.print_workflows()
guide.print_commands()
guide.print_free_tier()
print("\n=== 典型使用场景:分析当前目录 ===")
print("$ gemini -p \"这个项目的主要功能是什么?有什么改进空间?\"")
print("  (Gemini 会自动读取当前目录的文件进行分析)")
print()
print("=== GEMINI.md — 项目记忆文件 ===")
print("类似 Claude Code 的 CLAUDE.md,在项目根目录创建 GEMINI.md:")
gemini_md_example = """
# GEMINI.md 示例
## 项目说明
这是一个 FastAPI + PostgreSQL 电商后端项目。
## 开发规范
- 使用 async/await
- 所有 API 端点需要添加类型注解
- 数据库操作通过 SQLAlchemy ORM
## 禁止事项
- 不要在代码中硬编码密钥
- 不要直接操作数据库,必须通过 Repository 层
"""
print(gemini_md_example)
run_gemini_demo()

Gemini CLI vs Claude Code 场景选择

场景 推荐工具 原因
日常代码生成/调试 Claude Code 更好的代码理解,CLAUDE.md 记忆
整个代码库一次性分析 Gemini CLI 1M token 上下文,免费
需要实时 Google 搜索 Gemini CLI 内置 Google Search 工具
CI/CD 脚本生成 Claude Code Skills 可集成到工作流
超大日志/文档分析 Gemini CLI 无需分批处理
多工具协调(MCP) Claude Code MCP 生态更成熟

行动清单

下一节02-OpenCode-CLI配置与多模型对比 — 同时接入 Claude、Gemini、GPT-4 的命令行开发工具。