AI 智能体工程工具箱:Harness 与 Loop 工程的实战工具指南
前言
在上一篇《Harness 工程与 Loop 工程》中,我们理清了概念:Harness 是静态脚手架(工具、上下文、安全门),Loop 是动态控制流(观察、思考、行动、停止)。这次来解决下一个问题:用什么工具落地?
以下工具均在 2024-2025 年活跃维护,按工程环节分类整理。
第一部分:Harness 工程工具——构建静态脚手架
1.1 智能体框架(一体化 Harness)
这些框架自带工具定义、上下文组装、安全门控,可以直接用来构建完整 agent。
Claude Agent SDK(Anthropic)
Anthropic 自己用来跑 Claude Code 的 SDK。工具定义、上下文组装、权限审批全部内置。Python 和 TypeScript 双版本。
- 仓库:github.com/anthropics/claude-agent-sdk-python
- 许可证:开源
- 适合:深度使用 Claude 生态的团队
OpenAI Agents SDK
Swarm 的继任者。内置工具调用、交接(handoff)、输入输出护栏(guardrails)、追踪。
- 仓库:github.com/openai/openai-agents-python
- 许可证:开源
- 适合:OpenAI 生态用户
Pydantic AI
最大亮点是类型安全的输出解析——用 Pydantic schema 定义工具返回值,模型输出自动校验和解析。工具定义 + 结构化输出 + 多 provider 支持。
- 仓库:github.com/pydantic/pydantic-ai
- 许可证:开源
- 适合:追求类型安全和结构化输出的团队
Hermes Agent(Nous Research)
我们正在用的这个。工具注册 + 技能加载 + 安全扫描 + 多平台网关。特色是技能系统——可复用的工作流打包成技能文档,跨会话加载。
- 仓库:github.com/NousResearch/hermes-agent
- 许可证:开源
- 适合:需要终端 + 消息平台多场景运行的 agent
1.2 输出解析与结构化
当框架自带的不够用,这些工具专门解决「模型输出不靠谱」的问题。
Instructor
结构化输出提取库。模型输出不符合 schema 时自动重试。支持 OpenAI、Anthropic、Mistral 等多 provider。
- 仓库:github.com/567-labs/instructor
- 许可证:开源
- 用法:
instructor.from_openai(client).chat.completions.create(response_model=MySchema)
BAML(BoundaryML)
用 DSL 定义 prompt + 工具 + 输出 schema 为类型化函数。解析器对畸形 JSON 有极强容错——LLM 输出少个括号、多了个逗号都能解析。
- 仓库:github.com/BoundaryML/baml
- 许可证:开源 + 商业
Outlines / Guidance / XGrammar
约束解码工具——在 token 级别保证输出匹配 schema。不是事后解析,而是生成时就约束。适合本地模型。
- Outlines:github.com/dottxt-ai/outlines
- Guidance:github.com/guidance-ai/guidance
- 许可证:开源
- 注意:需要控制推理引擎,API 模型通常不支持
1.3 安全门控
防止模型做危险的事——注入攻击、PII 泄露、越界输出。
NeMo Guardrails(NVIDIA)
最全面的安全门控框架。输入护栏、输出护栏、话题控制、越狱防护,用 Colang 语言定义规则。
- 仓库:github.com/NVIDIA/NeMo-Guardrails
- 许可证:开源
- 适合:需要细粒度对话控制的场景
Guardrails AI
验证器框架——PII 检测、毒性检测、schema 校验。有预置验证器 Hub。
- 仓库:github.com/guardrails-ai/guardrails
- 许可证:开源 + 商业
Llama Guard / Prompt Guard(Meta)
分类器模型,检测输入中的提示注入和输出中的有害内容。权重开源,可本地部署。
- 下载:huggingface.co/meta-llama
- 许可证:开源权重
Lakera Guard
商业 API 服务,专注于提示注入检测、越狱防护、PII 检测。无需自建模型。
- 网站:lakera.ai
- 许可证:商业
1.4 工具协议
MCP(Model Context Protocol)
Anthropic 提出的工具平面标准。不是工具本身,而是定义工具如何被 agent 发現和调用的协议。2025 年成为事实标准,Claude Code、Cursor、Hermes Agent 等都已支持。
- 网站:modelcontextprotocol.io
- 许可证:开源规范
第二部分:Loop 工程工具——管理动态控制流
2.1 Loop 框架
LangGraph
图结构的 agent loop 框架。把 agent 流程建模为状态机/有向图,每个节点是一个步骤,边是条件跳转。核心特性:
-
检查点(Checkpointer):持久化状态,支持时间旅行(回到任意历史状态)和崩溃恢复
-
人在环中(Human-in-the-loop):关键节点暂停等待人工确认
-
并行执行:支持扇出/扇入
-
仓库:github.com/langchain-ai/langgraph
-
许可证:开源 + 商业(LangGraph Platform)
LlamaIndex Workflows
事件驱动的 agent loop。上下文序列化、步骤检查点。比 LangGraph 轻量。
- 仓库:github.com/run-llama/llama_index
- 许可证:开源
Temporal
不是 AI 工具,但被越来越多 agent 系统用来做持久化执行。Loop 崩溃后自动恢复和重放。如果你需要工业级容错,Temporal 是最硬的选择。
- 网站:temporal.io
- 许可证:开源 + 商业
- 适合:长时间运行、不可中断的 agent 任务
2.2 上下文压缩与记忆
Letta(原 MemGPT)
核心思想是上下文分页——像操作系统的虚拟内存一样,把上下文分成在窗口内的「主存」和在外部的「交换区」。模型自己决定何时换入换出。
- 仓库:github.com/letta-ai/letta
- 许可证:开源 + 商业
- 适合:超长对话和需要持久记忆的 agent
Mem0
Agent 记忆层——自动从对话中提取关键信息、压缩、存储、跨会话检索。不是替换上下文,而是在上下文之外加一层长期记忆。
- 仓库:github.com/mem0ai/mem0
- 许可证:开源 + 商业
- 适合:需要跨会话记住用户偏好的 agent
2.3 Loop 优化与编译
DSPy
斯坦福出品。把 agent loop 编程为可优化的模块,自动调整 prompt 和工具调用策略。不是手写 prompt,而是声明式定义 pipeline,让 DSPy 自动编译优化。
- 仓库:github.com/stanfordnlp/dspy
- 许可证:开源
- 适合:追求 prompt 自动化和 pipeline 优化的研究型团队
2.4 多智能体编排
CrewAI
角色化的多智能体编排。每个 agent 有角色定义、目标、工具集,通过任务委托协作。
- 仓库:github.com/crewAIInc/crewAI
- 许可证:开源 + 商业
AutoGen / AG2
微软的对话式多智能体框架。状态在消息流中传递,支持人类参与对话。
- 仓库:github.com/microsoft/autogen
- 许可证:开源
第三部分:可观测性——看见 Loop 在做什么
Agent 跑起来后,你需要的不是日志,而是 trace——每一次模型调用、工具调用、上下文变化的完整链路。
LangSmith
LangChain 官方的可观测性平台。与 LangGraph 深度集成,能看到每个节点的输入输出、token 消耗、延迟。支持 A/B 测试和评估。
- 网站:smith.langchain.com
- 许可证:商业(有免费额度)
Langfuse
开源的 agent 可观测性平台。trace、token/成本追踪、评估。可自部署。
- 仓库:github.com/langfuse/langfuse
- 许可证:开源 + 商业
- 适合:不想锁定在 LangChain 生态的团队
Arize Phoenix
开源追踪和评估,OpenTelemetry 原生(OpenInference 规范)。与 Langfuse 类似但更偏 OpenTelemetry 生态。
- 仓库:github.com/Arize-ai/phoenix
- 许可证:开源
OpenLLMetry(Traceloop)
OpenTelemetry 的 LLM/agent 插桩库。vendor 中立——不管你用什么框架,都能产生标准 OTel trace。
- 仓库:github.com/traceloop/openllmetry
- 许可证:开源
- 适合:已有 OpenTelemetry 基础设施的团队
第四部分:推荐技术栈
轻量级原型栈
适合快速验证想法:
Pydantic AI(Harness) + Instructor(输出解析) + Langfuse(监控)
三个都是开源库,30 分钟内可以跑起来。
生产级单 agent 栈
适合上线一个可靠的 agent 服务:
LangGraph(Loop + 检查点)
+ Pydantic AI 或 Instructor(结构化输出)
+ NeMo Guardrails 或 Guardrails AI(安全门)
+ Mem0(长期记忆)
+ Langfuse 或 Phoenix(可观测性)
+ MCP(工具协议)
工业级容错栈
适合不能中断的关键任务:
Temporal(持久化执行)
+ Claude Agent SDK 或 OpenAI Agents SDK(Harness)
+ Letta(上下文分页)
+ OpenLLMetry(OTel 监控)
+ MCP(工具协议)
多智能体研究栈
适合探索多 agent 协作:
CrewAI 或 AutoGen(多智能体编排)
+ LangSmith(trace + 评估)
+ MCP(工具共享)
第五部分:选型决策树
你的 agent 需要什么?
| 需求 | 推荐工具 |
|---|---|
| 类型安全的输出 | Pydantic AI / Instructor |
| 畸形 JSON 容错 | BAML |
| Token 级输出保证 | Outlines / Guidance(本地模型) |
| 安全门控 | NeMo Guardrails / Guardrails AI |
| 提示注入防护 | Llama Guard / Lakera Guard |
| 持久化状态和回滚 | LangGraph Checkpointer / Temporal |
| 上下文窗口不够 | Letta(分页)/ Mem0(外部记忆) |
| Prompt 自动优化 | DSPy |
| 多 agent 协作 | CrewAI / AutoGen |
| 看见 agent 在做什么 | Langfuse / Phoenix / LangSmith |
| 工具跨平台共享 | MCP |
| 崩溃恢复 | Temporal |
自建 vs 框架
自建 Harness + Loop 适合:
- 需要完全控制每个细节
- 有特殊的安全或合规要求
- 团队有基础设施工程能力
- 参考资料见上一篇博客
用框架 适合:
- 快速验证和迭代
- 不想重复造轮子
- 框架的抽象刚好匹配你的需求
混合模式(推荐):
- 用框架处理标准部分(工具调用、输出解析)
- 自建核心部分(上下文组装策略、停止条件、错误恢复)
- 用 MCP 做工具接口层,保持框架可替换
第六部分:工具链全景图
┌─────────────────────────────────────────────────────────┐
│ Agent System │
│ │
│ ┌─── Harness(静态) ──────────────────────────────┐ │
│ │ │ │
│ │ 工具定义 MCP(协议) │ │
│ │ 输出解析 Pydantic AI / Instructor / BAML │ │
│ │ 约束解码 Outlines / Guidance │ │
│ │ 安全门控 NeMo Guardrails / Guardrails AI │ │
│ │ 注入防护 Llama Guard / Lakera Guard │ │
│ │ │ │
│ └───────────────────────────────────────────────────┘ │
│ │
│ ┌─── Loop(动态) ───────────────────────────────┐ │
│ │ │ │
│ │ Loop 框架 LangGraph / LlamaIndex Workflows │ │
│ │ 持久化执行 Temporal │ │
│ │ 上下文压缩 Letta(分页)/ Mem0(记忆层) │ │
│ │ Loop 优化 DSPy │ │
│ │ 多智能体 CrewAI / AutoGen │ │
│ │ │ │
│ └───────────────────────────────────────────────────┘ │
│ │
│ ┌─── 可观测性 ────────────────────────────────────┐ │
│ │ │ │
│ │ Trace Langfuse / Phoenix / LangSmith │ │
│ │ OTel 插桩 OpenLLMetry │ │
│ │ │ │
│ └───────────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────┘
结语
工具是手段不是目的。在选工具之前,先想清楚三个问题:
- 你的 agent 要解决什么问题?——这决定了你需要什么能力
- 你的 agent 会运行多久?——3 分钟的脚本和 3 天的自主任务需要的工具完全不同
- 你的团队有多大的基础设施维护能力?——Temporal 很强但需要运维,Langfuse 自部署也需要服务器
从轻量栈开始,遇到瓶颈再加组件。不要一上来就上全套——那是过度工程。
最后记住:最好的工具是你真正用起来的工具。