编程 Agent 已经取得了长足进步,最佳实践也在迅速变化。随着模型能力增强,过去需要大量细致引导和辅助机制的工作,如今已经不再需要同样程度的扶持。
如果过去一年你一直在项目中使用 Codex 这类 Agent,那么为了引导模型产出理想结果,你很可能已经积累了大量指令。每次模型发布新版本,都值得重新审视这些指令背后的假设;到了 GPT-6 Astra,这件事比以往更加重要。
这些指令可以有多种形式:Skills、AGENTS.md,以及你为具体任务编写的提示词,都在影响模型完成工作的方式。
更好的 Skills
这些指令可以封装为 Skill。Skill 本质上是存储在 Markdown 文件中的提示词,也可以附带资源和脚本。通常,它最适合指导某个特定工作流,或帮助模型使用某些应用。
如今,很多人习惯在项目中打包大量 Skills。每个 Skill 都有名称和描述,这些信息会被加载到模型上下文中,让模型知道何时该使用它。但许多描述写得过长;当 Skills 数量过多时,Codex 就会开始缩短描述,以便容纳这些信息。结果是模型只能看到每段描述的一部分,更难判断应该选择哪个 Skill。
更糟的是,这些描述还可能互相矛盾,或过度强调 Skill 的使用时机,导致模型加载对当前任务没有实际帮助的指令。
创建 Skills 的一种常见方式,是使用 $skill-creator Skill。我们最近更新了它的指导内容,以减少实践中观察到的多种失败情况。
首先,Skill 描述应该在清楚说明适用时机的前提下,尽可能简短。
明确适用范围
不佳的描述:
创建并验证 Postgres 数据库模式迁移。在处理数据库、查询、模型或持久化相关工作时使用。
更好的描述:
创建并验证 Postgres 数据库模式迁移。在新增或修改迁移,或审查迁移的上线方案时使用。
这里,不佳的描述可能会让模型只要接触任何数据库相关工作就调用这个 Skill,即使任务根本不涉及数据库迁移。
其次,一个实用 Skill 的关键特征是渐进式披露(progressive disclosure)。读取 Skill 会占用上下文,使上下文压缩(compaction)更早发生,也可能引入与当前任务无关的指导。对于包含多个工作流的 Skill,应把根文档写成简洁的入口,只负责引导模型前往相应的辅助文档和脚本。提供足够的信息,让模型知道去哪里查找,同时避免强迫它阅读当下用不上的内容。
第三,很多 Skills 被写成了详尽的执行步骤表或固定操作流程。模型如今已经更擅长理解细微差别和歧义,因此,过去有效的过度具体的指导,现在反而可能妨碍结果。
仓库中的 Skills 也会指导其他贡献者的 Agent,而这些 Agent 可能使用不同模型。对 Sol 或 Luna 有帮助的指导,可能会对 GPT-6 Astra 形成过多约束。因此,留下指令时,也要考虑哪些模型会使用它们。
及时更新 AGENTS.md
只要模型在你的仓库中工作,AGENTS.md 就会适用。因此,你应该经常重新检查每条指令,问问自己:它是否仍然必要?
即使只是修复一个拼写错误,也要求模型在每次修改前阅读一摞文档或完整的仓库结构说明,显然过于繁重。GPT-6 Astra 能够自行判断需要阅读哪些内容,无需被要求在每次改动前都通读整个项目。
按任务需要阅读
不佳的指令:
每次编辑前,先阅读 architecture.md、database.md 和 deployment.md。
更好的指令:
涉及服务边界时查阅 architecture.md,修改数据库模式时查阅 database.md,准备部署时查阅 deployment.md。
要求模型在每次编辑前阅读文件,很容易消耗大量上下文并拖慢工作。指明相关文档仍然有帮助,前提是说明它们分别适用于什么情境。也别忘了及时更新文档本身。
过去的模型需要额外鼓励,才会运行测试并检查自己的工作。GPT-6 Astra 会主动完成这些步骤,因此,同样的指令可能导致不必要的测试。
GPT-6 Astra 做事细致,但在判断应该把任务推进到哪一步时,可能会更加谨慎。有时,它需要一点推动才能继续。你可以通过 AGENTS.md,明确授权它执行某个你已确认安全的工作流,例如本地测试套件:
本地测试使用可随时丢弃的测试数据和环境,无法访问生产环境。请运行测试,修复由本次请求的改动引起的失败,并重新运行受影响的测试,无需在每一步都请求批准。
决策边界
要特别留意你如何描述边界。如果先前的模型曾在未经许可的情况下替你执行操作,你可能已经加入了强硬措辞,要求它先征求同意。这种做法有其价值,但 GPT-6 Astra 是我们迄今对齐程度最高的模型,判断力也有明显提升;它只有在确认任务安全时才会执行,因此,你应当根据这一点调整对它的要求。
如果你过去设定边界,是为了防止其他模型做得过头,而现在已经切换到 GPT-6 Astra,就值得考虑更新这些措辞:Astra 可能会过于严格地理解它们,结果在你其实希望它继续推进的地方停下来。
持续推进任务
如果你已经习惯 GPT-5.6 Sol 接到请求后持续工作很长一段时间,那么 GPT-6 Astra 在判断何时停止时,可能显得更加谨慎。它可能完成第一版实现后就回来请你审阅,而此时仍有工作尚未完成。
因此,开始前先定义清楚“完成”的标准会很有帮助。你可能需要明确推动 Astra 一直做到任务彻底完成。如果任务还包括运行实现、检查结果以及修复发现的问题,就把这些步骤写进请求。要求“完成第一版实现后停下来等待审阅”,会让模型更早结束工作;因此,要确认这个审阅节点是否确实需要你作出决策。
如果你希望它在第一轮尝试后继续探索,就说明还希望探索哪些内容,以及应该在哪里停止。
新模型的到来,是清理旧有指令的好机会。但你无需手动检查所有内容:可以让 GPT-6 Astra 根据本文讨论的原则进行一次审查,然后去构建一些你以前不会尝试的东西!