可靠性、观测

共 20 题
📑 题目列表 20 题
#
★★★

1. 多 Agent 系统的级联失败如何检测与熔断

多 Agent 系统的级联失败应如何检测与熔断?

  • 级联失败机制(单点失败扩散)
  • 检测手段(错误率、超时、依赖监控)
  • 熔断机制(断路器、隔离、降级)

级联失败指一个 Agent 失败引发依赖它的 Agent 连锁失败。检测:监控每个 Agent 的错误率、超时率、失败计数与依赖健康,用依赖图判断"失败是否沿依赖扩散",识别故障源。熔断:断路器机制——连续失败超阈值时熔断(快速失败,不再派发),让故障 Agent 隔离,避免下游持续等待/重试;配合降级(跳过或回退)、隔离(故障域)、重试上限。熔断要探测恢复(半开试探)后重试。关键是把"失败"限定在局部,用熔断切断扩散,用超时防无限等待。

级联失败的本质是"失败传播沿着依赖链扩散"。熔断是"切断传播"的关键手段,配超时防蔓延、降级保可用。检测要能定位故障源,熔断要能快速恢复,避免"故障 Agent 拖着整个系统"。

#
★★★

2. 如何为每个 Agent 设置独立的预算、步数上限与超时

如何为每个 Agent 设置独立的预算、步数上限与超时?

  • 预算(token、成本、时间)
  • 步数上限(循环/工具调用次数)
  • 超时(单步、总时长)

为每个 Agent 设置独立预算与限制:token 预算——该 Agent 本轮可消耗的 token 上限,超限停止或降级;成本预算——按模型计价的上限;步数上限——Agent 循环(思考-行动)与工具调用的最大次数,防止无限循环;超时——单步超时(一次 LLM/工具调用)与总超时(整个 Agent 任务),超时触发重试/降级/上报。预算与上限要按 Agent 角色差异配置(如审批 Agent 严、检索 Agent 松),并在超限时提供可观测(记录在哪一环超限)与降级路径。预算要共享可累加(总预算),防止整体超支。

独立预算/上限是"防止单个 Agent 失控"的护栏。token、步数、时间三个维度覆盖了成本、循环、挂起三类风险。超限后的降级(停止/降级/上报)要明确,否则预算只是空设。

#
★★★

3. 多 Agent 决策的可解释性如何向业务方呈现

多 Agent 决策的可解释性应如何向业务方呈现?

  • 决策链的呈现(谁做了决策、依据什么)
  • 面向业务的可读性(非技术术语)
  • 证据与人工核验

向业务方呈现可解释性,要把技术轨迹转化为业务理解的内容:决策过程——展示"哪个 Agent 负责了哪一步、基于什么输入/证据、得出什么结论";关键决策点——突出"为什么是这个结果、备选方案、不确定性";证据与引用——引用来源、工具结果,支持人工核验;权限与审批——标注哪些环节需人工确认。呈现要分层:业务方看"结论 + 依据 + 可核验",技术方看"完整 trace"。用"决策摘要 + 证据链 + 置信度标注"的方式,避免罗列原始 token 或内部推理。

可解释性对业务方是"可信度"问题。核心是"结论可追溯、证据可核验、过程可理解"。要把内部 trace 翻译成业务语言,突出依据与不确定性,支持人工复核,从而建立信任。

#
★★★

4. Agent 间循环调用(A↔B)如何检测与打破

多 Agent 间的循环调用(A↔B)应如何检测与打破?

  • 循环调用的机制(A 调 B,B 又调 A)
  • 检测手段(步数限制、循环检测、状态去重)
  • 打破循环(超时、去重、终止条件)

Agent 间循环调用(A↔B 反复互相调用)会耗尽资源。检测:步数/调用次数上限(全局最大步数,超限终止);对重复状态检测(同一 Agent 用相同输入重复调用,记录已访问状态,检测到重复则判定循环);调用栈/深度检测。打破:步数限制触发终止;去重——相同请求不重复调用(缓存结果);终止条件——当调用无进展(无新信息产生)时强制退出;熔断——连续无进展调用降级到人工或单 Agent。记录循环日志便于分析根因。

循环调用源于"无进展的递归协作"。检测核心是"步数上限 + 状态去重"(重复状态=无效循环),打破靠"终止 + 降级"。关键是检测"无进展"而非仅"次数",避免误伤正常长链。

#
★★★

5. 多 Agent 系统的成本归因如何分摊到具体子任务

多 Agent 系统的成本归因应如何分摊到具体子任务?

  • 成本采集(token、模型、工具、调用)
  • 归因维度(任务、Agent、工具、用户)
  • 成本分摊与报表

成本归因把总成本分摊到具体子任务:采集每个 Agent 的 LLM 调用(输入/输出 token、模型单价)、工具调用、重试等成本;为每个子任务挂 traceId,把该子任务链上所有 Agent 的成本按 traceId 聚合并归因;支持按任务、按 Agent、按工具、按用户多维度分摊。归因要处理共享成本(共用的缓存、上下文)的拆分,可用"按实际消耗"或"按比例分摊"。产出成本报表与告警,识别成本大头,支撑优化与计费。缓存命中要单独标记(缓存片段成本低),避免误归因。

成本归因核心是"可采集 + 可关联 + 可分摊"。token 记账 + traceId 关联是基础,维度(Agent/工具/用户)决定谁可优化。归因要区分"直接成本"与"共享/缓存成本",否则报表失真。

#
★★★

6. 多 Agent 流水线中哪些节点必须设置人工审批(生产变更、资金操作、对外发送),中断与恢复如何工程化实现而不丢上下文

多 Agent 流水线中哪些节点必须设置人工审批?中断与恢复如何工程化实现而不丢上下文?

  • 必须审批的节点类型(生产变更、资金、对外发送、高影响)
  • 中断与恢复(状态持久化、checkpoint)
  • 上下文不丢失

必须人工审批的节点:生产变更(部署、配置修改、数据删除)、资金操作(转账、支付、退款)、对外发送(邮件、消息、公告)、高风险/不可逆操作(删除、覆盖、权限变更)。审批要"在不可逆副作用前拦截"。中断与恢复:审批前把 Agent 状态持久化(checkpoint),审批人批准/拒绝后,从 checkpoint 恢复继续执行,不重跑已完成步骤;用工作流引擎(LangGraph interrupt/resume、Temporal)支撑"暂停→人工→恢复"。上下文不丢失:审批时保存完整上下文(任务、结果、依赖、未完成步骤),恢复时加载,避免重跑或丢上下文。审批要记录人与决定,可审计。

审批节点是"不可逆副作用前的人工闸门"。工程化关键是"可中断可恢复":状态持久化 + checkpoint + 恢复机制,保证审批不丢上下文、不重跑。审批本身要留痕、可审计。

#
★★★

7. 人工审批超时时的降级策略(自动通过、自动拒绝、转人工队列)如何按风险等级设定不同默认值

人工审批超时时的降级策略(自动通过、自动拒绝、转人工队列)应如何按风险等级设定不同默认值?

  • 超时降级策略(自动通过/拒绝/转队列)
  • 风险等级分级
  • 默认值设定

审批超时降级按风险等级设定默认值:低风险——可自动通过(如低影响操作,超时默认通过,避免阻塞);中风险——转人工队列(超时后排队等待,不自动决定);高风险——自动拒绝(资金、生产、对外发送等不可逆操作,超时默认拒绝,安全优先)。分级依据:操作影响、可逆性、合规要求。默认值要可配置、可审计,超时降级要记录(时间、策略、结果),便于事后追责与优化审批时限。对高风险操作,宁可用"拒绝/转队列"而非"通过",安全优先。

超时降级是"安全 × 可用"的权衡。高风险默认拒绝(安全)、中风险转队列(等待)、低风险自动通过(不阻塞)。分级让"默认值"有依据,而非一刀切。可逆性低的操作必须保守。

#
★★★

8. 部分成功合并,子任务部分失败时如何聚合部分结果并标记不确定性,避免整体重跑?

子任务部分失败时,部分成功合并应如何聚合部分结果并标记不确定性,避免整体重跑?

  • 部分结果的聚合
  • 不确定性标记
  • 避免整体重跑

子任务部分失败时,聚合部分结果而非整体重跑:对成功的子任务结果正常聚合,对失败的子任务标记失败原因与重试机会;聚合时用"部分成功"策略——已成功的结果参与最终输出,失败结果用占位/降级/默认值,并明确标记"哪部分未完成、结论的不确定性程度"。避免整体重跑:只在失败子任务上重试(局部重试),而非重跑整个拓扑;对部分成功的结果做"置信度/完整性"标注,让下游知情。若失败子任务影响最终结论,则标记"结果不完整"并请求人工或补充。

部分成功合并的核心是"最大化利用已成功结果 + 明确标记缺口"。避免"一处失败全盘重跑",用局部重试 + 部分结果 + 不确定性标记。关键是把"未知/缺失"显式化,而非装作完整。

#
★★★

9. 背压与过载保护,下游 Agent 或 LLM 响应变慢时,队列深度、限流与请求丢弃如何协同防止过载扩散?

下游 Agent 或 LLM 响应变慢时,背压与过载保护如何协同(队列深度、限流、请求丢弃)防止过载扩散?

  • 背压机制(队列深度、缓冲)
  • 限流(令牌桶、并发限制)
  • 过载保护(丢弃、降级、熔断)

下游变慢时防过载扩散:背压——上游感知下游处理能力,用有限队列深度限制缓冲,队列满时新请求阻塞或拒绝(不无限堆积);限流——令牌桶/并发限制控制发送速率,防止短时间内涌爆下游;请求丢弃/降级——过载时丢弃可丢弃的请求(低优先级)、降级处理(简化、缓存)、熔断(连续失败暂停)。三者协同:背压控制"承接量",限流控制"发送速率",丢弃/熔断处理"过载后"。关键是"快速失败"而非"无限堆积",堆积会拖垮所有环节。用依赖隔离避免单个慢下游拖垮整体。

过载扩散的根源是"请求堆积消耗资源"。背压(有限队列)+ 限流(速率)+ 丢弃/熔断(过载后)三层协同,让系统"有界、可快速失败"。核心是拒绝而非无限等待,保护整体可用性。

#
★★

10. 多 Agent 系统中审批请求如何路由到正确的 owner(按 Agent、按资源),防止人人都以为别人会批

多 Agent 系统中审批请求如何路由到正确的 owner(按 Agent、按资源)?如何防止人人都以为别人会批?

  • 审批 owner 的路由(按 Agent、按资源、按角色)
  • 责任明确(唯一 owner、移交)
  • 防"无人认领"机制

审批请求要路由到明确且唯一的 owner:按 Agent——审批单关联到负责该子任务的 Agent/负责人;按资源——审批按资源类型路由到对应资源 owner(如按租户、按项目、按服务);按角色——按权限/审批层级路由。核心是"owner 唯一且明确":每个审批单有且仅有一个当前 owner,解决"人人都以为别人会批"的责任漂移。机制:审批单带 owner 标识与状态流转(待某人批→某批→转交);owner 超时未批做提醒/升级/转交;无 owner 的审批要能识别(找不到 owner 时转人工队列或报错)。审批记录 owner 与时间,可审计。

"人人都会批"的根源是"owner 不唯一"。解决靠"唯一 owner + 状态流转 + 超时升级"。审批单必须明确"当前该谁批",并有提醒/转交机制,防止搁置。责任到人是审计与效率的基础。

#
★★

11. 如何向审批人呈现 Agent 的中间推理与工具调用摘要,降低审核成本又不泄露敏感正文

如何向审批人呈现 Agent 的中间推理与工具调用摘要,降低审核成本又不泄露敏感正文?

  • 摘要呈现(推理、工具调用、关键证据)
  • 敏感信息保护(脱敏、不泄露正文)
  • 审核成本降低

向审批人呈现摘要而非完整正文:展示"Agent 做了什么→为什么→关键证据→结论",即中间推理摘要(决策依据、备选)与工具调用摘要(调用了哪些工具、返回了什么关键信息),关键字段结构化展示。敏感信息保护:正文脱敏(凭证、隐私、机密内容打码),只展示必要的信息;摘要本身不含敏感正文,或加密显示。审批人看摘要即可判断,必要时点开被脱敏的详情(按权限)。降低审核成本:摘要结构化、结论前置、证据可点击核验,减少审批人阅读量。

摘要呈现是"可审核 × 不泄露"的平衡。把"原始正文"替换为"结构化摘要 + 脱敏 + 可核验",既降低审核成本,又保护敏感信息。关键字段摘要、凭证脱敏、证据可查。

#
★★

12. 人机协同下 Agent 决策的责任边界与审计留痕如何设计,记录中如何区分人批准与 Agent 自主

人机协同下 Agent 决策的责任边界与审计留痕应如何设计?记录中如何区分"人批准"与"Agent 自主"?

  • 责任边界(哪些必须人批、哪些 Agent 自主)
  • 审计留痕(决策记录、审批记录)
  • 区别人批准与 Agent 自主(操作者字段、审批轨迹)

责任边界:明确"Agent 自主"与"人批准"的清单——高风险/不可逆操作必须人批,Agent 记录建议;低风险可 Agent 自主。审计留痕:所有决策(Agent 自主或人工)都记录,含决策者、决策内容、依据、时间、上下文。区分人批准与 Agent 自主:记录增加"操作者类型"字段(human/agent)、审批人身份、审批轨迹(谁在何时批了什么);Agent 自主的操作标记"Agent 自主"并记录其依据;被批准的操作记录"human approved + 审批人"。复盘时能清晰区分"谁负责",避免责任模糊。责任边界要写入策略与合规。

责任边界是"什么该谁负责",审计留痕是"记录谁负责"。区分人/Agent 的关键是"操作者类型 + 审批轨迹"字段,让每个决策可追溯到负责人。边界清晰 + 留痕完整是人机协同可信的基础。

#
★★

13. 审批决定本身如何版本化与可回放,支持事后审计与同类场景复用

审批决定本身如何版本化与可回放?如何支持事后审计与同类场景复用?

  • 审批决定的版本化(快照、版本号)
  • 回放(重放审批轨迹)
  • 审计与场景复用

审批决定版本化:把每个审批决定(含上下文、证据、审批人、决定、时间)作为不可变记录保存,带版本号与快照,支持回放——重放某次审批的完整轨迹(当时看到什么、谁批了什么、为什么)。审批决定存成可检索的案例库:事后审计按 traceId 查询;同类场景复用——把历史审批作为先例(few-shot/规则),新审批参考同类决定,提升一致性。版本化要保留"审批时点的上下文快照",避免事后上下文变化导致无法追溯。审批案例可反哺策略优化。

版本化 + 回放让审批"可追溯、可复用"。关键快照是"审批时点的上下文",否则无法重放。案例库使审批决策可复用,提升一致性与效率。审计靠完整记录,复用靠案例库。

#
★★

14. 如何防止审批疲劳(弹窗过频导致一律同意),审批频率与质量如何度量与优化

如何防止审批疲劳(弹窗过频导致一律同意)?审批频率与质量如何度量与优化?

  • 审批疲劳的机制(弹窗过频→一律同意)
  • 审批频率与质量度量
  • 优化手段(聚合、分级、默认、减少噪音)

审批疲劳指弹窗过频导致审批人"一律同意"、失去审查价值。防止:减少审批噪音——聚合相关审批、只对高风险/高影响审批、提高审批阈值;分级审批——低风险自动/批量,高风险才弹窗;默认值合理——低风险默认通过,减少无意义弹窗;定期抽查替代全量弹窗。度量:审批频率(弹窗数、驳回率、通过率、平均审批时间)与质量(驳回率是否合理、错误"同意"是否引发事故、审批与结果的符合度)。优化:用指标识别"过频/一律同意"的审批,调低频率、提高阈值、加强驳回反馈。关键是把"审批注意力"用在刀刃上,而非耗尽在噪音上。

审批疲劳的本质是"审批注意力被稀释"。核心是"减少噪音 + 聚焦高风险 + 可度量"。用频率/驳回率/事故率度量质量,用聚合、分级、默认值优化。防疲劳与防漏批是同一件事的两面。

#
★★

15. LangGraph interrupt/resume 在长任务人工介入中的状态持久化如何设计,才能支持进程重启后恢复与跨节点审批

LangGraph interrupt/resume 在长任务人工介入中的状态持久化应如何设计?如何支持进程重启后恢复与跨节点审批?

  • interrupt/resume 机制(暂停-恢复)
  • 状态持久化(checkpointer)
  • 进程重启恢复与跨节点审批

LangGraph 的 interrupt/resume 用于长任务人工介入:在需要审批的节点执行 interrupt,暂停图执行,返回审批请求;审批完成后 resume 从该节点继续。状态持久化用 checkpointer(如 SqliteSaver/PostgresSaver)在每个节点保存图状态,支持进程重启后从 checkpoint 恢复(不丢上下文)。跨节点审批:审批可发生在多个节点,每个节点 interrupt 后持久化,审批结果 resume 时恢复。设计要点:checkpoint 保存完整状态(消息、变量、依赖);审批节点幂等(resume 不重复副作用);审批上下文与 checkpoint 关联,恢复时加载。这保证"暂停→审批→恢复"全程不丢、可重启。

interrupt/resume 的核心是"可暂停 + 可恢复"。状态持久化(checkpointer)是恢复的基础,保证进程重启不丢上下文。跨节点审批靠"每个节点可 interrupt + 独立 checkpoint + 幂等 resume"实现。

from langgraph.checkpoint.memory import MemorySaver
from langgraph.graph import StateGraph, START, END
from langgraph.types import interrupt

checkpointer = MemorySaver()  # 生产用 Postgres/Sqlite 持久化

def approval_node(state):
    # 需要人工审批的节点:interrupt 暂停
    result = interrupt({"action": state["action"], "evidence": state["evidence"]})
    return {"approved": result["approved"]}

g = StateGraph(State)
g.add_node("approval", approval_node)
g.add_edge(START, "approval")
g.add_edge("approval", END)
app = g.compile(checkpointer=checkpointer)  # 支持进程重启后恢复
#
★★

16. Agent 系统的可靠性,重试、超时与幂等在节点级与任务级应如何分层配置,避免重试风暴

Agent 系统的可靠性中,重试、超时与幂等在节点级与任务级应如何分层配置?如何避免重试风暴?

  • 重试/超时/幂等的分层(节点级 vs 任务级)
  • 重试风暴的机制
  • 反重试风暴(指数退避、抖动、上限、幂等)

分层配置:节点级(单次调用)——重试(短、指数退避)、超时(单次调用上限)、幂等(单次调用可重放);任务级(整个流程)——重试(整体重拍或恢复)、超时(总预算)、幂等(整个任务可重放)。避免重试风暴:重试上限(次数上限)、指数退避 + 抖动(避免同时重试)、共享预算(防止各层无限累加)、熔断(下游故障时暂停重试)、幂等(重试不产生重复副作用)。重试要区分"可重试错误"(超时、限流)与"不可重试"(参数错)。分层原则:节点级快速失败,任务级兜底恢复,用共享预算约束总重试成本。

重试风暴源于"无上限 + 无退避 + 多层叠加"。分层配置 + 指数退避 + 抖动 + 共享预算 + 幂等可有效抑制。核心是"重试要有界、有退避、有幂等",避免故障时放大负载。

#
★★

17. 告警风暴降噪,同类错误并发时如何聚合、去重并按根因分组,避免告警疲劳?

告警风暴降噪应如何设计?同类错误并发时如何聚合、去重并按根因分组,避免告警疲劳?

  • 告警聚合(同类合并)
  • 去重(同一根因只告一次)
  • 根因分组

告警风暴降噪:聚合——同类错误(相同错误码、相同 Agent、相同服务)合并为一条告警,附数量与样本;去重——同一根因只告警一次,后续只更新计数,避免重复轰炸;根因分组——按根因(错误码、依赖、Agent、模型)分组,一次根因一条告警,附受影响面。避免告警疲劳:分级告警(严重才告警、低危收敛)、聚合窗口(窗口内合并)、抑制(已知根因的关联告警抑制)、静默(重复/已知告警冷却)。告警要可收敛可追溯,恢复到正常时自动关闭。

告警风暴的本质是"同一根因产生大量重复告警"。聚合/去重/根因分组让"一次根因一条告警",配合分级与静默防疲劳。关键是告警要"可收敛、可定位根因",而非淹没在重复里。

#

18. 多 Agent 追踪(trace)如何在 LangSmith/Arize 中聚合展示

多 Agent 追踪(trace)如何在 LangSmith/Arize 中聚合展示?

  • 追踪平台(LangSmith/Arize)的能力
  • 多 Agent trace 的聚合展示
  • 观测与调优

LangSmith/Arize 等平台把多 Agent trace 聚合展示:按 traceId 聚合一次任务的完整调用链(各 Agent、LLM 调用、工具调用),以瀑布图/树形展示时序与嵌套;按 Agent/工具/模型维度聚合统计(token、延迟、错误率、成功率);支持跨会话对比、按输入输出检索、评估(LLM-as-Judge 评分)。多 Agent 场景下,把每个 Agent 的 span 作为 trace 的子 span,平台自动合成调用链。聚合展示让"一次任务用了哪些 Agent、哪步最慢/最贵、哪里失败"一目了然,支撑调优与评测。

追踪平台把"分散的 Agent 调用"合成"可观测的调用链"。聚合维度的价值是让多 Agent 的复杂度可视化。关键是把 span 正确关联(traceId/spanId 传播),平台才能聚合出完整视角。

#

19. Agent 的观测,执行轨迹、工具调用序列与 token 统计应如何记录,异常定位与成本归因如何复用这些数据

Agent 的观测应如何记录执行轨迹、工具调用序列与 token 统计?异常定位与成本归因如何复用这些数据?

  • 观测数据(轨迹、工具调用、token)
  • 异常定位复用
  • 成本归因复用

Agent 观测记录:执行轨迹(每一步的思考、动作、结果,含时间戳)、工具调用序列(调用了哪些工具、参数、返回、耗时)、token 统计(输入/输出 token、模型、成本)。这些数据用于异常定位:按 trace 回放执行过程,定位哪一步失败、哪个工具出错、哪个环节超时或累计了过多 token。用于成本归因:按 Agent/工具/模型统计 token 与成本,识别成本大头。观测数据要结构化、可检索、可回放,并与 traceId 关联。执行轨迹可泛化到评测与回归。

观测是"异常定位与成本归因"的共同基础。记录充分的轨迹/工具/token 数据,让异常可回放、成本可归因。关键是数据结构化 + 关联 traceId + 可检索,形成可复用的观测资产。

#

20. trace 采样策略,高并发下如何保留失败样本与关键链路,控制存储成本?

trace 采样策略应如何设计?高并发下如何保留失败样本与关键链路,控制存储成本?

  • 采样策略(全量/比例/智能)
  • 保留失败样本与关键链路
  • 存储成本控制

高并发下全量存 trace 成本高,用采样策略:按比例采样(如 10%)——直接降本;优先级采样——优先保留失败样本、慢请求、关键链路(高价值路径、高成本路径),成功且常规的按低比例采样;尾部采样/动态采样——按需放大异常。保留失败样本:失败/错误 trace 全量保留(失败是调优重点);关键链路(审批、资金、核心业务流程)全量保留。存储成本控制:设置采样率、过期策略(TTL 归档)、聚合降采样(低价值多次采样合并)、压缩存储。要保证采样后的样本仍能支撑异常定位与评测(失败样本不丢)。

采样是"可观测 × 成本"的权衡。核心是"失败与关键链路全量,常规按比例",让观测价值最大化。采样要保留异常样本,否则无法定位问题。过期与聚合控制存储。