Skip to content

Commit 768c42e

Browse files
committed
docs(ai-agents): 添加 Gemini CLI 文件加载机制完整验证文档
通过一系列黑盒实验(目录切换、文件读取、持久性测试),完整记录 Gemini CLI 的上下文加载行为: 1. **核心机制**: - **配置驱动**:依赖 .gemini/settings.json - **CWD 依赖**:严格依赖当前工作目录,不支持文件读取触发 - **级联拼接**:自动拼接路径上所有的 AGENTS.md 2. **使用限制与技巧**: - **持久性**:Agent 的 cd 命令无法在会话间持久化 - **激活技巧**:通过 Prompt 指示 Agent 切换目录('请进入 xxx 目录'),可在当前回合激活子目录规则 3. **最佳实践**: - 建议核心规则置于根目录 - 子目录规则需配合显式指令使用 🤖 Verified by Gemini CLI Experiments
1 parent 2433c0e commit 768c42e

1 file changed

Lines changed: 34 additions & 0 deletions

File tree

.ai-agents/README.md

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -233,6 +233,40 @@ AI 会:
233233
- 控制总长度(建议 `.claude/` 总计 ≤500 行)
234234
- 子目录规则按需加载(节省 token)
235235

236+
#### Gemini CLI 加载机制(实测验证)
237+
238+
**测试方法**
239+
1. 创建多级目录 `.gemini-test/level1/level2/`
240+
2. 在各级目录放置包含特定指令(Tag)的 `AGENTS.md`
241+
3. 运行时 `cd` 进入深层目录,观察回复是否包含所有 Tag
242+
4. **结论**:无需重启,目录切换即时生效,所有层级的 `AGENTS.md` 内容被拼接注入
243+
244+
**核心结论**
245+
246+
1. **配置驱动加载**
247+
- **默认行为**:Gemini CLI 默认查找 **`GEMINI.md`**
248+
- **项目配置**:本项目通过 `.gemini/settings.json``context.fileName` 字段将其重写为 `["AGENTS.md"]`,以遵循 Linux Foundation AAIF 标准。
249+
- **加载源**:因此,实际加载的是 `AGENTS.md`
250+
251+
2. **级联加载(Cascading Context)**
252+
- **触发机制****依赖 CLI 启动时的目录**
253+
- Gemini CLI 的 Shell 环境通常在每轮对话后重置,因此 Agent 无法通过 `cd` 命令持久切换目录。
254+
- **如果需要加载子模块规则**(如 `framework/fit/AGENTS.md`),用户必须**在该目录下启动 Gemini CLI**,或者在该目录下运行 IDE。
255+
- **级联顺序**
256+
Global (`~/.gemini/`) + Project Root + ... + Parent Dir + Current Dir
257+
- **合并策略****简单拼接(Concatenation)**
258+
259+
- **💡 使用技巧:如何临时激活子目录规则?**
260+
虽然 Agent 无法持久保持目录状态,但您可以在 Prompt 中明确指示上下文。
261+
- **方法 1(推荐)**:“请进入 `framework/fit` 目录,检查 Main.java 的代码规范”。
262+
- 结果:Agent 执行 `cd`,CLI 立即加载 `framework/fit/AGENTS.md`,规则在**当前回复**中生效。
263+
- **方法 2(手动引用)**:“请参考 `framework/fit/AGENTS.md` 的规则进行开发”。
264+
- 结果:Agent 读取文件内容作为普通上下文使用。
265+
266+
3. **文件组织建议**
267+
- **根目录 `AGENTS.md`**:存放**绝大多数**通用规则。这是最安全、最可靠的地方。
268+
- **子目录 `AGENTS.md`**:仅用于那些用户通常会**在该目录下启动终端**进行开发的独立子项目。对于普通的模块化项目,建议尽量将规则合并到根目录,避免因目录层级问题导致规则未加载。
269+
236270
### ClaudeCode 配置
237271

238272
ClaudeCode 的配置保持在 `.claude/` 目录(项目根目录),包括:

0 commit comments

Comments
 (0)