Appearance
Gemini CLI 的内存管理让 AI 在每次对话中都"记得"你的项目规范:在 GEMINI.md 文件里写入框架偏好、编码规范、禁止行为,每次会话自动加载;用 save_memory 保存临时事实(如服务器 IP);用 /memory show 检查 AI 当前"知道"什么。全局 > 项目 > 子目录的三级配置让规则精细到目录级别。
内存与上下文管理
通过 GEMINI.md 和 Memory 工具,让 Gemini CLI 记住你的项目规范和个人偏好,无需在每次对话中重复解释。
前置条件
- Gemini CLI 已安装并完成认证,参见 安装指南
- 有一个项目目录需要设置持久规则
为什么要管理上下文?
Gemini CLI 功能强大但通用。它不知道你喜欢的测试框架、代码缩进风格,或者你不想在 TypeScript 中用 any。上下文管理通过持久记忆解决这个问题:
- 强制规范:确保每个生成的文件都符合团队的风格指南
- 设定角色:告诉 AI 以"高级 Rust 工程师"或"QA 专家"的视角工作
- 记住事实:保存"数据库端口是 5432"这类信息,不用每次重复
GEMINI.md:项目级规则
最强大的上下文控制方式是 GEMINI.md 文件。这是包含指令的 Markdown 文件,每次对话自动加载。
创建项目规则文件
- 在项目根目录创建
GEMINI.md:
markdown
# 项目规范
- **框架**:使用 React + Vite
- **样式**:所有样式使用 Tailwind CSS,不写自定义 CSS
- **测试**:每个新组件必须包含 Vitest 单元测试
- **语气**:简洁明了,不要解释基础 React 概念- 启动新会话,Gemini CLI 会自动应用这些规则。
三级配置层次
配置按层次加载,优先级从低到高:
| 级别 | 文件路径 | 适用范围 |
|---|---|---|
| 全局 | ~/.gemini/GEMINI.md | 你的所有项目 |
| 项目根 | ./GEMINI.md | 当前仓库 |
| 子目录 | ./src/GEMINI.md | 仅 src 目录下的操作 |
示例: 在全局配置设"始终使用严格类型检查",在后端仓库设"使用 Python 3.11"——后者只在那个项目生效。
更多 GEMINI.md 语法细节,参见 GEMINI.md 参考。
Memory:记住一次性事实
不想写配置文件,只想让 AI 记住某件事?直接在对话中告诉它:
保存记忆
记住我更喜欢在所有可能的地方用 'const' 而不是 'let'。AI 使用 save_memory 工具把这个事实存入你的全局记忆文件。
保存这个事实:预发布服务器 IP 是 10.0.0.5。自动应用记忆
事实保存后,你不需要主动调用,AI 会自动"知道"它:
下次的 Prompt:
帮我写一个部署到预发布环境的脚本。AI 响应: "我来写一个部署到 10.0.0.5 的脚本..."
检查和刷新上下文
查看当前上下文
想知道 AI 现在"接收到了什么指令",使用:
/memory show这会打印当前会话中所有 GEMINI.md 和保存记忆的完整拼接内容——调试"为什么 AI 不遵守某个规则"时非常有用。
刷新上下文
会话进行中编辑了 GEMINI.md 文件,AI 不会立即感知,强制重载:
/memory reload最佳实践
- 保持精简:不要往 GEMINI.md 里堆砌大量内容,只写对代码生成有直接指导意义的指令
- 用否定约束:明确告诉 AI"不要"做什么(如"不要用 class components")往往比模糊的正面指令更有效
- 定期检查:项目迭代后定期清理 GEMINI.md,删除过时的规则
下一步
- 了解短期对话历史的工作原理:会话管理教程
- 查阅
/memory命令的完整选项:CLI 命令参考 - 了解实验性自动记忆功能:Auto Memory
常见问题
Q: GEMINI.md 和 save_memory 有什么区别?
A: GEMINI.md 适合持久的项目规范(提交到 git,团队共享),save_memory 适合个人的一次性事实(只存在你本地)。前者是"规则",后者是"笔记"。
Q: 修改全局 GEMINI.md 会影响所有项目吗?
A: 是的,~/.gemini/GEMINI.md 的内容会在你所有项目的所有会话中加载。建议全局文件只放非常通用的个人偏好(如语言风格、基本规范),项目特定规则写在项目根目录的 GEMINI.md 里。
Q: 上下文太长会影响 AI 的响应质量吗?
A: 会。GEMINI.md 内容和记忆都占用 Token,过多的上下文不仅消耗费用,还可能让 AI 难以聚焦在最相关的指令上。保持每个 GEMINI.md 文件在 200 行以内是个好习惯。