<?xml version="1.0" encoding="UTF-8"?><rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>开发者周报 Builder Weekly</title><description>Builder Weekly 开发者周报，编程技术、架构设计、AI/LLM、产品思维与设计资源。开发周报, 编程周报, 技术周报, programming weekly</description><link>https://devweekly.github.io/</link><item><title>AI时代的业务流程workflow该怎么做？bpmn还是agent</title><link>https://devweekly.github.io/posts/ai%E6%97%B6%E4%BB%A3%E7%9A%84%E4%B8%9A%E5%8A%A1%E6%B5%81%E7%A8%8Bworkflow%E8%AF%A5%E6%80%8E%E4%B9%88%E5%81%9Abpmn%E8%BF%98%E6%98%AFagent/</link><guid isPermaLink="true">https://devweekly.github.io/posts/ai%E6%97%B6%E4%BB%A3%E7%9A%84%E4%B8%9A%E5%8A%A1%E6%B5%81%E7%A8%8Bworkflow%E8%AF%A5%E6%80%8E%E4%B9%88%E5%81%9Abpmn%E8%BF%98%E6%98%AFagent/</guid><description>workflow and agent and BPMN</description><pubDate>Sat, 12 Sep 2026 01:23:45 GMT</pubDate><content:encoded>&lt;p&gt;2026 年关于“业务流程该用 BPMN 还是 Agent”的讨论，很容易滑向两个极端：一种认为 Workflow 已经过时，另一种把 Agent 当成一个新的节点类型塞进旧流程。把厂商文档、开源实现、学术研究和金融机构的实践放在一起看，得到的答案不是二选一。&lt;/p&gt;
&lt;p&gt;这篇文章要回答的问题只有一个：在金融服务里，确定性的业务流程和概率性的智能能力，应该怎么被拼在一起？&lt;/p&gt;
&lt;p&gt;结论先放在这里：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;金融服务不应该在 BPMN 和 Agent 之间二选一。BPMN/DMN 负责确定性的业务流程、业务规则和责任边界；Agent 负责流程内部那些难以规则化的认知任务；Workflow Runtime 负责业务状态和生命周期；Policy/IAM 负责 Agent 的权限；Agent 的输出必须以受约束的 Task Contract 返回，并经过确定性验证、以及按风险需要的人工批准，才能产生业务副作用。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3&gt;这篇文章的结构&lt;/h3&gt;
&lt;p&gt;需要先说明一件事：本文前半部分讨论的 Agent-first 模型（Agent Runtime + Dynamic Plan + Durable Runtime），是通用 Agent 平台这一领域的真实主张，也是 2026 年厂商投入最大的一条线。它是趋势的一部分，但不是本文对金融业务的结论。所以全文按两条线组织：&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;为什么两个极端都不成立&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;趋势观察（含 Agent-first 领域）&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;主线架构与 Agent Task Contract&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;/tbody&gt;&lt;/table&gt;
&lt;p&gt;只想看结论的读者，可以直接跳到第四部分和第五部分。&lt;/p&gt;
&lt;h1&gt;第一部分：问题定义&lt;/h1&gt;
&lt;h2&gt;1. 两个极端&lt;/h2&gt;
&lt;p&gt;Agent 进入业务流程的早期，工程团队通常会落到两个极端之一。第一个极端是“BPMN → Agent”：在既有的流程引擎里加一个 Agent 节点，把原来需要智能判断的那一步换成一次 LLM 调用；第二个极端是“Agent → Everything”：把整个业务流程交给 Agent：&lt;/p&gt;
&lt;pre&gt;flowchart TD
    B[&quot;Service Task&quot;] --&amp;gt; L[&quot;LLM Node&quot;]
    L --&amp;gt; S[&quot;Service Task&quot;]
    A[&quot;User Intent&quot;] --&amp;gt; AG[&quot;Agent&quot;]
    AG --&amp;gt; T[&quot;Tools&quot;]
    T --&amp;gt; O[&quot;Business Outcome&quot;]&lt;/pre&gt;
&lt;p&gt;前者流程图画得很完整，看起来很可控；后者看起来很先进，演示效果通常也很好。&lt;/p&gt;
&lt;p&gt;两个极端的问题不一样，但根子是同一个：它们都把“业务流程”和“认知任务”当成了同一种东西。注意 BPMN 和 LangGraph 都叫 Workflow 不是巧合——它们是两种不同的编排模型，第 5 节的四个问题是区分它们的标尺。业务流程要回答的是“做什么、谁做、什么时候做、结果去哪、出问题谁负责”；认知任务要回答的是“这一步具体怎么想清楚”。前者需要确定性，后者本身不确定。把它们混成一层，无论混在 BPMN 里还是混在 Agent 里，都会出问题。接下来三节分别说明：传统 Workflow 的边界在哪里，以及两种混法各自错在哪，错得有多贵。&lt;/p&gt;
&lt;h2&gt;2. Business Workflow 与 Agent Workflow 不是同一个东西&lt;/h2&gt;
&lt;p&gt;BPMN 和 LangGraph 都叫 Workflow，但它们解决的不是同一个问题。先把定义分开，后面所有选型都从这里推导。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Business Workflow&lt;/strong&gt; 是由企业预先定义业务状态、责任、事件、审批和状态转移规则，并由 Runtime 持续执行的业务流程。例如：收到贷款申请 → 身份验证 → 信用检查 → 风险评分 → 人工审批 → 放款。核心不是“它是不是确定的”，而是：有 Business Process Definition，有 Process Instance，有业务状态，有角色与责任，有 SLA，有审批，有事件与定时器，有可治理的流程版本。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Agent Workflow&lt;/strong&gt; 是以 Goal 为起点，由 Agent 或 Agent orchestration runtime 在运行过程中动态决定下一步执行内容的任务执行模型。例如：“调查这个投资机会，并给出一份结论” → search web → search Bloomberg → query internal database → read 17 documents → ask another agent → calculate valuation → discover missing information → search again → challenge its own conclusion → ask human → continue → produce report。重点不是“用了 LLM”，而是下一步执行什么在运行时才决定——这正是 LangGraph、Microsoft Agent Framework 这类系统与 BPMN 的核心差别。LangGraph 官方至今仍然区分 predetermined code paths 与 dynamic process / tool usage；Microsoft Agent Framework 则把 workflow 定义成 graph + executors + edges + events + state，并提供 sequential、concurrent、handoff、group chat、Magentic 等 agent orchestration 模式。([Microsoft Learn][48])([Microsoft Learn][49])&lt;/p&gt;
&lt;p&gt;所以：传统 Workflow 的核心是 Business-defined Process Orchestration，Agent Workflow 的核心是 Runtime-driven Orchestration——区别不在 static vs dynamic，而在 orchestration authority 归谁。这是根本区别。&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;Business Workflow&lt;/th&gt;&lt;th&gt;Agentic Execution&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;起点&lt;/td&gt;&lt;td&gt;Business Process&lt;/td&gt;&lt;td&gt;Goal / Intent&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;谁定义路径&lt;/td&gt;&lt;td&gt;Business Architect&lt;/td&gt;&lt;td&gt;Agent&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;路径&lt;/td&gt;&lt;td&gt;Mostly deterministic&lt;/td&gt;&lt;td&gt;Dynamic&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;状态&lt;/td&gt;&lt;td&gt;Process Instance&lt;/td&gt;&lt;td&gt;Agent Task State&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;权限&lt;/td&gt;&lt;td&gt;IAM / Roles&lt;/td&gt;&lt;td&gt;Capability / Policy&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;责任&lt;/td&gt;&lt;td&gt;Human / Organization&lt;/td&gt;&lt;td&gt;Agent executes within authority&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;审计&lt;/td&gt;&lt;td&gt;Process Audit&lt;/td&gt;&lt;td&gt;Trace + Evidence + Audit&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;最终状态&lt;/td&gt;&lt;td&gt;Workflow Runtime&lt;/td&gt;&lt;td&gt;Workflow Runtime&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;h3&gt;一个容易被忽略的技术细节：BPMN 不是状态机&lt;/h3&gt;
&lt;p&gt;这里有一个在架构评审时经常被追问、但很多文档写错的点。严格来说，BPMN 是流程建模与编排的记法。运行时才产生 process instance，以及这个实例在流程图上的 token position 与执行状态。所以更准确的表述是：BPMN 提供确定性的流程模型和状态转移语义；具体某个 Process Instance 当前处于什么状态，由 Workflow Runtime 持有。把 BPMN 直接等同于“状态机”，作为通俗解释没问题，但写进架构文档会带来两个后果：一是把模型和运行时状态混为一谈；二是在讨论“状态到底应该存在哪里、出事故时以谁为准”时，失去判断依据。真正需要持有状态的是 Runtime，而不是图。这一点在后面的分层里很关键——因为“Agent 能不能改流程状态”这个问题的答案，取决于状态的所有权在谁手上，而不取决于图是怎么画的。&lt;/p&gt;
&lt;h2&gt;3. 第一个极端：给 BPMN 加一个 LLM Node&lt;/h2&gt;
&lt;p&gt;传统 Low-code 是拖一个 HTTP Node → 拖一个 Condition → 拖一个 LLM Node → 拖一个 Approval Node，看起来非常容易。但真正复杂之后，会冒出一串运行时问题：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;LLM 为什么选择这个？&lt;/li&gt;
&lt;li&gt;为什么重新搜索？&lt;/li&gt;
&lt;li&gt;为什么调用这个 tool？&lt;/li&gt;
&lt;li&gt;为什么跳过那个 task？&lt;/li&gt;
&lt;li&gt;为什么 context 变了？&lt;/li&gt;
&lt;li&gt;为什么 agent 重新规划？&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;最终暴露出来的问题是连节点只是表面工作，运行时行为才构成主要复杂度。于是最后会出现一个非常荒谬的东西：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Low-code workflow&lt;/li&gt;
&lt;li&gt;Agent Node&lt;/li&gt;
&lt;li&gt;Prompt&lt;/li&gt;
&lt;li&gt;Memory Node&lt;/li&gt;
&lt;li&gt;Agent Router&lt;/li&gt;
&lt;li&gt;Tool Node&lt;/li&gt;
&lt;li&gt;Agent Router&lt;/li&gt;
&lt;li&gt;Condition&lt;/li&gt;
&lt;li&gt;Agent Router&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这实际上只是用 BPMN GUI 给 Agent 套了一层壳，不是长久方向。同样的道理，也不要把 Agent 的内部逻辑画进 BPMN。例如不要：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;BPMN&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Agent Call&lt;/li&gt;
&lt;li&gt;Agent Decision&lt;/li&gt;
&lt;li&gt;Agent Decision&lt;/li&gt;
&lt;li&gt;Agent Loop&lt;/li&gt;
&lt;li&gt;Agent Retry&lt;/li&gt;
&lt;li&gt;Agent Memory&lt;/li&gt;
&lt;li&gt;Agent Tool&lt;/li&gt;
&lt;li&gt;Agent Tool&lt;/li&gt;
&lt;li&gt;Agent Subprocess&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;最终 BPMN 又变成另一种 spaghetti。正确方式是 BPMN 之下只放 Agent Activity，Agent Runtime 内部再拥有自己的执行模型。&lt;/p&gt;
&lt;h2&gt;4. 第二个极端：让 Agent 决定整个业务流程&lt;/h2&gt;
&lt;p&gt;这同样危险。最差的 AI Workflow，就是让模型自己决定整个业务流程，金融领域尤其不能这么做。例如：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Agent&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;approve loan&lt;/li&gt;
&lt;li&gt;move money&lt;/li&gt;
&lt;li&gt;submit trade&lt;/li&gt;
&lt;li&gt;change risk limit&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这里不应该是 Agent 自由决定，而应该经过 Policy Gate 与 Verification 再回到 Agent。Agent 有 autonomy，但没有 unrestricted authority。这一点比 Workflow 这个词本身更值得先弄清楚。两个极端各自错在哪，到这里可以说得很具体了。它们错的不是“用了 BPMN”或“用了 Agent”，而是把基本单元搞错了。本文主张的基本单元不是“LLM Node”，而是 Agent Task：&lt;/p&gt;
&lt;pre&gt;flowchart TD
    BP[&quot;Business Process&quot;] --&amp;gt; AT[&quot;Agent Task&quot;]
    AT --&amp;gt; AR[&quot;Agent Runtime&quot;]
    AR --&amp;gt; SR[&quot;Structured Result&quot;]
    SR --&amp;gt; VG[&quot;Validation / Authorization&quot;]
    VG --&amp;gt; BP&lt;/pre&gt;
&lt;p&gt;第一个极端把 Agent Task 降级成了一个 LLM Node，于是流程图画满了 Agent 的内部细节，却丢掉了智能本身；第二个极端把 Agent Task 升级成了整个业务流程，于是流程资产、责任边界与审批关系一起消失。第四、第五部分会把这条链路展开成完整架构与契约。&lt;/p&gt;
&lt;h2&gt;5. 选型四问：谁拥有 orchestration authority&lt;/h2&gt;
&lt;p&gt;BPMN 还是 Agent Workflow，真正要问的是四个问题。答案决定编排权归谁。&lt;/p&gt;
&lt;h3&gt;Q1：谁决定下一步？&lt;/h3&gt;
&lt;p&gt;Business Process Definition 决定的 → Business Workflow；Runtime Agent Decision 决定的 → Agent Workflow。这是最重要的一问。&lt;/p&gt;
&lt;h3&gt;Q2：谁拥有 Business State？&lt;/h3&gt;
&lt;p&gt;比如 KYC = APPROVED、RiskReview = WAITING、PMApproval = REJECTED，这是 Business State，应由 Business Workflow Runtime 拥有。而 search_done、peer_analysis_done、valuation_running 是 Agent Working State，可以由 LangGraph / Agent Framework 自己拥有。&lt;/p&gt;
&lt;h3&gt;Q3：谁是 Process Definition 的 Source of Truth？&lt;/h3&gt;
&lt;p&gt;问业务分析师“这个业务流程现在到底是什么”：如果答案是 BPMN Process Definition，BPMN 就是 authoritative workflow model；如果答案是 Agent code / graph / orchestration logic，Agent Workflow 就可以成为 authoritative orchestration model；如果答案是 BPMN 定义外层、Agent Graph 定义内部任务，那就是 Nested。&lt;/p&gt;
&lt;h3&gt;Q4：谁承担 Business Accountability？&lt;/h3&gt;
&lt;p&gt;为什么这个 loan 进入人工审批？为什么这个 case 被 reject？谁可以 override？SLA 到期之后走什么流程？这些问题如果要交给 Business Owner、Compliance、Operations、Auditor、Regulator 解释，那么这部分不能只存在 Agent working plan 里。&lt;/p&gt;
&lt;h2&gt;6. 什么时候应该只使用 Business Workflow&lt;/h2&gt;
&lt;p&gt;满足以下大部分条件，优先使用 BPMN / Workflow Engine：Business State 明确，State Transition 明确，Roles 明确，Approval 明确，SLA 明确，需要跨系统协调，需要长期运行，流程版本受治理，审计需要看到流程路径。例如 Account Opening、KYC、Trade Settlement、Payment、Loan Approval、Regulatory Reporting、Claims Processing——这些流程不应该为了 Agent 热潮改成 LangGraph。&lt;/p&gt;
&lt;h2&gt;7. 什么时候可以直接使用 Agent Workflow&lt;/h2&gt;
&lt;p&gt;反过来，满足以下条件时，纯 Agent Workflow 完全合理：Goal 明确但执行路径未知，需要探索、工具选择、动态规划、多 Agent 协作，没有正式业务状态机，没有监管流程定义要求。典型如 Investment Research、Market Intelligence、Internal Knowledge Investigation、Research Memo Generation、Complex Document Analysis、Incident Investigation。&lt;/p&gt;
&lt;p&gt;比如“判断某家公司是否值得进入我们的投资候选池，并准备研究报告”——如果强行 BPMN 化（Search Company → Retrieve Filing → Peer Analysis → DCF → Missing Info? → Search Again → Ask Specialist → Critic → Recalculate），会非常难维护。这种情况下 LangGraph、Microsoft Agent Framework、DeepAgents 或自研 Agent Runtime 完全可以成为主要 orchestration 层。&lt;/p&gt;
&lt;h2&gt;8. 金融最常见的最终形态：Nested Orchestration&lt;/h2&gt;
&lt;p&gt;当前面两节同时成立——外层有正式业务流程、内层任务需要动态探索——答案就是 Nested：Business Workflow 定义外层，Agent Workflow 定义内部任务，BPMN 是 Business Process Source of Truth，Agent Graph 是 Agent Task Source of Truth。例如 Investment Idea Review 之下，Research、Risk Review、Compliance Review 各自内部跑一条 Agentic Workflow（搜索、估值、证据核查、重新规划），最后回到 BPMN 做 PM Approval。&lt;/p&gt;
&lt;p&gt;Agent Task 从哪里读业务事实，是 Nested 落地时的第一个实际问题：答案是第 9 节的 Business Data Contract（authoritative source、snapshot、context version、consistency window）。完整的五层分层见第 25 节。&lt;/p&gt;
&lt;h2&gt;9. Business Data Contract：Agent 看到的是哪一个版本的业务事实&lt;/h2&gt;
&lt;p&gt;金融 Agent 落地时，最大的问题往往不是 Agent Runtime 的能力，而是 Agent 到底看到的是哪一个版本的业务事实。考虑一个很普通的时间线：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;10:01 BPMN: Risk = 0.82&lt;/li&gt;
&lt;li&gt;10:05 Agent: 查 Snowflake，得到 Risk = 0.77&lt;/li&gt;
&lt;li&gt;10:10 Human: 界面上看到的是 0.79&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;三个数字都“正确”，因为它们来自三个时间点的不同来源，但在审计场景里，这直接导致结论无法复现。&lt;/p&gt;
&lt;p&gt;所以架构上不能只有：Agent → Snowflake。
而要有 BPMN Process Instance → Business Context → Approved Data Snapshot（Authoritative Source）→ Agent Task → Structured Result → 回到 Process Instance 的闭环。&lt;/p&gt;
&lt;p&gt;具体要确定的是四件事：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;权威源（authoritative source）&lt;/strong&gt; —— 某个业务事实以哪个系统为准。Portfolio value 是来自交易系统、估值系统还是数仓，必须指定唯一答案。允许两个系统都“能查到”，就等于允许两个结论。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;快照语义（snapshot semantics）&lt;/strong&gt; —— Agent Task 开始时的业务上下文是否被冻结。如果冻结，整个 Task 内的所有查询都基于同一版本；如果不冻结，就必须显式记录每一次读取的时间戳，并接受结论建立在“混合版本”之上。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;版本标识（context version）&lt;/strong&gt; —— 这个 context 需要一个可写入 Evidence 的标识，让事后能回答“当时它看到的是哪一版”。这是第 22 节里 Level B 可复现的前置条件。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;跨系统一致性窗口&lt;/strong&gt; —— Position、Market price、Risk score、Compliance status 来自不同系统，同步延迟不同。要么给出一个显式的一致性窗口，要么承认“不保证一致”并把风险写进设计文档。最怕的是既没有窗口、也没有声明，等到争议出现时才发现无法解释。&lt;/p&gt;
&lt;p&gt;这一层决定了 Agent 的输出能否被复核。模型可以换，harness 可以换，Agent Runtime 的框架可以换，但只要 Data Contract 是清楚的，历史决策至少可以在“同样的业务事实 + 记录在案的规则版本 + 记录在案的 Agent 轨迹”这三个条件下被复核。反过来，如果 Data Contract 不清楚，任何 audit trail 都建立不牢——因为审计看到的是一堆记录，而不是一条能走通的证据链。&lt;/p&gt;
&lt;h3&gt;一个可复现的版本栈&lt;/h3&gt;
&lt;p&gt;把上面的四件事合起来，一个金融 Agent 的 Task 要在事后被完整解释，需要同时记住六个版本标识：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;workflowVersion = investment-idea-review v17&lt;/li&gt;
&lt;li&gt;policyVersion = compliance-policy v8&lt;/li&gt;
&lt;li&gt;dataSnapshot = ctx-20260912-1030&lt;/li&gt;
&lt;li&gt;modelVersion = model@version&lt;/li&gt;
&lt;li&gt;promptVersion = compliance-review v12&lt;/li&gt;
&lt;li&gt;evidenceRef = doc-123#p17&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;有了这六项，才能回答“为什么当时这个 Agent 会得到这个结论”。缺任何一项，复盘都会退化：只记 workflow 版本，说明不了 Agent 为什么这样判断；只记 model 版本，说明不了它当时看到的是哪一版业务事实。反过来也要说清边界：版本标识解决的是“可复现”，不是“可信任”。记录齐全只保证结论可以被重新推导，不保证结论正确。正确性由业务规则、验证与必要的人工审批负责。这两件事经常被混为一谈，结果是团队花大力气把日志做完整，却依然回答不了监管最关心的那个问题。这也是 Data / Semantic 层不应该被塞进 Control Plane 的原因：它回答的是“世界是什么样”，Control Plane 回答的是“谁被允许做什么”。&lt;/p&gt;
&lt;h1&gt;第二部分：业界趋势&lt;/h1&gt;
&lt;p&gt;下面不按厂商罗列，而是按第 5～8 节的决策框架，看三种模式在 2026 年产品里的真实样子：Camunda、Fluxnova 是 Business Workflow；LangGraph、Microsoft Agent Framework 是 Agentic Orchestration；Temporal、Durable Task 是正交的 Durable Execution。厂商名只是实现，决策维度才是选型的依据。&lt;/p&gt;
&lt;h2&gt;10. 四个架构领域总览&lt;/h2&gt;
&lt;p&gt;2026 年的行业实践，可以按“各自解决什么问题”归成四个架构领域。它们不是互相替代的关系，而是分别占住了架构的不同层。&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;流程、责任、审批、SLA、审计&lt;/td&gt;&lt;td&gt;Camunda / Fluxnova&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;领域二 · Agent Runtime 与 Harness&lt;/td&gt;&lt;td&gt;Agent 如何工作&lt;/td&gt;&lt;td&gt;OpenAI / Anthropic / LangGraph / Microsoft / Google&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;领域三 · Durable Execution&lt;/td&gt;&lt;td&gt;Agent 如何可靠地长期运行&lt;/td&gt;&lt;td&gt;Temporal / Durable Task&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;领域四 · Enterprise Semantic &amp;amp; Data&lt;/td&gt;&lt;td&gt;Agent 在什么世界里工作&lt;/td&gt;&lt;td&gt;Palantir / Snowflake&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;p&gt;四个领域共同指向同一个组合点：Agent Task Contract。&lt;/p&gt;
&lt;p&gt;这个分组方式本身就是一个判断：这四件事不在同一个维度上，不能用“谁替代谁”来讨论。其中有一处需要额外说明：领域三（Durable Execution）严格来说不与另外三者处在同一层，而是一层基础能力。它不解决“Agent 怎么决策”，也不解决“流程怎么定义”，它解决的是“执行到一半进程崩了怎么办”。把它当成一个可选方向去和 BPMN 比较，是选型时最常见的误判之一；把它当成所有长任务路径都必须具备的底座，才是它的真实位置。把领域二三混成一句“Agent Workflow 取代了 BPMN”，是这一轮技术讨论里最普遍的一次偷换。后面的第 46 节会把这个问题拆到产品层面。&lt;/p&gt;
&lt;h2&gt;11. 领域一 · 确定性业务编排（Camunda / Fluxnova）&lt;/h2&gt;
&lt;p&gt;为什么用 BPMN 引擎承载 Agent Workflow 会让人本能地抵触？Fluxnova 仍然是 BPMN 引擎：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;BPMN&lt;/li&gt;
&lt;li&gt;DMN&lt;/li&gt;
&lt;li&gt;Human Task&lt;/li&gt;
&lt;li&gt;Process State&lt;/li&gt;
&lt;li&gt;Audit&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;它现在已经开始加入：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;ad-hoc subprocess&lt;/li&gt;
&lt;li&gt;agentic subprocess&lt;/li&gt;
&lt;li&gt;MCP&lt;/li&gt;
&lt;li&gt;AI integration&lt;/li&gt;
&lt;li&gt;dynamic routing&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;但它仍然是 BPMN-centered orchestration，没有转到 Agent-centered execution runtime。Fluxnova 3.0 本身仍以 BPMN Process Engine 为核心，只是增加了 Ad Hoc Subprocess 等动态能力；其 roadmap 甚至把 AI integration 放到了后续能力路线。(&lt;a href=&quot;https://github.com/finos/fluxnova-bpm-platform/releases&quot;&gt;GitHub&lt;/a&gt;)&lt;/p&gt;
&lt;h3&gt;更准确的说法：deterministic + dynamic，而不是“把 Agent 塞进 BPMN”&lt;/h3&gt;
&lt;p&gt;前面那句“Camunda 的方向是把 Agent 塞进 BPMN”，只说对了一半。Camunda 8.7 的官方文档已经把这件事定义得非常明确：agentic orchestration 是把确定性编排和动态（AI 驱动）编排混合进同一个端到端流程。原文的表述是，AI agent 负责执行流程中非确定性的部分，而 BPMN 提供可预测性、合规性和客户体验的底座。(&lt;a href=&quot;https://docs.camunda.io/docs/8.7/components/agentic-orchestration/&quot;&gt;Camunda 8 Docs&lt;/a&gt;)&lt;/p&gt;
&lt;p&gt;分工是清楚的：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;LLM → 决定调用什么工具、以什么顺序、什么时候停止&lt;/li&gt;
&lt;li&gt;Camunda → 执行 BPMN elements&lt;/li&gt;
&lt;li&gt;Camunda → 保存 process state&lt;/li&gt;
&lt;li&gt;Camunda → retry / incident&lt;/li&gt;
&lt;li&gt;Camunda → human task&lt;/li&gt;
&lt;li&gt;Camunda → 确定性逻辑&lt;/li&gt;
&lt;li&gt;Camunda → process boundary&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;所以更准确的表述是：Camunda 选择的是在 Business Workflow 内原生支持 Agentic Orchestration——AI agents 执行 non-deterministic parts，BPMN 保持 end-to-end process 的可预测性和合规性。这不再是“Camunda 更先进”，而是 Camunda 选择了 Nested / Integrated 模式，并且把两种 orchestration 都收进一个平台。具体的设计与架构建议，见 Camunda 的《Design and architecture》文档。(&lt;a href=&quot;https://docs.camunda.io/docs/components/agentic-orchestration/ao-design/&quot;&gt;Camunda 8 Docs&lt;/a&gt;)本文要讨论的是这个边界应该由什么契约来定义。这对金融、保险、银行很合理。但如果目标是一个 AI-native Agent Platform，BPMN 不适合作为核心抽象。&lt;/p&gt;
&lt;p&gt;补一条 2026 年中的新进展：Camunda 8.10 把 Agent 建模成了一等执行对象，明确区分 Agent Definition 与 Agent Instance——定义描述部署的 Agent，实例代表某一次具体运行；BPMN 元素实例与 Agent 实例也不是同一个生命周期对象，同一个 Agent 实例可以在同一次流程实例里被多个元素实例复用（比如人工回复后流程回到 Agent 节点，对话记忆不断）。Operate 里可以直接看到 Agent 的执行状态、用量与完整推理链，LangGraph 这类外部框架经由 Agent Instance API 上报后同样可见。(&lt;a href=&quot;https://docs.camunda.io/docs/next/components/agentic-orchestration/agent-definitions-and-instances/&quot;&gt;Camunda 8 Docs&lt;/a&gt;)这正是“Agent 正在成为 Workflow Runtime 中的一等执行对象，但仍然不是 Business Process 本身”。&lt;/p&gt;
&lt;h2&gt;12. 领域二（上）· 执行模型&lt;/h2&gt;
&lt;p&gt;这个领域的主张最激进，投入也最大。它并不否认 Workflow 的存在，而是主张 Workflow 的实现方式应该被重写。在评价它之前，先把它自己的主张摆出来。而比较合理的模型其实是：User / Business Event → Intent → Agent Runtime（含 Policy / Authority、Context / Memory、Tools / APIs / MCP、Dynamic Plan）→ Execution Runtime（Deterministic Code / Agent Task / Human Task / External Event 分支汇总成 Result，再经 Verification / Policy Check 回流 Agent），另有一条 Durable State + Event Log 做底座。&lt;/p&gt;
&lt;p&gt;这里先说两件事：在 Agent-first 架构中，Agent 可以动态决定下一步的任务或工具调用；但在金融业务流程中，这种自由度被限制在 BPMN 定义的 Agent Task 边界内。Runtime 决定“这个下一步能不能做、怎么执行、出了问题怎么办”。第一点是这个领域与过去 Workflow 最大的区别，也是它后来必须被限制的地方；第二点则不受领域之争影响——无论目标是什么，执行边界都必须存在。&lt;/p&gt;
&lt;h3&gt;Google ADK 2.0&lt;/h3&gt;
&lt;p&gt;Google 在 2026 年把 ADK 从原来的 hierarchical agent executor 明确转向 Workflow Runtime + Graph-based execution：Agent、Tool、Function 全部作为 workflow graph 的节点，并支持 branching、parallelism、loops、human-in-the-loop、state preservation 与 resume；原来的 &lt;code&gt;SequentialAgent / LoopAgent&lt;/code&gt; 正逐步被 graph workflow 取代。(&lt;a href=&quot;https://github.com/google/adk-docs/blob/main/docs/2.0/index.md&quot;&gt;GitHub&lt;/a&gt;)先看它的立场，而不是它说了什么：不是“Agent 出现了，所以 Workflow 消失”，而是“Workflow 的实现方式必须适应 Agent”。&lt;/p&gt;
&lt;h3&gt;Microsoft Agent Framework&lt;/h3&gt;
&lt;p&gt;Microsoft Agent Framework 现在把 Workflow 定义成：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Executors&lt;/li&gt;
&lt;li&gt;Edges&lt;/li&gt;
&lt;li&gt;State&lt;/li&gt;
&lt;li&gt;Events&lt;/li&gt;
&lt;li&gt;Runtime&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;而 Executor 可以是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;普通代码&lt;/li&gt;
&lt;li&gt;Agent&lt;/li&gt;
&lt;li&gt;Tool&lt;/li&gt;
&lt;li&gt;sub-workflow&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;并且 runtime 负责：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;execution&lt;/li&gt;
&lt;li&gt;events&lt;/li&gt;
&lt;li&gt;checkpointing&lt;/li&gt;
&lt;li&gt;HITL&lt;/li&gt;
&lt;li&gt;concurrency&lt;/li&gt;
&lt;li&gt;state management&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;也就是说，Workflow 不再等价于 Business Process Diagram，而是一个可执行的 runtime topology。(&lt;a href=&quot;https://learn.microsoft.com/en-us/agent-framework/workflows/workflows&quot;&gt;Microsoft Learn&lt;/a&gt;)&lt;/p&gt;
&lt;h3&gt;LangGraph&lt;/h3&gt;
&lt;p&gt;LangGraph 把自己定位成 low-level orchestration framework for stateful agents。它的核心价值不是“画流程”，而是：State → Node → Decision → Tool → Checkpoint → Resume。
它特别强调 durable execution、stateful agents、long-running execution 与 failure recovery。也就是说，Graph 在这里不是给业务人员看的流程图，而是 Agent 的执行 runtime。(&lt;a href=&quot;https://github.com/langchain-ai/langgraph&quot;&gt;GitHub&lt;/a&gt;)换句话说：LangGraph 是 Agentic Orchestration Runtime，不是 Business Process Management 的直接替代品。但要加一句限定——如果企业的业务流程本身就是 Agentic Task，它当然可以成为整个业务流的 orchestration runtime。问题从来不是“LangGraph 能不能做业务流程”，而是“不要默认它就是 Business Process Engine”。所以不要再想 &lt;code&gt;Workflow = DAG / BPMN&lt;/code&gt;，而应该定义：所以不要再想 &lt;code&gt;Workflow = DAG / BPMN&lt;/code&gt;，而应该定义：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Agentic Execution&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Intent&lt;/li&gt;
&lt;li&gt;Policy&lt;/li&gt;
&lt;li&gt;Execution State&lt;/li&gt;
&lt;li&gt;Dynamic Plan&lt;/li&gt;
&lt;li&gt;Durable Runtime&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这里用 Execution 而不用 Workflow 是有意的：Intent 是输入，Policy 是控制，Dynamic Plan 是决策，Execution State 是状态，Durable Runtime 是基础设施——五件事不在同一层，“Agentic Workflow”这个名字会把它们压成一个词。&lt;/p&gt;
&lt;h3&gt;① Intent&lt;/h3&gt;
&lt;p&gt;起点不是 &lt;code&gt;Start → A → B → C&lt;/code&gt;，而是一个目标，例如“完成投资机会尽调并生成投资建议”。Agent 负责寻找完成这个 Goal 的路径。&lt;/p&gt;
&lt;h3&gt;② Policy&lt;/h3&gt;
&lt;p&gt;这个才是企业 Workflow 最应该固定下来的东西。例如：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&lt;span&gt;&lt;span&gt;policy&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  can_read&lt;/span&gt;&lt;span&gt;: [&lt;/span&gt;&lt;span&gt;market_data&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;research_db&lt;/span&gt;&lt;span&gt;]&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  can_write&lt;/span&gt;&lt;span&gt;: [&lt;/span&gt;&lt;span&gt;draft_report&lt;/span&gt;&lt;span&gt;]&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  approval_required&lt;/span&gt;&lt;span&gt;: [&lt;/span&gt;&lt;span&gt;execute_trade&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;send_external_email&lt;/span&gt;&lt;span&gt;]&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  forbidden&lt;/span&gt;&lt;span&gt;: [&lt;/span&gt;&lt;span&gt;customer_pii_export&lt;/span&gt;&lt;span&gt;]&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  max_budget&lt;/span&gt;&lt;span&gt;: { &lt;/span&gt;&lt;span&gt;tokens&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;100000&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;tool_calls&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;50&lt;/span&gt;&lt;span&gt; }&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;也就是说，流程可以变动，要固定下来的是权限和边界，这比 BPMN Gateway 更实在。&lt;/p&gt;
&lt;h3&gt;③ Dynamic Plan&lt;/h3&gt;
&lt;p&gt;Agent 根据目标动态产生工作计划：搜索公司、取财务数据、分析竞争对手、发现信息缺口、再搜索、建模估值、复核假设、产出报告——顺序与内容都由 Agent 自己决定，而不是预先画在流程图上。这个 Plan 对长跑 Agent 而言确实需要持久化，而不是只存在 LLM context 里。但要区分清楚：持久化的是 Agent Task 的执行状态，不是企业业务流程的状态——这一点在第 54 节展开。例如：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&lt;span&gt;&lt;span&gt;{&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  &quot;runId&quot;&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;&quot;invest-20260912-001&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  &quot;goal&quot;&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;&quot;Evaluate XYZ&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  &quot;plan&quot;&lt;/span&gt;&lt;span&gt;: [&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    {&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;      &quot;id&quot;&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;&quot;t1&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;      &quot;type&quot;&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;&quot;research&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;      &quot;status&quot;&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;&quot;completed&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    },&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    {&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;      &quot;id&quot;&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;&quot;t2&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;      &quot;type&quot;&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;&quot;valuation&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;      &quot;status&quot;&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;&quot;running&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  ]&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;在这个领域的语境里，“Workflow”的含义已经发生位移：在 Agent-first 系统中，Agent Task 的内部执行计划可以由 Agent 动态生成；它不等于企业 Business Workflow Definition。这是 Agent Platform 视角下的结论。一旦把目标切到企业业务流程，这个区分就变成架构上的硬边界——第 24 节会把两种“计划”明确分开。&lt;/p&gt;
&lt;h3&gt;④ Execution State&lt;/h3&gt;
&lt;p&gt;这是传统 Workflow Engine 最值得保留的东西。真实的长任务经常是“跑 25 分钟 → 等待人工 → 6 小时后继续”，状态至少要能区分：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;RUNNING / WAITING_TOOL / WAITING_HUMAN / WAITING_EVENT&lt;/li&gt;
&lt;li&gt;FAILED / RETRYING / COMPLETED / CANCELLED&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;需要的是 durability、checkpoint、resume、timeout、retry、compensation 与 idempotency，而不是漂亮的流程图。这一点比 BPMN 图本身更实在。&lt;/p&gt;
&lt;h3&gt;⑤ Execution Runtime&lt;/h3&gt;
&lt;p&gt;真正的核心应该是 Agent Brain 与 Agent Execution Runtime 的分工：Agent 只负责提议，Runtime 负责授权、验证、执行与审计，中间经过 Policy Engine、Authority、Sandbox、Durable State 与 Event Log 这些统一边界。&lt;/p&gt;
&lt;p&gt;Agent 不应该绕过统一的身份、权限、工具和审计边界，直接拿到未治理的生产系统权限。这句话不等于“Agent 不能访问生产系统”。它可以访问，但访问必须走完整链路：Agent → Task Context（业务上下文 + 流程实例 + 数据版本） → Tool / Capability → Identity / Authorization → Target System。
而不是：Agent → 万能 production credential。
这里有一个金融场景特有的细节：Authorization 判断的不只是 Agent 的身份。同一个 Agent，对 Investment A 与 Investment B 的权限可能相同，但业务上下文、交易上下文、数据版本与流程实例不同，允许的动作就可能不同。所以完整的授权输入应该是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Agent&lt;/li&gt;
&lt;li&gt;User&lt;/li&gt;
&lt;li&gt;Workflow Instance&lt;/li&gt;
&lt;li&gt;Business Object&lt;/li&gt;
&lt;li&gt;Action&lt;/li&gt;
&lt;li&gt;Context&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;只写“Agent Identity / Authority”，在评审时会被简化成“这个 Agent 有没有权限”，而金融机构真正要回答的是“在这个 case、这个版本的业务事实上，这一步动作是否被允许”。Agent 只负责 propose、reason、choose 与 delegate；Runtime 负责 authorize、validate、execute、retry、pause、resume 与 audit。这其实就是未来 Agent Platform 最核心的一层。内部 AI Platform 也可以按同一个方向设计：把 Planning、Context 与 Tool Gateway 收进 Agent Runtime，把 Durable State、Event Log 与 Human Task 放在执行侧，再把 Evaluation / Trace 接在末端。这与第 50 节那张平台分层图是同一个判断的两种画法，这里不再重复贴图。需要补一句：BPMN / Camunda / Fluxnova 是一个“外部能力”，不是整个 Agent Platform 的核心。这和今天很多企业的架构思路会完全不同。需要补充一句：这不是本文对金融场景的结论。在金融场景里，BPMN 恰恰是核心控制面，而不是外围能力。两句话并不矛盾，差别只在目标是通用 Agent 平台还是企业业务流程。&lt;/p&gt;
&lt;h3&gt;Microsoft 的第二条线：Durable Runtime&lt;/h3&gt;
&lt;p&gt;微软实际上同时押了两个方向——&lt;code&gt;Agent + Workflow + Durable Runtime&lt;/code&gt;，而不是二选一。除了上一小节那个 graph workflow 模型之外，它还提供了 checkpoint、human-in-the-loop、fan-out / fan-in、sub-workflow、typed routing、graph execution 与 durable execution。更重要的是，微软直接提供 Durable Extension，把 Agent Framework 的 graph workflow 跑在 Durable Task 基础设施上：Agent Framework → Graph Workflow → Durable Task → Checkpoint → Resume → Distributed Workers。
并支持 agent 运行数天甚至数周。(&lt;a href=&quot;https://learn.microsoft.com/en-us/agent-framework/integrations/durable-extension&quot;&gt;Microsoft Learn&lt;/a&gt;)这里已经非常接近这样的三段式模型：Agent 是 intelligence，Workflow 是 execution topology，Durable Task 是 runtime。这是一个很好的概念分层，但要补一句：概念分层不意味着产品分离——“同一套 workflow 定义，换个 host 就获得 durability”，一个产品同时承担其中两层甚至三层是常态。(&lt;a href=&quot;https://devblogs.microsoft.com/dotnet/durable-workflows-in-microsoft-agent-framework/&quot;&gt;Microsoft for Developers&lt;/a&gt;)Microsoft 的框架恰好是证明“Agent Workflow 和 Business Workflow 可以共享同一种 runtime abstraction，但不拥有相同业务语义”的边界案例：Workflow 由 executors + edges 组成 directed graph 并管理执行（[Microsoft Learn][48]），之上是 sequential、concurrent、handoff、group chat、Magentic 等 agent orchestration 模式（[Microsoft Learn][49]），Workflow 可以 as_agent 暴露、Agent 也可以作为 executor 进入 Workflow（[Microsoft Learn][50])——但语义归属不变，Business 语义仍由持有业务状态与责任的一方定义。&lt;/p&gt;
&lt;h2&gt;13. 领域二（下）· Harness 被产品化&lt;/h2&gt;
&lt;p&gt;上一节讲的是“Agent 的执行模型长什么样”，这一节讲的是“厂商正在把什么产品化”。这里有一个值得单独拿出来看的趋势：Agent Harness 本身正在成为独立的基础设施，而不是某个框架的内部实现细节。一旦它可以被单独产品化、单独版本化、单独定价，它在架构上的地位就变了——它从框架的内部细节，变成一层需要被认领的架构。&lt;/p&gt;
&lt;h3&gt;Anthropic：Claude Research 的多 Agent 结构&lt;/h3&gt;
&lt;p&gt;Anthropic 的做法和微软略有不同。它最经典的生产案例是 Claude Research：一个主 Agent 制定研究计划，再启动多个并行 Agent 搜索，最后汇合。&lt;/p&gt;
&lt;p&gt;Anthropic 明确指出，系统设计最大的难点已经变成 coordination、evaluation、reliability 与 tool design，而不是传统 workflow 的节点设计。(&lt;a href=&quot;https://www.anthropic.com/engineering/multi-agent-research-system&quot;&gt;Anthropic&lt;/a&gt;) 这与传统 BPMN 的思路差别很大。&lt;/p&gt;
&lt;h3&gt;Anthropic 的第二条线：Harness&lt;/h3&gt;
&lt;p&gt;Anthropic 对 Agent 的工程实践越来越集中到 Harness，而不是 Workflow Designer。它 2026 年的工程文章把 long-running agents、managed agents、context engineering、skills、tool use、security、agent containment、evals 与 multi-agent research 分成几条独立的线推进。(&lt;a href=&quot;https://www.anthropic.com/engineering&quot;&gt;Anthropic&lt;/a&gt;)也就是说，&lt;code&gt;Model + Harness + Tools + Environment + Permissions + Context + Evaluation&lt;/code&gt; 正在成为一个比传统 workflow 更核心的抽象。不过要说清楚：Anthropic 的公开实践集中在 Harness、Tool Use、Context Engineering、Containment 与 Evaluation，并没有提出一套企业业务流程架构。把它的工程文章读成“BPMN 的替代方案”，是过度解读。&lt;/p&gt;
&lt;h3&gt;OpenAI：从 Agents SDK 到 harness + sandbox&lt;/h3&gt;
&lt;p&gt;OpenAI 2025 年最初的方案是 &lt;code&gt;Responses API + Agents SDK + Tools + Handoffs + Guardrails + Tracing&lt;/code&gt;，已经明显不是传统 workflow。2026 年更进一步，新的 Agents SDK 强调 model-native harness + sandbox + long-horizon task：Agent → Harness → Sandbox → Tools / Files / Commands → Long-running execution。
并且把 harness 与 compute 分离，强调 security、durability 与 scale。(&lt;a href=&quot;https://openai.com/index/new-tools-for-building-agents/&quot;&gt;OpenAI&lt;/a&gt;)（&lt;a href=&quot;https://openai.com/index/the-next-evolution-of-the-agents-sdk/&quot;&gt;OpenAI&lt;/a&gt;）这里还有一层意思：Agent Workflow 最终可能不是 DAG，而是一个“可持续运行的 Agent Process”。&lt;/p&gt;
&lt;h3&gt;2026-09-10：OpenAI 把 Harness 单独产品化&lt;/h3&gt;
&lt;p&gt;这条更新对本文的论证尤其重要，因为它是一个非常直接的证据。OpenAI 在 2026-09-10 发布 Agents API，把驱动 Codex 的同一套 harness 与基础设施开放出来，并且明确由 OpenAI 托管和维护。(&lt;a href=&quot;https://openai.com/index/introducing-the-agents-api/&quot;&gt;OpenAI&lt;/a&gt;)它提供的能力清单很能说明问题：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;managed harness&lt;/li&gt;
&lt;li&gt;long-running sessions（模型可以连续工作数小时）&lt;/li&gt;
&lt;li&gt;context management（接近上下文上限时自动压缩早期上下文）&lt;/li&gt;
&lt;li&gt;sandbox（OpenAI 托管沙箱，或自带基础设施 / 第三方沙箱）&lt;/li&gt;
&lt;li&gt;subagents（把任务拆给并行子智能体）&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;而开发者只需要定义四样东西：task、model、tools、environment。其余运行时基础设施——会话、上下文压缩、沙箱、并发子智能体调度——由平台负责。(&lt;a href=&quot;https://openai.com/index/introducing-the-agents-api/&quot;&gt;OpenAI&lt;/a&gt;)这里有两层含义，方向相反，必须一起看。第一，它支持“Agent Runtime / Harness 正在成为独立基础设施”这个判断。当一个 harness 可以被单独产品化、单独版本化时，它就不再是框架的内部细节，而是一层需要被认领的架构。第二，它同时反证了 Agent Runtime 不等于 Business Workflow Runtime。Agents API 提供的“orchestration”指的是单个 Agent 会话内部的任务编排：决定先查什么、再调什么工具、什么时候停止。它不持有企业流程状态，不负责跨部门审批，也不会为一个投资 Idea 的合规责任签字。这两件事都被称为“编排”，但归属完全不同。这是后面反复要用的一个区分。&lt;/p&gt;
&lt;h3&gt;内部应用：delegated long-horizon task&lt;/h3&gt;
&lt;p&gt;OpenAI 在公开材料里把内部 Codex 的工作单位定义成 delegated long-horizon task，而不是 single interaction：员工把一件长周期任务整体交出去，Agent 自己使用工具、文件与代码反复迭代，直到交出结果。(&lt;a href=&quot;https://openai.com/index/how-agents-are-transforming-work/&quot;&gt;OpenAI&lt;/a&gt;)&lt;/p&gt;
&lt;h3&gt;OpenAI Presence：企业 Agent Operating Model&lt;/h3&gt;
&lt;p&gt;2026 年推出的 Presence 尤其值得注意，它的切入点不是 Workflow Designer，而是一个具体岗位：specific job → knowledge → system access → permissions → policies → agent → escalation → human。
每个 Agent 都有明确的权限、工作范围、approval 与 escalation，典型场景是 billing、insurance claims 与 IT service request。(&lt;a href=&quot;https://openai.com/index/introducing-openai-presence/&quot;&gt;OpenAI&lt;/a&gt;)这已经非常接近金融机构需要的模型。&lt;/p&gt;
&lt;h3&gt;Google：Agent Platform + Enterprise Governance&lt;/h3&gt;
&lt;p&gt;Google 2026 年提出的 Agentic Enterprise blueprint 是 &lt;code&gt;Agent + Agent Platform + Orchestration + Governance + Enterprise Data&lt;/code&gt;，而不是 &lt;code&gt;BPMN + LLM Node&lt;/code&gt;。Gemini Enterprise 被明确定义成 agent development + orchestration + governance 的一体化平台，并开始支持 long-running agents、agent collaboration spaces、advanced governance 与 agent marketplace。(&lt;a href=&quot;https://cloud.google.com/blog/products/ai-machine-learning/the-new-gemini-enterprise-one-platform-for-agent-development&quot;&gt;Google Cloud&lt;/a&gt;)（&lt;a href=&quot;https://cloud.google.com/blog/products/ai-machine-learning/whats-new-in-gemini-enterprise&quot;&gt;Google Cloud&lt;/a&gt;）2026 年 5 月 Google 又推出了 Agent Executor，一个分布式 Agent Runtime：durable execution、失败与 HITL 中断后可恢复、沙箱隔离、分布式部署，而且 harness-agnostic——自带 harness 与 LangGraph 这类第三方框架都能跑在上面。(&lt;a href=&quot;https://cloud.google.com/blog/products/ai-machine-learning/agent-executor-googles-distributed-agent-runtime&quot;&gt;Google Cloud&lt;/a&gt;)这正是“Agent Runtime + Durable Execution 合在一起交付”的又一个实例。这说明大型企业平台厂商的竞争重点，正在从“谁有最好的 Agent Builder”转向谁能提供企业级 Agent Operating Environment。&lt;/p&gt;
&lt;h3&gt;Snowflake：Data-native 的 Agent 平台&lt;/h3&gt;
&lt;p&gt;Snowflake 的 Cortex Agents 架构已经非常清楚：&lt;/p&gt;
&lt;p&gt;具体是 Cortex Agent 之下分 Cortex Analyst / Cortex Search / Code 三路，分别接结构化数据、非结构化数据与算力，再汇入 Reasoning 做 Action。&lt;/p&gt;
&lt;p&gt;官方明确说 Cortex Agents 自己负责 reasoning、plan work、call tools、execute code、maintain threads 与 multi-step orchestration，客户不需要自建 orchestration loop / runtime / sandbox。(&lt;a href=&quot;https://docs.snowflake.com/en/user-guide/snowflake-cortex/cortex-agents&quot;&gt;Snowflake Documentation&lt;/a&gt;) 2026-08-28，Snowflake 进一步建议从 Cortex Analyst 迁移到 Cortex Agents，原因就是后者把 structured data、unstructured data、tool calling、thread context 与 multi-step orchestration 放进了同一个 Agent runtime。(&lt;a href=&quot;https://docs.snowflake.com/en/release-notes/2026/other/2026-08-28-cortex-analyst-transition-cortex-agents&quot;&gt;Snowflake Documentation&lt;/a&gt;)针对 Financial Services，它的主张不是“做一个金融 Agent”，而是把 &lt;code&gt;first-party data + third-party data + semantic layer + search + agent + action&lt;/code&gt; 组合起来，通过 Cortex Analyst、Cortex Search、Shared Semantic Views、Knowledge Extensions 与 Cortex Agents，让 Agent 在数据所在的位置执行 workflow。(&lt;a href=&quot;https://www.snowflake.com/en/blog/agentic-orchestration-financial-services/&quot;&gt;Snowflake&lt;/a&gt;)这对银行、资产管理、保险特别重要。&lt;/p&gt;
&lt;h3&gt;一个必须写清楚的区分&lt;/h3&gt;
&lt;p&gt;Snowflake 的 Cortex Agents 确实提供 reasoning、planning、tool calling 与 multi-step orchestration。(&lt;a href=&quot;https://docs.snowflake.com/en/user-guide/snowflake-cortex/cortex-agents&quot;&gt;Snowflake Documentation&lt;/a&gt;)但这里必须写清楚一句话，否则很容易被误读：Cortex Agents 的“workflow / orchestration”是 Agent 内部的任务编排，不等同于金融企业的 BPMN Business Process orchestration。它不替代 Camunda 这类流程引擎，也不承担流程状态、跨部门审批与责任归属。两者是上下游关系：流程引擎决定“这一步该做合规审查”，Cortex Agents 负责“在这次合规审查里把数据查清楚”。&lt;/p&gt;
&lt;h2&gt;14. 领域三 · Durable Execution（Temporal / Durable Task）&lt;/h2&gt;
&lt;p&gt;Temporal 的思路甚至更激进：Workflow 之下挂四个 Activity——Activity → LLM、Activity → Tool、Activity → Database、Activity → API。&lt;/p&gt;
&lt;p&gt;Workflow 本身负责：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;state&lt;/li&gt;
&lt;li&gt;ordering&lt;/li&gt;
&lt;li&gt;waiting&lt;/li&gt;
&lt;li&gt;retry&lt;/li&gt;
&lt;li&gt;timeout&lt;/li&gt;
&lt;li&gt;resume&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;所有 nondeterministic I/O 都放在 Activity。Temporal 最近专门发布了 AI Agent Reference Architecture，把 Agent 的 loop 放进 durable Workflow 中。(&lt;a href=&quot;https://go.temporal.io/platform-hub/ai-engineering/ai-reference-architecture&quot;&gt;Temporal&lt;/a&gt;)所以它实际上把两份责任分开了：Workflow 只做确定性编排，所有非确定性 I/O（LLM、Tool、API、DB）全部封装进 Activity。注意这里的“分开”指的是责任——Temporal 自己的做法恰恰是让 Agent Loop 运行在 durable Workflow 之内。不要比较 Camunda vs LangGraph vs Temporal，这个比较本身就不对：&lt;/p&gt;
&lt;pre&gt;flowchart TD
    A[&quot;Orchestration Model&quot;] --&amp;gt; B[&quot;Business Workflow&quot;]
    A --&amp;gt; C[&quot;Agent Workflow&quot;]
    B --&amp;gt; D[&quot;Durable Execution&quot;]
    C --&amp;gt; D&lt;/pre&gt;
&lt;p&gt;Temporal 是 Execution Model / Durable Runtime，而不是另一种 Business Process Definition。上面的案例正好说明：Agent Workflow 可以拥有 Durable Execution，而不等于它因此变成 Business BPM。&lt;/p&gt;
&lt;h3&gt;为什么这一层必须单独存在&lt;/h3&gt;
&lt;p&gt;Microsoft 的 Durable Extension 也属于这一层：Agent Framework 的 graph workflow 跑在 Durable Task 基础设施上，支持 checkpoint、resume，以及数天到数周的运行周期。(&lt;a href=&quot;https://learn.microsoft.com/en-us/agent-framework/integrations/durable-extension&quot;&gt;Microsoft Learn&lt;/a&gt;)把 Durable Execution 与 Agent Workflow 分开的理由，是它们的失败模式不同：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Agent Workflow 失败：Agent 选了错误的工具，或推理方向错了&lt;/li&gt;
&lt;li&gt;Durable Execution 失败：进程崩了、网络断了，执行无法恢复到崩溃前的状态&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;前者是决策质量问题，后者是执行可靠性问题。但这是责任要分开的理由，不是产品要分开的理由：同一个 Runtime 完全可以同时承担两种责任。Microsoft 的实践就是直接证据——同一套 workflow 定义，跑 in-process runner 是本地执行，换 Durable Task host 就获得 checkpoint、恢复与分布式执行，executor 代码一行不用改，每个 executor 在 dashboard 里就是一个 durable activity。(&lt;a href=&quot;https://devblogs.microsoft.com/dotnet/durable-workflows-in-microsoft-agent-framework/&quot;&gt;Microsoft for Developers&lt;/a&gt;)&lt;/p&gt;
&lt;h2&gt;15. 领域四 · Enterprise Semantic &amp;amp; Data Layer&lt;/h2&gt;
&lt;p&gt;前三个领域都在回答“Agent 怎么工作”，这一个回答的是另一个问题：Agent 面对的世界，是用什么语言描述的？&lt;/p&gt;
&lt;h3&gt;Agent 到底应该连接什么&lt;/h3&gt;
&lt;p&gt;因为 Palantir 其实回答了一个很关键的问题：Agent 到底应该连接什么？Palantir 的答案不是让 Agent 直连上千个 API / Table / PDF，而是先经过一层 Enterprise Ontology——官方把它概括成 Data + Logic + Action + Security。(&lt;a href=&quot;https://www.palantir.com/docs/foundry/architecture-center/ontology-system&quot;&gt;Palantir&lt;/a&gt;)&lt;/p&gt;
&lt;pre&gt;flowchart LR
    subgraph OLD[&quot;传统方式&quot;]
        Q1[&quot;Agent&quot;] --&amp;gt; API[&quot;大量 API / Tables / Documents&quot;]
    end
    subgraph NEW[&quot;Ontology&quot;]
        Q2[&quot;Agent&quot;] --&amp;gt; ON[&quot;Enterprise Ontology&quot;]
        ON --&amp;gt; OBJ[&quot;Objects&quot;]
        ON --&amp;gt; ACT[&quot;Actions&quot;]
        ON --&amp;gt; RULE[&quot;Logic&quot;]
        ON --&amp;gt; SEC[&quot;Permissions&quot;]
    end&lt;/pre&gt;
&lt;p&gt;更形象一点：Ontology 之下是 Company → Investor / Security → Transaction → Actions 这样的业务对象网，而不是 table 和 database。所以 Agent 看到的不是 table / API / PDF / database，而是 Company / Portfolio / Position / Transaction / Risk / Counterparty / ResearchReport，并且这些对象自带 actions、logic、permissions 与 relationships。&lt;/p&gt;
&lt;h3&gt;Action 模型：nouns 与 verbs&lt;/h3&gt;
&lt;p&gt;Palantir 有一个很值得重视的思想：数据只是“nouns”，Action 才是“verbs”。也就是说，Company、Position、Loan、Customer、Transaction 这些是 nouns，而 Approve、Reject、Rebalance、Create、Assign、Escalate、Freeze、Review 这些才是 verbs。(&lt;a href=&quot;https://www.palantir.com/docs/foundry/ontology/why-ontology&quot;&gt;Palantir&lt;/a&gt;)这恰好解决 Agent 最大的问题：Agent 不只需要知道“这个东西是什么”，还需要知道“对它允许做什么”。&lt;/p&gt;
&lt;h3&gt;Ontology 与 RAG 的差别：world model + action model&lt;/h3&gt;
&lt;p&gt;传统 RAG 是 question 到 top-k documents 再到 LLM；Ontology 则把 Data、Logic、Action 先收进 Security，再交给 Agent 做 Real Action——从架构角度看，它更接近 Agent 的 enterprise world model + action model，而不是一个 Vector DB。（这是本文的架构解读，不是 Palantir 的官方定义。）Ontology 在整个 Agent 架构里的位置是：&lt;/p&gt;
&lt;pre&gt;flowchart LR
    AR[&quot;Agent Runtime&quot;] --&amp;gt; ON[&quot;Enterprise Ontology&quot;]
    ON --&amp;gt; DT[&quot;Business Data&quot;]
    ON --&amp;gt; AC[&quot;Business Actions&quot;]
    AC --&amp;gt; PO[&quot;Authorization&quot;]
    PO --&amp;gt; EX[&quot;Controlled Execution&quot;]&lt;/pre&gt;
&lt;h3&gt;Ontology MCP：把语义层变成 Agent 的 substrate&lt;/h3&gt;
&lt;p&gt;这一步尤其重要。2026-06 Palantir 已经正式 GA Ontology MCP。意味着：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Claude&lt;/li&gt;
&lt;li&gt;OpenAI&lt;/li&gt;
&lt;li&gt;Gemini&lt;/li&gt;
&lt;li&gt;Microsoft Agent Framework&lt;/li&gt;
&lt;li&gt;Google ADK&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这些产品本身都支持 MCP，因此任何兼容 MCP 的 Agent / Agent Framework 都可以通过 MCP 做 read Ontology、write Ontology 和 execute Ontology actions，而且调用继续使用 Foundry 权限模型。(&lt;a href=&quot;https://www.palantir.com/docs/foundry/announcements/2026-06&quot;&gt;Palantir&lt;/a&gt;)换句话说，Ontology 不需要成为 Agent Framework，它变成 Agent 的 enterprise semantic/action substrate，这比“Palantir 自己做 Agent Framework”更重要。&lt;/p&gt;
&lt;h3&gt;AIP Logic：No-code 没有死，但不再是抽象核心&lt;/h3&gt;
&lt;p&gt;AIP Logic 仍然是 no-code。它可以做 Ontology Object 到 LLM 再到 Condition、Loop、Function 和 Action 的串联，并且支持 testing、evaluation、monitoring、automation 和 human review。(&lt;a href=&quot;https://www.palantir.com/docs/foundry/logic&quot;&gt;Palantir&lt;/a&gt;)所以 Palantir 的实际答案不是“No-code 已死”，而是 No-code 不能再是整个系统的抽象，它只是 Ontology / Logic / Action 上面的一个 builder，这个区别直接决定后面怎么搭。&lt;/p&gt;
&lt;h3&gt;Snowflake 的另一条变化：RAG 走向“分析型检索”&lt;/h3&gt;
&lt;p&gt;2026 年 Snowflake 推出了 Analytical Search。传统 RAG 是 question 到 top-k documents 再到 LLM，对于“10000 份财报中，有多少家公司……”这类问题其实不行。Snowflake 的新方向是 Agent 调度 multiple Search queries、metadata filters、AISQL、AI_FILTER、AI_AGG，最后 aggregate entire corpus：Agent → multiple Search queries → metadata filters → AISQL → AI_FILTER → AI_AGG → aggregate entire corpus。
也就是说，Agent 不只是“找资料”，而是能够调度一套数据处理 workflow。(&lt;a href=&quot;https://docs.snowflake.com/en/release-notes/2026/other/2026-06-30-analytical-search-public-preview&quot;&gt;Snowflake Documentation&lt;/a&gt;)这个对金融 research、compliance、credit、ESG 很实用。&lt;/p&gt;
&lt;h2&gt;16. 学术界：Agent Workflow 已经成为一等研究对象&lt;/h2&gt;
&lt;p&gt;厂商文档之外，还有一个更值得看的信号：研究界已经不再把 Agent 看成“一个 LLM 加几个工具”，而是把 Agent Workflow 本身当成研究对象。这条线上有几篇值得当作入口的论文。&lt;/p&gt;
&lt;h3&gt;1. 《A Survey on Agent Workflow — Status and Future》&lt;/h3&gt;
&lt;p&gt;这是目前比较值得当作入口的 survey。论文把 Agent Workflow 按两个维度分类：功能上分 planning、多 Agent、API、tool、memory，架构上分 agent role、orchestration flow、workflow specification。它明确指出，随着 Agent 系统变复杂，workflow/orchestration 已经成为 scalable / controllable / secure agent behavior 的核心基础设施，同时指出标准化、安全和多模态 integration 仍是开放问题。(&lt;a href=&quot;https://arxiv.org/abs/2508.01186&quot;&gt;arXiv&lt;/a&gt;)这意味着一个很重要的判断：Workflow 不会消失，只是在从“业务流程建模”变成“智能执行系统建模”，这点很容易被企业架构师忽视。&lt;/p&gt;
&lt;h3&gt;2. 《Architectural Implications of Agentic AI Workflows》&lt;/h3&gt;
&lt;p&gt;2026 年 8 月的研究直接分析 Agentic Workflow 对底层基础设施的影响，核心发现是 Agent 的执行路径：Agent Request → LLM 推理 → Tool 调用 → CPU 执行 → LLM 推理 → Tool 调用 → 不断重复。&lt;/p&gt;
&lt;p&gt;Agent 不是传统 ML 那种 input → GPU → output，而是 CPU、GPU、network、external systems、orchestration 不断交替：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;CPU&lt;/li&gt;
&lt;li&gt;GPU&lt;/li&gt;
&lt;li&gt;network&lt;/li&gt;
&lt;li&gt;external systems&lt;/li&gt;
&lt;li&gt;orchestration&lt;/li&gt;
&lt;li&gt;CPU&lt;/li&gt;
&lt;li&gt;GPU&lt;/li&gt;
&lt;li&gt;…&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;不断交替。结果就是 CPU/GPU 利用率不均衡，execution bursty，tool invocation 造成 CPU critical path，multi-agent 增加调度复杂度，heterogeneous workloads 使传统 server provisioning 变得低效。论文甚至做了专门的 Agentic Server 原型 Agora。(&lt;a href=&quot;https://arxiv.org/abs/2608.04458&quot;&gt;arXiv&lt;/a&gt;)这其实说明 Agent Runtime 最终可能会成为一种全新的计算运行时，而不只是 Python framework。&lt;/p&gt;
&lt;h3&gt;Workflow 定义本身也在 AI 化&lt;/h3&gt;
&lt;p&gt;以前是 Developer 设计 Workflow 再部署：Developer → 设计 Workflow → 部署。
以后可能是 Business Intent 经由 Agent / Compiler，结合 Execution Policy 生成 Generated Plan 再交由 Runtime 执行：Business Intent → Agent / Compiler → Execution Policy → Generated Plan → Runtime。
也就是说，Workflow 从“静态 artifact”变成“动态 execution artifact”。最近研究也开始直接研究 Agentic Workflow Generation，也就是从功能描述自动生成可执行 workflow，而研究结果同时指出：单纯让 LLM 生成流程很容易产生缺失/幻觉数据，因此真正可靠的方向是生成 + 约束 + runtime validation，而不是“让 LLM 随便画流程”。(&lt;a href=&quot;https://link.springer.com/article/10.1365/s40702-026-01299-4&quot;&gt;Springer Nature Link&lt;/a&gt;)&lt;/p&gt;
&lt;h3&gt;甚至“Workflow”这个词都可能被弱化&lt;/h3&gt;
&lt;p&gt;未来更准确的词可能是 Agent Runtime、Agent Execution 或 Task Orchestration，而不是 Workflow Engine。在这个基础上，把 Agent 平台抽象成“Agent Operating System”是一个值得关注的研究方向——需要说明的是，它目前仍然只是研究提案，不是已经被行业标准化的架构。一个 2026 年的代表性工作提出 Agent Operating System (AOS)，把系统分成 Control &amp;amp; Governance Plane 与 Runtime &amp;amp; Coordination Plane：前者负责 intent、policy、authority、trust、audit 与 human oversight，后者负责 agent lifecycle、workflow coordination、model/tool routing、memory、scheduling 与 runtime assurance。(&lt;a href=&quot;https://arxiv.org/abs/2608.03214&quot;&gt;arXiv&lt;/a&gt;)值得关注的原因不是这个词，而是它把“控制面”与“运行面”分开的方式，与本文后面的分层判断一致。&lt;/p&gt;
&lt;h2&gt;17. 阶段结论：四个领域怎么组合&lt;/h2&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;解决的问题&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;Palantir Ontology&lt;/td&gt;&lt;td&gt;解决：世界是什么、能对世界做什么&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Anthropic / OpenAI&lt;/td&gt;&lt;td&gt;解决：Agent 如何工作（Harness）&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Microsoft / Temporal&lt;/td&gt;&lt;td&gt;解决：Agent 如何可靠地长期运行&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Snowflake / Google&lt;/td&gt;&lt;td&gt;解决：Agent 如何在企业数据与语义边界内工作&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Policy / Governance&lt;/td&gt;&lt;td&gt;解决：Agent 到底有没有资格做这件事&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;p&gt;这五块拼起来，才接近所谓的 AI-native enterprise workflow。但这里必须停一下，因为上面的材料对不同的目标会给出相反的答案。它既能支持“BPMN 该退休”，也能支持“BPMN 是合同层”。问题不在材料，在于目标没有定清楚：我们讨论的到底是 Agent Platform，还是企业业务流程？&lt;/p&gt;
&lt;h3&gt;Layer 1：Business Process&lt;/h3&gt;
&lt;p&gt;这个可以继续使用：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;BPMN&lt;/li&gt;
&lt;li&gt;Camunda&lt;/li&gt;
&lt;li&gt;Fluxnova&lt;/li&gt;
&lt;li&gt;SAP workflow&lt;/li&gt;
&lt;li&gt;ServiceNow&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;解决合规、审批、SLA、责任、审计和跨部门流程。例如：开户 → KYC → Risk → Approval → Account Creation。&lt;/p&gt;
&lt;h3&gt;Layer 2：Agentic Workflow&lt;/h3&gt;
&lt;p&gt;这完全不同。例如：&lt;/p&gt;
&lt;p&gt;具体是 Goal 先到 Research Agent，再扇出 Search / Read / Compare / Calculate / Ask specialist / Re-plan / Verify 七路。&lt;/p&gt;
&lt;p&gt;这套能力由 Agent Framework、Execution Runtime、Policy、Memory、Tool Runtime 和 Durable State 实现：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Agent Framework&lt;/li&gt;
&lt;li&gt;Execution Runtime&lt;/li&gt;
&lt;li&gt;Policy&lt;/li&gt;
&lt;li&gt;Memory&lt;/li&gt;
&lt;li&gt;Tool Runtime&lt;/li&gt;
&lt;li&gt;Durable State&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;分开看：对 Agent Platform，与对企业业务流程&lt;/h3&gt;





























































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;传统方式&lt;/th&gt;&lt;th&gt;Agent 时代对应物&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;BPMN Process&lt;/td&gt;&lt;td&gt;Execution Policy / Task Model&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Gateway&lt;/td&gt;&lt;td&gt;Policy / Agent Decision&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Service Task&lt;/td&gt;&lt;td&gt;Tool&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Sub-process&lt;/td&gt;&lt;td&gt;Agent / Sub-agent&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Human Task&lt;/td&gt;&lt;td&gt;Human-in-the-loop&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Process Variable&lt;/td&gt;&lt;td&gt;Durable State&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Process Instance&lt;/td&gt;&lt;td&gt;Agent Run&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;BPMN Engine&lt;/td&gt;&lt;td&gt;Agent Execution Runtime&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;DMN&lt;/td&gt;&lt;td&gt;Policy / Rules Engine&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Process Monitor&lt;/td&gt;&lt;td&gt;Agent Observability&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Process History&lt;/td&gt;&lt;td&gt;Event / Trace&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Workflow Designer&lt;/td&gt;&lt;td&gt;Code / DSL / AI-generated Plan&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Static Flow&lt;/td&gt;&lt;td&gt;Dynamic Execution Plan&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;p&gt;由此可以给一个更精确的说法。一种常见的表述是“老的那套 Camunda / Fluxnova，甚至所谓 Low-code 产品，都不该再用”，这个判断要分两种情况看。&lt;/p&gt;
&lt;h3&gt;对 &lt;strong&gt;Agent Platform 本身&lt;/strong&gt;，基本正确。&lt;/h3&gt;
&lt;p&gt;不要把 &lt;code&gt;Camunda / Fluxnova / BPMN&lt;/code&gt; 当成核心抽象。&lt;/p&gt;
&lt;h3&gt;对 &lt;strong&gt;Enterprise Business Process&lt;/strong&gt;，则不正确。&lt;/h3&gt;
&lt;p&gt;BPMN 这些东西仍然很有价值，因为法律责任、合规、审批、SLA、审计、跨系统 transaction 和 human accountability 并不会因为 LLM 出现就消失。所以真正可行的架构是下面这一层组合，前两种做法都不行：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Business Process Layer + Agent Execution Layer&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;两者之间通过 &lt;code&gt;typed task / events / policy / authority / durable state&lt;/code&gt; 连接。&lt;/p&gt;
&lt;h3&gt;从零设计一个 Agent Platform 时，应该先建什么&lt;/h3&gt;
&lt;p&gt;第一步不该是建 Workflow Designer，而应该先建这 7 样东西：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;ol&gt;
&lt;li&gt;Agent Runtime&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;ol&gt;
&lt;li&gt;Durable Execution Runtime&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;ol&gt;
&lt;li&gt;Tool / MCP Gateway&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;ol&gt;
&lt;li&gt;Policy &amp;amp; Authority Engine&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;ol&gt;
&lt;li&gt;Context / Memory Runtime&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;ol&gt;
&lt;li&gt;Human Task Runtime&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;ol&gt;
&lt;li&gt;Trace / Evaluation / Audit&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;然后再决定哪些地方需要 BPMN，哪些地方需要 Graph，哪些地方完全由 Agent 动态决定。先选 Camunda 再想办法把 Agent 塞进去，顺序就反了，这才是真正的 AI-native workflow architecture。另外，Google、Microsoft、LangGraph、Temporal 当前都在把 workflow 做成 code/runtime-first 的 graph + state + durable execution，而不是继续强化传统“业务人员拖节点”的范式；这已经不是单个厂商的偶然选择。(&lt;a href=&quot;https://github.com/google/adk-docs/blob/main/docs/2.0/index.md&quot;&gt;GitHub&lt;/a&gt;)把这个结论落到 “内部 LangChain DeepAgents + AWS AgentCore + LangSmith 的 AI 能力平台” 上，下一步最值得做的是设计一套 Agent Runtime / Execution Runtime / Business Process 三层架构，并把 Temporal、AgentCore、LangGraph、Microsoft Agent Framework、Camunda/Fluxnova 放进去逐项对比。这样才能比较清楚地判断一家平台到底应该自己做什么、买什么、哪些东西根本不该引入。把范围从厂商文档扩大到四类证据——学术研究、模型厂商实践、企业 AI 平台、金融机构与监管机构的实践——结论会更完整：2026 年真正成熟的方向，不是“把 BPMN 换成 Agent”，而是把 Workflow 拆成“Agentic Decisioning + Durable Execution + Policy/Authority + Enterprise Ontology/Data + Evaluation”。对通用 Agent 平台而言，传统 Workflow 仍然存在，但它越来越像受约束的外围控制面，而不是平台的核心抽象。&lt;/p&gt;
&lt;p&gt;这五块各自最值得追的线索，按调用顺序是：Agent Harness → Agent Orchestration → Durable Runtime → Ontology / Data / Tools → Policy / Identity → Human Control → Audit / Evaluation，有前景的企业平台大概率会把它们组合。&lt;/p&gt;
&lt;h3&gt;趋势阶段的金融分层&lt;/h3&gt;
&lt;p&gt;趋势阶段常见的一种画法，是把 Experience、Agent、Control、Runtime、Semantic、Tools 六块并列展开。那张图不能算错，但它还没有回答本文真正关心的问题——业务状态归谁、Agent Task 的边界由谁定义。本文最终的主线架构（第 25 节）会把这两件事补上，因此这里不再重复贴图。只需要先记住其中一个判断：Ontology / Semantic Layer 和 Agent Runtime 是两个不同东西。Palantir 最强的是前者，AWS / Microsoft / OpenAI / Anthropic 最强的是后者，而 Snowflake 正在试图把 &lt;code&gt;Data + Semantic + Agent Runtime&lt;/code&gt; 放在一起。&lt;/p&gt;
&lt;h3&gt;趋势阶段的结论&lt;/h3&gt;
&lt;p&gt;回到最开始那个判断：“老的 Camunda / Fluxnova，甚至所谓 Low-code，都不应该再用。”把论文与各家厂商、监管机构的材料串起来看之后，这个说法要修正得更精确。&lt;/p&gt;
&lt;h3&gt;错误方向&lt;/h3&gt;
&lt;p&gt;错误方向是 BPMN → LLM Node → Agent 的串法。&lt;/p&gt;
&lt;p&gt;这确实不是最有前景的 Agent Platform 架构。&lt;/p&gt;
&lt;h3&gt;同样错误&lt;/h3&gt;
&lt;p&gt;User 到 Autonomous Agent 再到无限 Tool 直达 Enterprise 的做法：User → Autonomous Agent → 无限 Tool → Enterprise。
金融领域尤其不可接受。&lt;/p&gt;
&lt;h3&gt;更合理的 2026+ 模型&lt;/h3&gt;
&lt;p&gt;对通用 Agent 平台而言，一句话概括：未来的 Workflow 不是“下一步去哪”，而是“Agent 为了完成 Goal，可以在什么边界内，以什么权限，持续做什么，并且如何被暂停、恢复、验证和追责”。而 Palantir Ontology 解决的是“世界是什么、能对世界做什么”；Anthropic/OpenAI Harness 解决的是“Agent 如何工作”；Microsoft/Temporal/AWS 解决的是“Agent 如何可靠地长期运行”；Snowflake/Google 解决的是“Agent 如何在企业数据与语义边界内工作”；Policy/Governance 则解决“Agent 到底有没有资格做这件事”。这五块拼起来，才比较接近 AI-native enterprise workflow。而金融服务真正应该研究的核心不是“哪个 Workflow Engine 最好”，而是：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Agentic Decision + Enterprise Ontology + Durable Execution + Authority + Evidence&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;这比单纯讨论 Camunda、Temporal、LangGraph 谁替代谁，层次高一个级别。&lt;/p&gt;
&lt;h3&gt;2026：Workflow Engine 与 Agent Runtime 正在合流&lt;/h3&gt;
&lt;p&gt;上面列出的厂商如果并排看，会发现它们在做同一件事，只是起点不同：AWS 的 Step Functions 直接调用 AgentCore Harness（&lt;a href=&quot;https://aws.amazon.com/about-aws/whats-new/2026/06/aws-step-functions-agentcore/&quot;&gt;Amazon Web Services, Inc.&lt;/a&gt;）；Camunda 把 Agent 建模成流程里的一等执行对象（&lt;a href=&quot;https://docs.camunda.io/docs/next/components/agentic-orchestration/agent-definitions-and-instances/&quot;&gt;Camunda 8 Docs&lt;/a&gt;）；Microsoft 让同一套 workflow 定义换个 host 就获得 durability（&lt;a href=&quot;https://devblogs.microsoft.com/dotnet/durable-workflows-in-microsoft-agent-framework/&quot;&gt;Microsoft for Developers&lt;/a&gt;）；Google 把 Agent Runtime 与 Durable Execution 打包成 Agent Executor（&lt;a href=&quot;https://cloud.google.com/blog/products/ai-machine-learning/agent-executor-googles-distributed-agent-runtime&quot;&gt;Google Cloud&lt;/a&gt;）；Temporal 则让 Agent Loop 直接跑在 durable Workflow 里（&lt;a href=&quot;https://go.temporal.io/platform-hub/ai-engineering/ai-reference-architecture&quot;&gt;Temporal&lt;/a&gt;）。&lt;/p&gt;
&lt;p&gt;合流的是运行时能力，不是业务语义。准确的说法是 Workflow、Agent Runtime、Durable Execution 是三种不同的架构责任，而未来的产品会越来越把它们组合在一起：&lt;/p&gt;
&lt;pre&gt;flowchart TB
    BP[&quot;Business Process&quot;]
    AW[&quot;Agentic Workflow&quot;]
    DE[&quot;Durable Execution&quot;]
    GOV[&quot;Policy / Authority&quot;]
    DATA[&quot;Enterprise Data / Ontology&quot;]
    ACT[&quot;Controlled Action&quot;]

    BP --&amp;gt; AW
    AW --&amp;gt; DE
    BP --&amp;gt; DE
    AW --&amp;gt; DATA
    AW --&amp;gt; GOV
    BP --&amp;gt; GOV
    GOV --&amp;gt; ACT
    BP --&amp;gt; ACT&lt;/pre&gt;
&lt;p&gt;对金融企业而言，这意味着选型问题要换一种问法：不再问“买 BPMN 引擎还是买 Agent 平台”，而是问这三种责任在哪里合并、在哪里隔离——业务编排必须留在确定性的 Business Workflow 里，Agent 的执行可以交给合并后的 Runtime，但状态归属、审批与举证不能跟着一起合掉。后面的第四、五部分就是这道划分题的答案。&lt;/p&gt;
&lt;h1&gt;第三部分：金融为什么不能照搬&lt;/h1&gt;
&lt;p&gt;第二部分介绍的四个领域，都是通用企业场景下的正确答案。金融场景多出来的主要不是技术难度，而是&lt;strong&gt;举证责任&lt;/strong&gt;。这一部分说明的是：金融到底额外要求了什么，以及这些要求如何反过来决定架构。&lt;/p&gt;
&lt;h2&gt;18. 金融真正担心的问题：Verifiability Gap&lt;/h2&gt;
&lt;p&gt;通用企业场景里，最常被讨论的问题是“Agent 够不够聪明”，金融业担心的则是 Agent 到底代表谁行动，这个问题在金融业特别严重。最新一篇关于 Agentic AI governance in FinTech 的研究提出了 &lt;strong&gt;Verifiability Gap&lt;/strong&gt;，也就是说：Agent Authority → 实际执行 → 能否证明：为什么当时允许它这么做？
这项研究把 orchestration 本身看作 policy layer，并指出以下几点：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;orchestration 本身是 policy layer&lt;/li&gt;
&lt;li&gt;不同 orchestration 结构会改变最终决策&lt;/li&gt;
&lt;li&gt;historical replay 可能无法重现&lt;/li&gt;
&lt;li&gt;model/version变化会改变结果&lt;/li&gt;
&lt;li&gt;deterministic replay 并不等于 historical decision replay (&lt;a href=&quot;https://arxiv.org/abs/2608.11344&quot;&gt;arXiv&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;传统 Workflow：same input → same BPMN → same path。
Agent：same input → different reasoning → different tools → different context → different outcome。
所以：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Agent Workflow 的审计对象不能只是“流程图”，而必须是 Execution Trace + Context + Authority + Evidence。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;19. 监管机构在看什么&lt;/h2&gt;
&lt;h3&gt;Bank of England&lt;/h3&gt;
&lt;p&gt;2026 年 Financial Stability Report 已经专门讨论 Agentic AI，其中提到目前金融机构主要使用 Agent 做 research、coding、surveillance 和 lower-risk operations，而不是 autonomous trading。核心风险在于 output 不可预测、validation 困难、autonomy boundary 难定义，以及 correlated behavior (&lt;a href=&quot;https://www.bankofengland.co.uk/financial-stability-report/2026/july-2026&quot;&gt;Bank of England&lt;/a&gt;)。&lt;/p&gt;
&lt;h3&gt;FSB 2026：12 类 sound practices&lt;/h3&gt;
&lt;p&gt;Financial Stability Board 2026 年 AI governance consultation 提出了 12 类 sound practices，覆盖 AI governance、lifecycle management、risk identification、operational resilience、third-party dependence，以及 GenAI / agentic AI risks (&lt;a href=&quot;https://www.fsb.org/2026/06/sound-practices-for-responsible-adoption-of-artificial-intelligence-ai-consultation-report/&quot;&gt;Financial Stability Board&lt;/a&gt;)。这说明金融监管未来看 Agent，除了 model risk，还要看：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Model&lt;/li&gt;
&lt;li&gt;Agent&lt;/li&gt;
&lt;li&gt;Tool&lt;/li&gt;
&lt;li&gt;Data&lt;/li&gt;
&lt;li&gt;Permission&lt;/li&gt;
&lt;li&gt;Runtime&lt;/li&gt;
&lt;li&gt;Vendor&lt;/li&gt;
&lt;li&gt;Human Oversight&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;20. 已经跑在生产上的样本：Stripe 与 AWS&lt;/h2&gt;
&lt;h3&gt;Stripe&lt;/h3&gt;
&lt;p&gt;AWS 与 Stripe 2026 年公开的案例很有参考价值，场景如下：金融合规 review
Stripe 面临：thousands of transactions / day
它搭建 production agent system：Agent → AWS Bedrock → enterprise data → compliance reasoning → human review。
公开结果如下：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;review handling time ↓ 26%&lt;/li&gt;
&lt;li&gt;helpfulness &amp;gt;96%&lt;/li&gt;
&lt;li&gt;final decision 仍由 human 控制 (&lt;a href=&quot;https://aws.amazon.com/blogs/machine-learning/production-grade-ai-agents-for-financial-compliance-lessons-from-stripe/&quot;&gt;Amazon Web Services, Inc.&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Stripe 并没有让 Agent 直接取代 Compliance Officer，它真正做的是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Agent = investigation / preparation&lt;/li&gt;
&lt;li&gt;Human = decision authority&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这是当前金融服务中较容易同时满足治理、审计与责任要求的一种落地模式。把它写成“未来几年的主流架构”属于过度推断——监管材料描述的是当前的风险与实践，不足以证明未来的主流形态。&lt;/p&gt;
&lt;h3&gt;AWS 的金融 Agent 参考架构&lt;/h3&gt;
&lt;p&gt;AWS 2026 年的 Financial Services AgentCore 架构如下：&lt;/p&gt;
&lt;p&gt;具体是 Agent 扇出 Market / Risk / Research 三个 Specialist，经 Orchestrator 进 AgentCore Runtime（Identity / Tracing / Sandbox），Identity 之下再挂 Policy。&lt;/p&gt;
&lt;p&gt;例如 portfolio advisory 包括 portfolio valuation、risk stress test、market research 和 advisor synthesis，由多个 specialist agents 协同完成。(&lt;a href=&quot;https://aws.amazon.com/blogs/industries/multi-agent-systems-for-financial-services-on-amazon-eks-and-agentcore/&quot;&gt;Amazon Web Services, Inc.&lt;/a&gt;)&lt;/p&gt;
&lt;p&gt;而信用分析案例则是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Policy PDF&lt;/li&gt;
&lt;li&gt;Snowflake account history&lt;/li&gt;
&lt;li&gt;transaction patterns&lt;/li&gt;
&lt;li&gt;Agent reasoning&lt;/li&gt;
&lt;li&gt;recommendation&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这非常接近企业真正的 Agent Workflow。(&lt;a href=&quot;https://aws.amazon.com/blogs/industries/ai-credit-analytics-across-amazon-s3-and-snowflake-with-amazon-bedrock-agentcore/&quot;&gt;Amazon Web Services, Inc.&lt;/a&gt;)&lt;/p&gt;
&lt;h3&gt;AWS 的新方向：Step Functions 直接调用 AgentCore&lt;/h3&gt;
&lt;p&gt;2026 年 6 月 AWS 把上面这件事又往前推了一步：Step Functions 可以直接调用 Bedrock AgentCore Harness，把 Agent 当成 Workflow 中的一等步骤。Step Functions 管 workflow execution，AgentCore 管 agent loop；多个 Agent 可以并行或串行出现在同一个流程的不同决策点，关键动作前可插入 human approval；workflow execution history 里直接能看到每次调用的 agent input、output、token 用量与 duration，session ID 让 Agent context 可以跨 workflow execution 保留。(&lt;a href=&quot;https://aws.amazon.com/about-aws/whats-new/2026/06/aws-step-functions-agentcore/&quot;&gt;Amazon Web Services, Inc.&lt;/a&gt;)&lt;/p&gt;
&lt;p&gt;这里已经不是“Workflow 和 Agent 二选一”，而是 Workflow Engine 调用 Agent Runtime——与本文第四、五部分的主线结论是同一件事。&lt;/p&gt;
&lt;h2&gt;21. 金融 Model Risk Management 里的 Agentic Workflow&lt;/h2&gt;
&lt;p&gt;这一节看金融领域的实证研究。它们没有停在“客服 Agent”这类演示场景上，而是直接落在信贷、反欺诈和模型风险管理上——比通用的 Agent 案例更接近企业真正的问题。2026 年有一篇比较完整的 survey 覆盖了以下方面：&lt;/p&gt;
&lt;h3&gt;Agentic Artificial Intelligence in Finance: A Comprehensive Survey&lt;/h3&gt;
&lt;p&gt;涵盖 financial operations、financial markets、architecture、regulation、systemic risk 和 multi-agent coordination (&lt;a href=&quot;https://arxiv.org/abs/2604.21672&quot;&gt;arXiv&lt;/a&gt;)。&lt;/p&gt;
&lt;p&gt;另外一篇论文的内容如下：&lt;/p&gt;
&lt;h3&gt;AI Agents in Financial Markets&lt;/h3&gt;
&lt;p&gt;它把金融 Agent 拆成以下结构：Data Perception → Reasoning → Strategy Generation → Execution + Control。
它的结论是短期最可能的形态不是 fully autonomous finance，而是 bounded autonomy，即：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;AI&lt;/li&gt;
&lt;li&gt;human supervision&lt;/li&gt;
&lt;li&gt;constrained execution&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这对企业架构有直接影响。(&lt;a href=&quot;https://arxiv.org/abs/2603.13942&quot;&gt;arXiv&lt;/a&gt;)&lt;/p&gt;
&lt;p&gt;另一项研究做了以下组合：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Modeling Crew&lt;/li&gt;
&lt;li&gt;Model Risk Management Crew&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;例如：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Manager Agent] —&amp;gt; E1[EDA Agent&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;E1&lt;/li&gt;
&lt;li&gt;E2&lt;/li&gt;
&lt;li&gt;E3&lt;/li&gt;
&lt;li&gt;E4&lt;/li&gt;
&lt;li&gt;E5&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;另一组：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;MRM Manager] —&amp;gt; A1[Compliance Agent&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;A1&lt;/li&gt;
&lt;li&gt;A2&lt;/li&gt;
&lt;li&gt;A3&lt;/li&gt;
&lt;li&gt;A4&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;该研究在 fraud detection、credit approval 和 credit risk 中做了实验 (&lt;a href=&quot;https://arxiv.org/abs/2502.05439&quot;&gt;arXiv&lt;/a&gt;)，这比“客服 Agent”更接近企业真正的问题。&lt;/p&gt;
&lt;h2&gt;22. 金融服务真正需要确定下来的六件事&lt;/h2&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;约束&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;1&lt;/td&gt;&lt;td&gt;确定性&lt;/td&gt;&lt;td&gt;结论必须能从输入与规则推导出来&lt;/td&gt;&lt;td&gt;Workflow Runtime 持有状态转移&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;2&lt;/td&gt;&lt;td&gt;责任&lt;/td&gt;&lt;td&gt;每个决策必须有人签字&lt;/td&gt;&lt;td&gt;Human Task + Identity&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;3&lt;/td&gt;&lt;td&gt;审批&lt;/td&gt;&lt;td&gt;高风险动作不能自动生效&lt;/td&gt;&lt;td&gt;BPMN + Policy&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;4&lt;/td&gt;&lt;td&gt;审计&lt;/td&gt;&lt;td&gt;事后必须能回答“谁做了什么”&lt;/td&gt;&lt;td&gt;Audit Trail&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;5&lt;/td&gt;&lt;td&gt;授权&lt;/td&gt;&lt;td&gt;“能做”和“被允许做”是两件事&lt;/td&gt;&lt;td&gt;IAM + Agent Policy&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;6&lt;/td&gt;&lt;td&gt;可追溯&lt;/td&gt;&lt;td&gt;结论与证据要对得上&lt;/td&gt;&lt;td&gt;Evidence + Agent Trace&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;p&gt;这六条之外，还有一条从 Verifiability Gap 直接推出来、但容易被低估的要求：可复现性（reproducibility）。传统的可复现假设是“同样输入 + 同一个流程版本 = 同样结果”，Agent 打破了这个假设：同样的输入，可能因为不同的检索结果、不同的上下文、不同的模型版本，得到不同的推理路径和结论。所以在金融场景下必须退一步，先明确自己能承诺哪一种复现：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Level A：完全可重放：同输入 + 同模型 + 同工具 + 同上下文快照 → 同结果&lt;/li&gt;
&lt;li&gt;Level B：可复核：同业务事实快照 + 记录在案的规则版本 + 记录在案的 Agent 轨迹 → 人可以独立得出同一结论&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;大多数业务应该按 &lt;strong&gt;Level B&lt;/strong&gt; 设计，把 Level A 留给真正需要法律级举证的动作。这个决定必须在架构设计阶段做，事后基本补不上——因为它决定的是要不要保留业务事实快照、规则版本和完整 Agent 轨迹。等审计来问的时候再补，通常已经晚了。这六条约束加上可复现等级，就是后面架构设计的全部输入。但注意这些约束只决定 Business State 与 Process Authority 必须有人拥有，不意味着所有认知工作都必须 BPMN 化——第 7 节那种纯 Agent 任务同样要过这六条，只是由不同的 Runtime 来承担。&lt;/p&gt;
&lt;h3&gt;金融领域可以借鉴的形态&lt;/h3&gt;
&lt;p&gt;金融领域可以借鉴的形态，同样不是把 Agent 放在整个流程之上，而是：&lt;/p&gt;
&lt;p&gt;即 Domain Agent 经 Financial Context Layer（Ontology / Policies 与 Research 文档 / Structured Data）与 Dynamic Planning，进 Durable Agent Runtime（Policy / Authority、Tool Gateway、Human Approval），Tool 接 Core Banking / Trading / CRM / Risk 与外部数据，产出 Evidence + Trace 进 Audit。&lt;/p&gt;
&lt;h1&gt;第四部分：架构决策——谁拥有 Orchestration Authority&lt;/h1&gt;
&lt;h2&gt;23. 全文原则&lt;/h2&gt;
&lt;p&gt;前面十二节都是趋势观察。趋势观察的结论会随着“目标是什么”而改变：目标是通用 Agent 平台，还是金融企业的业务流程，答案可以完全相反。&lt;/p&gt;
&lt;p&gt;从这一节开始，目标明确为后者：金融服务中确定性业务流程的落地架构。在这个前提下，前面那些材料会收敛出一条比两者都更窄、也更可执行的主线。&lt;/p&gt;
&lt;p&gt;把“业务分析师能够把大部分流程梳理清楚”这个前提补上之后，前面的结论需要调整：对于金融服务，BPMN 不应该被淘汰。如果业务分析架构师能够把大部分业务流程、状态、审批关系、异常路径、职责边界都分析清楚，那么 BPMN/DMN 反而仍然是最合适的“业务控制平面”。真正要改的不是“有没有 Workflow”，而是分工：不要让 BPMN 承担 Agent 的智能行为，也不要让 Agent 取代 BPMN 的确定性业务控制。于是新的架构可以定义为：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Deterministic Business Workflow + Bounded Agentic Execution&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;也就是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;业务流程确定性&lt;/li&gt;
&lt;li&gt;Agent 局部智能化&lt;/li&gt;
&lt;li&gt;统一 Policy / Authority&lt;/li&gt;
&lt;li&gt;统一 Audit / Evidence&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这实际上比“纯 Agent Workflow”更适合银行、保险、资管、证券。&lt;/p&gt;
&lt;h3&gt;先定下一条原则&lt;/h3&gt;
&lt;p&gt;在展开这一部分之前，先把本文反复使用的那条原则定下来：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;任何 Agent 驱动的业务动作，在产生业务状态变化或外部副作用之前，都必须经过确定性的 schema / business validation 与 authorization；是否需要 Human Approval，由 BPMN 与 Policy 按风险等级决定。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;这句话里有三个从句，各自解决一个问题。“必须经过确定性验证”保证进入流程的不是一段自然语言，而是一个可校验的结构，这是后面 Task Contract 里 output schema 存在的理由。“必须经过 authorization”保证“Agent 有能力做”和“Agent 被允许做”永远是两件事，前者是模型能力问题，后者是治理问题。“是否人工批准由风险等级决定”避免两个极端：既不要求所有输出都过人工（那等于退回 Level 0，自动化失去意义），也不允许高风险动作走自动通道。后面第 38 节会说明，为什么这条原则必须同时覆盖“建议型输出”和“动作型输出”这两种 Task——只写一半，就会在评审时被抓出漏洞。&lt;/p&gt;
&lt;h2&gt;24. 两类问题：业务怎么走，和某一步怎么完成&lt;/h2&gt;
&lt;p&gt;在这个场景下，整个系统可以拆成两个完全不同的问题：&lt;/p&gt;
&lt;h3&gt;问题 A：业务应该怎么走？&lt;/h3&gt;
&lt;p&gt;由以下结构确定：Business Architect → BPMN / DMN → Workflow Definition。
包括状态、顺序、并行、条件、审批、角色、SLA、回退、异常、补偿和业务事件，这些尽量确定。&lt;/p&gt;
&lt;h3&gt;问题 B：某一步里面具体怎么完成？&lt;/h3&gt;
&lt;p&gt;这里允许 Agent，例如：Compliance Review → Agent：找政策 / 找历史案例 / 找相关文件 / 检查证据 / 总结风险 / 提出建议 → Human → Approve / Reject。
因此，BPMN 决定“做什么、谁做、何时做、结果去哪”，Agent 决定“这一项任务怎么做得更好”，这是整个设计的边界所在。&lt;/p&gt;
&lt;h3&gt;Workflow 管的是状态转移与业务责任&lt;/h3&gt;
&lt;p&gt;在前面那套分层里，有一个界定需要修正。原来是 Workflow 管 State + Action，在这个前提下，应该修正为 Workflow 管 State Transition + Business Responsibility，也就是：BPMN → State → Task → Business Rule → Next State。
而 Agent 是：Task → Agent Execution → Structured Result。
Agent 不拥有 Workflow。&lt;/p&gt;
&lt;h2&gt;25. 五层架构&lt;/h2&gt;
&lt;p&gt;把前面的分层和这里的约束合起来，得到本文的主线架构，也是全文唯一一张完整架构图。后面所有图都是它的局部展开。&lt;/p&gt;
&lt;pre&gt;flowchart TB
    BA[Business Architect]

    subgraph BP[&quot;Business Process&quot;]
        BPMN[BPMN / DMN]
        SLA[Roles / SLA / Approval]
    end

    subgraph WR[&quot;Workflow Runtime&quot;]
        State[Process State]
        Tasks[Human / System / Agent Task]
        Events[Timer / Event]
    end

    subgraph AR[&quot;Agent Runtime&quot;]
        Contract[Agent Task Contract]
        Harness[Harness / Planning]
        Tools[Tools / MCP]
        AgentState[Agent Task State]
    end

    subgraph DS[&quot;Data &amp;amp; Semantic&quot;]
        Data[Business Data]
        Ontology[Ontology / Knowledge]
    end

    subgraph GOV[&quot;Control&quot;]
        IAM[IAM / Authorization]
        Policy[Policy / Guardrails]
        Evidence[Evidence / Trace]
    end

    BA --&amp;gt; BP
    BPMN --&amp;gt; WR
    WR --&amp;gt; Tasks
    Tasks --&amp;gt; Contract
    Contract --&amp;gt; Harness
    Harness --&amp;gt; Tools
    Tools --&amp;gt; DS
    Harness --&amp;gt; Policy
    Tools --&amp;gt; IAM
    Harness --&amp;gt; Result[Structured Result]
    Result --&amp;gt; Validate[Validation]
    Validate --&amp;gt; WR&lt;/pre&gt;
&lt;p&gt;这张图里关键的关系是 Workflow Runtime 创建并控制 Agent Task，Agent Runtime 负责完成这个 Task，也就是第 33 节说的 Agent-in-Process。同样关键的是右下角那条回路：Agent 的输出必须先过 Validation 与 Authorization，再经过必要的人工批准，最后由 Workflow Runtime 落成状态转移。Agent 在这个回路里始终是提议方，不是决定方。&lt;/p&gt;
&lt;h3&gt;五层各自回答什么&lt;/h3&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;1. Business Process Plane&lt;/td&gt;&lt;td&gt;流程应该怎么走&lt;/td&gt;&lt;td&gt;流程只存在于文档和人的记忆里&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;2. Workflow Runtime&lt;/td&gt;&lt;td&gt;这个 case 现在在哪一步&lt;/td&gt;&lt;td&gt;状态散落在业务表里，没有人能统一回答&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;3. Agent Execution Plane&lt;/td&gt;&lt;td&gt;这一步怎么完成&lt;/td&gt;&lt;td&gt;每个团队各造一套 harness&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;4. Data &amp;amp; Semantic Plane&lt;/td&gt;&lt;td&gt;Agent 看到的是哪一个版本的事实&lt;/td&gt;&lt;td&gt;同一个指标三个数，结论无法复核&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;5. Control Plane&lt;/td&gt;&lt;td&gt;谁被允许做什么&lt;/td&gt;&lt;td&gt;“Agent 有权限”成了唯一的安全声明&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;h3&gt;为什么是五层，而不是四层&lt;/h3&gt;
&lt;p&gt;常见的一个版本把 &lt;code&gt;IAM / Policy / Audit / Evidence / Data&lt;/code&gt; 全部放进同一个 Enterprise Control Plane，这会在两个地方出问题。第一，Data 不是控制：&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;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;Data / Semantic Plane&lt;/td&gt;&lt;td&gt;回答：世界是什么样&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Control Plane&lt;/td&gt;&lt;td&gt;回答：谁被允许做什么&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;p&gt;两者放在一起，会导致“数据权限”和“数据语义”被混为一谈：访问控制做到位了，但 Agent 依然不知道 &lt;code&gt;Position&lt;/code&gt; 和 &lt;code&gt;Portfolio&lt;/code&gt; 是什么关系，前者是安全问题，后者是能不能正确工作的问题。第二，Evidence 也不是控制。Evidence 是某一次具体执行产生的产物，它天然属于执行侧，只是在最后被 Audit 引用，把 Evidence 放进 Control Plane，会让它看起来像一个统一存储，而不是每一次 Task 都必须产出的东西。它应该在另一个三层关系里被定位：Audit 记录主体，Evidence 记录依据，Trace 记录过程——也就是第 31 节要展开的内容。所以最终是五层：Process / Runtime / Agent Execution / Data &amp;amp; Semantic / Control。&lt;/p&gt;
&lt;h2&gt;26. 展开图：数据与治理怎么接进来&lt;/h2&gt;
&lt;p&gt;这是第 25 节那张主线架构在数据与治理侧的展开。&lt;/p&gt;
&lt;h2&gt;27. 每一层解决的问题与最适合的技术&lt;/h2&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;Business Process&lt;/td&gt;&lt;td&gt;流程应该怎么走&lt;/td&gt;&lt;td&gt;BPMN&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Business Rules&lt;/td&gt;&lt;td&gt;什么条件成立&lt;/td&gt;&lt;td&gt;DMN / Rule Engine&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Workflow Runtime&lt;/td&gt;&lt;td&gt;如何可靠执行&lt;/td&gt;&lt;td&gt;Camunda / Temporal / Durable Runtime&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Agent Runtime&lt;/td&gt;&lt;td&gt;如何智能完成任务&lt;/td&gt;&lt;td&gt;Agents SDK / LangGraph / DeepAgents&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Policy&lt;/td&gt;&lt;td&gt;谁可以做什么&lt;/td&gt;&lt;td&gt;IAM / Policy Engine&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Human Approval&lt;/td&gt;&lt;td&gt;什么风险由人承担&lt;/td&gt;&lt;td&gt;Human Task / Approval Matrix&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Data&lt;/td&gt;&lt;td&gt;企业事实是什么&lt;/td&gt;&lt;td&gt;Snowflake / DB / Ontology&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Audit&lt;/td&gt;&lt;td&gt;发生了什么&lt;/td&gt;&lt;td&gt;Activity Log / Trace / Evidence&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;p&gt;这样也不会再问“是不是 Agent 出现以后，BPMN 就过时了”，BPMN 并没有过时，变化的是职责划分。&lt;/p&gt;
&lt;h2&gt;28. 责任矩阵&lt;/h2&gt;
&lt;p&gt;第 25 节回答了“分几层”，第 27 节回答了“每层适合什么技术”，这一节回答最后一个问题：每一件事由谁负责。落到具体条目上，会得到一张可以直接进评审会的表：&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;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;流程走哪&lt;/td&gt;&lt;td&gt;BPMN&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;业务条件是什么&lt;/td&gt;&lt;td&gt;DMN / Rules&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;当前业务状态是什么&lt;/td&gt;&lt;td&gt;Workflow Runtime&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;谁负责这个 Task&lt;/td&gt;&lt;td&gt;Workflow / IAM&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Agent 能看到什么&lt;/td&gt;&lt;td&gt;Context / Data Policy&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Agent 能用什么&lt;/td&gt;&lt;td&gt;Tool / Capability Policy&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Agent 如何完成任务&lt;/td&gt;&lt;td&gt;Agent Runtime&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Agent 得到了什么&lt;/td&gt;&lt;td&gt;Structured Result&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;是否符合业务规则&lt;/td&gt;&lt;td&gt;Validation / DMN&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Agent 能不能执行&lt;/td&gt;&lt;td&gt;Authorization / Policy&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;是否必须人工批准&lt;/td&gt;&lt;td&gt;BPMN + Policy&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;业务状态能否改变&lt;/td&gt;&lt;td&gt;Workflow Runtime&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;为什么这么做&lt;/td&gt;&lt;td&gt;Evidence&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;谁什么时候做了什么&lt;/td&gt;&lt;td&gt;Audit&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Agent 如何做的&lt;/td&gt;&lt;td&gt;Agent Trace&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;模型是否可靠&lt;/td&gt;&lt;td&gt;Evaluation&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;当时的业务事实是哪一版&lt;/td&gt;&lt;td&gt;Business Data Contract&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;p&gt;这张表把“Agent 到底能不能自主”这类争论，拆成了十几个可以逐条达成一致的问句，例如讨论“要不要让 Agent 自动审批”，真正需要确认的只是其中第 4、10、11 行，而不是重新设计一遍流程。&lt;/p&gt;
&lt;h2&gt;29. 五件容易混在一起的事&lt;/h2&gt;
&lt;p&gt;“确定性”不等于“只有一张流程图”。在金融场景里，有五类判断，各自必须落在不同机制上。把它们合并成一句“业务规则和权限合同”，是架构评审里最常见的返工来源。&lt;/p&gt;
&lt;p&gt;这里有一个必须先纠正的说法：Business Rule 和 Authorization Policy 不是同一类 policy。“投资金额超过 1 亿就需要高级审批”是业务规则，“这个角色有没有投资审批权”是授权。前者判断“条件是否成立”，后者判断“主体有没有资格”。两者都常被写成 policy 配置文件，但变更流程、评审人与举证对象完全不同——业务规则由业务方改，授权由安全与内控改。把两者放进同一套配置里管理，是金融场景里最容易埋下隐患的一种简化。&lt;/p&gt;
&lt;h3&gt;BPMN：流程怎么走&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;哪里需要审批&lt;/li&gt;
&lt;li&gt;什么条件下回到上一步&lt;/li&gt;
&lt;li&gt;哪一步可以并行&lt;/li&gt;
&lt;li&gt;什么时候结束&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;它回答的是&lt;strong&gt;状态转移&lt;/strong&gt;。&lt;/p&gt;
&lt;h3&gt;DMN / Business Rules：业务条件怎么判断&lt;/h3&gt;
&lt;p&gt;investmentAmount大于100M → seniorApprovalRequired&lt;/p&gt;
&lt;p&gt;它回答的是&lt;strong&gt;条件是否成立&lt;/strong&gt;，而且这个判断是可枚举、可回归测试的。&lt;/p&gt;
&lt;h3&gt;Authorization / IAM：谁有权执行&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;PM_ROLE&lt;/li&gt;
&lt;li&gt;Investment_Approval&lt;/li&gt;
&lt;li&gt;Portfolio_X&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;它回答的是&lt;strong&gt;主体资格&lt;/strong&gt;。同一条流程，不同角色能按的按钮不一样，这是权限问题，不是规则问题。&lt;/p&gt;
&lt;h3&gt;Agent Policy / Guardrails：Agent 可以调用什么&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;canRead: market_data, research_db&lt;/li&gt;
&lt;li&gt;canWrite: draft_report&lt;/li&gt;
&lt;li&gt;forbidden: customer_pii_export&lt;/li&gt;
&lt;li&gt;maxBudget: { tokens: 100000, toolCalls: 50 }&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;它回答的是&lt;strong&gt;这个 Agent 的能力边界&lt;/strong&gt;，与“这个人有没有资格批准”是两件事。&lt;/p&gt;
&lt;h3&gt;Human Approval：什么风险必须由人承担&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;riskLevel GE HIGH → humanApprovalRequired&lt;/li&gt;
&lt;li&gt;agentConfidence LT threshold → humanApprovalRequired&lt;/li&gt;
&lt;li&gt;amount GT limit → humanApprovalRequired&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;它回答的是&lt;strong&gt;责任归属&lt;/strong&gt;，前四类都是机制性的判断，只有这一类是把责任落到具体的人身上。金融机构做 Agent 立项时，真正需要业务方逐条签字确认的往往就是这张表，而不是流程图本身。&lt;/p&gt;
&lt;p&gt;五者关系：&lt;/p&gt;
&lt;p&gt;五条线汇入同一个执行前的判定（BPMN 讲流程怎么走、DMN 讲条件是否成立、Authorization 讲谁有权、Agent Policy 讲 Agent 能用什么、Human Approval 讲什么风险由人承担），再到执行 / 拒绝 / 转人工。&lt;/p&gt;
&lt;p&gt;金融场景里这五条不能合并，原因是审计时它们的举证对象不同：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;BPMN 举的是流程版本；&lt;/li&gt;
&lt;li&gt;DMN 举的是规则版本与输入；&lt;/li&gt;
&lt;li&gt;IAM 举的是主体与授权记录；&lt;/li&gt;
&lt;li&gt;Agent Policy 举的是能力声明与实际调用日志；&lt;/li&gt;
&lt;li&gt;Human Approval 举的是审批人身份与审批当时的判断依据。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;混在一起，事故复盘时就无法归因——你只能证明“当时有这个流程”，但不能证明“当时这个动作是被允许的”，更不能证明“当时是谁承担的”。&lt;/p&gt;
&lt;h3&gt;边界：哪些判断必须留给规则&lt;/h3&gt;
&lt;p&gt;这条边界应该画得很严，例如：&lt;/p&gt;
&lt;h3&gt;适合 BPMN/DMN&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Investment amount &amp;gt; 100M → Senior PM approval&lt;/li&gt;
&lt;li&gt;High-risk country → Compliance mandatory&lt;/li&gt;
&lt;li&gt;Product type = Derivative → Risk review mandatory&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这些全部是确定性的。&lt;/p&gt;
&lt;h3&gt;适合 Agent&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;这个公司披露的信息有没有前后矛盾？&lt;/li&gt;
&lt;li&gt;这份研究报告是否遗漏了重要风险？&lt;/li&gt;
&lt;li&gt;这个交易是否存在异常模式？&lt;/li&gt;
&lt;li&gt;这份申请材料是否足以支持该结论？&lt;/li&gt;
&lt;li&gt;相关政策中是否存在需要特别注意的条款？&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这些很难纯规则化。&lt;/p&gt;
&lt;p&gt;因此可以这样划分：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Deterministic → BPMN / DMN&lt;/li&gt;
&lt;li&gt;Semantic / Investigative → Agent&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这是比较实用的边界。&lt;/p&gt;
&lt;h3&gt;三层决策架构&lt;/h3&gt;
&lt;p&gt;三层形成闭环：Layer 1（Deterministic Business Flow）→ Layer 2（Deterministic Business Rules）→ Layer 3（Probabilistic Agent Reasoning）→ Validation / Policy Gate → 回到 Layer 1。&lt;/p&gt;
&lt;h3&gt;Layer 1：BPMN&lt;/h3&gt;
&lt;p&gt;回答流程走哪里。&lt;/p&gt;
&lt;h3&gt;Layer 2：DMN / Policy&lt;/h3&gt;
&lt;p&gt;回答什么情况下允许。&lt;/p&gt;
&lt;h3&gt;Layer 3：Agent&lt;/h3&gt;
&lt;p&gt;回答如何分析这个复杂问题。&lt;/p&gt;
&lt;p&gt;再回到：Policy / BPMN
形成闭环。&lt;/p&gt;
&lt;h3&gt;BPMN 反而会变得更简单&lt;/h3&gt;
&lt;p&gt;传统 BPMN 经常被迫表达大量业务逻辑。Agent 出现以后，反而可以把：“需要智能判断”
封装成：Agent Task
比如：Compliance → 13个 Gateway → 37个条件 → 8个子流程。
现在：Compliance → Agent Review → Human Decision。
但不能把所有东西扔给 Agent，DMN 继续负责明确业务规则。因此更合理的分工如下：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;BPMN&lt;/strong&gt;：Flow、Role、State、Approval、Task&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;DMN&lt;/strong&gt;：Eligibility、Threshold、Risk classification、Approval matrix&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Agent&lt;/strong&gt;：Investigation、Interpretation、Evidence discovery、Recommendation&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;三者职责很清楚。&lt;/p&gt;
&lt;h2&gt;30. Workflow 形态的正交分类&lt;/h2&gt;
&lt;p&gt;前面有一版分类把 Workflow 分成四种：Deterministic、Agentic、Policy、Human，这个分类不建议保留，原因不是它错，而是这四项不在同一个分类维度上：Deterministic / Agentic 描述的是执行方式，Policy 描述的是控制方式，Human 描述的是参与者。它们并不互斥，同一条流程里同时出现 Agent Task、Policy Gate 和 Human Approval 是常态：BPMN Workflow → Agent Task → Policy Gate → Human Approval。
于是同一条流程按旧分类会同时属于四类，分类就失去了判别力，更严谨的做法是拆成三个正交维度：&lt;/p&gt;





















&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Dimension&lt;/th&gt;&lt;th&gt;Values&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;Execution&lt;/td&gt;&lt;td&gt;Deterministic / Bounded Agentic / Dynamic Agentic&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Task&lt;/td&gt;&lt;td&gt;Human / System / Agent / Hybrid&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Control&lt;/td&gt;&lt;td&gt;Rule / Policy / Human Approval&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;p&gt;其中 Execution 指谁决定下一步（Deterministic 由 Process Definition 定，如 Settlement；Bounded Agentic 由 Agent 在预先定义的边界内定，如 Compliance Review；Dynamic Agentic 连下一步都由 Agent 定，如“调查这家公司是否值得投资”）；Task 指谁执行（金融场景最常见的是 Hybrid：Agent 准备决策包，Human 批准）；Control 指凭什么放行（Rule / Policy / Human Approval，对应 Agent wants to act → Authorization → Risk classification → Approval → Execute / Reject）。&lt;/p&gt;
&lt;p&gt;以本文后面那个投资 Idea 流程为例：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&lt;span&gt;&lt;span&gt;Investment Idea Review&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;= Deterministic（主流程）+ Bounded Agentic（各 Review Task）&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;+ Hybrid&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;+ Rule + Policy + Human approval&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;这个描述可以直接进设计文档，而“四种形态”不能——因为它无法回答“这条流程属于哪一类”。&lt;/p&gt;
&lt;h2&gt;31. Audit、Evidence、Agent Trace 是三件不同的事&lt;/h2&gt;
&lt;p&gt;这三个词在讨论里经常被并列甚至混用，但它们回答的是三个不同的问题，取证方式和保留策略也不同：&lt;/p&gt;
&lt;pre&gt;flowchart LR
    Task[&quot;Agent Task&quot;]
    Task --&amp;gt; Audit[&quot;Audit：谁 / 何时 / 做了什么&quot;]
    Task --&amp;gt; Evidence[&quot;Evidence：依据了什么&quot;]
    Task --&amp;gt; Trace[&quot;Agent Trace：怎么完成的&quot;]&lt;/pre&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;Audit&lt;/td&gt;&lt;td&gt;谁、何时、做了什么&lt;/td&gt;&lt;td&gt;主体是人和流程，与模型无关，保留期由监管定&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Evidence&lt;/td&gt;&lt;td&gt;依据了什么&lt;/td&gt;&lt;td&gt;主体是业务事实来源，决定结论能否被复核&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Trace&lt;/td&gt;&lt;td&gt;Agent 怎么完成&lt;/td&gt;&lt;td&gt;主体是执行过程，用于评估调试，保留期较短&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;p&gt;一个实际后果是只保留 Audit，复盘会变成“流程没错，但结论不对”；只保留 Trace，则无法回答“当时是谁批准的”。两者都要，并且必须通过同一个 Task ID 串起来，这也是 Task Contract 里 &lt;code&gt;audit.traceLevel&lt;/code&gt; 这个字段存在的意义。&lt;/p&gt;
&lt;h2&gt;32. Agent Runtime 与 Business Workflow Runtime 是不同的 Orchestration 层&lt;/h2&gt;
&lt;p&gt;“Agent Runtime 不是 Workflow Engine”这个说法需要修正：Microsoft Agent Framework 本身就具有 Workflow Runtime，LangGraph 也有 durable execution、checkpoint / resume 等能力。更准确的是：Agent Runtime 可以实现 Agent Workflow，但不等于 Business Workflow Runtime。架构是：BPMN Engine 之下挂 Human Task、System Task 与 Agent Task，Agent Task 之后进 Agent Runtime（Tools / Context / Memory）。&lt;/p&gt;
&lt;h3&gt;BPMN Engine&lt;/h3&gt;
&lt;p&gt;负责 execution、state、task、routing、timers、events、retries、SLA 和 human workflow。&lt;/p&gt;
&lt;h3&gt;Agent Runtime&lt;/h3&gt;
&lt;p&gt;负责 reasoning、tool use、context、memory、planning 和 evidence gathering。&lt;/p&gt;
&lt;p&gt;两者边界很干净。&lt;/p&gt;
&lt;h3&gt;三种编排模式&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Model A（纯 Business Workflow）：BPMN → Workflow Runtime → Tasks。&lt;/li&gt;
&lt;li&gt;Model B（纯 Agent Workflow）：Agent Goal → Agent Workflow → Tools / Human / Subagents。&lt;/li&gt;
&lt;li&gt;Model C（Nested）：BPMN → Agent Task → Agent Workflow → Structured Result → BPMN。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;金融不是默认选择 C，而是根据业务责任判断 A / B / C：金融主流程默认从 A 开始，复杂认知任务可以使用 B，当 A 和 B 同时存在时使用 C。&lt;/p&gt;



















































































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;判断问题&lt;/th&gt;&lt;th&gt;Business Workflow&lt;/th&gt;&lt;th&gt;Agent Workflow&lt;/th&gt;&lt;th&gt;Nested&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;谁定义下一步&lt;/td&gt;&lt;td&gt;Process Definition&lt;/td&gt;&lt;td&gt;Agent&lt;/td&gt;&lt;td&gt;外层 + 内层分别定义&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Business State&lt;/td&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;Agent Working State&lt;/td&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;业务角色 / SLA&lt;/td&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;核心&lt;/td&gt;&lt;td&gt;内层&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Multi-Agent&lt;/td&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;Code / Graph version&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;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;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;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;td&gt;&lt;strong&gt;最高&lt;/strong&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;td&gt;&lt;strong&gt;最高&lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;h2&gt;33. “Agent-in-Process”而非“Process-in-Agent”&lt;/h2&gt;
&lt;p&gt;这两个名字很形象。不推荐 Process-in-Agent，即让 Agent 决定整个 Business Process，风险很大。推荐 Agent-in-Process，即 Business Process 之下是 Agent Task，Agent Task 之后才是 Agent，符合金融机构对 predictable、controllable、explainable 和 auditable 的要求。&lt;/p&gt;
&lt;h3&gt;不推荐&lt;/h3&gt;
&lt;p&gt;Process-in-Agent，风险很大。&lt;/p&gt;
&lt;h3&gt;推荐&lt;/h3&gt;
&lt;p&gt;Agent-in-Process，符合金融机构对 predictable、controllable、explainable 和 auditable 的要求。&lt;/p&gt;
&lt;h3&gt;双向调用：Agent 也可以调用受治理的 Workflow&lt;/h3&gt;
&lt;p&gt;上面讲的是 Workflow 调用 Agent——这是金融主流程的方向。但 2026 年的产品已经出现了反方向：Agent 调用受治理的 Workflow。Camunda 8.10 的 Processes MCP Server 会把已部署的流程自动注册成 MCP tool，Agent 可以直接发现并调用（传参进去，新起一个 process instance，拿回 instance key），不需要在 Agent 框架与流程引擎之间另写集成层。(&lt;a href=&quot;https://docs.camunda.io/docs/next/components/agentic-orchestration/expose-process-as-mcp-tool&quot;&gt;Camunda 8 Docs&lt;/a&gt;)&lt;/p&gt;
&lt;p&gt;Business Workflow → Agent Task → Agent Runtime → 受治理的 Sub-workflow → Workflow Runtime&lt;/p&gt;
&lt;p&gt;所以未来更准确的模型不是单向嵌套，而是双向调用：Workflow 把 Agent 当一等步骤（如 AWS Step Functions + AgentCore (&lt;a href=&quot;https://aws.amazon.com/about-aws/whats-new/2026/06/aws-step-functions-agentcore/&quot;&gt;Amazon Web Services, Inc.&lt;/a&gt;)），Agent 把受治理的 Sub-workflow 当 Tool。但对金融主流程而言，方向仍以 Workflow 调用 Agent 为主——反方向只允许发生在有明确契约与审批的受治理子流程上。&lt;/p&gt;
&lt;h2&gt;34. 这套架构的名字，以及它为什么更容易治理&lt;/h2&gt;
&lt;p&gt;这套架构可以叫 Deterministic Core, Agentic Edge，在企业内部更贴切的说法是 Deterministic Business Process + Bounded Agent Execution。核心原则是 Deterministic Core 经 Agent Task 到 Agentic Edge，再经 Structured Result 到 Deterministic Validation。&lt;/p&gt;
&lt;p&gt;这是比较适合金融服务的“新时代 Workflow”。&lt;/p&gt;
&lt;h3&gt;为什么它比“Agent Workflow”更容易治理&lt;/h3&gt;
&lt;p&gt;因为审计团队可以问：&lt;/p&gt;
&lt;h3&gt;“这个业务流程是什么？”&lt;/h3&gt;
&lt;p&gt;→ BPMN&lt;/p&gt;
&lt;h3&gt;“为什么这个 case 进入 Compliance？”&lt;/h3&gt;
&lt;p&gt;→ BPMN + DMN&lt;/p&gt;
&lt;h3&gt;“为什么 Agent 推荐这个结论？”&lt;/h3&gt;
&lt;p&gt;→ Agent Trace + Evidence&lt;/p&gt;
&lt;h3&gt;“Agent 为什么能调用这个 API？”&lt;/h3&gt;
&lt;p&gt;→ IAM + Policy&lt;/p&gt;
&lt;h3&gt;“为什么最终允许这个动作？”&lt;/h3&gt;
&lt;p&gt;→ Workflow transition + Policy&lt;/p&gt;
&lt;h3&gt;“谁最终批准？”&lt;/h3&gt;
&lt;p&gt;→ Human Task + Identity&lt;/p&gt;
&lt;p&gt;整个责任链到这里是完整的。&lt;/p&gt;
&lt;h1&gt;第五部分：Agent Task Contract&lt;/h1&gt;
&lt;h2&gt;35. BPMN 不应该描述 Agent 的内部过程&lt;/h2&gt;
&lt;p&gt;例如 Compliance Review，不要继续画成 Search Policy → Search Documents → Search Historical Cases → LLM Review → LLM Critic → Search Again → Summarize——这就走偏了。BPMN 只写 Compliance Review → Agent-assisted Review → Human Decision，Agent 内部 search → retrieve → reason → compare → identify gap → retrieve again → produce evidence → draft recommendation，这些属于 Agent Runtime，这是 &lt;strong&gt;Workflow&lt;/strong&gt; 和 &lt;strong&gt;Agent&lt;/strong&gt; 最重要的边界。&lt;/p&gt;
&lt;h2&gt;36. Agent Task Contract&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Agent Task Contract&lt;/strong&gt; 是本文的核心抽象。前面所有关于边界的讨论——流程归谁、状态归谁、权限归谁——最终都收敛到这个契约上。它很少直接给人看，主要作用是作为 BPMN 侧与 Agent 侧之间唯一需要对齐的接口。&lt;/p&gt;
&lt;p&gt;两者的对应关系不是 Agent = Workflow，而是 BPMN Activity 落成 Agent Activity（完整链路见本节末 Validation Contract）。例如：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&lt;span&gt;&lt;span&gt;activity&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  id&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;compliance-review&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  type&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;agent-task&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  input&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    - &lt;/span&gt;&lt;span&gt;investment_case&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    - &lt;/span&gt;&lt;span&gt;supporting_documents&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    - &lt;/span&gt;&lt;span&gt;compliance_policy&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  output&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    - &lt;/span&gt;&lt;span&gt;findings&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    - &lt;/span&gt;&lt;span&gt;evidence&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    - &lt;/span&gt;&lt;span&gt;recommendation&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    - &lt;/span&gt;&lt;span&gt;missing_information&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  allowedTools&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    - &lt;/span&gt;&lt;span&gt;policy.search&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    - &lt;/span&gt;&lt;span&gt;document.search&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    - &lt;/span&gt;&lt;span&gt;risk.lookup&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  approval&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    required&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;true&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;这个 Activity 对 BPMN Runtime 来说仍然是一个普通 Task，只不过内部用了 Agent。&lt;/p&gt;
&lt;h3&gt;一份完整的 Agent Task Contract&lt;/h3&gt;
&lt;p&gt;把上一节那个 YAML 展开，一份可用的 Agent Task Contract 至少需要十一项：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&lt;span&gt;&lt;span&gt;agentTask&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  id&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;compliance-review&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  workflow&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;investment-idea-review&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  version&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;v3&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  input&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    schema&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;InvestmentCase.v3&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  output&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    schema&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;ComplianceFinding.v2&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  capabilities&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    - &lt;/span&gt;&lt;span&gt;policy.search&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    - &lt;/span&gt;&lt;span&gt;document.search&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    - &lt;/span&gt;&lt;span&gt;risk.lookup&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  dataAccess&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    - &lt;/span&gt;&lt;span&gt;investment.case&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    - &lt;/span&gt;&lt;span&gt;approved.documents&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    - &lt;/span&gt;&lt;span&gt;snapshot&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;ctx-20260912-1001&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  instruction&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;compliance-review-policy v4.2&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  execution&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    maxDuration&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;15m&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    maxToolCalls&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;30&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    maxTokens&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;120000&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  retry&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    maxAttempts&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    onFailure&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;escalate&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  control&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    autoExecute&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;false&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    humanApproval&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;required&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  evidence&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    required&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;true&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    citationRequired&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;true&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  escalation&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    onLowConfidence&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;human&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    onInsufficientEvidence&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;request_changes&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  evaluation&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    criteria&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;compliance-finding-accuracy&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    minConfidence&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;0.8&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  audit&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    traceLevel&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;full&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&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;作用&lt;/th&gt;&lt;th&gt;缺了会怎样&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;id / version&lt;/td&gt;&lt;td&gt;Task 身份与契约版本&lt;/td&gt;&lt;td&gt;流程升级后无法对应审计链&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;input / output schema&lt;/td&gt;&lt;td&gt;定义 Task 的输入输出类型&lt;/td&gt;&lt;td&gt;输出变成自由文本，无法进入流程&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;capabilities&lt;/td&gt;&lt;td&gt;允许调用的工具集合&lt;/td&gt;&lt;td&gt;Agent 可以调用未授权的能力&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;dataAccess&lt;/td&gt;&lt;td&gt;允许读取的数据范围与快照&lt;/td&gt;&lt;td&gt;Agent 看到不确定版本的事实&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;instruction&lt;/td&gt;&lt;td&gt;该 Task 使用的策略版本&lt;/td&gt;&lt;td&gt;无法解释某次决策依据了哪版规则&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;execution budget&lt;/td&gt;&lt;td&gt;时长、工具调用数、token 上限&lt;/td&gt;&lt;td&gt;成本与时长失控&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;retry / escalation&lt;/td&gt;&lt;td&gt;失败与低置信度时的去向&lt;/td&gt;&lt;td&gt;失败被静默吞掉，或无限重试&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;control&lt;/td&gt;&lt;td&gt;是否需要人工批准&lt;/td&gt;&lt;td&gt;高风险动作被自动执行&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;evidence&lt;/td&gt;&lt;td&gt;是否必须给出证据与引用&lt;/td&gt;&lt;td&gt;结论无法复核&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;evaluation&lt;/td&gt;&lt;td&gt;用哪套标准衡量质量&lt;/td&gt;&lt;td&gt;质量只能凭感觉&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;audit&lt;/td&gt;&lt;td&gt;轨迹粒度&lt;/td&gt;&lt;td&gt;出事故后无法复盘&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;h3&gt;这份契约真正的价值&lt;/h3&gt;
&lt;p&gt;它把两个以前混在一起的问题分开了：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;BPMN 侧看到的是： 一个 Task，有 ID、有输入、有输出、有 SLA、有审批&lt;/li&gt;
&lt;li&gt;Agent 侧看到的是： 一份边界声明，允许它在这个范围内自由决定怎么做&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;于是两边可以独立演进：流程改了，只要契约不变，Agent 不用动；Agent 换了模型或框架，只要契约不变，流程不用动。这就是“受约束的智能”的实际含义：自由度留在合约内部，责任留在合约外部。未来 Workflow Engine 和 Agent Runtime 真正连接的不是 LLM API，而是这份 Task Contract。&lt;/p&gt;
&lt;h3&gt;Validation Contract：提议如何变成状态变化&lt;/h3&gt;
&lt;p&gt;一份契约其实不够。Agent Task Contract 约束的是“怎么做”——输入输出、可用能力、数据范围、执行上限、审批模式、证据要求；而从提议到真正的业务状态变化，还需要第二份契约：Validation Contract。它只回答“能不能生效”：schema 校验、业务规则（DMN）、授权（IAM / Policy）、必要的人工批准。两份契约的分工，正好对应第 39 节那条管道的前后两半：&lt;/p&gt;
&lt;pre&gt;flowchart TD
    A[&quot;Business Workflow&quot;] --&amp;gt; B[&quot;Agent Task Contract&quot;]
    B --&amp;gt; C[&quot;Agent Runtime&quot;]
    C --&amp;gt; D[&quot;Structured Result&quot;]
    D --&amp;gt; E[&quot;Validation Contract&quot;]
    E --&amp;gt; F[&quot;Workflow Runtime&quot;]&lt;/pre&gt;
&lt;p&gt;Task Contract 管住 Agent 的自由度，Validation Contract 管住状态变化的生效条件，Workflow Runtime 管住最终落子。三份责任分开，事故复盘时才能逐段归因：结论错了查 Task 与证据，规则错了查 DMN 版本，放行错了查审批记录。&lt;/p&gt;
&lt;h2&gt;37. Agent 的输出必须结构化&lt;/h2&gt;
&lt;p&gt;这是金融领域必须坚持的一条，具体做法如下。&lt;/p&gt;
&lt;p&gt;输出不采用以下形式：Agent → 一段自然语言。
输出采用以下结构：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&lt;span&gt;&lt;span&gt;{&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  &quot;decision&quot;&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;&quot;REQUEST_CHANGES&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  &quot;findings&quot;&lt;/span&gt;&lt;span&gt;: [&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    {&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;      &quot;type&quot;&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;&quot;MISSING_EVIDENCE&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;      &quot;description&quot;&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;&quot;2025 cash flow forecast missing&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  ],&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  &quot;evidence&quot;&lt;/span&gt;&lt;span&gt;: [&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    {&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;      &quot;documentId&quot;&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;&quot;doc-123&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;      &quot;page&quot;&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;17&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  ],&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  &quot;confidence&quot;&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;0.91&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;这里需要先说明一个细节：&lt;code&gt;confidence&lt;/code&gt; 是模型自报的数值，不应被当作业务可信度或风险评分使用。一个自报 0.91 的结论可能建立在残缺的证据上，一个自报 0.60 的结论也可能恰好正确——两者之间没有校准关系。如果架构上确实需要“置信度”，它应当由独立的验证或评估机制产生（例如多次 trial 的一致性、证据充分性检查、历史准确率），或者至少明确标注为“模型自评”，不允许直接进入流程判断。&lt;/p&gt;
&lt;p&gt;Workflow Runtime 只接受：validated structured output
然后 BPMN 决定：REQUEST_CHANGES → Research。
或者：APPROVE → Next Step。
因此，Agent 提议业务状态变化，Workflow Runtime 决定它是否真的发生。更精确的表述见第 38 节：Agent 输出的是业务建议或动作提议，共同决定它的是 Workflow Runtime、Business Rule、Authorization 和必要的 Human Task。&lt;/p&gt;
&lt;h2&gt;38. Analysis Task 与 Action Task&lt;/h2&gt;
&lt;p&gt;有一个容易含糊的地方需要区分清楚：Agent 的“输出”到底指什么。在本文的模型里，Agent Task 分两类，它们的输出性质完全不同。&lt;/p&gt;
&lt;h3&gt;Agent Analysis Task&lt;/h3&gt;
&lt;p&gt;Agent 产出的是&lt;strong&gt;判断材料&lt;/strong&gt;，其作用不含流程指令：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&lt;span&gt;&lt;span&gt;{&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  &quot;recommendation&quot;&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;&quot;REQUEST_CHANGES&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  &quot;findings&quot;&lt;/span&gt;&lt;span&gt;: [&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    { &lt;/span&gt;&lt;span&gt;&quot;type&quot;&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;&quot;MISSING_EVIDENCE&quot;&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;&quot;description&quot;&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;&quot;2025 现金流预测缺失&quot;&lt;/span&gt;&lt;span&gt; }&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  ],&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  &quot;evidence&quot;&lt;/span&gt;&lt;span&gt;: [{ &lt;/span&gt;&lt;span&gt;&quot;documentId&quot;&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;&quot;doc-123&quot;&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;&quot;page&quot;&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;17&lt;/span&gt;&lt;span&gt; }],&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  &quot;confidence&quot;&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;0.91&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;它不应该输出 &lt;strong&gt;workflow transition&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;即使字段名叫 &lt;code&gt;recommendation&lt;/code&gt;，它的语义也只是“建议把流程导向 Request Changes”。真正决定是否回到 Research 的，是 BPMN 的网关、DMN 的规则，或者一个 Human Task。&lt;/p&gt;
&lt;p&gt;把这两件事分开有两个实际好处：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Agent 的 prompt 里不再需要写“如果……就直接跳到第几步”，流程知识只存在一个地方；&lt;/li&gt;
&lt;li&gt;BPMN 不依赖模型输出的语义，模型升级不会悄悄改变流程走向。&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Agent Action Task&lt;/h3&gt;
&lt;p&gt;低风险场景下，Agent 可以提出一个&lt;strong&gt;动作提议&lt;/strong&gt;：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&lt;span&gt;&lt;span&gt;{&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  &quot;action&quot;&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;&quot;CLASSIFY_DOCUMENT&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  &quot;target&quot;&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;&quot;doc-123&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  &quot;value&quot;&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;&quot;quarterly_report&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  &quot;confidence&quot;&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;0.96&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;这个动作经过 policy 判断后可以自动执行，“可以自动执行”这个授权由 Policy 配置给出。&lt;/p&gt;
&lt;h3&gt;更精确的表述&lt;/h3&gt;
&lt;p&gt;于是前面那句“Agent 提议状态变化，Workflow 决定是否真的发生状态变化”，应该修正为：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Agent 输出业务建议或动作提议；Workflow Runtime、Business Rule、Authorization 和必要的 Human Task，共同决定这个提议是否能够产生业务状态变化。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;这个表述多出来的部分（Business Rule、Authorization、Human Task），正是金融场景里最需要被明确归属的三个环节。少写一个，评审时就会被追问“那这里谁负责”。&lt;/p&gt;
&lt;h2&gt;39. Governed Action Pipeline&lt;/h2&gt;
&lt;p&gt;在金融 Agent workflow 里，任何 Agent 行为都可以统一看成一条 Controlled Action Pipeline——与 Agent 直调 API 的做法相比：&lt;/p&gt;
&lt;pre&gt;flowchart LR
    Agent[&quot;Agent&quot;] --&amp;gt; Proposal[&quot;Proposal&quot;]
    Proposal --&amp;gt; Validation[&quot;Schema / Business Validation&quot;]
    Validation --&amp;gt; Auth[&quot;Authorization / Policy&quot;]
    Auth --&amp;gt; Decision{&quot;Human Approval?&quot;}
    Decision --&amp;gt;|Yes| Human[&quot;Human Approval&quot;]
    Human --&amp;gt;|Approved| Execute[&quot;Controlled Execution&quot;]
    Decision --&amp;gt;|No| Execute
    Execute --&amp;gt; State[&quot;Workflow State Transition&quot;]&lt;/pre&gt;
&lt;p&gt;这种方式安全和可审计得多。换句话说，即使 Agent 返回了 &lt;code&gt;{&quot;approved&quot;: true}&lt;/code&gt;，业务状态也不会因此自动改变——它只是一个提议，能否生效取决于后面的 Validation、Authorization 与 Workflow Transition。&lt;/p&gt;
&lt;h3&gt;为什么叫“管道”，而不是“事务”&lt;/h3&gt;
&lt;p&gt;这条链路上面那张图就是完整形态。它的语义是&lt;strong&gt;动作治理与授权&lt;/strong&gt;：关心的是“这个动作有没有资格发生”。它不是分布式事务协议，也不涉及多个参与者能否原子提交的问题——把它套进事务语义去讨论，会让评审直接跑偏到错误的抽象层次上，去追问一个并不存在的协调者。&lt;/p&gt;
&lt;p&gt;还有一点要写清楚：这条管道只负责把一个提议送达到“执行或拒绝”这个结论，它本身不产生业务状态转移。最终的状态转移仍然由 Workflow Runtime 依据 BPMN 完成，这也是整套架构里职责划分最干净的一条边界。&lt;/p&gt;
&lt;h2&gt;40. “审批”怎么处理&lt;/h2&gt;
&lt;p&gt;例如 PM Approval：BPMN: → PM Approval。
内部可以：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Agent prepares recommendation → Agent highlights:&lt;/li&gt;
&lt;li&gt;Agent highlights: → expected return&lt;/li&gt;
&lt;li&gt;Agent highlights: → downside&lt;/li&gt;
&lt;li&gt;Agent highlights: → risk&lt;/li&gt;
&lt;li&gt;Agent highlights: → missing evidence&lt;/li&gt;
&lt;li&gt;Agent highlights: → policy violations&lt;/li&gt;
&lt;li&gt;Agent highlights: → PM&lt;/li&gt;
&lt;li&gt;PM → Approve / Reject / Request Changes&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;PM 的按钮仍然是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Approve&lt;/li&gt;
&lt;li&gt;Reject&lt;/li&gt;
&lt;li&gt;Request Changes&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Agent 不能替 PM 点击，这正是 AI assistance ≠ AI authority 所表达的意思。&lt;/p&gt;
&lt;h2&gt;41. “修改”也由 BPMN 明确控制&lt;/h2&gt;
&lt;p&gt;例如：&lt;/p&gt;
&lt;p&gt;Risk Review 按 Approve 进 Compliance、Reject 结束、Request Changes 回 Research。&lt;/p&gt;
&lt;p&gt;这在 BPMN 中完全合理。&lt;/p&gt;
&lt;p&gt;然后：Research → 修改材料 → Submit → Risk Review。
这里 BPMN 描述的是确定性的状态转移规则；至于某个具体的 process instance 此刻处于什么状态，由 Workflow Runtime 持有。&lt;/p&gt;
&lt;p&gt;不需要由 Agent 来决定“我觉得应该回到 Research”。&lt;/p&gt;
&lt;h2&gt;42. 什么时候允许 Agent 自己完成一个 Task&lt;/h2&gt;
&lt;p&gt;不用改 Workflow，只需要改变以下配置：Agent Authority Policy
比如：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&lt;span&gt;&lt;span&gt;agentAuthority&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  riskReview&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    canRecommend&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;true&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    canApprove&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;false&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  documentClassification&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    canRecommend&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;true&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    canApprove&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;true&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  investmentApproval&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    canRecommend&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;true&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    canApprove&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;false&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;这样一来，Workflow 定义与 Agent autonomy 解耦，这种解耦让架构更稳定。&lt;/p&gt;
&lt;h3&gt;一个简单的三级模型&lt;/h3&gt;
&lt;p&gt;可以建立一个很简单的三级模型：&lt;/p&gt;
&lt;h3&gt;Level 0 — Human only&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Agent → assist&lt;/li&gt;
&lt;li&gt;Human → decision&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Level 1 — Agent recommendation&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Agent → prepare recommendation&lt;/li&gt;
&lt;li&gt;Human → approve&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Level 2 — Bounded automation&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Agent → execute&lt;/li&gt;
&lt;li&gt;Policy → validates&lt;/li&gt;
&lt;li&gt;System → commits&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;金融机构前期绝大多数应该是 Level 1，部分低风险、重复性的任务可以做到 Level 2，Level 0 则用于真正高风险决策。&lt;/p&gt;
&lt;h1&gt;第六部分：一个完整的金融案例&lt;/h1&gt;
&lt;h2&gt;43. Investment Idea Review 全流程&lt;/h2&gt;
&lt;p&gt;比如一个投资 Idea 流程（Draft → Research → Risk Review → Compliance Review → PM Review → Approved），业务分析师完全可以用 BPMN 表达。各 Review 环节按 Approve 进入下一步、Reject 结束、Request Changes 打回 Research，细节见下节三段式。&lt;/p&gt;
&lt;p&gt;这里不需要消灭 &lt;strong&gt;BPMN&lt;/strong&gt;，因为这个东西本身就是业务知识资产。&lt;/p&gt;
&lt;p&gt;它回答了：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;谁负责？&lt;/li&gt;
&lt;li&gt;谁批准？&lt;/li&gt;
&lt;li&gt;哪一步必须发生？&lt;/li&gt;
&lt;li&gt;什么情况退回？&lt;/li&gt;
&lt;li&gt;什么情况结束？&lt;/li&gt;
&lt;li&gt;哪几个环节并行？&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这恰恰是金融业务最需要确定性的部分。把这条流程展开，看每一段 Task 里 Agent 具体做什么、Human 具体决定什么。&lt;/p&gt;
&lt;h3&gt;Investment Idea Review&lt;/h3&gt;
&lt;pre&gt;flowchart TD

    A[Idea Created] --&amp;gt; B[Research]

    B --&amp;gt; C[Risk Review]

    C --&amp;gt;|Approve| D[Compliance Review]
    C --&amp;gt;|Request Changes| B
    C --&amp;gt;|Reject| Z[Rejected]

    D --&amp;gt;|Approve| E[PM Review]
    D --&amp;gt;|Request Changes| B
    D --&amp;gt;|Reject| Z

    E --&amp;gt;|Approve| F[Approved]
    E --&amp;gt;|Request Changes| B
    E --&amp;gt;|Reject| Z&lt;/pre&gt;
&lt;h3&gt;Research Task&lt;/h3&gt;
&lt;p&gt;Agent：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Search market data&lt;/li&gt;
&lt;li&gt;Search company filings&lt;/li&gt;
&lt;li&gt;Search internal research&lt;/li&gt;
&lt;li&gt;Generate summary&lt;/li&gt;
&lt;li&gt;Identify missing evidence&lt;/li&gt;
&lt;li&gt;Draft thesis&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;输出：Research Package
Human：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Submit&lt;/li&gt;
&lt;li&gt;Request Changes&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Risk Task&lt;/h3&gt;
&lt;p&gt;Agent：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Analyze financials&lt;/li&gt;
&lt;li&gt;Calculate risk metrics&lt;/li&gt;
&lt;li&gt;Compare peers&lt;/li&gt;
&lt;li&gt;Identify anomalies&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;输出：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Risk Findings&lt;/li&gt;
&lt;li&gt;Risk Recommendation&lt;/li&gt;
&lt;li&gt;Evidence&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Human：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Approve&lt;/li&gt;
&lt;li&gt;Reject&lt;/li&gt;
&lt;li&gt;Request Changes&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Compliance Task&lt;/h3&gt;
&lt;p&gt;Agent：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Retrieve policy&lt;/li&gt;
&lt;li&gt;Retrieve similar cases&lt;/li&gt;
&lt;li&gt;Check restrictions&lt;/li&gt;
&lt;li&gt;Identify missing documentation&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Human：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Approve&lt;/li&gt;
&lt;li&gt;Reject&lt;/li&gt;
&lt;li&gt;Request Changes&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;PM Task&lt;/h3&gt;
&lt;p&gt;Agent：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Summarize entire case&lt;/li&gt;
&lt;li&gt;Challenge thesis&lt;/li&gt;
&lt;li&gt;Highlight risk&lt;/li&gt;
&lt;li&gt;Compare alternatives&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;PM：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Approve&lt;/li&gt;
&lt;li&gt;Reject&lt;/li&gt;
&lt;li&gt;Request Changes&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这里 Agent 能力很强，但它从头到尾都没有以下行为：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;改变 BPMN&lt;/li&gt;
&lt;li&gt;跳过审批&lt;/li&gt;
&lt;li&gt;修改状态&lt;/li&gt;
&lt;li&gt;自己批准&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;除非明确授权。&lt;/p&gt;
&lt;h2&gt;44. 投资研究：哪一段应该固化，哪一段必须留给 Agent&lt;/h2&gt;
&lt;p&gt;例如：&lt;/p&gt;
&lt;h3&gt;投资研究&lt;/h3&gt;
&lt;p&gt;第一次：Agent → search → SEC → research → valuation → competitor → analyst review。
此时 Agent 很自由，跑了 5000 次以后发现：Company Financials → Peer Analysis → DCF → Risk Check → Report。
这套路径已经高度稳定，那么这部分就可以固化为以下流程：compile → deterministic research workflow。
而异常情况仍交给 Agent：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;new company&lt;/li&gt;
&lt;li&gt;unusual accounting&lt;/li&gt;
&lt;li&gt;missing data&lt;/li&gt;
&lt;li&gt;conflicting filings&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;需要强调的是，这里的“固化”并不意味着把 Agent 换成写死的代码，它的含义是把一个&lt;strong&gt;已经被反复验证过的子过程&lt;/strong&gt;提升为确定性步骤：Company Financials → Peer Analysis → DCF → Risk Check → Report。
而异常情况仍然交给 Agent：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;new company&lt;/li&gt;
&lt;li&gt;unusual accounting&lt;/li&gt;
&lt;li&gt;missing data&lt;/li&gt;
&lt;li&gt;conflicting filings&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这里的分工标准是任务性质：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;大部分可规则化的流程保持确定性；只有真正需要语义理解、调查、推理或动态工具选择的任务引入 Agent。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;判断某个子过程是否到了可以固化的程度，判据是它是否稳定到“两个不同的人按同样的步骤会得出同一结论”。达不到这个标准的，继续留在 Agent 侧。&lt;/p&gt;
&lt;h1&gt;第七部分：每一层放谁&lt;/h1&gt;
&lt;h2&gt;45. Workflow Engine 的裂解&lt;/h2&gt;
&lt;p&gt;过去，一个系统全部负责：Workflow Engine
未来更像：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Agent Platform&lt;/strong&gt;：Agent Loop、Durable Runtime、Policy Engine&lt;/li&gt;
&lt;li&gt;三者都进 Tool Layer，再到 API / MCP / Human。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;而这些能力以前往往被归到同一个“BPM / Workflow”标签下：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Camunda / Fluxnova / ServiceNow → business process orchestration&lt;/li&gt;
&lt;li&gt;Temporal / Durable Task → durable execution&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;把它们归成同一类，是选型时最常见的起点错误。&lt;/p&gt;
&lt;h2&gt;46. 能力 → 代表产品&lt;/h2&gt;
&lt;p&gt;前一版材料把行业归纳为“5 派”，那个分法把不同层次的东西并列了。按能力维度重新列一遍，选型时更不容易搞错：&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;Business Process Orchestration&lt;/td&gt;&lt;td&gt;Camunda / Fluxnova&lt;/td&gt;&lt;td&gt;确定性流程、责任、审批、SLA、审计&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Agent Workflow / Graph&lt;/td&gt;&lt;td&gt;LangGraph / Microsoft Agent Framework / Google ADK&lt;/td&gt;&lt;td&gt;Agent 侧的编排图、state、checkpoint&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Durable Execution&lt;/td&gt;&lt;td&gt;Temporal / Durable Task&lt;/td&gt;&lt;td&gt;长时间运行、失败恢复、可重放执行&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Managed Agent Runtime&lt;/td&gt;&lt;td&gt;AWS AgentCore / OpenAI Agents API / Snowflake Cortex Agents&lt;/td&gt;&lt;td&gt;托管 harness、sandbox、会话上下文&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Enterprise Data / Ontology&lt;/td&gt;&lt;td&gt;Palantir / Snowflake&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;&lt;strong&gt;误判一&lt;/strong&gt;：把 Agent Workflow 和 Durable Execution 当成一类。&lt;/p&gt;
&lt;p&gt;LangGraph 的 graph 与 Temporal 的 workflow 都在讲“编排”，但前者的产出是 Agent 的执行路径，后者的产出是可重放的执行历史。一个 Agent 图跑在 Temporal Activity 里是常见组合，但它们是两层，不是两个竞品。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;误判二&lt;/strong&gt;：把 Managed Agent Runtime 当成 Workflow Engine。&lt;/p&gt;
&lt;p&gt;这是今年最容易出的错。托管运行时的“orchestration”指的是 &lt;strong&gt;Agent 内部的任务编排&lt;/strong&gt;：决定先查什么、再调什么工具、什么时候停止。它不持有企业业务流程的状态，也不负责跨部门的审批与责任归属。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;误判三&lt;/strong&gt;：认为选了其中一层就等于有了整个架构。&lt;/p&gt;
&lt;p&gt;这五层不是五个可选项，而是五个必须回答的问题。任何一层缺失，都会在落地时以事故的形式出现：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;缺 Workflow Runtime → 审批与状态没有权威源&lt;/li&gt;
&lt;li&gt;缺 Agent Runtime → 无法接入模型能力&lt;/li&gt;
&lt;li&gt;缺 Durable Execution → 长任务在失败后无法恢复&lt;/li&gt;
&lt;li&gt;缺 Managed Runtime → 每个团队自己造 harness 与沙箱&lt;/li&gt;
&lt;li&gt;缺 Data / Semantic → Agent 看到的事实无法确定版本&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;反过来看选型问题会简单很多：不要问“谁替代谁”，要问“这一层谁来负责，以及层与层之间的契约是什么”。&lt;/p&gt;
&lt;p&gt;再补一句：这张表是概念分层，不是产品分离。一个产品可以同时承担其中两层甚至三层——Microsoft 的 graph workflow 跑在 Durable Task 上，Temporal 的 durable Workflow 直接承载 Agent Loop，AWS 的 Step Functions 直接调用 AgentCore Harness。选型时真正要问的不是“买哪个产品替代另一个”，而是“这几份责任分别由谁承担”。&lt;/p&gt;
&lt;h2&gt;47. 换个选型维度：Control / Execution / Orchestration / Authority&lt;/h2&gt;
&lt;p&gt;不要再用“BPMN vs Agent”作为技术选型的第一维度。2026 年的产品已经证明，同一个厂商内部都同时提供确定性与动态两套东西，拿产品名当选型维度只会越比越乱。更实在的是四个决策维度：&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;Control Model&lt;/td&gt;&lt;td&gt;流程由谁决定&lt;/td&gt;&lt;td&gt;Deterministic / Goal-directed&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Execution&lt;/td&gt;&lt;td&gt;跑多久、断了怎么办&lt;/td&gt;&lt;td&gt;Durable / Ephemeral&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Orchestration&lt;/td&gt;&lt;td&gt;下一步怎么定&lt;/td&gt;&lt;td&gt;Static / Dynamic&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Authority&lt;/td&gt;&lt;td&gt;谁承担责任&lt;/td&gt;&lt;td&gt;Human / Rule / Agent / Hybrid&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;p&gt;按这个框架，前面几节的厂商各归其位：Camunda 是 Deterministic + Durable + Static/Dynamic + Human/Rule/Agent；Temporal 是 Code-defined + Durable + Static/Dynamic + Application-defined Authority；Microsoft Agent Framework 是 Graph + Durable Task + Agentic orchestration；AWS 是 Deterministic outer workflow + Agentic inner execution + Durable outer execution；OpenAI Agents API 是 Goal-directed + Long-running + Dynamic + Harness-controlled authority。&lt;/p&gt;
&lt;p&gt;注意这与第 30 节的三个维度不重复：第 30 节是描述一条流程的三个正交维度（执行模型 / 任务模式 / 控制），这里是选型时的四个决策维度。两个表加第 46 节的能力表一起用：先用四个维度定方向，再用能力表定每一层谁来负责。&lt;/p&gt;
&lt;h2&gt;48. Camunda / Fluxnova 的合理位置&lt;/h2&gt;
&lt;p&gt;这一点与前面的结论有明显不同。如果企业的业务架构师已经大量使用 BPMN，并且企业已经具备：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;BPMN 技能&lt;/li&gt;
&lt;li&gt;流程资产&lt;/li&gt;
&lt;li&gt;流程治理&lt;/li&gt;
&lt;li&gt;审计模型&lt;/li&gt;
&lt;li&gt;人员职责&lt;/li&gt;
&lt;li&gt;流程设计规范&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;那么不应该建议抛弃 Camunda 一类的 BPMN Runtime，反而应保留以下定位：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;保留 BPMN 作为 Business Process Control Plane。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;然后把 Agent Runtime 接进来。&lt;/p&gt;
&lt;p&gt;也就是说，选型不做二选一的对比：Camunda vs Agent
实际是两者相加：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Camunda&lt;/li&gt;
&lt;li&gt;Agent Runtime&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;49. Palantir Ontology 的定位&lt;/h2&gt;
&lt;p&gt;在业务流程确定的前提下，Ontology 不应该取代 BPMN，它更适合做以下事情：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Business Objects&lt;/li&gt;
&lt;li&gt;Relationships&lt;/li&gt;
&lt;li&gt;Actions&lt;/li&gt;
&lt;li&gt;Semantic Context&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;例如：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Investment&lt;/li&gt;
&lt;li&gt;Portfolio&lt;/li&gt;
&lt;li&gt;Security&lt;/li&gt;
&lt;li&gt;Issuer&lt;/li&gt;
&lt;li&gt;Risk&lt;/li&gt;
&lt;li&gt;ComplianceRule&lt;/li&gt;
&lt;li&gt;ResearchReport&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;然后 BPMN：什么时间做什么
Ontology：处理的业务对象是什么
Agent：如何理解和分析这些对象
所以三者形成：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;BPMN → Process&lt;/li&gt;
&lt;li&gt;Ontology → Business World&lt;/li&gt;
&lt;li&gt;Agent → Intelligence&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这是一个很漂亮的组合。&lt;/p&gt;
&lt;h2&gt;50. 一个 AI 平台该怎么分层&lt;/h2&gt;
&lt;p&gt;更合理的做法是把架构重新分层，具体如下。以下做法不采用：Angular → Experience API → LangChain / DeepAgents → Camunda → Agent。
采用以下分层：&lt;/p&gt;
&lt;pre&gt;flowchart TD
    APP[Applications] --&amp;gt; GW[Agent Gateway]
    GW --&amp;gt; AR[Agent Runtime]
    GW --&amp;gt; BAPI[Business API]

    AR --&amp;gt; CTX[Context]
    AR --&amp;gt; POL[Policy]
    AR --&amp;gt; PLN[Planner]

    CTX --&amp;gt; ER[Execution Runtime]
    POL --&amp;gt; ER
    PLN --&amp;gt; ER

    ER --&amp;gt; T[Tools]
    ER --&amp;gt; AG[Agents]
    ER --&amp;gt; HU[Human]

    T --&amp;gt; ES[Enterprise Systems]&lt;/pre&gt;
&lt;p&gt;各部分的分工是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Durable Execution&lt;/strong&gt;：&lt;code&gt;Temporal / Durable Task&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Managed Agent Runtime&lt;/strong&gt;：&lt;code&gt;AgentCore / OpenAI Agents API&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Agent orchestration&lt;/strong&gt;：&lt;code&gt;DeepAgents / LangGraph / Microsoft Agent Framework&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Observability + evaluation&lt;/strong&gt;：&lt;code&gt;OpenTelemetry / LangSmith / Foundry&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Business process&lt;/strong&gt;：&lt;code&gt;Camunda / Fluxnova&lt;/code&gt;，只用在真正需要 BPMN 的企业流程上&lt;/li&gt;
&lt;/ul&gt;
&lt;h1&gt;第八部分：怎么落地&lt;/h1&gt;
&lt;h2&gt;51. 不要重新造 Workflow Engine&lt;/h2&gt;
&lt;p&gt;如果企业已经有以下平台，优先复用：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Camunda&lt;/li&gt;
&lt;li&gt;Flowable&lt;/li&gt;
&lt;li&gt;Temporal&lt;/li&gt;
&lt;li&gt;ServiceNow Workflow&lt;/li&gt;
&lt;li&gt;自研流程平台&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;相比“又一个 Workflow Engine”，企业更缺的是以下几块：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Agent Task Runtime&lt;/li&gt;
&lt;li&gt;Agent Governance&lt;/li&gt;
&lt;li&gt;Evidence&lt;/li&gt;
&lt;li&gt;Tool Gateway&lt;/li&gt;
&lt;li&gt;Agent Evaluation&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;比如现有 Camunda：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Camunda&lt;/strong&gt;：Human Task、System Task、Gateway、Timer、Agent Task；其中 Agent Task 进 Agent Platform。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这就已经足够现代。&lt;/p&gt;
&lt;h2&gt;52. 分阶段落地&lt;/h2&gt;
&lt;h3&gt;Phase 1：先把确定性 Workflow 做好&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;BPMN&lt;/li&gt;
&lt;li&gt;DMN&lt;/li&gt;
&lt;li&gt;Human Task&lt;/li&gt;
&lt;li&gt;State&lt;/li&gt;
&lt;li&gt;Audit&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;先解决业务流程正确性问题。&lt;/p&gt;
&lt;h3&gt;Phase 2：Agent-in-Task&lt;/h3&gt;
&lt;p&gt;先给以下领域逐个增加 Agent Assistant：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Research&lt;/li&gt;
&lt;li&gt;Risk&lt;/li&gt;
&lt;li&gt;Compliance&lt;/li&gt;
&lt;li&gt;Operations&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这类助手重点放在以下几类能力上：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;summarize&lt;/li&gt;
&lt;li&gt;search&lt;/li&gt;
&lt;li&gt;retrieve&lt;/li&gt;
&lt;li&gt;analyze&lt;/li&gt;
&lt;li&gt;draft&lt;/li&gt;
&lt;li&gt;recommend&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Phase 3：Bounded Agent Automation&lt;/h3&gt;
&lt;p&gt;对低风险 Task，走以下路径自动执行：Agent → Policy → Auto Execute。
例如以下几类：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;文档分类&lt;/li&gt;
&lt;li&gt;数据校验&lt;/li&gt;
&lt;li&gt;信息补全&lt;/li&gt;
&lt;li&gt;标准化检查&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Phase 4：动态 Agent Sub-process&lt;/h3&gt;
&lt;p&gt;只有在真正发现业务分析师根本没法把这一段流程事先定义清楚时，才引入以下形态：Agent-driven sub-workflow
而且这个动态部分仍然被一个明确的 BPMN Activity 包起来，执行路径如下：BPMN → Dynamic Agent Subprocess → Validated Result → BPMN。
这样既不会阻碍 AI，也不会破坏金融业务的确定性。&lt;/p&gt;
&lt;h1&gt;第九部分：长期演进&lt;/h1&gt;
&lt;h2&gt;53. Agent 负责探索，Workflow 负责固化&lt;/h2&gt;
&lt;p&gt;前面讨论的都是当前应该怎么设计，这一部分讨论的是长期演进，需要先把它的性质说清楚：这一节的结论是架构推论，不是论文结论。区分这一点很必要，因为它决定了这部分内容应该放在核心架构还是演进方向，答案是后者。&lt;/p&gt;
&lt;p&gt;微软研究院最近有一项研究：&lt;/p&gt;
&lt;h3&gt;Optimizing Agentic Workflows using Meta-tools&lt;/h3&gt;
&lt;p&gt;它发现很多 Agent Workflow 会反复走以下路径：LLM → tool → LLM → tool → LLM → tool。
但这些 tool-call pattern 实际上稳定重复，因此可以做如下收敛：Agent Trace → 发现高频 tool sequence → 自动封装成 Meta-tool → Agent 一次调用。&lt;/p&gt;
&lt;p&gt;这样 LLM calls 下降，latency 下降，failure 下降，success rate 上升：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;LLM calls ↓&lt;/li&gt;
&lt;li&gt;latency ↓&lt;/li&gt;
&lt;li&gt;failure ↓&lt;/li&gt;
&lt;li&gt;success rate ↑&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;实验中 LLM calls 最多减少 11.9%，task success 提升最多 4.2 percentage points。(&lt;a href=&quot;https://www.microsoft.com/en-us/research/publication/optimizing-agentic-workflows-using-meta-tools/&quot;&gt;Microsoft&lt;/a&gt;)&lt;/p&gt;
&lt;p&gt;这指向未来 Workflow 的一个演进方向：Workflow 不一定由人设计，也可能从 Agent execution traces 中编译出来。&lt;/p&gt;
&lt;h3&gt;从 trace 到确定性流程&lt;/h3&gt;
&lt;p&gt;过去是：Human designs workflow
未来可能是：Agent runs → Execution traces → Pattern mining → Stable subgraph → Compile into deterministic tool/workflow。&lt;/p&gt;
&lt;p&gt;收敛路径如下：Agent → exploration → discovery → stable pattern → deterministic execution。
最终系统变成：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Agent负责探索，Workflow负责固化。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;论文证明的是 &lt;strong&gt;tool sequence&lt;/strong&gt; 可以被打包成 &lt;strong&gt;meta-tool&lt;/strong&gt;，业务流程可以被自动固化则是本文的架构推论，强度低于前者。&lt;/p&gt;
&lt;h2&gt;54. 三种“状态”必须分开&lt;/h2&gt;
&lt;p&gt;Agent-first 领域里有一条主张需要在这里澄清边界：Dynamic Plan 必须持久化。这句话对长时间运行的 Agent 是成立的，一个跑几小时的 Research Task，确实需要一个可检查、可恢复的工作计划。但金融架构必须把三种完全不同的状态分开，它们的所有者、变更权限和生命周期都不一样，混成一个就会直接导致 Agent 接管流程。&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;th&gt;能否被改写&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;Business Workflow State&lt;/td&gt;&lt;td&gt;这个 case 在业务流程的哪一步&lt;/td&gt;&lt;td&gt;Workflow Runtime&lt;/td&gt;&lt;td&gt;只能按 BPMN 转移&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Agent Task State&lt;/td&gt;&lt;td&gt;这个 Agent Task 在运行中、等工具、等人工还是已完成&lt;/td&gt;&lt;td&gt;Agent Runtime（对外可见）&lt;/td&gt;&lt;td&gt;受 Task Contract 与 Runtime 规则约束&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Agent Working Plan&lt;/td&gt;&lt;td&gt;Agent 为了完成这个 Task 自己排的工作顺序&lt;/td&gt;&lt;td&gt;Agent Runtime（内部）&lt;/td&gt;&lt;td&gt;可在 Task 内自由调整，甚至推倒重来&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;















&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Business Workflow State&lt;/th&gt;&lt;th&gt;Agent Task State&lt;/th&gt;&lt;th&gt;Agent Working Plan&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;BPMN:&lt;br /&gt;Compliance Review = RUNNING&lt;/td&gt;&lt;td&gt;Agent:&lt;br /&gt;RUNNING → WAITING_HUMAN&lt;/td&gt;&lt;td&gt;Agent:&lt;br /&gt;1. Search policy = done&lt;br /&gt;2. Search cases = done&lt;br /&gt;3. Analyze evidence = running&lt;br /&gt;4. Draft finding = pending&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;p&gt;三者是包含关系：一个 Business Workflow State 之下有一个 Agent Task State，一个 Agent Task State 之下有一个 Working Plan，层次不同，权威源也不同。&lt;/p&gt;
&lt;p&gt;分清楚之后，两个经常被混淆的判断就很清楚了：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Business Workflow State&lt;/strong&gt; 只能由 Workflow Runtime 依据 BPMN 转移，任何第三方，包括 Agent，都不能直接改写；&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Agent Working Plan&lt;/strong&gt; 由 Agent Runtime 自己维护，它是否持久化、持久化到什么粒度、保留多久，由 Agent Runtime 决定，它不进流程引擎，也不参与审批与责任归属。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;因此，不要把 Agent 的 Working Plan 提升为企业业务流程的 source of truth。反过来，如果一个平台需要回答整体业务卡在哪一步，它应该去查 Workflow Runtime，而不是解析某个 Agent 的 plan。这两件事被混起来，是 Agent 接管流程这类方案在落地时最常见的失控方式。&lt;/p&gt;
&lt;h2&gt;55. 不会被模型迭代绑死&lt;/h2&gt;
&lt;p&gt;比如未来可能经历以下模型更替：Claude → GPT → Gemini → DeepSeek → Qwen。
BPMN 完全不用变。Agent Runtime 可以通过一层 model abstraction 来变化：Agent Runtime → model abstraction。
甚至 Runtime 选型本身也会换代：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;2026: → LangGraph&lt;/li&gt;
&lt;li&gt;2027: → Microsoft Agent Framework&lt;/li&gt;
&lt;li&gt;2028: → internal runtime&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;业务流程仍然停留在：BPMN v7
金融企业在选型时通常会看重这一点。&lt;/p&gt;
&lt;h2&gt;56. 最终定义&lt;/h2&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;BPMN 是企业业务流程的“可执行约束合同”——它约束流程怎么走，但不包含全部业务语义；DMN 是业务规则合同；Authorization / IAM 决定主体资格；Agent Policy 决定 Agent 的能力边界；Workflow Runtime 负责状态与生命周期；Agent 是完成复杂任务的智能执行者。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;任何 Agent 驱动的业务动作，在产生业务状态变化或外部副作用之前，都必须经过确定性的 schema / business validation 与 authorization；是否需要 Human Approval，由 BPMN 与 Policy 按风险等级决定。&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;“可执行约束合同”这个限定不能丢。企业里用来描述业务的东西不止一件：Ontology 描述业务对象与关系，Business Data Model 描述数据的结构与版本，DMN 描述条件判断，Policy 描述许可，而 BPMN 只描述流程走向与责任。把 BPMN 当成包含全部业务逻辑的地方，是传统流程平台常见的过度承诺，它会把越来越多的判断塞进网关和条件分支，最后没有人敢改流程，也没有人说得清某条规则的来源。&lt;/p&gt;
&lt;p&gt;换句话说，Workflow Engine 的长期价值不是流程图，而是对执行状态、等待、权限边界、事务副作用和恢复能力拥有执行权。流程图只是执行权的静态投影，Runtime 才是执行权本身。对金融而言，结论可以再收敛一句：金融不是拒绝 Dynamic Workflow，而是把 Dynamic Workflow 限制在 Deterministic Business Process 的边界之内。&lt;/p&gt;
&lt;p&gt;执行路径形态即第 25 节主图的收束：Business Architect → BPMN / DMN → Workflow Runtime → Human / System / Agent Task → Agent Runtime → Structured Result → Policy / Validation → Human Approval / Auto Execute → BPMN State。&lt;/p&gt;
&lt;p&gt;这套架构比彻底 Agent 化 Workflow 更适合金融，也比给 BPMN 加一个 LLM Node 更实用。它的处理方式不是推翻传统 Workflow，而是把边界划清楚：业务流程仍然确定，复杂任务开始智能化，业务状态仍然由确定性 Runtime 控制。这也是真正落地时应该坚持的主线。&lt;/p&gt;
&lt;h3&gt;最后再说一次核心命题&lt;/h3&gt;
&lt;p&gt;如果这篇文章只能留下一句话：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;金融服务不应该在 BPMN 和 Agent 之间二选一。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;BPMN/DMN 负责确定性的业务流程、业务规则和责任边界；Agent 负责流程内部那些难以规则化的认知任务；Workflow Runtime 负责业务状态和生命周期；Policy/IAM 负责 Agent 的权限；Agent 的输出必须以受约束的 Task Contract 返回，并经过确定性验证、以及按风险需要的人工批准，才能产生业务副作用。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;这个判断与当前几个比较成熟的方向是一致的：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Camunda 官方已经把 agentic orchestration 定义成 deterministic + dynamic 并存，AI agent 负责流程中非确定性的部分；&lt;/li&gt;
&lt;li&gt;AWS 的 Step Functions 可以直接调用 AgentCore Harness，把 Agent 当成 Workflow 中的一等步骤；(&lt;a href=&quot;https://aws.amazon.com/about-aws/whats-new/2026/06/aws-step-functions-agentcore/&quot;&gt;Amazon Web Services, Inc.&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Camunda 8.10 把 Agent 建模为流程里的一等执行对象，并能把已部署流程经由 Processes MCP Server 暴露给 Agent 调用；(&lt;a href=&quot;https://docs.camunda.io/docs/next/components/agentic-orchestration/agent-definitions-and-instances/&quot;&gt;Camunda 8 Docs&lt;/a&gt;)(&lt;a href=&quot;https://docs.camunda.io/docs/next/components/agentic-orchestration/expose-process-as-mcp-tool&quot;&gt;Camunda 8 Docs&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Microsoft 的 Workflow 是 graph + executors + edges + state + runtime，同时提供 Durable Extension，而不是取消 workflow；&lt;/li&gt;
&lt;li&gt;Temporal 把 Agent Loop 放进 durable workflow，并把 nondeterministic I/O 全部收进 Activity；&lt;/li&gt;
&lt;li&gt;OpenAI 把 Agent Harness / Runtime 单独产品化，恰恰反证了 Agent Runtime 与 Business Workflow Runtime 必须分开；&lt;/li&gt;
&lt;li&gt;Palantir 把企业语义与动作层独立出来，Snowflake 把 data-native agent runtime 独立出来，指向的是同一件事。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;它比“彻底 Agent 化 Workflow”更适合金融，也比“给 BPMN 加一个 LLM Node”更实用。&lt;/p&gt;
&lt;h2&gt;57. 延伸阅读&lt;/h2&gt;
&lt;p&gt;学术和架构方面，可以参考：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Agent Workflow Survey (&lt;a href=&quot;https://arxiv.org/abs/2508.01186&quot;&gt;arXiv&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Architectural Implications of Agentic AI Workflows (&lt;a href=&quot;https://arxiv.org/abs/2608.04458&quot;&gt;arXiv&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Production-grade Agentic AI Workflows (&lt;a href=&quot;https://arxiv.org/abs/2512.08769&quot;&gt;arXiv&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Microsoft Agent Workflow Optimization / Meta-tools (&lt;a href=&quot;https://www.microsoft.com/en-us/research/publication/optimizing-agentic-workflows-using-meta-tools/&quot;&gt;Microsoft&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Agentic AI in Finance Survey (&lt;a href=&quot;https://arxiv.org/abs/2604.21672&quot;&gt;arXiv&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;AI Agents in Financial Markets (&lt;a href=&quot;https://arxiv.org/abs/2603.13942&quot;&gt;arXiv&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Governing Agentic AI in FinTech (&lt;a href=&quot;https://arxiv.org/abs/2608.11344&quot;&gt;arXiv&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;厂商架构方面，可以参考：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Anthropic Multi-Agent Research (&lt;a href=&quot;https://www.anthropic.com/engineering/multi-agent-research-system&quot;&gt;Anthropic&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;OpenAI Agents SDK / Responses API (&lt;a href=&quot;https://openai.com/index/new-tools-for-building-agents/&quot;&gt;OpenAI&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;OpenAI Agents SDK 2026 Harness/Sandbox (&lt;a href=&quot;https://openai.com/index/the-next-evolution-of-the-agents-sdk/&quot;&gt;OpenAI&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Microsoft Agent Framework Workflows (&lt;a href=&quot;https://learn.microsoft.com/en-us/agent-framework/concepts/workflows/&quot;&gt;Microsoft Learn&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Microsoft Durable Agents (&lt;a href=&quot;https://learn.microsoft.com/en-us/agent-framework/integrations/durable-extension&quot;&gt;Microsoft Learn&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Google Agentic Enterprise (&lt;a href=&quot;https://cloud.google.com/blog/products/ai-machine-learning/the-new-gemini-enterprise-one-platform-for-agent-development&quot;&gt;Google Cloud&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Snowflake Cortex Agents (&lt;a href=&quot;https://docs.snowflake.com/en/user-guide/snowflake-cortex/cortex-agents&quot;&gt;Snowflake Documentation&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Palantir Ontology Architecture (&lt;a href=&quot;https://www.palantir.com/docs/foundry/architecture-center/ontology-system&quot;&gt;Palantir&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Palantir Ontology MCP (&lt;a href=&quot;https://www.palantir.com/docs/foundry/announcements/2026-06&quot;&gt;Palantir&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Camunda Agentic Orchestration (&lt;a href=&quot;https://docs.camunda.io/docs/8.7/components/agentic-orchestration/&quot;&gt;Camunda 8 Docs&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;OpenAI Agents API (&lt;a href=&quot;https://openai.com/index/introducing-the-agents-api/&quot;&gt;OpenAI&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;金融服务方面，可以参考：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Stripe production compliance agents (&lt;a href=&quot;https://aws.amazon.com/blogs/machine-learning/production-grade-ai-agents-for-financial-compliance-lessons-from-stripe/&quot;&gt;Amazon Web Services, Inc.&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;AWS Financial Services AgentCore (&lt;a href=&quot;https://aws.amazon.com/blogs/industries/ai-credit-analytics-across-amazon-s3-and-snowflake-with-amazon-bedrock-agentcore/&quot;&gt;Amazon Web Services, Inc.&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Snowflake Agentic AI in Financial Services (&lt;a href=&quot;https://www.snowflake.com/en/blog/agentic-orchestration-financial-services/&quot;&gt;Snowflake&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Bank of England 2026 Financial Stability Report (&lt;a href=&quot;https://www.bankofengland.co.uk/financial-stability-report/2026/july-2026&quot;&gt;Bank of England&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;FSB AI governance practices (&lt;a href=&quot;https://www.fsb.org/2026/06/sound-practices-for-responsible-adoption-of-artificial-intelligence-ai-consultation-report/&quot;&gt;Financial Stability Board&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;FINMA AI survey (&lt;a href=&quot;https://www.finma.ch/en/news/2025/04/20250424-mm-umfrage-ki/&quot;&gt;finma.ch&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;其中 FSB 的 2026 AI governance consultation、BoE 的 Financial Stability Report、Palantir Ontology、Snowflake Cortex Agents、Microsoft Durable Agent Framework、Anthropic Harness 这几条线放在一起看，基本就能构成一套比较完整的 2026 金融 Agent 平台参考架构。&lt;/p&gt;</content:encoded></item><item><title>流畅阅读（FluentRead）的文档翻译是怎么实现的</title><link>https://devweekly.github.io/posts/%E6%B5%81%E7%95%85%E9%98%85%E8%AF%BBfluentread%E7%9A%84%E6%96%87%E6%A1%A3%E7%BF%BB%E8%AF%91%E6%98%AF%E6%80%8E%E4%B9%88%E5%AE%9E%E7%8E%B0%E7%9A%84/</link><guid isPermaLink="true">https://devweekly.github.io/posts/%E6%B5%81%E7%95%85%E9%98%85%E8%AF%BBfluentread%E7%9A%84%E6%96%87%E6%A1%A3%E7%BF%BB%E8%AF%91%E6%98%AF%E6%80%8E%E4%B9%88%E5%AE%9E%E7%8E%B0%E7%9A%84/</guid><description>流畅阅读如何把 11 种格式拆成「结构」与「片段」两条流，翻译后无损拼回；以及 PDF 无法替换文字、只能光栅化重绘时的取色、擦除与字号自适应</description><pubDate>Tue, 08 Sep 2026 08:00:00 GMT</pubDate><content:encoded>&lt;p&gt;翻译一段话很容易，翻译一份 PDF 很难。&lt;/p&gt;
&lt;p&gt;难不在调模型，而在&lt;strong&gt;翻完之后文件还是不是那个文件&lt;/strong&gt;：Markdown 的标题层级还在不在，字幕的时间轴对不对得上，Word 的页眉页脚有没有被当成正文一起翻掉，PDF 的译文能不能落在原文那个位置上。&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/FluentRead/FluentRead&quot;&gt;流畅阅读（FluentRead）&lt;/a&gt; 是个浏览器翻译扩展，它的文档翻译模块用大约 102KB、7 个文件，覆盖了 13 种扩展名、11 种格式。读完这一块代码，最值得记下来的不是它支持了多少格式，而是它把这件事收敛成了一个极其干净的模型。&lt;/p&gt;
&lt;h2&gt;1. 这个模块长什么样&lt;/h2&gt;
&lt;p&gt;FluentRead 是按功能切片的，&lt;code&gt;src/features/&lt;/code&gt; 下面有 19 个 feature：划词翻译、全文翻译、图片翻译、视频字幕、术语表、写作助手…… &lt;code&gt;document-translation&lt;/code&gt; 是其中之一 &lt;a href=&quot;https://github.com/FluentRead/FluentRead/tree/main/src/features/document-translation&quot;&gt;2&lt;/a&gt;。&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;文件&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;core&lt;/td&gt;&lt;td&gt;&lt;code&gt;document.ts&lt;/code&gt; (28KB)&lt;/td&gt;&lt;td&gt;纯领域模型、文本格式解析、无损回填&lt;/td&gt;&lt;td&gt;不读 File、不碰二进制、不发请求&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;core&lt;/td&gt;&lt;td&gt;&lt;code&gt;preview.ts&lt;/code&gt; (11KB)&lt;/td&gt;&lt;td&gt;生成安全的预览 HTML&lt;/td&gt;&lt;td&gt;不操作真实 DOM&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;services&lt;/td&gt;&lt;td&gt;&lt;code&gt;binary.ts&lt;/code&gt; (32KB)&lt;/td&gt;&lt;td&gt;PDF/ePub/DOCX 解析与导出&lt;/td&gt;&lt;td&gt;不调翻译服务&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;services&lt;/td&gt;&lt;td&gt;&lt;code&gt;translation.ts&lt;/code&gt; (10KB)&lt;/td&gt;&lt;td&gt;批量翻译编排&lt;/td&gt;&lt;td&gt;不解析文件、不绑 provider&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;ui&lt;/td&gt;&lt;td&gt;&lt;code&gt;pdfPreview.ts&lt;/code&gt; (14KB)&lt;/td&gt;&lt;td&gt;Canvas 光栅化&lt;/td&gt;&lt;td&gt;不决定片段与文件结构&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;ui&lt;/td&gt;&lt;td&gt;&lt;a href=&quot;https://github.com/FluentRead/FluentRead/blob/main/src/features/document-translation/ui/presentation.ts&quot;&gt;&lt;code&gt;presentation.ts&lt;/code&gt;&lt;/a&gt; (5.5KB)&lt;/td&gt;&lt;td&gt;纯展示派生规则&lt;/td&gt;&lt;td&gt;不建 DOM、不解析&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;—&lt;/td&gt;&lt;td&gt;&lt;code&gt;public.ts&lt;/code&gt; (1.3KB)&lt;/td&gt;&lt;td&gt;汇总公共 API&lt;/td&gt;&lt;td&gt;不暴露内部私有函数&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;p&gt;值得注意的是 &lt;code&gt;public.ts&lt;/code&gt; 的注释写得很直白：调用方&lt;strong&gt;应当通过公共契约注入翻译器和 PDF rasterizer&lt;/strong&gt;，不要绕过 services 层直接耦合 JSZip、pdf-lib 或 pdfjs。这种”防君子也防小人”的边界声明，在一个只有 7 个文件的模块里算得上克制。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;提醒一句：如果你之前 clone 过 FluentRead，注意本地那份可能是 fork（&lt;code&gt;dalian-ai/FluentRead&lt;/code&gt;）的旧版 0.0.28 &lt;a href=&quot;https://github.com/dalian-ai/FluentRead&quot;&gt;17&lt;/a&gt;，那时还没有 &lt;code&gt;src/&lt;/code&gt; 目录（是 WXT 的 &lt;code&gt;entrypoints/&lt;/code&gt; 结构 &lt;a href=&quot;https://wxt.dev&quot;&gt;15&lt;/a&gt;），跟上游 main 已经不是一个代码库了。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;2. 转轴：两条流，而不是一个数组&lt;/h2&gt;
&lt;p&gt;整个设计的支点，是 &lt;a href=&quot;https://github.com/FluentRead/FluentRead/blob/main/src/features/document-translation/core/document.ts&quot;&gt;&lt;code&gt;core/document.ts&lt;/code&gt;&lt;/a&gt; 里的 &lt;code&gt;ParsedDocument&lt;/code&gt;：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&lt;span&gt;&lt;span&gt;export&lt;/span&gt;&lt;span&gt; interface&lt;/span&gt;&lt;span&gt; ParsedDocument&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  parts&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;span&gt; readonly&lt;/span&gt;&lt;span&gt; DocumentPart&lt;/span&gt;&lt;span&gt;[]; &lt;/span&gt;&lt;span&gt;// 原文骨架&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  segments&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;span&gt; readonly&lt;/span&gt;&lt;span&gt; DocumentSegment&lt;/span&gt;&lt;span&gt;[]; &lt;/span&gt;&lt;span&gt;// 待翻译片段&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  // ...&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;type&lt;/span&gt;&lt;span&gt; DocumentPart&lt;/span&gt;&lt;span&gt; =&lt;/span&gt;&lt;span&gt; LiteralPart&lt;/span&gt;&lt;span&gt; |&lt;/span&gt;&lt;span&gt; SegmentPart&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;interface&lt;/span&gt;&lt;span&gt; LiteralPart&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  kind&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;span&gt; &quot;literal&quot;&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  value&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;span&gt; string&lt;/span&gt;&lt;span&gt;; &lt;/span&gt;&lt;span&gt;// 原样输出&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;interface&lt;/span&gt;&lt;span&gt; SegmentPart&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  kind&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;span&gt; &quot;segment&quot;&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  segmentIndex&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;span&gt; number&lt;/span&gt;&lt;span&gt;; &lt;/span&gt;&lt;span&gt;// 指向 segments[]&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  source&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;span&gt; string&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  prefix&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;span&gt; string&lt;/span&gt;&lt;span&gt;; &lt;/span&gt;&lt;span&gt;// 前导空白&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  suffix&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;span&gt; string&lt;/span&gt;&lt;span&gt;; &lt;/span&gt;&lt;span&gt;// 尾随空白&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;code&gt;parts&lt;/code&gt; 是原文的完整骨架，按出现顺序排列；&lt;code&gt;literal&lt;/code&gt; 承载一切&lt;strong&gt;不该翻译&lt;/strong&gt;的东西——HTML 标签、字幕时间戳、ASS 的 &lt;code&gt;Dialogue:&lt;/code&gt; 前缀、Markdown 围栏里的代码、行尾的换行符。&lt;code&gt;segment&lt;/code&gt; 只是一个占位符，真正的文本在 &lt;code&gt;segments[]&lt;/code&gt; 里。&lt;/p&gt;
&lt;p&gt;回填时遍历 &lt;code&gt;parts&lt;/code&gt;：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&lt;span&gt;&lt;span&gt;if&lt;/span&gt;&lt;span&gt; (part.kind &lt;/span&gt;&lt;span&gt;===&lt;/span&gt;&lt;span&gt; &quot;literal&quot;&lt;/span&gt;&lt;span&gt;) {&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  output.&lt;/span&gt;&lt;span&gt;push&lt;/span&gt;&lt;span&gt;(part.value);&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  continue&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;const&lt;/span&gt;&lt;span&gt; translation&lt;/span&gt;&lt;span&gt; =&lt;/span&gt;&lt;span&gt; translations[part.segmentIndex] &lt;/span&gt;&lt;span&gt;??&lt;/span&gt;&lt;span&gt; part.source;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;就这么简单。&lt;strong&gt;“保留原格式”不是一个需要为每种格式单独实现的功能，而是这个数据结构的自然结果。&lt;/strong&gt; 格式之间的差异，被压缩成了”怎么切”这一件事。&lt;/p&gt;
&lt;p&gt;翻译结果按 &lt;code&gt;segmentIndex&lt;/code&gt; 落位，所以整条链路对”翻译服务”是无知的——它只看到一个 &lt;code&gt;string[]&lt;/code&gt;。&lt;/p&gt;
&lt;h2&gt;3. 切分：11 种格式，各自的讲究&lt;/h2&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;TXT&lt;/td&gt;&lt;td&gt;按行&lt;/td&gt;&lt;td&gt;—&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Markdown&lt;/td&gt;&lt;td&gt;按行，但代码围栏整体跳过；行内代码、图片、链接、裸 URL 保护为 literal&lt;/td&gt;&lt;td&gt;让受保护的语法&lt;strong&gt;保持原位&lt;/strong&gt;不被拆散&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;HTML&lt;/td&gt;&lt;td&gt;手写 tokenizer，标签整体保护&lt;/td&gt;&lt;td&gt;见下&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;SRT / VTT&lt;/td&gt;&lt;td&gt;&lt;strong&gt;整条 cue 作为一个翻译单元&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;时间戳不送去翻译，模型才能保留 &lt;code&gt;&amp;lt;i&amp;gt;&lt;/code&gt; 这类行内标签&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;ASS&lt;/td&gt;&lt;td&gt;数到第 9 个逗号才是对白正文&lt;/td&gt;&lt;td&gt;ASS 的 Dialogue 行是逗号分隔的定长字段&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;LRC&lt;/td&gt;&lt;td&gt;时间标签存为 &lt;code&gt;bilingualPrefix&lt;/code&gt;&lt;/td&gt;&lt;td&gt;双语模式下第二行重复时间轴，产物&lt;strong&gt;仍是可播放的 LRC&lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;JSON&lt;/td&gt;&lt;td&gt;递归只取字符串叶节点，记下 JSON path&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;&lt;strong&gt;HTML 的 tokenizer 是手写的。&lt;/strong&gt; 没用 &lt;code&gt;DOMParser&lt;/code&gt;，因为这里要的是”字符串级切分”而不是 DOM 树。&lt;code&gt;findNextHtmlToken()&lt;/code&gt; 里有个细节：扫描标签时会跟踪引号状态，&lt;code&gt;href=&quot;a &amp;gt; b&quot;&lt;/code&gt; 里的 &lt;code&gt;&amp;gt;&lt;/code&gt; 不会被误判成标签结束。&lt;code&gt;head/script/style/pre/code/textarea&lt;/code&gt; 六个标签被整体保护——翻译 &lt;code&gt;&amp;lt;script&amp;gt;&lt;/code&gt; 里的内容显然是灾难。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Markdown 有个 &lt;code&gt;bilingualGroup&lt;/code&gt;。&lt;/strong&gt; 一行文字里如果夹了行内代码或链接，切分后会变成多个 part。双语模式下如果各自插入译文，一行引用会被拆得七零八落。所以给每个 part 打上行号 &lt;code&gt;bilingualGroup&lt;/code&gt;，渲染时按源行重新聚合，输出一条完整的双语行。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;JSON 走的是完全不同的路径。&lt;/strong&gt; 它不产生 &lt;code&gt;parts&lt;/code&gt;，而是产生 &lt;code&gt;jsonEntries&lt;/code&gt;（path + segmentIndex），回填时在&lt;strong&gt;深拷贝&lt;/strong&gt;上 &lt;code&gt;setAtPath&lt;/code&gt;，原始对象始终不变。双语模式下塞进同一个字符串：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&lt;span&gt;&lt;span&gt;`${&lt;/span&gt;&lt;span&gt;entry&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;prefix&lt;/span&gt;&lt;span&gt;}${&lt;/span&gt;&lt;span&gt;original&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;trim&lt;/span&gt;&lt;span&gt;()&lt;/span&gt;&lt;span&gt;}&lt;/span&gt;&lt;span&gt;\n&lt;/span&gt;&lt;span&gt;${&lt;/span&gt;&lt;span&gt;translation&lt;/span&gt;&lt;span&gt;}${&lt;/span&gt;&lt;span&gt;entry&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;suffix&lt;/span&gt;&lt;span&gt;}`&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;字幕的”整条 cue 作为单元”是个有取舍的决定。&lt;/strong&gt; 好处是模型能看到完整上下文、能保留行内标签；代价是一段长对白无法再切细，会占满一批的字符预算。&lt;/p&gt;
&lt;h2&gt;4. 二进制三件套&lt;/h2&gt;
&lt;p&gt;PDF、ePub、DOCX 交给 &lt;a href=&quot;https://github.com/FluentRead/FluentRead/blob/main/src/features/document-translation/services/binary.ts&quot;&gt;&lt;code&gt;services/binary.ts&lt;/code&gt;&lt;/a&gt;，产出统一塞进 &lt;code&gt;ParsedDocument.binary&lt;/code&gt;（一个可辨识联合）。&lt;/p&gt;
&lt;h3&gt;4.1 PDF：从字符原子重建段落&lt;/h3&gt;
&lt;p&gt;pdf.js &lt;a href=&quot;https://github.com/mozilla/pdf.js&quot;&gt;12&lt;/a&gt; 的 &lt;code&gt;getTextContent()&lt;/code&gt; 给出的是一堆&lt;strong&gt;字符原子&lt;/strong&gt;（每个字或片段带自己的坐标变换矩阵），不是文本行。FluentRead 用三级几何聚类把它还原成段落：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;atom → line&lt;/strong&gt;：按 y 坐标排序，同行的判定是 &lt;code&gt;|Δy| ≤ max(2, 行高×0.42, 原子高×0.42)&lt;/code&gt;。同时丢掉旋转角 &amp;gt; 0.12 弧度的文本（竖排/斜排直接放弃）。合成行时还会按间距补空格——但如果前一个原子以连字符结尾、下一个以小写字母开头，就&lt;strong&gt;不补空格直接拼接&lt;/strong&gt;，处理英文换行断词：&lt;/li&gt;
&lt;/ol&gt;
&lt;pre&gt;&lt;code&gt;&lt;span&gt;&lt;span&gt;if&lt;/span&gt;&lt;span&gt; (&lt;/span&gt;&lt;span&gt;/&lt;/span&gt;&lt;span&gt;[-‐‑]&lt;/span&gt;&lt;span&gt;$&lt;/span&gt;&lt;span&gt;/&lt;/span&gt;&lt;span&gt;u&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;test&lt;/span&gt;&lt;span&gt;(value) &lt;/span&gt;&lt;span&gt;&amp;amp;&amp;amp;&lt;/span&gt;&lt;span&gt; /&lt;/span&gt;&lt;span&gt;^&lt;/span&gt;&lt;span&gt;[a-z]&lt;/span&gt;&lt;span&gt;/&lt;/span&gt;&lt;span&gt;u&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;test&lt;/span&gt;&lt;span&gt;(line.text))&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  return&lt;/span&gt;&lt;span&gt; `${&lt;/span&gt;&lt;span&gt;value&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;slice&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;0&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;-&lt;/span&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt;}${&lt;/span&gt;&lt;span&gt;line&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;text&lt;/span&gt;&lt;span&gt;}`&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;line → block&lt;/strong&gt;：这是最费笔墨的一段。判定两块是否属于同一段落，综合了间距、水平重叠率、左边缘对齐、字号比、以及”上一行以句号结尾且当前行明显缩进”（新段落）。标题行（高度 ≥ 正文行高中位数 × 1.32）不参与合并。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;每个 block 记下 x/y/宽/高/字号/行高中位数/行数/字体/字重/对齐方式——&lt;strong&gt;这套坐标就是后面重绘 PDF 的唯一依据&lt;/strong&gt;。&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h3&gt;4.2 ePub：zip + OPF spine&lt;/h3&gt;
&lt;p&gt;JSZip &lt;a href=&quot;https://stuk.github.io/jszip/&quot;&gt;14&lt;/a&gt; 打开 → 校验 &lt;code&gt;mimetype&lt;/code&gt; 必须是 &lt;code&gt;application/epub+zip&lt;/code&gt; → 读 &lt;code&gt;META-INF/container.xml&lt;/code&gt; 拿 OPF 路径 → 解析 OPF 的 manifest（id → path）与 spine（itemref 顺序）→ 按 spine 顺序逐章读取，每章当作 HTML 丢给 &lt;code&gt;parseDocument()&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;有 fallback：如果 spine 里找不到 XHTML，就按 manifest 顺序兜底。章节标题从 &lt;code&gt;&amp;lt;title&amp;gt;&lt;/code&gt; 里取，取不到用”第 N 章”。&lt;/p&gt;
&lt;h3&gt;4.3 DOCX：按 &lt;code&gt;&amp;lt;w:p&amp;gt;&lt;/code&gt; 切段&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;&lt;span&gt;&lt;span&gt;const&lt;/span&gt;&lt;span&gt; DOCX_PARAGRAPH_PATTERN&lt;/span&gt;&lt;span&gt; =&lt;/span&gt;&lt;span&gt; /&amp;lt;w:p&lt;/span&gt;&lt;span&gt;\b&lt;/span&gt;&lt;span&gt;[&lt;/span&gt;&lt;span&gt;^&lt;/span&gt;&lt;span&gt;&amp;gt;]&lt;/span&gt;&lt;span&gt;*&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;span&gt;[\s\S]&lt;/span&gt;&lt;span&gt;*?&lt;/span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;\/&lt;/span&gt;&lt;span&gt;w:p&amp;gt;/&lt;/span&gt;&lt;span&gt;gu&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;扫描 &lt;code&gt;word/(document|header\d+|footer\d+|footnotes|endnotes).xml&lt;/code&gt;，按段落切。每段还会识别&lt;strong&gt;角色&lt;/strong&gt;：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&lt;span&gt;&lt;span&gt;if&lt;/span&gt;&lt;span&gt; (&lt;/span&gt;&lt;span&gt;/header/&lt;/span&gt;&lt;span&gt;iu&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;test&lt;/span&gt;&lt;span&gt;(path)) &lt;/span&gt;&lt;span&gt;return&lt;/span&gt;&lt;span&gt; &quot;header&quot;&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;if&lt;/span&gt;&lt;span&gt; (&lt;/span&gt;&lt;span&gt;/(?:footnotes&lt;/span&gt;&lt;span&gt;|&lt;/span&gt;&lt;span&gt;endnotes)/&lt;/span&gt;&lt;span&gt;iu&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;test&lt;/span&gt;&lt;span&gt;(path)) &lt;/span&gt;&lt;span&gt;return&lt;/span&gt;&lt;span&gt; &quot;note&quot;&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;const&lt;/span&gt;&lt;span&gt; style&lt;/span&gt;&lt;span&gt; =&lt;/span&gt;&lt;span&gt; paragraph.&lt;/span&gt;&lt;span&gt;match&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;/&amp;lt;w:pStyle&lt;/span&gt;&lt;span&gt;\b&lt;/span&gt;&lt;span&gt;[&lt;/span&gt;&lt;span&gt;^&lt;/span&gt;&lt;span&gt;&amp;gt;]&lt;/span&gt;&lt;span&gt;*\b&lt;/span&gt;&lt;span&gt;w:val=&quot;(&lt;/span&gt;&lt;span&gt;[&lt;/span&gt;&lt;span&gt;^&lt;/span&gt;&lt;span&gt;&quot;]&lt;/span&gt;&lt;span&gt;+&lt;/span&gt;&lt;span&gt;)&quot;/&lt;/span&gt;&lt;span&gt;iu&lt;/span&gt;&lt;span&gt;)?.[&lt;/span&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;] &lt;/span&gt;&lt;span&gt;||&lt;/span&gt;&lt;span&gt; &quot;&quot;&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;if&lt;/span&gt;&lt;span&gt; (&lt;/span&gt;&lt;span&gt;/title/&lt;/span&gt;&lt;span&gt;iu&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;test&lt;/span&gt;&lt;span&gt;(style)) &lt;/span&gt;&lt;span&gt;return&lt;/span&gt;&lt;span&gt; &quot;title&quot;&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;if&lt;/span&gt;&lt;span&gt; (&lt;/span&gt;&lt;span&gt;/heading&lt;/span&gt;&lt;span&gt;|&lt;/span&gt;&lt;span&gt;标题/&lt;/span&gt;&lt;span&gt;iu&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;test&lt;/span&gt;&lt;span&gt;(style)) &lt;/span&gt;&lt;span&gt;return&lt;/span&gt;&lt;span&gt; &quot;heading&quot;&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;if&lt;/span&gt;&lt;span&gt; (&lt;/span&gt;&lt;span&gt;/&amp;lt;w:numPr&lt;/span&gt;&lt;span&gt;\b&lt;/span&gt;&lt;span&gt;/&lt;/span&gt;&lt;span&gt;iu&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;test&lt;/span&gt;&lt;span&gt;(paragraph)) &lt;/span&gt;&lt;span&gt;return&lt;/span&gt;&lt;span&gt; &quot;list-item&quot;&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;return&lt;/span&gt;&lt;span&gt; &quot;paragraph&quot;&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;页眉页脚、脚注尾注被单独分区，UI 上可以分开校对——这是很多翻译工具会偷懒的地方（直接把页眉当正文翻一遍）。&lt;/p&gt;
&lt;h2&gt;5. PDF 是最难的那个：不是替换文字，是重画一页&lt;/h2&gt;
&lt;p&gt;文本类格式可以”把译文塞回原位”，PDF 不行——它里面通常没有可以按 offset 替换的文本对象。FluentRead 的解法很硬：&lt;strong&gt;把整页光栅化，擦掉原文，按原坐标重新画一遍译文&lt;/strong&gt;（实现见 &lt;a href=&quot;https://github.com/FluentRead/FluentRead/blob/main/src/features/document-translation/ui/pdfPreview.ts&quot;&gt;&lt;code&gt;ui/pdfPreview.ts&lt;/code&gt;&lt;/a&gt;）。&lt;/p&gt;
&lt;p&gt;四步：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;① 光栅化原页。&lt;/strong&gt; 用 pdf.js 渲染到 canvas，缩放取 &lt;code&gt;clamp(1.45, 1440/页宽, 2.4)&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;② 采样取色。&lt;/strong&gt; 这一步是全篇最有意思的地方。要在别人的版式上写字，得先知道背景是什么色、原文是什么色：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;背景色&lt;/strong&gt;：沿文字块的四条边各采样 8×2 个点，取&lt;strong&gt;中位数&lt;/strong&gt;。用中位数而不是均值，是为了让边缘偶尔压到的插图/分隔线不至于带偏结果&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;前景色&lt;/strong&gt;：在块内按步长采样（总样本控制在 ~3200 个），挑出与背景色欧氏距离 ≥ 48 的像素，按距离排序取&lt;strong&gt;最强的 22%&lt;/strong&gt;，再取中位数&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这套”中位数 + 距离阈值 + 取最强分位”的组合，效果就是自动还原原文墨色——深色背景的 PDF 也不会糊成一团黑。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;③ 擦除原文块。&lt;/strong&gt; 用背景色 &lt;code&gt;fillRect&lt;/code&gt; 把文字块盖掉（外扩一点 padding）。注释里写明了为什么要&lt;strong&gt;先擦完所有块再统一绘制&lt;/strong&gt;：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&lt;span&gt;&lt;span&gt;// 步骤 2：先统一擦除全部原文字块，避免重叠块把已绘制的译文再次遮住。&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;④ 按坐标写译文。&lt;/strong&gt; &lt;code&gt;clip()&lt;/code&gt; 裁到原块矩形内再 &lt;code&gt;fillText&lt;/code&gt;，这样多栏排版、图文混排都不会串位。字号自适应是个收缩循环：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&lt;span&gt;&lt;span&gt;while&lt;/span&gt;&lt;span&gt; (fontSize &lt;/span&gt;&lt;span&gt;&amp;gt;=&lt;/span&gt;&lt;span&gt; 3.5&lt;/span&gt;&lt;span&gt;) {&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  context.font &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; `${&lt;/span&gt;&lt;span&gt;block&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;fontWeight&lt;/span&gt;&lt;span&gt;} ${&lt;/span&gt;&lt;span&gt;fontSize&lt;/span&gt;&lt;span&gt;}px ${&lt;/span&gt;&lt;span&gt;family&lt;/span&gt;&lt;span&gt;}`&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  lines &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; wrapCanvasText&lt;/span&gt;&lt;span&gt;(context, translation, maxWidth);&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  if&lt;/span&gt;&lt;span&gt; (lines.&lt;/span&gt;&lt;span&gt;length&lt;/span&gt;&lt;span&gt; *&lt;/span&gt;&lt;span&gt; lineHeight &lt;/span&gt;&lt;span&gt;&amp;lt;=&lt;/span&gt;&lt;span&gt; maxHeight &lt;/span&gt;&lt;span&gt;*&lt;/span&gt;&lt;span&gt; 1.02&lt;/span&gt;&lt;span&gt;) &lt;/span&gt;&lt;span&gt;break&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  fontSize &lt;/span&gt;&lt;span&gt;-=&lt;/span&gt;&lt;span&gt; Math.&lt;/span&gt;&lt;span&gt;max&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;0.35&lt;/span&gt;&lt;span&gt;, fontSize &lt;/span&gt;&lt;span&gt;*&lt;/span&gt;&lt;span&gt; 0.045&lt;/span&gt;&lt;span&gt;); &lt;/span&gt;&lt;span&gt;// 每次缩 4.5%&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;中文字体按原块 &lt;code&gt;fontFamily&lt;/code&gt; 里有没有 &lt;code&gt;serif&lt;/code&gt; 切两套（Noto Serif CJK SC / Noto Sans CJK SC）。&lt;/p&gt;
&lt;p&gt;最后是导出：pdf-lib &lt;a href=&quot;https://github.com/Hopding/pdf-lib&quot;&gt;13&lt;/a&gt; 新建 PDF，双语模式下一页放两幅图——左边 &lt;code&gt;embedPage&lt;/code&gt; 原页、右边 &lt;code&gt;embedPng&lt;/code&gt; 译页，中间留 &lt;code&gt;clamp(8, 页宽×2.5%, 24)&lt;/code&gt; 的间隙。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;代价要说清楚&lt;/strong&gt;：产出的 PDF 是&lt;strong&gt;位图&lt;/strong&gt;，文字不可选中、不可搜索、放大到一定程度会糊。这是”PDF 里没有可编辑文本”这个前提决定的，不是实现偷懒。另外扫描版 PDF（无文本层）会直接报错，明确&lt;strong&gt;不做 OCR&lt;/strong&gt;。&lt;/p&gt;
&lt;h2&gt;6. 翻译编排：只认接口，不认服务商&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/FluentRead/FluentRead/blob/main/src/features/document-translation/services/translation.ts&quot;&gt;&lt;code&gt;services/translation.ts&lt;/code&gt;&lt;/a&gt; 定义了 &lt;code&gt;DocumentTranslationGateway&lt;/code&gt;：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&lt;span&gt;&lt;span&gt;export&lt;/span&gt;&lt;span&gt; interface&lt;/span&gt;&lt;span&gt; DocumentTranslationGateway&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    getGlossaryOptions&lt;/span&gt;&lt;span&gt;?&lt;/span&gt;&lt;span&gt;()&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;span&gt;...&lt;/span&gt;&lt;span&gt;};&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    waitUntilReady&lt;/span&gt;&lt;span&gt;()&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;span&gt; PromiseLike&lt;/span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;unknown&lt;/span&gt;&lt;span&gt;&amp;gt; &lt;/span&gt;&lt;span&gt;|&lt;/span&gt;&lt;span&gt; unknown&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    getDefaultService&lt;/span&gt;&lt;span&gt;()&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;span&gt; string&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    supportsBatch&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;service&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;span&gt; string&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;span&gt; boolean&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    translateText&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;source&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;context&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;options&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;span&gt; Promise&lt;/span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;string&lt;/span&gt;&lt;span&gt;&amp;gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    translateTextBatch&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;sources&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;context&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;options&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;span&gt; Promise&lt;/span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;string&lt;/span&gt;&lt;span&gt;[]&amp;gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;整个目录里没有任何一处 import 具体的翻译 provider。&lt;/strong&gt; 翻译服务、术语表、用户设置全由上层注入。好处不只是可测试——FluentRead 有十几个翻译服务（划词、全文、字幕都在用），文档翻译只要注入同一个客户端就能全部复用。&lt;/p&gt;
&lt;p&gt;调度上的几个决定：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;分批&lt;/strong&gt;：每批 ≤ 16 段且 ≤ 3500 字符，两个上限取先到&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;无批量能力的服务&lt;/strong&gt;：起 &lt;code&gt;Math.min(3, pending.length)&lt;/code&gt; 个 worker 抢同一个 &lt;code&gt;nextIndex&lt;/code&gt; 游标，而不是 &lt;code&gt;Promise.all&lt;/code&gt; 一把梭&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;语言对冻结&lt;/strong&gt;：任务开始时快照 &lt;code&gt;sourceLanguage/targetLanguage&lt;/code&gt;。注释写得很明确——“不能被设置页同步更新或用户中途改选污染后续批次”。翻到第 80 段时用户改了目标语言，前 79 段不会变成两种语言的混合体&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;上下文注入&lt;/strong&gt;：取前 24 段拼成 &lt;code&gt;pageContext&lt;/code&gt; 一起发给模型，让术语在全篇保持一致。这比”每段独立翻译”的质量高得多&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;结果校验&lt;/strong&gt;：返回条数不符或有空串直接抛错，不静默降级&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;失败处理有个细节：&lt;code&gt;Promise.all&lt;/code&gt; 首个 worker 失败就 reject，但其余在途请求还会稍后结束。所以用一个 &lt;code&gt;stopped&lt;/code&gt; 标志位——失败后不再上报过期进度、也不再认领新片段，避免”已经报错了进度条还在涨”。&lt;/p&gt;
&lt;h2&gt;7. 「可续读」：这次重构真正改了什么&lt;/h2&gt;
&lt;p&gt;9 月 5 日的提交 &lt;code&gt;feat(document): redesign translation as a resumable reading workspace&lt;/code&gt; &lt;a href=&quot;https://github.com/FluentRead/FluentRead/commit/d438eba873eccec1e74f6c0141c513cef842ad45&quot;&gt;9&lt;/a&gt; 把文档翻译从”一次性动作”改成了”可长期维护的阅读工作区”。代码里对应两处，都很小但很关键。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;其一，&lt;code&gt;initialTranslations&lt;/code&gt; —— 空白驱动。&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&lt;span&gt;&lt;span&gt;segments.&lt;/span&gt;&lt;span&gt;forEach&lt;/span&gt;&lt;span&gt;(({ &lt;/span&gt;&lt;span&gt;id&lt;/span&gt;&lt;span&gt; }) &lt;/span&gt;&lt;span&gt;=&amp;gt;&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  translations[id] &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; options.initialTranslations?.[id] &lt;/span&gt;&lt;span&gt;||&lt;/span&gt;&lt;span&gt; &quot;&quot;&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;});&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;const&lt;/span&gt;&lt;span&gt; pending&lt;/span&gt;&lt;span&gt; =&lt;/span&gt;&lt;span&gt; segments.&lt;/span&gt;&lt;span&gt;filter&lt;/span&gt;&lt;span&gt;(({ &lt;/span&gt;&lt;span&gt;id&lt;/span&gt;&lt;span&gt; }) &lt;/span&gt;&lt;span&gt;=&amp;gt;&lt;/span&gt;&lt;span&gt; !&lt;/span&gt;&lt;span&gt;translations[id].&lt;/span&gt;&lt;span&gt;trim&lt;/span&gt;&lt;span&gt;());&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;已有译文直接落位（包括用户手工校订过的），&lt;code&gt;pending&lt;/code&gt; 只装空白的。&lt;strong&gt;你在校订区改过的段落，重跑时不会被覆盖。&lt;/strong&gt; 这让”翻到一半关掉，明天接着翻”和”只重翻我没改过的那几段”都成立。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;其二，&lt;code&gt;createDocumentFileLoadGuard()&lt;/code&gt; —— 代次而非 abort。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;PDF/ePub 的解析是 async 循环，没有真正干净的中止点。与其假装能取消，不如用代次计数器：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&lt;span&gt;&lt;span&gt;let&lt;/span&gt;&lt;span&gt; generation &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; 0&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;return&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  begin&lt;/span&gt;&lt;span&gt;() {&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    const&lt;/span&gt;&lt;span&gt; requestGeneration&lt;/span&gt;&lt;span&gt; =&lt;/span&gt;&lt;span&gt; ++&lt;/span&gt;&lt;span&gt;generation;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    return&lt;/span&gt;&lt;span&gt; { &lt;/span&gt;&lt;span&gt;isCurrent&lt;/span&gt;&lt;span&gt;: () &lt;/span&gt;&lt;span&gt;=&amp;gt;&lt;/span&gt;&lt;span&gt; requestGeneration &lt;/span&gt;&lt;span&gt;===&lt;/span&gt;&lt;span&gt; generation };&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  },&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  invalidate&lt;/span&gt;&lt;span&gt;() {&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    generation &lt;/span&gt;&lt;span&gt;+=&lt;/span&gt;&lt;span&gt; 1&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  },&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;};&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;新文件打开或页面重置时代次 +1，旧解析仍可自然跑完（不浪费、不泄漏），但 &lt;code&gt;isCurrent()&lt;/code&gt; 返回 false，&lt;strong&gt;不允许把状态写进新文档&lt;/strong&gt;。这是个很实用的模式：凡是你无法真正中止的异步流程，都可以用”所有权代次”代替取消。&lt;/p&gt;
&lt;p&gt;另外 8 月底还有两个提交值得一提：&lt;code&gt;0652882&lt;/code&gt; &lt;a href=&quot;https://github.com/FluentRead/FluentRead/commit/0652882c056246c4658c7d1b5b1d6b291f69aac5&quot;&gt;10&lt;/a&gt; 审计重构回归并清理死代码，&lt;code&gt;bf32cef&lt;/code&gt; &lt;a href=&quot;https://github.com/FluentRead/FluentRead/commit/bf32cef1fbd85171890585f0c12cddddfa2704eb&quot;&gt;11&lt;/a&gt; 给源文件补了职责注释——所以现在每个文件头都有那段”文件职责 / 主要内容 / 模块边界”，读起来省很多事。&lt;/p&gt;
&lt;h2&gt;8. 回填与导出：每种格式的双语策略&lt;/h2&gt;
&lt;p&gt;同一个 &lt;code&gt;renderDocument(document, translations, mode)&lt;/code&gt; 入口，&lt;code&gt;mode&lt;/code&gt; 是 &lt;code&gt;bilingual&lt;/code&gt; 或 &lt;code&gt;translated&lt;/code&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;HTML&lt;/td&gt;&lt;td&gt;原文 + &lt;code&gt;&amp;lt;br&amp;gt;&lt;/code&gt; + &lt;code&gt;&amp;lt;span data-fluent-read-document-translation&amp;gt;&lt;/code&gt; 译文&lt;/td&gt;&lt;td&gt;直接替换（escape 后）&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Markdown&lt;/td&gt;&lt;td&gt;原文行 + 下一行 &lt;code&gt;&amp;gt; 译文&lt;/code&gt;（引用块）&lt;/td&gt;&lt;td&gt;替换&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;ASS&lt;/td&gt;&lt;td&gt;原文 + &lt;code&gt;\N&lt;/code&gt; + 译文（ASS 的换行码）&lt;/td&gt;&lt;td&gt;替换&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;JSON&lt;/td&gt;&lt;td&gt;同一字符串内 &lt;code&gt;原文\n译文&lt;/code&gt;&lt;/td&gt;&lt;td&gt;替换&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;ePub&lt;/td&gt;&lt;td&gt;逐章重新渲染写回 zip&lt;/td&gt;&lt;td&gt;同&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;DOCX&lt;/td&gt;&lt;td&gt;&lt;strong&gt;原段后追加一个粉色译文段落&lt;/strong&gt;（&lt;code&gt;#E83B6B&lt;/code&gt;）&lt;/td&gt;&lt;td&gt;原地替换 &lt;code&gt;&amp;lt;w:t&amp;gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;PDF&lt;/td&gt;&lt;td&gt;左右并排两页&lt;/td&gt;&lt;td&gt;单页译版&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;p&gt;DOCX 的双语策略特意选了”追加段落”而不是”段内追加文字”——这样原文段落的所有格式属性（&lt;code&gt;w:pPr&lt;/code&gt;、编号、样式）都不用碰，代价是多一个段落。&lt;/p&gt;
&lt;p&gt;ePub 导出有个容易踩的规范细节：&lt;code&gt;mimetype&lt;/code&gt; 必须用 &lt;code&gt;STORE&lt;/code&gt;（不压缩）且是 zip 的第一个条目 &lt;a href=&quot;https://www.w3.org/TR/epub-33/&quot;&gt;16&lt;/a&gt;，否则很多阅读器不认：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&lt;span&gt;&lt;span&gt;zip.&lt;/span&gt;&lt;span&gt;file&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&quot;mimetype&quot;&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;&quot;application/epub+zip&quot;&lt;/span&gt;&lt;span&gt;, { compression: &lt;/span&gt;&lt;span&gt;&quot;STORE&quot;&lt;/span&gt;&lt;span&gt; });&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;9. 安全与限额&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;预览隔离&lt;/strong&gt;（&lt;a href=&quot;https://github.com/FluentRead/FluentRead/blob/main/src/features/document-translation/core/preview.ts&quot;&gt;&lt;code&gt;core/preview.ts&lt;/code&gt;&lt;/a&gt;）：生成的 HTML 带 CSP &lt;code&gt;default-src &apos;none&apos;; img-src data: blob:; style-src &apos;unsafe-inline&apos;; base-uri &apos;none&apos;; form-action &apos;none&apos;&lt;/code&gt;，并且 &lt;code&gt;stripActiveHtml()&lt;/code&gt; 额外剥掉 &lt;code&gt;script/iframe/object/embed/form&lt;/code&gt;、&lt;code&gt;on*&lt;/code&gt; 事件属性、&lt;code&gt;meta refresh&lt;/code&gt;。被翻译的网页不会在扩展里执行任何东西&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;zip bomb 防护&lt;/strong&gt;：≤ 4000 条目、单项 ≤ 24MB、解压后总计 ≤ 96MB，解析前后各校验一次&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;PDF 签名校验&lt;/strong&gt;：开头 5 字节必须是 &lt;code&gt;%PDF-&lt;/code&gt;，不然报”文件可能已损坏或扩展名不正确”&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;10MB 上限&lt;/strong&gt;：&lt;code&gt;DOCUMENT_MAX_BYTES = 10 * 1024 * 1024&lt;/code&gt; 定义在 &lt;code&gt;core/document.ts&lt;/code&gt;，但这个目录内没有调用点，实际校验在上层 UI&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;10. 能抄走的四个设计&lt;/h2&gt;
&lt;p&gt;不是抄代码，是抄判断。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;一、把”不可变结构”和”可变内容”分成两条流。&lt;/strong&gt; 一旦这么分，“保留原格式”就不用为每种格式单独实现了。任何”处理完还得还原”的任务——代码格式化后保留注释、模板渲染后保留手写修改、i18n 提取后回填——都是同一个形状。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;二、feature 只依赖注入的接口，不依赖具体实现。&lt;/strong&gt; 文档翻译模块不知道自己用的是 Google 还是 DeepL，只知道有个 &lt;code&gt;translateTextBatch&lt;/code&gt;。这让 11 种格式的复杂逻辑可以脱离网络、脱离扩展环境单测。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;三、无法真正中止的操作，用所有权代次代替取消。&lt;/strong&gt; 强行 abort 一个 async 循环只会留下半初始化状态。让旧任务自然跑完但不许它提交，是更省心的做法。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;四、在别人的版式上写字，先采样再擦除。&lt;/strong&gt; “取中位数当背景、取最强分位当前景、先擦完再统一画”这三步，是”往不可编辑的画布上写字”这类问题的通用解法。&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;最后说回开头那句话。翻译一段话容易，翻译一份 PDF 难——难在&lt;strong&gt;你要为每种格式回答同一个问题：哪些东西不能动&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;FluentRead 的回答是：先把不能动的全挑出来放进 &lt;code&gt;literal&lt;/code&gt;，剩下的才叫”内容”。&lt;/p&gt;
&lt;h2&gt;参考&lt;/h2&gt;</content:encoded></item><item><title>大模型结果如何测试和验证：Anthropic 与 OpenAI 的方法论</title><link>https://devweekly.github.io/posts/%E5%A4%A7%E6%A8%A1%E5%9E%8B%E7%BB%93%E6%9E%9C%E5%A6%82%E4%BD%95%E6%B5%8B%E8%AF%95%E5%92%8C%E9%AA%8C%E8%AF%81anthropic-%E4%B8%8E-openai-%E7%9A%84%E6%96%B9%E6%B3%95%E8%AE%BA/</link><guid isPermaLink="true">https://devweekly.github.io/posts/%E5%A4%A7%E6%A8%A1%E5%9E%8B%E7%BB%93%E6%9E%9C%E5%A6%82%E4%BD%95%E6%B5%8B%E8%AF%95%E5%92%8C%E9%AA%8C%E8%AF%81anthropic-%E4%B8%8E-openai-%E7%9A%84%E6%96%B9%E6%B3%95%E8%AE%BA/</guid><description>Eval 不是给模型出题，而是为一个 Claim 构造可重复实验：判定、效度、评分器、指标、生产飞轮</description><pubDate>Tue, 08 Sep 2026 02:02:03 GMT</pubDate><content:encoded>&lt;p&gt;最近被反复问到一个问题：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;大模型的结果怎么测？怎么保证 100% 准确？&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;我去翻了 Anthropic 和 OpenAI 的一手工程文档。先说结论（措辞上收敛一点：以下是我查到的公开材料范围内的归纳，不是全称判断）：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;在我查到的这些公开材料里，没有一家把 100% accuracy 当作现实可行的工程目标；OpenAI 的相关工作甚至专门讨论了为什么绝对准确不是合理目标。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;他们真正在做的事，是另一套东西：&lt;strong&gt;把不可控的生成，拆成可判定的断言 + 可归因的失败 + 可回归的门禁。&lt;/strong&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;阅读指引：本文混合了三种陈述，下文用括号标注——【原文】= 一手文档明确说的；【归纳】= 我对多篇文档的归纳；【推论】= 可直接落地的工程推论。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr /&gt;
&lt;h2&gt;1. 先破题：为什么 100% 是个错误问题&lt;/h2&gt;
&lt;p&gt;OpenAI 的论文 &lt;a href=&quot;https://openai.com/index/why-language-models-hallucinate/&quot;&gt;《Why Language Models Hallucinate》&lt;/a&gt;（&lt;a href=&quot;https://cdn.openai.com/pdf/d04913be-3f6f-4d2b-b283-ff432ef4aaa5/why-language-models-hallucinate.pdf&quot;&gt;PDF&lt;/a&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;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;提高准确率就能消除幻觉，100% 准确的模型永远不会幻觉&lt;/td&gt;&lt;td&gt;&lt;strong&gt;准确率永远到不了 100%&lt;/strong&gt;——有些现实问题本质上不可答（信息缺失、歧义、需要澄清）&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;幻觉不可避免&lt;/td&gt;&lt;td&gt;不是。模型在不确定时&lt;strong&gt;可以选择沉默&lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;消除幻觉需要很高智能，只有大模型做得到&lt;/td&gt;&lt;td&gt;相反，&lt;strong&gt;小模型更容易认知自身局限&lt;/strong&gt;（校准所需算力远低于追求绝对准确）&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;幻觉是现代模型里的某种神秘故障&lt;/td&gt;&lt;td&gt;不是。统计机制与评测激励都已经搞清楚了&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;h3&gt;1.1 幻觉有两个来源，第二个才是主因&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;来源一：预训练的统计不可约性&lt;/strong&gt;【原文】&lt;strong&gt;。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;预训练是在海量文本上做”预测下一个词”。和传统机器学习不同，&lt;strong&gt;每条陈述都没有”真/假”标签&lt;/strong&gt;——模型只看到流畅语言的&lt;strong&gt;正例&lt;/strong&gt;，必须去近似整体分布。&lt;/p&gt;
&lt;p&gt;论文把这个归约成一个叫 &lt;strong&gt;IIV（Is-It-Valid，这条陈述有效吗）&lt;/strong&gt; 的问题：当你手里只有正例、从来没见过被标记为”无效”的样本时，区分有效与无效陈述&lt;strong&gt;本质上是无监督的&lt;/strong&gt;，难度高得多。&lt;/p&gt;
&lt;p&gt;为什么模型很少拼错单词、很少括号不匹配，却会编造生日？论文的类比很漂亮：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;给几百万张猫狗照片打上”猫/狗”标签，算法能可靠分类——因为&lt;strong&gt;存在可学习的模式&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;改成按宠物的生日给照片打标签——&lt;strong&gt;生日本质上是随机的&lt;/strong&gt;，无论算法多先进，这个任务必然出错&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;拼写在语料里有极其稳定的模式，规模上去错误就消失；而”某人的生日”这种&lt;strong&gt;任意的、低频的事实&lt;/strong&gt;没有模式可循，于是产生幻觉。&lt;/p&gt;
&lt;p&gt;论文还给了一个可量化的下界：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;预训练之后的幻觉率，&lt;strong&gt;至少等于训练事实中只出现过一次的比例&lt;/strong&gt;。
例如，若 20% 的生日事实在预训练数据中只出现过一次，那么基础模型在这类事实上&lt;strong&gt;至少&lt;/strong&gt;会幻觉 20%。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;这一条很硬：&lt;strong&gt;有些错误不是训练不够好，是信息本身就不在模型里。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;来源二（更关键）：后训练阶段被评测机制奖励出来的&lt;/strong&gt;【原文】&lt;strong&gt;。&lt;/strong&gt;&lt;/p&gt;
&lt;h3&gt;1.2 一组让人不舒服的数据&lt;/h3&gt;
&lt;p&gt;论文给了一组真实数据（SimpleQA，出自 GPT-5 System Card）【原文】：&lt;/p&gt;

























&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;指标&lt;/th&gt;&lt;th&gt;gpt-5-thinking-mini&lt;/th&gt;&lt;th&gt;OpenAI o4-mini&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;弃权率（不给具体答案）&lt;/td&gt;&lt;td&gt;52%&lt;/td&gt;&lt;td&gt;1%&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;准确率（答对，越高越好）&lt;/td&gt;&lt;td&gt;22%&lt;/td&gt;&lt;td&gt;&lt;strong&gt;24%&lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;错误率（答错，越低越好）&lt;/td&gt;&lt;td&gt;&lt;strong&gt;26%&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;&lt;strong&gt;75%&lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;p&gt;（三行相加都是 100%：准确 + 错误 + 弃权。）&lt;/p&gt;
&lt;p&gt;单看准确率，老模型 o4-mini 反而更高。但它的错误率是前者的近 3 倍——因为它几乎从不弃权（1%），什么都敢猜。&lt;/p&gt;
&lt;p&gt;论文的类比很直白：这就像选择题考试，空着必然 0 分，蒙一个还有 1/4 概率对。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;当成千上万个 benchmark 都用 0-1 打分，&lt;strong&gt;模型就会学会”永远别承认不知道”&lt;/strong&gt;。
模型永远处在”考试模式”里。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;论文的用词是 &lt;strong&gt;“an epidemic of penalizing uncertainty”（一场惩罚不确定性的流行病）&lt;/strong&gt;。他们特别强调：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;只在旁边加几个新的”幻觉评测”是不够的。&lt;strong&gt;主流评测本身必须改。&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;因为只要主榜单还在奖励幸运的猜测，少数几个幻觉评测的影响力根本压不过去。&lt;/p&gt;
&lt;h3&gt;1.3 解法：改评分规则，不是改模型&lt;/h3&gt;
&lt;p&gt;具体做法是在每道题的 prompt 里显式写明阈值【原文】：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;答对 +1 分；回答”我不知道”得 0 分；&lt;strong&gt;答错扣 t/(1-t) 分&lt;/strong&gt;。
请只在你确信答对概率大于 t 时才作答。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;其中 t 是置信度阈值。有了这条规则，模型就会把自己的置信度和 t 比较——&lt;strong&gt;低于阈值时，最理性的策略就是弃权&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;这个思路并不新：标准化考试早就用”答错倒扣分”来遏制瞎猜。新的是 OpenAI 把它主张为&lt;strong&gt;所有主流 benchmark 都应该改的计分方式&lt;/strong&gt;（MMLU、SWE-bench 等）。&lt;/p&gt;
&lt;h3&gt;1.4 对做应用的人，三条直接含义【推论】&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;如果你自己的评估体系只统计”准确率”，你就在亲手训练你的系统去瞎猜。&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;给”我不知道”一条合法出路，并且在指标上不惩罚它。&lt;/strong&gt; 弃权是特性，不是缺陷。OpenAI 甚至把”谦逊（humility）“写进了 Model Spec——宁可表明不确定或请求澄清，也不要给出可能错误的自信信息。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;校准比准确便宜。&lt;/strong&gt; 让模型知道自己不知道，所需的算力远低于让它答对。小模型在这件事上反而有优势——论文的例子是：面对毛利语问题，完全不懂毛利语的小模型可以直接说”我不知道”；而懂一点毛利语的模型反而需要费力评估自己的置信度。&lt;/li&gt;
&lt;/ol&gt;
&lt;hr /&gt;
&lt;h2&gt;2. 全文的总模型：Eval 不是出题，而是在证明一个 Claim&lt;/h2&gt;
&lt;p&gt;这是全文最重要的骨架【归纳】。后面所有章节（判定、题目、环境、评分器、指标、生产）都是这个链条上的一个环节：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&lt;span&gt;&lt;span&gt;Claim → Task → Elicitation/Harness → Environment → Observation → Grader → Metric → Decision → Feedback&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;展开成一个具体例子——“这个 Agent 能可靠地处理退款请求”：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&lt;span&gt;&lt;span&gt;Claim:&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;&quot;这个 Agent 能可靠地处理退款请求&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;↓ 拆成&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;Task:&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;用户要求取消一笔符合条件的订单&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;↓ Elicitation / Harness（诱发与脚手架，见 §5）:&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;prompt、工具集、context 管理、retry、budget——决定能力是否被诱发出来&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;↓ Environment（环境）:&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;账户、订单、退款 API、权限、policy&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;↓ 行为:&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;Agent 调用工具、查询订单、执行退款&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;↓ Observation / Outcome:&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;订单状态 = refunded&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;退款金额正确&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;没有越权&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;没有修改其他订单&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;↓ Grader:&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;状态检查 + 金额检查 + 权限检查 + Policy 检查&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;↓ Metric:&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;pass@1 / pass^k / 错误类型 / 成本 / 延迟&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;↓ Decision:&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;是否上线？灰度多少？转人工阈值？&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;↓ Feedback:&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;生产失败 → 新 Task → 回归套件&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;理解了这个，就理解了全文的核心论点：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Eval 不是”给模型出题”，而是构造一个能够支持 / 反驳某个产品或模型 Claim 的实验。&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;于是”AI 系统为什么不能靠一个准确率证明自己可靠”，就有了答案：因为链条上有 &lt;strong&gt;6 个不同层次的问题&lt;/strong&gt;，准确率只覆盖了其中一段【归纳】：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&lt;span&gt;&lt;span&gt;A. Construct / Claim——你到底想证明什么？（§2）&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;B. Task Validity——题目是不是一个有效代理？（§3、§4）&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;C. Execution / Elicitation——harness / environment / budget 是否改变了能力表现？（§5）&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;D. Measurement——observation / grader / metric 是否测到了你想测的东西？（§6、§7）&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;E. Generalization——结果能不能推广到目标生产分布？（§7、§9）&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;F. Operationalization——结果能不能进入发布、监控、回归和事故反馈？（§9）&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;前四层是测量与效度问题，后两层是外部效度与生命周期问题——不要把它们放在同一层比较。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;后文导读：&lt;/strong&gt; §3–§7 按这个顺序逐关展开；§8 把”模型”换成”系统”；§9 闭环到生产；§10 只保留大厂证据；§11 给最小可跑方案。&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;3. 第一关：这个东西能不能被判定？&lt;/h2&gt;
&lt;p&gt;第一判断仍然是：&lt;strong&gt;哪些输出能判对错，哪些不能&lt;/strong&gt;【推论】。但”可判定 / 不可判定”二分太粗，拆成三种判定强度才够用【归纳】。注意：&lt;strong&gt;不是三类任务，而是三种判定强度&lt;/strong&gt;——同一个任务里往往同时存在三部分（见 §10.3 的 Data Agent 案例）。&lt;/p&gt;
&lt;h3&gt;3.1 Deterministic / Observable（确定性判定，最好）&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;&lt;span&gt;&lt;span&gt;数据库里是否新增了一条记录？&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;文件是否存在？&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;测试是否通过？&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;金额是不是 100 元？&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;权限是否越权？&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;判定方式：确定性检查（SQL 查询、文件断言、测试套件、规则引擎）。这是 Anthropic &lt;a href=&quot;https://www.anthropic.com/engineering/demystifying-evals-for-ai-agents&quot;&gt;《Demystifying evals for AI agents》&lt;/a&gt; 里 Transcript ≠ Outcome 区分的落点【原文】：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;订机票 agent 在对话里说”您的航班已预订”——这只是 Transcript。
只有当你去查后台 SQL，发现&lt;strong&gt;真的多了一条预订记录&lt;/strong&gt;——那才叫 Outcome。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;strong&gt;工程含义：先把 outcome 的可观测性建起来（能查库、能查状态、能查副作用），再谈 grader。&lt;/strong&gt; 很多团队反过来做，grader 只能判文本，天然测不准。&lt;/p&gt;
&lt;p&gt;判据用一句人话即可【推论】：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;“是否可以把成功标准定义成一个可重复执行、与具体实现无关的判定规则？”&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;例如文件存在、金额 = 100、数据库状态 = refunded、测试通过、权限未越权——这才是 deterministic。&lt;/p&gt;
&lt;p&gt;注意：“两个不同的人看了都觉得不错”只是 inter-rater agreement，不等于 deterministic grading——两个人可能只是共享偏见，并不代表存在稳定、可自动执行的判定规则。&lt;/p&gt;
&lt;h3&gt;3.2 Semantic / Model-assisted（语义判定，需要组合拳）&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;&lt;span&gt;&lt;span&gt;SQL 是否实现了相同语义？&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;回答是否完整？&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;方案是否满足约束？&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;摘要是否忠实？&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;这类不能字符串比较。OpenAI 内部 Data Agent &lt;a href=&quot;https://openai.com/index/inside-our-in-house-data-agent&quot;&gt;《Inside our in-house data agent》&lt;/a&gt; 明确绕开了”朴素字符串匹配”的坑【原文】：生成的 SQL 语法不同但可能正确，结果集多几列但不实质影响答案——所以&lt;strong&gt;同时比对 SQL 与结果数据，把两个信号一起喂给 grader，产出分数 + 解释&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;标准打法：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&lt;span&gt;&lt;span&gt;deterministic checks + LLM grader + human calibration&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;只比 SQL 字符串 → 漏判语义等价；只比结果集 → 放过”碰巧结果一样但逻辑错了”的查询。两个信号一起给 grader，是比”跑个 diff”高一档的做法。&lt;/p&gt;
&lt;h3&gt;3.3 Subjective / Human-calibrated（主观判定，以人为准）&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;&lt;span&gt;&lt;span&gt;哪个方案更好？&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;这个回答是否&quot;有洞察&quot;？&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;这个 UI 是否更自然？&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;这类通常不存在唯一、完全客观的 ground truth，只能进：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&lt;span&gt;&lt;span&gt;rubric + pairwise comparison + expert review + calibration + agreement measurement&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;但”主观”不等于”全不可判定”：很多主观任务内部仍有大量可判定部分——如代码 review 是否遗漏安全漏洞、是否违反规范、是否包含必需检查项；Anthropic 对 research agent 也是用 groundedness、coverage、source quality 等 grader 组合，而不是简单归为”完全没有 ground truth”【原文】。&lt;/p&gt;
&lt;p&gt;Warp 的做法 &lt;a href=&quot;https://claude.com/blog/how-warp-builds-self-improving-agents-on-claude&quot;&gt;《How Warp builds self-improving agents on Claude》&lt;/a&gt; 是个参照【原文】：领域可验证 → 先建 verification harness；领域不可验证 → 依赖 golden outputs 的确定性 eval，人类反馈&lt;strong&gt;只限领域专家&lt;/strong&gt;（“don’t open the floodgates”）。&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;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;“帮我分析一下数据”&lt;/td&gt;&lt;td&gt;回答必须落到某张表的某个指标，&lt;strong&gt;并给出取数口径&lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;“写个方案”&lt;/td&gt;&lt;td&gt;方案必须包含 A/B/C 三项，&lt;strong&gt;缺一项算未完成&lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;“回答用户问题”&lt;/td&gt;&lt;td&gt;答案必须给出可核对的来源，&lt;strong&gt;没有来源就说不知道&lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;“帮我处理这个任务”&lt;/td&gt;&lt;td&gt;必须能说出&lt;strong&gt;完成后的世界状态是什么&lt;/strong&gt;（多了一条记录？状态变成 X？）&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;hr /&gt;
&lt;h2&gt;4. 第二关：题目本身是否有效？&lt;/h2&gt;
&lt;p&gt;OpenAI 这条线最打动我的地方是：&lt;strong&gt;他们先审计 benchmark，而不是先吹分数&lt;/strong&gt;【原文】。&lt;/p&gt;
&lt;p&gt;背景见 &lt;a href=&quot;https://www.openai.com/index/separating-signal-from-noise-coding-evaluations&quot;&gt;《Separating signal from noise in coding evaluations》&lt;/a&gt;：SWE-Bench Pro（731 题，从仓库变更历史程序化生成，要求通过新增测试且不破坏既有功能）在八个月内被前沿模型从 23.3% 推到 80.3%，然后 OpenAI 掉头审计了它自己推荐的 benchmark，结论是&lt;strong&gt;约 30% 的任务是坏的&lt;/strong&gt;。&lt;/p&gt;
&lt;h3&gt;4.1 三段式质检流水线【原文】&lt;/h3&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;1. 自动过滤器&lt;/td&gt;&lt;td&gt;审查指令、模型尝试、打分测试本身&lt;/td&gt;&lt;td&gt;标出 286 个潜在坏题&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;2. 人工监督的 agent 复审&lt;/td&gt;&lt;td&gt;Codex investigator agents 跑测试、读文件，区分”合理歧义”与”规格不足”，研究员做最终判定&lt;/td&gt;&lt;td&gt;认定 200 个（27.4%）&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;3. 人工标注&lt;/td&gt;&lt;td&gt;每个任务 5 名工程师独立评审，分歧与低置信上报&lt;/td&gt;&lt;td&gt;认定 249 个（34.1%）&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;p&gt;值得注意：人类比 agent 更倾向判坏题（34.1% vs 27.4%）——agent 辅助审计能提速，但替代不了人类判断。&lt;/p&gt;
&lt;h3&gt;4.2 坏题的四种长相【原文】&lt;/h3&gt;

























&lt;table&gt;&lt;thead&gt;&lt;tr&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;测试过严（强制了 prompt 没说的细节）&lt;/td&gt;&lt;td&gt;功能正确的提交被判错 → 分数偏低&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;prompt 规格不足（隐藏测试要的东西没写）&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;/tr&gt;&lt;tr&gt;&lt;td&gt;prompt 误导（与测试矛盾）&lt;/td&gt;&lt;td&gt;分数失去意义&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;h3&gt;4.3 【推论】Eval case 是软件资产，要有生命周期&lt;/h3&gt;
&lt;p&gt;不要只记住”30% 坏题”，要记住：&lt;strong&gt;Evaluation Dataset 本身就是 Software / Data Product。&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&lt;span&gt;&lt;span&gt;Draft → Review → Validation → Active → Regression → Drifted → Retire&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;每个 case 至少带这些元数据：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&lt;span&gt;&lt;span&gt;task_id&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;refund_top5_001&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;version&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;v3&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;claim&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;&quot;Agent 能正确查询退款率&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;expected_outcome&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  {&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    top_5_products&lt;/span&gt;&lt;span&gt;: [&lt;/span&gt;&lt;span&gt;...&lt;/span&gt;&lt;span&gt;],&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    refund_rate_definition&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;&quot;refund_orders / paid_orders&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  }&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;reference_solution&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;golden.sql&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;grader&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;grader_v2&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;known_ambiguities&lt;/span&gt;&lt;span&gt;: [&lt;/span&gt;&lt;span&gt;&quot;退款率口径需在 prompt 中显式声明&quot;&lt;/span&gt;&lt;span&gt;]&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;difficulty&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;medium&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;risk&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;high&lt;/span&gt;&lt;span&gt; # 涉及资金&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;last_reviewed&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;2026-08-20&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;owner&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;data-agent-team&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;status&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;active&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;自建 eval 的硬规则要分情况说【归纳】：&lt;strong&gt;对于可验证任务，应尽可能提供一个能通过全部 grader 的 reference solution，用来证明任务可解并验证 grader；对于开放式任务，则至少需要可操作的 success criteria / rubric。&lt;/strong&gt; Anthropic 建议每个 task 有 reference solution【原文】，但 conversational / research 类任务允许多个合理解法，不适合要求唯一 reference output。你的 Data Agent 例子属于前一种，所以保留 golden SQL 完全成立。&lt;/p&gt;
&lt;p&gt;τ²-bench 的 v1.0.1 一次做了 75+ 项任务质量修复（移除错误预期动作、修掉不可能满足的约束），甚至触发榜单重评分——这就是”活资产”的常态。&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;5. 第三关：实验条件是否公平？Harness 是变量&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;https://openai.com/index/trustworthy-third-party-evaluations-foundations/&quot;&gt;《A shared playbook for trustworthy third party evaluations》&lt;/a&gt; 提出了一个会被反复引用的概念：&lt;strong&gt;harness&lt;/strong&gt;【原文】。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;早期评测把模型当聊天机器人：问、答、判分。
今天的模型用工具、跨多步保持信息、在工作流中行动。
&lt;strong&gt;性能不只取决于模型，还取决于任务发生的环境，以及促成其行动的设置。&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;一个保留状态、对失败自动重试的 harness，可能让同一个模型完成多步任务；而在简单 harness 里永远完不成。&lt;strong&gt;所以”模型 + harness”才是实际被测系统&lt;/strong&gt;（Anthropic &lt;a href=&quot;https://www.anthropic.com/engineering/demystifying-evals-for-ai-agents&quot;&gt;2&lt;/a&gt; 同样明确说了这点）。&lt;/p&gt;
&lt;h3&gt;5.1 【归纳】把 Harness 理解成”实验条件”，把 Elicitation 单独拎出来&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;&lt;span&gt;&lt;span&gt;Model = treatment（处理）&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;Task = stimulus（刺激）&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;Elicitation/Harness = 诱发手段 + 实验装置&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;Environment = context（上下文）&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;Grader = measurement instrument（测量仪器）&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;Metric = statistic（统计量）&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Harness 是”实验条件”，但 OpenAI &lt;a href=&quot;https://openai.com/index/trustworthy-third-party-evaluations-foundations/&quot;&gt;7&lt;/a&gt; 的核心词其实更进一步，叫 &lt;strong&gt;elicitation（诱发）&lt;/strong&gt;【原文】：&lt;strong&gt;你有没有真正把系统的能力”诱发出来”？&lt;/strong&gt; 同一个模型，配不同的 context 管理、tool access、retry、budget，测出来的能力完全不同。OpenAI 甚至把 &lt;strong&gt;strongest credible elicitation&lt;/strong&gt; 作为 capability claim 的组成部分。&lt;/p&gt;
&lt;p&gt;所以链条里写成 Elicitation/Harness：harness 偏 infrastructure（容器、工具、隔离），elicitation 回答”如何让 agent 发挥它本来具备的能力”。只谈前者，实验条件就不完整。&lt;/p&gt;
&lt;p&gt;这能解释：为什么不同 benchmark 分数不能直接比？为什么 prompt 变了但模型没变分数会变？为什么 tool availability 会改变排名？——因为&lt;strong&gt;实验条件变了&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;OpenAI 要求评测报告必须写清两件事【原文】：&lt;strong&gt;这个评测想验证什么 claim；有什么证据表明结果有效。&lt;/strong&gt; 三类 claim 对应不同 harness：能力激发（最强激发配置）/ 受控对比（任务、评分、预算全固定）/ 防护性能（针对攻击设计）。&lt;/p&gt;
&lt;p&gt;对比时的诚实要求【推论】：任务、评分、预算、脚手架&lt;strong&gt;全部固定&lt;/strong&gt;，否则你看到的差异很可能只是脚手架的差异。&lt;/p&gt;
&lt;h3&gt;5.2 Eval Manifest：让实验可复现&lt;/h3&gt;
&lt;p&gt;【推论】每个 eval 运行都应该有一份 manifest，随报告一起存：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&lt;span&gt;&lt;span&gt;model&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;claude-opus-4-5-2026xxx&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;prompt_version&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;refund-v7&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;harness_version&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;harbor-0.3 / codex-cli-xxx&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;tools&lt;/span&gt;&lt;span&gt;: [&lt;/span&gt;&lt;span&gt;schema_search&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;sql_execute&lt;/span&gt;&lt;span&gt;]&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;max_steps&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;20&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;max_tokens&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;8000&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;temperature&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;0.0&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;retry_policy&lt;/span&gt;&lt;span&gt;: { &lt;/span&gt;&lt;span&gt;max_retries&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;backoff&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;exponential&lt;/span&gt;&lt;span&gt; }&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;memory&lt;/span&gt;&lt;span&gt;: { &lt;/span&gt;&lt;span&gt;enabled&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;false&lt;/span&gt;&lt;span&gt; }&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;network&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;disabled&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;dataset_version&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;refund-eval-v3&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;grader_version&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;grader_v2&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;budget&lt;/span&gt;&lt;span&gt;: { &lt;/span&gt;&lt;span&gt;cost_cap_usd&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;5.00&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;time_cap_s&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;300&lt;/span&gt;&lt;span&gt; }&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;5.3 Trial：点估计不够，要不确定性&lt;/h3&gt;
&lt;p&gt;Anthropic 引入 trial（同一 task 跑多次）的原因很朴素：&lt;strong&gt;一次成功可能是运气&lt;/strong&gt;【原文】。但要再往下推一层【归纳】：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;不要只报 &lt;code&gt;pass@1 = 72%&lt;/code&gt;，要报 &lt;code&gt;72% ± 不确定性&lt;/code&gt;（置信区间）。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;A = 72%, B = 75%&lt;/code&gt; 不能直接说 B 更好——要问样本量、trial 方差、是否配对比较。&lt;strong&gt;Task 本身才是主要实验单位，而不是单次生成。&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;每次 trial 必须隔离（全新容器、不保留状态、默认无网络）。Harbor 把这做成了默认值（见 §11）；Anthropic §10.1 的事故则是反面教材——提示词说无网络，容器实际有出口。&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;5.4 一个统计陷阱：pass^k 的独立性假设&lt;/h3&gt;
&lt;p&gt;&lt;code&gt;0.9^10 ≈ 35%&lt;/code&gt; 的直觉解释很好，但它隐含了 &lt;strong&gt;trial 之间近似独立&lt;/strong&gt;【推论】。现实中常常不是：同一个 prompt、同一个缓存、同一个 failure mode、同一个坏掉的工具——失败是相关的。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;如果 trial 不是独立样本，那么重复跑 100 次也不等于获得了 100 个独立证据。&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;这正是 trial isolation 不是形式主义的原因。&lt;/p&gt;
&lt;h3&gt;5.5 读评测报告的七问【归纳自 &lt;a href=&quot;https://openai.com/index/trustworthy-third-party-evaluations-foundations/&quot;&gt;7&lt;/a&gt;】&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;它想证明哪一类 claim？2. harness 是什么，和部署环境像吗？3. 预算（步数/token/时间/成本）是多少？4. 评分器是什么，模型自己给自己打分吗？5. 有没有排查 reward hacking、contamination、broken problems？6. 拒答率是多少？7. 弃权怎么处理？——&lt;strong&gt;不报弃权率的准确率都是耍流氓。&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;五类效度威胁速查（&lt;a href=&quot;https://openai.com/index/trustworthy-third-party-evaluations-foundations/&quot;&gt;7&lt;/a&gt; 原文）：Reward hacking / Refusals / Contamination / Broken problems / Sandbagging。注意最后一条已是实测事实：GPT-6 Astra 安全评估里专门做了 monitorability 与 controllability 调查，发现模型在对抗环境下能战略性低估而不被发现。&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;6. 第四关：评分器本身是否可信？&lt;/h2&gt;
&lt;h3&gt;6.1 三类 Grader 各自的坑【原文自 &lt;a href=&quot;https://www.anthropic.com/engineering/demystifying-evals-for-ai-agents&quot;&gt;2&lt;/a&gt;，含误用为归纳】&lt;/h3&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;快、便宜、客观、可复现&lt;/td&gt;&lt;td&gt;对”有效变体”脆弱；主观任务无能为力&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;模型型（rubric/断言/成对比较/多裁判）&lt;/td&gt;&lt;td&gt;灵活，能处理开放输出&lt;/td&gt;&lt;td&gt;非确定性、更贵、&lt;strong&gt;必须与人工校准&lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;人工型（专家/众包/抽样/A-B）&lt;/td&gt;&lt;td&gt;金标准&lt;/td&gt;&lt;td&gt;贵、慢&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;p&gt;典型误用：用字符串匹配判”意思”；把模型 grader 当金标准；拿人工做日常回归。组合方式：加权 / 一票否决 / 混合。Anthropic 的实用建议：&lt;strong&gt;grader 聚焦产出而非路径，并考虑部分分&lt;/strong&gt;——否则会重演”模型找到更优解却被判失败”（τ²-bench 订机票案例：Opus 4.5 发现政策漏洞、绕过去订得更好，eval 判失败）。&lt;/p&gt;
&lt;h3&gt;6.2 Meta-Eval：谁来评估评委？&lt;/h3&gt;
&lt;p&gt;这是全文最该强化的一点【归纳】。“模型 grader 必须人工校准”只说了一半，另一半是：&lt;strong&gt;怎么知道 grader 是好的？&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&lt;span&gt;&lt;span&gt;System → Task → Grader → Grader 是否正确？ → Meta-Eval&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;做法很朴素：取 100 个样本，同时跑人工 gold label 与 LLM grader，对比 accuracy / precision-recall / false positive-negative / agreement。&lt;/p&gt;
&lt;p&gt;但真正的风险不是”它不准”，而是&lt;strong&gt;它稳定地偏&lt;/strong&gt;：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&lt;span&gt;&lt;span&gt;LLM grader 总是偏爱：更长的答案、更正式的表达、&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;某一种架构、某个模型家族、某种写作风格&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;于是出现一个比”grader 会错”深得多的结论：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Grader Reliability ≠ Grader Validity。Grader 可以很稳定地测错东西。&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3&gt;6.3 Reliability vs Validity：全文最大的理论缺口&lt;/h3&gt;
&lt;p&gt;“可信”其实是两个完全不同的问题【归纳】：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Reliability（信度）&lt;/strong&gt;：同样的东西重复测，结果稳定吗？看 variance、置信区间、可重复性、评分者间一致性。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Validity（效度）&lt;/strong&gt;：这个测试到底测到了你想测的东西吗？SWE 分数很稳定，但如果题目本身错了——Reliability 高，Validity 低。&lt;/li&gt;
&lt;/ul&gt;
&lt;pre&gt;&lt;code&gt;&lt;span&gt;&lt;span&gt;                Valid&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;                 ↑&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;      好评测     │&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;                 │&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;Stable ──────────┼────────── 不稳定但有效&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;                 │&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;      稳定地测错 │&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;                 ↓&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;              Invalid&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;一句话：&lt;strong&gt;一个评测可以非常稳定地测错东西。&lt;/strong&gt; OpenAI 的 benchmark 审计、Anthropic 的 broken eval、harness 变量，全部是这句话的证据。&lt;/p&gt;
&lt;h3&gt;6.4 Eval quality 三件套：Validity / Reliability / Sensitivity&lt;/h3&gt;
&lt;p&gt;Reliability + Validity 还缺一块：&lt;strong&gt;Sensitivity / Resolution（分辨率）&lt;/strong&gt;【归纳】——这个 Eval 对系统改进还有没有分辨率？§9 的 eval saturation 说的正是这个：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&lt;span&gt;&lt;span&gt;System A = 98%, System B = 99%   # 只看总分，提升 1%&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;核心困难任务：A 20%, B 60%        # 大量简单题把差异淹没了&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;最终定义：&lt;strong&gt;测得对不对（Validity）、测得稳不稳（Reliability）、能不能看出真正的改进（Sensitivity）。&lt;/strong&gt; 这也把 capability / regression / saturation 统一起来：capability eval 要保 sensitivity（专挑能拉开差距的题），regression eval 要保 reliability（稳定的题才配当门禁）。&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;7. 第五关：一个数字不够描述可靠性&lt;/h2&gt;
&lt;h3&gt;7.1 准确率不是充分统计量&lt;/h3&gt;
&lt;p&gt;至少要拆开【归纳】：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&lt;span&gt;&lt;span&gt;Correctness / Completeness / Consistency / Robustness /&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;Calibration / Safety / Cost / Latency / Recoverability&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;一个系统完全可能 Accuracy 95% 但 Consistency 70%、Calibration 很差、Cost 极高。也可能 Accuracy 98% 但关键交易仍不可上线——因为&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;th&gt;弃权率&lt;/th&gt;&lt;th&gt;pass^5&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;A&lt;/td&gt;&lt;td&gt;98%&lt;/td&gt;&lt;td&gt;5%&lt;/td&gt;&lt;td&gt;1%&lt;/td&gt;&lt;td&gt;低&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;B&lt;/td&gt;&lt;td&gt;95%&lt;/td&gt;&lt;td&gt;0.5%&lt;/td&gt;&lt;td&gt;12%&lt;/td&gt;&lt;td&gt;高&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;p&gt;哪个更可靠？数字本身回答不了。&lt;strong&gt;Metric 必须服从 Failure Cost，而不是反过来。&lt;/strong&gt; 再往下推一层就是 expected loss【推论】：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&lt;span&gt;&lt;span&gt;Expected Loss = P(wrong)×Cost(wrong) + P(abstain)×Cost(abstain) + P(correct)×Cost(correct)&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;阈值谁定？业务定，不是算法定——因为”错一次”和”少答一次”哪个更贵，只有业务知道。&lt;/p&gt;
&lt;h3&gt;7.2 Selective Prediction：弃权只是一半&lt;/h3&gt;
&lt;p&gt;“给’我不知道’一条合法出路”很好，但完整形态是&lt;strong&gt;决策策略&lt;/strong&gt;【归纳】：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&lt;span&gt;&lt;span&gt;Answer / Abstain / Ask clarification / Retrieve evidence /&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;Escalate human / Retry with another model / Use deterministic tool&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;&lt;span&gt;&lt;span&gt;用户问事实问题 → 模型置信度 → 高：直接回答 / 中：检索验证 /&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;低：不回答 / 高风险：转人工&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;可靠系统优化的是决策策略，而不只是回答本身。兜底路径必须存在：没有兜底，“允许弃权”只是一句空话。&lt;/p&gt;
&lt;h3&gt;7.3 pass@k vs pass^k：选错指标等于选错产品&lt;/h3&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;pass@k&lt;/td&gt;&lt;td&gt;k 次里至少成功 1 次&lt;/td&gt;&lt;td&gt;辅助工具（多试几次成一次就行）&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;pass^k&lt;/td&gt;&lt;td&gt;k 次全部成功（观测到的全成功比例）&lt;/td&gt;&lt;td&gt;客服、交易、数据管道（每次都必须对）&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;p&gt;&lt;code&gt;pass@1=90%&lt;/code&gt; 看着不错。但注意：&lt;code&gt;0.9^10 ≈ 35%&lt;/code&gt; 不是 pass^k 的定义，而是&lt;strong&gt;如果每次 trial 独立且单次成功概率稳定为 90%，理论上的 all-success 概率&lt;/strong&gt;【推论】。&lt;strong&gt;同一个系统，“单次成功率 90%“和”独立假设下连续 10 次都对 35%“是同一件事的两种说法。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;还要补一句：pass^k 和真实生产连续成功率并不完全等价——真实生产任务的难度分布不是固定 p。看分布要分三层：per-task pass rate vs aggregate pass rate vs tail-task reliability（最难的那批任务决定下限）。实践折中：pass@1 做快速迭代，pass^k（k 取业务能容忍的连续失败代价）做发布门禁。评分规则同样是产品决策：弃权通道 + 兜底路径 + 业务定阈值。&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;8. 从”测试模型”到”测试系统”&lt;/h2&gt;
&lt;h3&gt;8.1 复杂度递进与 transcript 优先级&lt;/h3&gt;
&lt;p&gt;Anthropic 把评估分成三档【原文】：单轮（看文本）→ 多轮（给工具+环境，看产物）→ Agent（跨回合改状态，看最终状态+过程）。Agent 最难因为错误会传播复合，且前沿模型会找到超出静态 eval 边界的解法。&lt;/p&gt;
&lt;p&gt;语音场景同理（&lt;a href=&quot;https://developers.openai.com/cookbook/examples/realtime_eval_guide&quot;&gt;Realtime Eval Guide&lt;/a&gt;）：内容质量（理解、做对事）与音频质量（自然度、稳定性）是两个独立轴，单分数会掩盖问题；且必须分阶段打日志（speech start/stop → commit → response.create → audio deltas → done），当黑盒测永远定位不了根因。&lt;/p&gt;
&lt;h3&gt;8.2 Failure Taxonomy：Eval 的产物不是分数，是可行动的失败信息&lt;/h3&gt;
&lt;p&gt;&lt;code&gt;failed / broken / wrong&lt;/code&gt; 指导不了工程。用二维结构代替互斥长清单【推论】：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;维度一 Cause（谁的错）：&lt;/strong&gt; Model / Agent policy / Tool / Environment / Harness / Grader / Task&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;维度二 Failure mode（错在哪）：&lt;/strong&gt; Knowledge / Reasoning / Instruction / Tool use / Safety / Abstention / Recovery&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&lt;span&gt;&lt;span&gt;Cause = Tool,        Mode = Argument error      # 参数错&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;Cause = Task,        Mode = Ambiguous spec      # 题目歧义&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;Cause = Grader,      Mode = False positive      # 评委误判&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;Cause = Model,       Mode = Reasoning error     # 推理错&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;Cause = Harness,     Mode = State pollution     # 状态串扰&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;Cause = Environment, Mode = Infra failure       # 环境坏&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;Cause = Agent policy, Mode = Abstention error   # 该弃权没弃&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;一维长清单（F1–F12）的问题是 F6/F7、F2/F3 互相覆盖，F10/F11 一个是 domain 一个是 behavior。二维结构直接回答归因最需要的两个问题：&lt;strong&gt;哪里坏的 × 怎么坏的&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;Accuracy = 80%&lt;/code&gt; 没法指导下一步；但”工具参数错 8%、题目歧义 5%、策略理解错 4%、grader 误判 2%“马上能指导。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Eval 的终极产物不是分数，而是可行动的 failure information。&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3&gt;8.3 可归因：好 Eval 的输出格式&lt;/h3&gt;
&lt;p&gt;一个好的 Eval 至少输出【推论】：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&lt;span&gt;&lt;span&gt;Pass / Fail + Why + Where + Who/What caused it + Can it regress?&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;例如：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&lt;span&gt;&lt;span&gt;FAIL — 退款未创建&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;Root cause: tool-call #4 的 order_id 参数错误&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;Cause = Tool, Mode = Argument error&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;Stage: tool-call #4&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;Regression: yes（加入回归套件）&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;Suggested fix: tool schema / prompt / retry policy&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;8.4 Eval 驱动开发（EDD）&lt;/h3&gt;
&lt;p&gt;传统开发是 Bug → Fix → Test；AI 系统是【归纳】：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&lt;span&gt;&lt;span&gt;Failure → Eval → Fix → Regression&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Anthropic 的 SDLC playbook &lt;a href=&quot;https://claude.com/blog/the-ai-native-sdlc-playbook&quot;&gt;4&lt;/a&gt; 把它写成了纪律【原文】：修 bug 先写失败测试并提交，用 hook 阻止 agent 改测试，再让 agent 修。Eval 在 AI 系统里扮演传统 Unit Test + Integration Test + Production Monitoring 的混合角色——但它比 unit test 更宽，因为被测对象是非确定性的系统。&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;9. 从离线 Eval 到生产可靠性&lt;/h2&gt;
&lt;h3&gt;9.1 Benchmark ≠ Production Eval&lt;/h3&gt;
&lt;p&gt;这两个概念必须分层【归纳】：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&lt;span&gt;&lt;span&gt;Benchmark → Capability Eval → Regression Eval → Production Monitoring → Incident Eval&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;





























&lt;table&gt;&lt;thead&gt;&lt;tr&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;Benchmark&lt;/td&gt;&lt;td&gt;这个能力大概怎么样（capability signal，如 SWE-bench）&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Capability&lt;/td&gt;&lt;td&gt;能力边界在哪（专挑翻车的题，通过率 10–30% 也正常）&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Regression&lt;/td&gt;&lt;td&gt;以前解决的问题坏了吗（已稳定的题，接近 100%，掉分即 bug）&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Production Monitoring&lt;/td&gt;&lt;td&gt;我的系统今天还能不能工作（真实分布）&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Incident&lt;/td&gt;&lt;td&gt;哪些 failure 该永久进入测试集（discovery signal）&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;p&gt;Anthropic 的定义很清楚【原文】：能力 eval 是”进攻战”（要爬的山），回归 eval 是”保卫战”；&lt;strong&gt;当能力 eval 通过率做上去，它就”毕业”进入回归套件&lt;/strong&gt;。关键纪律：冲能力指标时必须同时跑回归，否则为了爬山把营地烧了。&lt;/p&gt;
&lt;h3&gt;9.2 Swiss Cheese：每层解决什么未知&lt;/h3&gt;
&lt;p&gt;没有任何单层能拦住所有问题【原文自 &lt;a href=&quot;https://www.anthropic.com/engineering/demystifying-evals-for-ai-agents&quot;&gt;2&lt;/a&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;Regression&lt;/td&gt;&lt;td&gt;以前解决的坏了吗&lt;/td&gt;&lt;td&gt;发布前、CI&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Capability&lt;/td&gt;&lt;td&gt;能力边界在哪&lt;/td&gt;&lt;td&gt;迭代期&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Adversarial&lt;/td&gt;&lt;td&gt;没想到的失败是什么&lt;/td&gt;&lt;td&gt;周期性&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Production Monitoring&lt;/td&gt;&lt;td&gt;真实世界怎么失败&lt;/td&gt;&lt;td&gt;持续&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Human review&lt;/td&gt;&lt;td&gt;Grader 是否错了&lt;/td&gt;&lt;td&gt;每周抽样&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Incident&lt;/td&gt;&lt;td&gt;哪些 failure 该永久入集&lt;/td&gt;&lt;td&gt;每次事故&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;pre&gt;flowchart LR
A[&quot;自动化 Eval&amp;lt;br/&amp;gt;（快速迭代、CI 门禁）&quot;]
B[&quot;生产监控&amp;lt;br/&amp;gt;（分布漂移、真实失败）&quot;]
C[&quot;A/B 测试&amp;lt;br/&amp;gt;（大流量验证显著变更）&quot;]
D[&quot;用户反馈 + 抽样读 transcript&amp;lt;br/&amp;gt;（持续、每周）&quot;]
E[&quot;系统性人工研究&amp;lt;br/&amp;gt;（校准 grader、主观金标准）&quot;]
A --&amp;gt; B --&amp;gt; C --&amp;gt; D --&amp;gt; E&lt;/pre&gt;
&lt;h3&gt;9.3 真正的 flywheel：生产失败是资产&lt;/h3&gt;
&lt;p&gt;完整回路【归纳】：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&lt;span&gt;&lt;span&gt;真实用户 → 失败 → Incident/Feedback → Failure Classification →&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;New Eval Case → Regression Suite → 系统修改 → Release →&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;Production → 再次发现未知失败 ↺&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Anthropic 的 transcript、OpenAI 的 benchmark 审计、Data Agent 的 production canary、Warp 的 skill 改进、Realtime 的生产飞轮——&lt;strong&gt;看似分散，其实都在描述同一个闭环。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;三条硬纪律【原文+推论】：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;每个生产事故必须写成一条 eval&lt;/strong&gt;（Anthropic playbook 原文）。复盘会产出清单里必须有一项”本次新增的 eval 描述”。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;谁每周读 transcript&lt;/strong&gt;：如果你找不到一个愿意每周花两小时读 transcript 的人，这套体系半年内一定烂掉。先解决这个人，再谈平台。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;验证基础设施自己也要被验证&lt;/strong&gt;：Anthropic 三起网络安全 eval 事故（详见 §10.1）的教训——提示词说无网络，容器实际有出口。事前验证隔离、实时监控日志、第三方审查，都要显式列进预算。&lt;/li&gt;
&lt;/ol&gt;
&lt;hr /&gt;
&lt;h2&gt;10. 大厂案例：统一框架下的证据&lt;/h2&gt;
&lt;p&gt;本节不再是主体，而是 §2–§9 的证据链。详略有调整：Astra 大幅压缩，工具产品介绍压缩（完整选型见 §11）。&lt;/p&gt;
&lt;h3&gt;10.1 Anthropic：能力边界的真实压力测试&lt;/h3&gt;
&lt;p&gt;&lt;a href=&quot;https://www.anthropic.com/news/investigating-incidents-cybersecurity-evals&quot;&gt;《Investigating three real-world incidents in our cybersecurity evaluations》&lt;/a&gt; 公开了自家事故【原文】。2025 年 2 月起用 Claude Sonnet 3.7 跑 Cybench（40 个 CTF），后加 CyberGym、ExploitBench，与 Irregular 等外部伙伴协作，开放式夺旗，多数环境不连互联网，跑在隔离 infra 上。&lt;/p&gt;
&lt;p&gt;关键设计：&lt;strong&gt;为测能力故意摘掉防护&lt;/strong&gt;——评估模型不带可用版本的分类器与监控，但保留安全训练。测的是”模型能力”而非”产品行为”；代价是一旦隔离出错，摘掉的那层就真没了。&lt;/p&gt;
&lt;p&gt;三起事故根因相同：&lt;strong&gt;提示词说无网络，但与 Irregular 的误解导致容器实际有互联网出口&lt;/strong&gt;，模型把真实系统当模拟靶场（共 6 次运行）：Opus 4.7 攻入与虚构目标同名的真实网站（识别为真后仍继续）；Mythos 5 真的注册并上传了恶意 PyPI 包（留存约 1 小时，被 15 个真实系统下载）；内部研究模型扫描约 9,000 个目标，后期自行判断为真并&lt;strong&gt;主动停止&lt;/strong&gt;。三者连起来是一条情境意识梯度。&lt;/p&gt;
&lt;p&gt;事后：7 月 23 日回溯 &lt;strong&gt;141,006 条&lt;/strong&gt;运行记录、次日锁定；对接 METR 独立审查；公开轻度编辑的 transcript；联系受影响组织。改进项本质一句话：&lt;strong&gt;验证系统需要的防御纵深，不比被测系统少。&lt;/strong&gt;&lt;/p&gt;
&lt;h3&gt;10.2 Anthropic：AI-Native SDLC 可抄的部分&lt;/h3&gt;
&lt;p&gt;&lt;a href=&quot;https://claude.com/blog/the-ai-native-sdlc-playbook&quot;&gt;《The AI-Native SDLC playbook》&lt;/a&gt; 把 Plan/Design/Build/Test/Deploy/Maintain 重构成工件链（intent → spec → plan → diff+测试 → PR 发现 → 事件记录）【原文】。测试部分可直接抄：验证包装成单命令（&lt;code&gt;make test&lt;/code&gt;，失败非零退出）；先写失败测试再修；CI 跑 20–50 个真实任务，通过率不下降才能合并；事故转 eval；会话结束用全新上下文的 Verifier subagent 只报告不修复；确定性 hook 做硬门禁（&lt;code&gt;RELEASE_APPROVAL&lt;/code&gt;、deny .env/secrets、沙箱白名单）。&lt;/p&gt;
&lt;p&gt;值得单拎：&lt;strong&gt;咨询性控制 vs 确定性控制&lt;/strong&gt;【归纳】。CLAUDE.md、Skills 是咨询性的（模型可不听）；Hooks、分支保护、受管设置是确定性的（不依赖自觉）。&lt;strong&gt;只有后者能当门禁。&lt;/strong&gt;&lt;/p&gt;
&lt;h3&gt;10.3 OpenAI Data Agent：一个基于公开做法的合成 Eval Case&lt;/h3&gt;
&lt;p&gt;&lt;a href=&quot;https://openai.com/index/inside-our-in-house-data-agent&quot;&gt;《Inside our in-house data agent》&lt;/a&gt; 是”自家产品怎么保证对”的实操文。本节把它拆到底，作为 §2–§9 的完整纵贯案例。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;事实边界：&lt;strong&gt;公开事实&lt;/strong&gt; = golden SQL、同时比对 SQL 与结果集、grader 出分 + 解释、权限透传、工具收敛（Less is More）、Meaning Lives in Code；**以下 refund_top5_001、错误 transcript、归因均为本文为说明方法而构造的合成案例，不是 OpenAI 公开过的真实事件。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;pre&gt;&lt;code&gt;&lt;span&gt;&lt;span&gt;task&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  user_request&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;&quot;过去 30 天退款率最高的 5 个产品是什么？&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;claim&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;&quot;Agent 能正确查询退款率&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;environment&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  database&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;production_snapshot_2026_08_01&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  permissions&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;user-scoped&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  tools&lt;/span&gt;&lt;span&gt;: [&lt;/span&gt;&lt;span&gt;schema_search&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;sql_execute&lt;/span&gt;&lt;span&gt;]&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;expected_outcome&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  top_5_products&lt;/span&gt;&lt;span&gt;: [&lt;/span&gt;&lt;span&gt;P-1042&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;P-0891&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;...&lt;/span&gt;&lt;span&gt;]&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  refund_rate_definition&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;refund_orders / paid_orders&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  date_range&lt;/span&gt;&lt;span&gt;: [&lt;/span&gt;&lt;span&gt;2026-07-09&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;2026-08-08&lt;/span&gt;&lt;span&gt;]&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;constraints&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  must_respect_user_permissions&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;true&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;graders&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  sql_semantic&lt;/span&gt;&lt;span&gt;: { &lt;/span&gt;&lt;span&gt;type&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;llm_grader&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;rubric&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;v2&lt;/span&gt;&lt;span&gt; }&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  result_correctness&lt;/span&gt;&lt;span&gt;: { &lt;/span&gt;&lt;span&gt;type&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;code&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;compare&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;result_set_with_tolerance&lt;/span&gt;&lt;span&gt; }&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  permission_check&lt;/span&gt;&lt;span&gt;: { &lt;/span&gt;&lt;span&gt;type&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;code&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;rule&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;no_cross_user_tables&lt;/span&gt;&lt;span&gt; }&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  explanation_quality&lt;/span&gt;&lt;span&gt;: { &lt;/span&gt;&lt;span&gt;type&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;human_sampled&lt;/span&gt;&lt;span&gt; }&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;metrics&lt;/span&gt;&lt;span&gt;: [&lt;/span&gt;&lt;span&gt;outcome_pass&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;policy_pass&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;partial_score&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;latency&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;token_cost&lt;/span&gt;&lt;span&gt;]&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;failure_labels&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  [&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    wrong_table&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    wrong_date_range&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    wrong_metric_definition&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    permission_violation&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    hallucinated_data&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  ]&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;一次失败 transcript（示意）：agent 把”退款率”算成 &lt;code&gt;refund_amount / gmv&lt;/code&gt;，查了 &lt;code&gt;orders&lt;/code&gt; 却漏了 &lt;code&gt;refunds&lt;/code&gt; 表的权限过滤，输出了 top5。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Grader 判失败：result_correctness（结果集与 golden SQL 不一致）+ permission_check（一票否决）。&lt;/li&gt;
&lt;li&gt;人工复核发现 grader 误判了一半：SQL 语义其实接近正确，错的是口径定义——归因按二维结构记为 Cause = Task（prompt 没写清退款率口径）+ Mode = Ambiguous spec，而不是模型推理错。&lt;/li&gt;
&lt;li&gt;修正：prompt 显式声明口径 + grader 增加口径容忍说明 + 该 case 以 &lt;code&gt;refund_top5_001 v3&lt;/code&gt; 进入 Regression Suite。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;三条踩坑教训【原文】：Less is More（工具收敛合并，功能重叠对 agent 是困惑）；Guide the Goal, Not the Path（刚性指令把 agent 推向错误路径，和 τ²-bench 案例同一枚硬币）；Meaning Lives in Code（语义活在生产 pipeline 代码里，用 Codex 爬代码理解数据集构造）。另有权限透传 + 暴露推理证据链：系统侧不可越权，用户侧可自己核查。&lt;/p&gt;
&lt;p&gt;语音场景一句话（&lt;a href=&quot;https://developers.openai.com/cookbook/examples/realtime_eval_guide&quot;&gt;Realtime Eval Guide&lt;/a&gt;）：Crawl（单轮回放）→ Walk（存档音频回放）→ Run（模型模拟多轮），dataset + graders + harness + 真实失败自动变新测试；投入 eval 的团队上线快 5–10 倍【原文】。&lt;/p&gt;
&lt;h3&gt;10.4 前沿模型评估已转向（压缩）&lt;/h3&gt;
&lt;p&gt;一句话案例【归纳自 &lt;a href=&quot;https://deploymentsafety.openai.com/gpt-6-astra&quot;&gt;10&lt;/a&gt;】：&lt;strong&gt;前沿模型评估已从”答对多少题”转向”在真实工具和高风险环境中会做什么”&lt;/strong&gt;——重心是 capability / safety / monitorability / controllability（如 54,000 内部 Codex 任务部署模拟、Critical 网络能力定级、错位监控、红队、CoT 可控性）。注意：安全概述里没有常规准确率数字——这也反映出这类安全评估关注的问题与传统 accuracy benchmark 已经明显不同（此处是推论，不是 OpenAI 的原话表态）。&lt;/p&gt;
&lt;h3&gt;10.5 两家的侧重差异&lt;/h3&gt;


















































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;维度&lt;/th&gt;&lt;th&gt;Anthropic&lt;/th&gt;&lt;th&gt;OpenAI&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;最强输出&lt;/td&gt;&lt;td&gt;Agent eval 术语与方法论（&lt;a href=&quot;https://www.anthropic.com/engineering/demystifying-evals-for-ai-agents&quot;&gt;2&lt;/a&gt;）&lt;/td&gt;&lt;td&gt;数据质量审计 + 第三方评测规范（&lt;a href=&quot;https://openai.com/index/trustworthy-third-party-evaluations-foundations/&quot;&gt;6&lt;/a&gt;）&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;核心概念&lt;/td&gt;&lt;td&gt;Transcript ≠ Outcome、pass^k、能力/回归分离、Swiss Cheese&lt;/td&gt;&lt;td&gt;Harness 即变量、五类效度威胁、弃权激励&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;对 agent&lt;/td&gt;&lt;td&gt;多回合改状态当一等公民&lt;/td&gt;&lt;td&gt;环境（harness）当一等变量&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;对数据&lt;/td&gt;&lt;td&gt;从真实失败出题、配参考解、双向平衡&lt;/td&gt;&lt;td&gt;直接审计公开 benchmark（30% 坏题）&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;对”100%”&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;公开自家 eval 事故（&lt;a href=&quot;https://www.anthropic.com/news/investigating-incidents-cybersecurity-evals&quot;&gt;3&lt;/a&gt;）&lt;/td&gt;&lt;td&gt;公开自家 benchmark 缺陷（&lt;a href=&quot;https://www.openai.com/index/separating-signal-from-noise-coding-evaluations&quot;&gt;6&lt;/a&gt;）&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;共同点&lt;/td&gt;&lt;td&gt;&lt;strong&gt;都要求 20–50 个真实失败起步，都强调读 transcript，都把 eval 当活资产，都用 agent 辅助质检&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;p&gt;与其说竞争，不如说补同一张图的不同角落：Anthropic 解决”在具体 agent 产品里怎么管质量”；OpenAI 解决”当分数被全世界引用时怎么保证分数有效”。&lt;strong&gt;你两个都需要。&lt;/strong&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;11. 如何自己搭：从 0 到 1 不需要平台&lt;/h2&gt;
&lt;h3&gt;11.1 最小可跑（四文件起步）&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;&lt;span&gt;&lt;span&gt;eval/&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  dataset.jsonl    # 20–50 个真实失败，每个带参考解&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  runner.ts        # 跑任务、隔离环境、记 transcript.jsonl&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  grader.ts        # 确定性 grader 为主 + 模型 grader 为辅&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  report.ts        # 输出 pass@1 / pass^k / failure 分布&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;&lt;span&gt;&lt;span&gt;20–50 cases + 隔离执行 + 确定性 grader + transcript.jsonl&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;已经足够。Terminal-Bench 2.0 的 outcome-driven 设计就是证明：“测试验证指令结果是否在容器最终状态达成，不测命令或控制台输出”【原文】。&lt;/p&gt;
&lt;h3&gt;11.2 开源与业界工具地图&lt;/h3&gt;
&lt;p&gt;先定阈值，再选工具【推论】：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&lt;span&gt;&lt;span&gt;规模增加 → tracing → dataset management → concurrency →&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;experiment tracking → annotation&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;下面的分类直接对应正文模型：Task → Harness → Observation → Grader → Metric → Production。注意 Inspect AI、Harbor、DeepEval、Promptfoo、Ragas、Phoenix、Opik 各自解决的不是同一个问题——把它们统称”Eval Framework”会产生错误认知。&lt;/p&gt;
&lt;h4&gt;A. Benchmark / Foundation Model（测模型能力，不是测完整 Agent 系统）&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;lm-evaluation-harness&lt;/strong&gt;（OSS，EleutherAI）：few-shot / zero-shot 标准 benchmark、多 backend（HF、vLLM、MPS）、task config——foundation model 能力的经典路线，正好强化”Benchmark ≠ Production Eval” &lt;a href=&quot;https://github.com/EleutherAI/lm-evaluation-harness&quot;&gt;21&lt;/a&gt;。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;OpenAI Evals / simple-evals&lt;/strong&gt;（OSS）：前者是 framework + benchmark registry，值得读其 eval schema 与 benchmark 实现；后者官方已标注 2025 年 7 月后不再为新模型/benchmark 持续更新，仅保留 HealthBench、BrowseComp、SimpleQA 等 reference implementation——两者状态要分开看 &lt;a href=&quot;https://github.com/openai/simple-evals&quot;&gt;22&lt;/a&gt;。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Inspect AI&lt;/strong&gt;（OSS，UK AI Security Institute + Meridian Labs）：面向 coding / agentic / reasoning / knowledge / behavior / multimodal，强调 datasets、agents、tools、scorers 可组合原语，200+ 预构建 eval——从单轮评测进入 frontier / agent / safety eval 的入口 &lt;a href=&quot;https://inspect.aisi.org.uk/&quot;&gt;24&lt;/a&gt;。&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;B. Application / LLM Eval（偏测试框架路线）&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;DeepEval&lt;/strong&gt;（OSS，Apache-2.0）：“Pytest for LLM apps”——测试用例、metric、CI gate 是一级对象，覆盖 LLM / RAG / conversation / agent；适合做 L3 Grader + Regression 开发框架，而非完整生产 observability 平台，直接对应 Failure → Eval → Fix → Regression &lt;a href=&quot;https://github.com/confident-ai/deepeval&quot;&gt;25&lt;/a&gt;。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Promptfoo&lt;/strong&gt;（OSS）：&lt;strong&gt;Prompt / Model Regression + Red Team 工具&lt;/strong&gt;，不是”另一个通用框架”——Prompt/Model/Attack 矩阵比较 + &lt;code&gt;redteam init → run → report&lt;/code&gt; 工作流、插件与攻击策略、CI run context，对应 Regression + Adversarial + Harness &lt;a href=&quot;https://github.com/promptfoo/promptfoo/blob/main/site/docs/red-team/configuration.md&quot;&gt;26&lt;/a&gt;。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Ragas&lt;/strong&gt;（OSS）：不要只当”RAG 工具”——当前已覆盖 RAG / Agent / Text-to-SQL / Workflow / Prompt evaluation / Judge alignment / Benchmarking；选型问题不是”哪个框架最好”，而是”哪个覆盖我的 failure surface” &lt;a href=&quot;https://docs.ragas.io/en/latest/howtos/cli/&quot;&gt;27&lt;/a&gt;。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;UpTrain&lt;/strong&gt;（OSS/平台）：开源 Evaluator 做记录与评估——轻量备选，不给 DeepEval / Promptfoo / Ragas 同等篇幅 &lt;a href=&quot;https://docs.uptrain.ai/tutorials/open-source-evaluator&quot;&gt;28&lt;/a&gt;。&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;C. Grader / Evaluation Library（只解决评分层）&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;AutoEvals&lt;/strong&gt;（OSS，Braintrust）：LLM-as-a-Judge + heuristic + statistical + factuality + safety，Python / TypeScript——只想快速获得一组可复用 grader 时用它；它是 grader library ≠ 完整 eval platform &lt;a href=&quot;https://github.com/braintrustdata/autoevals&quot;&gt;29&lt;/a&gt;。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;TruLens&lt;/strong&gt;（OSS）：核心是 feedback functions——metric 可绑定到 trace 具体组件（question / context / retrieval / response），支持 online evaluation、sampling、throttling；Grader 不只是”给最终回答打分” &lt;a href=&quot;https://www.trulens.org/component_guides/evaluation/running_feedback_functions/with_app/&quot;&gt;30&lt;/a&gt;。&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;D. Agent Evaluation / Harness（执行与沙箱层）&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Harbor&lt;/strong&gt;（OSS，Terminal-Bench 团队，Apache-2.0）= &lt;strong&gt;Execution / Sandbox / Rollout Harness&lt;/strong&gt;，≠ Grader / Metric / Benchmark——评测任意 agent、大规模并发（本地 Docker / 云端 Daytona、Modal、E2B 等）、默认隔离（全新容器、任务无状态、默认禁用网络）；Harbor Hub 已扩展到 datasets / tasks / leaderboards / trajectories / rollouts。这些默认值恰好覆盖了 Anthropic 事故暴露出的典型风险：状态污染、意外网络访问和环境串扰 &lt;a href=&quot;https://doi.org/10.5281/zenodo.20953922&quot;&gt;18&lt;/a&gt;&lt;a href=&quot;https://hub.harborframework.com/&quot;&gt;31&lt;/a&gt;。&lt;/li&gt;
&lt;li&gt;对应关系：&lt;strong&gt;Inspect = Evaluation logic，Harbor = Execution / sandbox infrastructure&lt;/strong&gt;——正好落回 L2/L3 分层。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Microsoft Prompt Flow&lt;/strong&gt;（OSS/平台）：flow 编排、调试、tracing、evaluation、CI/CD、部署、监控，大数据集 evaluation——workflow-oriented Eval，与 DeepEval（test-oriented）形成对比 &lt;a href=&quot;https://github.com/microsoft/promptflow&quot;&gt;32&lt;/a&gt;。&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;E. Observability + Evaluation（追踪与实验层，不排名）&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Arize Phoenix&lt;/strong&gt;（OSS）：tracing、datasets、experiments、eval，偏 OpenTelemetry / OpenInference。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Opik&lt;/strong&gt;（OSS，自托管）：tracing、evaluation、datasets、experiments、LLM-as-a-judge、production monitoring、pytest 集成，偏 tracing + eval + optimization &lt;a href=&quot;https://github.com/comet-ml/opik/blob/main/README.md&quot;&gt;33&lt;/a&gt;。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Langfuse&lt;/strong&gt;（OSS，自托管）：open-source observability / eval，有数据驻留/合规要求时优先。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;W&amp;amp;B Weave&lt;/strong&gt;（OSS/平台）：tracing、evaluation、experiment organization、production workflow，evaluation 代码主要在 &lt;code&gt;weave/flow&lt;/code&gt; &lt;a href=&quot;https://github.com/wandb/weave&quot;&gt;34&lt;/a&gt;。&lt;/li&gt;
&lt;li&gt;另有 LangSmith（LangChain 生态集成最顺）、EvalScope（&lt;a href=&quot;https://evalscope.readthedocs.io/&quot;&gt;文档&lt;/a&gt;，中文生态）按栈选择。很多团队是组合+自建小脚本，完全没问题（Anthropic &lt;a href=&quot;https://www.anthropic.com/engineering/demystifying-evals-for-ai-agents&quot;&gt;2&lt;/a&gt; 附录原话）。&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;F. Red Team / Security（对抗评估单独一类）&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Promptfoo&lt;/strong&gt;：adversarial testing / red teaming（见 B）。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Giskard&lt;/strong&gt;（OSS，v3 已转向）：agent eval、多轮测试、red teaming、test generation、RAG evaluation、vulnerability scanning &lt;a href=&quot;https://github.com/Giskard-AI/giskard-oss&quot;&gt;35&lt;/a&gt;。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Inspect AI&lt;/strong&gt;：safety / frontier evaluations（见 A）。&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;G. Cloud / Enterprise（云厂商原生 Eval）&lt;/h4&gt;
&lt;p&gt;云厂商 Eval 已从”模型 benchmark”进入”应用/Agent evaluation”：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Microsoft Foundry&lt;/strong&gt;（商业）：Model / Agent / Dataset / Trace evaluation，offline + production，full conversation / individual turn，code rules + LLM-as-a-judge + human review + pairwise comparison——几乎逐项对应 Task / Dataset / Agent / Trace / Grader / Production &lt;a href=&quot;https://learn.microsoft.com/en-us/azure/foundry/how-to/evaluate-generative-ai-app&quot;&gt;36&lt;/a&gt;。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;AWS Bedrock Evaluations&lt;/strong&gt;（商业）：foundation model（含 custom/imported）、RAG（retrieval 或 retrieve+generate 全链路）、LLM-as-a-Judge、programmatic evaluation &lt;a href=&quot;https://aws.amazon.com/bedrock/evaluations/&quot;&gt;37&lt;/a&gt;。&lt;/li&gt;
&lt;li&gt;另有 Google Vertex AI Evaluation、Braintrust（离线+线上打通）、Galileo（offline eval → production guardrail：production data → groundtruth → annotation → custom eval → guardrail，并把 expensive judge 压缩为低成本 Luna models，最贴合 Eval Flywheel）、Confident AI（DeepEval 的生产侧）按需选型。&lt;/li&gt;
&lt;li&gt;反例提醒：Humanloop 已于 2025-09-08 sunset，不在推荐表——Eval 产品不只是技术问题，平台生命周期本身也是选型风险。&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;H. 工具 → 五层模型映射（覆盖面示意，不是排名）&lt;/h4&gt;













































































































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;工具&lt;/th&gt;&lt;th&gt;Task&lt;/th&gt;&lt;th&gt;Harness&lt;/th&gt;&lt;th&gt;Grader&lt;/th&gt;&lt;th&gt;Observability&lt;/th&gt;&lt;th&gt;Production&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;DeepEval&lt;/td&gt;&lt;td&gt;★★★&lt;/td&gt;&lt;td&gt;★&lt;/td&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;Promptfoo&lt;/td&gt;&lt;td&gt;★★★&lt;/td&gt;&lt;td&gt;★★&lt;/td&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;Ragas&lt;/td&gt;&lt;td&gt;★★★&lt;/td&gt;&lt;td&gt;★&lt;/td&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;Inspect AI&lt;/td&gt;&lt;td&gt;★★★&lt;/td&gt;&lt;td&gt;★★★&lt;/td&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;Harbor&lt;/td&gt;&lt;td&gt;★★&lt;/td&gt;&lt;td&gt;★★★&lt;/td&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;Phoenix&lt;/td&gt;&lt;td&gt;★★&lt;/td&gt;&lt;td&gt;★&lt;/td&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;Opik&lt;/td&gt;&lt;td&gt;★★&lt;/td&gt;&lt;td&gt;★&lt;/td&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;Langfuse&lt;/td&gt;&lt;td&gt;★★&lt;/td&gt;&lt;td&gt;★&lt;/td&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;TruLens&lt;/td&gt;&lt;td&gt;★★&lt;/td&gt;&lt;td&gt;★&lt;/td&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;Prompt Flow&lt;/td&gt;&lt;td&gt;★★&lt;/td&gt;&lt;td&gt;★★★&lt;/td&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;Foundry&lt;/td&gt;&lt;td&gt;★★★&lt;/td&gt;&lt;td&gt;★★★&lt;/td&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;Bedrock&lt;/td&gt;&lt;td&gt;★★★&lt;/td&gt;&lt;td&gt;★★&lt;/td&gt;&lt;td&gt;★★★&lt;/td&gt;&lt;td&gt;★★★&lt;/td&gt;&lt;td&gt;★★★&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;p&gt;公开题集：SWE-bench Verified（有根本性设计与污染问题，慎用）、Terminal-Bench 2.0（89 任务，三位人工评审，前沿模型 &amp;lt;65%）、τ²-bench（政策+工具+任务+用户模拟器，榜单 &lt;a href=&quot;https://taubench.com/&quot;&gt;taubench.com&lt;/a&gt;，仓库 &lt;a href=&quot;https://github.com/sierra-research/tau2-bench&quot;&gt;14&lt;/a&gt;）。&lt;/p&gt;
&lt;p&gt;按团队规模：小团队先指定每周读 transcript 的人；中型把通过率做成合并门禁；大型把 eval 结果带进发布评审。&lt;strong&gt;买不到的部分&lt;/strong&gt;：前沿靶场、红队、第三方审计、生产规模流量、sandbagging 研究、公开缺陷的意愿——这些是资源与文化，不是工具。&lt;/p&gt;
&lt;p&gt;反模式：先买平台再想测什么；把默认 scorer 当金标准；只看 dashboard 不读 transcript；跑一次 benchmark 当结论；以为买了工具就有了体系（本体永远是 L1 任务集）。&lt;/p&gt;
&lt;p&gt;补充时效：OpenAI Evals 平台 &lt;strong&gt;2026-10-31 只读、2026-11-30 关停&lt;/strong&gt;，新项目改用 Datasets（见 &lt;a href=&quot;https://platform.openai.com/docs/guides/evals&quot;&gt;12&lt;/a&gt;）。&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;12. 最终原则&lt;/h2&gt;
&lt;p&gt;真正的问题不是”AI 能不能 100% 正确”，而是我们能不能把系统变成【归纳】：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&lt;span&gt;&lt;span&gt;可观察 → 可判定 → 可归因 → 可回归 → 可比较 → 可治理&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;并且形成：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&lt;span&gt;&lt;span&gt;生产失败 → 新的知识 → 新的 Eval → 新的约束 → 新的系统&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;所以可靠性不是&lt;strong&gt;一个模型属性&lt;/strong&gt;，而是&lt;strong&gt;系统属性 + 测量体系属性 + 组织属性&lt;/strong&gt;。&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;后果&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&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;/tr&gt;&lt;tr&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;/tr&gt;&lt;tr&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;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;p&gt;最后一句 operational 的：&lt;strong&gt;能不能判定，是需求设计问题；能不能一直判定下去，是人和纪律的问题。&lt;/strong&gt; 前者看 §3，后者看”每周谁读 transcript、每次事故是否新增 eval、发布评审是否看回归 diff”。&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;参考来源&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;开源与业界工具&lt;/strong&gt;&lt;/p&gt;</content:encoded></item><item><title>Dev weekly 2026-Sep-07</title><link>https://devweekly.github.io/posts/dev-weekly-2026-sep-07/</link><guid isPermaLink="true">https://devweekly.github.io/posts/dev-weekly-2026-sep-07/</guid><description>Dev weekly</description><pubDate>Mon, 07 Sep 2026 02:02:03 GMT</pubDate><content:encoded>&lt;h3&gt;AI and Programming&lt;/h3&gt;
&lt;p&gt;&lt;a&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://research.google/blog/timesfm-3-a-zero-shot-foundation-model-for-multivariate-forecasting/&quot;&gt;TimesFM-3: A zero-shot foundation model for multivariate forecasting&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://cs329z.stanford.edu/&quot;&gt;CS 329Z: Engineering AI Agents&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://mp.weixin.qq.com/s/Kqi13mAjN_Rh3EvN8TjWHg&quot;&gt;zg 正式开源：本地检索，不止于关键词&lt;/a&gt; &lt;a href=&quot;https://zvec.org/en/docs/zvec-grep/embedding-models/&quot;&gt;https://zvec.org/en/docs/zvec-grep/embedding-models/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://maven.com/search-school?utm_campaign=26ffb8&amp;amp;utm_medium=partner&amp;amp;utm_source=aipoweredsearch.com&amp;amp;utm_source=instructor&quot;&gt;AI Search - free lesson&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://blog.aihao.tw/2026/08/25/new-frontier-ai-search/&quot;&gt;AI 搜尋前沿技術總覽: 哪些該做、哪些值得投入、哪些先知道就好&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/anthropics/commerce-agents&quot;&gt;Claude 商务智能体&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://www.infoq.cn/article/WGj2Jx0K2sbP3dhUXeC5&quot;&gt;智能体请求暴增 9.4 倍，token 账单却没涨：Uber 公开 AI 软件工厂省钱方法&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://huggingface.co/blog/webgpu-kernels&quot;&gt;Introducing @huggingface/kernels: 200+ WebGPU Kernels for Local AI&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/ScholarXIV/OpenScholarXIV&quot;&gt;OpenScholarXIV&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://techcommunity.microsoft.com/blog/azure-ai-foundry-blog/stop-letting-agents-run-the-workflow/4550068&quot;&gt;Stop Letting Agents Run the Workflow&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://arxiv.org/html/2608.27454v1&quot;&gt;WikiSkill: Compiling Agent Experience into Persistent Knowledge for Skill Evolution&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/frontier-harness-eval/eval&quot;&gt;FrontierHarness Eval&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/JayeetaP/zero-to-agent-30-Oreilly-FinanceAgent&quot;&gt;zero-to-agent-30-Oreilly-FinanceAgent&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/calmrocks/ai-engineer-notebooks&quot;&gt;AI Engineer Notebooks&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://claude.com/blog/how-warp-builds-self-improving-agents-on-claude&quot;&gt;How Warp builds self-improving agents on Claude&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://mp.weixin.qq.com/s/KW5vvF2w1pkkBW36lLDcAg&quot;&gt;Anthropic最新多智能体研究&lt;/a&gt; 观察到了三类系统性的失效模式 Patterns and problems in emerging multiagent systems &lt;a href=&quot;https://www.anthropic.com/research/multiagent-systems&quot;&gt;https://www.anthropic.com/research/multiagent-systems&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://www.anthropic.com/research/claude-personal-guidance&quot;&gt;How people ask Claude for personal guidance&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://www.agent-native.com/docs/&quot;&gt;Agent-Native is an open-source TypeScript framework for building autonomous agents with intuitive UIs&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://tangleml.com/&quot;&gt;Tangle - Build ML and data pipelines collaboratively&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://medium.com/snowflake/one-skills-repo-every-ai-agent-how-our-data-team-ships-its-conventions-to-claude-code-gitlab-1fe42bd7c824&quot;&gt;One Skills Repo, Every AI Agent: How Our Data Team Ships Its Conventions to Claude Code, GitLab Duo, OpenCode, and Snowflake CoCo&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://nodejs.org/en/blog/events/nodejs-interactive-2026&quot;&gt;Node.js Interactive 2026: A Recap&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://www.infoq.cn/article/TKOvaxoX6xF5yWHJ7dYg&quot;&gt;shadcn 通过新推出的聊天组件将对话基础组件引入了 shadcn/ui&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://www.langchain.com/langsmith/evaluation&quot;&gt;如何使用langsmith对ai agent和prompt进行测试（类似unit test或者integration test）&lt;/a&gt; “Dataset → Target → Evaluators → Experiment → Regression Comparison”，所以测试的是：output 是否满足 expectations&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://medium.com/snowflake/snowflake-postgres-zero-etl-from-oltp-to-analytics-1d9117c9f8c8&quot;&gt;Snowflake Postgres: Zero-ETL from OLTP to Analytics&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;Others&lt;/h3&gt;
&lt;p&gt;&lt;a href=&quot;https://mp.weixin.qq.com/s/MafY4h7Tju-pmxf30tjjKA&quot;&gt;阿里投资Kimi始末 - elsewhere&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://duck.ai/&quot;&gt;duck.ai by duckduckgo&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://mp.weixin.qq.com/s/UL4mXjsw7y4AT2AzTveuCg&quot;&gt;人之恶，在好为人师&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://mp.weixin.qq.com/s/zmX3MsMWHN6t_Tbm98_SMw&quot;&gt;智谱与MiniMax背对背拥抱&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://www.gartner.com/en/newsroom/press-releases/gartner-survey-finds-only-22-percent-of-organizations-have-successfully-scaled-ai-across-multiple-business-units?utm_campaign=SM_GB_YOY_GTR_SOC_SF1_SM-PR&amp;amp;utm_medium=social&amp;amp;utm_source=threads%2Ctwitter&quot;&gt;Gartner Survey Finds Only 22% of Organizations Have Successfully Scaled AI Across Multiple Business Units&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a&gt;&lt;/a&gt;&lt;/p&gt;</content:encoded></item><item><title>Dev weekly 2026-Aug-31</title><link>https://devweekly.github.io/posts/dev-weekly-2026-aug-31/</link><guid isPermaLink="true">https://devweekly.github.io/posts/dev-weekly-2026-aug-31/</guid><description>Dev weekly</description><pubDate>Mon, 31 Aug 2026 02:02:03 GMT</pubDate><content:encoded>&lt;h3&gt;AI and Programming&lt;/h3&gt;
&lt;p&gt;&lt;a&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://www.allthingsdistributed.com/2026/08/duckdb-and-the-changing-physics-of-analytics.html&quot;&gt;DuckDB and the changing physics of analytics
DuckDB 与不断变化的分析物理学&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://mp.weixin.qq.com/s/xaXQvJMFfZ1tpPMd6vFaxA&quot;&gt;AWS收购DuckDB：鸭子飞进亚马逊雨林&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/Tencent/WeMM-Embedding/blob/main/README_zh.md&quot;&gt;WeMM-Embedding: WeChat Multi-Modal Embedding&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://claude.com/blog/the-ai-native-sdlc-playbook&quot;&gt;The AI-Native SDLC playbook&lt;/a&gt; How to transform your software development lifecycle with AI—stage by stage.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://www.oreilly.com/radar/when-smaller-models-win/&quot;&gt;When Smaller Models Win - Chess, LoRA, and the case for specialized AI&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://mp.weixin.qq.com/s/cUiGeUUGyhuhBSn3n2n2_w&quot;&gt;Anthropic内部AI Native经验公开&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/youssofal/MTPLX&quot;&gt;3x faster speeds on MLX - MTPLX&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://blog.aihao.tw/2026/08/22/ai-enabled-ai-first-ai-native/&quot;&gt;AI-enabled、AI First、AI Native: 一份 Excel 週報看懂五個階段&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://parqdb.io/&quot;&gt;parqdb Billion-scale vector search, built on Parquet&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://books.vizuara.ai/book/pretraining-a-mini-k3&quot;&gt;Pretraining a Mini Kimi K3&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/madeye/Legend-of-Sword-and-Fairy&quot;&gt;《仙剑奇侠传 DOS 版》— Rust 移植&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://reflex.dev/docs/xy/&quot;&gt;What is xy?&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://mp.weixin.qq.com/s/CMDayD_eI6U0ZDVzwVmbqw&quot;&gt;Qwen3.8-27B 本地部署&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://www.infoq.com/minibooks/architect-sociotechnical-craft/?utm_campaign=infoq_content&amp;amp;utm_medium=feed&amp;amp;utm_source=infoq&amp;amp;utm_term=global&quot;&gt;Architecture as a Socio-Technical Craft&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://examcademy.com/&quot;&gt;community-driven exam preparation ExamCademy&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;Others&lt;/h3&gt;
&lt;p&gt;&lt;a&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://mp.weixin.qq.com/s/stDprue1DP9n91MtnHxEVA&quot;&gt;如此城市｜菜市场里的中国城市江湖&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://mp.weixin.qq.com/s/tz4190ic55GJKL2V_K-Tfg&quot;&gt;象神杀人案：为迎娶白月光，高智商程序员一人分饰多角，密谋除掉妻子和情敌&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a&gt;&lt;/a&gt;&lt;/p&gt;</content:encoded></item><item><title>Dev weekly 2026-Aug-24</title><link>https://devweekly.github.io/posts/dev-weekly-2026-aug-24/</link><guid isPermaLink="true">https://devweekly.github.io/posts/dev-weekly-2026-aug-24/</guid><description>Dev weekly</description><pubDate>Mon, 24 Aug 2026 02:02:03 GMT</pubDate><content:encoded>&lt;h3&gt;AI and Programming&lt;/h3&gt;
&lt;p&gt;&lt;a&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://mp.weixin.qq.com/s/U_u_gZn5aDDj_LCzrSJ0Sg&quot;&gt;吴恩达来信：人工智能工程技能地图&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://www.minoradventures.co/blog/the-making-of-cursors-icons&quot;&gt;The making of Cursor’s icons&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://niki.cat/detecting-scraper-bots-through-scroll-behaviour&quot;&gt;Detecting scraper bots through scroll behaviour&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://wesmckinney.com/blog/agentic-engineering-aug-2026/&quot;&gt;How Kenn is doing Agentic Engineering&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://earendil.com/posts/what-is-a-harness/&quot;&gt;What is a Harness?&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://search.parqdb.io/&quot;&gt;ParqDB – Vector search in the browser from Parquet over HTTP&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://arize.com/blog/agent-as-a-judge-agentic-evaluation/&quot;&gt;Where agent evals are going: Agent-as-a-Judge&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://newsletter.pragmaticengineer.com/p/optiver&quot;&gt;Software engineering at a proprietary trading company: Optiver&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/yetone/cumora&quot;&gt;Cumora&lt;/a&gt; by Yetone. Cross-platform team chat where AI agents are first-class participants alongside humans — same roster, same DMs, same group conversations, same Kanban board and calendar&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://magazine.sebastianraschka.com/p/ai-detector-from-scratch&quot;&gt;Building an AI Text Detector From Scratch&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://medium.com/snowflake/your-favorite-database-just-moved-into-snowflakes-house-484594bba893&quot;&gt;Your Favorite Database Just Moved Into Snowflake’s House&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://mp.weixin.qq.com/s/Qq3A8K2yjD7Y4-DtNpEAzg&quot;&gt;DuckDB v2.0 正式预览：全新存储格式、查询快 2.3 倍，能直连 Postgres&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/ix-infrastructure/Ix&quot;&gt;Understand any codebase instantly&lt;/a&gt; 还是用的treesitter&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/mattpocock/skills/blob/main/skills%2Fproductivity%2Fgrilling%2FSKILL.md&quot;&gt;grilling - agent skill&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://linear.app/data&quot;&gt;AI usage patterns in software teams&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://earendil.com/posts/compaction-in-pi/&quot;&gt;How Compaction Works in Pi&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/kizuna-ai-lab/sokuji/blob/main/docs/README.zh.md&quot;&gt;实时语音翻译 — 云端或完全离线在您的设备上运行&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://mp.weixin.qq.com/s/dMvMrKJ4NefwHWJ9N8dx-g&quot;&gt;前 Jane Street 交易员：顶级交易机构如何建立 Edge&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://mp.weixin.qq.com/s/eZIFYySMQvadEA-dtQd39w&quot;&gt;Open Foundry / OpenFoundry 开源项目调查&lt;/a&gt; 对标 Palantir Foundry 的「运营智能+本体建模」赛道，但属于完全独立的两个开发团队、技术路线与产品定位差异极大&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://vonng.com/db/ontology-again/&quot;&gt;一场辩论之后，认真聊聊“本体论”&lt;/a&gt; by vonng &lt;a href=&quot;https://patents.google.com/?q=(Tech)&amp;amp;assignee=Palantir&amp;amp;oq=Palantir+Tech&amp;amp;sort=new&quot;&gt;https://patents.google.com/?q=(Tech)&amp;amp;assignee=Palantir&amp;amp;oq=Palantir+Tech&amp;amp;sort=new&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://mp.weixin.qq.com/s/P9gVyuGNmln2s_D1NqOINA&quot;&gt;本体论实践盘点：Palantir Ontology+Agent开源生态及3个开源项目进度&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;Others&lt;/h3&gt;
&lt;p&gt;&lt;a&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://mp.weixin.qq.com/s/vBgP_4fbZckmW9ri8R5E5w&quot;&gt;日谈公园｜牛魔王是《西游记》里的西门庆&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://feikuai.in/&quot;&gt;在线影视 feikuai&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/iam567/FLJopen&quot;&gt;FLJ - Twitter Account Verification Platform&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a&gt;&lt;/a&gt;&lt;/p&gt;</content:encoded></item><item><title>AI Agent interview questions</title><link>https://devweekly.github.io/posts/ai-agent-interview-questions/</link><guid isPermaLink="true">https://devweekly.github.io/posts/ai-agent-interview-questions/</guid><description>2026 年 AI Agent 工程师面试高频题与资料汇总，按主题归类并附真实来源</description><pubDate>Sat, 22 Aug 2026 02:02:03 GMT</pubDate><content:encoded>&lt;p&gt;AI Agent 从 research demo 走上生产栈只用了约 18 个月。2026 年的面试早已不问「什么是 Agent」，而是问「你有没有上线过一个能在一周生产环境里存活、不靠烧钱跑飞工具调用的 Agent」。以下把今年高频面试题按主题归类，并附上真实的题库与资料来源，可作为复习清单。&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;1. 基础概念（几乎必问）&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Agent 与 Chatbot 的本质区别：Chatbot 是「你问我答」的单向单次；Agent 是「感知 → 决策 → 行动 → 反思」的闭环，补上了工具、循环、记忆三样东西。&lt;/li&gt;
&lt;li&gt;Agent 与传统 LLM Chain / Pipeline 的区别：Chain 是写死在代码里的线性固定流程（A→B→C）；Agent 根据中间结果动态决定下一步。&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;一句话：&lt;strong&gt;Chain 是被编排的，Agent 是自主决策的。&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://agenticcareers.co/blog/agentic-ai-interview-questions-2026&quot;&gt;25 Agentic AI Interview Questions You Will Actually Get Asked (2026)&lt;/a&gt; — 从 phone screen 到 system design，强调「chain vs agent」是 autonomy over control flow&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.interviewcoder.co/blog/agentic-ai-interview-questions&quot;&gt;Top 35 Agentic AI Interview Questions and Answers (2026)&lt;/a&gt; — 基础 7 问：ReAct、Plan-and-execute、reflection、tool use、autonomous vs assisted&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://blog.csdn.net/2401_84204413/article/details/161658499&quot;&gt;2026年AI Agent面试大揭秘（含真题及答案要点）&lt;/a&gt; — 基础概念类门槛题汇总&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;h2&gt;2. 核心推理模式：ReAct / Plan-and-Execute / Reflexion&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;ReAct&lt;/strong&gt;（Reason + Act）：Thought → Action → Observation 循环，让下一步被真实数据 grounding，避免模型凭空向前幻觉。缺点是每个推理步都增加一次往返，有 token 成本与失控风险。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Plan-and-Execute&lt;/strong&gt;：先写完整计划再执行，任务可清晰拆解时更便宜；ReAct 适合后续步骤依赖前面返回结果的探索性任务（调试、分析）。实际项目多混合：大方向用 Plan，每步内部用 ReAct。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Reflexion&lt;/strong&gt;：执行后自我反思，把教训记下来供下次参考，而非盲目重试。成本约翻倍，需客观指标（测试通过率、完成度）验证反思是否有效，而非看 Agent 主观判断。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://blog.csdn.net/wanghuan1990519wha/article/details/163926161&quot;&gt;2026大厂AI Agent高频面试题Top50（题目+参考答案+追问陷阱）&lt;/a&gt; — Q9–Q18 专讲 Agent 核心架构，含手写 ReAct 核心循环&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://agenticcareers.co/blog/agentic-ai-interview-questions-2026&quot;&gt;25 Agentic AI Interview Questions&lt;/a&gt; — Q7：什么时候&lt;strong&gt;不该&lt;/strong&gt;用 ReAct（延迟敏感、任务简单、需要高度确定性）&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;h2&gt;3. 工具调用与协议：Function Calling / MCP / A2A&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Function Calling&lt;/strong&gt;：把工具描述（名称、用途、参数 schema）传给 LLM → LLM 决定调用并提取参数 → 系统执行 → 结果回传 LLM。难点在 schema 设计与错误处理。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;MCP（Model Context Protocol）&lt;/strong&gt;：Anthropic 提出的开放协议，标准化 Agent 与外部工具的连接，类比「USB 接口」——统一接口、降低集成成本、生态可扩展。2026 年很多公司用它替代手写工具接入层。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;A2A（Agent-to-Agent）&lt;/strong&gt;：Agent 间通信协议，解决多 Agent 协作时的分工、中间结果传递与冲突处理，仍属早期探索。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://blog.csdn.net/2401_84204413/article/details/161658499&quot;&gt;2026年AI Agent面试大揭秘&lt;/a&gt; — Q8–Q10：Function Calling 流程、MCP 为何重要、A2A 概念&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://www.interviewcoder.co/blog/agentic-ai-interview-questions&quot;&gt;Top 35 Agentic AI Interview Questions&lt;/a&gt; — Q10：RAG 与 tool-calling 的区别及选型&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;h2&gt;4. RAG 与记忆系统&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;RAG 流程&lt;/strong&gt;：文档分块 → 向量化 → 存入向量库 → 检索相关片段 → 拼接上下文生成。高频追问：Hybrid Search（关键词+向量）、Rerank、GraphRAG。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;记忆分层&lt;/strong&gt;：短期记忆 = 上下文窗口内；长期记忆 = 外部存储（向量库 / 知识图谱 / 文件），按需检索。核心不是「存得多」而是「取准」。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;持久化记忆设计需区分：in-context 短期记忆、episodic（结构化历史交互）、semantic（向量检索的可嵌入知识），并解决上下文增长时的压缩/摘要与陈旧冲突。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://agenticcareers.co/blog/agentic-ai-interview-questions-2026&quot;&gt;25 Agentic AI Interview Questions&lt;/a&gt; — Q5：长运行 Agent 的持久化记忆设计&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://blog.csdn.net/wanghuan1990519wha/article/details/163926161&quot;&gt;2026大厂AI Agent高频面试题Top50&lt;/a&gt; — Q28–Q40：RAG 与检索增强、Q36–Q40：记忆与上下文管理&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;h2&gt;5. 多 Agent 协作&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;单 Agent 适合线性任务；多 Agent 适合并行处理与需要制衡的场景（写代码 / 写测试 / 审查并行）。&lt;strong&gt;不要为炫技上多 Agent&lt;/strong&gt;——先确认单 Agent 确实做不好再拆分。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;任务分发三模式：路由（Orchestrator 按类型分发）、Swarm（并行处理投票选优）、流水线（A→B→C 有明确先后依赖）。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://blog.csdn.net/2401_84204413/article/details/161658499&quot;&gt;2026年AI Agent面试大揭秘&lt;/a&gt; — Q13–Q14：单/多 Agent 选型与任务分发&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://www.interviewcoder.co/blog/agentic-ai-interview-questions&quot;&gt;Top 35 Agentic AI Interview Questions&lt;/a&gt; — 多 Agent 协作与成本/通信开销权衡&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;h2&gt;6. 生产实战（压轴题，区分背八股与真干过）&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;死循环&lt;/strong&gt;：设硬上限（最大迭代 10–15、超时、token 预算红线）；检测重复无新信息的工具调用；恢复分三档（插提示换思路 / 压缩摘要重启 / 降级转人工）。reflection 失败 3 次必须熔断。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;幻觉&lt;/strong&gt;：三层防线——输入层给足上下文与参考资料；执行层关键输出用工具验证；输出层设审查 Agent 做一致性检查。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;成本控制&lt;/strong&gt;：模型路由（简单任务小模型，复杂任务才上大模型）、上下文裁剪、缓存相同/相似查询、迭代限制。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Prompt Injection&lt;/strong&gt;：输入清洗、系统提示与用户输入隔离不可覆盖、不可逆动作前做输出校验、沙箱化工具执行、最小权限原则。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://agenticcareers.co/blog/agentic-ai-interview-questions-2026&quot;&gt;25 Agentic AI Interview Questions&lt;/a&gt; — Q3 工具调用失败处理、Q8 prompt injection 防护、Q9 成本高效 Agent&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://www.interviewcoder.co/blog/agentic-ai-interview-questions&quot;&gt;Top 35 Agentic AI Interview Questions&lt;/a&gt; — Q6 为什么 Agent 会无限循环及如何停止&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://gitcode.csdn.net/6a066e3810ee7a33f272aea5.html&quot;&gt;2026京东健康AI Agent工程师面试题库（Java 技术栈）&lt;/a&gt; — 一线到三面完整答案，含 Spring AI / LangChain4j 架构与护栏设计&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;h2&gt;必读参考&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;https://www.anthropic.com/engineering/building-effective-agents&quot;&gt;Anthropic — Building Effective Agents&lt;/a&gt; 是今年被引用最多的参考，onsite 前建议先读。面试本质在考察：你是否真正理解控制流的自主性、能否用客观 eval 衡量 Agent 质量、是否在生产里踩过跑飞循环与成本爆表的坑。&lt;/p&gt;</content:encoded></item><item><title>Dev weekly 2026-Aug-17</title><link>https://devweekly.github.io/posts/dev-weekly-2026-aug-17/</link><guid isPermaLink="true">https://devweekly.github.io/posts/dev-weekly-2026-aug-17/</guid><description>Dev weekly</description><pubDate>Sun, 16 Aug 2026 02:02:03 GMT</pubDate><content:encoded>&lt;h3&gt;AI and Programming&lt;/h3&gt;
&lt;p&gt;&lt;a&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://support.claude.com/en/articles/16266773-how-claude-marks-ai-generated-content&quot;&gt;How Claude marks AI-generated content&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/google-deepmind/synthid-text&quot;&gt;SynthID Text&lt;/a&gt; reference implementation of the SynthID Text watermarking and detection capabilities for the research paper published in Nature&lt;/p&gt;
&lt;p&gt;&lt;a&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://arxiv.org/html/2510.10138v1&quot;&gt;Hybrid OCR-LLM Framework for Enterprise-Scale Document Information Extraction Under Copy-heavy Task&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/earendil-works/pi/blob/main/packages/agent/docs/harness.md&quot;&gt;AgentHarness — implementation specification&lt;/a&gt; PI&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://skyzh.github.io/mini-lsm/00-preface.html&quot;&gt;Mini-LSM — Build a Database Storage Engine in Rust&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://www.youtube.com/watch?v=Pp3EgOodc40&quot;&gt;ZoomIt for Mac: How AI Ported a 20+ Year-Old Windows Tool&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://www.infoq.com/articles/system-comprehension-evolutionary-architecture/&quot;&gt;Comprehension as an Architectural Characteristic: A System That Is Not Understood Cannot Evolve Safely&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://books.antinomie.org/pi/&quot;&gt;π-agent&lt;/a&gt; PI解读&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://www.youtube.com/watch?v=CxXgV54KzpQ&quot;&gt;Jeff Dean: The 1% Rule for Building in AI&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://zerolang.ai/&quot;&gt;zerolang - The Programming Language for Agents&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://yage.ai/share/turso-sqlite-vdbe-llvm-20260805.html&quot;&gt;SQLite 里藏着一台虚拟机，Turso 把它变成了数据库的 LLVM&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://claudecertificationguide.com/learn&quot;&gt;Claude Certified Architect (Foundations) exam&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://www.oreilly.com/radar/prompt-debt-and-fighting-the-weights/&quot;&gt;Prompt Debt and “Fighting the Weights”&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://earendil.com/posts/compaction-in-pi/&quot;&gt;How Compaction Works in Pi&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/cathrynlavery/diagram-design/tree/main&quot;&gt;Diagram Design&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://newsletter.maartengrootendorst.com/p/a-visual-guide-to-quantization&quot;&gt;A Visual Guide to Quantization&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/deepseek-ai/deepseek-harness/blob/master/docs/cordis-tutorial/index.zh.md&quot;&gt;Cordis 教程&lt;/a&gt; Cordis 是 DeepSeek Harness 底层的插件框架&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://john.fun/elevators&quot;&gt;Elevators&lt;/a&gt; 电梯算法&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://ieeexplore.ieee.org/document/11602610&quot;&gt;Technical Debt in the AI Era&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://wiretext.app/&quot;&gt;wiretext&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://declaude.org/watermarking/&quot;&gt;How AI text watermarking works&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://nndl.ai/llm-agent/&quot;&gt;蒲公英书系列&lt;/a&gt; 大模型与智能体&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://mp.weixin.qq.com/s/ZloR4kbXacxpcEkIEv3oUQ&quot;&gt;最佳实践：从Multi-Agent到Agent Team&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://www.langchain.com/blog/deep-agents-vs-langchain-vs-langgraph&quot;&gt;Deep Agents vs LangChain vs LangGraph&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;Others&lt;/h3&gt;
&lt;p&gt;&lt;a&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://mp.weixin.qq.com/s/SpJmtWZEBZtNYevCKvn6wQ&quot;&gt;汉魏之间｜东汉五一广场简牍“男子许夜强略女子胡尼、尼兄护刺杀夜”案&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://mp.weixin.qq.com/s/nkW24UV5yBPsoYCf-Lplmw&quot;&gt;腾讯研究院这份《FDE 模式行业观察与实践 》报告&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://mp.weixin.qq.com/s/2efS-zIwpiqvcd6Txk8nAQ&quot;&gt;罗新｜被遗忘的现代世界基石&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://mp.weixin.qq.com/s/MFfL-C8ucJ12q52dyKXo2Q&quot;&gt;从传统评点看金庸｜《连城诀》篇：金庸最黑暗的小说？&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a&gt;&lt;/a&gt;&lt;/p&gt;</content:encoded></item><item><title>Dev weekly 2026-Aug-10</title><link>https://devweekly.github.io/posts/dev-weekly-2026-aug-10/</link><guid isPermaLink="true">https://devweekly.github.io/posts/dev-weekly-2026-aug-10/</guid><description>Dev weekly</description><pubDate>Sun, 09 Aug 2026 02:02:03 GMT</pubDate><content:encoded>&lt;h3&gt;AI and Programming&lt;/h3&gt;
&lt;p&gt;&lt;a&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://www.oreilly.com/radar/ai-as-an-enterprise-operating-system/&quot;&gt;AI as an Enterprise Operating System&lt;/a&gt; A conversation with Dan Guido of Trail of Bits&lt;/p&gt;
&lt;p&gt;&lt;a&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://refactoringenglish.com/excerpts/write-an-effective-design-doc/&quot;&gt;How to Write an Effective Software Design Document&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://mitsloan.mit.edu/ideas-made-to-matter/ai-financial-advice-surprisingly-good-especially-if-you-ask-right-questions&quot;&gt;AI financial advice is surprisingly good — especially if you ask the right questions&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://www.oreilly.com/radar/introduction-to-post-training/&quot;&gt;Introduction to Post-training&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://www.allthingsdistributed.com/2026/08/on-building-scalable-control-planes.html?utm_campaign=inbound&amp;amp;utm_source=rss&quot;&gt;On building scalable control planes&lt;/a&gt; allthingsdistributed&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://blog.cloudflare.com/cloudflare-computer/&quot;&gt;Your agent needs a computer, not a container — introducing @cloudflare/computer&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/firecrawl/pdf-inspector&quot;&gt;pdf-inspector by firecrawl&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://clickhouse.com/blog/andy-pavlo-joins-clickhouse?utm_campaign=andy-pavlo-clickhouse-labs&amp;amp;utm_medium=social&amp;amp;utm_source=twitter&quot;&gt;Andy Pavlo joins ClickHouse to establish ClickHouse Labs&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://blog.cloudflare.com/mcp-portal-writeguard-private-beta/&quot;&gt;WriteGuard: fine-grained controls for MCP Servers&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://developer.amap.com/api/mcp-server/gettingstarted&quot;&gt;快速接入高德地图 MCP Server&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://yage.ai/share/llm-finetuning-cost-engineering-20260806.html?utm_source=twitter&amp;amp;utm_medium=thread&amp;amp;utm_campaign=llm-finetuning-cost-engineering-20260806&quot;&gt;微调回来了，但理由变了：2026 LLM Fine-tuning 从能力增强到成本工程 &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://blog.cloudflare.com/meerkat-introduction/&quot;&gt;Introducing Meerkat: an experiment in global consensus&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://engineering.grab.com/how-ai-is-transforming-analytics&quot;&gt;How AI is transforming analytics at Grab&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/vitali87/code-graph-rag&quot;&gt;Code-Graph-RAG&lt;/a&gt; parses a multi-language codebase with Tree-sitter, builds a knowledge graph of its structure in Memgraph&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://huggingface.co/blog/LiquidAI/lfm2-5-2-6b&quot;&gt;Deploy local agents everywhere with LFM2.5-2.6B&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://huggingface.co/ATH-MaaS/OvisOCR2&quot;&gt;OvisOCR2&lt;/a&gt; from Alibaba&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://www.oreilly.com/radar/radar-trends-to-watch-august-2026/&quot;&gt;Radar Trends to Watch: August 2026&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://aws.amazon.com/blogs/machine-learning/from-weeks-to-minutes-how-formula-1-uses-agentic-ai-on-aws-to-accelerate-data-operations/&quot;&gt;From weeks to minutes: How Formula 1® uses agentic AI on AWS to accelerate data operations&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/xdash/FDE-the-Guidance-Book-of-Forward-Deployed-Engineer&quot;&gt;前线部署工程师：人工智能时代的客户价值交付秘籍&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://duckdb.org/2026/07/31/asynchronous-io&quot;&gt;Asynchronous I/O in DuckDB: Work, Thread, Work&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://earendil.com/posts/pi-autoresearch-and-databricks/&quot;&gt;Pi’s Minimalism Is Its Advantage&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://deepgrove.ai/maple-inference&quot;&gt;Running a 20B Language Model at 218 tokens/s on a Mac mini&lt;/a&gt; &lt;a href=&quot;https://github.com/deepgrove-ai/mlx-lm-deepgrove&quot;&gt;https://github.com/deepgrove-ai/mlx-lm-deepgrove&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://ai.richardxu.com/ml/&quot;&gt;Machine Learning, taught one tensor at a time&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://mp.weixin.qq.com/s/rI8p67B_bMoNO8FTPdVIyQ&quot;&gt;Agent 时代“图”的用途与技术演进：PageIndex、GraphRAG、LLM Wiki 和 LangGraph&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://www.codedex.io/&quot;&gt;Explore 250+ hours of free interactive coding lessons&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://www.kirupa.com/data_structures_algorithms/dfs_bfs_lab.htm&quot;&gt;DFS and BFS Lab&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://www.kirupa.com/data_structures_algorithms/dijkstra_lab.htm&quot;&gt;Dijkstra Lab&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/nihalashetty/Forge&quot;&gt;Forge&lt;/a&gt; self-hosted platform for visually building, testing, and shipping AI agents &amp;amp; workflows&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://medium.com/snowflake/why-ai-needs-enterprise-context-more-than-a-full-ontology-4701c45058d2&quot;&gt;Why AI Needs Enterprise Context More Than a Full Ontology&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/yc-software/qm&quot;&gt;qm - A multiplayer agent harness for work. In Slack and on the web.&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/Carloscodix/qapla&quot;&gt;Qapla&lt;/a&gt; how you train a transformer from scratch on an eight-buck ESP32-S3&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://michaelscodingspot.com/five-coding-agents/&quot;&gt;How I Work With 5 Coding Agents Simultaneously&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://mp.weixin.qq.com/s/hrKdYATh_9rdASVAdjGymg&quot;&gt;中金：基于Loop Engineering的自动化因子发现引擎&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/dietrichgebert/ponytail&quot;&gt;Ponytail&lt;/a&gt; Makes your AI agent think like the laziest senior dev in the room.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/qqqqqf-q/OpenAnytime&quot;&gt;鱼跃 5 HSE（安耐糖 / Anytime CGM）完整逆向文档&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/leonickson1/Swiftlet&quot;&gt;Swiftlet&lt;/a&gt; Run 35B and 80B Qwen models on ordinary Apple devices, including iPhones.&lt;/p&gt;
&lt;p&gt;&lt;a&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;Others&lt;/h3&gt;
&lt;p&gt;&lt;a&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://fishframe.net/itp&quot;&gt;入画·清明上河图：走进汴京，成为画中人&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://mp.weixin.qq.com/s/4IEQbUpsQe6BgNytNYgSnQ&quot;&gt;民国上海吃喝指南｜浙江路上的萝春阁茶楼&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://mp.weixin.qq.com/s/-Vs63qtkDY_KjJdSApy-Ng&quot;&gt;经观荐书·2026 | 7月好书榜：这12本新书值得关注&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://mp.weixin.qq.com/s/JL5fss8qEp-14ucj5k6isQ&quot;&gt;日谈公园｜八仙成团记：神仙组合诞生史&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://sspai.com/post/112730&quot;&gt;诗经山河图：我用 AI 做了一张《诗经》地图&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://wangcong.org/2026-06-30-why-i-stopped-arguing-with-people.html&quot;&gt;Why I Stopped Arguing With People&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://mp.weixin.qq.com/s/INI1jw3_zMrlXapsyTGo0w&quot;&gt;《东行漫记》：近代中国风云突变之际的社会图景和人物群像&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://www.bbc.com/news/articles/c89n0xykw2go&quot;&gt;US admits ‘unfortunate error’ after mislabelling countries on map of Africa&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://bjorg.bjornroche.com/management/ai-productivity-gap/&quot;&gt;The AI productivity gap&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a&gt;&lt;/a&gt;&lt;/p&gt;</content:encoded></item><item><title>Dev weekly 2026-Aug-03</title><link>https://devweekly.github.io/posts/dev-weekly-2026-aug-03/</link><guid isPermaLink="true">https://devweekly.github.io/posts/dev-weekly-2026-aug-03/</guid><description>Dev weekly</description><pubDate>Sun, 02 Aug 2026 02:02:03 GMT</pubDate><content:encoded>&lt;h3&gt;AI and Programming&lt;/h3&gt;
&lt;p&gt;&lt;a&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://www.langchain.com/blog/3-years-of-graph-engineering-with-langgraph&quot;&gt;3 Years of Graph Engineering with LangGraph&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://www.kaggle.com/docs/mcp&quot;&gt;How to Use Kaggle MCP Server&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://blog.aihao.tw/2026/07/26/beyond-rag-llamaindex-workshop/&quot;&gt;2026 年的 RAG 最新發展: 瓶頸不在模型，也不在檢索，在文件解析&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://newsletter.pragmaticengineer.com/p/inside-anthropic&quot;&gt;How building software is changing at Anthropic Anthropic 的软件构建方式正在发生怎样的变化&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://www.oreilly.com/radar/the-economics-of-agentic-ai-engineering-for-imperfection/&quot;&gt;The Economics of Agentic AI: Engineering for Imperfection&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://www.langchain.com/blog/how-similarweb-evaluates-long-form-agent-research-reports-with-langsmith&quot;&gt;How Similarweb Evaluates Long-Form Agent Research Reports with LangSmith&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://theaioperator.io/p/what-is-graph-engineering-a-field&quot;&gt;What Is Graph Engineering? A Field Guide for Builders&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://www.oreilly.com/radar/stop-overengineering-your-agent-harness/&quot;&gt;Stop Overengineering Your Agent Harness&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://zhanghandong.github.io/hermes-book/&quot;&gt;Hermes Agent 源码与设计&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://aws.amazon.com/blogs/machine-learning/ai-teammates-how-monday-com-runs-production-ai-agents-on-amazon-bedrock/&quot;&gt;AI Teammates: how monday.com runs production AI agents on Amazon Bedrock&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://laurentiugabriel.github.io/token-town/&quot;&gt;TokenTown is an isometric city where every district is one stage of a transformer language model&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://fluxtion-playground.dev/blog/2026-07-29-graph-engineering-needs-a-compiler&quot;&gt;Graph Engineering Needs a Compiler&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://martinfowler.com/articles/archaeologist-copilot.html&quot;&gt;The Archaeologist’s Copilot&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://tracewayapp.com/blog/sqlite-vs-duckdb&quot;&gt;SQLite vs DuckDB on the same $16 box: every cliff moved 100x&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://www.oreilly.com/radar/ai-demands-more-engineering-discipline-not-less/&quot;&gt;AI Demands More Engineering Discipline, Not Less&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://yage.ai/share/harness-genes-multi-agent-20260727.html?utm_campaign=harness-genes-multi-agent-20260727&amp;amp;utm_medium=thread&amp;amp;utm_source=twitter&quot;&gt;都是 Multi-Agent，各家 AI 编程 Harness 的基因与信仰到底有何不同？&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://www.eigent.ai/blog/graph-engineering-ai-agents&quot;&gt;Graph Engineering for AI Agents: Beyond Single Feedback Loops AI Agent 的图工程：超越单一反馈循环&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://towardsdatascience.com/reducing-human-annotation-with-ml-active-learning/&quot;&gt;Reducing Human Annotation with ML Active Learning&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://fermisense.com/when-machines-take-the-wheel/&quot;&gt;The Rise of Intelligence Ownership&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://core.ac.uk/&quot;&gt;The world’s largest collection of open access research papers&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://newsletter.getdx.com/p/the-state-of-ai-impact-in-engineering&quot;&gt;The State of AI Impact in Engineering: Q2 2026&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://martinfowler.com/articles/orchestrator-tax.html&quot;&gt;The Orchestrator’s Tax&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;Others&lt;/h3&gt;
&lt;p&gt;&lt;a&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://aws.amazon.com/cn/blogs/china/using-lm-evaluation-harness-amazon-bedrock-model-humaneval/&quot;&gt;使用 lm-evaluation-harness 评估 Amazon Bedrock 模型：以 HumanEval 为例&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://www.honeycomb.io/thank-you-observability-engineering&quot;&gt;Observability Engineering version 2026&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://caolan.uk/notes/2026-07-02_a_speed_limit_for_computers.cm&quot;&gt;A Speed Limit for Computers&lt;/a&gt; 《能源与公平》——伊万·伊里奇（1973 年）&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://astgrep.com/blog/tree-sitter-rust-rewrite&quot;&gt;How ast-grep Rewrote Tree-sitter in Rust and Made It 30% Faster&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a&gt;&lt;/a&gt;&lt;/p&gt;</content:encoded></item></channel></rss>