在 Bob Shell 中使用 /init 和 AGENTS.md 启动项目
运行 Bob Shell /init 命令生成 AGENTS.md(Bob 在每次对话中加载的项目上下文文件),并学习如何保持该上下文最新。
/init 命令会扫描项目并生成一个名为 AGENTS.md 的结构化摘要文件,Bob 在每次对话中将其用作持久上下文。通过 /init 命令,你可以让 Bob 了解项目的结构、规范和代码库,而无需在每次交互开始时重新读取每个文件。
大语言模型是无状态的。每次新对话开始时都没有之前交互的记忆。如果没有明确的项目上下文,Bob 必须在每次新交互时重新探索代码库,这不仅效率低下,在规模扩大后也变得不切实际。
在本教程中,你将在演示应用程序的根目录中初始化 Bob Shell,探索 Bob 获取的有关应用程序的上下文,并了解 Bob Shell 如何加载 AGENTS.md 文件。
前提条件
要完成本教程,你需要准备:
- 如果尚未克隆,请克隆 Galaxium Travels 演示代码。克隆命令还会检出包含教程所用代码的
bob-learning-path-branch分支。git clone -b bob-learning-path-branch https://github.com/IBM/galaxium-travels - 虽然不是必需的,但建议阅读启动交互式会话以熟悉 Bob Shell 的界面和功能。
在项目中启动 Bob Shell
切换到 Galaxium Travels 根目录:
cd galaxium-travels启动交互式会话:
bob chat --mode agent--mode agent 标志会在 Agent 模式下启动会话,该模式拥有 Bob 读取文件和编写 AGENTS.md 所需的工具。
如果 Bob Shell 询问你是否信任该文件夹,请选择信任以便 Bob 可以在项目中工作。要了解更多信息,请参阅受信任的文件夹。
使用 /init 生成 AGENTS.md
在提示符处输入 /init 命令:
/initBob 会读取项目中的相关文件。
当 Bob 请求使用工具(例如读取文件或编写 AGENTS.md)时,会出现审批对话框。对每个请求选择 Approve。
Bob 会在 Galaxium Travels 根目录下生成主 AGENTS.md 文件。它还会在 .bob/rules-agent/AGENTS.md、.bob/rules-ask/AGENTS.md 和 .bob/rules-plan/AGENTS.md 中生成特定于模式的上下文文件。
探索 AGENTS.md 文件
AGENTS.md 文件是 Bob 的入职文档。它是一份简明、可操作的摘要,为 Bob 提供了理解项目结构和规范所需的一切信息。
请求 Bob 向你展示该文件:
Show me the contents of @AGENTS.md@ 符号引用了项目中的文件,因此 Bob 会在回复之前读取它。你也可以打开另一个终端直接查看该文件:
cat AGENTS.mdAGENTS.md 文件通常包含以下组成部分:
- 项目概述与用途
- 目录结构与关键文件位置
- 技术栈与依赖项
- 架构模式与规范
- 开发工作流
要查看 /init 创建的所有文件,请在 Galaxium Travels 目录中运行 git status:
git statusBob Shell 如何加载 AGENTS.md 文件
Bob Shell 在每个任务开始时自动加载上下文文件(例如 AGENTS.md)。
- 全局上下文:
~/.bob/AGENTS.md适用于所有项目。 - 项目上下文:项目根目录和父目录中的
AGENTS.md适用于当前项目。 - 局部上下文:子目录中的
AGENTS.md适用于该子目录,用于特定组件的说明。
要为特定模式向 Bob 提供指令,请在 .bob/rules-<mode>/ 目录中添加模式特定规则,例如为 Plan 模式添加 .bob/rules-plan/。
维护 AGENTS.md 文件
在发生以下变更后重新运行 /init:
- 添加新模块或服务
- 更改目录结构
- 采用新技术或框架
- 使用 Bob 的新团队成员加入
你还可以手动编辑 AGENTS.md,添加 Bob 自动扫描可能无法捕获的上下文,例如业务规则、部署规范或团队特定实践。将 AGENTS.md 提交到版本控制系统,以便你的团队共享相同的上下文。
后续步骤
在本教程中,你学到了:
- 大语言模型是无状态的。运行
/init命令通过生成AGENTS.md解决了这个问题,AGENTS.md是 Bob 在每次对话开始时读取的持久上下文文件。 - 在项目发生重大变更后重新运行
/init以保持上下文最新。
继续学习为 Bob Shell 编写有效提示词,了解如何编写能够稳定产生所需输出的提示词。