跳到正文
FunCoding

搜索

搜索文档、智能体、博客、Skill 和 MCP

GEMINI.md:项目上下文

用 GEMINI.md 给模型提供项目说明、角色和代码风格:三种上下文来源、/memory 命令、@file 导入、自定义文件名、.geminiignore。

上下文文件默认名为 GEMINI.md,用来给 Gemini 模型提供指令性上下文:项目特定的指令、定义角色、或提供代码风格指南,让 AI 的回复更准确、更贴合你。与其在每个提示里重复指令,不如在一个上下文文件里定义一次。

上下文层级

CLI 用分层系统获取上下文:从多个位置加载各种上下文文件,把所有找到的文件内容拼接起来,随每个提示发给模型。加载顺序:

  1. 全局上下文文件:位置是 ~/.gemini/GEMINI.md(用户主目录),为你所有的项目提供默认指令
  2. 环境与工作区上下文文件:CLI 在你配置的工作区目录及其父目录里搜索 GEMINI.md,提供与你当前所做项目相关的上下文
  3. 即时(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