<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>入门与全景 on 扎塔-Zata</title><link>https://www.zata.cc/tags/%E5%85%A5%E9%97%A8%E4%B8%8E%E5%85%A8%E6%99%AF/</link><description>Recent content in 入门与全景 on 扎塔-Zata</description><generator>Hugo -- gohugo.io</generator><language>zh-cn</language><copyright>Example Person</copyright><lastBuildDate>Thu, 24 Sep 2026 17:09:06 +0800</lastBuildDate><atom:link href="https://www.zata.cc/tags/%E5%85%A5%E9%97%A8%E4%B8%8E%E5%85%A8%E6%99%AF/index.xml" rel="self" type="application/rss+xml"/><item><title>Agent 生产工程全景手册：从 Runtime 到业务闭环</title><link>https://www.zata.cc/p/agent-production-engineering-handbook/</link><pubDate>Wed, 23 Sep 2026 16:48:35 +0800</pubDate><guid>https://www.zata.cc/p/agent-production-engineering-handbook/</guid><description>&lt;img src="https://www.zata.cc/p/agent-production-engineering-handbook/images/index/index.svg" alt="Featured image of post Agent 生产工程全景手册：从 Runtime 到业务闭环" />&lt;blockquote>
&lt;p>本文是一份 Agent 工程知识总纲，目标是把“能跑一个 Agent”推进到“能让 Agent 系统在真实任务中稳定运行，并能证明它有效”。它覆盖架构、运行、验证、治理和业务结果；具体框架的 API 与云产品参数应以对应版本的官方文档为准。&lt;/p>
&lt;/blockquote>
&lt;h2 id="先看全貌生产级-agent-系统是什么">先看全貌：生产级 Agent 系统是什么
&lt;/h2>&lt;p>生产级 Agent 不是一个模型调用循环，而是一套围绕任务运行的系统。模型负责在有限上下文中提出下一步行动；平台负责验证、执行、记录和约束这些行动；用户或业务系统负责定义什么结果才算完成。&lt;/p>
&lt;p>先把系统划分成三个边界：&lt;/p>
&lt;ol>
&lt;li>&lt;strong>控制面&lt;/strong>：身份、策略、配置版本、模型路由、配额、队列和工作流定义。它决定谁可以发起什么任务，以及任务如何调度。&lt;/li>
&lt;li>&lt;strong>执行面&lt;/strong>：Run Controller、Agent Runtime、工具网关、Worker 和沙箱。它在受限环境中推进任务，并把状态写回持久化存储。&lt;/li>
&lt;li>&lt;strong>证据面&lt;/strong>：事件、Trace、审计、评测结果、成本和业务指标。它回答任务发生了什么、是否合格、出了问题如何追查。&lt;/li>
&lt;/ol>
&lt;p>&lt;img src="https://www.zata.cc/p/agent-production-engineering-handbook/images/agent-platform-layers.svg"
loading="lazy"
alt="生产级 Agent 平台的控制面、执行面与证据面"
>&lt;/p>
&lt;div class="mermaid">
flowchart LR
U[用户 / Issue / API] --&amp;gt; G[入口与身份认证]
G --&amp;gt; Q[任务队列与调度]
Q --&amp;gt; O[工作流编排]
O --&amp;gt; R[Agent Runtime]
R --&amp;gt; M[模型与上下文]
R --&amp;gt; T[工具 / MCP / 沙箱]
T --&amp;gt; D[代码库 / 数据 / 外部系统]
R --&amp;gt; E[事件、日志、Trace]
E --&amp;gt; V[评测、审计、成本与告警]
V --&amp;gt; O
O --&amp;gt; H[人工审批 / 交付]
H --&amp;gt; U
&lt;/div>
&lt;p>一个典型 Coding Agent 任务会经过：接收 Issue、检查权限、创建隔离工作区、读取代码和约束、调用模型规划、执行工具、运行测试、整理证据、等待必要审批、创建 PR，最后记录结果。任务可能持续数分钟甚至数小时，中间会遇到模型超时、工具异常、用户取消、机器重启和预算耗尽。因此，系统设计必须覆盖任务全生命周期，而不只是“模型返回了答案”。&lt;/p>
&lt;h3 id="能力层次知道会做做过生产能负责">能力层次：知道、会做、做过生产、能负责
&lt;/h3>&lt;table>
&lt;thead>
&lt;tr>
&lt;th>层级&lt;/th>
&lt;th>证据&lt;/th>
&lt;th>例子&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>知道&lt;/td>
&lt;td>能说清概念、适用范围和风险&lt;/td>
&lt;td>解释幂等、工具权限和离线评测&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>会做&lt;/td>
&lt;td>独立完成可复现实验或功能&lt;/td>
&lt;td>实现可恢复的 Agent Run，跑固定任务集&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>做过生产&lt;/td>
&lt;td>真实用户持续使用，处理过故障和回归&lt;/td>
&lt;td>有任务量、成功率、接管率、事故复盘&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>能负责&lt;/td>
&lt;td>能做架构取舍、设指标、推动协作并承担结果&lt;/td>
&lt;td>设计多租户平台并对质量、成本和业务价值负责&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;p>“做过生产”不是部署到一台服务器就算。它意味着有真实使用、有运行数据、有故障处理、有变更回归，也知道系统在哪些情况下应该拒绝执行或交给人。&lt;/p>
&lt;h2 id="1-agent-runtime把模型循环变成可管理的任务执行">1. Agent Runtime：把模型循环变成可管理的任务执行
&lt;/h2>&lt;h3 id="11-runtime-的边界">1.1 Runtime 的边界
&lt;/h3>&lt;p>Agent Runtime 是一次 Agent 运行的执行环境与控制层。它负责把输入、上下文、模型、工具和状态组织成受控循环，直到任务成功、失败、被取消或达到限制。&lt;/p>
&lt;p>一次基础循环如下：&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-text" data-lang="text">&lt;span class="line">&lt;span class="cl">接收输入与权限上下文
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> → 构造模型请求
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> → 解析模型输出（最终答复或工具调用）
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> → 校验工具参数与权限
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> → 执行工具并记录结果
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> → 更新任务状态和上下文
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> → 继续循环，直到终止条件成立
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Runtime 应明确区分“模型建议做什么”和“平台允许执行什么”。模型输出不是授权凭证；任何读写工具都需要由 Runtime 按用户、租户、任务和资源范围再次鉴权。&lt;/p>
&lt;h3 id="12-一次-run-的完整生命周期">1.2 一次 Run 的完整生命周期
&lt;/h3>&lt;p>Run 是有身份、有边界、有预算、有结果的一次任务尝试。一次用户目标可能因为重试或人工修复而有多个 Run；不要把“业务任务”和“某次执行尝试”混成一个对象。&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-text" data-lang="text">&lt;span class="line">&lt;span class="cl">创建请求 → 鉴权/策略检查 → 排队 → 分配 Worker → 准备沙箱
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> → 运行 Agent Loop ↔ 调用模型/工具
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> → 验收与风险检查 → 成功/等待审批/失败/取消/超时
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> → 保存交付物 → 清理资源 → 汇总指标与审计
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>&lt;img src="https://www.zata.cc/p/agent-production-engineering-handbook/images/run-lifecycle.svg"
loading="lazy"
alt="一次 Run 的生命周期与恢复边界"
>&lt;/p>
&lt;p>建议区分以下对象：&lt;/p>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th>对象&lt;/th>
&lt;th>生命周期&lt;/th>
&lt;th>应保存的核心字段&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>Task&lt;/td>
&lt;td>用户希望完成的业务目标&lt;/td>
&lt;td>来源、需求、仓库/资源、验收条件、发起者&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Run&lt;/td>
&lt;td>对 Task 的一次执行尝试&lt;/td>
&lt;td>状态、配置版本、模型、预算、起止时间、终止原因&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Step&lt;/td>
&lt;td>Run 中可观察、可重试或可审批的工作单元&lt;/td>
&lt;td>类型、输入/输出引用、状态、尝试次数、耗时&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Event&lt;/td>
&lt;td>状态变化或重要事实的追加记录&lt;/td>
&lt;td>序号、时间、主体、事件类型、关联对象、脱敏载荷&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Artifact&lt;/td>
&lt;td>运行产生的文件或交付物&lt;/td>
&lt;td>内容摘要、存储位置、访问策略、来源 Step&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;p>将大块日志和工作区快照放对象存储，以不可变引用关联 Run；关系数据库保存状态与索引。不要把完整代码 diff、长模型输出和二进制文件塞入运行状态行。&lt;/p>
&lt;h3 id="13-runtime-的核心部件">1.3 Runtime 的核心部件
&lt;/h3>&lt;table>
&lt;thead>
&lt;tr>
&lt;th>部件&lt;/th>
&lt;th>责任&lt;/th>
&lt;th>关键设计问题&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>Run Controller&lt;/td>
&lt;td>创建、推进、取消和终止一次运行&lt;/td>
&lt;td>状态转换是否合法？谁能取消？&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Model Adapter&lt;/td>
&lt;td>统一模型请求、流式输出、工具调用和错误&lt;/td>
&lt;td>超时、限流、模型差异如何处理？&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Context Builder&lt;/td>
&lt;td>选择并组织提示词、历史、检索资料和工具说明&lt;/td>
&lt;td>如何限制 token、隔离不可信内容？&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Tool Gateway&lt;/td>
&lt;td>校验 schema、权限、配额并分发工具调用&lt;/td>
&lt;td>写操作是否需要审批？如何防止重放？&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>State Store&lt;/td>
&lt;td>保存 Run、步骤、事件和检查点&lt;/td>
&lt;td>进程重启后能否恢复？状态如何迁移？&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Execution Sandbox&lt;/td>
&lt;td>隔离运行代码、浏览器或命令&lt;/td>
&lt;td>文件、网络、密钥、CPU 和内存边界是什么？&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Observability&lt;/td>
&lt;td>记录结构化事件、指标、Trace 和审计&lt;/td>
&lt;td>能否重建因果链？敏感数据如何脱敏？&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;h3 id="14-状态机事件与恢复">1.4 状态机、事件与恢复
&lt;/h3>&lt;p>不要只把运行状态存成一个 &lt;code>running=true/false&lt;/code>。至少为任务定义清晰的状态机，例如：&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-text" data-lang="text">&lt;span class="line">&lt;span class="cl">queued → running → waiting_approval → running → succeeded
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> ↘ retrying ↗ ↘ failed / cancelled / timed_out
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>每次状态转换都应有可检查的前置条件，并写入事件记录。建议保存：Run ID、任务输入摘要、配置和提示词版本、模型版本、工具调用、步骤结果、预算消耗、错误分类、检查点和终止原因。事件用于审计和重建过程；检查点用于从安全边界继续运行。二者用途不同，不能只留一份最终对话文本。&lt;/p>
&lt;p>恢复时要区分：&lt;/p>
&lt;ul>
&lt;li>&lt;strong>可安全重试&lt;/strong>：只读请求、带幂等键的操作，或明确没有副作用的步骤。&lt;/li>
&lt;li>&lt;strong>需要对账&lt;/strong>：请求可能已在下游成功，但本地没收到响应。先查下游状态，再决定是否重试。&lt;/li>
&lt;li>&lt;strong>不能自动重试&lt;/strong>：不可逆外部副作用、资金或权限变更等高风险步骤，应暂停并要求人工处理。&lt;/li>
&lt;/ul>
&lt;p>幂等键应覆盖业务任务与操作身份，例如 &lt;code>run_id + step_id + operation&lt;/code>。只按 HTTP 请求 ID 去重，无法阻止同一业务动作在重试时重复发生。&lt;/p>
&lt;p>检查点需要放在语义安全的边界，例如“工具调用已完成且结果已持久化”，而不是任意一段对话文本之后。若在工具执行完成、结果还没写入状态库时进程崩溃，重启后系统无法知道副作用是否发生。这种不确定窗口需要由下游幂等键、查询对账或人工确认来解决。&lt;/p>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th>故障位置&lt;/th>
&lt;th>恢复动作&lt;/th>
&lt;th>需要防范的问题&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>调用模型前&lt;/td>
&lt;td>从当前步骤继续&lt;/td>
&lt;td>请求重复、上下文版本变化&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>模型响应后、尚未执行工具&lt;/td>
&lt;td>保存响应或重发请求&lt;/td>
&lt;td>采样结果变化、重复费用&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>工具执行中&lt;/td>
&lt;td>按工具语义查询/重试/转人工&lt;/td>
&lt;td>下游已成功但本地超时&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>工具成功、结果未落库&lt;/td>
&lt;td>使用幂等键查询结果&lt;/td>
&lt;td>重复写入或重复发布&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>等待审批&lt;/td>
&lt;td>持久暂停，审批事件到达后恢复&lt;/td>
&lt;td>审批过期、参数被替换&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Worker 被终止&lt;/td>
&lt;td>租约过期后由新 Worker 接管&lt;/td>
&lt;td>两个 Worker 同时执行&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;p>Worker 领取任务时可使用带过期时间的租约。续租失败的旧 Worker 必须停止写入；数据库条件更新或 fencing token 可以阻止失去租约的进程覆盖新执行者的状态。租约本身不能撤销已经发出的外部副作用，因此副作用仍需幂等保护。&lt;/p>
&lt;h3 id="15-限制循环和资源">1.5 限制循环和资源
&lt;/h3>&lt;p>每个 Run 都要有明确预算：最大步骤数、墙钟时间、模型调用次数、输入输出 token、工具调用次数、并发数、CPU/内存、网络访问范围和金钱成本。达到限制时要有确定行为：安全终止、降级、请求用户补充信息，或转人工；不能无限循环或静默超支。&lt;/p>
&lt;p>常见防护包括重复工具调用检测、相同状态循环检测、指数退避和抖动、熔断、请求取消传播、模型与工具级超时、队列背压。重试策略必须设置总预算，避免瞬时故障引发重试风暴。&lt;/p>
&lt;h3 id="16-会话上下文不等于长期记忆">1.6 会话上下文不等于长期记忆
&lt;/h3>&lt;p>短期上下文用于当前 Run 的推理，长期记忆用于跨 Run 保留经过授权、经过筛选的信息。把所有历史直接塞回上下文会增加费用、噪声和隐私风险。上下文构建应显式决定：系统规则、任务输入、可信业务数据、检索资料、历史摘要、工具定义各自的边界和优先级。&lt;/p>
&lt;p>上下文预算需要为模型输出和工具结果留空间；检索结果应带来源与时间；工具返回内容和用户内容都视为不可信数据，不能让它们覆盖系统指令。压缩历史时保留决策、未完成事项、关键证据和引用，而不是只保留一段无法核对的自然语言总结。&lt;/p>
&lt;h3 id="17-工具执行与隔离">1.7 工具执行与隔离
&lt;/h3>&lt;p>工具调用的安全边界至少包括：JSON/schema 校验、身份与资源授权、租户隔离、速率和成本限制、审计记录、超时与取消。工具风险可以分级：只读、可逆写入、不可逆或外部副作用。高风险工具应采用最小权限、人工审批和执行后核验。&lt;/p>
&lt;p>执行不可信代码时，进程隔离不等于完整沙箱。要检查文件系统、网络出口、凭证注入、容器逃逸面、CPU/内存/运行时限额和清理策略。密钥尽量通过短期凭证或受控代理提供，避免写入提示词、日志、环境快照和 Agent 可读文件。&lt;/p>
&lt;p>延伸阅读：&lt;a class="link" href="https://www.zata.cc/p/agent-runtime-explained/" >Agent Runtime 详解&lt;/a>、&lt;a class="link" href="https://www.zata.cc/p/agent-%E6%B2%99%E7%AE%B1%E9%80%89%E5%9E%8B%E6%8C%87%E5%8D%97%E9%9A%94%E7%A6%BB%E8%BE%B9%E7%95%8C%E4%BA%A7%E5%93%81%E5%AF%B9%E6%AF%94%E4%B8%8E%E5%88%A4%E6%96%AD%E6%A0%87%E5%87%86/" >Agent 沙箱选型指南&lt;/a>、&lt;a class="link" href="https://www.zata.cc/p/agent-run-%E6%B5%81%E5%BC%8F%E5%8D%8F%E8%AE%AE%E4%BA%8B%E4%BB%B6%E6%BA%AF%E6%BA%90sse-%E6%8A%95%E5%BD%B1%E4%B8%8E%E6%96%AD%E7%BA%BF%E6%81%A2%E5%A4%8D/" >Agent Run 流式协议&lt;/a>。&lt;/p>
&lt;h2 id="2-工作流调度与交付">2. 工作流、调度与交付
&lt;/h2>&lt;h3 id="21-工作流与-agent-loop-的区别">2.1 工作流与 Agent Loop 的区别
&lt;/h3>&lt;p>Agent Loop 是一次运行内部“观察—推理—行动”的循环。工作流是更高层的业务过程，规定多个步骤、条件、并行分支、人工检查和失败补偿如何衔接。调度器负责何时、在哪个执行资源上启动工作；队列负责缓冲和分发工作。它们相关，但不是同一个组件。&lt;/p>
&lt;p>适合用确定性工作流的部分：权限检查、测试、审批、发布、通知、数据迁移。适合交给 Agent 判断的部分：从 Issue 提取意图、探索代码、提出修改方案、解释失败。把所有步骤都交给模型，会让本应确定的控制流程变得不可预测。&lt;/p>
&lt;h3 id="22-工作流的基本要素">2.2 工作流的基本要素
&lt;/h3>&lt;ul>
&lt;li>&lt;strong>触发器&lt;/strong>：Issue、Webhook、定时任务、API 请求或人工启动。&lt;/li>
&lt;li>&lt;strong>步骤与依赖&lt;/strong>：顺序、并行、条件分支、循环和子流程。&lt;/li>
&lt;li>&lt;strong>状态&lt;/strong>：每步输入、输出、版本、开始结束时间和执行结果。&lt;/li>
&lt;li>&lt;strong>等待点&lt;/strong>：人工审批、外部事件、限流恢复或长时间等待。&lt;/li>
&lt;li>&lt;strong>失败策略&lt;/strong>：重试、补偿、回滚、暂停、转人工或终止。&lt;/li>
&lt;li>&lt;strong>版本&lt;/strong>：流程定义和执行中的 Run 使用哪个版本；升级如何兼容旧 Run。&lt;/li>
&lt;li>&lt;strong>可见性&lt;/strong>：用户能看到进展、暂停原因、待审批动作和最终证据。&lt;/li>
&lt;/ul>
&lt;p>对长任务，应将工作流状态持久化，不能依赖一个常驻进程的内存。工作进程可随时被替换；任务恢复依靠数据库、事件日志、队列和明确的步骤边界。&lt;/p>
&lt;h3 id="23-如何选择同步执行队列与持久化工作流">2.3 如何选择同步执行、队列与持久化工作流
&lt;/h3>&lt;table>
&lt;thead>
&lt;tr>
&lt;th>执行方式&lt;/th>
&lt;th>适合场景&lt;/th>
&lt;th>主要代价&lt;/th>
&lt;th>必须考虑&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>同步请求&lt;/td>
&lt;td>几秒内完成、没有长等待、失败可以直接返回&lt;/td>
&lt;td>请求连接占用、超时传播复杂&lt;/td>
&lt;td>网关超时、客户端断线、取消语义&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>队列 + Worker&lt;/td>
&lt;td>异步任务、需要削峰和并发控制&lt;/td>
&lt;td>需要状态查询和结果通知&lt;/td>
&lt;td>重复投递、死信、背压、公平调度&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>持久化工作流引擎&lt;/td>
&lt;td>长任务、等待审批、多步骤副作用、跨小时恢复&lt;/td>
&lt;td>状态模型和版本治理更复杂&lt;/td>
&lt;td>历史兼容、活动超时、重放确定性&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;p>不要为“可能以后会很复杂”先引入重量级引擎。先根据任务时长、恢复要求、等待点和副作用数量选型；一旦需要长时间等待、可靠恢复和人工审批，内存里的简单队列通常就不够了。&lt;/p>
&lt;h3 id="24-工作流定义应版本化">2.4 工作流定义应版本化
&lt;/h3>&lt;p>每次执行开始时固定工作流版本、工具策略版本、提示词版本和模型路由版本。运行中的流程不要被新配置静默改变。升级策略通常有三种：让旧 Run 按旧版本继续；提供显式迁移函数；或安全暂停旧 Run 并由人工决定。修改审批条件、权限规则或数据格式时，要把迁移纳入发布评审。&lt;/p>
&lt;p>工作流活动应有确定的输入输出契约。活动可以是普通服务函数，也可以是 Agent 子任务；Agent 子任务也要有超时、预算、输入范围、验收条件和明确的失败结果。&lt;/p>
&lt;h3 id="25-幂等补偿和人工门禁">2.5 幂等、补偿和人工门禁
&lt;/h3>&lt;p>队列通常提供至少一次投递，因此消费者必须假设同一消息会重复到达。通过 Run/Step 唯一键、状态条件更新和下游幂等键实现去重。若一个流程包含多个外部副作用，数据库事务通常无法覆盖所有系统；应采用 Saga 思路，为已完成步骤定义补偿操作，或在失败时暂停并人工对账。&lt;/p>
&lt;p>人工审批不是弹窗装饰，而是流程中的持久状态。审批记录应绑定具体动作、目标资源、参数摘要、发起者、审批者、时间和策略版本；动作内容发生变化时，旧审批不能自动复用。审批通过后仍要再次检查授权和资源状态。&lt;/p>
&lt;h3 id="26-coding-agent-示例工作流">2.6 Coding Agent 示例工作流
&lt;/h3>&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-text" data-lang="text">&lt;span class="line">&lt;span class="cl">接收 Issue
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">→ 校验来源、仓库权限、预算和任务类型
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">→ 创建 Worktree / 沙箱并固定基线提交
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">→ Agent 分析并制定计划
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">→ 按权限执行代码和工具操作
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">→ 运行单测、集成测试和静态检查
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">→ 归纳差异、测试输出和风险
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">→ 人工审查高风险变更
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">→ 创建 PR 并等待 CI
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">→ 汇总结果、清理资源、记录指标
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>每个阶段都应有输入契约、输出契约和超时。Agent 未完成任务时，系统要能给出明确失败原因，而不是制造一个看似成功的空 PR。验证步骤失败时，工作流应保留工作区和证据，方便继续修复或人工接管。&lt;/p>
&lt;h3 id="31-软件测试与-agent-评测分别验证什么">3.1 软件测试与 Agent 评测分别验证什么
&lt;/h3>&lt;table>
&lt;thead>
&lt;tr>
&lt;th>类型&lt;/th>
&lt;th>要回答的问题&lt;/th>
&lt;th>例子&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>单元测试&lt;/td>
&lt;td>单个函数和状态转换是否正确？&lt;/td>
&lt;td>重试计数、权限判定、序列化&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>集成测试&lt;/td>
&lt;td>模型、工具、存储和队列接口能否协作？&lt;/td>
&lt;td>Tool Gateway 与沙箱联调&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>端到端测试&lt;/td>
&lt;td>从入口到交付的链路是否跑通？&lt;/td>
&lt;td>Issue 到 PR 的真实流程&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>可靠性测试&lt;/td>
&lt;td>故障后是否可恢复、是否会重复副作用？&lt;/td>
&lt;td>杀进程、断网、超时、重复消息&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Agent 评测&lt;/td>
&lt;td>Agent 对一组任务完成得如何？&lt;/td>
&lt;td>修改正确性、验收测试、成本和时间&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>安全测试&lt;/td>
&lt;td>是否越权、泄露、受注入影响或逃出隔离？&lt;/td>
&lt;td>提示注入、恶意仓库内容、网络探测&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;p>传统测试主要验证程序行为；Agent 评测验证一组可变模型行为。二者需要共同构成发布门禁，不能用单元测试覆盖率替代任务成功率。&lt;/p>
&lt;h3 id="32-测试金字塔和发布门禁">3.2 测试金字塔和发布门禁
&lt;/h3>&lt;p>越靠近底层的测试运行越快、越稳定，适合高频执行；端到端和真实模型测试更接近用户结果，但运行成本更高、方差也更大。推荐的门禁组合：&lt;/p>
&lt;ol>
&lt;li>每次提交：格式、静态检查、单元测试、权限和状态机测试。&lt;/li>
&lt;li>合并前：集成测试、工具契约测试、少量端到端 Smoke 用例。&lt;/li>
&lt;li>模型/提示词/工作流变更：固定 Agent 回归集和安全用例。&lt;/li>
&lt;li>发布候选：多次重复运行关键任务、容量检查、故障注入与人工抽查。&lt;/li>
&lt;li>上线后：小流量灰度、监控任务质量和成本，达到停止条件时回滚配置或关闭高风险工具。&lt;/li>
&lt;/ol>
&lt;p>端到端测试不要依赖无法控制的实时模型响应来断言每个 token。可以在不同层次使用固定响应模拟器验证协议，在隔离评测环境中调用真实模型验证整体表现，并为每层分别设定通过标准。&lt;/p>
&lt;h3 id="33-建立可信的任务-benchmark">3.3 建立可信的任务 Benchmark
&lt;/h3>&lt;p>每个评测用例至少固定：任务描述、仓库和提交版本、环境、工具权限、模型与提示词版本、预算、验收标准、参考结果或自动评分器。用例应覆盖正常路径、边界输入、工具失败、模糊需求和安全风险。数据集要记录来源、许可、隐私处理和修改历史。&lt;/p>
&lt;p>对于 Coding Agent，验收可组合使用：隐藏测试、公开测试、静态分析、差异范围检查、构建成功、人工代码审查和任务说明一致性。测试必须在干净环境中从固定基线执行，不能接受 Agent 修改测试来“证明”自己正确。对于开放式任务，先由领域专家写评分 rubric，再通过盲评样本校准自动评分器。&lt;/p>
&lt;p>指标至少分四组：&lt;/p>
&lt;ol>
&lt;li>&lt;strong>结果质量&lt;/strong>：验收测试通过率、功能正确性、缺陷率、回归率。&lt;/li>
&lt;li>&lt;strong>交付效率&lt;/strong>：端到端时间、首次成功时间、人工接管率、返工次数。&lt;/li>
&lt;li>&lt;strong>资源消耗&lt;/strong>：模型调用次数、token、工具时间、单任务成本。&lt;/li>
&lt;li>&lt;strong>安全与可靠性&lt;/strong>：越权率、敏感信息泄露率、恢复成功率、重复副作用率。&lt;/li>
&lt;/ol>
&lt;p>成功定义必须先写清楚。例如，代码“有 diff”不等于任务成功；只有满足验收、未破坏现有功能、成本在预算内且没有越权才可计为成功。LLM-as-judge 可补充主观质量判断，但评分器也会偏差，应抽样人工校准，并保留可重复的客观检查。&lt;/p>
&lt;h3 id="34-方差回归与线上反馈">3.4 方差、回归与线上反馈
&lt;/h3>&lt;p>模型采样会导致同一用例多次运行结果不同。关键用例应重复运行，报告均值、区间和失败分布；样本较小时不要把细微涨幅包装成确定提升。修改模型、系统提示、工具 schema、检索、Runtime 或工作流后，运行同一套回归集，并按预先设定的质量、安全、延迟和成本门槛决定是否发布。&lt;/p>
&lt;p>线上评估需要关注分布漂移：真实用户任务可能超出离线集合。记录失败类型和人工接管原因，经隐私审查后抽样补充到评测集；防止只收录 Agent 容易完成的任务。可采用影子运行、有限灰度和 A/B，但要避免把高风险动作直接交给实验组。&lt;/p>
&lt;h3 id="35-失败分类与实验设计">3.5 失败分类与实验设计
&lt;/h3>&lt;p>失败应按可行动的原因分类，而不是只记“模型失败”：需求解析错误、上下文缺失、计划不完整、工具选择错误、参数无效、权限拒绝、环境不一致、测试没有发现缺陷、结果总结失真、预算耗尽、用户取消等。分类要能落到改进手段，并允许多个原因共同存在。&lt;/p>
&lt;p>比较两个 Agent 版本时，固定任务集和执行环境，记录模型、提示词、工具、Runtime、采样参数和数据版本。一次只改变少数变量；否则即使成绩变化，也无法知道原因。报告总成功率之外的分任务类型表现、失败类别、成本和方差。避免只挑容易提升的任务或在看过测试答案后反复调到过拟合。&lt;/p>
&lt;h3 id="36-故障注入和发布验证">3.6 故障注入和发布验证
&lt;/h3>&lt;p>主动模拟模型 429/5xx、工具超时、队列重复投递、数据库不可用、进程被杀、沙箱耗尽、用户取消和预算超限。验证的不只是“报警响了”，还包括：Run 状态是否正确、重试是否受控、用户能否理解当前状态、恢复后是否重复副作用、审计证据是否完整。&lt;/p>
&lt;p>发布后用 SLO 判断系统是否健康。可为入口可用性、任务排队时间、任务完成率、恢复时间和安全事件设置服务目标；当错误预算耗尽，应暂停高风险变更，优先修复可靠性问题。&lt;/p>
&lt;p>&lt;img src="https://www.zata.cc/p/agent-production-engineering-handbook/images/evaluation-loop.svg"
loading="lazy"
alt="从任务集、运行、评分到回归门禁的评测闭环"
>&lt;/p>
&lt;h2 id="4-可观测性审计与事故响应">4. 可观测性、审计与事故响应
&lt;/h2>&lt;h3 id="41-三种记录各自回答什么">4.1 三种记录各自回答什么
&lt;/h3>&lt;ul>
&lt;li>&lt;strong>日志&lt;/strong>：某个组件发生了什么，适合诊断具体错误。&lt;/li>
&lt;li>&lt;strong>指标&lt;/strong>：整体趋势和服务健康度如何，适合告警与容量规划。&lt;/li>
&lt;li>&lt;strong>Trace&lt;/strong>：一次任务跨模型、工具、队列和服务的因果链是什么。&lt;/li>
&lt;li>&lt;strong>审计事件&lt;/strong>：谁或哪个 Agent 在什么授权下，对哪个资源做了什么动作，结果如何。&lt;/li>
&lt;/ul>
&lt;p>一次 Agent Run 的 Trace 应贯穿排队、Runtime、模型请求、工具调用、测试、审批和交付。每个 Span 记录耗时、状态、版本和必要的成本信息。提示词和完整输出可能含有敏感数据，不应无条件写入通用日志；采用访问控制、脱敏、保留期限和按需取样。&lt;/p>
&lt;p>可把每个 Run 的关联标识统一起来：&lt;code>task_id&lt;/code> 关联业务目标，&lt;code>run_id&lt;/code> 关联一次尝试，&lt;code>step_id&lt;/code> 关联工作流步骤，&lt;code>trace_id&lt;/code> 关联分布式调用链。不要把用户邮箱、原始 Issue 文本等个人或敏感信息直接放入指标标签，避免高基数和隐私泄漏。&lt;/p>
&lt;p>建议先建立以下运行指标：&lt;/p>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th>指标&lt;/th>
&lt;th>关注点&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>入队数、排队时长、队列深度&lt;/td>
&lt;td>是否积压、调度是否公平&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>活跃 Run、完成/失败/取消数&lt;/td>
&lt;td>执行容量和终止原因&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>模型请求成功率、限流率、延迟&lt;/td>
&lt;td>供应商健康与路由表现&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>工具调用成功率、超时率&lt;/td>
&lt;td>工具可靠性和参数质量&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>每 Run Token、成本、沙箱时长&lt;/td>
&lt;td>成本上限与优化空间&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>人工审批等待、人工接管、返工&lt;/td>
&lt;td>产品可用性与人力负担&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;p>SLO 要对应用户能感知的结果。例如“99% 的任务在 30 秒内开始执行”比“Worker CPU 低于 80%”更接近服务承诺。Agent 的任务成功率受任务类型影响，需要分层统计；只报全局均值会掩盖某类任务严重退化。对于低频高风险安全事件，可采用绝对告警和人工升级，而不是等待统计显著性。&lt;/p>
&lt;h3 id="42-事故闭环">4.2 事故闭环
&lt;/h3>&lt;p>事故处理要能完成发现、止损、恢复、根因分析和预防。复盘聚焦系统条件，不止写“模型犯错”：是权限过宽、验收标准缺失、重试导致副作用、上下文截断、部署变更回归，还是用户操作不清楚？每个行动项都要有负责人和可验证的完成标准。&lt;/p>
&lt;p>事故响应手册至少说明：如何停止新 Run、如何取消正在运行的 Run、如何撤销/轮换凭证、如何封禁工具或模型路由、如何保留证据、如何恢复队列和数据、谁负责通知用户。定期演练这些操作；紧急按钮如果从未演练，不能视为可用控制。&lt;/p>
&lt;p>延伸阅读：&lt;a class="link" href="https://www.zata.cc/p/agent-tracing-%E5%9F%BA%E7%A1%80trace-span-%E4%B8%8E-opentelemetry-%E5%9F%8B%E7%82%B9/" >Agent Tracing 基础&lt;/a>、&lt;a class="link" href="https://www.zata.cc/p/agent-decision-audit-and-tracing/" >Agent 决策审计&lt;/a>、&lt;a class="link" href="https://www.zata.cc/p/agent-decision-audit-implementation/" >Agent 决策审计落地&lt;/a>。&lt;/p>
&lt;h2 id="5-安全与治理让-agent-的权限可控行为可追溯">5. 安全与治理：让 Agent 的权限可控、行为可追溯
&lt;/h2>&lt;h3 id="51-威胁边界">5.1 威胁边界
&lt;/h3>&lt;p>把用户、模型、工具、检索内容、代码仓库、浏览器页面、MCP 服务和外部 API 都纳入威胁模型。攻击者可能通过直接提示、文档/网页中的间接提示注入、恶意依赖、伪造工具输出或被盗凭证影响 Agent。模型输出本身也可能错误或越权。&lt;/p>
&lt;p>风险至少包括：提示注入、数据泄露、工具越权、命令执行、供应链攻击、跨租户访问、凭证暴露、拒绝服务和不可逆副作用。每种风险要写明资产、攻击路径、影响、预防、检测和应急处置。&lt;/p>
&lt;h3 id="52-控制原则">5.2 控制原则
&lt;/h3>&lt;ul>
&lt;li>&lt;strong>最小权限&lt;/strong>：按用户、Run、仓库和操作发放短期、细粒度权限。&lt;/li>
&lt;li>&lt;strong>明确授权&lt;/strong>：模型不能通过自然语言自行扩大权限。&lt;/li>
&lt;li>&lt;strong>输入分区&lt;/strong>：系统指令与不可信内容分开，并把检索和工具结果标为数据。&lt;/li>
&lt;li>&lt;strong>外部副作用门禁&lt;/strong>：删除、发布、付款、权限修改等动作默认需审批或受严格策略控制。&lt;/li>
&lt;li>&lt;strong>网络与文件隔离&lt;/strong>：限制沙箱出站访问和挂载路径，防止读取宿主凭证。&lt;/li>
&lt;li>&lt;strong>审计和响应&lt;/strong>：保存必要的动作证据，支持撤销凭证、停用工具和终止 Run。&lt;/li>
&lt;li>&lt;strong>自动化红队回归&lt;/strong>：把已发现的攻击模式加入回归集，确保修复不会退化。&lt;/li>
&lt;/ul>
&lt;p>提示词防护只能作为一层，不能替代工具授权、沙箱、网络限制和人工控制。对高影响操作，应使用确定性策略在模型之外实施。&lt;/p>
&lt;h3 id="53-威胁建模工作表">5.3 威胁建模工作表
&lt;/h3>&lt;p>对每项重要能力，可以按“资产—主体—入口—动作—影响—控制—证据”建立威胁记录：&lt;/p>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th>场景&lt;/th>
&lt;th>可能路径&lt;/th>
&lt;th>必要控制&lt;/th>
&lt;th>验证证据&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>仓库中的恶意指令诱导 Agent 外传密钥&lt;/td>
&lt;td>Agent 读取 README 后调用网络工具&lt;/td>
&lt;td>密钥不暴露给模型；网络出口白名单；工具授权&lt;/td>
&lt;td>注入回归用例、网络拒绝日志&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>两租户共享缓存返回彼此结果&lt;/td>
&lt;td>缓存键没有租户/权限维度&lt;/td>
&lt;td>租户隔离键、授权后读取、敏感结果不共享&lt;/td>
&lt;td>跨租户负向测试&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>重试重复创建外部资源&lt;/td>
&lt;td>下游成功但响应丢失&lt;/td>
&lt;td>幂等键、状态查询和对账&lt;/td>
&lt;td>断网故障注入与副作用计数&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>沙箱读取宿主凭证&lt;/td>
&lt;td>目录挂载或环境变量泄露&lt;/td>
&lt;td>最小挂载、短期凭证代理、无特权容器&lt;/td>
&lt;td>沙箱逃逸测试和配置审查&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>审批后内容被替换&lt;/td>
&lt;td>审批只绑定 Run 而不绑定参数&lt;/td>
&lt;td>对规范化动作摘要签名/绑定，执行前复核&lt;/td>
&lt;td>参数篡改测试与审计记录&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;p>不要把威胁模型当成一次性表格。新工具、新数据源、新租户共享能力和权限变更都可能引入新的攻击路径；安全测试应跟随架构变化持续更新。&lt;/p>
&lt;h2 id="6-模型rag-与上下文工程">6. 模型、RAG 与上下文工程
&lt;/h2>&lt;h3 id="61-工程岗位需要的模型深度">6.1 工程岗位需要的模型深度
&lt;/h3>&lt;p>Agent 平台工程师不必训练大参数基座模型，但应理解 Transformer 如何基于上下文计算下一个 Token、Tokenization 与上下文窗口对输入长度的影响、推理调用的延迟与成本、结构化输出和 Tool Use 的失败模式、采样参数、模型版本变化以及模型能力边界。无需成为训练算法专家，但应能和算法团队一起定义任务、数据、评价器和实验设计。&lt;/p>
&lt;p>工程上要把模型看成带有能力、价格、延迟、上下文长度和服务等级属性的依赖，而不是一个永远稳定的纯函数。模型升级、供应商切换、系统提示调整和推理参数修改都属于影响行为的变更，需要版本记录与回归验证。&lt;/p>
&lt;p>可逐步掌握：&lt;/p>
&lt;ol>
&lt;li>&lt;strong>模型路由&lt;/strong>：根据任务难度、延迟、隐私和预算选择模型；失败时有受控降级策略。&lt;/li>
&lt;li>&lt;strong>RAG&lt;/strong>：文档解析、切分、索引、召回、重排、引用和检索质量评估。&lt;/li>
&lt;li>&lt;strong>上下文工程&lt;/strong>：按任务装配信息，控制噪声、冲突、长度和可信度。&lt;/li>
&lt;li>&lt;strong>推理部署&lt;/strong>：理解吞吐、并发、批处理、KV cache、量化和服务弹性等核心取舍。&lt;/li>
&lt;li>&lt;strong>微调实验&lt;/strong>：能完成一次有基线、有独立测试集、有版本记录的 LoRA/SFT 实验。&lt;/li>
&lt;/ol>
&lt;p>是否微调，应由失败分析决定。知识频繁变化通常应先更新检索数据；工具调用失败可能需要改 schema、示例或 Runtime；只有在行为模式稳定、数据合规且收益可测时，才考虑训练。训练集和测试集必须隔离，避免把测试答案泄漏进训练。&lt;/p>
&lt;h3 id="62-rag-的质量链">6.2 RAG 的质量链
&lt;/h3>&lt;p>RAG 不是“接向量数据库”。需要分别评估解析与切分质量、召回率、排序、答案忠实度、引用准确性、时效性和访问控制。权限过滤要在检索阶段生效，不能先取出不该访问的内容，再指望模型不复述。对每个答案保留来源片段，方便验证与审计。&lt;/p>
&lt;p>检索阶段可用 Recall@k 检查相关片段是否进入候选集，用 MRR 或 nDCG 检查相关结果是否排在前面；生成阶段则检查答案是否由证据支持、引用是否指向正确段落、证据不足时是否正确拒答。检索和生成要分开诊断：答案错了，不一定是模型不会总结，也可能是解析漏页、切分破坏语义、过滤器误删或重排器排序失误。&lt;/p>
&lt;h3 id="63-成本和延迟">6.3 成本和延迟
&lt;/h3>&lt;p>完整任务成本包括模型 Token、工具/沙箱计算、检索、存储、网络和人工处理。使用小模型处理分类、提取等简单步骤，大模型处理复杂推理；结合缓存、上下文裁剪、并行化和预算上限。缓存键要考虑租户、权限、模型与提示词版本、数据时效，避免跨用户泄漏或返回过期结果。&lt;/p>
&lt;p>跟踪端到端延迟及 p50/p95/p99，而不只看模型首 Token 时间。对于长任务，可将用户感知拆成排队时间、首次进展时间、人工等待时间和总完成时间。&lt;/p>
&lt;h3 id="64-什么时候微调什么时候不微调">6.4 什么时候微调，什么时候不微调
&lt;/h3>&lt;table>
&lt;thead>
&lt;tr>
&lt;th>观察到的问题&lt;/th>
&lt;th>优先检查&lt;/th>
&lt;th>可能的处理方式&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>答案缺少最新事实&lt;/td>
&lt;td>数据是否进入检索、过滤是否正确&lt;/td>
&lt;td>更新知识源、重建索引、改进引用验证&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>工具参数经常不合法&lt;/td>
&lt;td>Schema、示例、解析与错误反馈&lt;/td>
&lt;td>收紧 schema、结构化输出、工具契约测试&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>任务经常漏步骤&lt;/td>
&lt;td>工作流是否显式、上下文是否完整&lt;/td>
&lt;td>拆分阶段、增加检查点、调整规划提示&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>领域表达风格不稳定&lt;/td>
&lt;td>规范样例是否足够、评价目标是否清楚&lt;/td>
&lt;td>提示词和样例优化；必要时评估微调&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>高难推理不稳定&lt;/td>
&lt;td>任务是否超出模型能力、评测是否可诊断&lt;/td>
&lt;td>模型升级/路由、工具辅助、问题降级或人工复核&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;p>只有当目标行为稳定、样本质量和授权合格、训练/验证/测试分离、推理成本与收益可量化时，微调才是合理候选。一次实验应保留基座模型、数据版本、训练配置、随机种子、评估集、结果和回滚方式；否则无法判断提升来自哪里，也无法复现。&lt;/p>
&lt;h3 id="65-sft偏好优化与-agent-轨迹">6.5 SFT、偏好优化与 Agent 轨迹
&lt;/h3>&lt;ul>
&lt;li>&lt;strong>SFT（监督微调）&lt;/strong>：用高质量输入—目标输出示例训练模型模仿期望行为。数据要定义清楚角色、工具调用格式、成功终止和拒绝边界。&lt;/li>
&lt;li>&lt;strong>偏好优化（如 DPO）&lt;/strong>：用偏好对表达“同一上下文下哪个结果更好”。偏好标注必须有一致标准；不能把安全拒绝错误地标成低质量答案。&lt;/li>
&lt;li>&lt;strong>Tool Use 训练&lt;/strong>：不只训练工具名，还需要覆盖何时调用、参数如何组织、工具失败后如何修正、何时停止和何时询问用户。&lt;/li>
&lt;li>&lt;strong>Agent 轨迹数据&lt;/strong>：包含任务、上下文、动作、工具结果、验证反馈和最终结果。轨迹必须检查权限、隐私、成功标签和失败原因，不能把“曾经执行过”当成“值得模仿”。&lt;/li>
&lt;/ul>
&lt;p>训练集和验证集按任务或来源隔离，防止同一个仓库、用户或模板的近重复任务跨集合泄漏。实验结果应与不微调的强基线比较，并同时评估任务质量、拒答、安全、工具调用、延迟和部署成本。&lt;/p>
&lt;h2 id="7-分布式执行与多租户平台">7. 分布式执行与多租户平台
&lt;/h2>&lt;p>从单机原型走向平台，主要增加的是故障域、隔离和控制面复杂度，而不是简单地把服务多开几份。&lt;/p>
&lt;h3 id="71-参考架构和数据边界">7.1 参考架构和数据边界
&lt;/h3>&lt;p>典型组件包括 API/控制面、任务队列、调度器、无状态 Worker、状态数据库、对象存储、模型网关、沙箱池和可观测性管道。控制面管理配置、身份、配额和策略；数据面执行具体 Run。运行状态应持久化，Worker 尽可能可替换。&lt;/p>
&lt;p>多租户需逐层隔离：身份与数据行、队列和配额、密钥、检索索引、文件/沙箱、Trace 查看权限及缓存。任何一个共享层都要验证租户边界。限流和公平调度可避免一个租户占满模型额度或 Worker。&lt;/p>
&lt;h3 id="72-可靠性和扩展">7.2 可靠性和扩展
&lt;/h3>&lt;ul>
&lt;li>队列削峰并提供背压；消费者处理重复投递。&lt;/li>
&lt;li>Worker 水平扩展，但受模型并发、沙箱容量和租户配额约束。&lt;/li>
&lt;li>数据库使用事务和版本化迁移；可再生成的索引与不可丢失的原始任务数据分开治理。&lt;/li>
&lt;li>对模型供应商、队列和存储故障定义降级、重试、隔离和恢复策略。&lt;/li>
&lt;li>设定容量指标和成本预算；压测排队、吞吐、尾延迟与恢复能力。&lt;/li>
&lt;li>通过备份恢复演练验证数据可恢复，而不是只确认备份任务成功。&lt;/li>
&lt;/ul>
&lt;p>先收集真实负载和瓶颈，再引入分布式组件。对个人原型，过早引入复杂微服务会增加运维面，却未必增加用户价值。&lt;/p>
&lt;h3 id="73-容量规划与压测">7.3 容量规划与压测
&lt;/h3>&lt;p>Agent 工作负载通常是长短任务混合、下游调用扇出明显、资源占用差异很大。容量规划不能只按 API 请求/秒估算，还要测每个 Run 的平均/高分位模型调用次数、工具并发、沙箱占用时长、人工等待和结果存储量。&lt;/p>
&lt;p>压测至少覆盖：稳定负载下的吞吐、突发负载下的排队与背压、慢模型造成的并发占用、某租户大量任务时的公平性、数据库/队列故障时的退化行为，以及恢复后队列是否能在目标时间内清空。高并发不一定等于高有效吞吐；如果模型供应商限流，继续增加 Worker 只会堆积更多等待任务。&lt;/p>
&lt;h3 id="74-数据治理与隐私生命周期">7.4 数据治理与隐私生命周期
&lt;/h3>&lt;p>为 Run 输入、模型请求/响应、工具输出、代码快照、Trace 和评测样本分别定义数据分类、访问角色、加密方式、保留期限和删除路径。默认只记录诊断所需的摘要和引用；确需存原文时应明确用途、访问审批和保留时间。用户删除任务时，要识别对象存储、缓存、搜索索引、分析副本和备份中的数据如何按策略删除或到期。&lt;/p>
&lt;p>评测数据尤其容易混入客户代码和个人信息。对外公开 Benchmark 前要审查许可、机密、凭证、版权和重识别风险，并提供数据来源与清理说明。&lt;/p>
&lt;h2 id="8-真实试点与业务结果">8. 真实试点与业务结果
&lt;/h2>&lt;h3 id="81-先定义任务边界">8.1 先定义任务边界
&lt;/h3>&lt;p>挑选频繁、可验收、风险可控、节省时间可测的任务类型，例如测试补全或低风险 Bug 修复。明确不支持的任务、用户需要提供的材料、所需权限、人工检查点和失败退路。不要一开始就承诺“Agent 自动完成所有研发工作”。&lt;/p>
&lt;h3 id="82-建立基线和试点协议">8.2 建立基线和试点协议
&lt;/h3>&lt;p>试点前记录当前人工流程的完成时间、返工率、缺陷率和直接成本；约定试点持续时间、参与团队、任务范围、数据权限、成功门槛和停止条件。记录所有任务，包括失败、放弃和人工接管，避免只展示成功样例。&lt;/p>
&lt;p>推荐对比：&lt;/p>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th>指标&lt;/th>
&lt;th>定义示例&lt;/th>
&lt;th>使用注意&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>任务成功率&lt;/td>
&lt;td>满足预设验收条件的任务数 / 纳入任务数&lt;/td>
&lt;td>固定任务范围，报告分母&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>人工接管率&lt;/td>
&lt;td>需要人继续实质工作或纠正的任务比例&lt;/td>
&lt;td>审批与接管分开统计&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>交付时间&lt;/td>
&lt;td>从接单到验收的端到端时长&lt;/td>
&lt;td>区分排队和人工等待&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>返工与回归&lt;/td>
&lt;td>失败重跑、后续修复和引入缺陷&lt;/td>
&lt;td>观察足够长时间&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>单任务成本&lt;/td>
&lt;td>模型、工具、基础设施及必要人工成本&lt;/td>
&lt;td>统一计算口径&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>用户持续使用&lt;/td>
&lt;td>重复使用的团队/用户和任务量&lt;/td>
&lt;td>注册数不等于持续采用&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;p>业务价值要和对照基线比较；“处理了 2000 个任务”本身不是收益证明。还需说明任务难度、人工参与、失败占比和结果质量。&lt;/p>
&lt;h3 id="83-反馈进入产品闭环">8.3 反馈进入产品闭环
&lt;/h3>&lt;p>每次人工接管都应分类：需求不清、上下文缺失、模型规划错、工具不可用、权限不够、测试不充分、工作流设计差或用户不信任。优先修复重复出现且影响大的类别，并把修复转换为测试、策略或文档。外部案例和评价须取得许可，区分已验证结果与目标值。&lt;/p>
&lt;h3 id="84-试点结果的计算口径">8.4 试点结果的计算口径
&lt;/h3>&lt;p>定义一个可复核的“净节省时间”估算：&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-text" data-lang="text">&lt;span class="line">&lt;span class="cl">净节省时间 = 人工基线时间
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> - Agent 运行期间仍需投入的人工时间
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> - 返工时间
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> - 审核与运维分摊时间
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>将任务成功率与净节省时间一起看。若成功率上升但人工审查时间翻倍，整体收益可能为负；若平均节省明显但高风险错误增加，也不能简单判定成功。报告至少分任务类型、难度、模型版本和人工参与程度，并展示失败案例。&lt;/p>
&lt;p>样本选择要避免偏差：纳入连续时间段内符合条件的任务，解释排除条件；记录用户拒绝交给 Agent 的任务，避免只测“最容易的那一类”。对照组尽量保持任务类型和人员经验相近，必要时采用分阶段上线，以区分季节、团队和学习效应。&lt;/p>
&lt;h2 id="9-从能力地图到实践计划">9. 从能力地图到实践计划
&lt;/h2>&lt;p>建议按依赖关系推进，而不是同时造所有平台功能：&lt;/p>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th>阶段&lt;/th>
&lt;th>重点&lt;/th>
&lt;th>可审查交付物&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>1. 定位与基线&lt;/td>
&lt;td>选定窄任务，定义结果和成本指标&lt;/td>
&lt;td>任务范围、基线、最小演示和用例集&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>2. Runtime 与评测&lt;/td>
&lt;td>固定运行状态、工具边界、验收与回归&lt;/td>
&lt;td>可恢复 Run、评测报告、失败分类&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>3. 真实试点&lt;/td>
&lt;td>让小范围用户持续执行真实任务&lt;/td>
&lt;td>试点协议、使用数据、反馈和事故记录&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>4. 平台化&lt;/td>
&lt;td>按实际瓶颈建设队列、多租户、弹性和 SLO&lt;/td>
&lt;td>压测、故障演练、容量和成本报告&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>5. 治理与扩展&lt;/td>
&lt;td>威胁模型、权限策略、审计和变更管理&lt;/td>
&lt;td>红队回归、威胁模型、发布门禁&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>6. 影响力与负责&lt;/td>
&lt;td>多团队采用、案例、协作和技术决策&lt;/td>
&lt;td>可复现案例、设计决策、复盘和分享&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;p>一年内合理的成长目标通常是：Runtime、测试和工作流达到有真实生产经历；评测、安全和模型工程达到能独立设计、实现并解释取舍；分布式平台完成有证据的有限规模部署；团队领导力通过试点协作逐步积累。成熟的平台负责人能力需要更长的真实责任周期。&lt;/p>
&lt;h3 id="91-逐步推进的-12-个月路线">9.1 逐步推进的 12 个月路线
&lt;/h3>&lt;table>
&lt;thead>
&lt;tr>
&lt;th>阶段&lt;/th>
&lt;th>工作重点&lt;/th>
&lt;th>阶段证据&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>第 1–2 个月：定位和基线&lt;/td>
&lt;td>选一个高频、可验收任务；砍掉分散功能；为现有 Runner 建任务记录和版本信息&lt;/td>
&lt;td>可安装演示、任务定义、基线数据、首批真实用户&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>第 3–4 个月：评测和模型&lt;/td>
&lt;td>建立固定 Benchmark、失败分类、成本/成功率报表；完成路由或上下文实验&lt;/td>
&lt;td>可重复评测、模型对比报告、回归门禁&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>第 5–7 个月：有限平台化&lt;/td>
&lt;td>根据真实瓶颈加入队列、可恢复状态、多租户原型、压测和故障注入&lt;/td>
&lt;td>架构决策记录、压测数据、恢复演练&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>第 5–8 个月：安全并行&lt;/td>
&lt;td>做威胁模型、最小权限、沙箱边界、密钥治理和红队回归&lt;/td>
&lt;td>威胁模型、策略测试、审计证据&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>第 2–9 个月：真实试点&lt;/td>
&lt;td>持续收集用户任务、人工接管原因和业务结果&lt;/td>
&lt;td>试点报告、用户反馈、事故/复盘记录&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>第 8–12 个月：放大影响&lt;/td>
&lt;td>文档、公开案例、外部贡献、面试和技术方案表达&lt;/td>
&lt;td>可复现项目、技术文章、案例证明和系统设计材料&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;p>时间表只是安排先后关系，不是必须按月完成的承诺。若试点尚未证明任务价值，就应该继续缩小任务和修复可靠性，不应因为路线图写着“平台化”而提前堆分布式组件。&lt;/p>
&lt;h3 id="92-试点规模目标如何使用">9.2 试点规模目标如何使用
&lt;/h3>&lt;p>可以把“多个团队或持续用户、上千个真实任务、百例级 Benchmark、重复运行、故障演练、用户案例”等作为求职证据的参考目标，但这些数字不适用于所有产品。金融审批和代码自动修改的风险不同，任务难度、人工介入和质量标准也不同。更重要的是定义口径、报告分母和结果可复核。达到数量但没有质量、成本和用户价值证据，不等于生产成熟。&lt;/p>
&lt;h3 id="93-技术负责人能力如何形成">9.3 技术负责人能力如何形成
&lt;/h3>&lt;p>高级工程师和技术负责人不仅实现组件，还要为取舍负责：什么先做、什么明确不做；哪些任务允许自动执行；质量、成本、延迟和风险如何权衡；何时买服务、何时自建；出现事故时如何止损；多个团队的需求如何形成稳定接口。可以用轻量的架构决策记录（ADR）保存背景、备选方案、决定、代价和复核条件，让决策可讨论、可修订。&lt;/p>
&lt;p>带人能力可从小范围试点开始：写清任务和验收，拆分工作，帮助同伴定位问题，做代码与设计评审，复盘交付偏差。衡量重点是团队能否持续交付和改进，而不是自己完成了多少代码。&lt;/p>
&lt;h3 id="94-把生产经验转成可信的职业证据">9.4 把生产经验转成可信的职业证据
&lt;/h3>&lt;p>简历和面试中的生产案例应能回答：用户是谁、问题是什么、系统如何工作、你负责什么、规模和指标如何定义、遇到过什么故障、如何处理、哪些方案被放弃、结果有什么局限。每个数字都要能解释分母、时间范围和数据来源。&lt;/p>
&lt;p>一个可信的案例表述应采用结构：&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-text" data-lang="text">&lt;span class="line">&lt;span class="cl">背景与任务范围
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">→ 本人负责的架构/实现/推广
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">→ 约束与关键取舍
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">→ 验证方式和真实使用规模
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">→ 质量、效率、成本、安全指标变化
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">→ 失败、局限与下一步
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>避免声称“成功率提升 30%”却说不清基线、样本、版本和是否包含人工接管。工程能力的有力证据不仅是代码，也包括复现实验、事故复盘、设计决策、用户反馈和可公开的架构材料。&lt;/p>
&lt;h2 id="10-生产就绪检查表">10. 生产就绪检查表
&lt;/h2>&lt;h3 id="任务与用户">任务与用户
&lt;/h3>&lt;ul>
&lt;li>&lt;input disabled="" type="checkbox"> 任务范围、拒绝条件、验收标准和人工接管路径明确。&lt;/li>
&lt;li>&lt;input disabled="" type="checkbox"> 有真实基线、固定成功定义和隐私处理规则。&lt;/li>
&lt;li>&lt;input disabled="" type="checkbox"> 用户能看到进度、暂停原因、预算和最终证据。&lt;/li>
&lt;/ul>
&lt;h3 id="runtime-与工作流">Runtime 与工作流
&lt;/h3>&lt;ul>
&lt;li>&lt;input disabled="" type="checkbox"> Run 状态、步骤状态、版本和事件可持久化。&lt;/li>
&lt;li>&lt;input disabled="" type="checkbox"> 超时、取消、重试、重复投递和进程崩溃经过验证。&lt;/li>
&lt;li>&lt;input disabled="" type="checkbox"> 副作用有幂等保护；无法确认结果时能对账。&lt;/li>
&lt;li>&lt;input disabled="" type="checkbox"> 资源、模型调用、工具调用和成本均有硬限制。&lt;/li>
&lt;li>&lt;input disabled="" type="checkbox"> 人工审批绑定具体动作与参数，流程升级不会错用旧审批。&lt;/li>
&lt;/ul>
&lt;h3 id="测试与评测">测试与评测
&lt;/h3>&lt;ul>
&lt;li>&lt;input disabled="" type="checkbox"> 有单元、集成、端到端、安全和故障注入测试。&lt;/li>
&lt;li>&lt;input disabled="" type="checkbox"> 固定评测集覆盖常见任务、边界、失败和攻击场景。&lt;/li>
&lt;li>&lt;input disabled="" type="checkbox"> 关键任务重复运行，报告方差、成本和失败类别。&lt;/li>
&lt;li>&lt;input disabled="" type="checkbox"> 模型、提示词、工具、数据和 Runtime 变更能触发回归门禁。&lt;/li>
&lt;li>&lt;input disabled="" type="checkbox"> 评分器经过人工抽检，测试集没有训练或提示泄漏。&lt;/li>
&lt;/ul>
&lt;h3 id="安全与运维">安全与运维
&lt;/h3>&lt;ul>
&lt;li>&lt;input disabled="" type="checkbox"> 身份、租户、仓库、工具和网络权限符合最小权限。&lt;/li>
&lt;li>&lt;input disabled="" type="checkbox"> 不可信代码在受限沙箱中运行，密钥不会进入模型上下文或日志。&lt;/li>
&lt;li>&lt;input disabled="" type="checkbox"> 日志、指标、Trace 和审计事件可关联并有保留策略。&lt;/li>
&lt;li>&lt;input disabled="" type="checkbox"> 有告警、停止运行、撤销凭证、恢复数据和事故复盘流程。&lt;/li>
&lt;li>&lt;input disabled="" type="checkbox"> 有容量、成本、延迟和服务目标，并经过演练。&lt;/li>
&lt;/ul>
&lt;h3 id="业务证据">业务证据
&lt;/h3>&lt;ul>
&lt;li>&lt;input disabled="" type="checkbox"> 记录全部纳入任务、人工介入、失败、取消和成本。&lt;/li>
&lt;li>&lt;input disabled="" type="checkbox"> 与相同口径的人工基线比较质量、时间和成本。&lt;/li>
&lt;li>&lt;input disabled="" type="checkbox"> 结果由试点用户确认；公开案例获得许可并注明范围。&lt;/li>
&lt;/ul>
&lt;h2 id="11-常见误区">11. 常见误区
&lt;/h2>&lt;ol>
&lt;li>**把能调用模型当成 Runtime。**缺少状态、预算、权限、取消和恢复，仍只是 Demo 循环。&lt;/li>
&lt;li>**把 Agent 评测等同于单元测试。**代码可以测对，任务仍可能做错；要分别验证软件和 Agent 行为。&lt;/li>
&lt;li>**把工作流做成全由模型决定。**权限、审批、测试和发布等控制步骤应由确定性策略执行。&lt;/li>
&lt;li>**把重试当可靠性。**没有幂等和对账的重试会放大副作用。&lt;/li>
&lt;li>**把 Trace 当审计。**Trace 解释技术调用链，审计还要说明主体、授权、对象和动作结果。&lt;/li>
&lt;li>**先做多租户和微服务再找用户。**先证明任务价值和负载，再按瓶颈扩平台。&lt;/li>
&lt;li>**只报成功任务和模型分数。**要报告分母、人工投入、方差、成本、安全和后续缺陷。&lt;/li>
&lt;li>**把微调当作所有失败的解法。**先归因问题来自数据、提示、工具、流程还是模型，再选手段。&lt;/li>
&lt;/ol>
&lt;h2 id="延伸阅读">延伸阅读
&lt;/h2>&lt;ul>
&lt;li>&lt;a class="link" href="https://www.zata.cc/p/agent-%E5%B7%A5%E7%A8%8B%E5%AE%9E%E6%88%98%E5%BC%80%E7%AF%87%E4%BB%8E-demo-%E5%88%B0%E7%94%9F%E4%BA%A7%E8%BF%98%E6%9C%89%E5%A4%9A%E8%BF%9C/" >Agent 工程实战：从 Demo 到生产&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="https://www.zata.cc/p/agent-runtime-explained/" >Agent Runtime 详解&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="https://www.zata.cc/p/ai-agent-loop-%E5%B7%A5%E7%A8%8B%E5%8E%9F%E7%90%86%E6%A8%A1%E5%BC%8F%E4%B8%8E%E5%AE%9E%E7%8E%B0/" >AI Agent Loop 工程&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="https://www.zata.cc/p/langgraph-%E5%AE%9E%E6%88%98stategraph%E6%89%8B%E5%86%99-react-%E5%BE%AA%E7%8E%AF%E4%B8%8E-map-reduce-%E6%91%98%E8%A6%81/" >LangGraph 实战教程&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="https://www.zata.cc/p/agent-%E7%94%A8%E6%88%B7%E8%AE%B0%E5%BF%86%E4%B8%8E-skill-%E6%B2%89%E6%B7%80%E5%BC%80%E6%BA%90%E9%A1%B9%E7%9B%AE%E5%8F%82%E8%80%83%E4%B8%8E%E6%9E%B6%E6%9E%84%E8%AE%BE%E8%AE%A1/" >Agent 用户记忆与 Skill 沉淀&lt;/a>&lt;/li>
&lt;/ul>
&lt;p>本文是领域知识入口，不替代针对特定技术栈的操作手册。后续可将 Runtime、评测、工作流、安全和平台运营分别扩展为专题，并在这里维护它们之间的关系、实践顺序与生产验收标准。&lt;/p></description></item><item><title>Agent 工程实战开篇：从 Demo 到生产还有多远</title><link>https://www.zata.cc/p/agent-%E5%B7%A5%E7%A8%8B%E5%AE%9E%E6%88%98%E5%BC%80%E7%AF%87%E4%BB%8E-demo-%E5%88%B0%E7%94%9F%E4%BA%A7%E8%BF%98%E6%9C%89%E5%A4%9A%E8%BF%9C/</link><pubDate>Thu, 23 Jul 2026 10:31:54 +0800</pubDate><guid>https://www.zata.cc/p/agent-%E5%B7%A5%E7%A8%8B%E5%AE%9E%E6%88%98%E5%BC%80%E7%AF%87%E4%BB%8E-demo-%E5%88%B0%E7%94%9F%E4%BA%A7%E8%BF%98%E6%9C%89%E5%A4%9A%E8%BF%9C/</guid><description>&lt;img src="https://www.zata.cc/p/agent-%E5%B7%A5%E7%A8%8B%E5%AE%9E%E6%88%98%E5%BC%80%E7%AF%87%E4%BB%8E-demo-%E5%88%B0%E7%94%9F%E4%BA%A7%E8%BF%98%E6%9C%89%E5%A4%9A%E8%BF%9C/images/index/index.svg" alt="Featured image of post Agent 工程实战开篇：从 Demo 到生产还有多远" />&lt;blockquote>
&lt;p>这是 Agent 工程实战系列的第一篇。我会把在生产环境里踩过的坑、验证过的方案，按主题整理成可复用的工程手册。&lt;/p>
&lt;/blockquote>
&lt;h2 id="一句话定义-agent-工程">一句话定义 Agent 工程
&lt;/h2>&lt;p>&lt;strong>Agent 工程 = 把一个在本地能跑 80% 的 LLM 循环，变成一个在真实流量下 99% 可用、可观测、可评估、可控成本的服务。&lt;/strong>&lt;/p>
&lt;p>把这句话拆开，至少有五件事要做：&lt;/p>
&lt;ol>
&lt;li>&lt;strong>可控&lt;/strong> — 输出可控、行为可控、失败可控&lt;/li>
&lt;li>&lt;strong>可观测&lt;/strong> — 每一步都留下 trace，事后能复盘&lt;/li>
&lt;li>&lt;strong>可评估&lt;/strong> — 不是&amp;quot;看着还不错&amp;quot;，是有数据证明它确实不错&lt;/li>
&lt;li>&lt;strong>可扩展&lt;/strong> — 用户从 10 个到 10 万个，延迟和成本不会爆&lt;/li>
&lt;li>&lt;strong>可治理&lt;/strong> — 安全、合规、可解释、可下线&lt;/li>
&lt;/ol>
&lt;p>下面聊聊从 Demo 走到生产最容易翻车的几个点。&lt;/p>
&lt;h2 id="1-别再把-prompt-当成代码">1. 别再把 Prompt 当成&amp;quot;代码&amp;quot;
&lt;/h2>&lt;p>Demo 阶段你可以在 &lt;code>system prompt&lt;/code> 里写一段 200 字的话，模型听话；但到了生产：&lt;/p>
&lt;ul>
&lt;li>不同模型的 instruction-following 能力差异巨大&lt;/li>
&lt;li>用户输入会污染 prompt 结构（prompt injection）&lt;/li>
&lt;li>Prompt 一改，行为就会漂移，且没人能精确描述改了什么&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>工程化做法：&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>Prompt 模板独立仓库管理，版本化（每条上线记录到变更日志）&lt;/li>
&lt;li>把&amp;quot;工具说明&amp;quot;、&amp;ldquo;角色设定&amp;rdquo;、&amp;ldquo;业务规则&amp;rdquo;、&amp;ldquo;用户输入&amp;quot;在拼接时显式分段，而不是塞进同一个 f-string&lt;/li>
&lt;li>关键 prompt 用 &lt;strong>LLM 评审 / 回归集&lt;/strong> 守门，而不是靠人肉感觉&lt;/li>
&lt;/ul>
&lt;h2 id="2-tool-calling-不是-if-name--">2. Tool Calling 不是 &lt;code>if name == &amp;quot;...&amp;quot;:&lt;/code>
&lt;/h2>&lt;p>很多 Demo 是这样的：&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-python" data-lang="python">&lt;span class="line">&lt;span class="cl">&lt;span class="k">if&lt;/span> &lt;span class="s2">&amp;#34;天气&amp;#34;&lt;/span> &lt;span class="ow">in&lt;/span> &lt;span class="n">user_input&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">return&lt;/span> &lt;span class="n">get_weather&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="o">...&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>这种&amp;quot;伪 function calling&amp;quot;看起来工作，但生产里会立刻暴露问题：&lt;/p>
&lt;ul>
&lt;li>用户可以构造输入绕过规则&lt;/li>
&lt;li>没有 schema 校验，模型幻觉出来的参数会直接打到下游&lt;/li>
&lt;li>没有权限隔离，所有工具对所有 prompt 开放&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>工程化做法：&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>用真正的 tool/function schema（OpenAI / Anthropic 风格），让模型输出结构化参数&lt;/li>
&lt;li>用 &lt;strong>Pydantic / Zod&lt;/strong> 在边界做参数校验&lt;/li>
&lt;li>工具分级别：&lt;strong>只读工具&lt;/strong> / &lt;strong>写工具&lt;/strong> / &lt;strong>外部副作用工具&lt;/strong>，按风险分桶调用&lt;/li>
&lt;li>高风险工具强制 &lt;strong>Human-in-the-loop&lt;/strong> 确认&lt;/li>
&lt;/ul>
&lt;h2 id="3-agent-loop-必须有上限">3. Agent Loop 必须有上限
&lt;/h2>&lt;p>最经典的 bug：&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">用户问了一个含糊的问题 →
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Agent 没拿到足够信息 →
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Agent 又去调用工具 →
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">工具又返回模糊结果 →
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Agent 再调工具 →
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">... → token 烧光 / 循环 100 次 / 超时
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>&lt;strong>工程化做法：&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>显式设置 &lt;strong>max_steps&lt;/strong>（建议 ≤ 10）&lt;/li>
&lt;li>区分&amp;quot;成功终止&amp;rdquo;、&amp;ldquo;最大步数终止&amp;rdquo;、&amp;ldquo;循环检测终止&amp;rdquo;&lt;/li>
&lt;li>检测到重复 state（同一组工具调用两次以上）→ 主动 break 并 fallback 到&amp;quot;我不知道&amp;quot;&lt;/li>
&lt;li>关键决策点强制 &lt;strong>reflection / self-critique&lt;/strong>，但要限制其调用次数&lt;/li>
&lt;/ul>
&lt;h2 id="4-可观测性先有-trace再谈优化">4. 可观测性：先有 Trace，再谈优化
&lt;/h2>&lt;p>没有 trace 的 Agent 优化就是&amp;quot;蒙眼调参&amp;quot;。生产里至少要有：&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Span&lt;/strong>：每一次 LLM 调用、工具调用、记忆读写的输入 / 输出 / 耗时 / token&lt;/li>
&lt;li>&lt;strong>Trace ID&lt;/strong>：贯穿一次完整任务的所有 span&lt;/li>
&lt;li>&lt;strong>成本字段&lt;/strong>：每次调用的 input/output token 与单价&lt;/li>
&lt;li>&lt;strong>失败分类&lt;/strong>：timeout / 工具异常 / 解析失败 / 内容安全拦截&lt;/li>
&lt;/ul>
&lt;p>推荐起步就用 &lt;a class="link" href="https://docs.smith.langchain.com/" target="_blank" rel="noopener"
>LangSmith&lt;/a>、&lt;a class="link" href="https://langfuse.com/" target="_blank" rel="noopener"
>Langfuse&lt;/a>、&lt;a class="link" href="https://phoenix.arize.com/" target="_blank" rel="noopener"
>Arize Phoenix&lt;/a> 这类平台之一，自建成本不低。&lt;/p>
&lt;h2 id="5-评估不是上线后再想的事">5. 评估不是上线后再想的事
&lt;/h2>&lt;p>生产里最容易回答不出的问题：&amp;ldquo;这个版本比上个版本到底好了多少？&amp;rdquo;&lt;/p>
&lt;p>&lt;strong>最小可用的评估体系：&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>&lt;strong>离线评测集&lt;/strong>：50~200 个有标准答案或参考回答的 case，回归门禁&lt;/li>
&lt;li>&lt;strong>LLM-as-judge&lt;/strong>：用一个更强的模型给输出打分，但要注意：评分模型本身也会偏&lt;/li>
&lt;li>&lt;strong>线上指标&lt;/strong>：任务成功率、人工接管率、单任务成本、p95 延迟&lt;/li>
&lt;li>&lt;strong>红队 / 注入集&lt;/strong>：专门挑 prompt injection 与越权场景，定期跑&lt;/li>
&lt;/ul>
&lt;h2 id="6-成本治理模型路由--缓存--流式">6. 成本治理：模型路由 + 缓存 + 流式
&lt;/h2>&lt;p>Agent 系统烧钱的速度比传统服务快得多，因为：&lt;/p>
&lt;ul>
&lt;li>多轮 LLM 调用 × 长上下文 × 复杂工具链&lt;/li>
&lt;li>&amp;ldquo;小问题用大模型&amp;quot;是常态浪费&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>工程化做法：&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>&lt;strong>模型路由&lt;/strong>：简单任务走小模型（如分类、提取），复杂任务才走大模型&lt;/li>
&lt;li>&lt;strong>语义缓存&lt;/strong>：相似 query 直接返回上次结果，注意要带 cache key 的失效策略&lt;/li>
&lt;li>&lt;strong>流式输出&lt;/strong>：长生成场景下，TTFT 比总时长更重要&lt;/li>
&lt;li>&lt;strong>预算熔断&lt;/strong>：单任务 / 单用户 / 单租户的 token 上限，超限自动降级&lt;/li>
&lt;/ul>
&lt;h2 id="7-安全默认假设你的-prompt-会被攻破">7. 安全：默认假设你的 Prompt 会被攻破
&lt;/h2>&lt;ul>
&lt;li>&lt;strong>不要&lt;/strong> 把系统提示视为秘密，它一定会被泄露&lt;/li>
&lt;li>&lt;strong>不要&lt;/strong> 让 LLM 决定要不要执行高风险工具（删库、转账、发邮件），必须硬规则守门&lt;/li>
&lt;li>&lt;strong>必须&lt;/strong> 对工具返回值做清洗——它也是用户可控输入&lt;/li>
&lt;li>&lt;strong>必须&lt;/strong> 审计日志：谁、什么时候、通过哪个 agent、调了哪个工具、传了什么参数&lt;/li>
&lt;/ul>
&lt;h2 id="这个系列接下来会写什么">这个系列接下来会写什么？
&lt;/h2>&lt;p>按上面七个主题，每个都会展开成一篇实战文章，配可运行示例：&lt;/p>
&lt;ol>
&lt;li>Prompt 工程化：从 f-string 到模板系统&lt;/li>
&lt;li>Tool Calling 工程化：schema、权限、Human-in-the-loop&lt;/li>
&lt;li>Agent Loop 设计：状态机视角的 ReAct&lt;/li>
&lt;li>可观测性实战：Langfuse / LangSmith 接入&lt;/li>
&lt;li>评估体系搭建：离线集 + LLM-judge + 线上指标&lt;/li>
&lt;li>成本与性能：模型路由、缓存、流式&lt;/li>
&lt;li>安全与合规：Prompt injection 防护与审计&lt;/li>
&lt;/ol>
&lt;p>如果你也在做 Agent，欢迎把你踩过的坑写在评论区——下一篇我会挑留言里出现最多的那个话题。&lt;/p>
&lt;h2 id="参考">参考
&lt;/h2>&lt;ul>
&lt;li>&lt;a class="link" href="https://www.anthropic.com/engineering/building-effective-agents" target="_blank" rel="noopener"
>Anthropic: Building effective agents&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="https://platform.openai.com/docs/guides/agents" target="_blank" rel="noopener"
>OpenAI: A practical guide to building agents&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="https://docs.smith.langchain.com/" target="_blank" rel="noopener"
>LangSmith Documentation&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="https://langfuse.com/" target="_blank" rel="noopener"
>Langfuse: Open Source LLM Engineering&lt;/a>&lt;/li>
&lt;/ul></description></item><item><title>AI agent介绍：基于大模型的人工智能代理</title><link>https://www.zata.cc/p/ai-agent%E4%BB%8B%E7%BB%8D%E5%9F%BA%E4%BA%8E%E5%A4%A7%E6%A8%A1%E5%9E%8B%E7%9A%84%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD%E4%BB%A3%E7%90%86/</link><pubDate>Wed, 07 May 2025 14:34:02 +0800</pubDate><guid>https://www.zata.cc/p/ai-agent%E4%BB%8B%E7%BB%8D%E5%9F%BA%E4%BA%8E%E5%A4%A7%E6%A8%A1%E5%9E%8B%E7%9A%84%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD%E4%BB%A3%E7%90%86/</guid><description>&lt;img src="https://www.zata.cc/p/ai-agent%E4%BB%8B%E7%BB%8D%E5%9F%BA%E4%BA%8E%E5%A4%A7%E6%A8%A1%E5%9E%8B%E7%9A%84%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD%E4%BB%A3%E7%90%86/images/index/index.png" alt="Featured image of post AI agent介绍：基于大模型的人工智能代理" />&lt;p>参考：&lt;/p>
&lt;p>&lt;a class="link" href="https://zhuanlan.zhihu.com/p/657937696" target="_blank" rel="noopener"
>知乎&lt;/a>&lt;/p>
&lt;p>&lt;a class="link" href="https://zhuanlan.zhihu.com/p/659386520" target="_blank" rel="noopener"
>智能代理Agent：AI 智能体&lt;/a>&lt;/p>
&lt;h2 id="agent基础知识介绍">Agent基础知识介绍
&lt;/h2>&lt;hr>
&lt;blockquote>
&lt;p>背景介绍&lt;/p>
&lt;/blockquote>
&lt;p>AI Agent（人工智能代理）的背景可以从技术发展、理论基础和应用场景三个方面来阐述：&lt;/p>
&lt;ol>
&lt;li>
&lt;p>&lt;strong>技术发展背景&lt;/strong>&lt;/p>
&lt;p>AI Agent的概念起源于人工智能（AI）和计算机科学领域的进步，尤其是20世纪80年代以来，随着分布式系统、自主计算和智能系统的兴起，AI Agent逐渐成为研究和应用的热点。以下是关键技术发展的几个阶段：&lt;/p>
&lt;ul>
&lt;li>&lt;strong>早期AI与规则系统&lt;/strong>：20世纪50-60年代，AI研究主要集中在符号推理和专家系统上，这些系统通过预定义规则模拟智能行为，为后来的Agent奠定了基础。&lt;/li>
&lt;li>&lt;strong>分布式人工智能（DAI）&lt;/strong>：80年代，分布式计算和多Agent系统（Multi-Agent Systems, MAS）的研究兴起，强调多个自主实体协作解决问题，推动了AI Agent的理论发展。&lt;/li>
&lt;li>&lt;strong>机器学习与深度学习&lt;/strong>：21世纪以来，机器学习（尤其是深度学习）的突破使得AI Agent能够通过数据驱动的方式学习复杂行为，增强了其感知、决策和适应能力。&lt;/li>
&lt;li>&lt;strong>大语言模型（LLM）&lt;/strong>：近年来，以GPT、Llama等为代表的大语言模型赋予了AI Agent强大的自然语言处理能力，使其能理解和生成人类语言，广泛应用于对话系统、任务自动化等场景。&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>理论基础&lt;/strong>&lt;/p>
&lt;p>AI Agent的核心理念是构建能够自主感知环境、推理决策并采取行动的智能实体。其理论基础包括：&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Agent定义&lt;/strong>：在AI领域，Agent通常被定义为“能够感知环境并通过行动影响环境的实体”。Russell和Norvig的《人工智能：一种现代方法》中将其形式化为感知-推理-行动循环。&lt;/li>
&lt;li>&lt;strong>自主性与交互性&lt;/strong>：AI Agent具有一定程度的自主性（独立决策能力）和交互性（与环境或其他Agent协作或竞争）。&lt;/li>
&lt;li>&lt;strong>多Agent系统&lt;/strong>：多Agent系统研究多个Agent如何通过协作、协商或竞争完成复杂任务，涉及博弈论、分布式计算等理论。&lt;/li>
&lt;li>&lt;strong>强化学习（RL）&lt;/strong>：强化学习为AI Agent提供了通过试错学习最优策略的框架，广泛应用于机器人、游戏AI等领域。&lt;/li>
&lt;li>&lt;strong>认知架构&lt;/strong>：如SOAR、ACT-R等认知架构为AI Agent提供了模拟人类认知过程的理论支持。&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>应用场景与背景&lt;/strong>&lt;/p>
&lt;p>AI Agent的应用背景与现代社会对自动化、智能化和个性化的需求密切相关。以下是主要应用领域：&lt;/p>
&lt;ul>
&lt;li>&lt;strong>个人助手&lt;/strong>：如Siri、Google Assistant等，利用自然语言处理和任务规划技术，帮助用户完成日程管理、信息查询等任务。&lt;/li>
&lt;li>&lt;strong>游戏与仿真&lt;/strong>：AI Agent在电子游戏（如NPC）和仿真环境中扮演智能角色，通过强化学习等技术实现逼真的行为。&lt;/li>
&lt;li>&lt;strong>机器人与自动驾驶&lt;/strong>：机器人和自动驾驶汽车中的AI Agent通过传感器感知环境，结合路径规划和决策算法实现自主导航。&lt;/li>
&lt;li>&lt;strong>企业自动化&lt;/strong>：在金融、物流、客服等领域，AI Agent用于自动化交易、智能调度、聊天机器人等，提升效率并降低成本。&lt;/li>
&lt;li>&lt;strong>多Agent协作&lt;/strong>：如智能电网、智慧城市中，多个AI Agent协作优化资源分配，应对复杂动态环境。&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>当前趋势与挑战&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>&lt;strong>趋势&lt;/strong>：&lt;/li>
&lt;li>&lt;strong>通用AI Agent&lt;/strong>：基于大模型的AI Agent正在向通用智能方向发展，能够跨领域执行多样化任务。&lt;/li>
&lt;li>&lt;strong>人机协作&lt;/strong>：AI Agent越来越注重与人类的自然交互，成为辅助工具而非完全替代。&lt;/li>
&lt;li>&lt;strong>开源生态&lt;/strong>：如LangChain、AutoGPT等开源框架降低了开发AI Agent的门槛。&lt;/li>
&lt;li>&lt;strong>挑战&lt;/strong>：&lt;/li>
&lt;li>&lt;strong>可解释性&lt;/strong>：AI Agent的决策过程往往是黑箱，难以解释。&lt;/li>
&lt;li>&lt;strong>安全性与伦理&lt;/strong>：自主性强的Agent可能引发误操作或伦理问题。&lt;/li>
&lt;li>&lt;strong>资源消耗&lt;/strong>：复杂AI Agent（如基于大模型的）需要大量计算资源。&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>总结&lt;/strong>&lt;/p>
&lt;p>AI Agent的背景源于人工智能技术的演进、分布式系统和自主计算的理论发展，以及现代社会对智能自动化的需求。从早期的规则系统到如今的大模型驱动Agent，AI Agent在理论和应用上都取得了显著进步。未来，随着技术进一步成熟，AI Agent将在更多领域发挥重要作用，同时需要解决可解释性、安全性和资源效率等挑战。&lt;/p>
&lt;/li>
&lt;/ol>
&lt;hr>
&lt;blockquote>
&lt;p>为什么需要如Langchain、AutoGPT这样的框架？&lt;/p>
&lt;/blockquote>
&lt;p>LangChain这样的框架之所以被开发和广泛使用，是因为尽管大语言模型（LLM）本身已经非常强大，能够完成许多任务，但它们在某些复杂场景下存在局限性，而LangChain通过提供结构化的工具和模块，弥补了这些不足，增强了LLM的实用性和灵活性。以下从几个关键方面阐述为什么需要LangChain这样的框架，以及它如何解决LLM的局限性：&lt;/p>
&lt;ol>
&lt;li>
&lt;p>&lt;strong>LLM的局限性&lt;/strong>&lt;/p>
&lt;p>尽管LLM（如GPT、Llama等）在自然语言处理、生成文本、回答问题等方面表现出色，但在实际应用中仍面临以下挑战：&lt;/p>
&lt;ul>
&lt;li>&lt;strong>缺乏外部上下文整合能力&lt;/strong>：LLM的知识基于训练数据，截止某一时间点（例如，Grok的知识截至2025年5月），无法直接访问实时数据或特定领域的私有数据（如企业数据库）。&lt;/li>
&lt;li>&lt;strong>短期记忆限制&lt;/strong>：LLM的上下文窗口有限，难以处理超长对话或需要大量历史信息的任务。&lt;/li>
&lt;li>&lt;strong>复杂任务分解困难&lt;/strong>：LLM擅长单次生成或简单推理，但对于需要多步骤推理、工具调用或外部资源协调的复杂任务（如自动化工作流），其能力有限。&lt;/li>
&lt;li>&lt;strong>缺乏结构化交互&lt;/strong>：LLM的输出是文本流，难以直接与外部系统（如API、数据库）交互或实现自动化流程。&lt;/li>
&lt;li>&lt;strong>定制化与可控性不足&lt;/strong>：直接使用LLM难以实现特定业务逻辑的定制化，开发者需要额外的工程工作来整合模型与应用需求。&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>LangChain的核心作用&lt;/strong>&lt;/p>
&lt;p>LangChain是一个开源框架，旨在通过模块化工具增强LLM的能力，使其更适合构建复杂的、面向应用的AI Agent或工作流。它解决了上述局限性，具体作用包括：&lt;/p>
&lt;p>(1) &lt;strong>增强外部数据访问&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>&lt;strong>问题&lt;/strong>：LLM无法直接访问实时数据或私有数据源。&lt;/li>
&lt;li>&lt;strong>LangChain的解决方案&lt;/strong>：&lt;/li>
&lt;li>&lt;strong>工具调用（Tools）&lt;/strong>：LangChain允许LLM调用外部API（如天气服务、搜索引擎）或数据库，获取最新信息。例如，LangChain可以让LLM查询实时股票价格，而非依赖过时的训练数据。&lt;/li>
&lt;li>&lt;strong>文档加载与检索（Retrieval-Augmented Generation, RAG）&lt;/strong>：LangChain支持将外部文档（如PDF、网页）加载到向量数据库中，通过嵌入（embeddings）进行语义检索，让LLM基于特定文档回答问题。这对于企业知识库、法律文件分析等场景尤为重要。&lt;/li>
&lt;li>&lt;strong>示例&lt;/strong>：用户问“今天上海的天气如何？”，LangChain可以将问题路由到天气API，获取实时数据后由LLM生成自然语言回答。&lt;/li>
&lt;/ul>
&lt;p>(2) &lt;strong>扩展上下文管理&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>&lt;strong>问题&lt;/strong>：LLM的上下文窗口有限，难以处理长文档或多轮复杂对话。&lt;/li>
&lt;li>&lt;strong>LangChain的解决方案&lt;/strong>：&lt;/li>
&lt;li>&lt;strong>内存模块（Memory）&lt;/strong>：LangChain提供短期和长期记忆机制，跟踪对话历史或关键信息。例如，在多轮客服对话中，LangChain可以保存用户之前的请求，避免重复询问。&lt;/li>
&lt;li>&lt;strong>文档分块与摘要&lt;/strong>：对于超长文档，LangChain可以将内容分块处理，提取关键信息，减轻LLM的上下文负担。&lt;/li>
&lt;li>&lt;strong>示例&lt;/strong>：在法律咨询场景中，LangChain可以管理用户上传的合同全文，提取关键条款供LLM分析，而无需将整个文档塞入上下文。&lt;/li>
&lt;/ul>
&lt;p>(3) &lt;strong>支持复杂任务分解与工作流&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>&lt;strong>问题&lt;/strong>：LLM难以直接处理需要多步骤推理或工具协调的复杂任务。&lt;/li>
&lt;li>&lt;strong>LangChain的解决方案&lt;/strong>：&lt;/li>
&lt;li>&lt;strong>链（Chains）&lt;/strong>：LangChain允许开发者定义任务的执行流程，将多个LLM调用、工具调用和逻辑步骤组合成“链”。例如，一个链可以先检索文档、再调用LLM总结、再生成最终回答。&lt;/li>
&lt;li>&lt;strong>代理（Agents）&lt;/strong>：LangChain的Agent模块让LLM动态选择工具和行动路径，处理开放式任务。例如，一个Agent可以根据用户请求决定是查询数据库、调用API还是直接回答。&lt;/li>
&lt;li>&lt;strong>示例&lt;/strong>：用户要求“帮我规划一次旅行”，LangChain的Agent可以分解任务：1) 询问预算和偏好；2) 调用航班API查询票价；3) 调用酒店API推荐住宿；4) 生成完整行程。&lt;/li>
&lt;/ul>
&lt;p>(4) &lt;strong>与外部系统集成&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>&lt;strong>问题&lt;/strong>：LLM的文本输出难以直接与外部系统交互。&lt;/li>
&lt;li>&lt;strong>LangChain的解决方案&lt;/strong>：&lt;/li>
&lt;li>&lt;strong>工具集成&lt;/strong>：LangChain提供与多种外部工具的接口（如SQL数据库、Python解释器、Zapier自动化工具），使LLM的输出可以触发实际操作。&lt;/li>
&lt;li>&lt;strong>输出解析&lt;/strong>：LangChain可以将LLM的文本输出结构化为JSON等格式，便于系统处理。&lt;/li>
&lt;li>&lt;strong>示例&lt;/strong>：在电商场景中，LangChain可以将用户查询“最近的订单状态”转化为SQL查询，获取数据库中的订单信息，再由LLM生成用户友好的回答。&lt;/li>
&lt;/ul>
&lt;p>(5) &lt;strong>提高开发效率与可定制性&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>&lt;strong>问题&lt;/strong>：直接使用LLM需要开发者手动处理数据管道、上下文管理和工具调用，开发成本高。&lt;/li>
&lt;li>&lt;strong>LangChain的解决方案&lt;/strong>：&lt;/li>
&lt;li>&lt;strong>模块化设计&lt;/strong>：LangChain提供现成的组件（如文档加载器、嵌入模型、向量存储、提示模板），开发者可以快速组合构建应用。&lt;/li>
&lt;li>&lt;strong>提示工程（Prompt Engineering）&lt;/strong>：LangChain支持动态提示模板，优化LLM的输入以提高输出质量。&lt;/li>
&lt;li>&lt;strong>开源生态&lt;/strong>：LangChain与Hugging Face、Pinecone等工具兼容，降低了技术门槛。&lt;/li>
&lt;li>&lt;strong>示例&lt;/strong>：开发者可以用LangChain在几天内构建一个基于企业知识库的问答系统，而直接调用LLM可能需要数周的编码。&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>为什么LLM单独不够？&lt;/strong>&lt;/p>
&lt;p>虽然LLM可以完成许多任务（如文本生成、翻译、问答），但它们更像是一个强大的“语言引擎”，而非完整的解决方案。LangChain将LLM从“通用语言模型”转变为“面向任务的智能系统”，具体优势包括：&lt;/p>
&lt;ul>
&lt;li>&lt;strong>场景适配&lt;/strong>：LLM是通用的，LangChain使其适配特定业务需求（如法律、金融、医疗）。&lt;/li>
&lt;li>&lt;strong>自动化与扩展性&lt;/strong>：LangChain支持自动化工作流和规模化部署，LLM单独难以实现。&lt;/li>
&lt;li>&lt;strong>用户体验&lt;/strong>：通过内存管理和外部数据整合，LangChain提升了交互的连贯性和准确性。&lt;/li>
&lt;li>&lt;strong>开发效率&lt;/strong>：LangChain降低了从原型到生产环境的开发难度。&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>实际案例对比&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>&lt;strong>仅用LLM&lt;/strong>：用户问“我的订单在哪里？”，LLM可能回复“我不知道你的订单信息，请提供更多细节”，因为它无法访问数据库。&lt;/li>
&lt;li>&lt;strong>用LangChain&lt;/strong>：LangChain将问题路由到订单数据库，提取最新状态（如“您的订单已于5月6日发货”），再由LLM生成自然语言回答，提升用户体验。&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>其他类似框架&lt;/strong>&lt;/p>
&lt;p>LangChain不是唯一的选择，其他框架如LlamaIndex、Haystack、AutoGPT等也有类似功能，但LangChain因其模块化、易用性和开源社区支持而广受欢迎。每个框架的侧重点不同：&lt;/p>
&lt;ul>
&lt;li>&lt;strong>LlamaIndex&lt;/strong>：更专注于RAG和文档检索。&lt;/li>
&lt;li>&lt;strong>AutoGPT&lt;/strong>：强调自主Agent的自动化任务执行。&lt;/li>
&lt;li>&lt;strong>Haystack&lt;/strong>：专注于搜索和问答系统。&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>总结&lt;/strong>&lt;/p>
&lt;p>LLM虽然强大，但其通用性和孤立性限制了它在复杂、动态和特定场景下的应用。LangChain通过提供外部数据整合、上下文管理、任务分解、工具调用和模块化开发等功能，极大地扩展了LLM的能力，使其从“语言模型”升级为“智能系统”。对于需要构建生产级AI应用的开发者来说，LangChain这样的框架是不可或缺的桥梁。&lt;/p>
&lt;/li>
&lt;/ol>
&lt;hr>
&lt;blockquote>
&lt;p>对于未来Agent的展望&lt;/p>
&lt;/blockquote>
&lt;p>未来AI Agent的发展前景广阔，将在技术、应用和社会影响等多个维度上持续演进。基于当前趋势和技术进步，以下从几个关键方面分析AI Agent的未来发展方向、潜力以及可能面临的挑战：&lt;/p>
&lt;ol>
&lt;li>
&lt;p>&lt;strong>技术趋势与发展方向&lt;/strong>&lt;/p>
&lt;p>(1) &lt;strong>通用智能Agent（General-Purpose Agents）&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>&lt;strong>趋势&lt;/strong>：未来的AI Agent将从特定任务导向（如对话机器人、自动驾驶Agent）向通用智能方向发展，能够跨领域、跨任务执行复杂指令，类似人类的“全能助手”。&lt;/li>
&lt;li>&lt;strong>技术驱动&lt;/strong>：&lt;/li>
&lt;li>&lt;strong>大语言模型（LLM）升级&lt;/strong>：更强大的模型（如Grok 3的后续版本）将具备更强的推理、规划和上下文理解能力。&lt;/li>
&lt;li>&lt;strong>多模态能力&lt;/strong>：Agent将整合视觉、语音、文本等多种输入，处理多模态任务。例如，一个Agent可以同时分析图片、语音指令和文本数据，完成如“根据这张照片设计一个房间布局”的任务。&lt;/li>
&lt;li>&lt;strong>长上下文与记忆&lt;/strong>：通过改进内存管理（如扩展上下文窗口或外部记忆数据库），Agent将能处理超长对话或复杂项目，保持一致性。&lt;/li>
&lt;li>&lt;strong>示例&lt;/strong>：未来的Agent可能像《钢铁侠》中的JARVIS，能够无缝管理日程、分析数据、控制设备并与用户自然对话。&lt;/li>
&lt;/ul>
&lt;p>(2) &lt;strong>自主性与自我进化&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>&lt;strong>趋势&lt;/strong>：Agent将具备更高的自主性和自我学习能力，能够在没有明确指令的情况下主动优化策略或发现新任务。&lt;/li>
&lt;li>&lt;strong>技术驱动&lt;/strong>：&lt;/li>
&lt;li>&lt;strong>强化学习（RL）与在线学习&lt;/strong>：Agent将通过与环境的持续交互优化行为，甚至在运行时自我调整模型参数。&lt;/li>
&lt;li>&lt;strong>元学习（Meta-Learning）&lt;/strong>：Agent将“学会学习”，快速适应新任务或环境，减少对大规模训练数据的依赖。&lt;/li>
&lt;li>&lt;strong>开源生态&lt;/strong>：框架如LangChain、AutoGPT的进一步发展将支持开发者构建自适应Agent。&lt;/li>
&lt;li>&lt;strong>示例&lt;/strong>：一个企业Agent可能自主监控供应链数据，预测中断风险并提出优化建议，而无需人工干预。&lt;/li>
&lt;/ul>
&lt;p>(3) &lt;strong>多Agent协作与分布式智能&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>&lt;strong>趋势&lt;/strong>：多Agent系统（Multi-Agent Systems, MAS）将成为主流，多个Agent通过协作或竞争解决复杂问题，模拟人类社会分工。&lt;/li>
&lt;li>&lt;strong>技术驱动&lt;/strong>：&lt;/li>
&lt;li>&lt;strong>分布式计算&lt;/strong>：改进的通信协议和分布式架构将支持大规模Agent协作。&lt;/li>
&lt;li>&lt;strong>博弈论与协商机制&lt;/strong>：Agent将使用更复杂的协商算法（如基于博弈论的策略）优化资源分配。&lt;/li>
&lt;li>&lt;strong>去中心化Agent&lt;/strong>：区块链和去中心化AI技术可能催生自主运行的Agent网络。&lt;/li>
&lt;li>&lt;strong>示例&lt;/strong>：在智慧城市中，交通Agent、能源Agent和公共服务Agent协作，动态优化交通流量和能源分配。&lt;/li>
&lt;/ul>
&lt;p>(4) &lt;strong>人机协同与交互性&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>&lt;strong>趋势&lt;/strong>：Agent将更注重与人类的自然交互，成为辅助工具而非完全替代，强调可解释性和信任。&lt;/li>
&lt;li>&lt;strong>技术驱动&lt;/strong>：&lt;/li>
&lt;li>&lt;strong>可解释AI（XAI）&lt;/strong>：Agent将提供决策的透明解释，增强用户信任。&lt;/li>
&lt;li>&lt;strong>情感计算&lt;/strong>：通过分析语音语调、面部表情，Agent将实现更具共情力的交互。&lt;/li>
&lt;li>&lt;strong>混合智能&lt;/strong>：Agent与人类专家协同工作，结合人类直觉和AI的计算能力。&lt;/li>
&lt;li>&lt;strong>示例&lt;/strong>：医疗Agent可能协助医生分析影像数据，解释诊断依据并根据医生反馈调整建议。&lt;/li>
&lt;/ul>
&lt;p>(5) &lt;strong>边缘计算与轻量化Agent&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>&lt;strong>趋势&lt;/strong>：Agent将部署在边缘设备（如手机、IoT设备），实现低延迟、隐私保护的本地化智能。&lt;/li>
&lt;li>&lt;strong>技术驱动&lt;/strong>：&lt;/li>
&lt;li>&lt;strong>模型压缩&lt;/strong>：通过蒸馏、量化等技术，缩小模型体积以适应资源受限设备。&lt;/li>
&lt;li>&lt;strong>联邦学习&lt;/strong>：Agent在本地学习，保护用户数据隐私。&lt;/li>
&lt;li>&lt;strong>示例&lt;/strong>：智能家居Agent在本地处理语音指令，无需云端传输，降低延迟并增强隐私。&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>应用场景的扩展&lt;/strong>&lt;/p>
&lt;p>AI Agent将在以下领域进一步深化应用，改变行业格局：&lt;/p>
&lt;ul>
&lt;li>&lt;strong>个人化服务&lt;/strong>：定制化的教育Agent根据学生进度调整教学内容；健康Agent实时监测生理数据，提供个性化建议。&lt;/li>
&lt;li>&lt;strong>企业自动化&lt;/strong>：Agent将推动“智能企业”，自动化从客服到供应链管理的全流程。例如，财务Agent自动分析报表并预测现金流。&lt;/li>
&lt;li>&lt;strong>创意与娱乐&lt;/strong>：Agent将协助创作音乐、电影剧本，甚至生成虚拟世界中的动态NPC，提升沉浸式体验。&lt;/li>
&lt;li>&lt;strong>科学研究&lt;/strong>：科学Agent将加速研究进程，例如通过自动化实验设计、文献分析推动药物发现。&lt;/li>
&lt;li>&lt;strong>社会治理&lt;/strong>：Agent将优化公共资源分配，如在灾难响应中协调救援物资和人力。&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>社会影响&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>&lt;strong>正面影响&lt;/strong>：&lt;/li>
&lt;li>&lt;strong>效率提升&lt;/strong>：Agent将大幅降低重复性劳动成本，提高生产力。&lt;/li>
&lt;li>&lt;strong>普惠性&lt;/strong>：开源Agent框架和低成本部署将使中小企业和个人也能受益于AI。&lt;/li>
&lt;li>&lt;strong>创新加速&lt;/strong>：Agent将推动跨学科创新，如在气候变化、医疗等领域的突破。&lt;/li>
&lt;li>&lt;strong>潜在风险&lt;/strong>：&lt;/li>
&lt;li>&lt;strong>就业冲击&lt;/strong>：高度自动化的Agent可能取代部分低技能岗位，引发就业挑战。&lt;/li>
&lt;li>&lt;strong>伦理与安全&lt;/strong>：自主Agent可能因错误决策或恶意使用导致风险，如金融市场操纵或隐私泄露。&lt;/li>
&lt;li>&lt;strong>监管需求&lt;/strong>：Agent的广泛应用将需要新的法律框架，规范其行为和责任归属。&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>面临的挑战&lt;/strong>&lt;/p>
&lt;p>尽管前景光明，AI Agent的发展仍需克服以下障碍：&lt;/p>
&lt;ul>
&lt;li>&lt;strong>计算资源与能耗&lt;/strong>：训练和运行复杂Agent需要大量算力，需开发更高效的算法和硬件。&lt;/li>
&lt;li>&lt;strong>可解释性&lt;/strong>：确保Agent的决策透明，避免黑箱问题。&lt;/li>
&lt;li>&lt;strong>安全性&lt;/strong>：防止Agent被黑客操控或生成有害内容。&lt;/li>
&lt;li>&lt;strong>伦理问题&lt;/strong>：平衡Agent的自主性与人类控制，避免过度依赖或失控。&lt;/li>
&lt;li>&lt;strong>标准化与互操作性&lt;/strong>：不同Agent系统间的兼容性需提高，以实现无缝协作。&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>未来5-10年的展望&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>&lt;strong>短期（1-3年）&lt;/strong>：Agent将更广泛集成到现有系统中，如企业ERP、个人助手，框架如LangChain将进一步成熟，RAG和工具调用成为标配。&lt;/li>
&lt;li>&lt;strong>中期（3-5年）&lt;/strong>：通用Agent开始出现，能够处理跨领域的复杂任务；多Agent协作在交通、物流等领域实现规模化应用。&lt;/li>
&lt;li>&lt;strong>长期（5-10年）&lt;/strong>：Agent可能接近通用人工智能（AGI）水平，成为人类生活中不可或缺的伙伴，推动社会进入高度智能化阶段。&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>总结&lt;/strong>&lt;/p>
&lt;p>未来AI Agent将朝着更通用、自主、协作和人性化的方向发展，深刻改变个人生活、企业运营和社会治理。其核心驱动力将是多模态AI、强化学习、分布式系统和人机协同技术的进步。然而，可解释性、安全性和伦理问题将是发展的关键制约因素。Agent的最终目标不仅是自动化任务，而是成为可信任的智能伙伴，与人类共同应对复杂挑战。&lt;/p>
&lt;/li>
&lt;/ol>
&lt;h2 id="agent示例与架构">Agent示例与架构
&lt;/h2>&lt;h3 id="阿里webdancer自主信息搜索agent">阿里WebDancer：自主信息搜索Agent
&lt;/h3>&lt;p>&lt;a class="link" href="https://blog.csdn.net/u011426236/article/details/150002012" target="_blank" rel="noopener"
>阿里WebDancer：自主信息搜索Agent - csdn介绍&lt;/a>&lt;/p>
&lt;p>简单来说，WebDancer是&lt;strong>阿里巴巴（模型即服务MaaS团队）&lt;strong>开发的一个&lt;/strong>自主AI智能体（Agent）&lt;/strong>。&lt;/p>
&lt;p>您可以把它想象成一个“AI搜索助理”。您不再是给它一个“关键词”，而是给它一个**“任务”**。&lt;/p>
&lt;ul>
&lt;li>&lt;strong>传统搜索：&lt;/strong> 您输入“AI Agent 最新进展”，得到一堆链接，您自己去点开、阅读、总结。&lt;/li>
&lt;li>&lt;strong>WebDancer：&lt;/strong> 您输入“帮我调研一下2025年AI Agent技术的最新进展和主要参与者”，它会&lt;strong>像人一样去“上网”&lt;/strong>，自己浏览网页、点击链接、筛选信息、甚至打开新标签页，最后&lt;strong>直接给您一份总结好的答案&lt;/strong>。&lt;/li>
&lt;/ul>
&lt;p>&lt;img src="https://www.zata.cc/p/ai-agent%E4%BB%8B%E7%BB%8D%E5%9F%BA%E4%BA%8E%E5%A4%A7%E6%A8%A1%E5%9E%8B%E7%9A%84%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD%E4%BB%A3%E7%90%86/images/index/image.png"
width="1976"
height="4163"
srcset="https://www.zata.cc/p/ai-agent%E4%BB%8B%E7%BB%8D%E5%9F%BA%E4%BA%8E%E5%A4%A7%E6%A8%A1%E5%9E%8B%E7%9A%84%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD%E4%BB%A3%E7%90%86/images/index/image_hu3832832615017365602.png 480w, https://www.zata.cc/p/ai-agent%E4%BB%8B%E7%BB%8D%E5%9F%BA%E4%BA%8E%E5%A4%A7%E6%A8%A1%E5%9E%8B%E7%9A%84%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD%E4%BB%A3%E7%90%86/images/index/image_hu9692877512065978619.png 1024w"
loading="lazy"
alt="webDancer 的主要流程"
class="gallery-image"
data-flex-grow="47"
data-flex-basis="113px"
>&lt;/p>
&lt;hr>
&lt;blockquote>
&lt;p>核心特点与能力&lt;/p>
&lt;/blockquote>
&lt;p>WebDancer之所以被称为“自主信息搜索Agent”，关键在于它的几个核心能力：&lt;/p>
&lt;ul>
&lt;li>
&lt;p>&lt;strong>1. 高度自主性 (Autonomy)&lt;/strong>
这是它最大的特点。WebDancer可以自主理解您的复杂意图，并&lt;strong>自动规划搜索步骤&lt;/strong>。它会自己决定先搜什么、再搜什么、哪些信息是相关的。&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>2. 拟人化网页交互 (Human-like Interaction)&lt;/strong>
它不是通过API爬取数据，而是&lt;strong>模拟真实用户&lt;/strong>的行为在浏览器中操作，比如：&lt;/p>
&lt;ul>
&lt;li>滚动页面（Scroll）&lt;/li>
&lt;li>点击链接和按钮（Click）&lt;/li>
&lt;li>在搜索框输入文字（Type）&lt;/li>
&lt;li>切换标签页（Tab Switching）&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>3. 复杂任务拆解 (Complex Task Decomposition)&lt;/strong>
面对“帮我找几篇关于Llama 3的深度技术评测，并总结它们的优缺点”这样的复杂问题，它能将其分解为一系列子任务（比如：搜索评测、筛选来源、阅读并提取观点、对比总结），并按顺序执行。&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>4. 自我纠错与反思 (Self-Correction &amp;amp; Reflection)&lt;/strong>
这是它“智能”的关键。如果它发现一条搜索路径是死胡同（比如网页打不开、信息不相关，或者进入了广告页），它能够“反思”并尝试新的搜索策略，而不是卡住不动。&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>5. 跨网页信息整合 (Information Synthesis)&lt;/strong>
最终，它会把从&lt;strong>多个网页&lt;/strong>（可能是几十个）中找到的零散信息，整合成一个连贯、全面的答案。&lt;/p>
&lt;/li>
&lt;/ul>
&lt;hr>
&lt;blockquote>
&lt;p>它与传统搜索有何不同？&lt;/p>
&lt;/blockquote>
&lt;p>您可以这样理解它们之间的区别：&lt;/p>
&lt;blockquote>
&lt;p>&lt;strong>传统搜索引擎 (如谷歌、百度):&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>&lt;strong>角色：&lt;/strong> 信息索引员 (Indexer)&lt;/li>
&lt;li>&lt;strong>工作：&lt;/strong> 您输入关键词，它返回一个&lt;strong>相关网页的“索引列表”&lt;/strong>。&lt;/li>
&lt;li>&lt;strong>用户负担：&lt;/strong> 用户需要自己完成“浏览、筛选、阅读、总结”的工作。&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>WebDancer (AI Agent):&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>&lt;strong>角色：&lt;/strong> 研究助理 (Research Assistant)&lt;/li>
&lt;li>&lt;strong>工作：&lt;/strong> 您输入一个**“任务”或“问题”&lt;strong>。它&lt;/strong>代您执行“搜索和浏览”的整个过程**。&lt;/li>
&lt;li>&lt;strong>用户负担：&lt;/strong> 用户直接获取**“最终答案”**。&lt;/li>
&lt;/ul>
&lt;/blockquote>
&lt;p>总而言之，WebDancer代表了从“信息检索”（Information Retrieval）到“答案获取”（Answer Generation）的转变，是AI Agent技术在信息处理领域的一个重要应用。&lt;/p></description></item></channel></rss>