参考架构

各章逐一引入机制来构建智能体系统,每种机制都在其所应对的故障首次出现之处引入。本附录将这些机制整合为一个统一的参考架构,使设计系统、审查系统或追踪跨组件故障的读者能够核查:系统具备哪些组件,各组件负责什么,消除了哪些 H·S·A 风险敞口,以及哪一章推导了该组件。本附录按本书使用的组件组织(模型、上下文与记忆、工具与沙箱、智能体运行框架、持久日志、恢复、评估、学习循环和集群),列举的是技术而非产品;提及某种实现时,它只是该技术的一个示例。

如何使用本附录

查阅与当前问题对应的部分。

  • 当你正在设计新的智能体系统,需要一份组件及其接口的检查清单时,从 节 1 中的组件图开始。
  • 当任务的 H·S·A 位置已知,需要确定它需要多少架构支持时,使用 节 2 中的闭合配置。
  • 当故障涉及多个组件,需要查明出错步骤由哪个组件负责时,按照 节 3 追踪一轮交互在架构中的执行过程。
  • 当你正在选择隔离边界,需要有代表性的启动成本时,使用 节 6。
  • 当你正在规划持久状态存放在哪里,以及谁可以写入时,使用 节 5。
  • 当你正在跨机器池部署该架构,需要了解各池发出的故障信号时,使用 节 12,并借助 智能体故障分类 对故障本身进行分类。

组件图

智能体系统中有一个组件负责提出提议,许多组件负责作出决策。模型读取上下文并返回提议(基座模型)。其余所有组件的存在,都是为了决定模型看到什么、哪些提议得以生效、如何确保产生的影响安全、轨迹如何在故障后得以保留,以及如何确认结果正确。随机计算机的功能架构 将这些组件绘制成本书各部分的关系图。组件映射 则按工程师构建组件的方式列出它们,并说明每个组件消除的风险敞口、强制维持的不变量,以及缺失时会出现的问题。

组件映射:智能体系统中的每个组件、它负责的内容、它闭合的 H·S·A 暴露、它强制维持的不变量、缺少它会导致的故障,以及详细阐述它的章节。
组件 负责范围 消除的风险敞口 强制维持的不变量 缺失时的故障 章节
模型服务 调用接口、采样、停止原因、令牌用量核算 无(风险源头) 在运行时采取行动之前,每个输出都只是提议 将提议视为结果;将流畅的输出视为任务完成 基座模型
上下文组装器 每次调用看到的内容:布局、来源标签、压缩、失效处理 状态(\(S_1\)) 每个暂存条目都有来源、预算份额和有效性规则 上下文溢出、信息稀释、过时观测、投毒 上下文工程
服务侧记忆 活跃轨迹的注意力状态、前缀复用、工具等待期间的驻留 状态(\(S_1\)) 注意力状态由令牌前缀派生,始终可以根据该前缀重建 工具等待期间内存被占用而无法利用;布局频繁变动导致前缀复用失效 KV 缓存管理
持久存储 数据源、智能体写入的记忆、检索索引、检索契约 状态(\(S_3\)) 权威性始终归于数据源;每个派生副本都要与数据源核验 检索结果过时、自写内容投毒、与磁盘内容矛盾 长期记忆
工具网关 模式验证、授权、幂等键、结算、观测整形 权限 完全中介:未经验证和授权,任何调用都不能到达环境 重复影响、未经验证的调用、无法解读的观测 工具调用
隔离边界 能力、凭据、工作区、出站访问、污点、沙箱池 权限(\(A_1\)) 在模型下层实施约束,约束范围与任务权限相匹配 已获授权的调用触及任务从未需要的状态、秘密或主机 智能体沙箱
智能体运行框架 轨迹记录、状态集合、控制动作、审批关卡、预算 执行跨度 无需模型配合,运行时即可暂停、限制或停止循环 循环失控、接受迟到结果、未经审查就发出不可逆调用 智能体运行框架
轨迹日志 预写意图、检查点、恢复执行、重放 执行跨度 在授权意图被持久化之前,任何外部影响都不能离开主机 崩溃后进度丢失;恢复执行时重复产生影响 持久执行
恢复 Saga 与补偿、枢轴边界、前向修复、进展检测、熔断器 执行跨度与权限 每个可补偿的影响在发出前都已注册补偿器 影响只完成一部分、无声空转、重试风暴 故障恢复
评估 任务环境、评分、重复试验统计、追踪记录、归因、发布关卡 三者全部(经测量) 成功是在明确的证据等级下,环境中经验证的变化 以对话记录作为发布依据;将故障归咎于错误的层 智能体评估
学习循环 数据筛选整理、准入级联、微调、以验证器为依据的强化学习 不改变任何一项 未经评估验证、未按数据划分卫生要求隔离的内容,一律不得用于训练 使用未经验证或受污染的轨迹训练;奖励投机 轨迹整理
集群 多智能体边界与委派、容量、路由、支出治理 三者全部被放大 委派时权限只能缩减;每个被接受的任务都有价格 相关性错误、无人负责的工作、跨委派超出预算 多智能体协同

该表可以从两个方向阅读。沿“负责内容”列向下阅读,它是一份检查清单;如果系统无法指出负责每一行内容的组件,就说明系统存在缺口。沿“缺失时的故障”列逐行横向阅读,它是一份诊断指南;如果某个故障与某一行相符,就能据此定位本应防止该故障的组件。即使是模型服务的不变量,也由运行时而非模型来强制维持,因为表中的每个不变量都在模型下层成立(原则 不变闭包原则)。

按暴露划分的闭合配置

并非每项任务都需要所有组件。只读问答循环需要上下文组装器和设有轮次上限的智能体运行框架,为它添加 saga 引擎只会增加成本。生产环境变更则几乎需要所有组件。任务在 H·S·A 中的位置(H·S·A 暴露面)决定了它需要多少架构支持,而 按暴露级别划分的闭合配置 列出了每个级别的最低要求。

按暴露级别划分的闭合配置:运行时在每个 H·S·A 级别必须提供的最低闭合保障,以及提供这些保障的组件。任务需要其位置所选各行要求的并集,其完成标准所要求的证据级别也随暴露程度同步提高。
暴露级别 运行时提供的最低闭合保障 必须具备的组件
时域,短(\(H \lesssim 10\)) 轮次、令牌和成本上限;每次调用的输出上限和截止时间 智能体运行框架(预算)
时域,长(\(H \gtrsim 100\)) 具有预写意图记录的持久日志、检查点、恢复执行、进展检测 智能体运行框架、轨迹日志、恢复组件
状态 \(S_1\)(仅上下文) 上下文预算、来源标签、逐字保留标识符的压缩机制 上下文组装器、服务内存
状态 \(S_2\)(沙箱工作区) 租借给轨迹的工作区、租户之间的重置、绑定到日志位置的快照 隔离封装、轨迹日志
状态 \(S_3\)(持久、共享) 对照源检查版本和来源的检索契约;经运行时准许的写入路径 持久存储、上下文组装器
权限 \(A_0\)(读取) 凭据不进入上下文;限制出站访问,因为读取仍可能造成泄露 工具网关、隔离封装(出站访问)
权限 \(A_1\)(沙箱内修改) 与代码相匹配的封装、作用域限定在工作区内的能力、重置契约 工具网关、隔离封装
权限 \(A_2\)(可重试、可补偿) 幂等键与重试前的结果确认;在派发前注册的补偿器 工具网关、轨迹日志、恢复组件
权限 \(A_3\)(不可逆) 暂缓调用并设定有效期、重新检查其前置条件的审批关卡;最后执行枢轴操作 智能体运行框架(审批关卡)、恢复组件(枢轴边界)

任务从每个暴露维度中选择一行,并需要满足这些行要求的并集。架构决策矩阵:工作流与模型导向循环 中的不稳定测试修复处于长时域、\(S_2\) 和 \(A_1\),因此需要智能体运行框架、轨迹日志、恢复组件、隔离封装和工具网关,但不需要审批关卡。同一个智能体将修复推送到共享分支时,推送操作转为 \(A_2\),分支状态转为 \(S_3\),这就增加了结果确认、补偿器,以及对后续检索到的任何有关该分支的信息进行源核查的要求。将任务权限降至其实际所需的水平,通常比为它从未需要的权限构建闭合保障成本更低,这正是 H·S·A 暴露面 中那起事件的教训。

贯穿架构的一轮执行

长轨迹中的单轮执行会涉及几乎所有组件,而每个步骤都有唯一的负责组件。按顺序追踪这一轮执行,可以看出每个不变量在何处接受检查,以及由哪个日志事件记录该检查。

  1. 准入本轮执行。 智能体运行框架从 READY 获取轨迹,检查其剩余预算,并将其移至 CALLING_MODEL(轨迹状态)。
  2. 组装上下文。 上下文组装器在上下文预算内,根据轨迹历史构建调用,将稳定前缀置于最前,将易变内容置于最后,并为不可信文本附上来源标签(编排下一次调用)。日志记录上下文已构建,并记录输入内容的哈希值。
  3. 调用模型。 模型服务接收附带输出上限和截止时间的调用,尽可能复用已缓存的前缀(跨轮次前缀缓存),并返回包含停止原因和 token 用量的提案(调用契约)。日志记录该回复。
  4. 验证并授权。 工具网关依据每个提议调用的模式对其进行解析,根据运行时自身持有的工具描述信息决定授权(可互操作的工具发现),并将不可逆调用路由至审批关卡,而非直接分发(审批关卡)。
  5. 先写入意图,再分发调用。 轨迹日志在操作效果离开主机之前,先将意图持久化(意图先于效果)。对于可补偿调用,恢复机制在同一时点注册补偿操作(轨迹 Saga 模式)。随后,网关在限定于该任务的能力权限下,将调用连同其幂等键分发至隔离边界内(权能与凭据)。
  6. 等待时仅保留必要资源。 智能体运行框架将轨迹移至 WAITING_TOOL。服务内存管理机制决定在等待期间,是让轨迹的注意力状态保持驻留、将其逐出并重新计算,还是将其卸载(保留、驱逐、重计算或卸载)。
  7. 结算调用并规整结果。 网关完成调用的结算,仅接受调用 ID 仍处于待处理状态的调用结果,并将输出规整为大小受限的结构化观测(观测流截断)。日志记录该结果。
  8. 检查进展并继续。 恢复机制将新的环境状态与近期历史进行比较,以检测循环(语义看门狗定时器);智能体运行框架将轨迹返回至 READY,或者在满足完成条件时将其移至 FINALIZING,由评估环节的检查决定是否接受(多层评估契约)。

每个编号步骤还会向追踪记录中发出一个跨度(分布式轨迹追踪),因此,失败的执行轮次可以从日志中重放,并归因到放行该故障的步骤,进而定位到相应组件。

模型服务

架构的其余部分需要模型服务提供五项能力,其中没有一项是模型的准确率。首先,需要带类型的调用接口,以便区分完整的工具调用与被截断的工具调用,以及正常回答与拒绝回答(调用契约)。其次,需要停止原因,因为它们是循环的控制信号。第三,需要每次调用的 token 用量,因为智能体运行框架中的每项预算都以 token 计数。第四,需要取消能力,以便在流式提案未通过验证的瞬间,智能体运行框架就能停止生成。第五,需要在同一条轨迹的各轮执行之间复用前缀,因为轨迹每轮都会重新发送上下文,而前缀缓存是节省这部分重复输入开销的主要手段(加速器服务延迟)。

在该接口背后,服务系统采用了一组精简的技术,智能体工程师可以直接感受到其效果。分页注意力状态使多条轨迹能够共享同一个内存池,并使分叉分支能够共享其公共前缀(分页 KV 分配)。按 token 序列索引的前缀缓存,使新一轮执行仅需对发生变化的部分进行预填充(跨轮次前缀缓存)。将多条轨迹的解码步骤合并为批次,可以降低集群的每 token 成本,但不会缩短任何单条轨迹的关键路径;分块预填充则可避免大型观测阻塞其他所有轨迹的解码(为什么输出的成本高于输入,分块预填充调度)。注意力状态的大小 推导了每个 token 的注意力状态大小,轨迹排队 则估算了一台服务器能够容纳的轨迹数量。

由此可得出对架构其余部分的两点设计启示。将一条轨迹的所有轮次路由到仍保有其前缀的服务器,可使大部分重复发送的输入命中缓存,因此,智能体运行框架和集群路由器应携带会话标识符,供服务层实现会话亲和性。此外,对稳定前缀的任何改动,例如调整工具定义的顺序或在上下文靠前的位置插入时间戳,都会悄然抵消这部分节省,因此,上下文组装器与服务层一样,也承担着维护缓存稳定性的责任(编排下一次调用)。

上下文与记忆

智能体的状态分布在多个位置,这些位置在允许谁写入、存续多久,以及如何确保其真实有效等方面各不相同。架构需要为每类状态指定唯一的负责方,并且绝不能将派生副本与其来源混淆(原则 7)。按负责方划分的状态类别 将 持久系统中的状态层级分类 中的状态类别映射到本附录的各个组件上。

按负责方划分的状态类别:参考架构中每类智能体状态存放的位置、允许写入的主体,以及确保其与现实世界保持一致的机制。
状态类别 层级 负责该状态的组件 允许写入的主体 如何确保真实有效
工作上下文 \(S_1\) 上下文组装器 运行时负责组装;模型只读 每轮重建;依据来源使过时条目失效
注意力状态 \(S_1\) 服务内存 服务引擎,根据词元派生 被逐出后,根据其词元前缀重新计算
工作区产物 \(S_2\) 隔离封装 智能体通过工具在沙箱内写入 按轨迹租用,在租户之间重置,在检查点处创建快照
源产物 \(S_3\) 所属系统 所有者及获授权的工具写入操作 具有权威性;仅通过显式写入更改
轨迹日志 \(S_3\) 轨迹日志 仅运行时可写,且仅可追加 永不改写;通过对日志进行归约生成轨迹记录
智能体写入的记忆 \(S_3\) 持久存储(写入路径) 模型提出;运行时准入 按策略准入、整合和过期
检索索引 \(S_3\) 持久存储(索引器) 仅索引器可写,根据来源重建 来源变更时失效;可丢弃

从表中可得出三条架构规则。第一,轨迹日志仅对过去发生的事情具有权威性,因此它应位于智能体运行框架旁,而非记忆层次结构中,并且其前方绝不应设置任何缓存。第二,表中每一类派生状态(注意力状态、智能体写入的记忆、检索索引)都可以丢弃并重建,因此丢失其中任何一类都只会付出时间代价,绝不会损害正确性。第三,智能体直接写入的只有工作区和智能体写入的记忆:前者受隔离封装约束,后者须经过准入步骤。上下文组装器读取所有这些状态,而检索契约(检索契约)则是持久状态重新进入调用的接口;状态在被暂存之前,须先检查其版本和来源。

工具与沙箱

工具网关与隔离封装共同将提议转化为受约束且结果已确定的实际作用,两者分工明确。网关决定调用是否可以执行。它依据工具的模式验证参数,根据运行时自身的描述符而非工具服务器宣称的信息作出授权,为每个会修改状态的调用附加幂等键,在任何重试之前查明结果不确定的超时调用的实际结果,并将结果整理为有界的观测(工具调用)。隔离封装则通过调用所携带的能力、调用始终无法接触的凭据、调用写入的工作区,以及调用可以联系的主机,决定调用执行后能够触及的范围(智能体沙箱)。隔离封装未予强制执行的授权,只是一项请求,不能构成约束边界。

隔离封装的成本主要取决于创建新封装的速度,因为这决定了运行时是否有能力为每次工具调用、每条轨迹,还是只能为每个租户提供干净的隔离封装。

典型隔离封装成本:新建隔离封装所需成本的数量级,其中 MicroVM 一行采用了沙箱章节用于确定池容量的编码智能体配置。具体实现的测量结果随映像大小、快照布局和宿主负载而变化;决定选择的是这些数量级。
隔离封装 不可信代码与宿主共享的内容 新建隔离封装的成本 每个隔离封装的内存占用 典型适用场景
共享内核容器 经筛选的整个宿主内核接口 数百毫秒 进程自身的内存;内核共享 运维人员编写的代码;无法接触任何秘密信息的只读任务
用户态内核 通过模拟内核访问的一小组宿主调用 数百毫秒;对频繁执行系统调用的任务,每次调用还会产生额外开销 进程与模拟内核的内存 输入和输出规模适中的不可信解释型代码
MicroVM 最小化的监控器和虚拟机管理程序接口 从预热池启动约需 5 ms;从快照恢复约需 15 ms 大小为 512 MiB 的客户机映像,在池内主要通过写时复制共享 不可信原生代码、软件包安装、多轮编码
字节码沙箱 仅限宿主导入的函数 微秒级 模块的线性内存 纯计算、解析器、每次调用新建一个隔离封装

MicroVM 一行解释了池为何存在。几十毫秒的恢复时间相较于一次模型调用并不昂贵,但当数百条轨迹突发到来、且每条轨迹都同时需要一个隔离封装时,就会形成队列。因此,沙箱池与重置 根据到达率和恢复时间确定预热备用池的容量。围绕隔离封装,三个辅助服务补全了架构中负责权限的一半。凭据代理在使用时注入限定作用域的凭据,使任何秘密信息都不会进入模型上下文(凭据代理)。出站代理仅允许访问任务契约中指定的主机,并封闭默认拒绝防火墙仍然留下的侧信道,例如名称查询(出口控制)。污点跟踪标记来自不可信来源的数据,并使其远离具有权限的调用;这一隔离机制还延伸到隔离阅读器,它能够查看不可信文本,但不持有任何工具(跟踪不可信数据)。

智能体运行框架

智能体运行框架负责管理单条轨迹的循环,其核心数据结构是轨迹记录:轨迹的标识、当前状态、每次调用的限制、预算与实测消耗、授权与租约、待处理工作,以及指向上下文、计划、日志和工作区的指针(轨迹记录)。模型从不写入这份记录。记录只能处于一组封闭的状态中,状态转换受条件约束,因此,超过截止时间才到达的工具结果找不到待处理调用,会被丢弃;不可逆调用只有在审批通过复核后,才能离开审批状态(轨迹状态)。

智能体运行框架通过一小组控制操作作用于记录,包括取消、中断、暂停、恢复、终止以及预算耗尽处理。每项操作都在轮次边界生效;对于正在进行的生成,则通过流式取消生效(控制操作)。审批关卡是架构中唯一将提议暂存待批的位置。不可逆调用在尚未派发的状态下等待审批,并设有到期时间;获批时,会根据记录的前置条件再次检查;若被拒绝或已失效,则转化为一条拒绝观测(审批关卡)。预算限制每条轨迹的轮次、词元数、实际经过时间和资金支出,并逐步收紧控制,从引导调整,到只读操作,再到停止(预算与上限)。部署时,智能体运行框架以无状态工作进程池的形式运行,因为继续执行任意轨迹所需的记录都可以从日志中重建。

持久日志与追踪记录

有两种记录用于描述一条轨迹,架构将它们分开保存,因为它们回答不同的问题。轨迹日志是已发生事件的事实依据。它是一个仅可追加的、带类型的事件序列,包括上下文已构建、模型已回复、工具调用意图、工具结果、审批已决定、上下文压缩已应用;轨迹记录则是该日志的投影,任何工作进程都可以按顺序归并事件来重建它(轨迹日志)。它唯一的排序规则是意图先行写入。授权外部效应的事件必须在该效应离开宿主之前持久化,从而确保崩溃后,每个效应要么可确认曾有执行意图,要么可确认未曾发生(意图先于效果)。

日志周围设有三项服务。检查点将日志无法以低成本重建的内容(例如工作区)的快照绑定到某个日志位置,使恢复运行时无需从头重放(检查点)。恢复运行会重建记录、重新推导上下文、解决每个状态未决的副作用,并承担一次冷启动预填充的开销,除非该轨迹被路由回仍保有其前缀的服务器(恢复轨迹)。重放会以日志为依据运行真实的运行框架代码,同时用桩替代模型和工具,从而将每个已记录的故障转化为可复现的测试(重放)。

追踪用于测量,而非恢复。它是由跨度组成的图,每次模型调用、工具调用、审批以及每个子智能体各对应一个跨度,每个跨度都包含令牌计数、持续时间和结果;追踪依据策略进行采样和脱敏,而非完整保留(分布式轨迹追踪)。日志必须完整且持久,追踪则必须成本低廉且可查询。若架构将同一种机制用于这两项工作,就会为每项指标付出持久化成本,或者丢失后续恢复运行所需的事件。

恢复

日志说明发生了什么。恢复则决定在已发生的事情出错时该如何处理(故障恢复)。其组件分布在模型的两侧。前向恢复通过模型进行。它采用经过组织的错误观测,使下一次提议能够修复根因;限制修复尝试次数;在修复停滞时重新采样或换用其他模型;并回滚已受污染的上下文分支(前向恢复)。后向恢复则绕过模型。Saga 在分派前为每个可补偿的副作用注册补偿器,并在轨迹被放弃时按相反顺序执行这些补偿器(轨迹 Saga 模式);枢轴边界则将唯一不可逆的步骤置于最后,安排在审批关卡之后(枢轴操作的不可逆性)。

两种检测器决定何时启动恢复。进展检测通过对重复动作计算哈希值、比较不同轮次的环境状态,监测忙碌却毫无进展的轨迹(语义看门狗定时器)。工具网关中的熔断器会停止向调用在传输层持续失败的依赖项分派请求,转而返回带类型的观测,避免模型成为重试放大器(工具熔断器)。发生可能已扩散的故障后,隔离机制会冻结该轨迹的授权,并标记其触及的对象,直至完成损害评估(影响范围隔离)。

评估

评估是架构的一部分,而非在架构上开展的一项活动,因为它需要自身专用且智能体无法访问的组件。任务环境使每次试验都从可复现的状态开始,并配备智能体无法读取或修改的封存测试(封闭隔离评估训练场)。评分器评判最终的环境状态:存在确定性检查时使用这些检查,不存在时则使用经过校准的评判器(轨迹评分)。统计层将重复试验转化为区间估计,并区分智能体在某次尝试中能做到什么,以及它在每次尝试中都能可靠做到什么(统计评估的严谨性)。归因会重放失败轨迹,每次消融一层,以判定故障是由模型、运行框架还是环境造成的(事件取证复盘)。发布关卡使候选版本在承接全部流量之前,依次通过离线测试套件、影子运行和金丝雀发布(分阶段金丝雀部署)。

评估环境复用生产环境的隔离边界和资源池(沙箱作为评估与轨迹采样的底层基础),但不得与被测智能体共享其凭据、出站访问规则或验证器的存储。智能体能够访问的验证器,也就是智能体能够学会在不完成任务的情况下满足其要求的验证器。

学习闭环

学习闭环位于评估之后,仅使用经评估认证的内容。数据策展通过按成本排序的级联准入流程,将已记录且经过验证的轨迹转化为训练数据;使评判轨迹的测试始终处于该轨迹无法访问的范围;并在开展任何训练之前,将训练任务与评估任务分开(轨迹整理)。监督微调将获准纳入的轨迹序列化为模型的调用格式,并仅对策略生成的内容计算损失(轨迹微调)。强化学习依据与策略轨迹采样相隔离的验证器进行优化(可验证奖励强化学习)。

从架构上看,这一循环增加了三项内容。它增加了一个轨迹采样集群,复用沙箱池,其规模由训练需求而非流量决定。它增加了一条数据路径,将轨迹日志经由敏感信息脱敏和来源清单送入训练存储。它还增加了一条返回模型服务的发布路径,该路径与其他任何变更一样,必须通过相同的关卡。这一循环不改变任何暴露面,因为更好的模型仍然只负责提出建议,这也是它位于干预阶梯最后一级的原因(干预阶梯)。

部署与集群

部署将架构划分为多个资源池,各池的资源、故障模式和安全边界各不相同。模型服务运行在加速器节点上,其容量由注意力状态内存需求和解码吞吐量决定。运行框架工作进程是无状态的,运行在普通主机上,其容量由存活轨迹的数量决定。沙箱主机通过硬件虚拟化运行隔离封装,位于出站代理之后,并且绝不与持久存储处于同一网络。持久存储保存轨迹日志、源系统的镜像、智能体写入的记忆以及检索索引。验证在智能体隔离封装无法访问的主机上运行。

容量由轨迹的存活时间决定,而非调用时长。根据利特尔定律,存活轨迹的数量等于轨迹启动速率乘以每条轨迹的存活时间;一条轨迹的存活时间为数分钟到数小时,而其中每次调用仅持续数秒(轨迹容量;轨迹排队)。凡是在轨迹整个存活期间持有某种资源的池,无论持有的是运行框架工作进程中的记录、沙箱租约还是缓存内存,其容量都根据这一乘积确定。在智能体之间,带类型的任务封装将缩减后的权限和预算从父智能体传递给子智能体(类型化任务信封);预算预留使委派树的支出保持在限额之内(支出治理);取消操作沿树向下传播(取消级联)。

每个资源池都有各自的故障方式,并发出各自的信号。表 1 列出了需要监测的信号以及负责响应的组件。

表 1: 部署故障信号:组件缺失或容量不足时,各资源池表现出的症状、揭示问题的信号以及负责响应的组件。
症状 资源池 可能原因 需监测的信号 响应组件及章节
调用排队,而加速器处于空闲状态 模型服务 等待工具的轨迹仍占用注意力状态 每条活跃解码流的驻留注意力状态 服务内存:在等待期间驱逐、重计算或卸载(保留、驱逐、重计算或卸载)
每轮成本上升,但上下文并未变长 模型服务 稳定前缀变更后,前缀缓存命中率骤降 每条轨迹的输入 token 中已缓存 token 的占比 上下文组装器:恢复稳定布局(编排下一次调用)
轨迹忙碌,却毫无进展 运行框架 模型身处不断增长的上下文中,无法察觉自己陷入循环 重复的动作哈希值;各轮之间环境状态未发生变化 恢复:进展检测(语义看门狗定时器)
突发负载下沙箱租约超时 沙箱主机 备用池容量小于一次恢复期间的到达量 备用队列为空;恢复队列深度 隔离封装:资源池容量配置(沙箱池与重置)
重启后出现重复的外部效应 运行框架与日志 意图尚未持久化便已派发效应,或在效应尚未结算时重试 工具结果没有匹配的持久化意图;重复的幂等键 轨迹日志与网关:意图预写与结算(意图先于效果)
发生故障的依赖耗尽预算 工具网关 模型反复重试服务已不可用的工具 每个依赖的传输层故障率 恢复:熔断器(工具熔断器)
检索到的事实与工作区矛盾 持久存储 写入源系统后,未使索引或记忆条目失效 检索契约拒绝的版本不匹配情况 持久存储:失效处理(存储失效处理)
委派树的总支出超出限额 集群 子智能体未预留预算便从共享预算中支出 每棵树的预留支出与已结算支出 集群:支出治理(支出治理)

总结

参考架构将本书的论点展现为一个系统。其中一个组件,即模型,负责提出建议。其他所有组件都负责封闭建议所产生的某个暴露面:上下文组装器、服务内存和持久存储封闭状态暴露面;工具网关和隔离封装封闭权限暴露面;运行框架、轨迹日志和恢复机制封闭时间跨度暴露面;评估衡量这些封闭措施是否有效;学习循环只有在评估能够判定后,才改进建议提出者;集群则将这一切成倍扩展。任务在 H·S·A 空间中的位置决定其需要哪些组件,而故障症状则指向本应捕获该故障的组件。

回到顶部
← 三卷书架