← 返回博客

如何编写好的 program.md:AI 代理指令实践指南

· Save Team
markdownaiprogram-mdautoresearchkarpathyguidebest-practices

Andrej Karpathy 的 autoresearch 证明了一个写得好的 Markdown 文件可以指导 AI 代理在一夜间做出真正的科学发现。但并非所有 program.md 文件都是平等的。

你的 Markdown 指令质量直接决定 AI 代理输出的质量。模糊的 program.md 产生随机、无方向的实验。精确的指令则产生有重点的、复合改进的结果。

以下是如何编写一个真正有效的 program.md

好的 program.md 结构

每个有效的 program.md 都需要五个部分,无论你是在做 ML 研究还是任何其他代理导向的工作。

1. 上下文:代理需要知道什么?

代理从零开始,对你的项目毫无了解。你的第一项工作是给它足够的上下文来做出明智的决策。

应包含的内容:

  • 项目做什么
  • 代码库的样子
  • 关键文件及其用途
  • 特定领域的术语
  • 当前状态和已知问题

应跳过的内容:

  • LLM 已经知道的显而易见的信息
  • 它可以从代码中读取的实现细节
  • 不影响当前决策的历史

2. 目标:代理应该优化什么?

这是最关键的部分。代理需要一个清晰、可测量的目标。

在 autoresearch 中,目标很简单:减少 val_bpb(验证每字节比特数)。代理可以在每次 5 分钟的训练运行后测量这个值。

对于你自己的项目,用代理可以评估的术语定义成功:

  • “将页面加载时间减少到 2 秒以下”
  • “将测试覆盖率提高到 80% 以上”
  • “将打包大小减少至少 15%”

“让代码变得更好”这样模糊的目标会产生模糊的结果。可测量的目标会产生有重点的改进。

3. 约束:代理永远不应该做什么?

约束和目标同样重要。没有约束,代理可能会找到你不想要的创造性解决方案——比如删除所有测试来”改进”构建速度。

常见约束:

  • 不修改测试文件或评估代码
  • 不改变公共 API
  • 不引入新依赖
  • 不超过内存预算
  • 保持代码可读和可维护

在 autoresearch 中,关键约束是只能修改 train.py。数据管道、评估代码和测试集是锁定的。这防止代理对指标做手脚。

4. 策略:代理应该如何处理问题?

这是你的领域专业知识发光的地方。你知道代理不知道的事情——哪些方向有前途,哪些是死胡同。

好的策略指令:

  • “在架构改变之前先调整超参数”
  • “专注于注意力机制——当前实现可能不够最优”
  • “先尝试正则化技术:dropout、权重衰减、层归一化”
  • “避免将训练时间增加超过 10% 的改变”

糟糕的策略指令:

  • “尝试一切”(太模糊)
  • “将学习率改为 0.001”(太具体——你在微管理)

甜蜜点是给代理在富有成效的边界内探索的方向性指导。

5. 评估:代理如何判断成功?

代理需要知道如何测量其改变是否有所帮助。在 autoresearch 中,这内置于循环中:如果 val_bpb 改进了,就保留改变;如果没有,就回退。

对于其他情境,定义你的评估标准:

  • 哪些指标重要?
  • 什么阈值算作改进?
  • 代理应该如何处理模糊的结果?
  • 代理什么时候应该停下来并汇报?

常见错误

过于模糊

“让模型变得更好”没有给代理任何方向。要具体说明”更好”意味着什么,如何衡量它,以及先尝试哪些方法。

过于具体

“将第 47 行改为使用学习率 3e-4”违背了 agentic 工程的目的。你应该设定方向,而不是规定实现细节。让代理去探索。

忘记约束

没有约束,代理会找阻力最小的路径——这往往不是你想要的。被告知”减少训练时间”的代理可能会跳过一半的训练数据,如果你没有另外说明的话。

不迭代

你的第一个 program.md 不会是完美的。观察代理的行为,看看它哪里出错,并更新你的指令。最好的 program.md 文件经过数十次迭代演化而来。

迭代循环

编写 program.md 不是一次性的过程,而是一个循环:

  1. 编写初始 program.md
  2. 运行代理
  3. 审查代理所做的事情
  4. 更新指令,基于什么有效、什么没有
  5. 重复

每次迭代都使你的指令更加精确。经过几轮之后,你将拥有一个能持续产生好结果的 program.md

这是 agentic 工程的核心技能:不是写代码,而是通过迭代编写越来越有效的代理指令。

构建你的参考库

最好的 program.md 文件不是凭空而来的。它们建立在对领域的深刻了解之上——文档、论文、最佳实践和示例。

当你在网络上遇到有用的参考材料时,将其保存为 Markdown。然后在编写 program.md 时,你可以引入相关上下文,引用特定技术,并给代理提供所需的背景知识。

从 autoresearch 中获得最佳结果的研究人员不只是优秀的写手。他们是拥有良好组织参考材料的领域专家,能够将其综合成清晰的代理指令。


Save 将任何网页转换为干净的 Markdown——完美适合构建驱动有效 program.md 文件的参考库。免费试用 Save