<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>评测 on CAO ZUOHUA</title><link>https://caozuohua.github.io/tags/%E8%AF%84%E6%B5%8B/</link><description>Recent content in 评测 on CAO ZUOHUA</description><generator>Hugo</generator><language>zh-cn</language><lastBuildDate>Fri, 18 Sep 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://caozuohua.github.io/tags/%E8%AF%84%E6%B5%8B/index.xml" rel="self" type="application/rss+xml"/><item><title>Agent 框架评测实验室系列：如何测出企业场景中的真实强弱</title><link>https://caozuohua.github.io/posts/2026-09-18-agent-framework-evaluation-series/</link><pubDate>Fri, 18 Sep 2026 00:00:00 +0000</pubDate><guid>https://caozuohua.github.io/posts/2026-09-18-agent-framework-evaluation-series/</guid><description>&lt;p&gt;“LangGraph、OpenAI Agents、PydanticAI、Google ADK，到底哪个更强？”&lt;/p&gt;&#10;&lt;p&gt;这句话听起来像一个排行榜问题，实际上至少藏着六个不同问题：谁更容易写出第一个 demo，谁在同一模型下更省 token，谁能安全暂停审批，谁能在进程崩溃后恢复，谁的原生抽象更适合复杂工作流，谁的运行证据足以通过企业审计。&lt;/p&gt;&#10;&lt;p&gt;如果不先限定业务场景和风险边界，“最强框架”没有可验证的含义。&lt;/p&gt;&#10;&lt;p&gt;我在开发 &lt;a href="https://github.com/caozuohua/agent-framework-lab"&gt;Agent Framework Lab&lt;/a&gt; 的过程中，逐步把框架测验从“同一个 prompt 跑一遍”改造成一条证据链：冻结任务、提示词、工具、模型和价格；交错重复执行；注入审批、取消、工具故障、worker 崩溃和进程重启；保存不可变原始结果；最后才按自定义权重生成比较结果。&lt;/p&gt;&#10;&lt;p&gt;这个系列整理 Lab 的核心理念、方法、代码、失败经验和阶段记录。它既是项目复盘，也是未来开发其他 Agent 测验项目时可以复用的设计手册。&lt;/p&gt;&#10;&lt;h2 id="系列文章"&gt;系列文章&lt;/h2&gt;&#10;&lt;ol&gt;&#10;&lt;li&gt;&lt;a href="https://caozuohua.github.io/posts/2026-09-18-agent-framework-evaluation-1-define-the-question/"&gt;别急着问哪个 Agent 框架最好：先把比较问题定义对&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="https://caozuohua.github.io/posts/2026-09-18-agent-framework-evaluation-2-enterprise-contracts/"&gt;把企业需求写成可执行的 Agent 评测契约&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="https://caozuohua.github.io/posts/2026-09-18-agent-framework-evaluation-3-failure-evidence/"&gt;不注入故障，就测不出 Agent 框架的生产能力&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="https://caozuohua.github.io/posts/2026-09-18-agent-framework-evaluation-4-scoring-and-statistics/"&gt;从原始运行到排行榜：硬门、权重与统计陷阱&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="https://caozuohua.github.io/posts/2026-09-18-agent-framework-evaluation-5-development-journal/"&gt;Agent Framework Lab 开发实录：从比较 demo 到企业就绪 Alpha&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;p&gt;此前发布的&lt;a href="https://caozuohua.github.io/posts/2026-09-17-agent-framework-lab-pitfalls/"&gt;《Agent 框架开发与评测踩坑实录》&lt;/a&gt;是本系列的代码型伴读，集中记录事件账本、审批绑定、幂等键、价格表和 ground truth 等十二类工程坑。&lt;/p&gt;&#10;&lt;h2 id="一张图理解-lab"&gt;一张图理解 Lab&lt;/h2&gt;&#10;&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-text" data-lang="text"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;场景 / Prompt / 工具 / 模型 / 价格 / 限额&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; │ 冻结并版本化&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; ▼&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; Framework Adapter Matrix&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; ┌──────────┴──────────┐&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; │ 公平公共赛道 │ 原生上限赛道&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; │ 同输入、同工具 │ 原生图、handoff、checkpoint&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; └──────────┬──────────┘&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; ▼&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; 正常运行 + 固定故障注入&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; ▼&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; Raw Result / Events / Artifacts&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; ▼&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; 硬性 No-Go → 加权能力画像&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; ▼&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; Go / Conditional-Go / No-Go&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;这套方法最重要的变化，是不再把框架看成一个只负责“调用模型”的 SDK。企业应用真正关心的是一整组能力：任务质量、安全治理、故障恢复、审计、成本、延迟、可运维性、开发体验和迁移成本。&lt;/p&gt;</description></item><item><title>Agent 框架开发与评测踩坑实录：从能跑到可审计、可比较</title><link>https://caozuohua.github.io/posts/2026-09-17-agent-framework-lab-pitfalls/</link><pubDate>Thu, 17 Sep 2026 18:00:00 +0800</pubDate><guid>https://caozuohua.github.io/posts/2026-09-17-agent-framework-lab-pitfalls/</guid><description>&lt;p&gt;很多 Agent demo 的成功标准是：“模型能调用工具，最后返回一个答案。”&lt;/p&gt;&#10;&lt;blockquote&gt;&#10;&lt;p&gt;本文现作为&lt;a href="https://caozuohua.github.io/posts/2026-09-18-agent-framework-evaluation-series/"&gt;《Agent 框架评测实验室系列》&lt;/a&gt;的代码型伴读；系列正文进一步讨论公平赛道、企业场景、故障证据、评分统计和项目演进。&lt;/p&gt;&#10;&lt;/blockquote&gt;&#10;&lt;p&gt;但只要把它放进真实系统，问题马上变成另一组问题：任务执行到一半进程崩了怎么办？审批通过的到底是哪一次工具调用？工具重试会不会重复扣款？两个框架比较时，是否真的使用了同一份提示词和工具？模型价格变化后，旧实验的排名还能不能复算？&lt;/p&gt;&#10;&lt;p&gt;我在 Agent Framework Lab V2 RC 中把这些问题做成了一个可以运行、恢复、审计和比较的实验台。本文不讲“Agent 很有前景”，只记录实现过程中最容易被低估的坑、最终采用的设计，以及可以直接复制的代码片段。&lt;/p&gt;&#10;&lt;h2 id="先给结论agent-评测是一条证据链"&gt;先给结论：Agent 评测是一条证据链&lt;/h2&gt;&#10;&lt;p&gt;可信的评测结果必须能回答：这次运行用了哪个框架、模型、provider、提示词和工具？模型调用、工具调用、审批、checkpoint 的顺序是什么？崩溃或重启后哪些动作被恢复，哪些动作绝不能重放？结果怎么评分？换一组权重后能否只重算排名？排名是否因为 ground truth 写错了？&lt;/p&gt;&#10;&lt;p&gt;因此数据流不是：&lt;/p&gt;&#10;&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-text" data-lang="text"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;prompt -&amp;gt; model -&amp;gt; score&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;而是：&lt;/p&gt;&#10;&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-text" data-lang="text"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;任务契约 + 模型契约 + 工具契约&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; ↓&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; append-only 运行事件&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; ↓&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; 不可变 RunResult 原始证据&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; ↓&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; 可重算的 ScoreProfile&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; ↓&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; 排名、图表和审计报告&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="坑一把任务成功和评分高混成一件事"&gt;坑一：把“任务成功”和“评分高”混成一件事&lt;/h2&gt;&#10;&lt;p&gt;一次运行可能在运行时层面成功完成，但答案质量只有 60 分；反过来，一个答案看起来不错，也不能掩盖未授权工具调用、预算超限或事件账本损坏。&lt;/p&gt;&#10;&lt;p&gt;Lab 将两者拆开：&lt;/p&gt;&#10;&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:#66d9ef"&gt;class&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;RunResult&lt;/span&gt;(BaseModel):&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; run_id: str&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; matrix_id: str&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; framework: str&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; case_id: str&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; status: Literal[&lt;span style="color:#e6db74"&gt;&amp;#34;completed&amp;#34;&lt;/span&gt;, &lt;span style="color:#e6db74"&gt;&amp;#34;failed&amp;#34;&lt;/span&gt;, &lt;span style="color:#e6db74"&gt;&amp;#34;blocked_gateway_contract&amp;#34;&lt;/span&gt;, &lt;span style="color:#e6db74"&gt;&amp;#34;unavailable&amp;#34;&lt;/span&gt;]&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; final_output: str &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#e6db74"&gt;&amp;#34;&amp;#34;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; tool_calls: list[ToolCallRecord] &lt;span style="color:#f92672"&gt;=&lt;/span&gt; []&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; model_calls: list[ModelCallRecord] &lt;span style="color:#f92672"&gt;=&lt;/span&gt; []&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; usage: Usage &lt;span style="color:#f92672"&gt;=&lt;/span&gt; Usage()&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; score: Score &lt;span style="color:#f92672"&gt;|&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;None&lt;/span&gt; &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;None&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; trace_id: str &lt;span style="color:#f92672"&gt;|&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;None&lt;/span&gt; &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;None&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; metadata: dict[str, Any] &lt;span style="color:#f92672"&gt;=&lt;/span&gt; {}&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;code&gt;status == completed&lt;/code&gt; 只表示执行器完成生命周期；&lt;code&gt;score.total&lt;/code&gt; 是评测器对结果的判断。模型返回错误 JSON 时，运行可以成功但结构化输出为 0；预算结算失败时，即使模型输出正确，也必须判为运行时失败；评分规则改变时，可以重算分数，但不能重写原始执行状态。&lt;/p&gt;</description></item></channel></rss>