我终于搞懂了 Agent Spec:它其实就是 Agent 的“标准设计图”
最近看了 oracle/agent-spec 这个项目。
一开始我最迷糊的是:
Agent Spec 到底是什么?是 Agent 框架?是 Harness?还是一种配置文件?
看完项目 README 和官方文档后,我现在最简单的理解是:
Agent Spec = 用统一格式描述一个 Agent“应该长什么样”的标准设计语言。
它本身不是 Agent,不是 Harness,也不是运行时。
1. 先用“房屋设计图”理解
假设我们要做一个“财务 Agent”。
它可能需要:
模型:GPT / DeepSeek
System Prompt:你是一名财务助手
Tools:查账、查发票、生成报表
输入:用户问题
流程:先查数据,再分析,再输出
如果直接使用不同 Agent 框架,每家的写法都不一样:
LangGraph 有 LangGraph 的写法
AutoGen 有 AutoGen 的写法
CrewAI 有 CrewAI 的写法
Agent Spec 想做的事情就是:
先用一套统一格式,把“这个 Agent 是什么样”描述清楚。
至于最后由哪个框架运行,再交给 Runtime Adapter 去转换。
可以这样理解:
Agent Spec
= Agent 的标准设计图
LangGraph / AutoGen / CrewAI
= 不同施工队
Runtime Adapter
= 把标准设计图翻译成施工队能执行的形式
2. Agent Spec 主要描述什么?
项目里最核心的两类可运行组件是:
Agent
Flow
Agent
就是智能体本身,可以描述:
Agent 名称
模型配置
System Prompt
Tools
输入输出
Flow
就是结构化工作流程,例如:
查询客户
↓
检查合同
↓
生成报告
↓
人工确认
还可以把 Agent、Flow 继续组合成更复杂的多 Agent 系统。
3. Agent Spec 最重要的价值
我觉得最核心的一句话是:
把“Agent 怎么设计”和“Agent 用什么框架运行”分开。
以前可能是:
Agent设计
+
LangGraph代码
=
绑在一起
换成 AutoGen,可能需要重新适配。
Agent Spec 希望变成:
Agent Spec
↓
统一描述 Agent
↓
Runtime Adapter
↓
LangGraph / AutoGen / CrewAI
这样 Agent 的定义就更容易:
迁移
复用
保存
比较
测试
项目官方甚至拿 ONNX 做类比:
ONNX
= 让机器学习模型更容易跨框架表示
Agent Spec
= 让 Agent 更容易跨框架表示
这个比喻非常好理解。
4. Agent Spec 最终长什么样?
它可以通过 SDK 创建,也可以序列化成:
JSON
YAML
例如下面只是为了帮助理解:
name: 财务助手
model:
provider: openai
model_id: xxx
system_prompt: |
你是一名财务助手。
tools:
- query_invoice
- query_payment
它表达的是:
“这个 Agent 应该这样配置。”
不是:
“Agent Spec 自己马上把 Agent 跑起来。”
真正执行还需要 Runtime。
5. Agent Spec 和 Harness 的区别
Agent Spec
回答:
这个 Agent 是什么样的?
例如:
用什么模型
有什么 Prompt
有什么 Tool
流程怎么组织
Harness / Runtime
回答:
这个 Agent 怎么真正跑起来?
例如:
调用模型
执行 Tool
维护 Session
管理 Context
运行 Agent Loop
所以:
Agent Spec
= 设计图
Harness / Runtime
= 真正让 Agent 跑起来的发动机
项目文档也明确说明:执行 Agent Spec 配置需要 Runtime Adapter,把 Agent Spec 转成具体 Agent 框架能执行的形式。
6. Agent Spec 和 MCP 的区别
MCP
主要解决:
Agent 怎么标准化连接外部 Tool 和资源。
例如:
Agent
↓
MCP
↓
OA MCP Server
↓
查询待办 Tool
Agent Spec
主要解决:
整个 Agent 应该怎么描述。
例如:
模型是谁
Prompt 是什么
有哪些 Tool
Agent 之间怎么组合
Workflow 怎么设计
所以:
MCP
= 怎么连接外部能力
Agent Spec
= 怎么描述整个 Agent
它们不是竞争关系,可以一起使用。
7. 为什么不直接在 Harness 里配置?
当然可以。
如果你:
只用一个 Harness
只在一个系统里运行
也不准备迁移
直接配置完全没问题。
Agent Spec 更适合:
同一个 Agent 想在不同框架运行
想把 Agent 定义保存成统一格式
想在不同团队之间交换 Agent
想做 Agent 平台和标准化管理
所以它不是:
“没有 Agent Spec 就做不了 Agent。”
而是:
“能不能把 Agent 的定义标准化,不要和某个框架彻底绑死。”
最后总结
我现在把 Agent Spec 理解成:
Agent Spec
= Agent 的标准设计图 / 配置语言
它可以描述:
模型
Prompt
Tool
输入输出
Agent
Flow
多 Agent 组合
但它不负责真正运行。
真正执行 Agent 的还是:
Runtime / Harness / Agent Framework
最后只记一句:
Agent Spec 负责“定义 Agent”,Harness 负责“运行 Agent”,MCP 负责“连接外部 Tool”。
这三个概念分开以后,Agent Spec 就不难理解了。
浙公网安备 33010602011771号