Appearance
通过设置 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
geminiCLI 会从当前项目目录读取 ./.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=0 或 unset GEMINI_SYSTEM_MD 即可恢复内置提示词。建议先导出默认提示词备用,自定义时保留安全相关的规则。
Q: 覆盖之后工具调用还能正常工作吗?
A: 需要你在自定义 system.md 中包含工具调用相关的规则。建议用 ${AvailableTools} 变量自动注入工具列表,并保留内置提示词中关于工具审批和安全的指令。
Q: GEMINI_SYSTEM_MD 和 GEMINI.md 可以同时用吗?
A: 可以。两者互补:system.md(通过 GEMINI_SYSTEM_MD)控制底层操作行为,GEMINI.md 提供高层次的项目上下文和工作方式引导。