gemini-reference
Compare original and translation side by side
🇺🇸
Original
English🇨🇳
Translation
ChineseGemini CLI Reference
Gemini CLI 参考文档
Invoke the Gemini agent for sub-tasks using structured JSON output and explicit session management.
使用结构化JSON输出和显式会话管理,调用Gemini Agent处理子任务。
When to Use Gemini
何时使用Gemini
Use Gemini when you need:
- Large context window - Can process extensive codebases in one pass
- General purpose tasks - Good balance of capability across domains
- Fast responses - Flash models for quick analysis
- Cost efficiency - Lower cost per token for large inputs
在以下场景中使用Gemini:
- 大上下文窗口 - 可一次性处理大型代码库
- 通用任务 - 在各领域能力间达到良好平衡
- 快速响应 - 采用Flash模型实现快速分析
- 成本高效 - 处理大输入时每token成本更低
Capabilities
功能特性
- Core Tools: ,
ReadFileTool,WriteFile,Edit,GlobTool,GrepTool.ShellTool - MCP Servers:
- : Documentation queries.
context7 - : Web search (Brave).
brave-search
- Specialty: General purpose, large context window.
- 核心工具:、
ReadFileTool、WriteFile、Edit、GlobTool、GrepTool。ShellTool - MCP服务器:
- : 文档查询。
context7 - : 网页搜索(基于Brave)。
brave-search
- 专长:通用用途、大上下文窗口。
Calling from Another Agent
从其他Agent调用
Use to spawn Gemini as a sub-agent:
gemini "prompt"bash
undefined使用 启动Gemini作为子Agent:
gemini "prompt"bash
undefinedDelegate a documentation task
委托文档生成任务
result=$(gemini "Generate API documentation for @src/api/" --output-format json)
result=$(gemini "Generate API documentation for @src/api/" --output-format json)
Extract the response and session_id for follow-up
提取响应和session_id以便后续操作
response=$(echo "$result" | jq -r '.response')
session_id=$(echo "$result" | jq -r '.session_id')
undefinedresponse=$(echo "$result" | jq -r '.response')
session_id=$(echo "$result" | jq -r '.session_id')
undefinedOutput Formats
输出格式
| Format | Description |
|---|---|
| Plain text output |
| Single JSON object with |
| Streaming newline-delimited JSON (JSONL) events |
JSON Response Fields:
- : (string) The model's final answer
response - : (object) Token usage and API latency metrics
stats - : (string) Session identifier for resuming
session_id - : (object, optional) Error details if request failed
error
Streaming JSON Event Types:
- : Session metadata (session ID, model)
init - : User and assistant message chunks
message - : Tool call requests with arguments
tool_use - : Output from executed tools
tool_result - : Non-fatal warnings and system errors
error - : Final outcome with aggregated statistics
result
| 格式 | 描述 |
|---|---|
| 纯文本输出 |
| 包含 |
| 流式换行分隔JSON(JSONL)事件 |
JSON响应字段:
- : (字符串) 模型的最终回答
response - : (对象) Token使用量和API延迟指标
stats - : (字符串) 用于恢复会话的标识符
session_id - : (对象,可选) 请求失败时的错误详情
error
流式JSON事件类型:
- : 会话元数据(会话ID、模型信息)
init - : 用户和助手消息片段
message - : 包含参数的工具调用请求
tool_use - : 已执行工具的输出
tool_result - : 非致命警告和系统错误
error - : 包含聚合统计数据的最终结果
result
Handling Blocked Actions
处理被阻止的操作
When Gemini needs approval for an action it wasn't configured to auto-approve, the command may pause or complete with an error. For agent delegation:
bash
undefined当Gemini需要执行未配置为自动批准的操作时,命令可能会暂停或返回错误。对于Agent委托场景:
bash
undefinedStep 1: Initial attempt with conservative permissions
步骤1:使用保守权限进行首次尝试
result=$(gemini "Fix the build errors" --output-format json --approval-mode default)
result=$(gemini "Fix the build errors" --output-format json --approval-mode default)
Step 2: Check for errors
步骤2:检查错误
if echo "$result" | jq -e '.error' > /dev/null 2>&1; then
error_msg=$(echo "$result" | jq -r '.error.message')
echo "Action blocked: $error_msg"
session_id=$(echo "$result" | jq -r '.session_id')
Step 3: Continue with auto_edit mode for file operations
echo "Continue fixing build errors" > /tmp/continue.md
result=$(gemini "Read /tmp/continue.md"
--resume "$session_id"
--output-format json
--approval-mode auto_edit) fi
--resume "$session_id"
--output-format json
--approval-mode auto_edit) fi
if echo "$result" | jq -e '.error' > /dev/null 2>&1; then
error_msg=$(echo "$result" | jq -r '.error.message')
echo "Action blocked: $error_msg"
session_id=$(echo "$result" | jq -r '.session_id')
步骤3:使用auto_edit模式继续处理文件操作
echo "Continue fixing build errors" > /tmp/continue.md
result=$(gemini "Read /tmp/continue.md"
--resume "$session_id"
--output-format json
--approval-mode auto_edit) fi
--resume "$session_id"
--output-format json
--approval-mode auto_edit) fi
Extract final response
提取最终响应
final_response=$(echo "$result" | jq -r '.response')
undefinedfinal_response=$(echo "$result" | jq -r '.response')
undefinedSession Management for Agent Delegation
Agent委托的会话管理
Starting a Task
启动任务
bash
mkdir -p .gemini/sessions
echo "*" > .gemini/.gitignorebash
mkdir -p .gemini/sessions
echo "*" > .gemini/.gitignoreWrite the task with full context
写入包含完整上下文的任务
cat > .gemini/sessions/task.md << 'EOF'
Review @src/auth/ and identify:
- Authentication vulnerabilities
- Missing input validation
- Improper error handling EOF
cat > .gemini/sessions/task.md << 'EOF'
Review @src/auth/ and identify:
- Authentication vulnerabilities
- Missing input validation
- Improper error handling EOF
Spawn Gemini with scoped permissions
使用限定权限启动Gemini
result=$(gemini "Read .gemini/sessions/task.md"
--output-format json
--approval-mode default)
--output-format json
--approval-mode default)
result=$(gemini "Read .gemini/sessions/task.md"
--output-format json
--approval-mode default)
--output-format json
--approval-mode default)
Capture session info
捕获会话信息
session_id=$(echo "$result" | jq -r '.session_id')
rm .gemini/sessions/task.md
undefinedsession_id=$(echo "$result" | jq -r '.session_id')
rm .gemini/sessions/task.md
undefinedResuming a Session
恢复会话
Continue a specific session when you have the :
session_idbash
echo "Implement fixes for the top 3 issues you found" > .gemini/sessions/continue.md
result=$(gemini "Read .gemini/sessions/continue.md" \
--resume "$session_id" \
--output-format json \
--approval-mode auto_edit)
rm .gemini/sessions/continue.mdResume Options:
| Flag | Description |
|---|---|
| Resume specific session by ID or UUID |
| Resume most recent session |
| Resume by index number |
| List available sessions |
Important: Always use explicit with session ID when calling from another agent.
--resume当你拥有时,可继续特定会话:
session_idbash
echo "Implement fixes for the top 3 issues you found" > .gemini/sessions/continue.md
result=$(gemini "Read .gemini/sessions/continue.md" \
--resume "$session_id" \
--output-format json \
--approval-mode auto_edit)
rm .gemini/sessions/continue.md恢复选项:
| 标志 | 描述 |
|---|---|
| 通过ID或UUID恢复特定会话 |
| 恢复最近的会话 |
| 通过索引编号恢复会话 |
| 列出可用会话 |
重要提示: 从其他Agent调用时,务必使用带会话ID的显式参数。
--resumePermission Handling
权限处理
By default, Gemini requests confirmation for actions that modify your system. When calling from another agent, use :
--approval-mode默认情况下,Gemini会在执行修改系统的操作前请求确认。从其他Agent调用时,使用参数:
--approval-mode--approval-mode
--approval-mode--approval-mode
--approval-modeSet the approval mode for tool execution:
| Mode | Description |
|---|---|
| Prompt for permission on sensitive actions |
| Automatically approve file edits only |
bash
undefined设置工具执行的批准模式:
| 模式 | 描述 |
|---|---|
| 对敏感操作提示获取权限 |
| 自动批准仅文件编辑操作 |
bash
undefinedSafe for file editing tasks
适用于文件编辑任务
gemini "Fix lint errors" --approval-mode auto_edit
gemini "Fix lint errors" --approval-mode auto_edit
For analysis tasks (no modifications)
适用于分析任务(无修改操作)
gemini "Analyze codebase" --approval-mode default
undefinedgemini "Analyze codebase" --approval-mode default
undefined--sandbox
--sandbox--sandbox
--sandboxRun in a sandboxed environment for safer execution:
bash
undefined在沙箱环境中运行以提升执行安全性:
bash
undefinedSandbox for untrusted code
为不可信代码提供沙箱
gemini "Run untrusted code" --sandbox
gemini "Analyze suspicious file" --sandbox --output-format json
undefinedgemini "Run untrusted code" --sandbox
gemini "Analyze suspicious file" --sandbox --output-format json
undefined--full-auto
--full-auto--full-auto
--full-autoShortcut for automation: sets and .
--approval-mode auto_edit--sandbox workspace-writebash
gemini "Fix lint errors and run tests" --full-auto自动化快捷方式:同时设置和。
--approval-mode auto_edit--sandbox workspace-writebash
gemini "Fix lint errors and run tests" --full-autoAgent Delegation Patterns
Agent委托模式
Pattern 1: Analysis → Implementation
模式1:分析 → 实现
bash
undefinedbash
undefinedPhase 1: Analysis (default approvals)
阶段1:分析(默认批准模式)
analyze_result=$(gemini "Explore @src/ to understand the codebase structure"
--output-format json --approval-mode default)
--output-format json --approval-mode default)
session_id=$(echo "$analyze_result" | jq -r '.session_id')
analyze_result=$(gemini "Explore @src/ to understand the codebase structure"
--output-format json --approval-mode default)
--output-format json --approval-mode default)
session_id=$(echo "$analyze_result" | jq -r '.session_id')
Phase 2: Implementation (auto_edit for file changes)
阶段2:实现(文件变更使用auto_edit模式)
impl_result=$(gemini "Implement a logging middleware"
--resume "$session_id" --output-format json
--approval-mode auto_edit)
--resume "$session_id" --output-format json
--approval-mode auto_edit)
undefinedimpl_result=$(gemini "Implement a logging middleware"
--resume "$session_id" --output-format json
--approval-mode auto_edit)
--resume "$session_id" --output-format json
--approval-mode auto_edit)
undefinedPattern 2: Escalating Permissions
模式2:权限升级
bash
undefinedbash
undefinedStart conservative
以保守权限启动
result=$(gemini "Fix the bug" --output-format json --approval-mode default)
result=$(gemini "Fix the bug" --output-format json --approval-mode default)
Check for errors
检查错误
if echo "$result" | jq -e '.error' > /dev/null 2>&1; then
session_id=$(echo "$result" | jq -r '.session_id')
Re-run with broader permissions
result=$(gemini "Continue fixing with edit permissions"
--resume "$session_id" --output-format json
--approval-mode auto_edit) fi
--resume "$session_id" --output-format json
--approval-mode auto_edit) fi
undefinedif echo "$result" | jq -e '.error' > /dev/null 2>&1; then
session_id=$(echo "$result" | jq -r '.session_id')
使用更广泛的权限重新运行
result=$(gemini "Continue fixing with edit permissions"
--resume "$session_id" --output-format json
--approval-mode auto_edit) fi
--resume "$session_id" --output-format json
--approval-mode auto_edit) fi
undefinedPattern 3: Model Selection by Task
模式3:按任务选择模型
bash
undefinedbash
undefinedQuick analysis - use flash
快速分析 - 使用flash模型
gemini "Summarize this file" --model flash --output-format json
gemini "Summarize this file" --model flash --output-format json
Complex reasoning - use pro
复杂推理 - 使用pro模型
gemini "Design a distributed system architecture" --model pro --output-format json
gemini "Design a distributed system architecture" --model pro --output-format json
Balanced - use auto (default)
平衡选择 - 使用auto(默认)
gemini "Implement feature X" --model auto --output-format json
undefinedgemini "Implement feature X" --model auto --output-format json
undefinedCode Review Delegation
代码审查委托
To delegate code review to Gemini:
bash
mkdir -p .gemini/sessions
echo "Run 'jj diff -s -r @-' and 'jj diff -r @-' and review the output." > .gemini/sessions/review.md
result=$(gemini "Read .gemini/sessions/review.md" \
--output-format json \
--approval-mode default)
rm .gemini/sessions/review.mdImportant: Do not use during reviews - keep it read-only.
--approval-mode auto_edit将代码审查任务委托给Gemini:
bash
mkdir -p .gemini/sessions
echo "Run 'jj diff -s -r @-' and 'jj diff -r @-' and review the output." > .gemini/sessions/review.md
result=$(gemini "Read .gemini/sessions/review.md" \
--output-format json \
--approval-mode default)
rm .gemini/sessions/review.md重要提示: 审查期间请勿使用 - 保持只读模式。
--approval-mode auto_editAdditional Useful Flags
其他实用标志
| Flag | Description |
|---|---|
| Model to use (auto/pro/flash/flash-lite) |
| Output format (text/json/stream-json) |
| Run in sandbox |
| Add directories to workspace |
| Enable specific extensions |
| Allow specific MCP servers |
| Debug mode with verbose logging |
| 标志 | 描述 |
|---|---|
| 使用的模型(auto/pro/flash/flash-lite) |
| 输出格式(text/json/stream-json) |
| 在沙箱中运行 |
| 将目录添加到工作区 |
| 启用特定扩展 |
| 允许特定MCP服务器 |
| 调试模式,含详细日志 |
Model Selection
模型选择
| Alias | Description |
|---|---|
| Default. Resolves to preview model if enabled, else pro |
| Complex reasoning tasks |
| Fast, balanced for most tasks |
| Fastest for simple tasks |
| 别名 | 描述 |
|---|---|
| 默认值。 若启用预览模型则使用预览模型,否则使用pro模型 |
| 复杂推理任务 |
| 速度快,适用于大多数任务 |
| 速度最快,适用于简单任务 |
Piping Input
管道输入
Feed data into Gemini using Unix pipes:
bash
undefined使用Unix管道向Gemini提供数据:
bash
undefinedPipe a file
管道传输文件内容
cat error.log | gemini "Explain why this failed"
cat error.log | gemini "Explain why this failed"
Pipe command output
管道传输命令输出
git diff | gemini "Write a commit message for these changes"
git diff | gemini "Write a commit message for these changes"
Combined with file references
与文件引用结合使用
gemini "Review @package.json and explain the dependencies"
undefinedgemini "Review @package.json and explain the dependencies"
undefinedBest Practices for Agent Delegation
Agent委托最佳实践
Prompting
提示词
- Be Specific: Provide clear goals, file paths, and constraints.
- Include Context: Use to reference files explicitly.
@path/to/file - Headless Context: Gemini can't see your context - include everything in the prompt.
- 明确具体: 提供清晰的目标、文件路径和约束条件。
- 包含上下文: 使用显式引用文件。
@path/to/file - 无头上下文: Gemini无法感知你的本地上下文 - 需在提示词中包含所有必要信息。
Permission Safety
权限安全
- Start Conservative: Use initially.
--approval-mode default - Escalate as Needed: Check field and re-run with
.error.auto_edit - Sandbox Untrusted Code: Always use when running untrusted code.
--sandbox
- 从保守权限开始: 初始使用。
--approval-mode default - 按需升级权限: 检查字段后,使用
.error重新运行。auto_edit - 沙箱处理不可信代码: 运行不可信代码时始终使用。
--sandbox
Session Management
会话管理
- Always Extract session_id: Capture it from JSON output.
- Check for Errors: Always inspect the field in JSON response.
.error - Session per Task: Use separate sessions for unrelated tasks.
- 务必提取session_id: 从JSON输出中捕获会话ID。
- 检查错误: 始终检查JSON响应中的字段。
.error - 按任务分配会话: 为不相关任务使用独立会话。
Model Selection
模型选择
- flash: Quick summaries, simple tasks
- pro: Complex architecture, security reviews
- auto: Let Gemini decide based on prompt
- flash: 快速摘要、简单任务
- pro: 复杂架构设计、安全审查
- auto: 让Gemini根据提示词自动选择
Example: Complete Agent Delegation Workflow
示例:完整Agent委托工作流
bash
#!/bin/bashbash
#!/bin/bash1. Create temp directory
1. 创建临时目录
mkdir -p tmp/.gemini && echo "*" > tmp/.gitignore
mkdir -p tmp/.gemini && echo "*" > tmp/.gitignore
2. Write task with full context
2. 写入包含完整上下文的任务
cat > tmp/task.md << 'EOF'
Analyze the codebase and provide:
- Architecture overview
- Potential security issues
- Performance bottlenecks
Focus on @src/ and @config/ directories.
EOF
cat > tmp/task.md << 'EOF'
Analyze the codebase and provide:
- Architecture overview
- Potential security issues
- Performance bottlenecks
Focus on @src/ and @config/ directories.
EOF
3. Spawn Gemini with initial permissions (read-only)
3. 使用初始权限(只读)启动Gemini
result=$(gemini "Read tmp/task.md"
--output-format json
--approval-mode default)
--output-format json
--approval-mode default)
result=$(gemini "Read tmp/task.md"
--output-format json
--approval-mode default)
--output-format json
--approval-mode default)
4. Check for errors
4. 检查错误
if echo "$result" | jq -e '.error' > /dev/null 2>&1; then
echo "Error: $(echo "$result" | jq -r '.error.message')"
exit 1
fi
if echo "$result" | jq -e '.error' > /dev/null 2>&1; then
echo "Error: $(echo "$result" | jq -r '.error.message')"
exit 1
fi
5. Extract results
5. 提取结果
response=$(echo "$result" | jq -r '.response')
session_id=$(echo "$result" | jq -r '.session_id')
stats=$(echo "$result" | jq -r '.stats')
response=$(echo "$result" | jq -r '.response')
session_id=$(echo "$result" | jq -r '.session_id')
stats=$(echo "$result" | jq -r '.stats')
6. Report findings to parent agent
6. 向父Agent报告结果
echo "=== Analysis Complete ==="
echo "Session ID: $session_id"
echo "Token usage: $(echo "$stats" | jq -r '.total_tokens // "N/A"')"
echo ""
echo "$response"
echo "=== Analysis Complete ==="
echo "Session ID: $session_id"
echo "Token usage: $(echo "$stats" | jq -r '.total_tokens // "N/A"')"
echo ""
echo "$response"
7. Optional: Continue for implementation
7. 可选:继续执行实现步骤
echo "Now implement the security fixes" > tmp/implement.md
echo "Now implement the security fixes" > tmp/implement.md
gemini "Read tmp/implement.md" --resume "$session_id" --approval-mode auto_edit ...
gemini "Read tmp/implement.md" --resume "$session_id" --approval-mode auto_edit ...
8. Clean up
8. 清理
rm -rf tmp
undefinedrm -rf tmp
undefinedExit Codes
退出码
| Code | Meaning |
|---|---|
| Success |
| General error or API failure |
| Input error (invalid prompt or arguments) |
| Turn limit exceeded |
| 代码 | 含义 |
|---|---|
| 成功 |
| 通用错误或API失败 |
| 输入错误(无效提示词或参数) |
| 超出轮次限制 |
Structured Output with Schema
带Schema的结构化输出
Request JSON output matching a JSON Schema:
bash
undefined请求匹配JSON Schema的JSON输出:
bash
undefinedCreate schema file
创建Schema文件
cat > /tmp/schema.json << 'EOF'
{
"type": "object",
"properties": {
"project_name": { "type": "string" },
"programming_languages": { "type": "array", "items": { "type": "string" } }
},
"required": ["project_name", "programming_languages"]
}
EOF
cat > /tmp/schema.json << 'EOF'
{
"type": "object",
"properties": {
"project_name": { "type": "string" },
"programming_languages": { "type": "array", "items": { "type": "string" } }
},
"required": ["project_name", "programming_languages"]
}
EOF
Run with schema
使用Schema运行
gemini "Extract project metadata from @package.json"
--output-schema /tmp/schema.json
-o /tmp/result.json
--output-format json
--output-schema /tmp/schema.json
-o /tmp/result.json
--output-format json
undefinedgemini "Extract project metadata from @package.json"
--output-schema /tmp/schema.json
-o /tmp/result.json
--output-format json
--output-schema /tmp/schema.json
-o /tmp/result.json
--output-format json
undefined