指令与工具设计
把依赖上下文的取舍交给模型判断,把确定性的校验和执行交给程序保证。指令说明目标、依据与边界;工具提供行动能力,并返回足以决定下一步的结果。
通用的组织、表达与修改要求见 document-writing 的 references/文档写作原则.md,通过该 Skill 的入口定位。本文讨论模型与程序的分工、指令约束和工具反馈。
指令设计
信息取舍与约束程度
先检查模型作决定时能看到哪些信息,再补充任务特有的背景、经验和约定。指导方式取决于任务需要保留多少判断空间,以及执行是否依赖固定顺序或参数:
| 任务情况 | 适合的指导方式 |
|---|---|
| 多种做法都合理,依赖具体上下文 | 说明目标、判断依据和必要边界 |
| 有成熟做法,但允许调整 | 给出推荐步骤或示例,并说明适用条件 |
| 顺序或参数直接影响结果 | 写明前置条件、操作顺序和关键参数 |
| 操作稳定、重复且确定,需要一致执行 | 考虑用脚本承载 |
例如,润色说明可以交代意图和风格;漏掉前置步骤就会失败的操作,则需要写清依赖关系。
关键约束与判断空间
- 正向表达预期行为:说明该做什么、有哪些做法及选择依据。否定描述用于界定必要边界,让 Agent 同时知道可行的行动方向。
- 把强约束留给必要要求:围绕目标、必要边界和完成依据设置强约束,为依赖上下文的选择保留空间。过多强硬条款会淹没重点,不能靠增加条款数量来保证遵循。
- 用举证代替穷举禁止条款:对需要判断适用性的原则,说明默认做法,并要求不采用时给出理由。这样可以检查偏离是否有依据,无须逐一列出禁止跳过的借口。
工具设计
用途、输入与粒度
- 用途与边界清楚:说明工具能做什么、输入前提和副作用,让相近工具的区别容易识别。
- 程序承担确定性约束:身份、权限、参数校验和可明确编码的业务规则由程序保证。程序已知的信息不要求模型重复填写。
- 按任务确定粒度:经常一起完成且需要原子性的动作可以合并,不为减少调用而模糊权限、状态和恢复方式。
结果反馈与重复调用
只返回当前判断和后续行动所需的数据、状态与标识。大量信息按需查询或分页获取;结果截断时说明范围与续取方式,避免 Agent 把部分结果当成全部。错误反馈应说明恢复方向。
写入超时不等于失败。Agent 应先核对状态,再决定是否重试;工具需要提供相应的状态查询能力。幂等是指同一逻辑操作重复调用时不重复产生效果,需要由后端实现;重试时复用该操作的标识。
验证设计
用实际任务检查指令是否引导了预期行为、工具是否支持完成目标,以及原本正确的行为是否保留。同时检查整个任务的耗时、费用和错误副作用,不只比较措辞、接口形式或调用次数。具体方法见测试与迭代。