<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>LangChain on Lucas Ma 的博客</title>
    <link>https://blog.lucasma.cc/categories/langchain/</link>
    <description>Recent content in LangChain on Lucas Ma 的博客</description>
    <generator>Hugo</generator>
    <language>zh-cn</language>
    <copyright>2026 Lucas Ma</copyright>
    <lastBuildDate>Mon, 08 Jun 2026 22:01:37 +0800</lastBuildDate>
    <atom:link href="https://blog.lucasma.cc/categories/langchain/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>LangChain 自定义 Agent Harness：为什么 Agent 不是只靠模型就够了</title>
      <link>https://blog.lucasma.cc/posts/langchain-custom-agent-harness/</link>
      <pubDate>Mon, 08 Jun 2026 22:01:37 +0800</pubDate>
      <guid>https://blog.lucasma.cc/posts/langchain-custom-agent-harness/</guid>
      <description>&lt;p&gt;如果你最近在做 Agent，大概率已经碰过一个很现实的问题：模型本身很聪明，但一旦任务变长、工具变多、状态变复杂，它就开始“看起来会做，实际上做不稳”。&lt;/p&gt;
&lt;p&gt;LangChain 这篇 &lt;a href=&#34;https://www.langchain.com/blog/how-to-build-a-custom-agent-harness&#34;&gt;How to Build a Custom Agent Harness&lt;/a&gt; 讲的不是又一个 Agent 炫技 demo，而是一个更底层的问题：&lt;strong&gt;Agent 真正的工程难点，不在模型，而在 harness&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;你可以把它理解成一句特别好记的话：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;code&gt;agent = model + harness&lt;/code&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;模型负责“想”，harness 负责“把想法变成可执行、可控制、可恢复的系统”。&lt;/p&gt;
&lt;h2 id=&#34;目录&#34;&gt;目录&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;#%E5%85%88%E8%AF%B4%E7%BB%93%E8%AE%BA%E4%B8%BA%E4%BB%80%E4%B9%88-harness-%E6%89%8D%E6%98%AF%E6%A0%B8%E5%BF%83&#34;&gt;先说结论：为什么 harness 才是核心&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#%E4%BB%80%E4%B9%88%E6%98%AF-agent-harness&#34;&gt;什么是 Agent Harness&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#middleware-%E4%B8%BA%E4%BB%80%E4%B9%88%E6%98%AF%E5%85%B3%E9%94%AE%E6%8A%BD%E8%B1%A1&#34;&gt;Middleware 为什么是关键抽象&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#%E4%BB%BB%E5%8A%A1%E5%92%8C-harness-%E5%BF%85%E9%A1%BB%E5%8C%B9%E9%85%8D&#34;&gt;任务和 Harness 必须匹配&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#%E4%B8%80%E4%B8%AA%E6%9B%B4%E5%AE%9E%E7%94%A8%E7%9A%84%E6%9E%B6%E6%9E%84%E5%9B%BE&#34;&gt;一个更实用的架构图&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#%E6%80%8E%E4%B9%88%E8%87%AA%E5%B7%B1%E6%90%AD%E4%B8%80%E4%B8%AA%E5%8F%AF%E5%AE%9A%E5%88%B6%E7%9A%84-harness&#34;&gt;怎么自己搭一个可定制的 Harness&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#%E5%AE%9E%E6%88%98%E5%BB%BA%E8%AE%AE&#34;&gt;实战建议&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#%E6%80%BB%E7%BB%93&#34;&gt;总结&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;先说结论为什么-harness-才是核心&#34;&gt;先说结论：为什么 harness 才是核心&lt;/h2&gt;
&lt;p&gt;很多人做 Agent 的思路是反过来的：先挑最强模型，再往里面塞工具，最后祈祷它足够稳定。&lt;/p&gt;
&lt;p&gt;这条路不是完全不行，但有三个典型问题：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;任务一长，上下文很快爆掉&lt;/li&gt;
&lt;li&gt;工具一多，调用顺序和状态管理就开始失控&lt;/li&gt;
&lt;li&gt;一旦涉及审批、重试、隔离、记忆，纯 prompt 很难兜住&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;LangChain 这篇文章的核心态度很明确：&lt;strong&gt;不要把 Agent 只看成一个模型调用循环，Agent 本质上是一套围绕模型的执行外壳&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;这个外壳要负责的事情，比你想象得多：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;给模型喂对上下文&lt;/li&gt;
&lt;li&gt;控制工具注册和生命周期&lt;/li&gt;
&lt;li&gt;管理状态、记忆和中间结果&lt;/li&gt;
&lt;li&gt;拦截异常和失败&lt;/li&gt;
&lt;li&gt;在关键点插入策略、审批和审计&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;所以真正值得优化的，不是“模型再聪明一点”，而是“harness 能不能把模型放到正确的工作环境里”。&lt;/p&gt;
&lt;h2 id=&#34;什么是-agent-harness&#34;&gt;什么是 Agent Harness&lt;/h2&gt;
&lt;p&gt;原文里最重要的一句话是：&lt;strong&gt;harness 是围绕模型的脚手架&lt;/strong&gt;。&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
