分享一下我的项目规则AGENTS.md 的想法与技巧

作为一名不懂编程的人,我在刚接触 vibe coding 时,遇到的最大问题是:

AI 一次性生成大量代码,但每一段都需要我理解。

表面上ai写得很快,实际上我花更多时间在阅读和确认上。

问题不在于代码错误,而在于:

  • 注释不统一,说明不完整

  • 很多时候我更关系业务逻辑而不是技术细节

  • 有的函数抽象到看不出业务意图,有的函数完全没有解释设计目的

  • 在不确定业务上下文时,AI 会过度防御,生成大量防御代码,尤其在后端代码里,这种“堆防御”的现象很明显。

结果就是:

逻辑可能是对的,但代码读起来很费劲。

于是我开始思考:

能不能在源头控制输出质量?

能不能让 AI 在写代码的同时,把代码讲清楚?

这时我开始研究 AGENTS.md

我的目标很简单:

把代码讲清楚,但不冗杂。


在我看来,一个方法真正重要的内容只有四件事:

  • 参数说明(输入是什么)

  • 返回值说明(输出是什么)

  • 异常说明(什么时候会失败)

  • 使用示例(如何调用)

只要这四点清晰:

  • 阅读成本会显著下降

  • 维护时不必反复推演实现细节

vibecoding可以让我们更加专注于项目的框架和业务逻辑,用ai帮我们实现具体的技术细节。

vibe coding 的核心价值,不是让 AI 替你写代码,而是让你从大量技术细节中抽离出来,把注意力集中在项目框架和业务逻辑上。在 vibe coding 模式下,你负责系统分层、领域建模、业务流程设计和接口边界定义,AI 则负责将这些抽象决策落地为具体实现代码。换句话说,你负责决策,ai负责执行。你主导架构与规则,AI承担实现与细节。当规范清晰、边界明确时,AI 是效率放大器;如果没有约束,它则可能替你做出不必要的设计决策。


一、为什么要写 AGENTS.md

在 AI 参与开发之前,注释是“辅助说明”;

在 AI 参与之后,注释变成了:

控制输出结构的约束工具。

如果没有规则:

  • AI 每次风格都不同

  • 有时写细节,有时写废话

  • 有时堆防御代码

如果有明确规范:

  • 输出开始标准化

  • 分层更清晰

  • 风格高度一致

这就是 AGENTS.md 的价值。

它不是给人看的炫耀文档,而是:

给 AI 的结构化约束说明书。

当你定义清楚规则,AI 才会按你的方式生成代码。

你不再被模型带着走,而是开始“驯化”它。


二、AGENTS.md 是什么?

可以简单理解为:

  • README.md → 给人看的

  • AGENTS.md → 给 AI / IDE / 代码助手看的

它本质上是:

项目的写代码说明书 + 约束条款

它有两层作用:

:one: 对人

  • 快速理解项目规范

  • 降低协作成本

  • 保证一致性

:two: 对 AI

  • 作为项目级系统提示词

  • 约束生成风格

  • 避免随意发挥


三、我的 Java 项目注释规范示例

我的AGENTS.md

  • 自动生成统一风格的 JavaDoc

  • 自动补全 @param / @return / @throws

  • 自动添加作者与时间

  • 自动写清接口用途

  • 避免重复防御代码

  • 遵循分层规则

而且它比你每次临时写提示更稳定。

# Java Code Documentation Specification

本项目所有 Java 代码必须严格遵循以下文档规范。

## 一、类注释规范

所有类必须包含标准 JavaDoc 注释,格式如下:

```java
/**
 * 类功能描述(说明该类核心职责)
 *
 * @author Ethan
 * @date 生成注释的时间
 */

规则:

必须使用 JavaDoc 风格(/** */)

必须描述类的主要职责

禁止省略类注释

二、接口注释规范

所有接口必须添加 JavaDoc 注释:
/**
 * 接口功能描述
 *
 * @author Ethan
 */

三、方法注释规范

所有 public 方法必须添加 JavaDoc 注释,格式如下:

/**
 * 方法功能描述
 *
 * @param paramName 参数说明
 * @return 返回值说明
 * @throws ExceptionType 异常说明(如有)
 */

规则:

  1. 必须说明方法功能

  2. 必须为所有参数添加 @param

  3. 有返回值必须添加 @return

  4. 抛出异常必须添加 @throws

  5. 禁止生成无意义描述

四、Controller 接口额外要求

Controller 层方法必须说明:

  • 接口用途

  • 请求参数说明

  • 返回结构说明

推荐格式(示例):

/**
 * 创建队伍接口。
 *
 * <p>用途:前端提交创建队伍信息,后端完成参数校验、落库,并返回新队伍 id。</p>
 *
 * @param teamAddRequest 创建队伍请求体(包含队伍名称、人数上限、过期时间、状态等)
 * @param request Http 请求对象(用于获取当前登录用户)
 * @return 统一返回结构,data 为新创建的队伍 id
 * @throws BusinessException 参数错误 / 未登录 / 业务校验不通过时抛出
 */
@PostMapping("/add")
public BaseResponse<Long> addTeam(@RequestBody TeamAddRequest teamAddRequest, HttpServletRequest request) {
    ...
}


---

# 四、写 AGENTS.md 的核心思维

很多人以为这是“写给别人看的规范”。

其实它更重要的意义是:

> 你对项目结构认知的外化。
> 

在写规则时候,考虑:

- 分层设计
- 工程边界
- 可维护性

这对ai的输出控制极其重要。

---

# 总结

在 AI 参与开发的时代:

- 不写规范 → AI 决定风格
- 写好规范 → 你决定风格

`AGENTS.md`本身并不复杂,但它能够让项目更加统一、更易维护,也更显专业。如果你正在使用 AI 写代码,强烈建议为自己的项目写一份专属的AGENTS.md,让 AI 在你的规则下工作,而不是让规则被 AI 决定。
4 个赞

框定规则,让AI知道边界,不错不错

3 个赞


真巧啊,正好昨天有人问这个,谢谢你 问答侠

这篇我挺认同,很多人把 AGENTS.md 理解成“给 AI 的提示词附件”,但你这里其实点到了更关键的一层:它本质上是在外化你对项目结构、边界和输出风格的判断。
尤其那句“不是给人看的炫耀文档,而是给 AI 的结构化约束说明书”,说得很准。
如果你后面继续展开,我觉得还可以再补一个“写了 AGENTS.md 之后,输出前后差异最明显的例子”,会更容易让人一下子看懂它的价值。

2 个赞