前端进阶之旅前端进阶之旅
基础篇
进阶篇
高频篇
精选篇
手写篇
原理篇
面经篇
AI 面试
自检篇
每日一题
  • 综合
    • 综合题型
    • 其他问题
    • 设计模式
    • 思维导图
    • 学习路线
  • 前端基础
    • HTTP
    • 浏览器
    • 计算机基础
  • 进阶学习
    • NPM工作流
    • Docker
    • Canvas
    • Node学习指南
    • 前端综合文章
  • 其他
    • Handbook
    • 职场话题
    • CSS可视化
小程序题库
公众号动态
博客动态
AI 热点
开发者导航
基础篇
进阶篇
高频篇
精选篇
手写篇
原理篇
面经篇
AI 面试
自检篇
每日一题
  • 综合
    • 综合题型
    • 其他问题
    • 设计模式
    • 思维导图
    • 学习路线
  • 前端基础
    • HTTP
    • 浏览器
    • 计算机基础
  • 进阶学习
    • NPM工作流
    • Docker
    • Canvas
    • Node学习指南
    • 前端综合文章
  • 其他
    • Handbook
    • 职场话题
    • CSS可视化
小程序题库
公众号动态
博客动态
AI 热点
开发者导航
返回 AI 情报前线
All News · 全部资讯3989
  • CLAUDE.md 失效的 5 个常见错误及修复方法
  • Keyv 供应链攻击关键信息:Shai-Hulud 行动
  • 如何写一个团队真正需要的代码审查SKILL.md
  • 树莓派跑AI Agent三个月:3B小模型的任务设计经验
  • 树莓派5本地跑AI推理:省掉每月40美元API费
  • MCP Workbench:MCP服务器的Postman式测试平台
  • 通过MCP将企业数据库接入AI Agent实战
  • 覆盖率100%却导致生产事故:AI编程时代的测试盲区
  • AI正在突破沙盒:自主Agent失控事件深度剖析
  • LangGraph 检查点三次生产重写避坑经验
  • SQLite 实现10毫秒内语义搜索:本地AI记忆栈实战
  • MCP服务器目录API实战:真实端点与测试模式
  • Stripe内部Kai平台架构:企业级Agent框架设计
  • 面向能力的路由设计:生产级AI Agent实战
  • MiniMax-H3 全模态模型登陆苹果M系列芯片,MLX开源移植可本地跑
  • GitHub Copilot Billing Preview应用正式停用
  • Enola架构事实模型:从源码到类型化依赖图
  • Telnyx边缘计算实现URL摘要:边缘AI缓存实战
  • 本地Slack备份+MCP:让Claude/Cursor直接搜索历史消息
  • GitHub法务团队用Copilot CLI实现零代码工作流优化
  • 我用 Claude Code 将一周任务压缩到两天:复杂表单实战复盘
  • Amazon Bedrock 原生集成 Web Search:LLM 实时联网检索
  • Cursor开源MoK:GB300 NVL72机架上的确定性MoE训练大内核
  • AI 门控测试的"绿戏"陷阱:把假数据打在网络层才能真测
  • Agent身份扫描暴露真相:你的Agent系统不过是脆弱胶水代码?
  • 多Agent研究工作流的静默失败:失败看起来像成功
  • OpenAI 内部路线图:今年秋季 Codex 将显得「原始」
  • MCP Servers + Agents:让Claude Code告别"中间人"状态
  • ChatGPT Work亿级用户Agent架构解析
  • OAuth 2.0 的隐含假设正在被 AI Agent 打破
  • LLM记忆不是聊天历史:如何设计能改进未来决策的记忆系统
  • OpenAI Astra证明10条数学定理,token成本2000美元
  • AI写的代码review发现不了webhook重试bug
  • 融合 NeetCode 150 与 Blind 75 的面试题模式追踪表
  • Agentic 软件工程使人类上下文成为瓶颈
  • CopilotKit 开源 Channels SDK:一套代码把 AI Agent 接入 Slack/MS Teams
  • 15分钟构建生产级MCP服务器:无需SDK
  • 为何 AI 编程助手在大型代码库中频频迷失
  • DiffusionGemma 为何快:离散扩散打破自回归从左到右的顺序约束
  • AI 编程助手的批准对话框正在欺骗你:GhostApproval 符号链接漏洞详解
  • Claude Code Subagent 失效?先改 description 字段
  • 用本地 LLM 在打开陌生代码库前先做安全 triage
  • Agent记忆不是聊天历史:工作记忆与长期记忆的本质区别
  • Google Cloud推统一AI模型路由API
  • 已加载 44 / 3989
8.0
热点
AI SCORE
编程提效2026-08-05 03:13

面向能力的路由设计:生产级AI Agent实战

dev.to · AI#Agent#架构#路由
Editor brief · 编辑速览

提出以「能力」而非「供应商」作为 Agent 路由单元,详细定义能力契约的五个组成部分及质量度量方法。

文章思维导图
Knowledge map
拖拽缩放
Full translation

完整中文译文

大多数 Agent 系统在集成决策上都走同一条老路:选一个搜索、爬取或浏览器自动化的提供商,需要上网时直接调用。

原型阶段这没问题。到了生产环境就脆弱了,因为"上网"不是一种能力。

搜索请求需要相关链接。爬取请求需要来自已知 URL 的干净内容。有来源支撑的回答请求需要带引用的综合结果。浏览器操作请求需要与实时页面成功交互。这些任务的成功条件、延迟特征、成本和失败模式各不相同。

因此路由的基本单位应该是能力,而不是供应商。

本文介绍一种构建该路由层的实用方法。目标不是选出一个全能的最好供应商,而是让每次工具调用都可衡量、可替换,并且与 Agent 实际需要的结果对齐。

从结果出发,而非端点

在选择供应商之前,先定义每种能力成功意味着什么。

一份有用的能力契约包含五个部分:

  • 输入契约:查询、URL、schema、文档或自然语言目标
  • 成功谓词:使响应可用的最低条件
  • 质量度量:相关性、提取准确率、覆盖率、内容清洁度或任务完成度
  • 截止时间:Agent 应该降级或停止前的延迟预算
  • 失败策略:哪些错误可重试,哪些需要换供应商,哪些应该返回给 Agent

以 Web 搜索为例。返回 200 OK 是不够的。如果结果包含无关链接、遗漏了请求的时间范围,或返回的摘要没有足够上下文供下一步推理使用,结果仍然毫无用处。

文档解析的成功可能需要可读文本、最小页面覆盖率,以及对扫描页面的 OCR。浏览器操作的成功应该与请求的状态变更绑定,而不是与没有异常绑定。

这一区别避免了一个常见的可观测性错误:将传输成功计为任务成功。

为每种能力构建一张记分卡

一旦成功标准明确,就在每种能力内部评估供应商,而不是把不相关的任务混在一起做全局排名。

实用的记分卡需要四个维度。

1. 质量必须与能力匹配

搜索:在选定截断点下的召回率或相关性。

爬取:内容完整度、Markdown 清洁度、在困难页面上的成功率。

结构化提取:相对于已知 schema 的字段级精确率和召回率。

爬行:发现页面的覆盖率与重复控制。

文档解析:文本准确率、阅读顺序和 OCR 覆盖率。

浏览器操作:请求交互的完成度及结果状态的验证。

避免对所有能力使用一个通用的"质量"测试。指标应该描述下游 Agent 能安全使用什么。

2. 从调用方视角测量墙钟延迟

延迟中位数对了解正常行为有用,但不应作为运营决策的唯一数字。

路由策略还需要一个基于 Agent 总截止时间的超时。如果工作流还剩十秒,一个质量优秀但中位延迟十二秒的供应商对这次调用来说不是可行的主路由。

尾延迟在调用链式场景下很重要。几个单独可接受的延迟可能在最终综合步骤开始前就耗尽整个 Agent 预算。

3. 每个成功结果的成本

每次请求的价格很容易比较,但往往具有误导性。

运营指标是:

每个成功结果的成本 = 总计费成本 / 可用结果数量

假设供应商 A 每次请求收费 $0.001,成功率一半。供应商 B 收费 $0.0015,成功率 90%。忽略重试和二次处理,它们的有效成本是:

  • 供应商 A:每个成功结果 $0.002
  • 供应商 B:每个成功结果约 $0.00167

看似更便宜的供应商按结果衡量反而更贵。

即使返回了技术意义上有效的响应,失败也应该留在有效成本的计算中。如果 Agent 无法使用数据,系统仍然为一次不成功的尝试付了钱。

将传输错误、超时、格式错误的响应和能力级失败分开追踪。

这种区分有助于回答不同问题:

  • 供应商不可用?
  • 集成在错误解析响应?
  • 供应商返回了有效但低质量的数据?
  • 目标站点阻止了请求?
  • 任务超出了供应商支持的形式?

单一的错误率数字会掩盖修复路径。

4. 保持语料库固定

只有当供应商接收相同任务时,比较才有意义。

对每种能力使用版本化的任务语料库。在给定评估中,每个供应商应该接收相同的查询、URL、目标 schema、截止时间和通过标准。当语料库变更时,递增版本号并记录新的运行日期。

这控制了一种微妙的偏差来源:给一个供应商简单页面,给另一个供应商反爬机器人保护的页面,然后将它们的成功率作为等效工作负载进行比较。

语料库应该包含困难案例,而不仅仅是演示友好的输入。生产级失败往往出现在扫描文档、动态页面、受限速域名、非寻常 schema,以及需要从多个来源获取证据的查询上。

该设计的一个公开例子是 NativePort 运营的基于能力的基准测试方法论。它为每种能力保持固定的语料库,并发布质量、中位延迟、每次成功调用的成本和错误率及运行日期。重要的模式不是其特定的复合分数,而是能力的分离和底层测量的发布。

将选择与执行分离

Agent 应该请求一种能力。路由层应该决定哪个供应商来执行。

概念上,请求包含:

  • 最低质量阈值
  • 可选约束,如地理位置或输出格式

路由器只评估支持该契约的供应商。然后使用最新的合格记分卡和当前运营健康状态选择主路由。

不要让供应商特定的请求字段泄露到 Agent 的规划界面,除非它们代表真实的用户需求。否则,每次更换供应商都会变成一次 Agent 提示的变更。

同时,避免将每个上游响应强制塞进一个过于通用的 schema。归一化在路由边界有用,但能力特定的信息应该在 Agent 需要时仍然可用。

一个好的折中方案是使用一个稳定的外层,包含状态、时间、成本、来源和结果分类,能力响应则保留在其内部。

将降级视为策略,而非重试

重试和供应商降级解决的是不同问题。

重试将相同任务发送到相同供应商,通常在临时故障之后。降级将任务发送到不同供应商,因为第一条路由无法在剩余预算内满足能力契约。

AWS Builders' Library 关于重试和退避的指南解释了为什么重试需要超时、限制、退避和抖动。无限制的重试会放大过载,并将局部故障转变为更大范围的事故。

对于 Agent 工具,降级策略应考虑:

  • 故障是否是临时的
  • 调用是否可以安全重复
  • 剩余延迟预算
  • 另一个供应商是否提供真正独立的路径
  • 重复执行是否会产生外部副作用

搜索和只读爬取通常比提交表单或变更状态的浏览器操作更容易重试。对于有状态操作,系统需要在安全重试之前具备幂等性或操作后验证。

一个有用的规则是:只有当相同路由可能产生不同结果时才重试。否则,切换路由或停止。

对结果埋点,而不仅仅是请求

路由只有当生产反馈到达记分卡时才能改进。

追踪:

  • 能力和语料库或任务类
  • 选中的供应商和降级序列
  • 开始时间、截止时间和持续时间
  • 可用时的计费成本
  • 能力级成功
  • Agent 使用的最终结果

使用分布式追踪连接 Agent 决策、工具调用、重试、降级和最终结果。OpenTelemetry HTTP 语义约定为 HTTP 客户端 span 提供了标准基础,而能力和结果字段可以作为应用属性添加。

注意高基数数据。原始查询、完整 URL 和提取的内容可能包含敏感信息,并会使遥测变得昂贵。优先使用有边界的任务类、适当的哈希标识符和明确的保留规则。

最重要的是,保留"请求完成"和"Agent 收到可用结果"之间的差异。第二个指标才是路由器应该改进的指标。

部署时不要制造路由黑盒

能力路由器应该对运维人员可解释。

对于每个决策,保留足够的信息来回答:

  • 哪些供应商符合条件?
  • 为什么选择该主路由?
  • 哪个阈值触发了降级?
  • 基准数据有多旧?
  • 最终结果是否满足成功谓词?
  • 完整尝试花了多少成本?

从影子模式开始。让现有集成继续服务流量,同时路由器计算它本会做出的决策。在启用自动切换之前,将这些决策与真实结果进行比较。

然后每次引入一种能力的路由。搜索通常比有状态浏览器自动化更容易,因为成功谓词和重试行为更简单。为事故保持手动覆盖,为记分卡数据缺失或过时的案例保持确定性默认值。

路由器应该可预测地降级。缺失的基准数据不能沉默地变成供应商良好的证据。

实用实现检查清单

在启用能力优先路由之前,确认:

  • 每种能力都有书面成功谓词
  • 供应商在相同版本化的任务上进行比较
  • 失败被纳入有效成本计算
  • 传输错误和不可用响应被分开分类
  • 重试有限制、超时、退避和抖动
  • 降级遵守剩余截止时间和副作用风险
  • 追踪将供应商尝试与最终 Agent 结果连接
  • 基准日期对运维人员可见
  • 缺失或过时的数据有明确的默认策略
  • 路由决策可以事后解释

核心思想很简单:Agent 不需要"一个 Web 供应商"。它需要的是在特定预算内完成一次成功的搜索、提取、爬行、文档解析或浏览器操作。

当路由遵循这些能力契约时,供应商选择就变成了运营策略而非永久的架构承诺。这使得 Agent 更容易衡量、失败更安全、演进成本更低。

Disclosure: This article is published by NativePort, whose public benchmark methodology is cited as an implementation example. It does not recommend a product or provider. The draft was prepared with AI assistance and reviewed against the cited sources and public methodology before publication.

Original source

本文由 AI 翻译整理自 dev.to · AI,原文版权归原作者所有。

阅读英文原文
上一篇
Stripe内部Kai平台架构:企业级Agent框架设计
下一篇
MiniMax-H3 全模态模型登陆苹果M系列芯片,MLX开源移植可本地跑