作为一名不懂编程的人,我在刚接触 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 / 代码助手看的
它本质上是:
项目的写代码说明书 + 约束条款
它有两层作用:
对人
-
快速理解项目规范
-
降低协作成本
-
保证一致性
对 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 异常说明(如有)
*/
规则:
-
必须说明方法功能
-
必须为所有参数添加 @param
-
有返回值必须添加 @return
-
抛出异常必须添加 @throws
-
禁止生成无意义描述
四、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 决定。
