GEMINI.md:项目上下文
用 GEMINI.md 给模型提供项目说明、角色和代码风格:三种上下文来源、/memory 命令、@file 导入、自定义文件名、.geminiignore。
上下文文件默认名为 GEMINI.md,用来给 Gemini 模型提供指令性上下文:项目特定的指令、定义角色、或提供代码风格指南,让 AI 的回复更准确、更贴合你。与其在每个提示里重复指令,不如在一个上下文文件里定义一次。
上下文层级
CLI 用分层系统获取上下文:从多个位置加载各种上下文文件,把所有找到的文件内容拼接起来,随每个提示发给模型。加载顺序:
- 全局上下文文件:位置是
~/.gemini/GEMINI.md(用户主目录),为你所有的项目提供默认指令 - 环境与工作区上下文文件:CLI 在你配置的工作区目录及其父目录里搜索
GEMINI.md,提供与你当前所做项目相关的上下文 - 即时(JIT)上下文文件:当某个工具访问文件或目录时,CLI 自动扫描该目录及其祖先目录(直到受信任的根)里的
GEMINI.md,让模型只在需要时发现针对特定组件的具体指令
CLI 页脚会显示已加载上下文文件的数量,让你快速看到当前生效的指令上下文。TypeScript 项目根目录的 GEMINI.md 示例:
# Project: My TypeScript Library
## General Instructions
- When you generate new TypeScript code, follow the existing coding style.
- Ensure all new functions and classes have JSDoc comments.
- Prefer functional programming paradigms where appropriate.
## Coding Style
- Use 2 spaces for indentation.
- Prefix interface names with `I` (for example, `IUserService`).
- Always use strict equality (`===` and `!==`).用 /memory 命令管理上下文
/memory show:显示当前分层记忆的完整拼接内容,让你检查提供给模型的精确指令上下文/memory reload:强制重新扫描并重新加载所有配置位置的GEMINI.md文件
用导入模块化上下文
可以用 @file.md 语法从其他文件导入内容,把大的 GEMINI.md 拆成更小、更易管理的组件,支持相对和绝对路径:
# Main GEMINI.md file
This is the main content.
@./components/instructions.md
More content here.
@../shared/style-guide.md自定义上下文文件名
GEMINI.md 是默认文件名,也可以在 settings.json 里用 context.fileName 属性指定其他名字或名字列表(例如同时识别 AGENTS.md):
{
"context": {
"fileName": ["AGENTS.md", "CONTEXT.md", "GEMINI.md"]
}
}忽略文件:.geminiignore
Gemini CLI 可以自动忽略文件,类似 .gitignore(Git 使用)和 .aiexclude(Gemini Code Assist 使用)。把路径加进 .geminiignore 会把它们从支持该功能的工具里排除,但它们对其他服务(如 Git)仍然可见。例如用 @ 命令分享文件时,.geminiignore 里的路径会被自动排除。它大体遵循 .gitignore 的约定:空行和以 # 开头的行被忽略;支持标准 glob 模式(*、?、[]);末尾加 / 只匹配目录;开头加 / 把路径锚定到 .geminiignore 所在位置;! 表示取反。启用方式:在项目根目录创建名为 .geminiignore 的文件。更新后需要重启 Gemini CLI 会话才会生效。
# 排除 /packages/ 目录及其所有子目录
/packages/
# 排除 apikeys.txt 文件
apikeys.txt
# 排除所有 .md 文件但保留 README.md
*.md
!README.md