← rugoi.com 原始文件 ↓

如何写一份 Agent 能照着执行的指令文件

用途:把「我希望它怎么做」写成「它能照着判的条件」。这两者的差距,就是规则写了却不生效的全部原因。

覆盖:AGENTS.md、系统提示、自定义指令、链头文件、技能包说明书。

产出:一份能被判断、能被执行的指令文件。

拿到就能跑:先写「什么时候不适用」,再写「怎么做」。 顺序反了,规则会被套用到所有场景。


触发的变异问法


什么时候不要用这份文件


执行步骤

第一步 · 先分清三样东西

大多数人写不好指令文件,是因为把三类东西混在一份里:

类型例子写法
偏好称呼、语气、不要用感叹号一句话,不加解释
规则什么可以做、什么绝对不行每条带判据
流程某类事按什么顺序做单独的流程文件,用指针连

混写的典型后果:偏好被当成规则执行(「不喜欢啰嗦」被理解成「删掉所有解释」),流程被写成规则(「每次都要先备份」变成了绝对命令,连临时文件也要备份)。

输出:三类各自分到哪个文件。

第二步 · 每条规则写成能判真假的句子

判据只有一句:这句话能不能回答「做到了没有」。

同一个意思,能不能写成可判的形式,决定了它会不会被执行。

输出:每条规则后面能打勾或打叉。

第三步 · 每条规则后面写「什么时候不适用」

没有例外条款的规则,会被套用到所有场景——包括你说这句话时根本没想到的场景。

规则:删文件前先备份
不适用:临时文件、构建产物、可再生的缓存

这一段不是补充说明,是规则的一部分。省略它,Agent 要么机械执行(备份一堆垃圾),要么自行判断(判断往往和你不一样)。

输出:每条规则至少一个不适用场景。

第四步 · 给每条规则一个出口

做不到的时候怎么办?三种出口,选一个写清楚:

⛔ 不写出口,Agent 会自己编一个——通常是「默默按最省事的方式做」。

输出:每条规则的失败动作。

第五步 · 控制总量,细节用指针

指令文件超过一屏(约 800 字),执行率就会下降。不是模型读不懂,是重点被稀释了。

拆法:

输出:一屏以内,其余靠指针。


出问题怎么办

现象最可能的原因处理
规则写了但不照做太抽象,无法判断做到没有改成可判句
越写越长,还是不管用背景、规则、流程混在一起拆成三类,各归其位
每条都遵守,结果却不对缺优先级——两条规则冲突时听谁的写明「冲突时以 X 为准」
换个模型就不灵规则里用了模型不懂的行话换成具体动作,不用行业词
它自己决定跳过了某条没有出口,它替你选了补上失败动作
遵守得过死,什么都要问出口写成了「停住」,且没给判断条件给「什么情况下可以自行处理」
加了新规则,旧行为变了规则之间有隐含冲突逐条过一遍,找矛盾

倒数第三条是常见误区:出口写「停住」不等于安全——如果每条都写停住,Agent 会变成一个什么都不敢做的执行器。


输出规范

人读

指令文件:<文件名> · 长度 <N> 字
分三类:偏好 <n> 条 / 规则 <n> 条 / 流程指针 <n> 条
每条规则:可判句 ☑ / 不适用场景 ☑ / 出口 ☑
优先级:冲突时以 <哪条> 为准
未覆盖:<这份文件不管什么>

机器读

file: <path>
size_words: n
sections: {preference: n, rule: n, flow_pointer: n}
rules: [{text, checkable: bool, not_for: [...], on_fail: stop|degrade|error}]
priority: <文本>
out_of_scope: <文本>

checkable 为 false 的规则,会在第一次执行时被跳过——写的时候就要拦住,不要等它不生效再回头找。

一句话版

N 条规则,全部可判、都带不适用与出口;超出的细节用 3 条指针连出去。


常见错误


最后核对

2026-11-06。指令文件的形式随产品不同(AGENTS.md / 系统提示 / 自定义指令),但「可判 + 不适用 + 出口」这三条判据与平台无关。与所执行系统的既定标准冲突时,以那个系统的标准为准。

Markdown 原文 · 更新 2026-11-06
write-agent-instruction · v1 · sop