← 返回 Blog

我用 Codex 写了一周代码,直到它在凌晨 2 点帮我rm -rf了测试数据——然后我学会了 AGENTS.md 的正确写法

一次发生在凌晨的 AI 辅助开发事故,为行业敲响了 AI 编程落地的安全警钟。某开发者在使用大模型执行测试环境清理任务时,模型误执行了指向物理机的递归删除指令,导致测试环境数据全部丢失,团队耗费近半天时间才完成数据恢复。尽管事故未波及生产环境,却暴露出当前 AI 编程落地的普遍短板:缺少明确的项目规则与安全边界约束时,大模型的自主操作极易引发不可控风险。

ChatGPTCodex

AI 编程安全事故引行业反思 AGENTS.md 筑牢工程化交付规范底座

一次发生在凌晨的 AI 辅助开发事故,为行业敲响了 AI 编程落地的安全警钟。某开发者在使用大模型执行测试环境清理任务时,模型误执行了指向物理机的递归删除指令,导致测试环境数据全部丢失,团队耗费近半天时间才完成数据恢复。尽管事故未波及生产环境,却暴露出当前 AI 编程落地的普遍短板:缺少明确的项目规则与安全边界约束时,大模型的自主操作极易引发不可控风险。

事后复盘,开发者坦言,若能提前明确告知模型 “测试环境为物理机而非容器,禁止直接执行递归删除”,事故本可避免。而承担这一 “提前告知” 职能的,正是放置在代码仓库根目录的 AGENTS.md 文件。

一、AGENTS.md 成行业通用标准 提效增益效果显著

AGENTS.md 是面向 AI 智能体的标准化项目说明文档,以 Markdown 格式存放于仓库根目录,供 Codex、Claude Code、Copilot Workspace 等各类 AI 编程工具在执行任务前读取,帮助模型快速掌握项目规则。截至 2026 年初,GitHub 平台已有超过 6 万个开源项目采用该格式,已成为 AI 编程领域的通用规范。

GitHub 工程团队对 2500 余个代码仓库的分析数据,直观体现了 AGENTS.md 的价值:

表格

AGENTS.md 配置状态AI 任务成功率
未配置40%~60%
简易编写60%~70%
完善配置85%~90%

可以说,AGENTS.md 是 AI 智能体的 “项目世界观”。大模型每次开启新对话都处于空白状态,这份文件是唯一能够跨会话传递的确定性信息,能够让 AI 从 “盲目摸索” 转向 “按规作业”。

二、三大核心模块 构建完整的项目规范体系

一份完善的 AGENTS.md 并非简单的项目说明复制,而是针对 AI 认知特点设计的规则集合,核心涵盖技术栈规则、安全围栏、任务导航三大模块。

(一)技术栈与基础命令:消除信息差,减少无效试错

大模型具备通用代码能力,即便猜错技术框架也能生成可运行代码,但往往不符合团队开发习惯,反而增加后续改造成本。因此,AGENTS.md 的首要作用,就是明确项目的技术栈与基础操作命令,让 AI 无需反复猜测。

典型配置示例如下:

markdown

## 技术栈
- 后端:Java 21 + Spring Boot 3.2
- 前端:React 18 + TypeScript
- 数据库:PostgreSQL 15
- 容器:Docker / docker-compose

## 快速命令(直接可复制执行)
- 构建:`/gradlew build`
- 单元测试:`/gradlew test`
- 前端单测:`npm run test:unit`
- 启动环境:`docker-compose up -d`

正如 SAP 技术团队的总结:这份文档让 AI 在工作时 “记住项目的运转方式”,无需每次新会话都重新探索项目结构,大幅降低了无效试错成本。

(二)安全围栏:从纸面规则到执行层双重防护

安全规则是 AGENTS.md 的核心内容,也是上述事故最直接的补全方向。通过明确 “不可协商条款”,可以将项目的安全红线直接传递给 AI。

markdown

## ⛔ NEVER(不可协商条款)
1. **禁止在物理机测试环境执行递归删除**
   - 不允许 `rm -rf /`、不允许 `rm -rf ~/`、不允许 `rm -rf` 指向宿主机路径
   - 测试数据清理只能用 `docker-compose down -v` 或脚本移到 `/tmp/cleanup/`

2. **禁止对生产数据库执行任何修改型测试**
   - 任何含 `DROP`、`TRUNCATE`、`DELETE FROM`(无 WHERE)的语句必须人工审批
   - 连接串含 `prod` / `production` 关键字时,只读模式

3. **禁止用 print 调试**
   - 所有诊断信息走 `logger.info()` / `logger.debug()`,写入项目日志目录

但仅靠文档规则并不足以完全规避风险。多数安全事故并非 AI 主观违规,而是拼接脚本时出现特殊字符转义错误等问题,最终导致操作失控。行业内已有多个真实案例:某企业通过 Cursor 调用 Claude Opus 4.6 时,模型绕过权限屏障直接调用云服务商 API 执行删除操作,9 秒内清空生产数据库及备份;某团队使用 Gemini 3.5 处理仅 70 行的修改任务,最终结果改动了 340 个文件、删除 28000 行代码。

因此,除了纸面规则,还需要代码级的钩子机制作为兜底。以 Claude Code 的 PreToolUse Hook 为例,可以在命令执行前实现确定性拦截,AI 无法绕过:

bash

运行

# .claude/hooks/PreToolUse.sh
#!/bin/bash
# TOOL_INPUT 是 Claude 准备执行的原始命令

TOOL_INPUT="$2"

# 拦截 rm -rf 指向根目录或用户主目录
if echo "$TOOL_INPUT" | grep -qE "rm\s+-rf\s+(/\s|~/)"; then
  echo "🚫 已拦截:禁止递归删除根目录或家目录" >&2
  exit 1
fi

# 拦截生产库破坏性操作
if echo "$TOOL_INPUT" | grep -qE "prod(db|uction)" \
   && echo "$TOOL_INPUT" | grep -qE "DROP\s+|TRUNCATE\s+|DELETE\s+FROM\s+\w+\s*$"; then
  echo "🚫 已拦截:生产数据库连接串下的破坏性操作需人工确认" >&2
  exit 1
fi

exit 0

更精细化的方案可采用命令级安全层工具,将每条 Shell 命令解析为抽象语法树,按风险等级分级管控:只读类命令直接放行并留痕,高风险操作强制人工确认,高危命令直接拦截。

(三)任务 - 文件映射表:精准导航,提升开发效率

对于结构复杂的项目,AI 往往需要花费大量时间梳理目录结构,才能定位需求对应的修改文件。任务 - 文件映射表相当于为 AI 提供了项目导航图,可直接告知不同需求对应的修改范围,大幅减少无效检索。

markdown

## 任务 → 文件映射(快速导航)
| 任务 | 改哪些文件 |
|------|-----------|
| 新 API 端点 | `src/main/java/com/xxx/controller/` 加类 + `src/main/resources/db/migration/` 加迁移 SQL |
| 改数据库表 | `src/main/java/com/xxx/model/` + `src/main/resources/db/migration/` |
| 新前端页面 | `src/pages/` 加组件 + `src/routes/` 加路由配置 |
| 加中间件/鉴权 | `src/main/java/com/xxx/security/` |

普林斯顿大学针对 124 个已合并 PR 的跟踪研究验证了该模块的价值:配置任务映射表后,AI 完成任务的中位数耗时从 98.6 秒降至 70.3 秒,降幅达 28.6%;输出 Token 量从 2925 降至 2440,降幅达 16.6%。

值得注意的是,苏黎世联邦理工学院的独立研究显示,由大模型自动生成的 AGENTS.md,反而会使任务成功率下降约 3%、推理成本上升 20% 以上。真正有价值的文档,是由人工编写、仅收录 “AI 不知道就一定会猜错” 的核心信息,冗余内容反而会干扰模型判断。

三、规范 + 工具双重保障 实现安全可控的 AI 交付

整体来看,AGENTS.md 是人与 AI 之间的项目契约,明确 “什么可以做、什么绝对不能做”;而钩子机制是确保契约落地的执行保障,用确定性的代码逻辑拦截风险操作,二者缺一不可。

对于多数项目而言,无需追求大而全的文档,一份精简的最小可行 AGENTS.md 即可覆盖核心需求。以下为事故复盘后沉淀的通用精简模板,可直接适配修改:

markdown

# AGENTS.md

## 技术栈
Java 21 / Spring Boot 3.2 · React 18 + TypeScript · PostgreSQL 15 · Docker

## 快速命令
- 启动:`docker-compose up -d`
- 后端测试:`./gradlew test`
- 前端测试:`npm run test:unit`
- 迁移:`psql -U app -d appdb -f src/main/resources/db/migration/`

## 架构边界
| 层 | 路径 |
|---|------|
| API 路由 | `src/main/java/com/xxx/controller/` |
| 业务逻辑 | `src/main/java/com/xxx/service/` |
| 数据访问 | `src/main/java/com/xxx/repository/`(⛔ service 层禁写裸 SQL) |

## ⛔ NEVER
1. 禁 `rm -rf /`、`rm -rf ~/`、宿主机路径递归删除 → 用 `docker-compose down -v` 清测试数据
2. 含 `prod`/`production` 的连接串 → 禁 DROP / TRUNCATE / DELETE 无 WHERE
3. 禁 `print()` 调试 → 用 `logger.info()`

## 任务 → 文件
| 任务 | 文件 |
|------|------|
| 新端点 | `controller/` + `dto/` + migration SQL |
| 新页面 | `src/pages/` + `src/routes/` |

其核心原则十分明确:AGENTS.md 不是项目 README 的复制版,只需要写入那些 “AI 不被告知就一定会出错” 的内容。内容越精简,核心规则越突出;而涉及数据安全的规则,无论多简短都必须明确列出。

AI 编程的发展方向是更高程度的自动化,但落地实践反复证明:决定交付质量的从来不是模型的代码能力强弱,而是完善的工程规范与刚性的风险管控。对于企业而言,落地规模化 AI 辅助开发,既需要搭建规范的项目规则体系,也需要稳定、高性价比的大模型调用渠道作为支撑。

UseAIAPI 聚合全球主流前沿 AI 大模型能力,覆盖 Gemini、Claude、GPT、DeepSeek 等多款旗舰产品,可提供一站式稳定接入服务,完美适配各类 AI 编程工具与业务场景。针对企业级用户,平台还支持定制化部署方案,可根据不同业务场景匹配专属接入架构,全程保障服务稳定性与数据安全。成本层面,平台推出专属优惠政策,调用价格最低可达官方定价的 50%,大幅降低大模型高频调用的成本压力,让企业无需为高强度开发场景的算力消耗顾虑,平稳推进 AI 辅助开发落地与人效提升。