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