编写提示词给AI代理
阅读者是一个有能力但缺乏你上下文关系的模型。请说明最终必须成立的状态及其原因,让模型自行规划路径:一个为模型可规划的工作而编写的路径,会被忠实执行——即使包含错误的步骤。包装形式不同(简报、交接、技能),但写作方式不变。
核心原则
应当包含什么。 一条“路线测试”:阅读者能否从任务及其训练中推导出这条信息? 无法查找到的事实、用户的约定、合同、硬性约束和完成标准无法通过测试,因此保留。可为可规划工作提供路径的信息则通过测试,因此剔除。一份标准清单描述的是最终状态;一份步骤清单则是一条路线。
自包含。 一个全新的会话只读取提示和磁盘内容。每条消息都携带当前完整的规则集,并就地应用更改——绝不使用“与之前相同,外加这些更改”——每个文档都重新陈述其所依赖的每条现行规则,绝不使用“与父级文档相同”。
正面陈述原因。 模型从原因中进行泛化,因此每条规则都应附带自己的原因(例如:“每个段落使用连续的单行,因为聊天框会将换行视为有意为之”)。描述目标行为;禁令会将禁止的行为带入上下文并使其更容易被访问,因此仅在作为硬性护栏时保留一条禁令,并搭配正面目标。施加压力的语言(必须、关键、大写字母)在当前模型上容易过度触发;请使用“当……时使用X”。
核心词汇,只在一个地方,无空指令。 模型已掌握的词汇(例如“收据”、“战争迷雾”、“紧密循环”)优于短语;用户自用的术语优于两者。每个含义只在一个地方出现。一句阅读者默认会遵守的指令几乎等同于什么都没说:删除整句话,而不是删除其中的部分词汇。
提示结构
- 意图 — 更大的目标、服务对象、输出内容所实现的功能;模型会用它来指导那些提示中未曾涉及的微观决策。
- 最终状态 — 完成时存在什么,具有什么属性,用户现在能做什么。必须是可检查的且详尽的:“每一个修改过的文件都已说明”比“生成一份更改列表”更能迫使模型完成繁琐工作。交付物的格式属于这里;它是一个属性,而非流程。
- 硬性约束 — 不可违反的规则:只读来源、预算、术语、出处。必须是用户明确陈述的约束,按原文陈述——绝不要自行添加效率上的默认值。
- 检查点 — 这里仍然是唯一需要描述流程的地方:何时需要暂停等待人类介入(例如破坏性或不可逆的操作、真正的范围变更、只有用户才有的输入),以及哪些内容不属于范围。
- 自由条款 — 允许重组结构和提出异议。遇到歧义时,做出常规判断并陈述假设;在答案可能避免后续问题时提问,例如可能导致实质性不同工作的解读,或难以撤销的选择。用户欢迎这些问题。在无人值守的运行中,问题成为一个裁决,并应用一个安全的默认值,工作继续进行。
- 凭证 — 每条简报中都应包含:在报告完成之前,针对本次会话的产物审核每项声明,并明确说明哪些内容未经核实;这几乎消除了虚假的状态报告。
只有当顺序确实重要时(如迁移、安全协议),或跳过一个步骤等同于失败时,才使用有序步骤列表;在这种情况下,使用一份可被阅读者复制并逐项勾选的清单比文字描述更好。
发送前检查
是否有任何编号流程可以转化为一句最终状态描述?是否每一行剩下的内容都是一个约束、检查点、验证规则或交付物规格?是否有任何句子让阅读者因为用户未陈述的原因而停止、放缓或缩小范围?阅读者是否需要参与过本次对话才能执行该提示?
分支参考
- 针对一个你可以建模的阅读者的单次消息(子代理调度、其他会话的提示、交接、给外部AI的消息) →
references/briefs.md - 无人值守运行的简报、其检查点备忘录和裁决、在一个即将关闭的窗口下的排序 →
references/autonomous-runs.md - 持久化文档(技能、CLAUDE.md、参考文档),以及何时将技能构建交给Anthropic的
skill-creator→references/skills-and-docs.md - 选择阅读者的模型或投入级别,或为Haiku或Fable而非Opus编写提示 →
references/models.md