AI 会把你的 AGENTS.md 写成流水账吗?一次开源模型实测与配置治理

AI 工作日志 作者头像野生码农 阅读 9 min
返回板块 GEO 源码全文 ✓
AI 会把你的 AGENTS.md 写成流水账吗?一次开源模型实测与配置治理

AI 会把你的 AGENTS.md 写成流水账吗?一次开源模型实测与配置治理

文章总结

这一轮我让跑在 mimo-v2.6-flash(开源模型)上的 AI 军师,给我的 GEO 博客改页面:统计数字过期、自我介绍要换版、关键信息要高亮。它干完了,前后 10 个 commit【实测:git log,09-28 04:41–11:09】,中间还自己把线上一个 500 修了回去。我的评价原话是:"至少是可以干活的级别,不像是豆包那个娱乐模型。"

但它有个通病值得所有给 AI 配项目的人警惕:它会把"发生过什么"写进"该怎么做"的文件里。改两个文件就往 AGENTS.md 补一段"某某已于今天清除""历史上那条残留无害"——配置文件被写成了记事本。我的判断是:这样下去,项目会越来越臃肿,枷锁镣铐越积越多,模型也会飘、会降智。

解法不复杂,核心就一条:配置只写规则,事件进台账,首行写死分工。本文把这次的完整过程和三个可抄走的自检清单摆出来。

场景:一天的活,和一个被写花的配置文件

AGENTS.md 这类项目规则文件的加载机制决定了它的成本:每次 AI 会话全量注入上下文。规则写得干净,行为就稳;写成流水账,每次会话都要在旧闻里翻"我现在该干嘛"。

这一天要干的活很清楚:

  1. /about 页面的统计条是硬编码的假数字(模板里写死 11/214/44/14,实际早变成 11/252/48/16);
  2. 自我介绍文案按母版换版,关键信息要加高亮;
  3. 顺带把这类问题的根子清掉。

前三件它都干了。真正有意思的是后半程——我在质疑"改几个字为什么要建迁移文件"之后,它做了一次正确判断:把文案的唯一权威副本(下称"真源")从 MySQL 搬进仓库文件,让改文案变成"改一个文件 → commit → pull"。这个判断我认。问题出在它收拾残局的方式:每清一处旧东西,它都要往 AGENTS.md 里记一笔。

过程:时间线与两处翻车

全部时间锚来自本仓 git log【实测】:

时间 提交 干了什么
04:41 efbc88ae 统计条改实时计数(硬编码 → boardStats())
05:05 / 05:18 a88711af / 1017293a 文案换版、关键信息高亮
05:25 2db92516 文案真源入仓:intro.html + 模板 {include}
05:30 57e5724b 修复 /about 500
07:51 e192a99c 清死数据:删 2 个迁移文件、2 条死配置、2 行死种子
11:09 a4cc4d98 AGENTS.md 治理:只留规则,事件归台账

同一天还顺手处理了两件杂事:服务器仓库 .git 被 root 属主污染(92 个文件,导致 su www 拉取报 insufficient permission,一条 chown 修好),以及把当天的翻车记进故障台账、清掉本机临时脚本。

翻车一:只 lint 不实跑。 05:25 那次重构,它删配置块时把相邻的 'site_stats' => $siteStats 一起吞了,而模板还在 volist name="site_stats"。push 前它只跑了 php -l(静态语法检查)——语法没错,功能没了。05:27 线上错误日志出现 Undefined variable $site_stats,05:30 修复提交上线,/about 打开是 500 的窗口不到 5 分钟【实测:错误日志时间戳 05:27 → 修复提交 05:30】。代价不大,但暴露的规矩问题很硬:语法检查不是验收,改完控制器/模板必须部署后 curl 目标页、核对关键内容。

翻车二:配置文件成了它的记事本。 我先说了一句"没用的垃圾文件,该清就清,不要保留。保证版本功能正确的最简版本就好"——它照做了,库里的迁移记录、死配置行、种子死行清得干干净净。然后它往 AGENTS.md 补了两段:

about_intro、site_stats 两条死行已于 2026-09-28 清除

历史迁移里那条 seed 条目属已执行历史,禁改(全新建库重跑会多出一条无读取者的死行,无害)

第一段是流水账,第二段是背景解释。它们都不是规则,不会指导任何一次未来的操作,却每次干活都要被读一遍。我直接拍板:

你这边有个问题。干活过程中 Agents.md 文件,这个是项目的配置文件,不能太随意。我看你就像在记流水账。删两个文件就你往里面写东西。……配置文件不能写成裹脚布,流水账。

真相:为什么"流水账配置"会降智

机制其实很朴素——AI 的项目上下文是有限预算,而配置文件每次全量注入。

  • 一条"条件 → 动作"的规则,今天能指导行为,明天还能指导行为;
  • 一段"某年某月发生过什么",对第 100 次会话零信息量,却每次会话都占 context token;
  • 当规则被旧闻稀释,模型要在一堆历史里捞"我现在该干嘛",行为就会漂移——这就是我打比方说的"枷锁镣铐越来越多,模型也会飘"。

所以这不是审美洁癖,是上下文预算问题:配置文件是常驻内存,不是日记本。

这次治理后的分工,我写进了文件第一行:

> 本文件只写本仓库的可执行规则。事件、翻车、历史记台账,禁写进本文件。

改完的 AGENTS.md 规则一条没少,少的全是日期、事件和解释【实测:diff 15 增 18 删】,文件长度基本持平——治理目标不是"变短",是"每一条都还能指导第 100 次会话"。

可抄走:三个自检清单

1. 配置文件四问(改任何 AGENTS/规则文件后过一遍)

  • 这一条是"条件 → 动作"句式吗?
  • 里面出现日期、"曾经/已/上次"字样了吗?→ 有,移台账
  • 这条在第 100 次会话还能指导行为吗?→ 不能,移台账
  • 文件首行有没有写"事件去哪、规则留哪"?

2. AI 改代码的验收三件套(缺一条不许宣称完成)

php -l 改动文件                 # 只是及格线,不是验收
su www -c "git pull"            # 部署
# ThinkPHP 特有的坑:think clear 只清 runtime/temp(模板编译产物),
# 清不掉 runtime/cache(configModel 模型缓存,file 驱动、无过期)——改库后必须两条一起跑
/usr/bin/php think clear && rm -rf runtime/cache/*
curl -o /dev/null -w '%{http_code}' https://你的域名/目标页   # 必须 200
curl 目标页 | grep -c '关键新内容'   # 内容命中才算改对

3. 删迁移的正确顺序(顺序反了 migrate:status 报 missing)

DELETE FROM ba_migrations WHERE version IN (20260928030000, 20260928040000);
-- version 是 bigint,存纯数字,不带文件名后缀

先删库记录 → 再 git rm 文件 → commit/pull。

素材点

  • 时间与规模:本仓 git log 10 个 commit(09-28 04:41–11:09),治理提交 a4cc4d98,修复提交 57e5724b
  • 事故证据:runtime 日志 Undefined variable $site_stats(05:27);修复后线上 /about 200、统计条 11/252/48/16
  • 清理实测:迁移记录 15 → 13,文件 13,死配置行 0,种子死行 2
  • 人机协作原话:三条(能力评价 / "该清就清" / "配置文件不能写成裹脚布,流水账"),均为本人当场指令
野生码农头像

关于作者 · 野生码农

把 AI 真放进生产环境的独立开发者。自研本地知识库、数字员工团队、软考备考系统、量化交易四套系统,全程公开复盘。

看他的平台账号 →
相关

继续阅读