OpenAI 禁「不是X是Y」,我半年前就禁了

cover

Hello,我是飞飞。

9 月 5 号 OpenAI 给新模型 Astra 发了份官方提示词指南。我翻到 slop 词黑名单那节的时候愣了几秒。slop 词,说人话就是机器腔套话。清单里有一条:别用「This isn’t about X. It’s about Y」这种对比句式。

这不就是我那套写作规则里禁了大半年的「不是X是Y」对仗么。

我那套规则长在博客仓库的 grep 矩阵里,每一条都是写稿翻车之后补的。比如「第N」那条禁令。那年连着五篇初稿,篇篇都在用「首先、其次、最后」起头。我干脆把这几个词写进了 grep。从没跟 OpenAI 对过表。两拨人互不通气,禁了同一个句式。这种撞车值得认真对待,因为它说明这些词大概真是 slop,跟谁定的规矩没关系。当然还有一种可能,两边的禁令都源自同一批英文写作圈的公共讨论。可就算是抄,抄的也是同一份已成行业共识的词表。

顺着指南里「审计你的 AGENTS.md」那句建议,我当天把自家的配置文件全审了一遍。结果一半安心一半冒汗。而这还只是这份指南里最便宜的那部分。

两张黑名单撞车了

先交代我这套规矩的来历,你才知道撞车撞得有多实。

我的防 AI 味规则没一条是抄的,全是被罚出来的。481 篇文章一篇篇写下来,哪句式读着像机器、哪段落一看就是模板,翻一次车记一条,攒成了一份扫描清单:中文破折号、三联否定、「第N」编号、对仗密度超标,每条配一个 grep 命令,交付前机器扫一遍。

OpenAI 那份清单怎么来的我不知道,但它禁的词跟我的高度重合:总结收口、模糊限定词、车轱辘过渡句,最巧的就是对比句式。官方给的理由是这类句式「引入了用户没要求的另一个选项」,我的理由更土:读起来像在抬杠,且 AI 特别爱用。

还有我比它严的三样:中文破折号、三联否定、编号陷阱,官方清单压根没提。它也有比我细的,比如专门管散文的写法建议:一段只装一个主旨、重点放前头、主动语态、列表只在信息真平行的时候用。倒过来它有我没有的,比如自造连字符合成词。两边各管一摊,中间重合的那一块,两边都判了死刑。

独立收敛在写作这行有个好处:不用再怀疑是不是我口味偏。重合的部分,可以当定论用。

词表好扫

按指南审自家配置,头一层是扫词。结果分两半。

英文那半干净得意外。官方点的那些词,delve、leverage、foster、worth noting,我拿 grep 扫了仓库根 CLAUDE.md、AGENTS.md 和全部 skill 文件,命中数为零。原因不复杂:我的文件全是中文,英文 slop 根本没机会进场。

中文那半有漏网。官方没开中文清单,我按语义把词对过去一搜:赋能跳出来 2 处,抓手 3 处。我第一反应是哪来的,点进去一看,全藏在写作规则库的历史日志里,是当年引用别人文章举例时带进来的。可官方说得对,这类词留在指令文件里就是隐患,agent 分不清你是禁它还是在示范它。

词这一层,扫一遍半小时,值得做。你不用真去通读那份指南,把那十来个词抄进 grep 就能扫自家仓库,一条命令的事。顺带说,我的 AGENTS.md 本体 8780 字节,倒是克制,问题从来不出在门面上,出在门后面那一整墙的库存。

大坑在体量

真正让我冒汗的是另一层:体量。

官方指南里有句话,说 skill 文件和 AGENTS.md 这类上下文文档里,模糊或矛盾的指令会让模型卡住,或者意外跑偏,所以建议把模型能访问的 skill 文件全审一遍。我把自己的目录掂了掂:skill 文件 24 个,合计 1.7MB,将近 96 万字符。光写作规则库一个文件就 68 万字符,里面 229 条经验摞着几十篇训练日志。

这套东西是照着 Claude Code 的脾气一点点磨出来的。Claude Code 对它熟,哪条是引用、哪条是禁令、哪条只管某个 skill,配合了半年,磨出了默契。可 Astra 是个新模型,官方原话说它对这类文件「更敏感」。96 万字符里有没有互相矛盾的条款,有没有过期的旧规矩,我没查过,也查不动,那是一次语义层面的全量排查,成本比扫词高两个量级。

这就是「审计你的 AGENTS.md」这句话的真实成本。词表好扫,半小时。矛盾排查,是一个没有截止日期的工程。我跟你讲,去年我写 AGENTS.md 那篇的时候还引过一条研究,说这种手册越短越好,短才立得住。如今我的规则库长成了 68 万字符的怪物,那篇的旧立场现在听着像别人的话。

手册里缺的三条

还有一层跟词和体量都无关,是三个空位。

官方指南里几条建议,我逐条对了自己的操作手册。反问这块,官方说 Astra 更爱提澄清问题,建议在提示词里写清哪些问题必须停下来问、哪些该当假设继续跑。我的 AGENTS.md 里关于这个的条款是零条。我的手册教了 agent 怎么写稿、怎么配图、怎么发公众号,没教过它什么情况下该停下来问我。

委派也是零。官方观察到 Astra 除非明确指示否则倾向于自己硬扛,建议显式写明什么时候该派子任务。我的手册里没有任何一条委派规则。测试范围同理,官方说它可能把测试面铺得比任务需要的宽,建议给测试设预算。我的手册里同样一条没有。反问阈值那条官方给的设计思路其实很细:只有答案会实质改变结果的问题才值得停下来问,受众、合规、不可逆动作算,措辞偏好不算。这条拿到人身上也成立,我那套等用户拍板的流水线环节,缺的从来就是这条分界线。

三个空位是同一种病:我的手册写于 Astra 发布之前,管的是旧模型的脾气。新模型的行为变了,手册没跟上。这算不上懒,是给 agent 写手册这件事本身,从一次性写作变成了持续维护。

我先补哪刀

按官方给的路线补的话,顺序是清楚的。说实话,成本从低到高排得很整齐。

先补三条缺失条款,成本最低:反问阈值照官方思路写一条,什么算「会改变结果的问题」必须停,什么算偏好类直接当假设跑。委派和测试预算各加一段。然后做中文漏网词的清理,把规则库历史日志里的赋能、抓手这类词核一遍是引用还是违规。体量那层我不动,68 万字符的矛盾排查留到我真要换模型那天再做,现在做是为一个用不上的场景烧时间。

得交代两条边界。一,我没有 Astra 的访问权限,它实际反问多不多、卡不卡,我一篇都没实测过,文中所有「Astra 会怎样」都是官方口径,你当说明书看。二,96 万字符的矛盾排查我没做,这篇审的是词表和条款覆盖,不是全量体检。

审计完最大的感受反而落在官方身上。它出这份指南的姿态挺少见:不吹自家模型多听话,反手先列了五条它会给你添的麻烦,连解法一起给。这种先说毛病的文档,比跑分表有用,也比跑分表少见。

你的 AGENTS.md 上次更新是什么时候?官方这份指南五条行为差异,逐条对一遍你的手册,缺几条?评论区报个数,缺得最多的那三条我猜大家都一样:反问阈值、委派规则、测试预算。