LangChain 创始工程师 Jacob Lee 在 JetBrains 官方博客发了一篇长文(4/8),分享他如何用 ACP + Deep Agents 构建了一个自定义 Coding Agent,完全替代 Claude Code 作为日常主力开发工具。这不是一个 demo,而是一个已经在真实生产环境中跑了数月的方案。
📌 核心问题:为什么不继续用 Claude Code?
Jacob 是 Claude Code 的早期超级用户。但他越来越不安:把工作的核心部分交给一个不透明的第三方黑盒,出了问题连调试都做不到。模型训练自己的不现实,但 harness 层——也就是包裹在模型外面的那层软件——完全是自己能控制的。
「The agent harness and UX on top of it is just software, and software IS something I understand.」
这句话是整篇文章的灵魂。Claude Code 的 harness 是黑盒的,你看不到它传了什么 context 给模型、调了哪些工具、在哪一步出了问题。Jacob 的目标是:把 harness 变成透明的、可调试的、可定制的软件。
🔧 技术架构:Deep Agents + ACP
Jacob 的方案由两个核心组件构成:
Deep Agents(LangChain 开源框架)
Deep Agents 提供了 Agent 的核心能力:
- 文件系统工具:read / write / edit_file / ls / grep,Agent 可以直接操作代码库
- Shell 访问:Agent 可以运行 lint、测试、构建等验证命令
- Human-in-the-loop:危险操作需要人工审批,防止 Agent 误删文件或执行危险命令
- write_todos 工具:强制 Agent 做规划——把大任务拆成小步骤,逐个执行。对长链重构特别有效
- 子 Agent 生成:可以 spawn 隔离的子 Agent,各自独立上下文,并行或分模块工作,完成后汇报。保持主 Agent 上下文窗口可控
- 流式输出 + Prompt Cache + 上下文压缩:标准但关键的 UX 基础设施
ACP(Agent Client Protocol)
ACP 是 JetBrains + Zed 联合发起的开放标准,定义 IDE 如何与 Agent 通信。2025 年 9 月发布,2026 年 4 月 Agent Registry 上线。核心能力:
- @mention 上下文传递:直接在 IDE 里 @文件名 / @代码块,Agent 精确知道你在看什么
- 权限请求机制:Agent 想执行危险操作时,通过 ACP 向 IDE 发送权限请求,用户可以批准 / 拒绝 / 始终允许
- Agent Plan 映射:Deep Agents 的 write_todos 直接映射到 ACP 的 agent plan,用户可以在 IDE 里看到 Agent 的执行计划
- 会话持久化:线程和会话状态与 Deep Agents 的 checkpointer 几乎 1:1 映射
- 模型热切换:可以 mid-session 切换模型(GPT-5.4 → Claude → GLM-5),不同模型给不同视角
🔥 关键成果
Jacob 原本没打算真的替换 Claude Code,结果跑了几个迭代后发现效果超预期:
- 完全替代 Claude Code 作为日常主力 — 不是偶尔用用,是每天都在用
- 多模型灵活切换 — Anthropic 宕机时切到 GPT-5.4 无感过渡;难题时在 Claude 和 GPT 之间切换获取不同视角;开源模型 GLM-5 成本低且能力够
- 全链路可观测性 — LangSmith Tracing 让每一步操作都可 trace:传了什么 context、调了什么工具、哪一步出错。发现了 system prompt 里的一个 bug
- 代码级控制 — 不再依赖 config 文件,直接在 Python 里修改 Agent 行为。加 skill、改 system prompt、加工具、加 MCP server,全部代码化
🧠 关键洞察
1. Claude Code 不是魔法,是一堆聪明的 trick
Jacob 的原话:「Claude Code isn't magic but a bundle of very clever tricks rolled up into a neat package.」这是整篇文章最有价值的一句话。很多人把 Claude Code 当成不可超越的黑盒,但它的 harness 层就是软件,软件就能被理解和复现。
2. ACP vs MCP:互补而非竞争
MCP(Model Context Protocol)解决的是 Agent ↔ 外部服务的连接(数据库、API、文件系统等)。ACP(Agent Client Protocol)解决的是 IDE ↔ Agent 的连接。两者互补:
- MCP = Agent 的「工具箱」—— 让 Agent 能调用外部服务
- ACP = Agent 的「遥控器」—— 让 IDE 能控制 Agent 行为
对于 Coding Agent 场景,两者缺一不可。MCP 让 Agent 能读写代码库、调用 CI/CD;ACP 让开发者能在 IDE 里直接与 Agent 交互,不用切终端。
3. Harness 可控 = 开发者主权回归
Jacob 的核心动机不是「Claude Code 不好用」,而是「我想理解并控制我每天使用的工具」。这是 Harness Engineering 精神的本质:不是用最炫的框架,而是用你理解的、你能改的、你能 debug 的工具。当 Anthropic 宕机时,Jacob 无感切换到 GPT-5.4——因为他控制了 harness 层,模型只是可替换的「引擎」。
4. Observability 是被严重低估的能力
LangSmith Tracing 帮 Jacob 发现了一个 system prompt bug——Agent 把项目根目录设成了文件系统根目录,导致大范围扫描。这种 bug 在 Claude Code 的黑盒 harness 里根本不可能发现。可观测性不是锦上添花,而是生产环境的必需品。
🚀 引发思考
这篇文章最深层的启示是:Coding Agent 的竞争正在从「谁的模型更强」转向「谁的 harness 更好」。模型是可替换的引擎,harness 才是差异化的所在。
对于 AI 工程师来说,有几个值得行动的方向:
- 1. 学习 ACP — ACP Agent Registry 已上线,JetBrains + Zed + Cursor 都在用。理解 ACP 就是理解 IDE ↔ Agent 的未来交互模式。
- 2. 尝试自己搭 harness — 不需要从零写,用 Deep Agents 或 OpenHarness 这样的开源框架起步,搭一个自己的 Coding Agent。哪怕只是练手,也能让你理解 Claude Code 的「聪明 trick」到底是什么。
- 3. 重视可观测性 — 给你的 Agent 加 tracing。LangSmith、Langfuse、或者自建,都行。能看到 Agent 每一步在想什么、做什么,是 debug 和优化的前提。
- 4. 关注 harness 层的开源生态 — Deep Agents、OpenHarness、OpenClaw、ACP,这些开源项目正在快速成熟。用不了多久,「自定义 Coding Agent」会像「自定义 Vim 配置」一样普遍。
📎 相关阅读
- JetBrains 官方博客: Using ACP + Deep Agents to Demystify Modern Software Engineering(2026/4/8)
- LangChain Deep Agents: github.com/langchain-ai/deepagents
- ACP Agent Protocol: agentclientprotocol.com
- OpenHarness: github.com/HKUDS/OpenHarness — Python 实现的 Agent Harness 框架
- Harness Engineering 核心理念:模型提供智能,harness 提供手、眼、记忆和安全边界
逍遥云初 | 2026.04.27






