Gemini 3 完整指南(四):彻底拆解CLI 配置

Windows环境下Gemini CLI的完整配置与API密钥实战指南 本文详细介绍了在Windows环境下配置Gemini CLI的完整流程,包括Node.js环境准备、npm安装技巧、API密钥获取与安全配置,以及高级性能调优和实战应用。特别强调了API密钥的安全管理和常见问题排查方法,帮助开发者高效使用Gemini CLI进行AI开发。 阅读详情

1. 引言

在前面的博客中,博主已经对 Gemini 做了一些简单的总结,有兴趣的同学可以阅读:

在这里插入图片描述

Gemini CLI 提供多种方式来配置其行为,包括环境变量、命令行参数和设置文件,配置按以下优先级顺序应用(较低编号会被较高编号覆盖):

  1. 默认值: 应用内硬编码的默认值。
  2. 系统默认文件: 系统范围的默认设置,可被其他设置文件覆盖。
  3. 用户设置文件: 当前用户的全局设置。
  4. 项目设置文件: 项目特定设置。
  5. 系统设置文件: 覆盖所有其他设置文件的系统范围设置。
  6. 环境变量: 系统范围或会话特定变量,可能从 .env 文件加载。
  7. 命令行参数: 启动 CLI 时传入的值。

2. 配置文件位置

Gemini CLI 使用 JSON 设置文件进行持久化配置,这些文件有四个位置:

【系统默认文件】: 提供一层系统范围的基础默认设置,这些设置的优先级最低,旨在被用户、项目或系统覆盖设置所覆盖。

操作系统位置
Linux/etc/gemini-cli/system-defaults.json
WindowsC:\ProgramData\gemini-cli\system-defaults.json
macOS/Library/Application Support/GeminiCli/system-defaults.json

【用户设置文件】:

  • 位置: ~/.gemini/settings.json(其中 ~ 是你的主目录)。
  • 作用域: 适用于当前用户的所有 Gemini CLI 会话。用户设置会覆盖系统默认设置。

【项目设置文件】:

  • 位置: 项目根目录中的 .gemini/settings.json。
  • 作用域: 仅当从该特定项目运行 Gemini CLI 时适用。项目设置会覆盖用户设置和系统默认设置。

除了项目设置文件之外,项目的 .gemini 目录还可以包含其他与 Gemini CLI 运行相关的项目特定文件,例如:自定义沙箱配置文件(.gemini/sandbox-macos-custom.sb、.gemini/sandbox.Dockerfile等)。


【系统设置文件】: 适用于系统上所有用户的所有 Gemini CLI 会话,系统设置作为覆盖项,优先级高于所有其他设置文件。对企业中的系统管理员控制用户的 Gemini CLI 设置可能很有用。

操作系统位置
Linux/etc/gemini-cli/settings.json
WindowsC:\ProgramData\gemini-cli\settings.json
macOS/Library/Application Support/GeminiCli/settings.json

该路径可通过 GEMINI_CLI_SYSTEM_SETTINGS_PATH 环境变量覆盖。


关于设置中的环境变量说明: settings.json 和 gemini-extension.json 文件中的字符串值可以使用 $VAR_NAME 或 ${VAR_NAME} 语法引用环境变量,这些变量会在加载设置时自动解析。例如,如果你有一个环境变量 MY_API_TOKEN,你可以在 settings.json 中这样使用它:"apiKey": "$MY_API_TOKEN"。此外,每个扩展都可以在其目录中拥有自己的 .env 文件,并会自动加载。

3. settings.json 中的可用设置

3.1 general

配置项类型说明默认值需要重启
general.previewFeaturesboolean启用预览功能(例如预览模型)。false否
general.preferredEditorstring用于打开文件的首选编辑器。undefined否
general.vimModeboolean启用 Vim 键绑定。false否
general.enableAutoUpdateboolean启用自动更新。true否
general.enableAutoUpdateNotificationboolean启用更新通知提示。true否
general.checkpointing.enabledboolean启用会话检查点以便恢复。false是
general.enablePromptCompletionboolean启用 AI 驱动的提示补全建议(在输入时)。false是
general.retryFetchErrorsboolean在出现 "exception TypeError: fetch failed sending request" 错误时重试。false否
general.debugKeystrokeLoggingboolean启用将按键记录调试日志输出到控制台。false否
general.sessionRetention.enabledboolean启用自动会话清理。false否
general.sessionRetention.maxAgestring保留会话的最大时长(例如 "30d"、"7d"、"24h"、"1w")。undefined否
general.sessionRetention.maxCountnumber备选方案:要保留的最大会话数量(最新)。undefined否
general.sessionRetention.minRetentionstring最短保留期(安全限制)。"1d"否

3.2 output

配置项类型说明默认值取值
output.formatenumCLI 输出格式。"text""text"、"json"

3.3 ui

配置项类型说明默认值需要重启
ui.themestringUI 的配色主题。可用选项请参阅 CLI 主题指南。undefined否
ui.customThemesobject自定义主题定义。{}否
ui.hideWindowTitleboolean隐藏窗口标题栏。false是
ui.showStatusInTitleboolean在工作阶段,将模型思考状态显示在终端窗口标题中。false否
ui.dynamicWindowTitleboolean使用当前状态图标更新终端窗口标题true否
ui.showHomeDirectoryWarningboolean在主目录中运行 CLI 时显示警告。true是
ui.hideTipsboolean隐藏 UI 中的实用提示。false否
ui.hideBannerboolean隐藏应用横幅。false否
ui.hideContextSummaryboolean隐藏输入框上方的上下文摘要(GEMINI.md、MCP servers)。false否
ui.footer.hideCWDboolean在页脚隐藏当前工作目录路径。false否
ui.footer.hideSandboxStatusboolean在页脚隐藏沙箱状态指示器。false否
ui.footer.hideModelInfoboolean在页脚隐藏模型名称与上下文使用情况。false否
ui.footer.hideContextPercentageboolean隐藏剩余上下文窗口百分比。true否
ui.hideFooterboolean从 UI 中隐藏页脚。false否
ui.showMemoryUsageboolean在 UI 中显示内存使用信息。false否
ui.showLineNumbersboolean在聊天中显示行号。true否
ui.showCitationsboolean在聊天中显示生成文本的引用。false否
ui.showModelInfoInChatboolean在聊天中为每个模型轮次显示模型名称。false否
ui.useFullWidthboolean使用终端的完整宽度进行输出。true否
ui.useAlternateBufferboolean为 UI 使用备用屏幕缓冲区,以保留 shell 历史记录。false是
ui.incrementalRenderingboolean启用 UI 的增量渲染(仅在启用 useAlternateBuffer 时支持)。true是
ui.customWittyPhrasesarray操作加载期间显示的自定义俏皮短语。[]否
ui.accessibility.enableLoadingPhrasesboolean在操作期间启用加载短语。true是
ui.accessibility.screenReaderboolean以纯文本渲染输出,使其对屏幕阅读器更友好。false是

3.4 ide

配置项类型说明默认值需要重启
ide.enabledboolean启用 IDE 集成模式。false是
ide.hasSeenNudgeboolean用户是否已看到 IDE 集成提示。false否

3.5 privacy

配置项类型说明默认值需要重启
privacy.usageStatisticsEnabledboolean启用使用统计信息收集。true是

3.6 model

配置项类型说明默认值需要重启
model.namestring用于对话的 Gemini 模型。undefined否
model.maxSessionTurnsnumber会话中要保留的 user / model / tool 轮次最大数量,-1 表示无限制。-1否
model.summarizeToolOutputobject启用或禁用工具输出摘要,并为每个工具配置 token 预算(目前仅 run_shell_command 支持)。undefined否
model.compressionThresholdnumber触发上下文压缩的上下文使用比例阈值(例如 0.2、0.3)。0.5是
model.skipNextSpeakerCheckboolean跳过下一次发言者检查。true否

3.7 modelConfigs

配置项类型说明默认值
modelConfigs.aliasesobject模型配置的命名预设。可代替模型名称使用,并可通过 extends 从其他别名继承。内置一组预定义别名(见下方示例)
modelConfigs.customAliasesobject自定义的模型配置命名预设,会与内置别名合并并覆盖同名项。{}
modelConfigs.customOverridesarray自定义模型配置覆盖项,会与内置覆盖项合并并追加。[]
modelConfigs.overridesarray基于 model(或 alias)匹配应用的配置覆盖项,使用最具体匹配。[]

modelConfigs.aliases 示例

   {
     "base": {
       "modelConfig": {
         "generateContentConfig": {
           "temperature": 0,
           "topP": 1
         }
       }
     },
     "chat-base": {
       "extends": "base",
       "modelConfig": {
         "generateContentConfig": {
           "thinkingConfig": {
             "includeThoughts": true
           },
           "temperature": 1,
           "topP": 0.95,
           "topK": 64
         }
       }
     },
     "chat-base-2.5": {
       "extends": "chat-base",
       "modelConfig": {
         "generateContentConfig": {
           "thinkingConfig": {
             "thinkingBudget": 8192
           }
         }
       }
     },
     "chat-base-3": {
       "extends": "chat-base",
       "modelConfig": {
         "generateContentConfig": {
           "thinkingConfig": {
             "thinkingLevel": "HIGH"
           }
         }
       }
     },
     "gemini-3-pro-preview": {
       "extends": "chat-base-3",
       "modelConfig": {
         "model": "gemini-3-pro-preview"
       }
     },
     "gemini-3-flash-preview": {
       "extends": "chat-base-3",
       "modelConfig": {
         "model": "gemini-3-flash-preview"
       }
     },
     "gemini-2.5-pro": {
       "extends": "chat-base-2.5",
       "modelConfig": {
         "model": "gemini-2.5-pro"
       }
     },
     "gemini-2.5-flash": {
       "extends": "chat-base-2.5",
       "modelConfig": {
         "model": "gemini-2.5-flash"
       }
     },
     "gemini-2.5-flash-lite": {
       "extends": "chat-base-2.5",
       "modelConfig": {
         "model": "gemini-2.5-flash-lite"
       }
     },
     "gemini-2.5-flash-base": {
       "extends": "base",
       "modelConfig": {
         "model": "gemini-2.5-flash"
       }
     },
     "classifier": {
       "extends": "base",
       "modelConfig": {
         "model": "gemini-2.5-flash-lite",
         "generateContentConfig": {
           "maxOutputTokens": 1024,
           "thinkingConfig": {
             "thinkingBudget": 512
           }
         }
       }
     },
     "prompt-completion": {
       "extends": "base",
       "modelConfig": {
         "model": "gemini-2.5-flash-lite",
         "generateContentConfig": {
           "temperature": 0.3,
           "maxOutputTokens": 16000,
           "thinkingConfig": {
             "thinkingBudget": 0
           }
         }
       }
     },
     "edit-corrector": {
       "extends": "base",
       "modelConfig": {
         "model": "gemini-2.5-flash-lite",
         "generateContentConfig": {
           "thinkingConfig": {
             "thinkingBudget": 0
           }
         }
       }
     },
     "summarizer-default": {
       "extends": "base",
       "modelConfig": {
         "model": "gemini-2.5-flash-lite",
         "generateContentConfig": {
           "maxOutputTokens": 2000
         }
       }
     },
     "summarizer-shell": {
       "extends": "base",
       "modelConfig": {
         "model": "gemini-2.5-flash-lite",
         "generateContentConfig": {
           "maxOutputTokens": 2000
         }
       }
     },
     "web-search": {
       "extends": "gemini-2.5-flash-base",
       "modelConfig": {
         "generateContentConfig": {
           "tools": [
             {
               "googleSearch": {}
             }
           ]
         }
       }
     },
     "web-fetch": {
       "extends": "gemini-2.5-flash-base",
       "modelConfig": {
         "generateContentConfig": {
           "tools": [
             {
               "urlContext": {}
             }
           ]
         }
       }
     },
     "web-fetch-fallback": {
       "extends": "gemini-2.5-flash-base",
       "modelConfig": {}
     },
     "loop-detection": {
       "extends": "gemini-2.5-flash-base",
       "modelConfig": {}
     },
     "loop-detection-double-check": {
       "extends": "base",
       "modelConfig": {
         "model": "gemini-2.5-pro"
       }
     },
     "llm-edit-fixer": {
       "extends": "gemini-2.5-flash-base",
       "modelConfig": {}
     },
     "next-speaker-checker": {
       "extends": "gemini-2.5-flash-base",
       "modelConfig": {}
     },
     "chat-compression-3-pro": {
       "modelConfig": {
         "model": "gemini-3-pro-preview"
       }
     },
     "chat-compression-3-flash": {
       "modelConfig": {
         "model": "gemini-3-flash-preview"
       }
     },
     "chat-compression-2.5-pro": {
       "modelConfig": {
         "model": "gemini-2.5-pro"
       }
     },
     "chat-compression-2.5-flash": {
       "modelConfig": {
         "model": "gemini-2.5-flash"
       }
     },
     "chat-compression-2.5-flash-lite": {
       "modelConfig": {
         "model": "gemini-2.5-flash-lite"
       }
     },
     "chat-compression-default": {
       "modelConfig": {
         "model": "gemini-2.5-pro"
       }
     }
   }

3.8 agents

配置项类型说明默认值需要重启
agents.overridesobject覆盖特定 agent 的设置,例如禁用该 agent、设置自定义模型配置或运行配置。{}是

3.9 context

配置项类型说明默认值需要重启
context.fileNamestring / string[]要加载到内存中的上下文文件名,可为单个字符串或字符串数组。undefined否
context.importFormatstring导入 memory 时使用的格式。undefined否
context.discoveryMaxDirsnumber搜索 memory 的最大目录数量。200否
context.includeDirectoriesarray要包含在工作区上下文中的附加目录,缺失的目录将被跳过并给出警告。[]否
context.loadMemoryFromIncludeDirectoriesboolean控制 /memory refresh 如何加载 GEMINI.md 文件。false否
context.fileFiltering.respectGitIgnoreboolean搜索时遵循 .gitignore 文件。true是
context.fileFiltering.respectGeminiIgnoreboolean搜索时遵循 .geminiignore 文件。true是
context.fileFiltering.enableRecursiveFileSearchboolean在提示中补全 @ 引用时启用递归文件搜索功能。true是
context.fileFiltering.enableFuzzySearchboolean搜索文件时启用模糊搜索。true是

3.10 tools

配置项类型说明默认值需要重启
tools.sandboxboolean / string沙箱执行环境;可用 boolean 启用/禁用,或提供沙箱配置文件路径。undefined是
tools.shell.enableInteractiveShellboolean使用 node-pty 提供交互式 shell 体验(仍支持回退到 child_process)。true是
tools.shell.pagerstring用于 shell 输出的分页器命令。"cat"否
tools.shell.showColorboolean在 shell 输出中显示颜色。false否
tools.shell.inactivityTimeoutnumber无输出情况下允许 shell 命令运行的最长时间(秒)。300否
tools.shell.enableShellOutputEfficiencyboolean启用 shell 输出效率优化以提升性能。true否
tools.autoAcceptboolean自动接受并执行被认为安全的工具调用(如只读操作)。false否
tools.corearray使用 allowlist 限制内置工具集合(匹配语义与 tools.allowed 镜像)。undefined是
tools.allowedarray可绕过确认对话框的工具名称列表(受信任命令)。undefined是
tools.excludearray从发现中排除的工具名称。undefined是
tools.discoveryCommandstring用于工具发现的命令。undefined是
tools.callCommandstring调用已发现工具的自定义 shell 命令(stdin 读 JSON,stdout 输出 JSON)。undefined是
tools.useRipgrepboolean使用 ripgrep 进行文件内容搜索以获得更高性能。true否
tools.enableToolOutputTruncationboolean启用对较大工具输出的截断。true是
tools.truncateToolOutputThresholdnumber工具输出超过该字符数时进行截断,-1 表示禁用。4000000是
tools.truncateToolOutputLinesnumber截断工具输出时要保留的行数。1000是
tools.disableLLMCorrectionboolean禁用编辑工具的基于 LLM 的错误修正。true是
tools.enableHooksboolean启用 hooks system 实验(禁用后将完全停用)。true是

3.11 mcp

配置项类型说明默认值需要重启
mcp.serverCommandstring用于启动 MCP server 的命令。undefined是
mcp.allowedarray允许的 MCP servers 列表。undefined是
mcp.excludedarray排除的 MCP servers 列表。undefined是

3.12 useWriteTodos

配置项类型说明默认值
useWriteTodosboolean启用 write_todos 工具。true

3.13 security

配置项类型说明默认值需要重启
security.disableYoloModeboolean禁用 YOLO mode(即使通过 flag 启用)。false是
security.enablePermanentToolApprovalboolean在工具确认对话框中启用 “Allow for all future sessions” 选项。false否
security.blockGitExtensionsboolean阻止从 Git 安装和加载扩展。false是
security.folderTrust.enabledboolean用于跟踪是否启用 Folder trust 的设置。false是
security.environmentVariableRedaction.allowedarray始终允许(绕过脱敏)的环境变量。[]是
security.environmentVariableRedaction.blockedarray始终脱敏的环境变量。[]是
security.environmentVariableRedaction.enabledboolean启用对可能包含 secrets 的环境变量进行脱敏。false是
security.auth.selectedTypestring当前选择的认证类型。undefined是
security.auth.enforcedTypestring要求的认证类型;不匹配时将提示重新认证。undefined是
security.auth.useExternalboolean是否使用外部认证流程。undefined是

3.14 advanced

配置项类型说明默认值需要重启
advanced.autoConfigureMemoryboolean自动配置 Node.js 内存限制。false是
advanced.dnsResolutionOrderstringDNS 解析顺序。undefined是
advanced.excludedEnvVarsarray要从项目上下文中排除的环境变量。["DEBUG", "DEBUG_MODE"]否
advanced.bugCommandobjectbug report 命令的配置。undefined否

3.15 experimental

配置项类型说明默认值需要重启
experimental.enableAgentsboolean启用本地和远程 subagents(实验性,对 subagents 使用 YOLO mode)。false是
experimental.extensionManagementboolean启用扩展管理功能。true是
experimental.extensionConfigboolean启用请求与获取扩展设置。false是
experimental.enableEventDrivenSchedulerboolean在 CLI 会话中启用事件驱动调度器。true是
experimental.extensionReloadingboolean在 CLI 会话中启用扩展加载/卸载。false是
experimental.jitContextboolean启用 Just-In-Time(JIT)上下文加载。false是
experimental.skillsboolean启用 Agent Skills(实验性)。false是
experimental.codebaseInvestigatorSettings.enabledboolean启用 Codebase Investigator agent。true是
experimental.codebaseInvestigatorSettings.maxNumTurnsnumberCodebase Investigator agent 的最大轮次数。10是
experimental.codebaseInvestigatorSettings.maxTimeMinutesnumberCodebase Investigator agent 的最长时间(分钟)。3是
experimental.codebaseInvestigatorSettings.thinkingBudgetnumberCodebase Investigator agent 的思考预算。8192是
experimental.codebaseInvestigatorSettings.modelstringCodebase Investigator agent 使用的模型。"auto"是
experimental.useOSC52Pasteboolean使用 OSC 52 序列进行粘贴(适用于远程会话)。false否
experimental.cliHelpAgentSettings.enabledboolean启用 CLI Help Agent。true是
experimental.planboolean启用规划功能(Plan Mode 和 tools)。false是

3.16 skills

配置项类型说明默认值需要重启
skills.disabledarray已禁用的 skills 列表。[]是

3.17 hooksConfig

配置项类型说明默认值
hooksConfig.enabledbooleanhooks system 的规范开关;禁用时不会执行任何 hooks。true
hooksConfig.disabledarray应被禁用的 hook 名称(命令)列表;即使已配置也不会执行。[]
hooksConfig.notificationsboolean当 hooks 执行时显示可视化指示器。true

3.18 hooks

配置项类型说明默认值
hooks.BeforeToolarray在工具执行前运行的 hooks;可拦截、校验或修改工具调用。[]
hooks.AfterToolarray在工具执行后运行的 hooks;可处理结果、记录输出或触发后续动作。[]
hooks.BeforeAgentarray在 agent loop 开始前运行的 hooks;可设置上下文或初始化资源。[]
hooks.AfterAgentarray在 agent loop 完成后运行的 hooks;可执行清理或总结结果。[]
hooks.Notificationarray在通知事件(errors、warnings、info)上运行的 hooks;可用于日志或告警。[]
hooks.SessionStartarray在会话开始时运行的 hooks;可初始化会话相关资源或状态。[]
hooks.SessionEndarray在会话结束时运行的 hooks;可执行清理或持久化会话数据。[]
hooks.PreCompressarray在聊天历史压缩前运行的 hooks;可在压缩前备份或分析对话。[]
hooks.BeforeModelarray在发起 LLM 请求前运行的 hooks;可修改 prompts、注入上下文或控制模型参数。[]
hooks.AfterModelarray在 LLM 响应之后执行的 hooks;可处理输出、提取信息或记录交互。[]
hooks.BeforeToolSelectionarray在选择工具之前执行的 hooks;可用于动态过滤或优先排序可用工具。[]

3.19 admin

配置项类型说明默认值
admin.secureModeEnabledboolean若为 true,则禁止使用 YOLO 模式。false
admin.extensions.enabledboolean若为 false,则禁止安装或使用扩展。true
admin.mcp.enabledboolean若为 false,则禁止使用 MCP 服务器。true
admin.skills.enabledboolean若为 false,则禁止使用 agent skills。true

3.20 mcpServers

配置与一个或多个 Model-Context Protocol (MCP) 服务器的连接,用于发现并使用自定义工具。Gemini CLI 会尝试连接到每个已配置的 MCP 服务器以发现可用工具。如果多个 MCP 服务器
暴露了同名工具,则工具名称会带上你在配置中定义的服务器别名作为前缀(例如,
serverAlias__actualToolName)以避免冲突。

注意:为了兼容性,系统可能会从 MCP 工具定义中移除某些 schema 属性,必须至少提供 command、url 或 httpUrl 之一,如果指定了多个,优先级顺序为先 httpUrl,再 url,最后 command。

配置项类型说明默认值
mcpServers.<SERVER_NAME>object指定名称的 MCP 服务器参数配置。—
mcpServers.<SERVER_NAME>.commandstring通过标准 I/O 启动 MCP 服务器的命令。undefined
mcpServers.<SERVER_NAME>.argsstring[]传递给启动命令的参数。undefined
mcpServers.<SERVER_NAME>.envobject为服务器进程设置的环境变量。undefined
mcpServers.<SERVER_NAME>.cwdstring启动服务器时使用的工作目录。undefined
mcpServers.<SERVER_NAME>.urlstring使用 Server-Sent Events(SSE)通信的 MCP 服务器 URL。undefined
mcpServers.<SERVER_NAME>.httpUrlstring使用可流式 HTTP 通信的 MCP 服务器 URL。undefined
mcpServers.<SERVER_NAME>.headersobject随请求发送到 url 或 httpUrl 的 HTTP 头映射。undefined
mcpServers.<SERVER_NAME>.timeoutnumberMCP 服务器请求的超时时间(毫秒)。undefined
mcpServers.<SERVER_NAME>.trustboolean信任该服务器并绕过所有工具调用确认。undefined
mcpServers.<SERVER_NAME>.descriptionstring服务器的简要描述,用于展示用途。undefined
mcpServers.<SERVER_NAME>.includeToolsstring[]从该 MCP 服务器中包含的工具名称列表(白名单);未指定则启用全部工具。undefined
mcpServers.<SERVER_NAME>.excludeToolsstring[]从该 MCP 服务器中排除的工具名称列表;优先级高于 includeTools。undefined

3.21 telemetry

为 Gemini CLI 配置日志记录与指标采集。

属性类型说明取值 / 备注
enabledboolean是否启用 telemetry。—
targetstringtelemetry 的采集目标位置。local / gcp
otlpEndpointstringOTLP Exporter 的端点。—
otlpProtocolstringOTLP Exporter 的协议。grpc / http
logPromptsboolean是否在日志中包含用户 prompt 的内容。—
outfilestring当 target 为 local 时,telemetry 写入的文件路径。—
useCollectorboolean是否使用外部 OTLP collector。—

4. settings.json 示例

下面是一个具有嵌套结构的 settings.json 文件示例,该结构自v0.3.0 起提供:

{
  "general": {
    "vimMode": true,
    "preferredEditor": "code",
    "sessionRetention": {
      "enabled": true,
      "maxAge": "30d",
      "maxCount": 100
    }
  },
  "ui": {
    "theme": "GitHub",
    "hideBanner": true,
    "hideTips": false,
    "customWittyPhrases": [
      "You forget a thousand things every day. Make sure this is one of ’em",
      "Connecting to AGI"
    ]
  },
  "tools": {
    "sandbox": "docker",
    "discoveryCommand": "bin/get_tools",
    "callCommand": "bin/call_tool",
    "exclude": ["write_file"]
  },
  "mcpServers": {
    "mainServer": {
      "command": "bin/mcp_server.py"
    },
    "anotherServer": {
      "command": "node",
      "args": ["mcp_server.js", "--verbose"]
    }
  },
  "telemetry": {
    "enabled": true,
    "target": "local",
    "otlpEndpoint": "http://localhost:4317",
    "logPrompts": true
  },
  "privacy": {
    "usageStatisticsEnabled": true
  },
  "model": {
    "name": "gemini-1.5-pro-latest",
    "maxSessionTurns": 10,
    "summarizeToolOutput": {
      "run_shell_command": {
        "tokenBudget": 100
      }
    }
  },
  "context": {
    "fileName": ["CONTEXT.md", "GEMINI.md"],
    "includeDirectories": ["path/to/dir1", "~/path/to/dir2", "../path/to/dir3"],
    "loadFromIncludeDirectories": true,
    "fileFiltering": {
      "respectGitIgnore": false
    }
  },
  "advanced": {
    "excludedEnvVars": ["DEBUG", "DEBUG_MODE", "NODE_ENV"]
  }
}

5. 命令历史记录

CLI 会保留你运行过的 shell 命令历史记录。为避免在不同项目之间发生冲突,该历史记录会存储在你用户主目录下的项目专用目录中。

位置: ~/.gemini/tmp/<project_hash>/shell_history

  • <project_hash> 是根据你项目的根路径生成的唯一标识符。
  • 历史记录存储在名为 shell_history 的文件中。

6. 环境变量

环境变量是配置应用程序的常见方式,尤其适用于API key 等敏感信息,或用于可能因环境不同而变化的设置,CLI 会自动从 .env 文件加载环境变量,加载顺序为:

Step 1. 当前工作目录中的 .env 文件。

Step 2. 若未找到,则向上在父目录中搜索,直到找到
.env 文件或到达项目根目录(由 .git 文件夹标识)或
主目录。

Step 3. 若仍未找到,则查找 ~/.env(位于用户主目录中)。

环境变量排除: 某些环境变量(如 DEBUG 和DEBUG_MODE)会被自动排除,不从项目 .env
文件中加载,以防干扰 gemini-cli 的行为。来自.gemini/.env 文件的变量永远不会被排除。你可以使用settings.json 文件中的 advanced.excludedEnvVars 设置来自定义此行为。

6.1 变量参数

环境变量说明备注 / 示例
GEMINI_API_KEY你的 Gemini API key,用于访问 Gemini API。在 ~/.bashrc / ~/.zshrc 或 .env 中设置
GEMINI_MODEL指定默认使用的 Gemini 模型,覆盖内置默认值。export GEMINI_MODEL="gemini-3-flash-preview"
GOOGLE_API_KEYGoogle Cloud API key;express 模式下使用 Vertex AI 所必需。export GOOGLE_API_KEY="YOUR_GOOGLE_API_KEY"
GOOGLE_CLOUD_PROJECTGoogle Cloud Project ID;使用 Code Assist 或 Vertex AI 所必需。export GOOGLE_CLOUD_PROJECT="YOUR_PROJECT_ID"
GOOGLE_APPLICATION_CREDENTIALSGoogle Application Credentials JSON 文件路径。export GOOGLE_APPLICATION_CREDENTIALS="/path/to/credentials.json"
OTLP_GOOGLE_CLOUD_PROJECTTelemetry 使用的 Google Cloud Project ID。export OTLP_GOOGLE_CLOUD_PROJECT="YOUR_PROJECT_ID"
GEMINI_TELEMETRY_ENABLED启用 telemetry(true / 1 启用,其余视为禁用)。覆盖 telemetry.enabled
GEMINI_TELEMETRY_TARGET设置 telemetry 目标位置。local / gcp,覆盖 telemetry.target
GEMINI_TELEMETRY_OTLP_ENDPOINT设置 telemetry 的 OTLP 端点。覆盖 telemetry.otlpEndpoint
GEMINI_TELEMETRY_OTLP_PROTOCOL设置 telemetry 的 OTLP 协议。grpc / http,覆盖 telemetry.otlpProtocol
GEMINI_TELEMETRY_LOG_PROMPTS是否记录用户 prompt 到 telemetry。覆盖 telemetry.logPrompts
GEMINI_TELEMETRY_OUTFILE当目标为 local 时写入 telemetry 的文件路径。覆盖 telemetry.outfile
GEMINI_TELEMETRY_USE_COLLECTOR是否使用外部 OTLP collector。覆盖 telemetry.useCollector
GOOGLE_CLOUD_LOCATIONGoogle Cloud Project 的区域(非 express 模式下 Vertex AI 必需)。export GOOGLE_CLOUD_LOCATION="us-central1"
GEMINI_SANDBOXsettings.json 中 sandbox 的替代方案。true / false / docker / podman / 自定义命令
GEMINI_SYSTEM_MD用 Markdown 文件内容替换内置 system prompt。true 使用 ./.gemini/system.md
GEMINI_WRITE_SYSTEM_MD将当前内置 system prompt 写入文件。true 写入 ./.gemini/system.md
SEATBELT_PROFILEmacOS 专用:切换 sandbox-exec profile。permissive-open / strict / 自定义
DEBUG / DEBUG_MODE启用详细 debug 日志。建议在 .gemini/.env 中设置
NO_COLOR禁用 CLI 中的所有彩色输出。任意值
CLI_TITLE自定义 CLI 窗口标题。字符串
CODE_ASSIST_ENDPOINT指定 Code Assist server 的端点。用于开发与测试

6.2 环境变量脱敏

为防止敏感信息意外泄露,Gemini CLI 在执行工具(例如shell 命令)时,会自动从环境变量中打码潜在的秘密信息。这种“尽力而为”的打码适用于从系统继承的变量或从 .env 文件加载的变量。

默认打码规则:

  • 按名称: 若变量名包含敏感词,如 TOKEN、SECRET、PASSWORD、KEY、AUTH``CREDENTIAL、PRIVATE 或 CERT,则会被打码。
  • 按值: 若变量值匹配已知的秘密模式,则会被打码,例如:私钥(RSA、OpenSSH、PGP 等)、证书、包含凭据的 URL、API key 与 token(GitHub、Google、AWS、Stripe、Slack 等)
  • 特定黑名单: 某些变量如 CLIENT_ID、DB_URI、DATABASE_URL 和 CONNECTION_STRING 默认总会被打码。

白名单(永不打码):

  • 常见系统变量(例如 PATH、HOME、USER、SHELL、TERM、LANG)。
  • 以 GEMINI_CLI_ 开头的变量。
  • GitHub Action 特有变量。

你可以在 settings.json 文件中自定义该行为:

  • security.allowedEnvironmentVariables: 一个变量名列表,用于
    永不 打码,即使它们匹配敏感模式。
  • security.blockedEnvironmentVariables: 一个变量名列表,用于
    总是 打码,即使它们不匹配敏感模式。
{
  "security": {
    "allowedEnvironmentVariables": ["MY_PUBLIC_KEY", "NOT_A_SECRET_TOKEN"],
    "blockedEnvironmentVariables": ["INTERNAL_IP_ADDRESS"]
  }
}

7. 命令行参数

在运行 CLI 时直接传入的参数可以覆盖该会话中的其他配置。

  • --model <model_name> (-m <model_name>):

    • 指定本次会话使用的 Gemini model。
    • 示例:npm start -- --model gemini-3-pro-preview
  • --prompt <your_prompt> (-p <your_prompt>):

    • 用于将 prompt 直接传给命令。这会以非交互模式调用 Gemini CLI。
    • 对于脚本示例,使用 --output-format json 标志以获得结构化输出。
  • --prompt-interactive <your_prompt> (-i <your_prompt>):

    • 启动交互会话,并将所提供的 prompt 作为初始输入。
    • prompt 会在交互会话中处理,而不是在此之前。
    • 当从 stdin 通过管道传入输入时不可用。
    • 示例:gemini -i "explain this code"
  • --output-format <format>:

    • 描述: 指定非交互模式下 CLI 输出的格式。
    • 取值:
      • text:(默认)标准的人类可读输出。
      • json: 机器可读的 JSON 输出。
      • stream-json: 以流式方式输出 JSON,实时发出事件。
    • 注意: 对于结构化输出与脚本编写,请使用 --output-format json 或 --output-format stream-json 标志。
  • --sandbox (-s): 为本次会话启用 sandbox 模式。

  • --debug (-d): 为本次会话启用 debug 模式,提供更详细的输出。按 F12 打开debug 控制台以查看额外日志。

  • --help(或 -h): 显示命令行参数的帮助信息。

  • --yolo: 启用 YOLO 模式,该模式会自动批准所有工具调用。

  • --approval-mode <mode>:设置工具调用的批准模式。可用模式:

    • default: 每次工具调用都提示批准(默认行为)

    • auto_edit: 自动批准编辑工具(replace、write_file),其余仍提示

    • yolo: 自动批准所有工具调用(等同于 --yolo)

    • plan: 工具调用只读模式(需要启用实验性 planning)。

      注意: 该模式目前仍在开发中,尚未完全
      可用。

    • 不能与 --yolo 同时使用。新统一方式请使用 --approval-mode=yolo 代替--yolo。

    • 示例:gemini --approval-mode auto_edit

  • --allowed-tools <tool1,tool2,...>:

    • 一个以逗号分隔的工具名称列表,将绕过确认对话框。
    • 示例:gemini --allowed-tools "ShellTool(git status)"
  • --extensions <extension_name ...> (-e <extension_name ...>):

    • 指定本次会话要使用的扩展列表。若未提供,则使用所有可用扩展。
    • 使用特殊术语 gemini -e none 可禁用所有扩展。
    • 示例:gemini -e my-extension -e my-other-extension
  • --list-extensions (-l): 列出所有可用扩展并退出。

  • --resume [session_id] (-r [session_id]):

    • 恢复先前的聊天会话。对最近的会话使用 “latest”,提供会话索引编号,或提供完整的会话UUID。
    • 若未提供 session_id,则默认为 “latest”。
    • 示例:gemini --resume 5 或 gemini --resume latest 或 gemini --resume a1b2c3d4-e5f6-7890-abcd-ef1234567890 或 gemini --resume
  • --list-sessions:

    • 列出当前项目的所有可用聊天会话并退出。
    • 显示会话索引、日期、消息数量,以及第一条用户消息的预览。
    • 示例:gemini --list-sessions
  • --delete-session <identifier>:

    • 通过索引编号或完整会话 UUID 删除特定聊天会话。
    • 请先使用 --list-sessions 查看可用会话、它们的索引与UUID。
    • 示例:gemini --delete-session 3 或 gemini --delete-session a1b2c3d4-e5f6-7890-abcd-ef1234567890
  • --include-directories <dir1,dir2,...>:

    • 为多目录支持包含额外目录到工作区。
    • 可以多次指定或使用逗号分隔的值。
    • 最多可添加 5 个目录。
    • 示例:--include-directories /path/to/project1,/path/to/project2 或
      --include-directories /path/to/project1 --include-directories /path/to/project2
  • --screen-reader: 启用屏幕阅读器模式,通过调整 TUI 以更好地兼容屏幕阅读器。

  • --version: 显示 CLI 的版本。

  • --experimental-acp: 以 ACP 模式启动 agent。

  • --allowed-mcp-server-names: 允许的 MCP server 名称。

  • --fake-responses: 指向包含伪造 model 响应的文件路径,用于测试。

  • --record-responses: 指向用于记录 model 响应的文件路径,用于测试。

8. 上下文件

Context files 虽然并不严格用于配置 CLI 的 _behavior_,但它们(默认使用 GEMINI.md,也可通过 context.fileName 设置配置)对于配置提供给 Gemini model 的 _instructional context_(也称为“memory”)至关重要。这个强大功能允许你提供项目专用说明、编码风格指南或任何相关背景信息,使 AI 的响应更贴合且更准确地满足你的需求,CLI 还包含 UI 元素,例如页脚中的指示器显示已加载的 context files 数量,以便让你了解当前激活的context。

用途: 这些 Markdown 文件包含你希望 Gemini model 在交互期间知晓的说明、指南或 context,系统被设计为以分层方式管理此 instructional context。

8.1 示例 context file 内容

下面是一个概念性示例(例如 GEMINI.md),展示 TypeScript项目根目录中的 context file 可能包含的内容:

# Project: My Awesome TypeScript Library

## General Instructions:

- When generating new TypeScript code, please follow the existing coding style.
- Ensure all new functions and classes have JSDoc comments.
- Prefer functional programming paradigms where appropriate.
- All code should be compatible with TypeScript 5.0 and Node.js 20+.

## Coding Style:

- Use 2 spaces for indentation.
- Interface names should be prefixed with `I` (e.g., `IUserService`).
- Private class members should be prefixed with an underscore (`_`).
- Always use strict equality (`===` and `!==`).

## Specific Component: `src/api/client.ts`

- This file handles all outbound API requests.
- When adding new API call functions, ensure they include robust error handling
  and logging.
- Use the existing `fetchWithRetry` utility for all GET requests.

## Regarding Dependencies:

- Avoid introducing new external dependencies unless absolutely necessary.
- If a new dependency is required, please state the reason.

这个示例展示了你如何提供通用的项目 context、特定的编码规范,甚至关于特定文件或组件的说明。你的 context files 越相关且精确,AI 就越能更好地协助你。强烈建议使用项目专用 context files 来建立约定与 context。


分层加载与优先级: CLI 通过从多个位置加载 context files(例如 GEMINI.md)来实现精巧的分层 memory 系统。该列表中越靠下(越具体)的文件内容通常会覆盖或补充越靠上(越通用)的文件内容。可使用 /memory show 命令检查具体的拼接顺序与最终 context。典型加载顺序为:

  1. 全局 context file:
    • 位置:~/.gemini/<configured-context-filename>(例如
      用户主目录中的 ~/.gemini/GEMINI.md)。
    • 作用域:为所有项目提供默认说明。
  2. 项目根目录及祖先目录的 context files:
    • 位置:CLI 会在
      当前工作目录中搜索配置的 context file,然后在每个父目录中继续搜索,直到
      项目根目录(由 .git 文件夹标识)或用户主目录。
    • 作用域:为整个项目或其重要部分提供相关 context。
  3. 子目录 context files(上下文/本地):
    • 位置:CLI 还会在
      当前工作目录 下方 的子目录中扫描配置的 context file(遵循 node_modules、.git 等常见
      忽略模式)。该搜索的广度默认限制为 200 个目录,但可通过 settings.json 中的
      context.discoveryMaxDirs 设置进行配置。
    • 作用域:为特定组件、模块或子区域提供高度具体的说明。

拼接与 UI 指示: 所有找到的 context files 的内容会被拼接(并带有分隔符以标明其来源与路径)并作为 system prompt 的一部分提供给 Gemini model。CLI 页脚会显示已加载 context files 的数量,让你能快速直观地了解当前激活的 instructional context。

导入内容: 你可以使用 @path/to/file.md 语法导入其他 Markdown 文件,从而模块化你的 context files。更多细节请参见

用于 memory 管理的命令:

  • 使用 /memory refresh 强制重新扫描并重新加载所有 context files(来自所有已配置位置)。这会更新 AI 的 instructional context。
  • 使用 /memory show 显示当前加载的 combined instructional context,以便你验证层级与正在被 AI 使用的内容。

通过理解并利用这些配置层与 context files 的分层特性,你可以有效管理 AI 的 memory,并将
Gemini CLI 的响应更好地定制为符合你的特定需求与项目。

9. 沙箱

Gemini CLI 可以在沙箱环境中执行潜在不安全的操作(例如 shell 命令和文件修改),以保护你的系统。

Sandboxing 默认禁用,但你可以通过以下几种方式启用:

  • 使用 --sandbox 或 -s 标志。
  • 设置 GEMINI_SANDBOX 环境变量。
  • 在使用 --yolo 或 --approval-mode=yolo 时默认启用 sandbox。

默认情况下,它使用预构建的 gemini-cli-sandbox Docker image。

对于项目专用的 sandboxing 需求,你可以在项目根目录创建自定义 Dockerfile,路径为.gemini/sandbox.Dockerfile。该 Dockerfile 可以基于基础 sandbox image:

FROM gemini-cli-sandbox

# Add your custom dependencies or configurations here
# For example:
# RUN apt-get update && apt-get install -y some-package
# COPY ./my-config /app/my-config

当存在 .gemini/sandbox.Dockerfile 时,你可以在运行 Gemini CLI 时使用 BUILD_SANDBOX环境变量来自动构建自定义sandbox image:

BUILD_SANDBOX=1 gemini -s

10. 使用统计

为了帮助我们改进 Gemini CLI,我们会收集匿名化的 usage statistics。该数据帮助我们了解 CLI 的使用方式、识别常见问题,并确定新功能的优先级。

我们收集的内容:

  • 工具调用: 我们记录被调用的工具名称、它们是否成功或失败,以及执行耗时。我们不收集传递给工具的参数或任何返回数据。
  • API 请求: 我们记录每次请求所使用的 Gemini model、请求耗时,以及是否成功。我们不收集prompts 或响应的内容。
  • 会话信息: 我们收集有关 CLI 配置的信息,例如启用的工具与 approval mode。

我们不收集的内容:

  • 个人身份信息(PII): 我们不收集任何个人信息,例如你的姓名、邮箱地址或 API key。
  • Prompt 与响应内容: 我们不会记录 prompts 的内容或 Gemini model 的响应内容。
  • 文件内容: 我们不会记录由 CLI 读取或写入的任何文件内容。

如何选择退出:

你可以随时通过将 settings.json 文件中 privacy 类别下的usageStatisticsEnabled 属性设置为 false 来选择退出 usage statistics 收集:

{
  "privacy": {
    "usageStatisticsEnabled": false
  }
}

11. 文末

到这里,Gemini CLI 的整体配置体系就完整串起来了,理解它的关键,并不是记住所有配置项,而是掌握**“在什么场景下,用哪种方式配置”**,读者们可以按下面这个思路来使用 Gemini CLI:


一、长期稳定的偏好,用 settings.json

如果某个配置 每天都会用、希望一直生效,那就放进 settings.json:

  • 常用模型(model.name)
  • UI 行为(主题、是否隐藏 Banner、是否显示上下文信息)
  • 是否启用 sandbox
  • 工具白名单 / 自动批准策略
  • 会话保留策略、上下文压缩策略等

个人使用: 放在 ~/.gemini/settings.json

项目使用 / 团队协作: 放在项目根目录 .gemini/settings.json,让所有人 clone 后即生效


二、敏感或环境相关的值,用环境变量

凡是 API Key、Credential、不同机器不一样的配置,都不要写死在配置文件中:

  • GEMINI_API_KEY
  • GOOGLE_APPLICATION_CREDENTIALS
  • Telemetry / Sandbox / Debug 开关
  • CI 环境下的特殊参数

推荐做法是:

  • 本地:使用 .env 或 shell 配置文件
  • 项目:使用 .gemini/.env
  • CI/CD:使用平台提供的 Secret / Env 配置

这样既安全,又不会污染仓库。


三、只想临时改一次,用命令行参数

只是这一次想换模型、开 debug、跑脚本,不需要动任何配置文件:

  • 临时切模型:--model
  • 非交互调用:--prompt
  • 机器可读输出:--output-format json
  • 强制 sandbox / debug / resume 会话

命令行参数始终拥有最高优先级,适合测试、排错和自动化脚本。


四、真正提升效果的关键 Context Files(GEMINI.md)

如果希望 Gemini 更懂你的项目,而不仅仅是“能回答问题”,那么一定要使用 GEMINI.md 或自定义 context files:

  • 项目背景说明
  • 编码规范 / 风格约定
  • 目录结构说明
  • 工具使用约束
  • 团队协作规则

这部分内容会作为 system prompt 注入模型,是影响回答质量最直接、性价比最高的配置手段。


五、一句话使用原则

  • 默认行为不满意 → settings.json
  • 涉及密钥和环境差异 → 环境变量
  • 只想改一次 → CLI 参数
  • 想让模型“更聪明” → context files

理解并善用这套分层配置机制,就可以把 Gemini CLI 从“能用”,调教到“顺手、可控、可复用”。希望能帮助到大家,感谢阅读,本文完!

【通俗易懂】Gemini-CLI 配置操作指南 Gemini-CLI各种主要命令及配置使用指南 阅读详情

相关推荐

Gemini CLI 进阶配置:解锁gemini-3-pro-preview全功能实战

本文详细介绍了Gemini CLI的进阶配置方法,帮助开发者充分利用gemini-3-pro-preview模型的全功能。通过环境变量调优、多模型协同、性能调优等实战技巧,提升AI开发效率。特别适合处理复杂任务如3D场景生成、老旧系统文档化等场景,展现专业级AI模型的强大能力。

weixin_29276847的博客 437

Gemini CLI 配置

Gemini CLI 提供了多层配置机制,包括默认值、用户/项目/系统设置文件、环境变量和命令行参数。配置文件采用settings.json格式,支持环境变量引用。可配置项包括上下文文件名、问题报告URL、文件过滤规则、核心工具限制、MCP服务器访问控制、自动执行安全操作、主题样式、vim模式及沙盒设置等。系统设置优先级最高,适用于企业级管理,项目设置可覆盖用户设置。.gemini目录还可存放沙盒等特定项目文件。配置按优先级顺序应用,为不同场景提供灵活控制。

dnpao的专栏 2443

Gemini CLI 实战指南:本地调用 Gemini 3 模型的配置、踩坑与工程集成

命令行接口(CLI)是开发者高效调用大模型服务的基础工具,其核心原理是将自然语言请求封装为标准 HTTP 请求,经认证后对接云 AI API。技术价值在于轻量、可脚本化、易集成,显著降低 prompt 工程验证与自动化任务的门槛。典型应用场景包括快速模型测试、Git 提交前代码审查、日志批量摘要及个人知识库问答。本文聚焦 Gemini CLI 这一 Google 官方封装工具,深入解析其如何通过 API Key 或 gcloud 认证复用 Gemini 3 系列模型能力,并系统攻克 Windows npm

weixin_31897613的博客 354

Google Gemini CLI 实战:2025 全新 Gemini 3 Pro 的使用指南

Google推出新一代AI模型Gemini 3,带来深度推理、多模态理解、代理能力等显著升级。Gemini 3在推理能力、多模态处理、上下文窗口等方面均优于Gemini 2.5,支持百万token长文本处理,并能完成多阶段复杂任务。开发者可通过Antigravity平台进行复杂协作开发,普通用户也能借助Gemini 3完成学习与规划任务。目前Gemini 3 Pro已面向特定用户开放,其他用户需申请候补名单。使用Gemini CLI时,更新至0.16.0版本后,通过/settings命令启用预览功能即可体验

Claudedy的博客 6818

Gemini CLI直连Gemini 3 Pro:零成本接入大模型编程的工程化实践

大语言模型(LLM)在代码生成、文档补全与CI/CD自动化中正从辅助工具演进为开发基础设施。其核心原理依赖高质量上下文注入、可控推理参数与低延迟API响应。技术价值体现在去中介化调用、可审计错误链路与脚本化集成能力,显著提升研发效能与交付确定性。典型应用场景包括Git预提交自动补全docstring、多文件上下文驱动的README生成、Terraform模块流式输出及OpenAPI到结构化JSON的精准转换。本文聚焦Gemini CLI这一官方命令行工具,结合Gemini 3 Pro的1M token上下文

488

拆解Gemini CLI的对话引擎:`Turn`类的艺术

为了清晰地描述一个“回合”中可能发生的各种情况,

步子哥的博客 1045

Gemini CLI 部署与使用完全指南 (最新版)

这份详尽的指南将带您从环境准备与安装配置开始,逐步掌握Gemini CLI的核心命令、高级功能与最佳实践,助您全面驾驭这一强大的AI命令行工具。

皓月照山川的博客 8382

Gemini CLI并发交互原理与-3-flash模型实战指南

命令行AI工具(如gemini-cli)已从传统请求-响应模式演进为终端常驻式智能交互系统,其核心依赖PTY伪终端、轻量级模型(如-3-flash)及并发操作调度机制。理解PTY如何赋予CLI真实终端感知能力,掌握-3-flash在32K上下文限制下‘快而不深’的推理特性,并通过k6压测工具量化并发瓶颈,是构建稳定AI工作流的技术基础。本文聚焦开发者高频场景——模型响应延迟突增、failed to sign in认证失败、gemini出了点问题等典型现象,揭示其背后网络链路、账户配额、本地资源争用与服务端队

weixin_30326515的博客 597

Gemini 3 完整指南(四):彻底拆解CLI 配置——从 settings.json 到环境变量,把 endpoint 改到 TaoToken

Gemini CLI 配置总连不上?本文拆解 settings.json 四层优先级与环境变量清单,手把手把 endpoint 改到 TaoToken,附可复制片段与逐条验证命令。前往官网 https://taotoken.net/?utm_source=taotoken_aicg_blog_end 获取 Base URL、Key 与 Model ID 三件套,一次跑通。

weixin_33375360的博客 74

Gemini CLI配置失效的7大根源与环境信任链修复指南

CLI配置生效本质上依赖Node.js生态中环境变量、npm配置、执行策略、权限模型与网络认证构成的多层信任链。理解npm配置的七级覆盖机制、PowerShell执行策略对脚本加载的拦截原理、全局/用户级.npmrc的隔离性,以及环境变量在Shell生命周期中的快照特性,是解决‘改了不生效’问题的技术基础。这些机制共同决定了Gemini CLI能否正确读取registry、加载_authToken、解析GEMINI_API_KEY并发起认证请求。本文聚焦于Windows/macOS/Linux跨平台场景下,

weixin_34242509的博客 360

ubuntu20.4源码安装最新gcc(gcc V12.2)

Ubuntu20.4自带的gcc为V9.4.0的版本,老版本的gcc存在不支持新版本C语言规范,在配置、编译、安装应用软件或工具时,可能存在不能正确安装的问题。(比如:libpqxx-7.7.4在配置时要求c++17版本的支持,但gcc V9.4.0版本不支持c++17)。因此本文介绍ubuntu20.4的系统下载最新gcc12.2版本源码,并进行本地编译、安装。本节内容包括gcc12.2的必备库安装和gcc12.2安装两部分内容组成。

q544344318的博客 1万+

Gemini 3 完整指南(五):CLI 命令、无头模式、主题与快捷键

本文聚焦 Gemini CLI 的交互命令与工程化用法:讲清 / 元命令管理会话与配置,@ 注入文件/目录上下文,! 直连本地 Shell;并介绍自定义命令(TOML、优先级、{{args}}、!{...}、@{...})与无头模式在脚本/CI/CD 自动化中的实践。

阿甘兄 2381

PySpark 本地开发环境搭建与实践

本文详细介绍了 PySpark 本地开发环境的搭建过程,包括 JDK、Hadoop、Anaconda、PySpark 的安装以及 Pycharm 工程的创建。同时,深入讲解了代码编写、本地开发案例(如 WordCount、处理特殊分隔符、读取 hdfs 数据、获取外部变量)、Spark 程序的监控和 local 模式下结果文件数量问题等内容。通过掌握这些知识和技能,读者可以在 Windows 本地环境中高效地进行 PySpark 开发,处理大规模数据,解决实际业务中的数据分析和处理问题。

天冬忘忧的博客 3007

Gemini 3 完整指南(七):Agent Skills 深度解析与最佳实践

本文系统介绍了 Gemini CLI 的 Agent Skills 机制,讲解其设计理念、启用方式与目录规范,并通过代码审查案例展示如何按需加载上下文。Agent Skills 通过模块化、可复用的技能包,解决全局 Prompt 臃肿和 Token 浪费问题,帮助团队构建可治理、可共享的 AI 专家能力。

阿甘兄 3561

【DIY】使用STM32及PID算法实现一个磁悬浮玩具

今天教大家来做一个磁悬浮玩具。

小白白学电子 1万+

四、zabbix7.0推送告警至钉钉webhook机器人

2、钉钉的webhook是有安全要求的,我采用的是ip的方式,我的zabbix服务器在内网,我的网络出口有多个固定公网ip,所以这样做省事,其他方式也可以你自己考虑。下图是webhook机器人的配置。这一步,参数里面默认的跟我下图里不一样的,按我下图修改。Key是你的webhook机器人地址里的access_token=后面的内容。整个逻辑就是告警动作匹配告警媒介与用户,然后进行告警的发送。1、zabbix服务器能够访问钉钉的服务器,具体说是能访问。二、zabbix7配置报警媒介以及消息模板配置。

m0_74823715的博客 1285

Gemini 3 完整指南(十一):Gemini 3 全面总结与核心能力回顾

本文系统梳理了 Gemini 3 的核心理念与 Gemini CLI 的完整能力版图,阐明其从“聊天式 AI”向“Agent-First 通用智能引擎”的转变。重点解析了 CLI 架构、配置体系、交互命令、无头模式,以及 Tools、Skills、Hooks、Extensions 等扩展机制,并结合 Checkpoint、Sandbox 与可观测性,展示其在个人开发与企业级 CI/CD 场景中的工程化落地价值。

阿甘兄 1634

Elsevier投稿避坑指南:Ocean Engineering论文格式要求详解(附Checklist模板)

本文详细解析Elsevier旗下期刊Ocean Engineering的投稿格式要求与常见陷阱,提供实用的Checklist模板。涵盖文章类型确认、作者贡献声明、图表规范、数据声明等关键环节,帮助研究者高效通过格式审查。特别强调LaTeX排版细节、图表分辨率要求及现代伦理声明规范,助力海洋工程领域学者顺利投稿。

weixin_33734785的博客 1428

Gemini 3 完整指南(十):Extensions 原理解析、开发流程与发布实践

本文基于官方文档,系统讲解 Gemini CLI 扩展(Extensions)的概念与工作原理,涵盖 MCP 服务器、自定义命令、Agent Skills 与 Hooks 等核心能力,并通过完整示例介绍扩展的创建、开发、调试与管理流程。同时总结配置规范与最佳实践,最后对 Git 仓库与 GitHub Releases 两种发布方式进行说明,帮助开发者快速构建并分享高质量的 Gemini CLI 扩展。

阿甘兄 1213

AI Agent 架构的底层原理与核心机制

AI Agent五层架构实现智能闭环运转:1)感知层负责多模态信息输入与预处理;2)记忆层分类存储短期/长期记忆及知识库;3)认知层通过ReAct推理和反思机制进行决策规划;4)工具层调用外部API扩展能力边界;5)执行层完成任务输出并形成反馈闭环。五层架构通过"输入-处理-输出-优化"的联动机制,使Agent具备自主决策、持续学习和任务执行能力,突破传统LLM的局限,实现从信息处理到实际落地的完整智能体系。

女王の专属领地 483

设计四翼无人机(Quadcopter)的自主降落控制算法

为四翼无人机建立动力学模型,包括其姿态(Pitch, Roll, Yaw)和位置(X, Y, Z)的变化。可以使用Aerospace Blockset中的预制模块,或者根据具体需求构建自定义模型。示例:简化动力学模型利用块模拟四翼无人机的基本行为,确保模型能够反映电机输出如何影响姿态和位置变化。

amy_mhd的博客 238

Gemini CLI直连Gemini 3 Pro:开发者重掌AI编程主权

命令行接口(CLI)是现代软件开发中轻量、可控、可自动化的核心工具范式;大语言模型(LLM)本地调用正成为AI编程基础设施的关键演进方向。相比封闭IDE插件的黑盒封装,原生CLI工具通过直连模型API,规避协议转换损耗、地域限制与商业配额管控,在代码理解、长上下文推理(1M token)和结构化输出稳定性上释放模型真实能力。Gemini 3 Pro作为Google旗舰多模态模型,其强推理与高可控性在CLI环境中得以纯粹发挥,广泛适用于CI/CD集成、Git Hooks自动化、教育演示及隐私敏感型开发场景。本

446

华为OD机考双机位C卷 - 采购订单 (Java & Python& JS & C/C++ & GO )

华为OD机考双机位C卷 - 采购订单 。提供Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解,以及在线OJ模拟做题。

算法大师! 418

Google Gemini CLI深度解析与实践指南

作为一款免费开源产品,它革新了开发者与 AI 的交互模式,使内容创作、代码编写及复杂问题处理等操作,均可在命令行界面一站式完成,开启了终端交互的全新篇章。2. 然后告诉它你的更细致需求,一步步调试,最后的到下面的结果,也可以扫码浏览:https://gkquiz.vadxq.com/创建一个工程化的nextjs项目 首先告诉gemini-cli,我们需要创建一个nextjs项目,是关于什么内容,有什么要求。运行出现问题时,需先手动取消运行,再告知系统进行 debug,这种操作方式不够智能,亟待改进。

lichunchuan1的博客 2487

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

AI Website Cloner Template + Gemini CLI 完整使用教程:GEMINI.md配置与一键克隆技能运行

AI Website Cloner Template 是一个用 AI 编码代理**一条命令克隆任意网站**的开源模板:把目标网址交给 Gemini CLI 等智能体,它就能逆向出结构、配色与组件,最终生成一个干净的 Next.js 项目。本教程面向新手,以 Gemini CLI 为例,完整讲清 `GEMINI.md` 配置原理和 `/clone-website` 克隆技能的运行方法,5 个步骤即可

gitblog_00292的博客 463

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

Gemini 3 CLI配置系统深度解析与优化实践

命令行工具(CLI)配置系统是现代DevOps工具链的核心组件,其设计直接影响开发效率和系统可靠性。通过分层配置架构和环境变量覆盖机制,Gemini 3实现了灵活的配置管理。YAML作为配置描述语言,结合schema验证确保了类型安全。在工程实践中,动态配置注入和并行加载优化能显著提升CI/CD流水线性能,而加密配置和配置审计则是企业级安全的关键保障。本文以Gemini 3为例,详解其三级配置体系(全局/用户/项目)的实现原理,并分享配置缓存、条件化配置等高级技巧,帮助开发者掌握这个日均调用量超百万次的工具

weixin_42116058的博客 212

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

上一篇: Gemini 3 完整指南(三):CLI 功能特性及架构解密
下一篇: Gemini 3 完整指南(五):CLI 命令、无头模式、主题与快捷键
杨林伟
杨林伟 新星创作者: 信息安全技术领域 新星创作者: 信息安全技术领域 领域专家: 后端开发技术领域 领域专家: 后端开发技术领域
博客等级 码龄12年 1万+粉丝 3537原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值