<?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 liaohch3</title><link>https://liaohch3.com/tags/llm/</link><description>Recent content in Llm on liaohch3</description><generator>Hugo -- gohugo.io</generator><language>zh-cn</language><lastBuildDate>Fri, 20 Feb 2026 21:00:00 +0800</lastBuildDate><atom:link href="https://liaohch3.com/tags/llm/index.xml" rel="self" type="application/rss+xml"/><item><title>AI Agent 工具链中的模型版本管理陷阱</title><link>https://liaohch3.com/posts/ai-agent-model-version-rot/</link><pubDate>Fri, 20 Feb 2026 21:00:00 +0800</pubDate><guid>https://liaohch3.com/posts/ai-agent-model-version-rot/</guid><description>&lt;h2 id="问题"&gt;问题
&lt;/h2&gt;&lt;p&gt;今天让 OpenClaw（AI Agent）创建一个「播客翻译」Skill，Agent 自动选了 &lt;code&gt;google/gemini-2.0-flash-001&lt;/code&gt; 做转录、&lt;code&gt;anthropic/claude-sonnet-4&lt;/code&gt; 做翻译。这两个模型都已过时——当前最新分别是 &lt;code&gt;gemini-2.5-flash&lt;/code&gt; 和 &lt;code&gt;claude-sonnet-4.6&lt;/code&gt;。但旧模型仍然能跑通、不报错，性能在悄悄退化。&lt;/p&gt;
&lt;p&gt;&lt;img alt="问题截图：新建脚本中硬编码的过时模型" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px"&gt;&lt;/p&gt;
&lt;h2 id="根因"&gt;根因
&lt;/h2&gt;&lt;p&gt;Agent 的模型认知来源于预训练知识（training data cutoff）。训练数据截止时，&lt;code&gt;gemini-2.0-flash-001&lt;/code&gt; 和 &lt;code&gt;claude-sonnet-4&lt;/code&gt; 就是最新的。Agent 写代码时自然用了它&amp;quot;记忆中&amp;quot;的最新版本——但现实世界的模型已经迭代了好几代。&lt;/p&gt;
&lt;p&gt;预训练知识是静态的，模型版本是动态的。这个时间差导致 Agent 每次生成代码都可能写入已过时的模型名。&lt;/p&gt;
&lt;h2 id="解决方案"&gt;解决方案
&lt;/h2&gt;&lt;p&gt;三步走 — &lt;strong&gt;动态模型注册表 + Skill 语义化引用 + 定时自动更新&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;第一步：TOOLS.md 作为模型注册表。&lt;/strong&gt; Agent 每次启动自动加载到上下文，覆盖过时的预训练知识。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;第二步：Skill 文档中用语义描述替代具体模型名。&lt;/strong&gt; Agent 执行时读到「最强 Flash 模型」后去 TOOLS.md 查具体名称，通过 &lt;code&gt;--model&lt;/code&gt; 传入脚本。Skill 文件永不过时。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;第三步：Cron 定时任务自动更新 TOOLS.md。&lt;/strong&gt; 每天拉取 OpenRouter API 最新模型列表，写入 TOOLS.md。人不需要手动维护。&lt;/p&gt;
&lt;p&gt;&lt;img alt="解决方案架构图：踩坑 vs 解决方案对比" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px"&gt;&lt;/p&gt;
&lt;h2 id="实践成果定时任务首次运行"&gt;实践成果：定时任务首次运行
&lt;/h2&gt;&lt;p&gt;定时任务创建完成后的首次运行报告截图。任务自动拉取 OpenRouter 最新模型列表，识别出新增的 Gemini 3.1 Pro、GPT-5.2 等模型，完成连通性测试后更新 TOOLS.md。&lt;/p&gt;
&lt;p&gt;&lt;img alt="定时任务首次运行报告" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px"&gt;&lt;/p&gt;
&lt;h2 id="修复前后对比"&gt;修复前后对比
&lt;/h2&gt;&lt;h3 id="skillmd-修复前"&gt;SKILL.md 修复前
&lt;/h3&gt;&lt;p&gt;Agent 用预训练知识生成的 SKILL.md，直接硬编码了具体模型版本。以下是 &lt;code&gt;article-to-podcast/SKILL.md&lt;/code&gt; 的实际片段：&lt;/p&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-markdown" data-lang="markdown"&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;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;-&lt;/span&gt; 音频转录: &lt;span style="color:#e6db74"&gt;`google/gemini-2.0-flash-001`&lt;/span&gt;（支持音频输入）
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;-&lt;/span&gt; 翻译/改写: &lt;span style="color:#e6db74"&gt;`anthropic/claude-sonnet-4`&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;-&lt;/span&gt; TTS: &lt;span style="color:#e6db74"&gt;`gemini-2.5-flash-preview-tts`&lt;/span&gt;（Vertex AI）
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;脚本中也是同样的硬编码：&lt;/p&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;# podcast_pipeline.py — Agent 生成的原始版本&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;def&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;call_llm&lt;/span&gt;(messages, model&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;google/gemini-2.0-flash-001&amp;#34;&lt;/span&gt;, timeout&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#ae81ff"&gt;120&lt;/span&gt;):
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &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&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;def&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;translate_faithful&lt;/span&gt;(english_text, prev_context&lt;span style="color:#f92672"&gt;=&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:#75715e"&gt;# 翻译用 claude-sonnet-4，同样是过时版本&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;return&lt;/span&gt; call_llm([&lt;span style="color:#f92672"&gt;...&lt;/span&gt;], model&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;anthropic/claude-sonnet-4&amp;#34;&lt;/span&gt;, timeout&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#ae81ff"&gt;120&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
 &lt;blockquote&gt;
 &lt;p&gt;风险：这些过时的模型导致执行性能明显低于预期。转录准确率更低、翻译质量更差，但因为不报错、能跑通，很难被发现。&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;h3 id="skillmd-修复后"&gt;SKILL.md 修复后
&lt;/h3&gt;&lt;p&gt;修复后的 SKILL.md 不再出现任何具体模型名，改为语义化描述。以下是 &lt;code&gt;article-to-podcast/SKILL.md&lt;/code&gt; 修复后的实际片段：&lt;/p&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-markdown" data-lang="markdown"&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;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;执行时根据当前可用模型动态选择，参考 TOOLS.md 里的最新模型列表：
&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;span style="display:flex;"&gt;&lt;span&gt;|------|---------|
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;| 音频转录 | Gemini 系列最强 Flash 模型（需支持音频输入） |
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;| 翻译/改写 | Claude 系列最强性价比模型（Sonnet 级别） |
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;| TTS 生成 | Gemini 最强 TTS 模型（Vertex AI） |
&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;原则：脚本中的默认模型可能过时，执行前先检查 TOOLS.md 中的
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;「旗舰选型」表确认当前最优模型，通过 --model 参数覆盖。
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;如果 TOOLS.md 信息也过时，可通过 OpenRouter Models 查询各家最新模型。
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
 &lt;blockquote&gt;
 &lt;p&gt;关键变化：表格里只有语义描述（&amp;ldquo;Gemini 系列最强 Flash 模型&amp;rdquo;），完全没有具体版本号。Agent 执行时去 TOOLS.md 查最新模型名，TOOLS.md 过时则去 OpenRouter 查。&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;h3 id="toolsmd-模型注册表"&gt;TOOLS.md 模型注册表
&lt;/h3&gt;&lt;p&gt;Agent 每次启动自动加载到上下文，作为模型选择的唯一真相源：&lt;/p&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-markdown" data-lang="markdown"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;旗舰选型（2026-02-20）
&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;span style="display:flex;"&gt;&lt;span&gt;| 最强智能 | Gemini 3.1 Pro / Opus 4.6 | Vertex / Anthropic |
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;| 日常编码 | Sonnet 4.6 ($3/$15) | Anthropic |
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;| 大量文本 | Gemini 2.5 Flash ($0.30/$2.50) | Vertex |
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;| 生图 | GPT-5 Image | OpenRouter |
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;| 音频 | GPT Audio | OpenRouter |
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="cron-定时更新任务"&gt;Cron 定时更新任务
&lt;/h3&gt;&lt;p&gt;每天自动拉取最新模型列表，更新 TOOLS.md，确保 Agent 的模型认知永远是最新的：&lt;/p&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-yaml" data-lang="yaml"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# OpenClaw cron job 配置&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;schedule&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;kind&lt;/span&gt;: &lt;span style="color:#ae81ff"&gt;cron&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;expr&lt;/span&gt;: &lt;span style="color:#e6db74"&gt;&amp;#34;0 8 * * *&amp;#34;&lt;/span&gt; &lt;span style="color:#75715e"&gt;# 每天早上 8 点（北京时间）&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;tz&lt;/span&gt;: &lt;span style="color:#ae81ff"&gt;Asia/Shanghai&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;payload&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;kind&lt;/span&gt;: &lt;span style="color:#ae81ff"&gt;agentTurn&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;message&lt;/span&gt;: &lt;span style="color:#e6db74"&gt;&amp;#34;去 OpenRouter API 拉取各家最新模型列表，更新 TOOLS.md 中的旗舰选型表&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;sessionTarget&lt;/span&gt;: &lt;span style="color:#ae81ff"&gt;isolated&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
 &lt;blockquote&gt;
 &lt;p&gt;这个 cron job 让 Agent 每天自动检查模型更新。Agent 会调用 OpenRouter API 获取最新模型列表，对比当前 TOOLS.md，有变化就更新。人不需要手动维护。&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;h2 id="经验总结"&gt;经验总结
&lt;/h2&gt;&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Agent 的预训练知识会过时&lt;/strong&gt; — 它&amp;quot;记住&amp;quot;的最新模型可能已经是旧的&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;旧模型不报错是最大的坑&lt;/strong&gt; — 不像依赖库会直接 break，模型退化是无声的&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;用语义描述 + 动态选择&lt;/strong&gt; — Skill 写「最强 Flash 模型」而不是具体版本号&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;TOOLS.md 作为模型选型的唯一真相源&lt;/strong&gt; — 用运行时上下文覆盖过时的预训练知识&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;定时自动更新 &amp;gt; 人工维护&lt;/strong&gt; — 人会忘，cron 不会&lt;/li&gt;
&lt;/ol&gt;</description></item></channel></rss>