每个真正干活的 agent 最终都会在模型周围配上同样的部件:一个读写文件的地方、一个 shell、一份持续更新的计划、用来分派工作的子 agent、一种让上下文窗口在第三个小时仍然有用的方法、关于它可以在不询问的情况下做什么的规则,以及一种在重启后从上次中断处继续的方法。业界把这称为 harness。2026 年,你很少从零编写一个 harness。你选择一个 harness SDK 并在其上构建,而这个选择决定了你能运行哪些模型、你的 agent 命令在哪里执行,以及它的行为有多少是你可以改变的。
摘要。 Pydantic AI Harness 是我们的综合首选:在 Pydantic AI 和 Harness 中提供 80 多项能力,从文件和 shell 工具、规划、记忆、技能和子 agent,到上下文管理、护栏以及十二种沙箱和远程工作区,你可以将它们逐一添加到任何 Pydantic AI agent 上,支持 30 多家模型提供商,并且运行可在九种持久执行引擎上经受崩溃。它的完整 agent、 Coder 和 Researcher,就是这些相同能力的组合,因此你可以从一个可用的编码 agent 开始,再把它拆解开来。如果你的 agent 已经运行在 LangGraph 和 LangSmith 上,请选择 LangChain Deep Agents 。如果你想要的 agent 就是 Claude 模型上的 Claude Code,请选择 Claude Agent SDK 。如果 OpenAI 是你的模型提供商和追踪平台,请选择 OpenAI Agents SDK ;如果你想要的 agent 就是 Codex,请选择 Codex SDK 。如果你正在构建软件工程 agent,并且想要一个 agent 服务器、沙箱以及与之相伴的长期基准记录,请选择 OpenHands Software Agent SDK 。如果你在 AWS 和 Bedrock 上构建,请选择 Strands harness 。如果你需要在 .NET 或 Go 中使用相同的 harness,请选择 Microsoft Agent Framework 的 Harness 。
最后更新:2026 年 11 月 9 日。能力、数量和许可证均于 2026 年 10 月 30 日从各项目自己的文档和仓库中读取;Pydantic AI Harness 和 OpenHands Index 的数据于 11 月 9 日重新读取。
选择 agent harness 时应关注什么
有两类东西都被称为 harness。harness 产品是别人的 agent(它的循环、提示词、工具和权限),由你来配置:Claude Code 和 Codex 是突出的例子。harness SDK 则把同样的部件作为库提供给你,让你从中构建自己的 agent。本文比较的是你在 Python 中使用的 harness SDK,包括那些封装了 harness 产品的 SDK,以下是我们的标准。这些标准带有主观倾向。
- 你能在不重写 agent 的情况下更换模型吗? 价格、质量和速率限制每个月都在变化,而最适合编码 agent 的模型并不总是最适合研究 agent 的模型。围绕单一厂商模型构建的 harness 会让其他所有厂商都成为二等路径,或者根本没有路径。
- 你能拆解到什么程度? 现成的 agent 是最快的起点。问题在于当它不合适时你能改变什么:移除一个工具、替换规划步骤、更换上下文策略,或重写指令,而不必分叉 harness 或与你看不见的默认设置作斗争。
- agent 的命令在哪里运行? 在你的机器上、容器中,或云沙箱中。检查 harness 原生支持哪些沙箱,以及相同的 agent 代码是否能在每种沙箱中运行。
- 它可以在不询问的情况下做什么? 寻找能在进程消失后仍然有效的针对单个工具调用的审批,以及由你而非模型设定的对 shell 和文件系统的限制。
- 当进程在运行中途死亡时会发生什么? 长时间的 agent 运行会遇到部署、崩溃和速率限制。恢复已保存的对话与持久执行并不相同,后者会记录每个已完成的模型和工具调用,并在重启后重放其结果,而不是再次运行它。检查 harness 提供的是哪一种,以及它是与你公司已经在运行的引擎配合工作,还是只能与它自己的存储配合工作。
- 它在长时间运行中能保持连贯吗? 压缩、清除旧的工具结果、将过大的输出溢出到文件,以及按需加载工具和技能,这些就是在一小时后性能下降的 agent 与不会下降的 agent 之间的区别。
- 追踪数据会流向你其他追踪数据所在的地方吗? 通过 OpenTelemetry 发送到任何后端,或使用厂商自己的追踪产品。
- 你能为 harness 本身购买支持吗? 一旦 agent 进入生产环境,你就想要一条超越公共问题跟踪器的升级路径。检查支持协议是否涵盖开源 SDK,还是只涵盖你也必须采用的托管平台或云服务。
我们如何比较
对于每个 harness,我们阅读了其文档、打开了其许可证文件,并在上述日期检查了其最新版本。我们记录了它原生运行哪些模型、其现成 agent 包含什么以及你可以移除或替换其中多少内容、它支持哪些沙箱、一个人如何批准某个操作、一次运行如何在重启后存活、它如何在长时间运行中管理上下文、它发出什么追踪数据、由谁在何种许可证下制作,以及你需要购买什么才能获得其商业支持。在我们可以计数的地方,我们进行了计数,使用的是项目自己的文档。如果项目文档将某项标记为实验性、预览版或测试版,我们会说明。每个条目,包括我们自己的,都有一个缺点。
这里的“Agent harness SDK”指的是你从 Python 导入的库,它附带循环周围的电池(文件和 shell 工具、规划、子 agent、上下文管理以及 agent 工作的地方)加上由它们组装而成的现成 agent。它们有几种形态,在表格的“类型”列中命名:从带有由它们构建的 agent 的部件库,到框架之上的组装式 harness,再到嵌入 Claude Code 或 Codex 等成品 agent 的 SDK。我们包括最后一种,因为这是许多团队起步的方式,并用相同的标准来评判它。一个普通的 agent 框架,即没有那些电池的循环和工具,是我们姊妹文章 2026 年最佳 Python AI agent 框架的主题。你运行而非在其上构建的成品 agent 在 下文在 Pydantic AI Harness 之后,顺序并不代表评分。“原生”指内置于 harness 或由官方维护的包提供,而非通过 LiteLLM 之类的通用适配器接入。“未记录”指我们在该日期于项目自身文档中未找到相关内容,而非无法实现。
Harness 每月都在变化,本文也是如此。我们每月都会对照各项目自身的文档和发布记录重新核查,上文“最后更新”日期会随文中任何内容的变动而更新。如果你维护这些项目之一,且发现此处有误或已过时,请发送邮件至 hello@pydantic.dev ,我们会予以修正。
2026 年最佳 Python Agent Harness
1. Pydantic AI Harness:综合最佳 Python Agent Harness
Pydantic AI Harness(也就是我们)是 Pydantic AI 的开源能力库,出自 Pydantic 背后的团队。其中的一切都是一个原语:能力(capability),即一个自包含的 agent 行为单元,你可以将其添加到 capabilities=[...] 上的任意 Pydantic AI agent。该 Harness 文档 在 Pydantic AI 和 Harness 包中列出了 80 多项,完整的 agent 本身也是能力。 Coder 是文件工具、持久 shell、仓库指令、委派给自身的新一次运行以及上下文控制的组合; Researcher 是网页搜索、页面抓取、子研究器和有界工具输出。
这里是 Coder 在当前目录中修复一个失败的测试,并用 Pydantic Logfire进行追踪。使用以下命令安装它: pip install "pydantic-ai-harness[coder,anthropic,logfire]",设置 ANTHROPIC_API_KEY,并运行 logfire auth 一次,或者删掉两行 logfire :
import logfire
from pydantic_ai import Agent
from pydantic_ai.capabilities import LocalWorkspace
from pydantic_ai_harness import Coder
logfire.configure()
logfire.instrument_pydantic_ai()
agent = Agent(
'anthropic:claude-fable-5-1',
capabilities=[LocalWorkspace('.'), Coder()],
)
result = agent.run_sync('Find out why tests/test_parser.py fails and fix the bug it caught.')
print(result.output)
把模型字符串改成在另一个提供商上运行同一个 agent。若要在云沙箱中运行其命令,还需安装 modal 附加项(pip install "pydantic-ai-harness[coder,modal,anthropic,logfire]"),并替换工作区。沙箱启动时是空的,只有 git ,没有任何依赖,因此提示词必须把仓库引入进来:
from pydantic_ai import Agent
from pydantic_ai_harness import Coder
from pydantic_ai_harness.modal_sandbox import ModalSandbox
agent = Agent('anthropic:claude-fable-5-1', capabilities=[ModalSandbox(), Coder()])
result = agent.run_sync(
'Clone https://github.com/you/your-repo, install it, then find out why tests/test_parser.py fails and fix the bug it caught.'
)
当 Coder 不再适用时,就用 它的各个部分 重建它,并更换你需要的那一个:在 shell 上设置允许列表、采用不同的压缩策略、不进行委派。
为什么它排在第一位:按照上述标准衡量,它是这里唯一一个在开源库中公开回答了所有标准的 harness。根据各自的文档,其他每一个都至少缺少一项。Claude Agent SDK 只运行一家厂商的模型,而 OpenAI Agents SDK 将其他厂商的模型视为 beta。Deep Agents 将持久性放在 LangGraph 的检查点器中,并通过 LangSmith 销售支持服务。OpenHands 和 Strands 没有记录任何外部持久执行引擎,Microsoft 的 Harness 只记录了自己的 Durable Extension,而 Strands 和 Microsoft 都没有记录为其 SDK 提供商业支持。在实践中,全部满足这些标准是什么样子:
- 30+ 模型提供商, 原生支持, 从 OpenAI、Anthropic 和 Gemini 到 Bedrock、Vertex AI、Azure、Mistral、Groq、xAI、Ollama 和 OpenRouter,以及任何兼容 OpenAI 的端点,并在请求失败时回退到另一个模型。
- 可以逐个取出的部分。 每项能力都独立运作,并能与其他能力以及你自己的能力组合使用: 文件系统 和 shell 工具,带有允许列表和拒绝列表, 规划, 子代理, 记忆 跨会话, 技能 按需加载、网页搜索和浏览器,以及 GitHub、Linear 和 Slack 等集成。
- 一个本地目录加上十二个 沙箱和远程工作区:Modal、E2B、Render、Sprites、Daytona、boxd、smolvm、BoxLite、OpenSandbox、Docker、Bubblewrap 和 SSH。同一套文件和 shell 工具在运行所处的任何一个环境中都能工作。
- 长时运行的上下文管理:模型无关的 压缩策略 (工具结果清理、滑动窗口、摘要),OpenAI 和 Anthropic 上的提供商原生压缩,超大工具输出溢出到代理可查询的文件,工具搜索,以及 代码模式,即模型在沙箱解释器中通过一个脚本调用多个工具。
- 对其行为的控制: 工具审批 ,它会在有待处理调用时结束运行,以便之后在任何进程中的运行都能恢复它,一个 审批审核器 ,让第二个模型批准低风险调用,其余交给人工处理,一个 工具调用裁判, 护栏 ,带密钥掩码和支出限额。
- 九个 持久执行 引擎:Temporal、DBOS、Prefect、Restate、AWS Lambda、Absurd、pgtask、Azure Durable Task 和 Apache Airflow,以及 步骤持久化 从文件、SQLite、MongoDB 或 PostgreSQL 恢复运行或分叉运行。
- OpenTelemetry 为每个模型和工具调用生成 span,遵循 GenAI 语义约定,并发送到任意后端。 Pydantic Logfire 是查看它们最简单的方式,并且是可选的。
同一个代理可以运行在终端聊天、网页聊天、通过 Agent Client Protocol(实验性)运行的编辑器,以及通过 AG-UI 和 Vercel AI 协议运行的前端中。Pydantic 提供 企业支持 由构建它们的团队为 Pydantic AI 和 Harness 提供支持,附带 SLA,且无需购买任何平台。两者均采用 MIT 许可证。
问题在于:它仅支持 Python,而且它是一个库,而非产品。没有托管运行时,也没有管理界面;代理在你的基础设施上、你的进程中运行,持久性来自你选择并运维的引擎。 Coder 中 LocalWorkspace 会在你的机器上运行 shell 命令,且没有允许列表,因此生产使用应放在沙箱中,或置于上述审批和 shell 控制之后。更多部件也意味着更多选择: Coder的默认配置就是我们的默认配置,但一旦你重新构建它,在你的工作区中测试你的组合就是你的工作。
最适合希望今天就拥有可用 agent,并预期随着产品成长会更换其组件、模型和运行位置的 Python 团队。
2. LangChain Deep Agents:如果你的 agent 已经运行在 LangGraph 和 LangSmith 上
Deep Agents 自称“自带电池的 agent harness”。在 LangChain 自己的分层中,LangGraph 是图运行时, create_agent 是其上的一个极简 harness,而 Deep Agents 则是构建于其上的一个更具主见的 harness。 create_agent它 MIT 许可证来自 LangChain, Inc.,同时也提供 JavaScript 版本。
默认 agent 具备文件工具(ls, read_file, write_file, edit_file, glob, grep),一个 task 子代理工具、长线程摘要以及大型工具结果的卸载。记忆、技能和人工审批均为可选启用,自 0.7 版本起, write_todos 规划工具。你通过中间件来改变它:一个覆盖项会替换默认实例,而任何 LangGraph 图都可以作为子代理。它可运行在任何 LangChain 聊天模型上。命令在 沙箱后端:LangSmith Sandbox、AWS AgentCore、Databricks、Daytona、E2B、Modal、NVIDIA OpenShell、Runloop 或 Vercel。LangChain 还发布了基于它构建的 Deep Agents Code(dcode),一个基于它构建的终端编码代理,并在2月 报道称 其早期 CLI 在 Terminal-Bench 2.0 上取得了 66.5 分 gpt-5.2-codex.
问题在于:它会把 LangChain 技术栈一并带进来。该包依赖于 langsmith, langchain-anthropic 以及 langchain-google-genai. 人工审批 需要 LangGraph checkpointer,持久性依赖 LangGraph 自有的 checkpointer,且未记录任何外部持久执行引擎,而追踪则依赖 LangSmith,并通过 通过 LangSmith SDK 实现 OpenTelemetry其 README 描述了一种“信任 LLM”的安全模型,而其本地后端不提供任何隔离。API 迭代很快:0.7.0 移除了默认规划工具和默认提示词。
当你的 agents、checkpoints 和 traces 已经运行在 LangGraph 和 LangSmith 上,并且你希望使用同一家厂商提供的 harness 时,就选它。
3. Claude Agent SDK:如果你想要的 agent 是 Claude Code,那么在 Claude 上
The Claude Agent SDK 为你提供“驱动 Claude Code 的同一套工具、agent 循环和上下文管理”,支持 Python 或 TypeScript。它会把打包的 Claude Code 二进制作为子进程运行,因此文件编辑、shell 命令、网页搜索、子代理、技能、自动压缩、权限模式和会话都已预先接好。Python 包采用 MIT 许可,且 SDK 的使用受 Anthropic 商业服务条款约束。
你可以 移除内置工具 并替换系统提示词。 权限回调 批准、拒绝或修改每个工具调用,以及一个 hook 可以推迟 一个调用,以便你稍后恢复它。你自己的工具会作为进程内 MCP 服务器提供。
问题在于:仅限 Claude 模型,且只能通过 Anthropic、Bedrock、Vertex AI 或 Microsoft Foundry其 托管文档 将每个运行中的 agent 描述为“与本地状态绑定的长生命周期进程”,建议每个 agent 至少分配 1 GiB 内存作为下限,并说明除非你将对话记录镜像到 SessionStore,这属于尽力而为。使用自定义系统提示词时,Claude Code 自身的提醒仍会到达模型,直到你 逐一关闭它们其内置沙箱默认关闭;当它被启用却无法启动时,命令会在无沙箱状态下运行并给出警告。OpenTelemetry 追踪为可选启用并标记为 beta,且未记录任何持久执行引擎集成。Aditya 的文章 你会部署一个你无法控制的 agent 吗? 则给出了更详尽的论证。
当你想用的产品就是 Claude Code 本身、需要将其嵌入,并且可以接受单一模型供应商时,就选它。
4. OpenAI Agents SDK:如果你完全押注于 OpenAI
OpenAI 将其描述为“模型原生 harness”。除了 agents、handoffs 和 guardrails 之外,sandbox agents 现在可以在带有 shell 和文件工具、技能、记忆和压缩功能的容器中工作。沙箱客户端涵盖本地 Unix 沙箱、Docker、Blaxel、Cloudflare、Daytona、E2B、Modal 和 Vercel。工具接受 ,并且暂停运行的状态会序列化为 JSON,以便你之后恢复它。其文档列出了四种持久执行集成:Temporal、DBOS、Restate 和 Dapr。它是 MIT 许可的 其在四月的更新中 OpenAI Agents SDK 为“模型原生 harness”。除了 agents、handoffs 和 guardrails 之外, 沙箱 agent 现在可以在带有 shell 和文件工具、技能、记忆和压缩功能的容器中工作。 沙箱客户端 涵盖本地 Unix 沙箱、Docker、Blaxel、Cloudflare、Daytona、E2B、Modal 和 Vercel。工具接受 needs_approval,并且暂停运行的状态会序列化为 JSON,以便你之后恢复它。其文档列出了 四种持久执行集成:Temporal、DBOS、Restate 和 Dapr。它是 MIT 许可 并且也适用于 TypeScript。
问题在于:它的默认路径是 OpenAI 的 Responses API,而 其他提供商 需要经由 LiteLLM 和 Any-LLM 适配器,其文档称之为“尽力而为、beta”,会丢失仅 Responses 支持的功能。 追踪 默认开启,会将数据发送至 OpenAI,且 Zero Data Retention 下的组织无法使用。 适合模型提供商和追踪平台均为 OpenAI 的团队。
5. Codex SDK:如果你想要的 agent 是 Codex
The Codex SDK 拥有稳定的 Python 包, openai-codex,它“通过 JSON-RPC 控制本地 Codex app-server”,以及一个 TypeScript 包,封装了 codex 命令行界面。你得到的是 Codex 自己的 agent,带有它的工具、只读、workspace-write 或 full-access 沙箱预设、你设置的基础指令和开发者指令,以及你可以恢复和分叉的本地线程。它是 采用 Apache 2.0 许可.
问题在于:它封装了一个 Codex 进程,因此你配置的是那个 agent,而不是重新组合它。其文档是围绕 OpenAI 的模型编写的;其他提供商属于 Codex 配置层面的事情。其 Python 审批设置有两个值:拒绝一切,或让自动审查器决定。该 SDK 的商业支持:无文档记录。
当你想用的产品就是嵌入式 Codex 本身时,就用它。
6. OpenHands Software Agent SDK:如果你要构建的是软件工程 agent
这个 OpenHands Software Agent SDK 提供“用于构建与代码协作的 agent 的 Python、TypeScript 和 REST API”,并且是 OpenHands CLI 和 OpenHands Cloud 背后的引擎。它需要 Python 3.12 或更高版本,并且是 采用 MIT 许可。它与 OpenHands/OpenHands 仓库,它现在叫 Agent Canvas,是一个 TypeScript 控制中心,可通过 ACP 运行 OpenHands、Claude Code、Codex 及其他 agent; openhands-ai 该仓库的 Python 包最后一次发布是 1.11.0 版本,时间为 2026 年 7 月。
一个 agent 由以下可替换组件构建而成:终端、文件编辑器、任务跟踪器和浏览器工具、子 agent、上下文压缩器、技能、MCP 和钩子。 可替换组件终端、文件编辑器、任务跟踪器和 浏览器 工具、子代理、一个 上下文压缩器、技能、MCP 和钩子。同一套 agent 代码既可在本地工作区中运行,也可通过其 agent 服务器在 Docker、Apptainer、基于 API 的沙箱或 OpenHands Cloud 中运行。 确认策略 每次操作前都询问,从不询问,或仅对安全分析器评定为有风险的操作进行询问。对话 持久化到磁盘 并恢复,以及 追踪 可导出为 OpenTelemetry 并发送到任何 OTLP 后端。
它的基准测试记录由来已久。OpenHands 已向官方 SWE-bench Verified 排行榜自 2024 年 10 月起,其最新条目被 SWE-bench 团队标记为已核验,得分为 71.8,使用的是 2025 年 8 月的 GPT-5。OpenHands 还运行自己的 OpenHands 指数 涵盖五项基准测试,包括 SWE-bench 和 GAIA,并发布每次运行的结果和轨迹;其最新条目来自 2026 年 6 月 11 日,使用 Claude Fable 5 平均得分 81.0。Index 中的数字均为 OpenHands 自己的运行结果。
问题在于:它是为处理代码的 agent 构建的。模型通过 LiteLLM 使用模型字符串,而非原生提供商客户端。隔离意味着在容器或远程沙箱中运行其独立的 agent 服务器;本地工作区则在主机上运行。其默认安全分析器会让执行操作的模型自行标记其自身操作的风险,因此“仅限有风险操作”的策略取决于 agent 自身的判断。持久化是一个事件目录,未记录任何外部持久执行引擎。付费产品是托管服务:OpenHands Cloud,以及 OpenHands 企业版,作为一个平台,它还提供自托管能力以及其工程师的指导。
当你的产品是一个编码 agent,并且你希望同时拥有一个 agent 服务器、其沙箱以及一份长期基准测试记录时,就选它。
7. Strands harness:如果你基于 AWS 和 Bedrock 构建
AWS 的 Strands Agents 现已提供 Strands harness在其 SDK 之上,用 Python 和 TypeScript 提供完全组装好的 agent harness。一个 create_harness() 调用为你提供 shell、读取、写入和编辑工具、网页抓取与搜索、内置子代理、待办事项列表、技能、基于文件的记忆、可通过 id 恢复的会话以及上下文管理。它是 采用 Apache 2.0 许可.
Strands harness: 配置参考 记录了你可以覆盖的每一项默认设置,并且 干预措施 通过人工审批、自然语言规则或 Cedar 策略来限制工具调用。模型来自 Bedrock、Anthropic、OpenAI、Google 和 Ollama,SDK 会发出 OpenTelemetry 追踪。
问题在于:Amazon Bedrock 是默认提供商,而且该 harness 包是全新的,于 2026 年 9 月首次发布。其沙箱包括 Docker、SSH 和 Strands Shell(一种进程内 shell 沙箱),并且没有记录任何持久执行引擎集成。该 SDK 的商业支持:无相关记录。
适合那些模型、凭证和部署已经位于 AWS 上,并希望从同一处获得一套组装好的 harness 的团队。
8. Microsoft Agent Framework Harness:如果你需要在 .NET 或 Go 中获得同样的 harness
Microsoft Agent Framework Harness 提供 “一个固执己见、开箱即用的 Harness,适用于研究、编码、数据分析及其他长时间运行的工作”,提供 .NET、Python 和 Go 版本。在 Python 中, create_harness_agent 默认返回一个普通的 Agent Framework agent,具备待办事项跟踪、计划与执行模式、会话文件记忆、工具审批规则、在模型支持时提供的网页搜索以及 OpenTelemetry,且全部默认开启。压缩、技能、文件访问、后台子代理、shell 和有界循环为可选启用。该框架采用 MIT 许可.
每个默认项都有对应的开关可以将其禁用,你也可以替换 todo 和 mode 提供程序,或添加自己的上下文提供程序。在持久性方面,微软的 持久扩展 在 Durable Task Scheduler、Azure Functions 或你自己的计算资源上运行 agent。
问题在于:在 Python 中,后台代理、文件访问和循环都被标记为实验性功能,shell 工具来自一个预发布包,而 Durable Extension 也以预发布形式安装。该代理命令的沙箱:Harness 页面上没有任何记录。该框架的商业支持:没有任何记录。
对于需要在 Python、.NET 和 Go 之间共用一套 harness 的团队来说,这是首选。
一览对比
已于 2026 年 10 月 30 日核对,其中 Pydantic AI Harness 一行于 2026 年 11 月 9 日重新核对。计数为各项目自身文档原生列出的数量;“via”指通过适配器或单独集成实现;“none documented”指其文档未描述任何此类支持。
| Harness | 类型 | 模型 | 拆解分析 | 命令运行的位置 | 持久性与恢复 | 追踪 | 商业支持 | 许可证与制造商 |
|---|---|---|---|---|---|---|---|---|
| Pydantic AI Harness | 能力库; Coder 以及 Researcher 基于它构建 |
30+ 个提供商,外加任何兼容 OpenAI 的端点 | 80 多项能力均可独立使用,包括以下部分: Coder |
本地环境,外加 12 个沙箱和远程工作区 | 在 9 种持久执行引擎上重放;步骤持久化到文件、SQLite、MongoDB、PostgreSQL | OpenTelemetry(GenAI 约定)到任意后端 | 对于 Pydantic AI 和 Harness,来自 Pydantic;无需平台计划 | MIT;Pydantic |
| LangChain Deep Agents | 基于 LangGraph 的固执己见式 harness;Deep Agents Code | 任何 LangChain 聊天模型 | 中间件覆盖;任何 LangGraph 图都可作为子代理 | 本地后端,外加 9 种沙箱集成 | LangGraph checkpointers;未记录任何外部引擎 | LangSmith;通过 LangSmith SDK 接入 OTel | 使用 LangSmith 企业版计划 | MIT;LangChain, Inc. |
| Claude Agent SDK | 嵌入式成品智能体(Claude Code) | 仅 Claude,支持 4 个平台 | 移除工具、替换系统提示、钩子 | 本地子进程;自带沙箱默认关闭 | 磁盘上的会话,或尽力而为的 SessionStore;未记录任何引擎 |
OpenTelemetry,可选启用(beta) | 未记录任何此类支持 | MIT,依据 Anthropic 商业条款;Anthropic |
| OpenAI Agents SDK | 支持沙箱智能体的框架 | OpenAI;其他通过 beta LiteLLM 和 Any-LLM 适配器 | 沙箱智能体方面的能力 | 本地 Unix、Docker,外加 6 个托管沙箱 | 序列化的运行状态;4 个引擎:Temporal、DBOS、Restate、Dapr | OpenAI 默认开启追踪;第三方处理器 | SDK 未记录任何此类支持 | MIT;OpenAI |
| Codex SDK | 嵌入式成品智能体(Codex) | 面向 OpenAI;其他模型通过 Codex 配置接入 | 指令、沙箱与审批设置 | Codex 沙箱预设 | 本地线程可恢复和分叉;未记录任何引擎 | 通过 Codex 配置可选启用 OpenTelemetry 日志导出 | SDK 未记录任何此类支持 | Apache 2.0;OpenAI |
| OpenHands SDK | 编码智能体 SDK(Python、TypeScript、REST),附带一个智能体服务器 | 通过 LiteLLM | 可替换工具、condenser、工作区 | 本地,或 Docker、Apptainer、API 沙箱,以及通过其智能体服务器使用云端 | 会话持久化到磁盘;未记录任何引擎 | 可将 OpenTelemetry 数据发送到任意 OTLP 后端 | 借助 OpenHands Enterprise | MIT;OpenHands |
| Strands Harness | 基于 Strands SDK 组装的 Harness | 默认使用 Bedrock;Anthropic、OpenAI、Google、Ollama | 覆盖所有默认设置;直接使用 SDK | Docker、SSH、Strands Shell | 按 id 划分的会话;未记录任何引擎 | OpenTelemetry | 未记录任何此类支持 | Apache 2.0;AWS |
| Microsoft Agent Framework Harness | 基于 Agent Framework 组装的 Harness | Agent Framework 聊天客户端 | 禁用或替换每一项默认设置 | Harness 页面上未记录任何此类支持 | Durable Task 上的持久扩展(预发布) | OpenTelemetry | 未记录任何此类支持 | MIT;Microsoft |
成品智能体与更小的库
有五个项目出现在 harness 列表和搜索中,但我们没有将其纳入排名,每个项目都有各自的理由。
- Hermes Agent 来自 Nous Research 的 Hermes Agent 是一个成品级的自我改进智能体,带有终端 UI、消息网关、记忆、技能和六种终端后端,采用 MIT 许可证。你可以从 Python 导入它的
AIAgent从 Python 导入,但只能从 git 检出中导入:其文档称不发布受支持的 wheel。请将其作为智能体使用,而不是作为库使用。 - Mistral Vibe 是 Mistral 的 Python 编码智能体,一个采用 Apache 2.0 许可证的成品 CLI,另有一个独立的 pre-1.0 SDK 用于构建智能体。
- DeepSeek Harness Python SDK 是一个客户端,仍处于开发者预览阶段,它通过 JSON-RPC 驱动 DeepSeek 的 TypeScript harness,其随附的配置文件 发送会话日志 默认使用 DeepSeek 的官方 API,直到某个配置文件补丁将其关闭。
- smolagents 来自 Hugging Face 的它“是一个用于以代码思考的智能体的极简库”,在 E2B、Modal、Blaxel 和 Docker 上提供代码执行器。其文档没有描述任何文件或 shell 工具、压缩、技能或工具审批,且其最后一次发布是在 5 月。
- mini-swe-agent 是一个极简编码智能体,其唯一工具是 bash,专为研究和基准测试而构建。
如果你想要的是一个可以直接使用的编码智能体,而不是要自己构建一个,那么 Claude Code、Codex、OpenCode 和 Pi 都是现成的 harness,而上述若干 SDK 正是将它们嵌入的方式。
如果你从事 TypeScript 开发
这份清单仅涵盖 Python,而若干广泛使用的 harness 是以 TypeScript 为先的。
- Pi由 Mario Zechner 开发,是“一个极简、可扩展的智能体 harness,你可以把它变成你自己的”,包含智能体核心包、编码智能体 CLI 和一个 SDK,采用 MIT 许可证。它有意省略了子智能体和计划模式。
- DeepSeek Harness (
dsh)本身就是一个 TypeScript harness,带有 Web UI 和桌面应用,其插件是 TypeScript 包;上文提到的 Python SDK 用于驱动它。 - Deep Agents JS 是 Deep Agents 的 TypeScript 版本,采用 MIT 许可证。
- Mastra 使用“harness”来指代围绕其智能体的一组能力(持久智能体、后台任务、调度以及
AgentController)以及一个createCodingAgent()辅助工具。 - The Strands Harness, OpenAI Agents SDK 以及 Codex SDK 也提供 TypeScript 版本。TypeScript Claude Agent SDK 并非开源:其许可证文件依据 Anthropic 商业条款保留所有权利。
- Vercel AI SDK 有一个实验性的接口,可以在同一界面背后运行其他 harness,例如 Claude Code、Codex、Pi 和 Deep Agents。如何选择:你正在构建一个 Python 智能体,希望它现在就能运行、支持任何模型,并且随着它的成长可以替换其中的部件:Pydantic AI Harness。你的智能体运行必须在崩溃后仍能存活,并且运行在你公司已经运营的引擎上:Pydantic AI Harness(九种引擎),或者如果你使用 OpenAI 的模型,则选择 OpenAI Agents SDK(四种)。你的智能体、检查点和追踪已经 Vercel AI SDK 有一个实验性的
HarnessAgent它能在同一界面背后运行其他 harness,例如 Claude Code、Codex、Pi 和 Deep Agents。
如何选择
- 你正在构建一个 Python 智能体,希望它现在就能运行、支持任何模型,并且随着它的成长可以替换其中的部件: Pydantic AI Harness.
- 你的智能体的运行必须在崩溃后仍能存活,并且运行在你公司已经在运营的引擎上: Pydantic AI Harness (九种引擎),或者 OpenAI Agents SDK (四种),前提是你使用的是 OpenAI 的模型。
- 你的智能体、检查点和追踪已经位于 LangGraph 和 LangSmith 中: LangChain Deep Agents.
- 你希望将 Claude Code 本身集成到你的产品中,并运行在 Claude 模型上: Claude Agent SDK.
- OpenAI 是你的模型提供商和追踪平台: OpenAI Agents SDK.
- 你希望将 Codex 本身集成到你的产品中: Codex SDK.
- 你的产品是一个编码智能体,而你想要一个智能体服务器、沙箱和一份长期的基准测试记录: OpenHands 软件智能体 SDK.
- 你的模型和部署都在 AWS 上: Strands Harness.
- 你需要在 Python、.NET 和 Go 中使用同一套 harness: Microsoft Agent Framework Harness.
何时应选择其他 harness
有三种情况更适合选择其他方案而非 Pydantic AI Harness。
第一种是想要特定厂商的智能体。如果你想要的产品是 Claude Code 或 Codex 的嵌入式版本,它们自家的 SDK 会提供厂商发布并调优的智能体。只有当你预期要修改它时,从零件重建才划算。
第二种是你已经在运行的整套技术栈。一个在生产环境中使用 LangGraph 智能体、并在 LangSmith 中保存追踪记录的团队,可以直接在它已经运营的运行时、检查点和追踪之上使用 Deep Agents。在 Bedrock 上使用 Strands 也是同样的道理。
第三种情况是使用 Python 之外的语言。TypeScript 中的 Pi、DeepSeek Harness、Deep Agents JS 和 Mastra,以及微软在 .NET 和 Go 中的 Harness,都是这些团队应当关注的方向。
如果你的产品不是编码智能体,那么在从一个编码智能体起步之前要三思。我们此前关于 harness 论点, 什么才算好的 harness 以及 Harness 周 进一步探讨我们为何将 harness 构建为多个部件。
常见问题
什么是最好的 Python 智能体 harness? 我们的答案是 Pydantic AI Harness:在 Pydantic AI 和 Harness 中提供 80+ 项能力,覆盖 30+ 个模型提供商、十二种沙箱和远程工作区、九种持久执行引擎和 OpenTelemetry 追踪,并配有由相同部件构建的现成智能体。例外情况是那些想要特定厂商智能体的团队(Claude Agent SDK 或 Codex SDK)、已经使用 LangGraph 和 LangSmith 的团队(Deep Agents),以及已统一采用 AWS 或 Azure 的团队。
我应该用哪个 harness 在 Python 中构建自己的编码智能体?
从 Coder 在 Pydantic AI Harness 中,如果你想选择模型并更改智能体的各个部件;它可以在本地或沙箱中运行,并且你可以根据其能力重建它。如果你想要它的智能体服务器及其 SWE-bench 运行记录,OpenHands Software Agent SDK 是首选;如果你想要 Claude Code 本身,则选 Claude Agent SDK。
哪些智能体 harness 可与任何模型配合使用? Pydantic AI Harness(原生支持 30+ 个提供商)、LangChain Deep Agents(支持任意 LangChain 聊天模型)以及 OpenHands SDK(通过 LiteLLM)。Strands harness 默认使用 Bedrock,并支持其他提供商。Claude Agent SDK 仅运行 Claude 模型,而 OpenAI Agents SDK 通过 beta 适配器接入其他提供商。
Pydantic AI Harness 和 Pydantic AI 是同一个东西吗? 不。 Pydantic AI 是智能体框架:类型化智能体循环、模型、工具和结构化输出。Pydantic AI Harness 是一个独立的包,包含你添加到 Pydantic AI 智能体中的各项能力,并且它会随附安装 Pydantic AI。
来源
以下所有来源均于 2026 年 10 月 30 日核查;Pydantic AI Harness 相关来源和 OpenHands Index 于 2026 年 11 月 9 日重新核查。
- Pydantic AI Harness: 概览, Coder, 研究员, 压缩, 步骤持久化, 工作区, 持久执行 以及 Azure Durable Task, 模型, 企业支持.
- LangChain Deep Agents: 概览, 定制, 沙箱, human-in-the-loop, 仓库和变更日志, OpenTelemetry, 定价.
- Claude Agent SDK: 概览, 快速入门, 托管, 权限, 钩子, 系统提示词, 仓库.
- OpenAI Agents SDK 和 Codex SDK: 公告, 沙箱智能体, 沙箱客户端, 模型, human-in-the-loop, 运行智能体, 追踪, Codex SDK, Codex 配置, Codex 仓库.
- OpenHands 软件智能体 SDK: 架构、安全、持久化、可观测性、模型、仓库、Agent Canvas、PyPI 上的包、OpenHands Index、SWE-bench 排行榜、企业版。Strands harness:harness 指南、配置、干预、仓库。Microsoft Agent Framework Harness:Harness、Durable Extension、仓库。另涵盖:Hermes Agent、Mistral Vibe、Vibe CLI 仓库、PyPI 上的 Vibe SDK、DeepSeek Harness、DeepSeek Python SDK 参考、DeepSeek 会话日志上传、smolagents、mini-swe-agent、Pi、Deep Agents, 架构, 安全, 持久化, 可观测性, 模型, 仓库, Agent Canvas,
openhands-ai(PyPI 上), OpenHands Index, SWE-bench 排行榜, 企业版. - Strands harness: harness 指南, 配置, 干预, 仓库.
- Microsoft Agent Framework Harness: Harness, 持久扩展, 仓库.
- 另涵盖: Hermes Agent, Mistral Vibe, Vibe CLI 仓库, PyPI 上的 Vibe SDK, DeepSeek Harness, DeepSeek Python SDK 参考, DeepSeek 会话日志上传, smolagents, mini-swe-agent, Pi, Deep Agents JS, Mastra, Vercel AI SDK harnesses.
试用 Pydantic AI Harness
pip install "pydantic-ai-harness[coder,anthropic]" (或你的模型提供商对应的额外内容),然后按照 Harness 文档 在 Coder 在你自己的仓库上,交给一个由你所选能力构建的 agent。想改为选择底层框架?我们的配套文章, 2026 年最佳 Python AI agent 框架,并对其进行比较。
在 Google 搜索中查看更多来自 Pydantic 的内容
将 Pydantic 添加为首选来源,以便更容易找到我们的最新文章。
在 Google 上选择 Pydantic 作为首选来源(在新标签页中打开)准备好看看你的 agent 实际在做什么了吗?
免费开始 免费开始 联系我们 联系我们探索我们的开源软件包