<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>AI Agent 工程 on 卓琪的开发笔记</title>
    <link>https://zhuoqidev.com/categories/ai-agent-%E5%B7%A5%E7%A8%8B/</link>
    <description>Recent content in AI Agent 工程 on 卓琪的开发笔记</description>
    <generator>Hugo -- gohugo.io</generator>
    <language>zh-CN</language>
    <copyright>© 2026 Liu ZhuoQi</copyright>
    <lastBuildDate>Thu, 30 Jul 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://zhuoqidev.com/categories/ai-agent-%E5%B7%A5%E7%A8%8B/index.xml" rel="self" type="application/rss+xml" />
    
    <item>
      <title>OpenClaw 记忆实战：从「向量搜索挂了也能用」到用 NVIDIA 免费 API 补全最后一块拼图</title>
      <link>https://zhuoqidev.com/posts/openclaw-memory-text-to-vector/</link>
      <pubDate>Sat, 20 Jun 2026 00:00:00 +0000</pubDate>
      
      <guid>https://zhuoqidev.com/posts/openclaw-memory-text-to-vector/</guid>
      <description>OpenClaw 记忆系统的向量检索默认不可用——但 BM25 文本搜索兜底让系统照常运转了两周。当你发现「不配 embedding 也能跑」，到底要不要修？怎么用 NVIDIA 免费 API 零成本补上？</description>
      
    </item>
    
    <item>
      <title>OpenClaw 实战：一行路径省掉 84% 的工具调用——Cron Job 排障实录</title>
      <link>https://zhuoqidev.com/posts/openclaw-cron-skill-optimization/</link>
      <pubDate>Sat, 20 Jun 2026 00:00:00 +0000</pubDate>
      
      <guid>https://zhuoqidev.com/posts/openclaw-cron-skill-optimization/</guid>
      <description>OpenClaw 的 daily-ai-news 定时任务连续超时。根因不是模型不够强——是 SKILL.md 里少写了一行绝对路径，导致 Agent 每次花 15 次 exec 搜索工具位置。消息数 165→54，exec 调用 44→7，一行路径比任何算法调优都管用。</description>
      
    </item>
    
    <item>
      <title>Claude 工具调用范式转移：Programmatic Tool Calling 与 Dynamic Filter 深度解读</title>
      <link>https://zhuoqidev.com/posts/claude-programmatic-tool-calling-dynamic-filter/</link>
      <pubDate>Sat, 13 Jun 2026 00:00:00 +0000</pubDate>
      
      <guid>https://zhuoqidev.com/posts/claude-programmatic-tool-calling-dynamic-filter/</guid>
      <description>&lt;div class=&#34;lead text-neutral-500 dark:text-neutral-400 !mb-9 text-xl&#34;&gt;&#xA;  真正的变化不是“又多了两个工具功能”，而是 Agent 开始把多步工具编排移入代码执行环境，并只把压缩后的结果带回模型上下文。&#xA;&lt;/div&gt;&#xA;&#xA;&#xA;&lt;h2 class=&#34;relative group&#34;&gt;背景：Agent 工具调用的成本困境&#xA;    &lt;div id=&#34;背景agent-工具调用的成本困境&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;&#xA;    &#xA;    &lt;span&#xA;        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;&#xA;        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#%e8%83%8c%e6%99%afagent-%e5%b7%a5%e5%85%b7%e8%b0%83%e7%94%a8%e7%9a%84%e6%88%90%e6%9c%ac%e5%9b%b0%e5%a2%83&#34; aria-label=&#34;锚点&#34;&gt;#&lt;/a&gt;&#xA;    &lt;/span&gt;&#xA;    &#xA;&lt;/h2&gt;&#xA;&lt;p&gt;在传统 Agent 工具调用模型中，每调用一个工具都需要完成一次&amp;quot;模型推理 → 工具执行 → 结果返回 → 模型再推理&amp;quot;的完整回合。这个看似自然的循环，在工具调用变多时会暴露出三个致命问题：&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;&lt;strong&gt;上下文污染&lt;/strong&gt;：每个工具的结果都被原封不动地注入上下文窗口。查 20 个员工的报销记录，2000+ 条费用明细全部进入 context，即使你只需要知道&amp;quot;哪 3 个人超预算了&amp;quot;。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;推理开销&lt;/strong&gt;：每个工具调用都需要一次完整的模型推理。5 个工具调用 = 5 次推理 pass，每次几百毫秒到几秒不等。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;噪声导致准确率下降&lt;/strong&gt;：当上下文窗口塞满了中间结果，模型不得不在大量噪声中寻找信号。&lt;a href=&#34;https://arxiv.org/abs/2509&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;Context Rot 研究&lt;/a&gt; 表明，LLM 在复杂任务上的性能会随上下文增长而下降 50-70%。&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;p&gt;正如 Bruno 在 &lt;a href=&#34;https://cc.bruniaux.com/guide/architecture/&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;Claude Code Architecture Guide&lt;/a&gt; 中所指出的：&lt;strong&gt;&amp;ldquo;Outer Loop（模型外的一切：上下文管理、工具调用、验证、记忆巩固）开始比模型推理本身更决定系统质量。&amp;rdquo;&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;Anthropic 在 2025 年 11 月到 2026 年 2 月间陆续推出的一系列工具使用增强功能，本质上都是为了解决 Outer Loop 的效率问题。其中 &lt;strong&gt;Programmatic Tool Calling (PTC)&lt;/strong&gt; 和 &lt;strong&gt;Dynamic Filtering&lt;/strong&gt; 是最具范式转移意义的两项。&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>OpenClaw 生产踩坑：当最先进的记忆系统遇到最静默的失败</title>
      <link>https://zhuoqidev.com/posts/openclaw-pitfalls/</link>
      <pubDate>Wed, 27 May 2026 00:00:00 +0000</pubDate>
      
      <guid>https://zhuoqidev.com/posts/openclaw-pitfalls/</guid>
      <description>从部署到排障，记录 OpenClaw 从启动失败、飞书消息静默吞回复到 production 稳定的全链路实战经验——compaction safeguard、五层排查法、model-harness-fit 与记忆系统对比。</description>
      
    </item>
    
    <item>
      <title>生产环境 Agent 实践：为什么我们从 Celery 迁移到 Temporal</title>
      <link>https://zhuoqidev.com/posts/why-temporal-not-celery/</link>
      <pubDate>Sat, 16 May 2026 00:00:00 +0000</pubDate>
      
      <guid>https://zhuoqidev.com/posts/why-temporal-not-celery/</guid>
      <description>&lt;div class=&#34;lead text-neutral-500 dark:text-neutral-400 !mb-9 text-xl&#34;&gt;&#xA;  2026 年 4 月，我们把 seo-project 的任务队列从 Celery 全面迁移到了 Temporal。删除的依赖只有一个（&lt;code&gt;celery&lt;/code&gt;），新增的核心代码有 11 个文件（&lt;code&gt;src/infrastructure/temporal/&lt;/code&gt;），容器从 &lt;code&gt;api/worker/beat&lt;/code&gt; 变成了 &lt;code&gt;api/temporal_worker_blue/green&lt;/code&gt;（蓝绿部署）。&#xA;&lt;/div&gt;&#xA;&#xA;&lt;p&gt;这件事做完后，最常被问到的问题是：&lt;strong&gt;为什么不用 Celery？已经能跑的东西换它干什么？&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;这篇文章就是答案。它不来自文档对比，来自生产环境跑 Agent 流水线时逐条撞上的坑。&lt;/p&gt;&#xA;&lt;p&gt;这张图先划清两个工具的&lt;strong&gt;问题层级&lt;/strong&gt;。Celery 负责把任务交给 Worker；Temporal 额外保存事件历史，让多阶段流程能够从故障点恢复。迁移的核心不是换一个更快的队列，而是获得可重放的状态机。&lt;/p&gt;&#xA;&#xA;&lt;figure&gt;&#xA;      &lt;img class=&#34;my-0 rounded-md&#34; src=&#34;https://zhuoqidev.com/images/posts/why-temporal-not-celery/celery-vs-temporal-bilingual-v1-4k.png&#34; alt=&#34;Celery 任务队列与 Temporal 持久化工作流的执行语义对比&#34; /&gt;&#xA;  &#xA;  &lt;figcaption&gt;Celery 与 Temporal：前者擅长分发独立异步任务；后者用事件历史、检查点与重放语义支撑长时多阶段流程。C 阶段失败时，关键差异是整批重试还是从 C 恢复。&lt;/figcaption&gt;&#xA;  &lt;/figure&gt;&#xA;&lt;hr&gt;&#xA;&#xA;&lt;h2 class=&#34;relative group&#34;&gt;Celery 能做的事，为什么在 Agent 场景里开始不够用&#xA;    &lt;div id=&#34;celery-能做的事为什么在-agent-场景里开始不够用&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;&#xA;    &#xA;    &lt;span&#xA;        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;&#xA;        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#celery-%e8%83%bd%e5%81%9a%e7%9a%84%e4%ba%8b%e4%b8%ba%e4%bb%80%e4%b9%88%e5%9c%a8-agent-%e5%9c%ba%e6%99%af%e9%87%8c%e5%bc%80%e5%a7%8b%e4%b8%8d%e5%a4%9f%e7%94%a8&#34; aria-label=&#34;锚点&#34;&gt;#&lt;/a&gt;&#xA;    &lt;/span&gt;&#xA;    &#xA;&lt;/h2&gt;&#xA;&lt;p&gt;先说清楚一个基本判断：&lt;strong&gt;Celery 是好工具&lt;/strong&gt;。对于&amp;quot;发封邮件、生成一张缩略图、推送一条通知&amp;quot;这类标准异步任务，它完全够用，工业界跑了十几年。&lt;/p&gt;&#xA;&lt;p&gt;但我们跑的负载和这不一样：&lt;/p&gt;&#xA;&lt;div class=&#34;highlight-wrapper&#34;&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;&#xA;&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;&#xA;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34; id=&#34;1&#34;&gt;&lt;a class=&#34;lnlinks&#34; href=&#34;#1&#34;&gt;1&lt;/a&gt;&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34; id=&#34;2&#34;&gt;&lt;a class=&#34;lnlinks&#34; href=&#34;#2&#34;&gt;2&lt;/a&gt;&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34; id=&#34;3&#34;&gt;&lt;a class=&#34;lnlinks&#34; href=&#34;#3&#34;&gt;3&lt;/a&gt;&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34; id=&#34;4&#34;&gt;&lt;a class=&#34;lnlinks&#34; href=&#34;#4&#34;&gt;4&lt;/a&gt;&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34; id=&#34;5&#34;&gt;&lt;a class=&#34;lnlinks&#34; href=&#34;#5&#34;&gt;5&lt;/a&gt;&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34; id=&#34;6&#34;&gt;&lt;a class=&#34;lnlinks&#34; href=&#34;#6&#34;&gt;6&lt;/a&gt;&#xA;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&#xA;&lt;td class=&#34;lntd&#34;&gt;&#xA;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;一个 Run 包含 N 条 longtail&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;每条 longtail 跑 A → B → C → D 四个 Agent 阶段&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;每个阶段调一次或多次 AI API&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;总耗时任意一条都在 60-180 秒区间&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;每一步的中间结果需要持久化&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;任何一步失败需要知道&amp;#34;停在哪、为什么、能不能只重试这一步&amp;#34;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&lt;/div&gt;&#xA;&lt;p&gt;这是&lt;strong&gt;有状态的、长时的、多阶段的业务流程&lt;/strong&gt;。任务队列和业务流程引擎之间的分界线，就在这里。&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>什么时候用 RAG，什么时候用 LLM Wiki，什么时候用纯文本记忆——一个 Agent 记忆选型框架</title>
      <link>https://zhuoqidev.com/posts/memory-choice-framework/</link>
      <pubDate>Mon, 11 May 2026 00:00:00 +0000</pubDate>
      
      <guid>https://zhuoqidev.com/posts/memory-choice-framework/</guid>
      <description>&lt;div class=&#34;lead text-neutral-500 dark:text-neutral-400 !mb-9 text-xl&#34;&gt;&#xA;  做 Agent 系统的人迟早会撞上这个选择题：&lt;strong&gt;用户的数据往哪放，下次对话怎么记住？&lt;/strong&gt;&#xA;&lt;/div&gt;&#xA;&#xA;&lt;p&gt;目前工业界有三条主流路线——RAG（向量检索）、LLM Wiki（结构化知识注入）、纯文本上下文记忆（CLAUDE.md / Cursor Rules 模式）。三条路各有拥趸，但&lt;strong&gt;选错的代价很大&lt;/strong&gt;：RAG 做轻了是噪音生成器，纯文本做重了是 token 焚化炉。&lt;/p&gt;&#xA;&lt;p&gt;这篇给出一个可以直接用的决策框架。&lt;/p&gt;&#xA;&lt;p&gt;先看三条路线的系统边界。它们的核心差异不是数据库品牌，而是&lt;strong&gt;检索发生在什么时候、多少内容进入 Context、写入和维护由谁负责&lt;/strong&gt;。&lt;/p&gt;&#xA;&#xA;&lt;figure&gt;&#xA;      &lt;img class=&#34;my-0 rounded-md&#34; src=&#34;https://zhuoqidev.com/images/posts/memory-choice-framework/three-memory-paths-bilingual-v1-4k.png&#34; alt=&#34;RAG、LLM Wiki 与纯文本上下文记忆的选型对比&#34; /&gt;&#xA;  &#xA;  &lt;figcaption&gt;三种记忆路线：RAG 擅长从大规模异构资料中按需召回；LLM Wiki 强调结构与审计；纯文本适合少量高价值、需要确定性注入的规则。没有一条路线在所有维度都占优。&lt;/figcaption&gt;&#xA;  &lt;/figure&gt;&#xA;&lt;hr&gt;&#xA;&#xA;&lt;h2 class=&#34;relative group&#34;&gt;三种方案一句话定义&#xA;    &lt;div id=&#34;三种方案一句话定义&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;&#xA;    &#xA;    &lt;span&#xA;        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;&#xA;        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#%e4%b8%89%e7%a7%8d%e6%96%b9%e6%a1%88%e4%b8%80%e5%8f%a5%e8%af%9d%e5%ae%9a%e4%b9%89&#34; aria-label=&#34;锚点&#34;&gt;#&lt;/a&gt;&#xA;    &lt;/span&gt;&#xA;    &#xA;&lt;/h2&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;th&gt;方案&lt;/th&gt;&#xA;          &lt;th&gt;核心机制&lt;/th&gt;&#xA;          &lt;th&gt;代表产品/模式&lt;/th&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;strong&gt;RAG&lt;/strong&gt;&lt;/td&gt;&#xA;          &lt;td&gt;向量检索 → top-k 片段 → 拼入 prompt&lt;/td&gt;&#xA;          &lt;td&gt;Mem0, Zep, LangChain RAG, Cursor Codebase Index&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;strong&gt;LLM Wiki&lt;/strong&gt;&lt;/td&gt;&#xA;          &lt;td&gt;结构化文档 → 全量或按需注入 system prompt&lt;/td&gt;&#xA;          &lt;td&gt;Claude Projects, GPTs Knowledge, Notion AI&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;strong&gt;纯文本上下文&lt;/strong&gt;&lt;/td&gt;&#xA;          &lt;td&gt;Markdown/文本文件 → 直接拼入 system prompt&lt;/td&gt;&#xA;          &lt;td&gt;CLAUDE.md, Cursor Rules, AGENTS.md, Devin Knowledge&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;p&gt;关键区别不在于&amp;quot;存哪里&amp;quot;，而在于&lt;strong&gt;检索方式&lt;/strong&gt;和&lt;strong&gt;注入时机&lt;/strong&gt;。&lt;/p&gt;</description>
      
    </item>
    
  </channel>
</rss>
