使用 GEMINI.md 文件提供上下文
上下文文件,默认名称为 GEMINI.md,是为 Gemini 模型提供指令性上下文的强大功能。您可以使用这些文件提供项目特定的指令、定义角色或提供编码风格指南,以使 AI 的响应更加准确和符合您的需求。
与其在每次提示中重复指令,不如在一个上下文件一次定义它们。
理解上下文层级
CLI 使用分层系统来获取上下文。它从多个位置加载各种上下文文件,连接所有找到的文件的内容,并将它们与每个提示一起发送给模型。CLI 按以下顺序加载文件:
全局上下文文件:
- 位置:
~/.gemini/GEMINI.md(在您的用户主目录中)。 - 范围: 为您的所有项目提供默认指令。
- 位置:
项目根目录和祖先上下文文件:
- 位置: CLI 在当前工作目录中搜索
GEMINI.md文件,然后搜索到项目根目录(由.git文件夹标识)的每个父目录。 - 范围: 提供与整个项目相关的上下文。
- 位置: CLI 在当前工作目录中搜索
子目录上下文文件:
- 位置: CLI 还扫描当前工作目录以下的子目录中的
GEMINI.md文件。它遵守.gitignore和.geminiignore中的规则。 - 范围: 允许您为特定组件或模块编写高度具体的指令。
- 位置: CLI 还扫描当前工作目录以下的子目录中的
CLI 页脚显示已加载的上下文文件的数量,这为您提供了活动指令上下文的快速视觉提示。
GEMINI.md 文件示例
以下是一个示例,展示了您可以在 TypeScript 项目的根目录下的 GEMINI.md 文件中包含的内容:
markdown
# 项目:我的 TypeScript 库
## 通用指令
- 生成新的 TypeScript 代码时,请遵循现有的编码风格。
- 确保所有新函数和类都有 JSDoc 注释。
- 在适当时优先使用函数式编程范例。
## 编码风格
- 使用 2 个空格进行缩进。
- 在接口名称前加上 `I` 前缀(例如,`IUserService`)。
- 始终使用严格相等(`===` 和 `!==`)。使用 /memory 命令管理上下文
您可以使用 /memory 命令与加载的上下文文件进行交互。
/memory show:显示当前分层内存的完整、连接的内容。这使您可以检查提供给模型的确切指令上下文。/memory refresh:强制重新扫描和重新加载所有配置位置的所有GEMINI.md文件。/memory add <text>:将您的文本追加到全局~/.gemini/GEMINI.md文件。这使您可以即时添加持久化记忆。
使用导入模块化上下文
您可以通过使用 @file.md 语法导入其他文件中的内容,将大型 GEMINI.md 文件分解为更小、更易于管理的组件。此功能支持相对路径和绝对路径。
带有导入的 GEMINI.md 示例:
markdown
# 主 GEMINI.md 文件
这是主内容。
@./components/instructions.md
更多内容。
@../shared/style-guide.md有关更多详细信息,请参阅 内存导入处理器 文档。
自定义上下文文件名
虽然 GEMINI.md 是默认文件名,但您可以在 settings.json 文件中进行配置。要指定不同的名称或名称列表,请使用 context.fileName 属性。
settings.json 示例:
json
{
"context": {
"fileName": ["AGENTS.md", "CONTEXT.md", "GEMINI.md"]
}
}