Agentic Harness 怎么挑框架:先记 ROOTS,别先记商标

选 Agent 框架这件事,很容易变成「追新 SDK」。OpenAI、Anthropic、Google、微软每家都发一套;LangGraph、CrewAI、Mastra 也各有死忠。0s & 1s 在 CodeToDeploy 那篇 AI Agents (07): Agentic Harness 里换了个切法:先别比 logo,先把 harness 拆成几层——同一套第一性原理跑通了,再选哪家「壳」反而轻松。

文里给的定义很直白:Agentic harness = 包在 LLM 外面的那层软件基础设施,让它能在真实世界里动手,同时把过程监控、记日志。作者还把核心缩成一句:

Agentic AI ≈ Generative AI(LLM)+ Tools + Auth

其余编排、RAG、观测、云生态,都是往这层脚手架上叠的抽象。

ROOTS 五层 harness 示意

图:Orchestration / Tools / RAG / Observability / Cloud·Skills(ROOTS)

ROOTS:五层一起看,而不是只盯编排

作者用 ROOTS 记五件套(Skills 单独另文展开,这里并进生态层来理解):

字母层你真正买到的能力
RRAG非结构化资产怎么 load→chunk→embed→retrieve→rerank
OObservability追踪、成本、失败率、护栏违规、评测
OOrchestration工作流图、动态规划、HITL、检查点、失败恢复
TTools内部工具 + 外部 API / MCP
SSkills / Cloud技能组合,以及云与模型生态的「隐形行李」

原则很实用:先搞懂每层要解决什么失败模式,再挑框架。功能清单大家越来越齐,真正分出胜负的,往往是团队栈熟悉度,以及你愿不愿意被某朵云「钩住」。

编排层:没有妥协空间的那一层

作者把 Orchestration 标成最重要的一层。常见形态包括线性/分支、串行/并行、路由、中心化 vs 去中心化。两条路线要同时会:

提前设计的工作流——Agent、任务、工具、技能、HITL 检查点都写死,可预测、可维护,适合规整业务。

动态工作流——用户一句话要你「从 Drive 拉 PDF、写进日历和待办、再给 Jacob 发邮件」,没法预先画图,框架必须能当场拆任务、规划阶段、执行、校验再回传。

多 Agent 协作会碰到 Google 推的 A2A;生产里更要命的是 HITL + Checkpoint + 失败恢复。暂停等人审批前,要把状态和上下文落库、发 UUID、给前端半截响应;恢复时再按检查点续跑。写前日志(WAL)那一套,听起来土,却是「服务器一崩整条链路从 UI 重来」的解毒剂。LangGraph 一类用中心 state 对象、节点读写、并行时防竞态——这就是「记忆」在工程里的真面目,不是聊天窗口里那点滚动历史。

工具层:内部工具 vs MCP

内部工具:自家 Postgres、通知、文件系统。文里用 CrewAI 的 NL2SQL 举例——给只读连接串,让 Agent 按需查表,而不是把整库预取塞进提示词。

外部工具分两类:直接打 API(比如搜索);以及 MCP——工具挂在别人的服务器上,运行时发现注册表,再由模型挑要用哪一个。一百个工具里你可能只要 europe_weather_paid_v2 这一条,MCP 的价值就是「动态发现 + 按需选用」,不是一次性把 schema 全塞进上下文。

RAG、观测、云生态:三件常被低估的事

RAG 管的是组织里非结构化静态资产的语义检索,流水线步骤作者列得很全:加载、解析、切块、嵌入、存储、检索、重排、再喂给 LLM。结构化数据走库与工具;非结构化才是 RAG 的主场——别用一套向量检索硬扛所有「权威口径」问题(那是另一类知识架构的话题)。

观测层在框架把细节藏起来之后反而更关键:Agent 间通信、对 LLM 的调用、内部/MCP 工具、延迟、失败率、护栏违规、按阶段的 token 与成本、CPU 时间。看不见就谈不上迭代。

云与模型生态是「免费 SDK」背后的钩子:Google ADK 贴 Gemini/GCP,微软贴 .NET/Azure,OpenAI SDK 贴自家生态,Bedrock Agents 贴 AWS。作者转述一位前辈的话很中肯——功能都差不多时,最终看内部技术栈和团队对生态的熟悉度。开源侧他点名 LangGraph(+ LangSmith)、CrewAI(可用 OTel/LangSmith 躲云锁定)、Mastra(偏 Next.js/Vercel 一类栈)作为对照选项。

选型时别问「谁最火」,问这三句

  1. 我的流程是预定义为主,还是高度 idiosyncratic、必须动态规划?
  2. 工具是以内网 API 为主,还是大量依赖 MCP / 第三方注册表?
  3. 观测和状态能不能迁走——还是一装框架就绑死某家云仪表盘?

同一批需求下,Mastra 适合已经活在 Vercel/TS 世界的人;强状态机 + HITL 往往还是图模型更顺手;只想快速演示「研究员 + 写手 + 评论家」人设,CrewAI 的角色抽象最快。没有唯一正确答案——ROOTS 的用处,是让你在面试和架构评审里,把「我们选了某某」说成「我们在这五层分别买了什么合同」。

原文偏长文导读,不是跑分榜。落地时用你们自己的失败案例去对表:编排有没有检查点、工具有没有鉴权边界、观测能不能按工作流算账。这些对齐了,换框架才不会变成换商标游戏。

Logo

更多推荐