Skip to content

通过设置 GEMINI_SYSTEM_MD=1,Gemini CLI 会用 .gemini/system.md 完全替换内置系统提示词(全量替换而非追加)。适合需要强制项目特定行为或自定义 AI 人格的高级用户。支持 ${AgentSkills}${AvailableTools} 等动态变量注入,建议先导出默认提示词再修改。

系统提示词覆盖(GEMINI_SYSTEM_MD)

GEMINI_SYSTEM_MD 环境变量让你用自定义 Markdown 文件完全替换 Gemini CLI 的内置系统提示词。

注意:这是全量替换,不是合并追加。使用自定义文件后,除非你手动包含,否则原有的所有核心指令都不再生效。适合需要严格控制 AI 行为的高级用户。

如何启用

使用默认路径(.gemini/system.md

bash
export GEMINI_SYSTEM_MD=1   # 或 true
gemini

CLI 会从当前项目目录读取 ./.gemini/system.md

使用自定义路径

bash
export GEMINI_SYSTEM_MD=/absolute/path/to/my-system.md
# 支持相对路径和 ~ 展开
export GEMINI_SYSTEM_MD=~/prompts/system.md
gemini

禁用覆盖(恢复内置提示词)

bash
unset GEMINI_SYSTEM_MD       # 或
export GEMINI_SYSTEM_MD=0   # 或 false

如果启用了覆盖但目标文件不存在,CLI 报错:missing system prompt file '<path>'

UI 指示器

GEMINI_SYSTEM_MD 生效时,CLI 界面会显示 |⌐■_■| 标识,提示当前处于自定义系统提示词模式。

动态变量注入

在自定义 system.md 中可以使用以下变量,运行时自动替换为实际内容:

变量说明
${AgentSkills}注入所有可用 Agent Skills 的完整区块(含标题)
${SubAgents}注入可用子代理列表的完整区块(含标题)
${AvailableTools}注入当前所有已启用工具名称的项目符号列表
${write_file_ToolName}注入 write_file 工具的实际名称(其他工具同理)

示例 system.md:

markdown
# 自定义系统提示词

你是一个专注代码质量的助手。${AgentSkills}
${SubAgents}

## 可用工具

${AvailableTools}

你可以使用 ${write_file_ToolName} 保存日志文件。

导出默认提示词(推荐先做)

在覆盖之前,先导出内置提示词以便参考安全规则和工作流规则:

bash
# 导出到默认路径
GEMINI_WRITE_SYSTEM_MD=1 gemini

# 导出到自定义路径
GEMINI_WRITE_SYSTEM_MD=~/prompts/DEFAULT_SYSTEM.md gemini

导出后的文件就是 CLI 的完整内置系统提示词,可以在此基础上修改。

system.md 与 GEMINI.md 的分工

文件定位内容
system.md(固件层)不可协商的操作规则安全规则、工具调用协议、审批机制——保持 CLI 可靠性的底层逻辑
GEMINI.md(策略层)AI 人格、目标、方法论项目上下文、工作风格、领域知识——依赖 system.md 提供安全执行环境

最佳实践:system.md 保持精简但完整(只包含安全和工具操作必需的规则),GEMINI.md 专注于高层次引导和项目上下文。

持久化配置(推荐)

将配置写入 .gemini/.env 文件,避免每次都要手动 export

bash
# .gemini/.env
GEMINI_SYSTEM_MD=1

然后创建 .gemini/system.md 写入你的自定义提示词。

常见问题

Q: 自定义 system.md 之后 AI 行为异常,怎么恢复?

A: 设置 GEMINI_SYSTEM_MD=0unset GEMINI_SYSTEM_MD 即可恢复内置提示词。建议先导出默认提示词备用,自定义时保留安全相关的规则。

Q: 覆盖之后工具调用还能正常工作吗?

A: 需要你在自定义 system.md 中包含工具调用相关的规则。建议用 ${AvailableTools} 变量自动注入工具列表,并保留内置提示词中关于工具审批和安全的指令。

Q: GEMINI_SYSTEM_MD 和 GEMINI.md 可以同时用吗?

A: 可以。两者互补:system.md(通过 GEMINI_SYSTEM_MD)控制底层操作行为,GEMINI.md 提供高层次的项目上下文和工作方式引导。