<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>LLM on CAO ZUOHUA</title><link>https://caozuohua.github.io/tags/llm/</link><description>Recent content in LLM on CAO ZUOHUA</description><generator>Hugo</generator><language>zh-cn</language><lastBuildDate>Wed, 01 Jul 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://caozuohua.github.io/tags/llm/index.xml" rel="self" type="application/rss+xml"/><item><title>智能体问题：多 Agent 协调</title><link>https://caozuohua.github.io/posts/2026-07-01-agent-multi-agent-coordination/</link><pubDate>Wed, 01 Jul 2026 00:00:00 +0000</pubDate><guid>https://caozuohua.github.io/posts/2026-07-01-agent-multi-agent-coordination/</guid><description>&lt;h2 id="一个人干不了所有活"&gt;一个人干不了所有活&lt;/h2&gt;
&lt;p&gt;单个智能体再强，也有能力边界。它不可能同时是代码专家、财务分析师、法律顾问和设计师。于是多 Agent 协作成为自然选择——让不同专长的 Agent 各司其职，协同完成复杂任务。&lt;/p&gt;
&lt;p&gt;听起来很美好，实战中却是一地鸡毛。&lt;/p&gt;
&lt;p&gt;Medium 上有一篇被广泛引用的文章，标题就很直白：&lt;strong&gt;《Multi-Agent AI 的黑暗心理学：30 种能摧毁你整个系统的失败模式》&lt;/strong&gt;。30 种可能是夸张了，但核心观点不虚——多 Agent 系统的复杂度不是线性增长，而是指数增长。2 个 Agent 的协调问题比 1 个 Agent 多不止一倍。&lt;/p&gt;
&lt;h2 id="三种协作架构"&gt;三种协作架构&lt;/h2&gt;
&lt;p&gt;先理清多 Agent 协作有哪几种模式，再分析各自的问题。&lt;/p&gt;
&lt;h3 id="模式一orchestrator-worker中心调度"&gt;模式一：Orchestrator-Worker（中心调度）&lt;/h3&gt;
&lt;p&gt;一个&amp;quot;主管&amp;quot; Agent 负责理解任务、分解子任务、分派给专业 Worker Agent，最后汇总结果。&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;[Orchestrator] → 分派 → [代码 Agent]
 → 分派 → [财务 Agent]
 → 分派 → [设计 Agent]
 ← 汇总 ← 各 Agent 结果
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;strong&gt;优点&lt;/strong&gt;：逻辑清晰、责任划分明确
&lt;strong&gt;缺点&lt;/strong&gt;：Orchestrator 成为单点瓶颈——它既要理解全局，又要管理分发，还要处理冲突&lt;/p&gt;
&lt;h3 id="模式二pipeline流水线"&gt;模式二：Pipeline（流水线）&lt;/h3&gt;
&lt;p&gt;Agent 按照固定顺序串联执行，前一个的输出是后一个的输入。&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;[需求分析 Agent] → [设计 Agent] → [编码 Agent] → [测试 Agent] → [部署 Agent]
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;strong&gt;优点&lt;/strong&gt;：简单、可预测
&lt;strong&gt;缺点&lt;/strong&gt;：无反馈回路——如果测试 Agent 发现问题需要返回设计阶段，流水线很难回溯&lt;/p&gt;</description></item><item><title>智能体问题：工具调用失败</title><link>https://caozuohua.github.io/posts/2026-07-01-agent-tool-call-failure/</link><pubDate>Wed, 01 Jul 2026 00:00:00 +0000</pubDate><guid>https://caozuohua.github.io/posts/2026-07-01-agent-tool-call-failure/</guid><description>&lt;h2 id="当智能体的手不听使唤"&gt;当智能体的&amp;quot;手&amp;quot;不听使唤&lt;/h2&gt;
&lt;p&gt;如果说幻觉是智能体&amp;quot;脑子&amp;quot;的问题，那工具调用失败就是&amp;quot;手脚&amp;quot;的问题。智能体不仅要思考，还要行动——调用 API、查询数据库、操作文件系统。而但凡涉及外部系统交互，失败的维度比纯文本幻觉要多得多。&lt;/p&gt;
&lt;p&gt;Arize AI 2026 年对生产环境智能体的故障分析指出：&lt;strong&gt;工具相关失败占 Agent 异常的 40% 以上&lt;/strong&gt;，其中最危险的不是&amp;quot;调用失败&amp;quot;本身，而是&lt;strong&gt;失败后的错误处理&lt;/strong&gt;——智能体对错误的理解和处理能力，往往比工具调用本身更不可靠。&lt;/p&gt;
&lt;h2 id="三大失败模式"&gt;三大失败模式&lt;/h2&gt;
&lt;h3 id="模式一静默错误最危险的失败"&gt;模式一：静默错误——最危险的失败&lt;/h3&gt;
&lt;p&gt;工具返回了错误信息，但智能体没有正确解读，把错误响应当做正常结果继续推理。&lt;/p&gt;
&lt;h4 id="典型场景"&gt;典型场景&lt;/h4&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-json" data-lang="json"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;// 智能体调用天气 API
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;{&lt;span style="color:#f92672"&gt;&amp;#34;tool&amp;#34;&lt;/span&gt;: &lt;span style="color:#e6db74"&gt;&amp;#34;get_weather&amp;#34;&lt;/span&gt;, &lt;span style="color:#f92672"&gt;&amp;#34;arguments&amp;#34;&lt;/span&gt;: {&lt;span style="color:#f92672"&gt;&amp;#34;city&amp;#34;&lt;/span&gt;: &lt;span style="color:#e6db74"&gt;&amp;#34;北京&amp;#34;&lt;/span&gt;, &lt;span style="color:#f92672"&gt;&amp;#34;date&amp;#34;&lt;/span&gt;: &lt;span style="color:#e6db74"&gt;&amp;#34;2026-07-01&amp;#34;&lt;/span&gt;}}
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;// API 返回错误
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;{&lt;span style="color:#f92672"&gt;&amp;#34;error&amp;#34;&lt;/span&gt;: &lt;span style="color:#e6db74"&gt;&amp;#34;city_not_found&amp;#34;&lt;/span&gt;, &lt;span style="color:#f92672"&gt;&amp;#34;message&amp;#34;&lt;/span&gt;: &lt;span style="color:#e6db74"&gt;&amp;#34;City name must be in English: Beijing&amp;#34;&lt;/span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;// 智能体把 json 当成了天气数据继续推理
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;根据返回的数据，北京7月1日的湿度和 error 字段显示...&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;这比调用直接报错更危险——至少报错时智能体知道出错了，还能重试。静默错误时，智能体浑然不知，把垃圾数据当成金子继续加工。&lt;/p&gt;
&lt;h4 id="为什么会发生"&gt;为什么会发生？&lt;/h4&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;错误格式不统一&lt;/strong&gt;：不同 API 的错误响应结构不同（HTTP 状态码、JSON error 字段、HTML 错误页……），智能体难以用统一逻辑识别&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Prompt 缺少错误处理指令&lt;/strong&gt;：很多人在 system prompt 里只写了&amp;quot;使用 XX 工具查询&amp;quot;，没写&amp;quot;如果工具返回错误，你应该……&amp;quot;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;模型倾向&amp;quot;继续完成任务&amp;quot;&lt;/strong&gt;：遇到异常数据时，模型的训练倾向是给用户一个答案，而不是停下来讨论 API 报错&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id="模式二参数构造错误最常见的失败"&gt;模式二：参数构造错误——最常见的失败&lt;/h3&gt;
&lt;p&gt;智能体理解了要调什么工具，但构造参数时出错。&lt;/p&gt;
&lt;h4 id="常见错误类型"&gt;常见错误类型&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;格式错误&lt;/strong&gt;：日期传 &lt;code&gt;2026/07/01&lt;/code&gt; 而 API 要 &lt;code&gt;2026-07-01&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;类型错误&lt;/strong&gt;：传字符串 &lt;code&gt;&amp;quot;5&amp;quot;&lt;/code&gt; 而 API 要整数 &lt;code&gt;5&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;枚举错误&lt;/strong&gt;：传 &lt;code&gt;&amp;quot;medium&amp;quot;&lt;/code&gt; 而有效值只有 &lt;code&gt;[&amp;quot;low&amp;quot;, &amp;quot;mid&amp;quot;, &amp;quot;high&amp;quot;]&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;遗漏必填参数&lt;/strong&gt;：忘了传 &lt;code&gt;currency&lt;/code&gt; 字段&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;语义错误&lt;/strong&gt;：传了合法格式但语义不对，比如把 &lt;code&gt;page_size=100&lt;/code&gt; 传给了限制最大 50 的分页接口&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id="根因分析"&gt;根因分析&lt;/h4&gt;
&lt;p&gt;模型对 API 的理解来自 prompt 中的工具描述（Function Schema）。如果描述不够精确——比如某个参数的合法值只写了 &lt;code&gt;string&lt;/code&gt; 没有枚举——模型就只能&amp;quot;猜&amp;quot;。&lt;/p&gt;</description></item><item><title>智能体问题：幻觉与事实错误</title><link>https://caozuohua.github.io/posts/2026-07-01-agent-hallucination-deep-dive/</link><pubDate>Wed, 01 Jul 2026 00:00:00 +0000</pubDate><guid>https://caozuohua.github.io/posts/2026-07-01-agent-hallucination-deep-dive/</guid><description>&lt;h2 id="幻觉智能体最顽固的问题"&gt;幻觉：智能体最顽固的问题&lt;/h2&gt;
&lt;p&gt;如果只能用一个词概括当前 AI 智能体最致命的问题，行业里多数人会选&amp;quot;幻觉&amp;quot;（Hallucination）。通用大模型写诗写周报文采斐然，但让它分析&amp;quot;上季度 A 产品线毛利率下降的原因&amp;quot;，它可能编造一串子虚乌有的数据，还附上看起来很专业的百分比。更糟糕的是——语气越自信，越难被非专业用户识破。&lt;/p&gt;
&lt;p&gt;Fiddler AI 2026 年的报告给出了一个残酷的数字：&lt;strong&gt;生产环境智能体失败率 70%-95%&lt;/strong&gt;，幻觉是头号杀手。BetterYeah 的调研发现，&lt;strong&gt;68% 的企业在 AI 落地中遭遇幻觉问题，其中 32% 因错误累积导致系统性风险&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;这不是&amp;quot;模型还不够聪明&amp;quot;的问题。这是智能体的结构性挑战。&lt;/p&gt;
&lt;h2 id="从单步错误到幻觉累加"&gt;从单步错误到幻觉累加&lt;/h2&gt;
&lt;h3 id="单步幻觉模型不确定时仍自信输出"&gt;单步幻觉：模型不确定时仍&amp;quot;自信输出&amp;quot;&lt;/h3&gt;
&lt;p&gt;LLM 的核心训练目标是&amp;quot;合理续写&amp;quot;，而不是&amp;quot;如实回答&amp;quot;。当训练数据中缺少相关信息时，模型不会说&amp;quot;我不知道&amp;quot;——它会生成一段看起来连贯但实际上没有事实支撑的文字。&lt;/p&gt;
&lt;p&gt;这是因为：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;训练数据偏差&lt;/strong&gt;：互联网文本中，自信断言远多于谦虚声明&amp;quot;我不确定&amp;quot;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;采样机制&lt;/strong&gt;：模型采样概率最高的 token 序列，不受事实约束&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;缺乏不确定性建模&lt;/strong&gt;：模型内部没有显式的&amp;quot;置信度&amp;quot;信号传递给输出层&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;结果：模型在信息不足时的行为是&amp;quot;编造&amp;quot;，而非&amp;quot;沉默&amp;quot;。&lt;/p&gt;
&lt;h3 id="多步累加小偏差滚雪球"&gt;多步累加：小偏差滚雪球&lt;/h3&gt;
&lt;p&gt;当智能体执行多步任务时，单步幻觉的破坏力被指数放大。看一个典型场景：&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;步骤 1：检索客户信息 → 幻觉：编造了不存在的客户 ID
步骤 2：用该 ID 查询订单 → 返回空结果
步骤 3：智能体&amp;#34;推断&amp;#34;该客户是新客户 → 编造注册时间
步骤 4：基于虚假注册时间做客户画像分析 → 输出错误结论
步骤 5：基于错误结论撰写运营建议 → 决策偏离
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;每一步都&amp;quot;合乎逻辑&amp;quot;，但起点就是一个虚构的事实。这就是&lt;strong&gt;幻觉累加效应&lt;/strong&gt;——错误在推理链中不断传播和放大，最终输出和现实南辕北辙。&lt;/p&gt;
&lt;p&gt;2025 年 Q1 某金融机构的案例就是典型：智能体在财报分析中第一次幻觉了一个营收数字，后续所有财务比率、趋势判断、投资建议全部基于这个错误数字展开。表面看报告专业完整，实际结论完全失真。&lt;/p&gt;
&lt;h3 id="为什么传统-nlp-时代的幻觉没那么致命"&gt;为什么传统 NLP 时代的幻觉没那么致命？&lt;/h3&gt;
&lt;p&gt;传统 QA 系统也幻觉，但影响范围有限——一次问答的错误不影响下一次。智能体截然不同：它是一个&lt;strong&gt;持续运行的闭环系统&lt;/strong&gt;，前一步的输出是后一步的输入。一个幻觉 token 就像生物学中的基因突变，在后续&amp;quot;转录&amp;quot;过程中被不断放大。&lt;/p&gt;
&lt;h2 id="三类幻觉的根源"&gt;三类幻觉的根源&lt;/h2&gt;
&lt;h3 id="1-事实性幻觉"&gt;1. 事实性幻觉&lt;/h3&gt;
&lt;p&gt;模型编造不存在的事实。典型表现：&lt;/p&gt;</description></item><item><title>Agent 系列日记 5：为什么 Skill 路由比 ReAct 控制器更适合个人助理</title><link>https://caozuohua.github.io/posts/2026-06-29-skill-routing-vs-react/</link><pubDate>Mon, 29 Jun 2026 00:00:00 +0000</pubDate><guid>https://caozuohua.github.io/posts/2026-06-29-skill-routing-vs-react/</guid><description>&lt;blockquote&gt;
&lt;p&gt;从 luck-agent 到 Hermes-lite，我花了两年时间才想清楚这个问题：80% 的请求不需要&amp;quot;思考&amp;quot;，只需要&amp;quot;路由&amp;quot;。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="回顾react-控制器模式的困境"&gt;回顾：ReAct 控制器模式的困境&lt;/h2&gt;
&lt;p&gt;2024 年做 luck-agent 的时候，我采用的是经典的 &lt;strong&gt;ReAct 模式&lt;/strong&gt;（Reasoning + Acting）：&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;用户输入 → 大模型推理（意图识别 → 规划 → 工具选择 → 执行）→ 输出
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;所有请求，不管简单还是复杂，都走同一个推理链。一个&amp;quot;查 QPC 里有没有 VPS 相关的记录&amp;quot;的请求，也要经过：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;理解自然语言&lt;/li&gt;
&lt;li&gt;判断意图类别&lt;/li&gt;
&lt;li&gt;选择工具（search_qpc）&lt;/li&gt;
&lt;li&gt;构造查询参数&lt;/li&gt;
&lt;li&gt;执行并解释结果&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;问题很明显&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Token 消耗大&lt;/strong&gt;：每次推理要带上完整的 system prompt + 工具定义，光上下文就吃掉 3000-5000 token&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;延迟高&lt;/strong&gt;：一个简单查询要等模型完成完整推理链，响应时间 3-8 秒&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;上下文窗口压力&lt;/strong&gt;：随着工具数量增加（现在 Hermes-lite 有 20+ 个工具），system prompt 越来越大&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;我当时就在知识库里记了一条：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&amp;ldquo;对于个人助理场景，相比最初的 ReAct 控制器模式，Skill 技能路由更适合当前 luckagent：80% 请求是固定模式，不需要复杂推理，技能比 Agent 更稳定，成本更低，响应更快。&amp;rdquo;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="skill-路由的核心思想"&gt;Skill 路由的核心思想&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;一句话&lt;/strong&gt;：预定义技能映射，轻量分类先路由，只加载需要的工具和 prompt。&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;用户输入 → 轻量路由（关键词/意图 → 技能）→ 加载专用 prompt + 工具 → 执行
&lt;/code&gt;&lt;/pre&gt;&lt;h3 id="路由表设计"&gt;路由表设计&lt;/h3&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# 简化版路由逻辑&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;ROUTING_RULES &lt;span style="color:#f92672"&gt;=&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#e6db74"&gt;&amp;#34;qpc&amp;#34;&lt;/span&gt;: {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#e6db74"&gt;&amp;#34;keywords&amp;#34;&lt;/span&gt;: [&lt;span style="color:#e6db74"&gt;&amp;#34;QPC&amp;#34;&lt;/span&gt;, &lt;span style="color:#e6db74"&gt;&amp;#34;知识库&amp;#34;&lt;/span&gt;, &lt;span style="color:#e6db74"&gt;&amp;#34;记一下&amp;#34;&lt;/span&gt;, &lt;span style="color:#e6db74"&gt;&amp;#34;记录&amp;#34;&lt;/span&gt;],
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#e6db74"&gt;&amp;#34;skill&amp;#34;&lt;/span&gt;: &lt;span style="color:#e6db74"&gt;&amp;#34;qpc&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#e6db74"&gt;&amp;#34;tools&amp;#34;&lt;/span&gt;: [&lt;span style="color:#e6db74"&gt;&amp;#34;feishu_bitable_read&amp;#34;&lt;/span&gt;, &lt;span style="color:#e6db74"&gt;&amp;#34;feishu_bitable_write&amp;#34;&lt;/span&gt;],
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#e6db74"&gt;&amp;#34;prompt&amp;#34;&lt;/span&gt;: &lt;span style="color:#e6db74"&gt;&amp;#34;qpc_skill_prompt&amp;#34;&lt;/span&gt; &lt;span style="color:#75715e"&gt;# 只加载 QPC 相关的 prompt&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; },
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#e6db74"&gt;&amp;#34;vps&amp;#34;&lt;/span&gt;: {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#e6db74"&gt;&amp;#34;keywords&amp;#34;&lt;/span&gt;: [&lt;span style="color:#e6db74"&gt;&amp;#34;VPS&amp;#34;&lt;/span&gt;, &lt;span style="color:#e6db74"&gt;&amp;#34;服务器&amp;#34;&lt;/span&gt;, &lt;span style="color:#e6db74"&gt;&amp;#34;防火墙&amp;#34;&lt;/span&gt;, &lt;span style="color:#e6db74"&gt;&amp;#34;Docker&amp;#34;&lt;/span&gt;],
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#e6db74"&gt;&amp;#34;skill&amp;#34;&lt;/span&gt;: &lt;span style="color:#e6db74"&gt;&amp;#34;gcp-vps-ops&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#e6db74"&gt;&amp;#34;tools&amp;#34;&lt;/span&gt;: [&lt;span style="color:#e6db74"&gt;&amp;#34;terminal&amp;#34;&lt;/span&gt;, &lt;span style="color:#e6db74"&gt;&amp;#34;read_file&amp;#34;&lt;/span&gt;],
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#e6db74"&gt;&amp;#34;prompt&amp;#34;&lt;/span&gt;: &lt;span style="color:#e6db74"&gt;&amp;#34;vps_skill_prompt&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; },
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#e6db74"&gt;&amp;#34;blog&amp;#34;&lt;/span&gt;: {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#e6db74"&gt;&amp;#34;keywords&amp;#34;&lt;/span&gt;: [&lt;span style="color:#e6db74"&gt;&amp;#34;博客&amp;#34;&lt;/span&gt;, &lt;span style="color:#e6db74"&gt;&amp;#34;文章&amp;#34;&lt;/span&gt;, &lt;span style="color:#e6db74"&gt;&amp;#34;Hugo&amp;#34;&lt;/span&gt;, &lt;span style="color:#e6db74"&gt;&amp;#34;发布&amp;#34;&lt;/span&gt;],
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#e6db74"&gt;&amp;#34;skill&amp;#34;&lt;/span&gt;: &lt;span style="color:#e6db74"&gt;&amp;#34;hugo-blog&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#e6db74"&gt;&amp;#34;tools&amp;#34;&lt;/span&gt;: [&lt;span style="color:#e6db74"&gt;&amp;#34;terminal&amp;#34;&lt;/span&gt;, &lt;span style="color:#e6db74"&gt;&amp;#34;read_file&amp;#34;&lt;/span&gt;, &lt;span style="color:#e6db74"&gt;&amp;#34;write_file&amp;#34;&lt;/span&gt;],
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#e6db74"&gt;&amp;#34;prompt&amp;#34;&lt;/span&gt;: &lt;span style="color:#e6db74"&gt;&amp;#34;blog_skill_prompt&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="对比同样查-qpc操作"&gt;对比：同样&amp;quot;查 QPC&amp;quot;操作&lt;/h3&gt;
&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;指标&lt;/th&gt;
					&lt;th&gt;ReAct 模式&lt;/th&gt;
					&lt;th&gt;Skill 路由&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;上下文 token&lt;/td&gt;
					&lt;td&gt;~4000（全量工具定义）&lt;/td&gt;
					&lt;td&gt;~800（仅 QPC 相关）&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;首次响应延迟&lt;/td&gt;
					&lt;td&gt;3-8s&lt;/td&gt;
					&lt;td&gt;0.5-1.5s&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;工具调用次数&lt;/td&gt;
					&lt;td&gt;2-3 次（推理+执行）&lt;/td&gt;
					&lt;td&gt;1 次（直接执行）&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;准确率&lt;/td&gt;
					&lt;td&gt;92%（模型可能选错工具）&lt;/td&gt;
					&lt;td&gt;98%（路由确定性高）&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="hermes-lite-的-skill-实现"&gt;Hermes-lite 的 Skill 实现&lt;/h2&gt;
&lt;p&gt;Hermes-lite 的 skill 系统是这样工作的：&lt;/p&gt;</description></item><item><title>Agent 的记忆：Hermes-Lite 如何用 5 层结构解决「鱼的难题」</title><link>https://caozuohua.github.io/posts/2026-07-01-agent-memory-5-layer-architecture/</link><pubDate>Sun, 28 Jun 2026 00:00:00 +0000</pubDate><guid>https://caozuohua.github.io/posts/2026-07-01-agent-memory-5-layer-architecture/</guid><description>&lt;blockquote&gt;
&lt;p&gt;人类 chatbot 最尴尬的瞬间：第二次见面完全不认识你。Agent 的记忆系统怎么同时做到持久化、低成本、不丢上下文？我深入 Hermes-Lite 源码写了一个月，拆解出 5 层架构。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="从鱼的难题开始"&gt;从「鱼的难题」开始&lt;/h2&gt;
&lt;p&gt;用过 ChatGPT 的人都知道一个痛：&lt;strong&gt;下次打开，它完全不记得你了&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;对一次性聊天这没问题。但对个人助理——帮你管理 200 条知识库、追踪几个项目的进度、记住你的偏好——这等于每次都要把整段友情重来。&lt;/p&gt;
&lt;p&gt;我做 QPC（个人知识库）时就被这个问题卡过。后来折腾 Hermes-Lite、nanobot，逐步摸到一条可行的路。这篇文章从 Hermes-Lite 的实际源码出发，拆解它的 5 层记忆架构，看看一个 Agent 是怎么解决「鱼的难题」的。&lt;/p&gt;
&lt;h2 id="总览5-层架构"&gt;总览：5 层架构&lt;/h2&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;┌─────────────────────────────────────────────┐
│ Layer 1: 持久记忆 (MEMORY.md / USER.md) │ ← 跨会话，纯文本
├─────────────────────────────────────────────�
│ Layer 2: 会话压缩 (ContextCompressor) │ ← 长对话不爆
├─────────────────────────────────────────────┤
│ Layer 3: 会话检索 (session_search + FTS5) │ ← 历史不丢
├─────────────────────────────────────────────�
│ Layer 4: 增量写入门控 (Nudge 机制) │ ← 该记就记
├─────────────────────────────────────────────�
│ Layer 5: 原子性保障 (fcntl + 临时文件) │ ← 不丢不坏
└─────────────────────────────────────────────┘
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;每一层解决一个独立问题，层与层之间不耦合。下面逐层拆解。&lt;/p&gt;</description></item><item><title>Hermes-lite 裁剪指南：在 1GB VPS 上跑轻量 AI Agent</title><link>https://caozuohua.github.io/posts/2026-06-24-hermes-lite-trimming-guide/</link><pubDate>Wed, 24 Jun 2026 23:58:52 +0000</pubDate><guid>https://caozuohua.github.io/posts/2026-06-24-hermes-lite-trimming-guide/</guid><description>&lt;h2 id="为什么要裁剪"&gt;为什么要裁剪&lt;/h2&gt;
&lt;p&gt;完整版 Hermes Agent（Nous Research）功能丰富：多平台网关、浏览器自动化、语音 TTS/STT、多 Agent 协作、Kanban 看板等。但这些功能对资源要求不低——在我的测试里，完整配置更适合至少 2GB 内存的机器。&lt;/p&gt;
&lt;p&gt;我有一台 GCP e2-micro（2 vCPU / 954MB RAM），想用它跑一个 24/7 在线的 AI Agent 接入飞书。完整版装不下，于是有了这个裁剪实践。&lt;/p&gt;
&lt;h2 id="三阶段渐进式裁剪"&gt;三阶段渐进式裁剪&lt;/h2&gt;
&lt;p&gt;裁剪不是一步完成的，而是三阶段递进：&lt;/p&gt;
&lt;h3 id="第一阶段本地-codex-完成初期核心裁剪"&gt;第一阶段：本地 Codex 完成初期核心裁剪&lt;/h3&gt;
&lt;p&gt;在本地电脑上，利用 &lt;strong&gt;Codex（OpenAI）&lt;/strong&gt; 作为辅助分析工具，对完整版 Hermes 进行全面&amp;quot;解剖&amp;quot;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;逐一扫描 &lt;code&gt;~/.hermes/&lt;/code&gt; 目录结构，识别每个模块的职责&lt;/li&gt;
&lt;li&gt;分析 67 个技能的依赖关系，标记哪些是核心链路的、哪些是边缘功能&lt;/li&gt;
&lt;li&gt;梳理 config.yaml 中每个配置项的实际作用，搞清楚&amp;quot;关掉会怎样&amp;quot;&lt;/li&gt;
&lt;li&gt;输出一份裁剪清单：哪些 toolset 可以禁、哪些 skill 可以删、哪些配置可以收紧&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这一阶段的核心价值：&lt;strong&gt;把&amp;quot;能不能关&amp;quot;这个判断做对&lt;/strong&gt;。Codex 帮助理解了代码间的依赖关系，避免直接关某个功能导致连锁崩溃。&lt;/p&gt;
&lt;h3 id="第二阶段大-vps-上跑完整版--压测验证"&gt;第二阶段：大 VPS 上跑完整版 + 压测验证&lt;/h3&gt;
&lt;p&gt;在&lt;strong&gt;一台大内存 VPS&lt;/strong&gt; 上安装完整版 Hermes，作为&amp;quot;对照基准&amp;quot;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;记录完整版的实际内存占用（idle / 高负载两种状态）&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;这一阶段的目的：&lt;strong&gt;建立性能基线 + 验证裁剪组合的安全性&lt;/strong&gt;。在大 VPS 上翻车无所谓，在小 VPS 上翻车就是服务宕机。&lt;/p&gt;</description></item></channel></rss>