OPEN SOURCE DEEP DIVE
Deep Agents:逆向 Claude Code 得到的开箱即用 agent harness
README 第一行就自称「开箱即用的 agent harness」,MIT,Python(另有 deepagents.js),建在 LangGraph 之上,流式/持久化/检查点是继承来的。理解它的钥匙在致谢里那句「受 Claude Code 启发:试图找出它为什么通用,然后把这件事推得更远」——这是一次逆向工程,把一个公认好用的闭源编码 agent 拆开,问「到底哪几件事让它能处理长任务」。它给出的答案是四件被捆绑进来的事:可插拔后端的文件系统(长任务的产物是文件不是消息,上下文只留指针)、各有独立窗口的子智能体(上下文的隔离与压缩,不是多几个帮手)、长对话摘要 + 工具输出卸载到磁盘、以及按需加载的 Skills。另有沙箱内 shell、跨会话持久记忆、工具调用执行前可批准/编辑/拒绝的人在环中、任意 MCP server 当工具。模型无关:前沿 API、Baseten/Fireworks 上的开源权重、Ollama/vLLM/llama.cpp 自托管都能跑,三行 create_deep_agent 起一个能规划能读写文件的 agent。安全段写得异常坦白——遵循「信任 LLM」模型,边界必须在工具层与沙箱层强制,不要指望模型自我约束。29.7k★。我们未运行过它,子智能体隔离效果与摘要信息损失未经我们验证,记为待复现。
一句话定位
Deep Agents 的 README 第一行就是「开箱即用的 agent harness」——一个有主见、装好就能跑的 agent,任何一块都能替换或覆盖。MIT 协议,Python(另有 deepagents.js),建在 LangGraph 之上,因此流式、持久化、检查点这些底层能力是继承来的而不是自己重写的。星标约三万,是本站 harness 层里少数明确以「harness」自我命名的项目。
致谢里那句话是理解它的钥匙:「受 Claude Code 启发:试图找出它为什么通用,然后把这件事推得更远」。所以这个项目的方法论是一次逆向工程——把一个闭源的、公认好用的编码 agent 拆开,问「到底是哪几件事让它能处理长任务」,然后把答案做成开源的、模型无关的通用骨架。
它找出的答案:四件被捆绑进来的事
README 明确给了三层的分工:LangGraph 是图运行时,LangChain 的 create_agent 是最小 harness,Deep Agents 是「同样的积木,但把文件系统、子智能体、上下文管理、Skills 打包好」。这四件正是它认定的通用性来源:
| 捆绑能力 | 它替代了什么 | 为什么长任务离不开它 |
|---|---|---|
| 文件系统(可插拔本地 / 沙箱 / 远端后端) | 把中间结果全塞进上下文 | 长任务的产物是文件,不是消息。落盘之后上下文只留指针,窗口不再被中间产物占满 |
| 子智能体(各自独立的上下文窗口) | 一个 agent 从头读到尾 | 委派出去的任务在自己的窗口里消化,只把结论带回来——这是上下文的隔离与压缩,不是「多几个帮手」 |
| 上下文管理(长对话摘要 + 工具输出卸载到磁盘) | 撞到窗口上限就截断 | 截断丢的往往正是关键约束;摘要 + 卸载是有损但可控的降级 |
| Skills(按需加载的可复用行为) | 把全部流程写进系统提示词 | 能力可以随任务动态挂载,而不是让每条会话都背着全部指令 |
另有 shell 执行(在你选的沙箱里)、跨会话持久记忆(可插拔 state/store 后端)、人在环中(工具调用执行前可批准 / 编辑 / 拒绝)、以及自带函数或任意 MCP server 当工具。
把这张表读完会得到一个判断:这四件事里没有一件是「让模型更聪明」,全部是「让有限的上下文承载更长的任务」。这正是逆向 Claude Code 会得到的结论——通用性来自上下文的组织方式,而不是某个模型能力。
模型无关:它对开源权重是敞开的
README 专门回答了这一问:任何支持 tool calling 的模型都能跑——前沿 API(OpenAI / Anthropic / Google)、托管在 Baseten 或 Fireworks 上的开源权重、以及经 Ollama、vLLM、llama.cpp 自托管的本地模型。示例代码里写的是 create_deep_agent(model=..., tools=[...], system_prompt=...),三行起一个能规划、能读写文件、能自管上下文的 agent。
这一点对本站的读者尤其重要:它是「用开源权重自建一个 Claude Code 级 harness」这条路上最现成的一块积木。README 还提到 Deep Agents Code——一个终端里的预置编码 agent(自比 Claude Code / Cursor),一行 curl 装好,同样由任意 LLM 驱动。
安全模型:一句必须原样引用的话
README 的安全段落写得异常坦白:Deep Agents 遵循「信任 LLM」模型——agent 能做它的工具允许它做的一切;边界要在工具层与沙箱层强制,不要指望模型自我约束。这是我们见过的 harness 项目里最诚实的一句安全声明,也是选型时最该被读到的一句:它告诉你这个项目的安全边界不在提示词里,在你给的沙箱里。
边界与取舍
- 「有主见」意味着默认值可能与你的流程冲突:它替你决定了规划方式、上下文压缩时机与委派粒度。可覆盖、可替换任何一块,但你得先读懂它默认怎么做。
- 依赖 LangGraph 这一层:继承了持久化与流式,也就继承了它的概念负担(状态、检查点、图)。出问题时要能下到图层排查。
- 安全完全外置:没有内置的沙箱隔离承诺,shell 与文件系统的危险度取决于你接的后端。「信任 LLM」是把责任明确交给你。
- 与商业产品的引力:追踪、评测、部署一等公民支持走 LangSmith;自建可观测栈要自己接。
在 agientry 里的位置
本站 harness 层已有的几条切面不同:hermes-agent、deepseek-harness、pi 是终端形态的编码 agent(面向开发者的成品),Orca / herdr / multica / paperclip 是agent 之上的编排与提效层(管多个 agent、多个工作目录、看板与公司化协作)。Deep Agents 站在两者中间:它是一个可被嵌入的 harness 库,你可以拿它去搭自己的编码 agent,也可以把它编译出的图作为子智能体塞进上层编排。它与 LangGraph 是同一条栈的两层,收录时分开列是为了让读者看清「运行时」与「harness」不是同一个东西。
本页事实来自项目 README(实读全文,含 FAQ 与安全段)与官方文档链接;星标、协议取自 GitHub API。我们没有运行过 Deep Agents,没有做基准或复现测试——子智能体的上下文隔离效果、长对话摘要的信息损失、以及与开源权重模型搭配时的实际可靠性均未经我们验证,因此这一条记为待复现。