跳到主要内容

仓库指令

仓库指令是放在代码仓库中、供编码 Agent 在每次会话开始时自动读取的说明文件,例如 AGENTS.md、CLAUDE.md。它保存构建和测试命令、目录结构、代码约定、禁止事项等稳定信息,让 Agent 不必每次重新摸索项目。本文讲应该写什么、不该写什么、如何组织与维护,以及如何验证修改有效。不同工具支持的文件名、层级和加载规则不同,具体以所用工具的文档为准。

1. 面试核心​

先记住这几条,再读正文
  • 仓库指令保存稳定、每次任务都可能用到的信息:常用命令、项目结构、代码约定、验证方式和明确的禁止事项。卡 · 写什么
  • 不写临时任务状态、可以从代码直接看出的内容和大段文档;内容越长,每次占用的上下文越多,重点越容易被稀释。
  • 指令文件在会话开始时加载,不依赖对话历史,因此上下文压缩后仍然有效;必须长期遵守的约束应写在这里,而不是只在对话中说一次。
  • 修改指令后用代表任务对比修改前后的结果,确认确实改善,而不是凭感觉增加规则。卡 · 组织与维护
  • 团队共用一份纳入版本管理的指令,可以让使用不同工具的开发者得到一致的约定。卡 · 组织与维护

2. 写什么​

# 项目说明

Node 20 + TypeScript 的订单服务,入口 src/server.ts。

## 常用命令
- 安装:pnpm install
- 单测:pnpm test -- <文件>;全量 pnpm test
- 类型检查:pnpm typecheck(提交前必须通过)

## 结构
- src/api:HTTP 路由,只做参数校验和调用 service
- src/service:业务逻辑
- src/repo:数据库访问,唯一允许写 SQL 的目录

## 约定
- 金额使用整数分,不使用浮点数。
- 新接口必须有对应的集成测试(tests/api/)。

## 禁止
- 不修改 migrations/ 中已有的迁移文件,新增迁移代替。
- 不在代码中写入密钥,使用 config/ 读取环境变量。

写作要点:

  • 具体可执行:“运行 pnpm typecheck”比“保证类型正确”有用。
  • 说明原因:“金额用整数分,因为浮点数会产生舍入误差”让 Agent 在相似场景也能正确判断。
  • 只写例外:通用的良好实践模型已经知道,写项目特有的约定和容易出错的地方。
  • 保持简短:详细文档放在其他文件中,指令里写明在什么情况下去读哪个文件。

3. 组织与维护​

  • 层级:多数工具支持多级文件,例如用户级(个人偏好)、仓库根目录(全项目约定)、子目录(模块特有约定),离修改位置越近的文件通常越具体。
  • 来源:Agent 犯了一次可以通过规则避免的错误,就是增加一条规则的时机;规则不再适用时删除。
  • 版本管理:和代码一起提交、评审,变更有记录。
  • 防止膨胀:定期合并重复规则、删除过时内容。很长的规则文件会挤占上下文,也会让真正重要的规则被忽略。
  • 与其他机制分工:只在特定任务需要的流程写成 Agent Skills;必须保证执行的检查(格式化、禁止的命令)用 Hook 或 CI 强制,不能只依赖文字规则。

4. 常见问题​

4.1 仓库指令和系统提示有什么区别​

系统提示由 Agent 工具的开发者编写,描述工具和通用行为;仓库指令由项目维护者编写,描述当前项目。工具会把仓库指令作为上下文的一部分加载,它的优先级和加载方式由工具决定。

5 · 面试题卡片​

5.1 项目规则文件中应该保存哪些信息?哪些信息不能在上下文压缩时丢失?​

出现公司:安软、字节跳动

考察重点

  • 稳定信息与临时状态的区分。
  • 指令文件独立于对话历史加载的特点。

相关内容:写什么、上下文压缩。

参考回答

保存稳定、反复用到的信息:构建、测试、类型检查等命令;目录结构和各层职责;项目特有的代码约定及原因;验证要求,如提交前必须通过哪些检查;明确的禁止事项,如不改已有迁移、不写入密钥。

这些信息在会话开始时从文件加载,不依赖对话历史,所以压缩后仍然有效;必须始终遵守的约束、验证方式和禁止事项应该写在这里。当前任务的进度、已修改的文件、未解决的错误属于临时状态,应写入进度文件或在压缩摘要中保留,不放入仓库指令。

5.2 更新 AGENTS.md 或 Skills 后,怎样验证效果确实提升?​

出现公司:字节跳动

考察重点

  • 用代表任务做修改前后的对照。
  • 结果、成本与规则遵守情况的度量。

相关内容:组织与维护、编码 Agent 评测。

参考回答

准备一组代表性任务,其中包含这次修改想解决的问题,以及与修改无关的常规任务。固定模型版本、工具和仓库状态,分别用旧指令和新指令运行,每个任务运行多次。

比较任务成功率(测试是否通过)、违反规则的次数、步数和 Token 消耗、人工修正量。输出质量难以用测试判断时,用评价脚本检查可验证的项,或用带评分细则的模型评审对比两组输出,并人工抽查校准。新规则改善了目标问题且没有让常规任务变差才保留,同时检查文件长度增长是否带来额外成本。

5.3 多人使用不同 AI 工具开发同一个功能时,怎样协作?​

出现公司:快手、美团

考察重点

  • 共享的规则、接口约定和验证标准。
  • 版本管理与评审流程不因工具不同而改变。

相关内容:组织与维护。

参考回答

协作的基础不在于统一工具,而在于统一约定和验收。仓库中维护一份纳入版本管理的指令文件,写清命令、结构、代码约定和禁止事项;不同工具读取的文件名不同时,用同一份内容或相互引用,避免规则分叉。

功能开始前约定接口和数据结构,按模块划分负责人,减少同时修改同一文件。所有修改走同样的分支、CI 和代码评审流程,用测试、类型检查等自动检查作为共同的验收标准。某个人发现的 AI 常见错误,补充到共享指令或 CI 检查中,让所有人受益。

6. 参考资料​