<?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>Sun, 09 Aug 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>Codex 为什么不把所有工具都交给模型？讲透 tool_search、BM25 与模型替换</title>
      <link>https://zhuoqidev.com/posts/codex-first-request-tools/</link>
      <pubDate>Sat, 08 Aug 2026 00:00:00 +0000</pubDate>
      
      <guid>https://zhuoqidev.com/posts/codex-first-request-tools/</guid>
      <description>&lt;div class=&#34;lead text-neutral-500 dark:text-neutral-400 !mb-9 text-xl&#34;&gt;&#xA;  把模型想成只有一张小桌子的工程师。工具说明书有几百本时，全部摊在桌上既贵又难找；更好的办法是先给它一本目录，需要什么再取出最相关的几本。本文就讲清 Codex 怎样做这件事、为什么使用 BM25 排序，以及怎样把同一办法搬到 Python、Go 和其他模型上。&#xA;&lt;/div&gt;&#xA;&#xA;&lt;p&gt;本文固定在 2026-08-07 发布的稳定版 &lt;a href=&#34;https://github.com/openai/codex/releases/tag/rust-v0.147.0&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;&lt;code&gt;rust-v0.147.0&lt;/code&gt;&lt;/a&gt;，源码 commit 为 &lt;a href=&#34;https://github.com/openai/codex/commit/be6e8eac029b183056b7e4402879f15d2c85f61b&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;&lt;code&gt;be6e8eac&lt;/code&gt;&lt;/a&gt;；另复查了 2026-08-09 的 &lt;code&gt;main&lt;/code&gt; commit &lt;a href=&#34;https://github.com/openai/codex/commit/646f7c0a91b8e327d263335da68ae8ef212895ce&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;&lt;code&gt;646f7c0a&lt;/code&gt;&lt;/a&gt;。先给两个不会误导人的结论：&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;&lt;strong&gt;模型第一次能看到哪些工具，不是一张永远不变的名单。&lt;/strong&gt; 它会随模型、接入方式、运行环境和功能开关变化。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;&lt;code&gt;tool_search&lt;/code&gt; 和背后的 BM25 排序代码都已经写好，普通直连方式可以使用；但这个稳定版给 GPT-5.6 采用的 &lt;code&gt;exec&lt;/code&gt; 集中调用方式漏掉了搜索入口。&lt;/strong&gt; 这不是功能没开发，而是一条接线没有接通。&lt;/li&gt;&#xA;&lt;/ol&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;#%e8%bf%99%e7%af%87%e6%96%87%e7%ab%a0%e5%86%99%e7%bb%99%e8%b0%81&#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;不要求会 Rust，也不要求读过 Codex 源码。&lt;/strong&gt; 如果你主要写 Python 或 TypeScript，后面的 Rust 连写可以直接理解成“筛选列表 → 改造每一项 → 收集结果”。&lt;/p&gt;&#xA;&lt;p&gt;有两条阅读路线：&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;只想理解做法&lt;/strong&gt;：读小桌子问题、机场图、工具搜索过程、跨语言复用和模型替换；&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;想跟进源码&lt;/strong&gt;：继续读伪代码、Rust 对照、完整查询实例和源码索引。&lt;/li&gt;&#xA;&lt;/ul&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;#%e5%85%88%e5%8f%aa%e8%ae%b0%e4%bd%8f%e5%9b%9b%e5%8f%a5%e5%a4%a7%e7%99%bd%e8%af%9d&#34; aria-label=&#34;锚点&#34;&gt;#&lt;/a&gt;&#xA;    &lt;/span&gt;&#xA;    &#xA;&lt;/h2&gt;&#xA;&lt;p&gt;先把 Rust 函数名和 OpenAI 的专有叫法全部擦掉，一个会使用工具的模型仍逃不开四件事：&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>读完 Codex 源码后，我认为最值得企业 Agent 借鉴的是这 5 个设计</title>
      <link>https://zhuoqidev.com/posts/codex-agent-design/</link>
      <pubDate>Sun, 02 Aug 2026 00:00:00 +0000</pubDate>
      
      <guid>https://zhuoqidev.com/posts/codex-agent-design/</guid>
      <description>&lt;div class=&#34;lead text-neutral-500 dark:text-neutral-400 !mb-9 text-xl&#34;&gt;&#xA;  可以把 Codex 想成一支小型施工队：模型像会判断下一步的现场负责人，Agent Harness 则是围绕他的派工台、门禁、档案柜和进度看板。源码真正展示的，不只是“负责人会下命令”，而是整套系统如何让工作安全开工、暂停后接着做，并让用户始终知道事情进行到了哪里。&#xA;&lt;/div&gt;&#xA;&#xA;&lt;p&gt;很多 Agent 教程只有这样一个循环：&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-python&#34; data-lang=&#34;python&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;while&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;True&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;response&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;model&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;messages&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;tools&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;response&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;tool_calls&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;messages&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;+=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;execute&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;response&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;tool_calls&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;else&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;response&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;text&lt;/span&gt;&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;/p&gt;&#xA;&lt;p&gt;这次我没有再从界面现象反推实现，而是阅读了官方 &lt;a href=&#34;https://github.com/openai/codex&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;openai/codex&lt;/a&gt; 仓库在 commit &lt;a href=&#34;https://github.com/openai/codex/commit/bb5054fe47abe73ecbbd454751066a28c89f4bb9&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;&lt;code&gt;bb5054f&lt;/code&gt;&lt;/a&gt; 的 Rust 源码。下文的组件名、状态分支和数值都能在对应源码中找到；产品未来仍可能演进，但这些设计已经足够回答一个问题：&lt;strong&gt;企业 Agent Harness 应该替模型承担什么？&lt;/strong&gt;&lt;/p&gt;&#xA;&#xA;&lt;h3 class=&#34;relative group&#34;&gt;先看懂：Agent 的一轮 Turn 到底做了什么&#xA;    &lt;div id=&#34;先看懂agent-的一轮-turn-到底做了什么&#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;#%e5%85%88%e7%9c%8b%e6%87%82agent-%e7%9a%84%e4%b8%80%e8%bd%ae-turn-%e5%88%b0%e5%ba%95%e5%81%9a%e4%ba%86%e4%bb%80%e4%b9%88&#34; aria-label=&#34;锚点&#34;&gt;#&lt;/a&gt;&#xA;    &lt;/span&gt;&#xA;    &#xA;&lt;/h3&gt;&#xA;&lt;p&gt;把一次完整用餐看成一个 Thread：它是整件事情的总账。前菜、主菜和甜点可以是不同 Turn；每个 Turn 都是从“用户提出这一轮要求”到“这一轮结果真正交付”的完整周期。&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/codex-agent-design/agent-turn-anatomy-v1-zh-4k.png&#34; alt=&#34;使用餐厅点单比喻解释一个 Codex Agent Turn 中的上下文准备、模型判断、工具调用、结果回传、验证、Final 与 turn completed&#34; /&gt;&#xA;  &#xA;  &lt;figcaption&gt;一轮 Turn 像一次点单到上菜：中间可以反复派出多张工具工单，也可以完全不调用工具。&lt;/figcaption&gt;&#xA;  &lt;/figure&gt;&#xA;&lt;p&gt;顺着图走，一轮通常包含六件事：&lt;/p&gt;</description>
      
    </item>
    
    <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>
