<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>多Agent协作 on Kalend's Blog</title><link>https://blog.kalend.top/categories/%E5%A4%9Aagent%E5%8D%8F%E4%BD%9C/</link><description>Recent content in 多Agent协作 on Kalend's Blog</description><generator>Hugo -- gohugo.io</generator><language>zh</language><lastBuildDate>Wed, 20 May 2026 00:00:00 +0800</lastBuildDate><atom:link href="https://blog.kalend.top/categories/%E5%A4%9Aagent%E5%8D%8F%E4%BD%9C/index.xml" rel="self" type="application/rss+xml"/><item><title>踩过的坑全给你：Blog Agent 最佳实践</title><link>https://blog.kalend.top/2026/05/20/multi-agent-pipeline-part4.html/</link><pubDate>Wed, 20 May 2026 00:00:00 +0800</pubDate><guid>https://blog.kalend.top/2026/05/20/multi-agent-pipeline-part4.html/</guid><description>
 &lt;blockquote&gt;
 &lt;p&gt;跟着前三篇搭完 Pipeline，满怀信心跑了一次——然后各种炸。这篇文章是我踩了 50+ 个坑之后，精选出 12 个最致命的。&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;p&gt;多Agent协作系列 第4篇/共4篇（收尾篇） | 避坑指南 | 约2800字 | 作者：varkm&lt;/p&gt;
&lt;h2 id="先说结论"&gt;先说结论
&lt;/h2&gt;&lt;p&gt;踩了 50 多个坑，80% 集中在五个环节。&lt;/p&gt;
&lt;p&gt;我把最致命的 12 个挑出来，按&amp;quot;写→排→配→协→省&amp;quot;五个阶段给你。&lt;/p&gt;
&lt;p&gt;每个坑都附具体命令和代码。&lt;/p&gt;
&lt;p&gt;不是&amp;quot;建议你检查一下&amp;quot;，是&amp;quot;复制这条命令就能验证&amp;quot;。&lt;/p&gt;
&lt;h2 id="一写作篇agent-写的东西能看吗"&gt;一、写作篇：Agent 写的东西能看吗
&lt;/h2&gt;&lt;p&gt;内容质量不是模型能力问题，是验证流程问题。&lt;/p&gt;
&lt;p&gt;Writer 写什么不重要，Reviewer 能拦住什么才重要。&lt;/p&gt;
&lt;h3 id="坑1子代理编造不存在的配置键名"&gt;坑1：子代理编造不存在的配置键名
&lt;/h3&gt;&lt;p&gt;这是最致命的一个坑，没有之一。&lt;/p&gt;
&lt;p&gt;子代理会&amp;quot;幻觉&amp;quot;出看似合理的配置键名。&lt;/p&gt;
&lt;p&gt;比如 &lt;code&gt;tool_circuit_breaker&lt;/code&gt;，听起来很专业对吧？&lt;/p&gt;
&lt;p&gt;源码里根本没有这个键。正确的叫 &lt;code&gt;tool_loop_guardrails&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;读者拿去配，白配。文章发出去，评论区翻车。&lt;/p&gt;
&lt;p&gt;类似的情况还有：&lt;code&gt;busy_input_mode&lt;/code&gt; 实际叫 &lt;code&gt;display.busy_input_mode&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;prompt_cache_ttl&lt;/code&gt; 实际叫 &lt;code&gt;prompt_caching.cache_ttl&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;验证方法——每个键名必须过这关：&lt;/strong&gt;&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;grep -rn &lt;span class="s2"&gt;&amp;#34;键名&amp;#34;&lt;/span&gt; hermes_cli/config.py
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;不存在就不要写，哪怕 AI 信誓旦旦说&amp;quot;我确认过&amp;quot;。&lt;/p&gt;
&lt;p&gt;这条规则我写进了 Reviewer 的检查清单，至今拦住了 20+ 次编造。&lt;/p&gt;
&lt;h3 id="坑2ai-味套话满天飞"&gt;坑2：AI 味套话满天飞
&lt;/h3&gt;&lt;p&gt;&amp;ldquo;值得注意的是&amp;rdquo;、&amp;ldquo;总的来说&amp;rdquo;、&amp;ldquo;首先…其次…最后&amp;rdquo;。&lt;/p&gt;
&lt;p&gt;这些话一出现，读者秒懂：AI 写的。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;解法：&lt;/strong&gt; 把 AI 味关键词清单写进 Reviewer 的规则文件。&lt;/p&gt;
&lt;p&gt;逐段扫描，强制替换为自然过渡。&lt;/p&gt;
&lt;p&gt;不是零容忍——允许 1-2 处漏网，但多了必须打回重写。&lt;/p&gt;
&lt;p&gt;我维护了一份清单，大概 15 个高频 AI 味词组。&lt;/p&gt;
&lt;p&gt;每次审校先跑一遍关键词扫描，比人工逐段看效率高 10 倍。&lt;/p&gt;
&lt;h3 id="坑3评测文事实核查翻车"&gt;坑3：评测文事实核查翻车
&lt;/h3&gt;&lt;p&gt;&amp;ldquo;发布不到一个月&amp;rdquo;——实际仓库已创建 3 个月。&lt;/p&gt;
&lt;p&gt;&amp;ldquo;不支持 Docker&amp;rdquo;——仓库里 Dockerfile 就在根目录。&lt;/p&gt;
&lt;p&gt;&amp;ldquo;我两个都在用&amp;rdquo;——说实话，根本没用过第二个。&lt;/p&gt;
&lt;p&gt;这条最危险，因为&lt;strong&gt;读者会去验证&lt;/strong&gt;。一旦翻车，信任归零。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;核心原则：&lt;/strong&gt; 每一条事实声明都必须验证。&lt;/p&gt;
&lt;p&gt;星数看 GitHub API，技术栈看源码，体验只写真话。&lt;/p&gt;
&lt;p&gt;验证命令：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;curl -s https://api.github.com/repos/owner/repo &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;|&lt;/span&gt; jq &lt;span class="s1"&gt;&amp;#39;{stars: .stargazers_count, created: .created_at}&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;版本追溯三步法：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;git log --oneline --all --grep&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;功能名&amp;#34;&lt;/span&gt; &lt;span class="p"&gt;|&lt;/span&gt; head -5
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;git tag --contains &amp;lt;commit_hash&amp;gt; &lt;span class="p"&gt;|&lt;/span&gt; head -3
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;git show --no-patch --format&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;%H %ci %s&amp;#34;&lt;/span&gt; &amp;lt;commit_hash&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
 &lt;blockquote&gt;
 &lt;p&gt;写作篇一行检查：&lt;code&gt;grep -rn &amp;quot;配置键名&amp;quot; config.py&lt;/code&gt;&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;h2 id="二排版篇微信客户端是最大的敌人"&gt;二、排版篇：微信客户端是最大的敌人
&lt;/h2&gt;&lt;p&gt;微信渲染引擎会做你意想不到的事。&lt;/p&gt;
&lt;p&gt;所有样式必须 inline，微信会剥离 &lt;code&gt;&amp;lt;style&amp;gt;&lt;/code&gt; 和 &lt;code&gt;class&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;这是排版篇的第一条铁律，后面所有坑都跟它有关。&lt;/p&gt;
&lt;h3 id="坑4列表标签全线崩溃"&gt;坑4：列表标签全线崩溃
&lt;/h3&gt;&lt;p&gt;&lt;code&gt;&amp;lt;ul&amp;gt;&lt;/code&gt;、&lt;code&gt;&amp;lt;ol&amp;gt;&lt;/code&gt;、&lt;code&gt;&amp;lt;li&amp;gt;&lt;/code&gt;，三个标签在微信里有三个独立 bug。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;&amp;lt;ol&amp;gt;&lt;/code&gt; 编号跨板块连续计数：第一个列表从 1 开始没问题。&lt;/p&gt;
&lt;p&gt;第二个列表不从 1 开始，接着上一个的编号往下数。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;&amp;lt;ul&amp;gt;&lt;/code&gt; 加手动 bullet 产生双圆点，一行出现两个点。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;&amp;lt;li&amp;gt;&lt;/code&gt; 的 margin 产生空行，每个 item 变成空行 + 内容两行。&lt;/p&gt;
&lt;p&gt;我在这三个标签上各踩了一轮，前后折腾了两天。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;终极方案：&lt;/strong&gt; 全部不要用。&lt;/p&gt;
&lt;p&gt;所有列表统一用 &lt;code&gt;◆&lt;/code&gt; 替代：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-html" data-lang="html"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;p&lt;/span&gt; &lt;span class="na"&gt;style&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;margin:4px 0;line-height:1.8;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt;padding-left:14px;&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;◆ 列表内容&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;p&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;简单、稳定、不炸。这是 3 轮踩坑之后的终极结论。&lt;/p&gt;
&lt;h3 id="坑5代码块黑底黑字"&gt;坑5：代码块黑底黑字
&lt;/h3&gt;&lt;p&gt;微信会剥离 &lt;code&gt;&amp;lt;pre&amp;gt;&lt;/code&gt; 标签的 &lt;code&gt;color&lt;/code&gt; 样式，只剩 &lt;code&gt;background&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;黑色背景 + 黑色文字 = 完全看不了。&lt;/p&gt;
&lt;p&gt;读者截图问我&amp;quot;代码块怎么什么都没有&amp;quot;。&lt;/p&gt;
&lt;p&gt;我才知道这个坑——在电脑浏览器里是正常的。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;解法：&lt;/strong&gt; 永远不要用深色代码块背景。&lt;/p&gt;
&lt;p&gt;浅色方案用 &lt;code&gt;&amp;lt;section&amp;gt;&lt;/code&gt; 包裹：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;span class="lnt"&gt;5
&lt;/span&gt;&lt;span class="lnt"&gt;6
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-html" data-lang="html"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;section&lt;/span&gt; &lt;span class="na"&gt;style&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;background:#f6f8fa;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt;border-radius:6px;padding:14px;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt;border:1px solid #e1e4e8;&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;pre&lt;/span&gt; &lt;span class="na"&gt;style&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;margin:0;color:#24292e;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt;font-size:14px;&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;代码内容&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;pre&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;section&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;关键是用 &lt;code&gt;&amp;lt;section&amp;gt;&lt;/code&gt; 而不是直接靠 &lt;code&gt;&amp;lt;pre&amp;gt;&lt;/code&gt; 的样式。&lt;/p&gt;
&lt;p&gt;深色方案也可以，但同样必须用 &lt;code&gt;&amp;lt;section&amp;gt;&lt;/code&gt; + &lt;code&gt;&amp;lt;span&amp;gt;&lt;/code&gt; 做语法高亮。&lt;/p&gt;
&lt;h3 id="坑6封面图中文变方格"&gt;坑6：封面图中文变方格
&lt;/h3&gt;&lt;p&gt;Pillow 默认字体（DejaVu）不支持中文。&lt;/p&gt;
&lt;p&gt;所有中文字符渲染成方格/空白。&lt;/p&gt;
&lt;p&gt;发出去才知道——封面上的标题全是空白方块。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;解法：&lt;/strong&gt; 必须用系统 CJK 字体，且 &lt;code&gt;.ttc&lt;/code&gt; 文件要加 &lt;code&gt;index=0&lt;/code&gt;：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;span class="lnt"&gt;5
&lt;/span&gt;&lt;span class="lnt"&gt;6
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="nn"&gt;PIL&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;ImageFont&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;font&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;ImageFont&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;truetype&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="s2"&gt;&amp;#34;/usr/share/fonts/opentype/noto/&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="s2"&gt;&amp;#34;NotoSansCJK-Bold.ttc&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="mi"&gt;36&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;index&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;&lt;code&gt;.ttc&lt;/code&gt; 是字体集合文件，不指定 &lt;code&gt;index&lt;/code&gt; 可能加载到错误字体。&lt;/p&gt;
&lt;p&gt;这个参数踩了我半小时才找到原因。&lt;/p&gt;

 &lt;blockquote&gt;
 &lt;p&gt;排版篇一行检查：&lt;code&gt;grep -n '&amp;lt;ul&amp;gt;\|&amp;lt;ol&amp;gt;\|&amp;lt;li&amp;gt;' article.html&lt;/code&gt;&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;h2 id="三配置篇80-的崩溃来自两个默认值"&gt;三、配置篇：80% 的崩溃来自两个默认值
&lt;/h2&gt;&lt;p&gt;不是功能不好用，是默认配置没改。&lt;/p&gt;
&lt;p&gt;改两个配置，解决 80% 的 Pipeline 崩溃。&lt;/p&gt;
&lt;h3 id="坑7max_tokens-太小导致截断"&gt;坑7：max_tokens 太小导致截断
&lt;/h3&gt;&lt;p&gt;默认 &lt;code&gt;max_tokens&lt;/code&gt; 只有 4096。&lt;/p&gt;
&lt;p&gt;一篇 2000 字的文章大概需要 8000-12000 token。&lt;/p&gt;
&lt;p&gt;超了直接截断，Agent crash，日志显示：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-gdscript3" data-lang="gdscript3"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;Response&lt;/span&gt; &lt;span class="n"&gt;truncated&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;finish_reason&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;length&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;refusing&lt;/span&gt; &lt;span class="n"&gt;to&lt;/span&gt; &lt;span class="n"&gt;execute&lt;/span&gt; &lt;span class="n"&gt;incomplete&lt;/span&gt; &lt;span class="k"&gt;tool&lt;/span&gt; &lt;span class="n"&gt;arguments&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;&lt;strong&gt;解法：&lt;/strong&gt; Profile 配置里改成 32768 或更大：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-yaml" data-lang="yaml"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;model&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;max_tokens&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;32768&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Worker 自己改不了这个值。&lt;/p&gt;
&lt;p&gt;必须由 Orchestrator 在 Profile 配置文件里提前设好。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;算笔账：&lt;/strong&gt; 一次跑完 vs 截断重跑。&lt;/p&gt;
&lt;p&gt;截断一次 = 浪费已消耗的 token + 重新跑一遍完整流程。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;max_tokens&lt;/code&gt; 调大，单次不会多花，但省掉了重试的浪费。&lt;/p&gt;
&lt;h3 id="坑8skill-文件没复制到-profile-目录"&gt;坑8：Skill 文件没复制到 Profile 目录
&lt;/h3&gt;&lt;p&gt;全局 skill 目录和 Profile 独立目录是两套。&lt;/p&gt;
&lt;p&gt;Profile 看不到全局目录里的 skill，必须手动复制。&lt;/p&gt;
&lt;p&gt;报错信息：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Error: Unknown skill(s): article-review
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;明明装了，为什么找不到？因为装错地方了。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;解法：&lt;/strong&gt; Orchestrator dispatch 前检查并复制：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;cp -r ~/.hermes/skills/devops/article-review &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; ~/.hermes/profiles/blog-writer/skills/devops/
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;路径规则：全局 &lt;code&gt;~/.hermes/skills/&lt;/code&gt; ≠ Profile 独立目录。&lt;/p&gt;
&lt;p&gt;我第一次遇到这个报错时，反复重装了 3 遍 skill 才反应过来。&lt;/p&gt;
&lt;p&gt;装的全是全局目录，Profile 根本看不到。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;这两个配置改完，80% 的 Pipeline 崩溃直接消失。&lt;/strong&gt;&lt;/p&gt;

 &lt;blockquote&gt;
 &lt;p&gt;配置篇一行检查：&lt;code&gt;grep &amp;quot;max_tokens&amp;quot; ~/.hermes/profiles/你的profile/config.yaml&lt;/code&gt;&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;h2 id="四协作篇agent-编排的三个反模式"&gt;四、协作篇：Agent 编排的三个反模式
&lt;/h2&gt;&lt;p&gt;Pipeline 不是流程负担，是质量保险。&lt;/p&gt;
&lt;p&gt;跳过的每一步，都会在下游加倍还回来。&lt;/p&gt;
&lt;h3 id="坑9跳过-pipeline-裸写"&gt;坑9：跳过 Pipeline 裸写
&lt;/h3&gt;&lt;p&gt;手动 &lt;code&gt;delegate_task&lt;/code&gt; 直接让一个 Agent 写文章，没有 Reviewer。&lt;/p&gt;
&lt;p&gt;看起来快，实际上：&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;对比项&lt;/th&gt;
 &lt;th&gt;Pipeline&lt;/th&gt;
 &lt;th&gt;裸写&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;Reviewer 把关&lt;/td&gt;
 &lt;td&gt;有&lt;/td&gt;
 &lt;td&gt;无&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;审计链路&lt;/td&gt;
 &lt;td&gt;有&lt;/td&gt;
 &lt;td&gt;无&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;返工次数&lt;/td&gt;
 &lt;td&gt;1-2 次&lt;/td&gt;
 &lt;td&gt;3-5 次&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;总耗时&lt;/td&gt;
 &lt;td&gt;16 分钟&lt;/td&gt;
 &lt;td&gt;30+ 分钟&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;裸写最大的问题不是质量差。&lt;/p&gt;
&lt;p&gt;是&lt;strong&gt;你不知道质量差&lt;/strong&gt;——没有 Reviewer 告诉你哪里有问题。&lt;/p&gt;
&lt;p&gt;等读者反馈，已经晚了。&lt;/p&gt;
&lt;p&gt;我写过一篇裸写的文章，3 个配置键名编造，2 处 AI 味套话。&lt;/p&gt;
&lt;p&gt;没有 Reviewer 拦，全发出去了。后来评论区被指出才改。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;强制规则：&lt;/strong&gt; 走完整 Kanban Pipeline，无例外。&lt;/p&gt;
&lt;p&gt;流程：Writer → Reviewer → Creator → Reviewer → 发布。&lt;/p&gt;
&lt;h3 id="坑10task_id-幻觉编造"&gt;坑10：task_id 幻觉编造
&lt;/h3&gt;&lt;p&gt;&lt;code&gt;kanban_complete&lt;/code&gt; 时传入编造的 task_id。&lt;/p&gt;
&lt;p&gt;kernel 验证不通过，直接报错：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;phantom id blocks the completion
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;&lt;strong&gt;核心：&lt;/strong&gt; task_id 只能来自 &lt;code&gt;kanban_create&lt;/code&gt; 的返回值。&lt;/p&gt;
&lt;p&gt;不要从文字描述里&amp;quot;编&amp;quot;，不要从上一轮的上下文里&amp;quot;猜&amp;quot;。&lt;/p&gt;
&lt;p&gt;正确写法——先捕获返回值，再传入：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;span class="lnt"&gt;5
&lt;/span&gt;&lt;span class="lnt"&gt;6
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;card&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;kanban_create&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;title&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;审校文章&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;assignee&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;reviewer&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;kanban_complete&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;created_cards&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;card&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;task_id&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;]]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;错误写法：从摘要中看到 &amp;ldquo;t_deadbeef&amp;rdquo; 就传进去。&lt;/p&gt;
&lt;p&gt;kernel 会验证每个 id 是否真实存在，幻编的 id 100% 被拦截。&lt;/p&gt;
&lt;h3 id="坑11reviewer-模型比-writer-弱"&gt;坑11：Reviewer 模型比 Writer 弱
&lt;/h3&gt;&lt;p&gt;Writer 用最强模型写，Reviewer 用弱模型审。&lt;/p&gt;
&lt;p&gt;结果：审校形同虚设，该拦的拦不住。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;规则：&lt;/strong&gt; 审核模型必须 ≥ 写作模型。&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;角色&lt;/th&gt;
 &lt;th&gt;推荐模型&lt;/th&gt;
 &lt;th&gt;定位&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;Writer&lt;/td&gt;
 &lt;td&gt;glm-4.7&lt;/td&gt;
 &lt;td&gt;性价比写稿&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Creator&lt;/td&gt;
 &lt;td&gt;glm-4.7&lt;/td&gt;
 &lt;td&gt;排版生成&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Reviewer&lt;/td&gt;
 &lt;td&gt;glm-5.1&lt;/td&gt;
 &lt;td&gt;强模型把关&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;贵的模型只干贵的事——审核就是最该花 token 的环节。&lt;/p&gt;
&lt;h2 id="五成本篇怎么让-agent-省着花"&gt;五、成本篇：怎么让 Agent 省着花
&lt;/h2&gt;&lt;p&gt;不是不能用贵模型，是别在不需要的地方用。&lt;/p&gt;
&lt;h3 id="坑12pipeline-被反复跳过"&gt;坑12：Pipeline 被反复&amp;quot;跳过&amp;quot;
&lt;/h3&gt;&lt;p&gt;完整 Pipeline 6 步全 PASS 只需 16 分钟。&lt;/p&gt;
&lt;p&gt;但经常有人觉得&amp;quot;Pipeline 慢&amp;quot;，手动跳过。&lt;/p&gt;
&lt;p&gt;跳过的后果：质量不过关 → 返工 → 再跑一遍 → 总耗时翻倍。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;不要跳。&lt;/strong&gt; 16 分钟换一次通过，比跳过之后返工 30 分钟划算。&lt;/p&gt;
&lt;h3 id="分层用模型才是真省钱"&gt;分层用模型才是真省钱
&lt;/h3&gt;&lt;p&gt;全文用一个模型 = 全程用最贵的模型 = 浪费。&lt;/p&gt;
&lt;p&gt;写作用性价比模型，快且便宜。&lt;/p&gt;
&lt;p&gt;排版用同样的性价比模型。&lt;/p&gt;
&lt;p&gt;审核用强模型，只审核一次。&lt;/p&gt;
&lt;p&gt;贵模型用得少，但每次用在关键位置。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;max_tokens&lt;/code&gt; 调大 + 模型分层，总成本反而比&amp;quot;省钱方案&amp;quot;更低。&lt;/p&gt;
&lt;p&gt;具体算一下：Writer 跑 5 分钟用 glm-4.7，Reviewer 跑 2 分钟用 glm-5.1。&lt;/p&gt;
&lt;p&gt;比全程用 glm-5.1 省 60% 以上 token。&lt;/p&gt;
&lt;p&gt;该省省，该花花——审核环节绝不省钱。&lt;/p&gt;
&lt;h2 id="系列-4-篇收尾"&gt;系列 4 篇收尾
&lt;/h2&gt;&lt;p&gt;回顾整个多Agent协作系列：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;第 1 篇&lt;/strong&gt; 讲了 Kanban + Profile，让 Agent 有了分工和身份。&lt;/p&gt;
&lt;p&gt;Kanban 是任务看板，Profile 是 Agent 的角色配置。&lt;/p&gt;
&lt;p&gt;两者结合，Agent 从&amp;quot;什么都干&amp;quot;变成&amp;quot;各司其职&amp;quot;。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;第 2 篇&lt;/strong&gt; 搭建了 Blog Writer Agent，7 步从零到能写能部署。&lt;/p&gt;
&lt;p&gt;从安装框架到写第一篇文章，全程可跟着操作。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;第 3 篇&lt;/strong&gt; 组建了完整 Pipeline，多 Agent 协作链路跑通。&lt;/p&gt;
&lt;p&gt;Writer 写稿 → Reviewer 审校 → Creator 排版 → 发布。&lt;/p&gt;
&lt;p&gt;6 步全 PASS 只需 16 分钟。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;第 4 篇&lt;/strong&gt;（这篇）补上了最后一环：搭完怎么不炸。&lt;/p&gt;
&lt;p&gt;12 个坑，5 个阶段，每个都有具体命令和代码。&lt;/p&gt;
&lt;p&gt;收藏这篇，每次跑 Pipeline 之前扫一遍检查清单。&lt;/p&gt;
&lt;p&gt;四篇读完，你就有了一套完整的 Agent 博客系统。&lt;/p&gt;
&lt;p&gt;从搭建到协作到避坑，该踩的坑我都替你踩了。&lt;/p&gt;
&lt;section style="margin:20px 0;padding:16px 20px;background:linear-gradient(135deg,#4a90d9,#357abd);border-radius:8px;text-align:center;"&gt;
&lt;p style="margin:0 0 8px 0;color:#fff;font-size:16px;font-weight:bold;line-height:1.6;"&gt;关注 varkm，一起学习，一起成长&lt;/p&gt;
&lt;p style="margin:0;color:rgba(255,255,255,0.85);font-size:13px;line-height:1.6;"&gt;多Agent协作系列完更，回复【agent】获取完整检查清单和 Profile 配置模板&lt;/p&gt;
&lt;/section&gt;</description></item><item><title>多Agent协作实战：从写稿到审核的完整Pipeline</title><link>https://blog.kalend.top/2026/05/19/multi-agent-pipeline-part3.html/</link><pubDate>Tue, 19 May 2026 07:00:00 +0800</pubDate><guid>https://blog.kalend.top/2026/05/19/multi-agent-pipeline-part3.html/</guid><description>
 &lt;blockquote&gt;
 &lt;p&gt;一篇AI对比文章，4个Agent接力完成，10步Pipeline自动跑通。中间经历3轮审核修复循环，全程1.5小时零人工介入。&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;p&gt;&lt;strong&gt;先说结论&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;我们搭了一套多Agent协作的写作Pipeline。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;4个专职Agent&lt;/strong&gt;：写作、审核、博客部署、公众号发布，各司其职。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;10步自动流水线&lt;/strong&gt;：从第一行字写出来，到博客上线、公众号草稿就绪，全自动。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;质量门禁&lt;/strong&gt;：审核不通过，下游任务直接卡住，修好了才放行。&lt;/p&gt;
&lt;p&gt;这是系列第3篇。第1篇讲了Kanban+Profile架构，第2篇搭了单个Writer Agent。&lt;/p&gt;
&lt;p&gt;这篇是&lt;strong&gt;多Agent协作的完整实战&lt;/strong&gt;——怎么让4个Agent接力干活、互相检查、自动修复。&lt;/p&gt;
&lt;h2 id="1-4个agent怎么分工"&gt;1. 4个Agent怎么分工
&lt;/h2&gt;&lt;p&gt;先看全局。每个Agent有自己的&lt;strong&gt;Profile&lt;/strong&gt;（身份配置）和&lt;strong&gt;SOUL.md&lt;/strong&gt;（行为规范）。&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Agent&lt;/th&gt;
 &lt;th&gt;职责&lt;/th&gt;
 &lt;th&gt;模型&lt;/th&gt;
 &lt;th&gt;特点&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;blog-writer&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;写原始文章&lt;/td&gt;
 &lt;td&gt;glm-5.1&lt;/td&gt;
 &lt;td&gt;204K上下文，有记忆&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;reviewer&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;审核内容质量&lt;/td&gt;
 &lt;td&gt;glm-5.1&lt;/td&gt;
 &lt;td&gt;只审不改，无记忆&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;blog-creator&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;转Markdown+部署&lt;/td&gt;
 &lt;td&gt;glm-4.7&lt;/td&gt;
 &lt;td&gt;最精简工具集&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;mp-creator&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;转公众号HTML+上传&lt;/td&gt;
 &lt;td&gt;glm-4.7&lt;/td&gt;
 &lt;td&gt;4个微信skill&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;类比&lt;/strong&gt;：像一个编辑部——&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;◆ &lt;strong&gt;Writer&lt;/strong&gt;是记者，负责采访写稿&lt;/li&gt;
&lt;li&gt;◆ &lt;strong&gt;Reviewer&lt;/strong&gt;是编辑，负责审稿把关&lt;/li&gt;
&lt;li&gt;◆ &lt;strong&gt;Creator&lt;/strong&gt;是排版员，负责报纸和网站两个渠道的排版&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;注意模型选择：写作和审核用强模型(glm-5.1)，格式转换用弱模型(glm-4.7)。&lt;/p&gt;
&lt;p&gt;为什么？格式转换是机械活，不需要创造力。省下来的Token是真金白银。&lt;/p&gt;
&lt;h2 id="2-pipeline全景10步流水线"&gt;2. Pipeline全景：10步流水线
&lt;/h2&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt; 1
&lt;/span&gt;&lt;span class="lnt"&gt; 2
&lt;/span&gt;&lt;span class="lnt"&gt; 3
&lt;/span&gt;&lt;span class="lnt"&gt; 4
&lt;/span&gt;&lt;span class="lnt"&gt; 5
&lt;/span&gt;&lt;span class="lnt"&gt; 6
&lt;/span&gt;&lt;span class="lnt"&gt; 7
&lt;/span&gt;&lt;span class="lnt"&gt; 8
&lt;/span&gt;&lt;span class="lnt"&gt; 9
&lt;/span&gt;&lt;span class="lnt"&gt;10
&lt;/span&gt;&lt;span class="lnt"&gt;11
&lt;/span&gt;&lt;span class="lnt"&gt;12
&lt;/span&gt;&lt;span class="lnt"&gt;13
&lt;/span&gt;&lt;span class="lnt"&gt;14
&lt;/span&gt;&lt;span class="lnt"&gt;15
&lt;/span&gt;&lt;span class="lnt"&gt;16
&lt;/span&gt;&lt;span class="lnt"&gt;17
&lt;/span&gt;&lt;span class="lnt"&gt;18
&lt;/span&gt;&lt;span class="lnt"&gt;19
&lt;/span&gt;&lt;span class="lnt"&gt;20
&lt;/span&gt;&lt;span class="lnt"&gt;21
&lt;/span&gt;&lt;span class="lnt"&gt;22
&lt;/span&gt;&lt;span class="lnt"&gt;23
&lt;/span&gt;&lt;span class="lnt"&gt;24
&lt;/span&gt;&lt;span class="lnt"&gt;25
&lt;/span&gt;&lt;span class="lnt"&gt;26
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; ① blog-writer ② reviewer Fan-out
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; ┌──────────────┐ ┌──────────────┐ ┌─────────────────┐
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; │ 写原始文章 │──────▶│ 内容审核 │──PASS│ 并行分发 │
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; │ (glm-5.1) │ 7min │ PII/事实/AI味 │12min └──────┬──────────┘
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; └──────────────┘ └──────────────┘ │
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; ┌───────────┴───────────┐
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; ▼ ▼
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; ③ blog-creator ④ mp-creator
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; ┌──────────────┐ ┌──────────────┐
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; │ Markdown+部署 │ │ HTML+封面+上传│
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; │ (glm-4.7) │ │ (glm-4.7) │
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; └──────┬───────┘ └──────┬───────┘
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; │ │
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; ▼ ▼
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; ⑤ reviewer ⑥ reviewer
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; ┌──────────────┐ ┌──────────────┐
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; │ Blog格式审核 │ │ 公众号格式审核 │
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; └──────┬───────┘ └──────┬───────┘
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; PASS ✅ FAIL ❌
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; │ │
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; ▼ ▼
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 博客上线 ┌──────────────────┐
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; │ ⟳ 审核修复循环×3轮 │
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; │ ⑦修复→⑧审核→⑨修复 │
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; │ →⑩审核 PASS ✅ │
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; └──────────────────┘
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;解释一下关键节点：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;◆ &lt;strong&gt;Step ①②&lt;/strong&gt;：Writer写完文章，交给Reviewer审核内容&lt;/li&gt;
&lt;li&gt;◆ &lt;strong&gt;Fan-out&lt;/strong&gt;：审核通过后，同时派给Blog和公众号两个渠道&lt;/li&gt;
&lt;li&gt;◆ &lt;strong&gt;Step ③④&lt;/strong&gt;：两个Creator并行工作，互不等待&lt;/li&gt;
&lt;li&gt;◆ &lt;strong&gt;Step ⑤⑥&lt;/strong&gt;：各自的Reviewer再审一遍格式&lt;/li&gt;
&lt;li&gt;◆ &lt;strong&gt;Step ⑦-⑩&lt;/strong&gt;：公众号没过，进入修复循环&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Blog那边一次通过，公众号那边经历了3轮修复。为什么？&lt;/p&gt;
&lt;p&gt;因为公众号对&lt;strong&gt;段落长度&lt;/strong&gt;有严格限制（每段≤100字），模型对&amp;quot;手机屏幕3行&amp;quot;的物理感知不够精确。&lt;/p&gt;
&lt;h2 id="3-依赖链怎么让agent自动接力"&gt;3. 依赖链：怎么让Agent自动接力
&lt;/h2&gt;&lt;p&gt;核心机制是&lt;strong&gt;Kanban的parents依赖&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;创建任务时指定parents，意思是：&amp;ldquo;等这些父任务完成后，我才启动&amp;rdquo;。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt; 1
&lt;/span&gt;&lt;span class="lnt"&gt; 2
&lt;/span&gt;&lt;span class="lnt"&gt; 3
&lt;/span&gt;&lt;span class="lnt"&gt; 4
&lt;/span&gt;&lt;span class="lnt"&gt; 5
&lt;/span&gt;&lt;span class="lnt"&gt; 6
&lt;/span&gt;&lt;span class="lnt"&gt; 7
&lt;/span&gt;&lt;span class="lnt"&gt; 8
&lt;/span&gt;&lt;span class="lnt"&gt; 9
&lt;/span&gt;&lt;span class="lnt"&gt;10
&lt;/span&gt;&lt;span class="lnt"&gt;11
&lt;/span&gt;&lt;span class="lnt"&gt;12
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 创建Writer任务&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;kanban_create&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;title&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;写对比文章&amp;#34;&lt;/span&gt;, &lt;span class="nv"&gt;assignee&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;blog-writer&amp;#34;&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 创建Reviewer任务，依赖Writer&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;kanban_create&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;title&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;审核内容&amp;#34;&lt;/span&gt;, &lt;span class="nv"&gt;assignee&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;reviewer&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nv"&gt;parents&lt;/span&gt;&lt;span class="o"&gt;=[&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;t_writer_xxx&amp;#34;&lt;/span&gt;&lt;span class="o"&gt;])&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 创建两个Creator任务，依赖Reviewer&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;kanban_create&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;title&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;部署博客&amp;#34;&lt;/span&gt;, &lt;span class="nv"&gt;assignee&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;blog-creator&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nv"&gt;parents&lt;/span&gt;&lt;span class="o"&gt;=[&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;t_reviewer_xxx&amp;#34;&lt;/span&gt;&lt;span class="o"&gt;])&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;kanban_create&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;title&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;公众号推文&amp;#34;&lt;/span&gt;, &lt;span class="nv"&gt;assignee&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;mp-creator&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nv"&gt;parents&lt;/span&gt;&lt;span class="o"&gt;=[&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;t_reviewer_xxx&amp;#34;&lt;/span&gt;&lt;span class="o"&gt;])&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;注意看最后两行——它们的parents是同一个Reviewer任务。&lt;/p&gt;
&lt;p&gt;这意味着Reviewer通过后，Blog和公众号&lt;strong&gt;同时启动&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;这就是Fan-out（扇出）：一个任务完成，触发多个下游并行执行。&lt;/p&gt;
&lt;h2 id="4-质量门禁fail就卡住"&gt;4. 质量门禁：FAIL就卡住
&lt;/h2&gt;&lt;p&gt;Reviewer不是走过场。它有&lt;strong&gt;5级审核维度&lt;/strong&gt;，每级有明确的通过标准：&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;优先级&lt;/th&gt;
 &lt;th&gt;检查项&lt;/th&gt;
 &lt;th&gt;判定标准&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;🔴 必须通过&lt;/td&gt;
 &lt;td&gt;PII信息脱敏&lt;/td&gt;
 &lt;td&gt;手机号/邮箱/IP必须处理&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;🔴 必须通过&lt;/td&gt;
 &lt;td&gt;事实准确性&lt;/td&gt;
 &lt;td&gt;数据有来源，技术描述正确&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;🟡 3处FAIL&lt;/td&gt;
 &lt;td&gt;AI味检测&lt;/td&gt;
 &lt;td&gt;废话铺垫/过度道歉/套话&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;🟢 仅建议&lt;/td&gt;
 &lt;td&gt;品牌名&lt;/td&gt;
 &lt;td&gt;不强制，给出建议&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;🔵 格式规范&lt;/td&gt;
 &lt;td&gt;平台适配&lt;/td&gt;
 &lt;td&gt;Blog/公众号各有专项检查&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;关键机制&lt;/strong&gt;：Reviewer判定FAIL时，在kanban_complete的metadata里写入问题列表。&lt;/p&gt;
&lt;p&gt;下游任务的parents依赖没满足，&lt;strong&gt;不会自动启动&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;必须创建修复任务，修好后再提交审核。这就是&amp;quot;门禁&amp;quot;——&lt;/p&gt;
&lt;p&gt;不是标记一下就过了，是真的&lt;strong&gt;挡住&lt;/strong&gt;，修好才放行。&lt;/p&gt;
&lt;h2 id="5-实战3轮修复循环"&gt;5. 实战：3轮修复循环
&lt;/h2&gt;&lt;p&gt;说说真实发生的事。&lt;/p&gt;
&lt;p&gt;第一轮公众号HTML生成后，Reviewer发现&lt;strong&gt;11个段落超标&lt;/strong&gt;（限制100字/段）。&lt;/p&gt;
&lt;p&gt;其中3个段落超过150字，在手机上会显示成一大坨。&lt;/p&gt;
&lt;p&gt;mp-creator收到问题列表，拆分段落。&lt;/p&gt;
&lt;p&gt;Reviewer二轮审核——&lt;strong&gt;还有5段超标&lt;/strong&gt;。继续修。&lt;/p&gt;
&lt;p&gt;第三轮审核——&lt;strong&gt;91个段落全部≤100字&lt;/strong&gt;，PASS。&lt;/p&gt;
&lt;p&gt;整个过程零人工介入。Reviewer自动FAIL，mp-creator自动读问题列表修复。&lt;/p&gt;
&lt;p&gt;从第一次FAIL到最终PASS，&lt;strong&gt;修复循环自动跑了3轮&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;教训：模型对&amp;quot;手机屏幕3行=100字&amp;quot;这种物理约束，理解不够精确。需要多轮迭代。&lt;/p&gt;
&lt;h2 id="6-模型分级省钱的关键"&gt;6. 模型分级：省钱的关键
&lt;/h2&gt;&lt;p&gt;4个Agent不是都用最贵的模型。按&lt;strong&gt;职责复杂度&lt;/strong&gt;分级：&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;职责&lt;/th&gt;
 &lt;th&gt;模型&lt;/th&gt;
 &lt;th&gt;为什么&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;原创写作&lt;/td&gt;
 &lt;td&gt;glm-5.1（强）&lt;/td&gt;
 &lt;td&gt;需要创造力和上下文&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;内容审核&lt;/td&gt;
 &lt;td&gt;glm-5.1（强）&lt;/td&gt;
 &lt;td&gt;找错需要精确理解&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;格式转换&lt;/td&gt;
 &lt;td&gt;glm-4.7（省）&lt;/td&gt;
 &lt;td&gt;机械任务，够用即可&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;辅助工具&lt;/td&gt;
 &lt;td&gt;glm-4.5-air（最省）&lt;/td&gt;
 &lt;td&gt;压缩/搜索等轻量任务&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;实际效果：写作和审核两个最关键的环节用强模型保证质量。&lt;/p&gt;
&lt;p&gt;格式转换这种&amp;quot;体力活&amp;quot;用弱模型，成本直接砍半。&lt;/p&gt;
&lt;p&gt;而且reviewer在下游兜底，弱模型出了问题也能被拦截。&lt;/p&gt;
&lt;h2 id="7-搭建要点回顾"&gt;7. 搭建要点回顾
&lt;/h2&gt;&lt;p&gt;如果你也想搭这样的Pipeline，关键步骤：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;◆ &lt;strong&gt;Step 1&lt;/strong&gt;：为每个角色创建独立Profile&lt;/li&gt;
&lt;li&gt;◆ &lt;strong&gt;Step 2&lt;/strong&gt;：写SOUL.md定义行为规范&lt;/li&gt;
&lt;li&gt;◆ &lt;strong&gt;Step 3&lt;/strong&gt;：配置review skill的审核checklist&lt;/li&gt;
&lt;li&gt;◆ &lt;strong&gt;Step 4&lt;/strong&gt;：用kanban的parents参数搭建依赖链&lt;/li&gt;
&lt;li&gt;◆ &lt;strong&gt;Step 5&lt;/strong&gt;：按职责复杂度分配模型&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;最关键的设计决策是&lt;strong&gt;质量门禁&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;没有它，Agent就是各干各的，错误会一路传到最终发布。&lt;/p&gt;
&lt;p&gt;有了它，每个环节都有人把关，问题在传播之前就被拦截。&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;关注 varkm，一起学习，一起成长&lt;/p&gt;
&lt;p&gt;多Agent协作系列第3篇 · 第4篇将分享踩坑最佳实践&lt;/p&gt;</description></item></channel></rss>