Agent Spec:如何用自然语言定义一个可执行系统
用文档整理任务解释 Agent Spec:如何写清目标、步骤、循环、约束、任务拆分和输出格式,以及何时停止执行。
Hex4C59 7 分钟阅读 更新于 2026-10-17
AI 与 Agent·原创·概念与设计
如果你会写简单的循环和条件判断,也写过提示词(Prompt),可以把 Agent Spec 理解为一份任务规范:它告诉 Agent 要完成什么、按什么步骤做、遇到什么情况重试,以及何时停止。
本文以整理文档为例,说明怎样把这些要求写进自然语言指令。这里的“可执行系统”指模型与运行程序按规范共同完成任务;规范本身不会自动执行工具、保存状态或强制停止循环。
先给结论 #
- Agent Spec 用自然语言约定任务如何执行。 它写清当前做到哪一步、下一步由什么条件决定,作用类似状态机中的状态与转移规则。状态机就是把“当前阶段”和“允许进入的下一阶段”明确列出来。
- 本文用 6 个方面检查规范是否完整: 目标(Goal)、工作流(Workflow)、迭代机制(Iteration)、约束规则(Rules)、拆解能力(Decomposition)与输出规范(Output Contract)。简单任务可以不需要循环或拆分,但应明确这一点。
- 循环需要终止条件。 只要求“继续改进”,却不说明何时停,Agent 就可能重复修改或推翻已有结果。轮数上限能限制执行次数,不能保证每轮判断都正确。
- 设计时可以沿用程序化思维: 拆出步骤,写明判断和循环条件,限制允许的操作,再规定输出结构。
Agent Spec 的 6 大核心组件 #
下面按六个方面检查一份 Agent Spec。每一项都应让执行者知道自己要做什么,也让调用方知道如何验收:
1. Goal(目标) #
定义任务"最终要达成什么"。 好的目标必须是可验证的,并且有明确的终态(done condition)。
常见的错误写法(太模糊):
帮我优化一下这些文档工程化的写法:
将输入的散乱文档集合,重构为结构清晰、命名规范统一的工程文档体系,包含功能说明、API 接口和部署指南三部分。2. Workflow(工作流) #
工作流定义任务“怎么做”:把处理过程排成有先后关系的步骤,前一步的结果供后一步使用。这样的连续处理也叫 pipeline(流水线)。
一个清晰的 workflow 可能长这样:
遍历 → 分析 → 修改 → 迭代 → 输出
每一步都要说明处理什么、做什么、产生什么结果。例如“分析”应交代分析哪些文档、找哪些问题,否则模型仍要猜测你的要求。
3. Loop / Iteration(迭代机制) #
这里要回答:系统是否需要根据上一步的结果,再做一次审查或修改?如果需要,就要把重复执行的规则写出来。
你必须在 Spec 中定义:
- 是否需要循环?
- 循环的条件是什么?
- 终止条件(收敛机制)是什么?
例如:
重复审查和优化文档内容,直到无法提出实质性改进或经过 3 轮优化为止。这条指令同时给出内容标准和次数上限:没有实质改进时提前结束,否则最多做三轮。运行程序还需记录轮数并执行停止规则,不能只依赖模型自行记住上限。
4. Rules / Constraints(约束规则) #
约束规则说明允许怎样处理任务,以及哪些操作不能做。主要包括:
- 风格约束:使用工程化语言,保持简洁。
- 行为约束:如果判断条件满足,直接执行无需反复确认。
- 安全约束:不允许覆盖未备份的原始数据。
5. Decomposition(拆解能力) #
输入较多或任务包含不同类型的工作时,可以拆成较小单元逐个处理。拆分后仍需说明各部分如何合并,否则局部修改可能互相冲突。规范需要交代:
- 如何拆任务
- 如何拆文档
- 如何拆模块
6. Output Contract(输出规范) #
如果后续程序要读取结果,就需要约定输出格式,例如 JSON 字段或 Markdown 结构。这就是 Output Contract:输出方和接收方共同遵守的格式要求。模型若返回一段自由文本,接收方可能找不到所需字段,因而无法继续处理。
假设任务是整理前面提到的文档,规范可以要求按功能说明、API 接口和部署指南分组;每组先检查命名,再修改内容,最后按约定目录输出。若某轮仍发现问题,但已达到三轮上限,就停止并报告未解决项。这样,目标、步骤、循环和输出便对应到同一个任务。
编排工作流的 4 步设计法 #
在编写 Agent Spec 时,可以遵循这个实用的"4步法":
Step 1:把任务"程序化" #
在写每一段描述时,先问自己:如果这是代码,我会怎么写?
当你脑海中有了类似这样的伪代码:
for file in folder:
optimize(file)
while can_improve:
refine(file)再把这段逻辑翻译成严谨的自然语言指令。
Step 2:加入"智能体能力" #
在流程中写明哪些情况需要判断,以及判断后分别执行什么:
- 增加判断条件(if)
- 控制循环流(while)
- 细化任务拆分(split)
- 引入思考空间(decide)
Step 3:加入约束(防止失控) #
补齐各种边界情况的防御:
- “当遇到未知术语时,不要自行编造,应保持原文标注。”
- “命名必须遵守驼峰规范。”
- “输出过程中不要产生解释性废话。”
Step 4:定义终止条件 #
补齐终止条件:达到验收标准时结束;仍未达到标准但已用完轮数或预算时,也要停止,并说明剩余问题。这里的“收敛”就是让重复执行最终停在一个可检查的结果上。
Agent Spec 通用模板 #
下面的模板汇总了前面六项要求。按任务填写,删去确实不需要的部分:
# Goal
<定义最终目标,必须有明确终态>
# Workflow
1. <可执行步骤 1>
2. <可执行步骤 2>
...
# Iteration
- 循环执行 <某步骤>
- 直到满足:
<明确的终止条件>
# Decomposition
- 当满足以下条件时拆分:
<拆分规则>
- 对拆分后的单元重复执行本流程
# Rules
- <约束准则 1>
- <约束准则 2>
# Naming / Structure (optional)
- <命名规范要求>
- <目录/输出结构规范>
# Output Contract
最终输出必须满足:
- <条件 1>
- <条件 2>
- <格式定义,如 JSON Schema>设计质量的 5 个评判标准 #
写完一个 Agent Spec 后,试着用这 5 个维度来评判它是否优秀:
- 可执行性(Executable):指令是不是悬在空中的?能不能直接按步骤跑下来(甚至是由人脑对照模拟执行)?
- 收敛性(Convergence):循环是否有可检查的停止条件和次数上限?停止时能否说明哪些要求已经满足、哪些仍未满足?
- 可控性(Controllability):它会不会乱改不该改的数据?有没有输出无法解析的内容?
- 可扩展性(Scalability):如果以后要加新规则,能不能在当前的流程结构中平滑插入?
- 可组合性(Composable):其他任务能否按约定提供输入并使用结果?如果要把它交给多 Agent 系统中的一个执行者,就需要清楚的输入要求和输出格式。
绝不能犯的错误 #
下面这些缺口会让执行过程难以控制:
- ❌ 没有终止条件:AI 可能会陷入自我推翻的死循环,一直改下去。
- ❌ 目标太模糊:执行者不知道什么结果算完成,调用方也难以验收。
- ❌ 全开放无约束:模型可能处理不该修改的内容,或返回后续程序无法使用的结果。
- ❌ 将一次性任务包装为 Agent:如果一次提示就能完成任务,也不需要保存进度或根据结果决定下一步,就没有必要增加循环和调度逻辑。
- ❌ 缺乏输出结构设计:导致下游系统无法对接使用。
进阶:你可以做得更远 #
把目标、判断、循环和验收写清楚后,你就在设计 Agent 的工作流程了。下面是本文用来区分工作内容的示意分层,并非通用能力评级:
| Level | 能力定位 |
|---|---|
| L1 | 普通问答使用 |
| L2 | Prompt Engineering (提示词工程师) |
| L3 | Agent Spec 设计 (当前层级) |
| L4 | Multi-Agent 架构 |
| L5 | Autonomous 甚至通用认知系统 |
下一步,可以把这份 Spec 转成 Python Agent 脚本,例如用 LangChain 或自行编写的运行循环来执行。先让程序实际记录进度、检查输出并限制轮数,再考虑把子任务交给多个 Agent。若要加入自动评分,也需要先说明评分依据:它检查的是格式、事实还是任务完成情况,以及评分结果会触发重试还是停止。
一起讨论
选中正文中的文字,可以针对这段内容发起讨论。
正在读取讨论…
在 GitHub 查看与管理讨论 ↗