系列:用经典理论指导 Agent 实践(第二篇) 上一篇:双轮审查:召回和精确为什么不能兼得
TL;DR: 审查 prompt 从 317 行砍到 135 行(-58%),审查质量反升 29%。删掉的不是流程步骤,是模型自己能推导出来的冗余内容。留下的才是策略基因——不可替代的约束、反面例子和语气锁。
上一篇聊了双轮审查:把一个审查 agent 拆成"找全"和"找准"两轮,有效发现率从 75% 升到 92%。但留了一个尾巴——“找全"那一轮报什么、不报什么,仍然受 prompt 措辞影响。
这一篇不聊审查架构,聊 prompt 本身。具体来说:prompt 里该写什么,不该写什么。
我原来以为 prompt 写得越细越安全——把每个步骤说清楚,每个格式给个完整示例,模型就不会犯错。后来发现,我想错了。
很多内容是模型自己能推导出来的冗余。留着它们,反而稀释了注意力。真正需要写的,是模型无法自行推导的约束。
删掉可推导冗余,审查质量反升 29%。这让我意识到:写 prompt 的关键不是"多写”,而是"写什么"。
理论桥梁
先说明白:这不是学术论证,是解读视角。

Wang 等人 2026 年在 arXiv 发表的论文提出"策略基因"概念:把 procedural skills 压缩成更小、更稳定、可复用的策略单元,用于 test-time evolution 中的经验积累和策略优化。[1]
我读这篇论文时,脑中浮现出 Holland 在半个世纪前提出的"建筑模块"概念:遗传算法通过交叉重组短小、可组合、反复有用的小片段,逐步拼装出更好方案。[2] 结构上的暗合让我意识到:Wang 等人工作中的"策略基因",和 Holland 口中的"建筑模块",都在问同一个问题——什么是不可再分解的基本单元?
这篇文章用 Holland 的"建筑模块"作为解读视角,来理解 Wang 等人的"策略基因"如何映射到我的 prompt 实验里。两个相差半个世纪的研究,在结构层面暗合,给了我们一个统一的读法来思考 prompt 该写什么、该删什么。
先看结果
审查系统有一个核心审查文件,所有审查行为都由它驱动。
做了一轮精炼。317 行砍到 135 行,-58%。
效果不但没降,反而变好了。三版 prompt 做对照实验,同一个真实代码审查任务,两组人各自独立打分(第二组完全不知道哪个版本是哪个):
| 版本 | 行数 | 得分 | vs 对照组 |
|---|---|---|---|
| 约束 + 反面例子(精炼版,最终采用) | 135 | 7.70 | +29% |
| 只留约束(中间版,被否决) | 215 | 6.05 | +2% |
| Master v0.8.0(对照组) | 317 | 5.95 | — |

需要强调:这是一个在特定审查任务上的有限观察,不是对所有 prompt 工程问题的广泛统计结论。
精炼不是一步到位的。分两步走。
第一步:把一个大文件拆成 6 个小文件,按需加载。550 行 → 317 行(-42%)。这是纯提取,没有信息损失——内容原封不动,只是换了组织方式。
第二步:删掉可推导的内容。步骤描述(“先读文件,再评价,然后输出”)、输出格式模板(JSON 结构示例)、正面例子——全部删掉。只保留不可推导的内容:表格、反面例子、警告、语气锁。317 行 → 135 行(-58%)。
两步加在一起:550 行 → 135 行,-75%。审查质量 +29%。花的 token 也降了 58%。精炼后的内容拆成了 6 个文件,按需加载。
策略基因:prompt 里的基本单元
Holland 1975 年在《自然与人工系统中的适应》里提出"建筑模块"概念:复杂解不是从零搭起来的,而是通过交叉重组短小、可组合、反复有用的小片段逐步拼装而成。这些模块是解的基本单元,删掉它们,解就不再是那个解。
Wang 等人提出 strategy genes:把 procedural skills 中真正能控制行为的经验,压缩成更紧凑、更结构化、更可复用的策略单元。它重视的不是文档完整性,而是 signal density、适用边界和失败提醒。
EvoMap 的 Gene 格式把这层思想进一步工程化:一个 Gene 是可复用的 strategy template,带有触发信号、约束和验证方式。[3] 它不是一整篇说明书,而是一段能被再次调用、再次组合的行动模板。
两个概念相隔半个世纪,结构上暗合:都在问"什么是不可再分解的基本单元?"
借这两层思路看 prompt,我采用了一个更具体的判断标准:prompt 里的策略基因,是模型不能从上下文自行推导、但会改变输出质量的控制信息。 比如约束规则、反面例子、语气锁。
反过来,prompt 里的冗余内容,就是模型已经能从任务和上下文推导出来的内容。比如"先读文件,再评价,然后输出",这是模型的基本能力,不需要教。完整 JSON 模板也类似:模型见过无数 JSON,给字段名通常就知道结构。
删冗余内容 = 保留策略基因 = 让模型的注意力集中在真正需要指导的地方。
这不是严格的理论定理,只是一个用来判断"该写什么、该删什么"的思维框架。借用 Holland 的"建筑模块"、Wang 等人的 strategy genes,以及 EvoMap 的 Gene 格式,可以得到一个判断 prompt 基本单元的思路。
老师、学生、和步骤描述

打比方。老师教学生做题,不需要把每个步骤都写出来。“已知条件是 A 和 B,求证 C。注意别犯某个常见错误。“够了。学生自己推导步骤。
写太多了,学生反而机械照搬,不动脑子。
审查 prompt 也一样。“先读 diff,再分析每个文件,然后按严重程度分级,最后输出 JSON。“这些步骤描述是在教模型做它本来就会的事——这些不是策略基因,是冗余内容。模型读到这些,不是"理解了”,是"照着走”。注意力被分配到这些可推导的内容上,真正需要关注的策略基因反而被稀释了。
反面例子为什么是策略基因
实验里有一个关键发现:删正面例子不影响质量,删反面例子会降低质量。
为什么?

正面例子告诉模型"这样做是对的”。模型拿到正面例子,倾向于照搬。照搬限制了推理——模型不再思考"什么是对的”,而是"怎么对齐这个例子"。正面例子不是策略基因。
反面例子告诉模型"这样做会出错"。它划定的是边界,不是路径。模型知道边界在哪,路径自己找。反面例子是策略基因——它定义了一个不可再替代的约束:从这个方向走会出错。
正面例子只是告诉模型"什么是对的",但正确的表达方式太多了。反面例子告诉模型"从哪一步开始会出错",它补的是边界——边界是策略基因,路径是模型自己推出来的。
语气锁和 AVOID 警告
两个更具体的策略基因例子。
语气锁。审查规则里有这样的写法:
你必须在审查输出中包含严重程度分级
“必须"比"建议"强得多。这种语气强度是模型无法自行推导的——它不知道哪个步骤是强制的、哪个是可选的。语气锁就是在告诉模型:这条规则没有商量余地。
还有一类警告。比如:
避免在审查中透露轮次计数
模型不知道这个约束。它不会自己推导出"不应该在审查 prompt 里泄露元信息”。这是一种隐性知识,必须显式写入。
语气锁和警告都是策略基因。它们是模型无法自行推导的约束——删掉它们,模型的行为会立刻变差。
怎么想到的
第一篇做完双轮审查后,prompt 变长了。我当时想,信息更完整了,应该会更安全。直觉觉得"写得越细越好"。
但数据告诉我一个矛盾:维度更多应该发现更多问题,但 prompt 更长可能稀释注意力。谁赢?
我带着这个问题重新审视那个核心审查文件。317 行。通读一遍,发现里面有大量"描述性"内容。
步骤说明:“先读文件,再评价,然后输出。“模型需要这个吗?不需要。读文件、评价、输出是模型的基本能力。
输出格式模板:完整的 JSON 结构示例。模型需要这个吗?不需要。给几个字段名就够了。
正面例子:“好的审查输出长这样。“模型需要这个吗?不需要。模型见过足够多的好例子。
这些都是模型自己能推导出来的。它们是冗余内容,不是策略基因。
第一轮实验:只留策略基因
做了第一个实验版本:只保留约束,删掉所有描述、格式模板、正面例子、反面例子。215 行。
评分结果:6.05。比对照组(5.95)好一点,+2%。我没发版。
问题出在哪?删太多了。约束是策略基因,但不是唯一的策略基因。反面例子也是策略基因。这个版本把反面例子一起删了,模型失去了边界信息——边界信息是不可替代的。
第二轮实验:约束 + 反面例子
做了第二个实验版本:保留约束,加回反面例子。但这不是简单地在 215 行版本上加内容,而是同时重写了约束本身——合并冗余条目、缩短表述。最终 135 行。
所以 135 行不是“加回反面例子之后自然变短”,而是两个动作叠加的结果:反面例子加回来了,约束措辞被大幅压缩了。
评分结果:7.70。比对照组 +29%。比只留约束也好得多(+27%)。
关键发现:正面例子是冗余内容,反面例子是策略基因。
正面例子让模型照搬,限制了推理。删掉正面例子,模型反而更自由地思考"什么是对的”。反面例子告诉模型边界在哪,不限制路径。删掉反面例子,模型不知道坑在哪,容易掉进去——反面例子定义了一个不可替代的边界约束。
方法论感悟
这不是"少就是多"的鸡汤。
“少就是多"没有操作性——少什么?少到什么程度?
有操作性的说法是:去掉可推导的冗余内容,只保留不可替代的策略基因。
怎么判断一个内容是策略基因还是冗余内容?删掉它,看输出变化。删掉策略基因,输出变差。删掉冗余内容,输出不变甚至变好。
这个判断方法是一个删除测试:通过验证内容对输出的影响,来判断它是不是策略基因。策略基因的定义不在于内容本身,在于它对输出的影响——删掉它,解就不再是那个解。
还有一个维度的问题
策略基因解决的是"prompt 里写什么"的问题。删掉冗余内容,只留策略基因,审查质量升了 29%。
但还有一个问题没回答:审查的维度够不够?
“找全"那一轮报什么不报什么,不仅受 prompt 措辞影响,还受维度覆盖影响。如果审查维度只覆盖了正确性和风格,那安全问题、性能问题、可维护性问题就系统性地漏掉了。这不是策略基因能解决的——策略基因再精,如果维度缺失,模型可能还是不知道该看哪里。
下一篇验证维度覆盖对发现率的影响。
参考
- Wang, Y., et al. (2026). “From Procedural Skills to Strategy Genes: Towards Experience-Driven Test-Time Evolution.” arXiv:2604.15097. https://arxiv.org/abs/2604.15097
- Holland, J. H. (1975). Adaptation in Natural and Artificial Systems. University of Michigan Press. https://mitpress.mit.edu/9780262581116/adaptation-in-natural-and-artificial-systems/
- EvoMap. “GEP Protocol.” https://evomap.ai/wiki/16-gep-protocol
