Agent Reliability:如何构建高可靠的 Agent 系统
Agent Reliability 深度技术博客:如何构建高可靠的 Agent 系统
一、引言:Agent 最大的问题不是“聪明”,而是“可靠”
传统软件系统追求:
Deterministic Correctness
即:
Input
↓
Business Logic
↓
Expected Result
只要代码正确,系统通常能够稳定地产生相同结果。
Agent 则完全不同:
User
↓
Agent
↓
LLM
↓
Planning
↓
Tool
↓
RAG
↓
Another Agent
↓
LLM
↓
Action
↓
Result
其中任何一个环节都可能失败。
例如:
LLM 输出错误
Tool 调用失败
Tool 参数错误
RAG 检索错误
Context 丢失
Agent 无限循环
Agent 选择错误的 Tool
外部 API Timeout
网络抖动
模型服务限流
Token 超限
上下文污染
Prompt Injection
所以 Agent Engineering 中一个非常核心的问题是:
如何让一个具有概率性行为的系统,表现得像一个可靠的软件系统?
这就是:
Agent Reliability
二、什么是 Agent Reliability?
可以定义为:
Agent Reliability 是 Agent 在面对正常请求、异常输入、依赖故障、模型不确定性以及复杂执行路径时,持续完成目标并保持安全、可控和可恢复行为的能力。
它不仅仅是:
Availability
也不是:
LLM Accuracy
而是:
Reliability
=
Availability
+
Correctness
+
Resilience
+
Recoverability
+
Safety
+
Controllability
因此:
Agent Reliability
|
+-- Availability
|
+-- Correctness
|
+-- Resilience
|
+-- Recovery
|
+-- Safety
|
+-- Control
三、为什么 Agent Reliability 比传统微服务更难?
传统微服务:
Service A
↓
Service B
↓
Database
通常可以明确:
Timeout
Retry
Circuit Breaker
Fallback
Agent:
Agent
↓
LLM
↓
Tool
↓
LLM
↓
Search
↓
Agent B
↓
Tool
这里增加了一个非常特殊的问题:
Agent 自己决定下一步做什么。
例如:
if API failed:
retry
传统程序由开发者决定。
Agent 则可能:
Tool failed
↓
LLM
↓
Should I retry?
↓
Maybe retry
甚至:
Retry
↓
Retry
↓
Retry
↓
Retry
因此 Agent Reliability 必须同时解决:
Infrastructure Reliability
+
LLM Reliability
+
Behavioral Reliability
四、Agent Reliability 的七层模型
一个成熟的 Agent Platform 可以把 Reliability 分成七层:
Agent Reliability
|
+-------------------+-------------------+
| | |
Infrastructure Runtime Intelligence
| | |
Network Timeout LLM
Storage Retry Planning
Queue State Reasoning
| | |
+-------------------+-------------------+
|
Dependency
|
Tool / API / RAG
|
Recovery
|
Safety / Governance
进一步可以抽象成:
L1 Infrastructure
L2 Dependency
L3 Runtime
L4 State
L5 Agent Behavior
L6 Recovery
L7 Governance
五、Reliability 的第一原则:不要相信任何依赖
Agent 系统中的依赖包括:
LLM Provider
Vector DB
Database
Redis
Kafka
External API
MCP Server
Other Agent
Search Engine
Object Storage
任何一个依赖都可能:
Timeout
Unavailable
Rate Limited
Malformed Response
Slow Response
Partial Failure
所以应该遵循:
Every dependency is unreliable by default.
架构:
Agent
|
+---- LLM
|
+---- Tool
|
+---- RAG
|
+---- Agent B
|
+---- Database
每个依赖边界都应该存在:
Timeout
Retry
Circuit Breaker
Bulkhead
Fallback
Observability
六、Timeout:Reliability 的第一道防线
最危险的系统通常不是:
Fast Failure
而是:
Slow Failure
例如:
Agent
↓
Tool
↓
等待 30 秒
↓
等待 30 秒
↓
等待 30 秒
最终:
User Request = 90s
因此 Agent Runtime 必须设计:
Request Timeout
Step Timeout
Tool Timeout
LLM Timeout
Workflow Timeout
例如:
Global Timeout = 60s
Step Timeout = 20s
Tool Timeout = 5s
形成:
User Request
|
+---------------- 60s ----------------+
|
+-- Step 1 -- 10s
|
+-- Step 2 -- 15s
|
+-- Step 3 -- 20s
|
+-- Recovery -- 10s
七、Timeout 必须具有层级性
不能简单:
timeout = 60s;
应该:
Request Timeout
|
+-- Planning Timeout
|
+-- LLM Timeout
|
+-- Tool Timeout
|
+-- Recovery Timeout
例如:
Request = 60s
Planning = 5s
LLM = 15s
Tool = 10s
Recovery = 10s
这样 Agent 才不会出现:
Tool 调用了 60 秒
导致整个 Runtime 没有恢复空间。
八、Retry:不是所有失败都应该重试
Agent 系统中非常容易犯的错误:
Failure
↓
Retry
↓
Failure
↓
Retry
这是危险的。
应该区分:
Transient Failure
Permanent Failure
Business Failure
九、Transient Failure
例如:
HTTP 503
Connection Reset
Temporary Network Error
Rate Limit
可以:
Retry
例如:
Attempt 1
↓
503
↓
Wait
↓
Attempt 2
↓
Success
十、Exponential Backoff
不要:
Retry every 1 second
应该:
1s
2s
4s
8s
16s
公式:
delay = base × 2^attempt
同时增加:
Jitter
例如:
delay =
min(
maxDelay,
base * 2^attempt
)
+ random()
避免大量 Agent 同时重试造成:
Retry Storm
十一、Retry Budget
这是 Agent Reliability 中非常值得引入的概念。
不要只定义:
maxRetries = 3
还应该定义:
Retry Budget
例如:
每个 Request
最多允许 20% 时间用于 Retry
如果:
Request Budget = 60s
那么:
Retry Budget = 12s
这样可以避免:
Agent
↓
Retry
↓
Retry
↓
Retry
↓
Retry
耗尽整个请求生命周期。
十二、Idempotency:Agent Reliability 的核心
这是 Agent 系统中非常重要的问题。
假设 Agent:
CreatePayment
第一次:
Request sent
↓
Payment succeeded
↓
Network timeout
Agent 不知道结果。
于是:
Retry
如果没有 Idempotency:
Payment
Payment
可能执行两次。
因此所有有副作用的 Tool:
CreateOrder
CreatePayment
SendEmail
TransferMoney
DeleteResource
CreateTicket
应该支持:
Idempotency-Key
例如:
request_id = agent-task-123
第一次:
POST /payment
Idempotency-Key: agent-task-123
再次 Retry:
POST /payment
Idempotency-Key: agent-task-123
服务端:
if key exists:
return previous result
else:
execute
十三、Agent Runtime 应该区分 Read Tool 和 Write Tool
这是非常重要的架构原则。
Tools
|
+-- Read
|
+-- Write
Read:
Search
GetUser
GetOrder
QueryDatabase
通常:
Retry = relatively safe
Write:
CreateOrder
DeleteUser
SendEmail
TransferMoney
必须:
Idempotency
Authorization
Audit
Approval
因此:
Agent → Tool
不应该是一个统一调用模型。
十四、Circuit Breaker
如果 Tool 连续失败:
Agent
↓
Payment API
↓
Failure
↓
Failure
↓
Failure
继续调用只会:
浪费资源
增加延迟
扩大故障
所以:
Circuit Breaker
状态:
CLOSED
|
| failures > threshold
v
OPEN
|
| wait
v
HALF_OPEN
|
+---- success → CLOSED
|
+---- failure → OPEN
十五、Agent 场景中的 Circuit Breaker 更复杂
传统:
Service A → Service B
Agent:
Agent
|
+-- Search
+-- CRM
+-- Payment
+-- Email
+-- SQL
应该:
Tool-level Circuit Breaker
例如:
Search Tool CLOSED
CRM Tool CLOSED
Payment Tool OPEN
Email Tool CLOSED
不能因为:
Payment Tool
失败,就把整个 Agent 都关闭。
十六、Bulkhead:防止一个 Agent 拖垮整个系统
Agent 的执行具有:
Long-running
Variable concurrency
Unpredictable tool calls
因此非常容易出现:
Agent A
↓
Tool Slow
↓
Threads Occupied
↓
Thread Pool Exhausted
↓
Agent B
↓
Cannot Execute
这就是:
Cascading Failure
解决:
Bulkhead
例如:
Agent Runtime
|
+-- Customer Agent Pool
|
+-- Coding Agent Pool
|
+-- Data Agent Pool
|
+-- Background Agent Pool
每个拥有独立:
Concurrency Limit
Queue
Timeout
Resource Budget
十七、Concurrency Limit
Agent 不应该无限并发。
例如:
Max Concurrent Agents = 100
进一步:
Max Concurrent Tool Calls = 500
甚至:
Per Agent = 10
Per User = 5
Per Tool = 50
形成:
Global
↓
Tenant
↓
Agent
↓
Task
↓
Tool
多层限流。
十八、Agent Loop 是 Reliability 最大的敌人之一
Agent 很容易出现:
Think
↓
Tool
↓
Observe
↓
Think
↓
Tool
↓
Observe
↓
Think
↓
Tool
如果没有终止条件:
Infinite Loop
因此 Agent Runtime 必须设计:
Max Steps
Max Tool Calls
Max Tokens
Max Execution Time
Max Cost
例如:
maxSteps = 20
maxToolCalls = 30
maxTokens = 100000
maxExecutionTime = 60s
maxCost = $0.50
十九、Agent Budget
可以把这些统一成:
Agent Budget
Agent Budget
|
+-- Time Budget
|
+-- Token Budget
|
+-- Tool Budget
|
+-- Cost Budget
|
+-- Step Budget
|
+-- Retry Budget
这是 Agent Runtime 非常重要的设计。
例如:
{
"maxExecutionTime": 60000,
"maxSteps": 20,
"maxToolCalls": 30,
"maxTokens": 100000,
"maxCost": 0.5
}
一旦超限:
STOP
而不是:
继续让 Agent 自己决定
二十、State Reliability
Agent 通常是 Stateful 的:
Task
↓
State
↓
Step
↓
State
↓
Step
因此不能只放在:
JVM Memory
否则:
Agent Runtime Crash
整个任务状态丢失。
应该:
Agent
↓
State Store
例如:
Redis
PostgreSQL
DynamoDB
保存:
Task ID
Current Step
Plan
Tool Results
Checkpoint
Retry Count
Budget
Status
二十一、Checkpoint
复杂 Agent 可以:
Step 1
↓
Checkpoint
↓
Step 2
↓
Checkpoint
↓
Step 3
如果:
Step 3 Failure
不需要:
Restart from Step 1
可以:
Resume from Step 3
架构:
Task
|
+-- Step 1 ── Checkpoint
|
+-- Step 2 ── Checkpoint
|
+-- Step 3 ── Failure
|
+-- Recovery
|
+-- Resume
二十二、Event-Driven Reliability
对于长时间 Agent:
User
↓
Agent
↓
Tool
↓
等待外部系统
不要一直占着 HTTP Connection。
应该:
API
↓
Task Created
↓
Kafka
↓
Agent Runtime
↓
Execute
↓
Event
↓
State Store
例如:
AgentTaskCreated
AgentStepStarted
ToolCalled
ToolCompleted
AgentStepFailed
AgentRetrying
AgentCompleted
AgentFailed
这样可以实现:
Durable Execution
二十三、Agent Failure Recovery
Agent Failure 可以分为:
Failure
|
+-- LLM Failure
|
+-- Tool Failure
|
+-- Network Failure
|
+-- State Failure
|
+-- Logic Failure
|
+-- Safety Failure
|
+-- Budget Exhaustion
不同 Failure:
不同 Recovery Strategy
二十四、Recovery Matrix
可以建立:
| Failure | Retry | Fallback | Replan | Human |
|---|---|---|---|---|
| LLM Timeout | ✓ | ✓ | ||
| Tool Timeout | ✓ | ✓ | ✓ | |
| Tool 500 | ✓ | ✓ | ||
| Invalid Tool Args | ✓ | |||
| Knowledge Missing | ✓ | ✓ | ||
| Budget Exhausted | ✓ | |||
| Payment Failed | ✓ | ✓ | ✓ | |
| Safety Violation | ✓ |
这比:
catch(Exception e)
高级得多。
二十五、Fallback
Agent 不应该只有:
Success
Failure
可以:
Primary
↓
Failure
↓
Fallback
例如 LLM:
GPT Model
↓
Timeout
↓
Backup Model
Tool:
Primary Search
↓
Failure
↓
Backup Search
RAG:
Vector Search
↓
No Result
↓
Keyword Search
二十六、Graceful Degradation
可靠系统的一个重要原则:
失败时不要全部失败。
例如:
Recommendation Agent
推荐服务失败:
Recommendation unavailable
但:
Order Service
Payment Service
User Service
仍然正常。
即:
Partial Failure
↓
Partial Success
而不是:
One Tool Failure
↓
Entire Agent Failure
二十七、Multi-Agent Reliability
如果系统变成:
Supervisor
|
+-- Research Agent
|
+-- Coding Agent
|
+-- Data Agent
|
+-- Review Agent
Reliability 问题会进一步扩大。
因为:
Agent A
↓
Agent B
↓
Agent C
↓
Agent D
形成:
Distributed Agent System
二十八、Agent-to-Agent Failure
例如:
Agent A → Agent B
Agent B:
Timeout
Agent A 是否:
Retry?
Fallback?
Replan?
Stop?
因此 A2A 通信应该具备:
Request ID
Correlation ID
Timeout
Retry
Idempotency
Capability
Authentication
Authorization
Trace Context
二十九、Distributed Reliability
Multi-Agent 系统实际上类似:
Distributed System
所以需要:
Correlation ID
Distributed Trace
Timeout
Retry
Circuit Breaker
Event
State
Checkpoint
Saga
尤其是:
不要把 Multi-Agent 当成简单的函数调用。
它实际上是:
Distributed Workflow
三十、Saga Pattern
如果 Agent 执行:
Create Order
↓
Reserve Inventory
↓
Charge Payment
↓
Send Notification
中间:
Charge Payment
失败怎么办?
可以设计:
Create Order
↓
Reserve Inventory
↓
Charge Payment
X
|
v
Compensation
|
+-- Release Inventory
|
+-- Cancel Order
这就是:
Saga / Compensation
特别适合 Agent 执行复杂业务流程。
三十一、Human-in-the-Loop
并不是所有事情都应该让 Agent 自动恢复。
例如:
Payment
Delete Production Database
Transfer Money
Deploy Production
Send Legal Document
应该:
Agent
↓
Risk Detection
↓
Human Approval
↓
Execute
架构:
Agent
|
v
Risk Engine
|
+----------+----------+
| |
Low Risk High Risk
| |
Auto Execute Human
|
Approve
|
Execute
这实际上是:
Reliability + Safety + Governance
的结合。
三十二、Reliability 与 Safety 的边界
Reliability:
系统是否按照预期工作?
Safety:
即使工作正常,会不会做危险的事情?
例如 Agent:
正确调用 DeleteDatabase Tool
从 Reliability 看:
SUCCESS
从 Safety 看:
DISASTER
所以:
Reliable ≠ Safe
必须同时考虑。
三十三、Observability 是 Reliability 的基础
没有 Observability:
Agent Failed
你不知道:
为什么?
所以必须记录:
Trace
Logs
Metrics
Events
例如:
Trace ID: abc123
Agent Start
↓
LLM Call
↓
Tool Search
↓
Tool Timeout
↓
Retry
↓
Tool Success
↓
LLM
↓
Final Answer
这样才能进行:
Root Cause Analysis
三十四、Agent Reliability Metrics
至少需要以下指标。
Availability
Availability =
Successful Requests
/
Total Requests
Task Success Rate
Task Success Rate =
Successful Tasks
/
Total Tasks
Failure Rate
Failure Rate =
Failed Tasks
/
Total Tasks
Recovery Rate
Recovery Rate =
Recovered Tasks
/
Failed Tasks
这个指标非常适合 Agent。
因为:
Failure
本身不一定意味着:
Task Failure
如果:
Tool Timeout
↓
Retry
↓
Success
Agent 仍然可靠。
三十五、MTTR
传统系统:
Mean Time To Recovery
Agent 也需要。
例如:
Tool Failure
↓
Detection
↓
Retry
↓
Fallback
↓
Success
测量:
Recovery Time
三十六、Agent Reliability SLO
企业 Agent 可以定义:
Task Success Rate >= 99%
p95 Latency <= 10s
Tool Failure Recovery >= 95%
Hallucination Rate <= 1%
Unsafe Action Rate <= 0.01%
Budget Violation = 0
注意:
Reliability 不应该只有 Availability SLO。
应该是:
Quality SLO
+
Reliability SLO
+
Safety SLO
+
Cost SLO
三十七、Reliability Dashboard
可以设计:
Agent Reliability Dashboard
Task Success Rate 98.7%
Availability 99.95%
Recovery Rate 96.2%
Tool Failure Rate 1.8%
LLM Failure Rate 0.4%
Timeout Rate 0.7%
Loop Detection 0.1%
p95 Latency 8.4s
p99 Latency 19.2s
Avg Tool Calls 4.3
Avg Cost $0.06
然后继续向下钻取:
Agent
↓
Task
↓
Trace
↓
Step
↓
Tool
↓
Failure
三十八、Reliability 与 Evaluation 的关系
前面我们讨论过:
Evaluation:Agent 做得好不好?
Reliability:
Agent 能不能稳定地把事情做好?
二者关系:
Agent Quality
|
+----------+----------+
| |
Evaluation Reliability
| |
Is it good? Can it keep
doing it?
例如:
Agent A
Accuracy = 95%
Availability = 90%
Agent B:
Accuracy = 93%
Availability = 99.9%
生产环境中:
Agent B
可能更加可靠。
三十九、Reliability + Evaluation + Observability
这三个体系应该统一起来:
Agent Platform
|
+---------------+---------------+
| | |
Observability Evaluation Reliability
| | |
What happened? How good? Will it keep
working?
| | |
+---------------+---------------+
|
AgentOps
最终形成:
Observe
↓
Evaluate
↓
Detect
↓
Recover
↓
Improve
四十、Agent Reliability Reference Architecture
一个企业级 Agent Platform 可以设计成:
Client
|
v
API Gateway
|
v
Agent Gateway
|
+-------------+-------------+
| |
v v
Agent Runtime Policy Engine
| |
+-------+-------+ |
| | | |
LLM Tools RAG |
| | | |
+-------+-------+-------------------+
|
v
State Manager
|
+-----+------+
| |
Redis PostgreSQL
|
v
Kafka
|
v
Event / Workflow Engine
|
+------------------+
| |
v v
Checkpoint Recovery
| |
+--------+---------+
|
v
Observability
|
+-------+-------+
| | |
Trace Metrics Logs
| | |
+-------+-------+
|
v
Evaluation
|
v
AgentOps
四十一、Agent Runtime 中的 Reliability Middleware
一个非常实用的设计是:
Agent Runtime
|
v
Reliability Middleware
|
+----+----+----+----+----+
| | | | | |
Timeout Retry Breaker Budget Checkpoint
例如:
public AgentResult execute(AgentTask task) {
return timeout.execute(() ->
retry.execute(() ->
circuitBreaker.execute(() ->
budget.execute(() ->
agent.run(task)
)
)
)
);
}
实际生产环境还需要:
Idempotency
Tracing
Metrics
Audit
Policy
四十二、不要让 LLM 决定 Reliability Policy
这是一个非常重要的原则。
错误:
Tool Failure
↓
LLM decides:
"Maybe retry 5 times"
正确:
Tool Failure
↓
Runtime Policy
|
+-- Retry <= 3
+-- Timeout <= 5s
+-- Budget <= 10s
+-- Circuit Breaker
+-- Fallback
然后才:
LLM Replan
即:
LLM 决定业务行为,Runtime 决定系统边界。
这是 Agent Platform 非常重要的架构原则。
四十三、Policy 与 Intelligence 分离
可以进一步总结成:
Agent
|
+-----------+-----------+
| |
Intelligence Runtime
| |
Planning Timeout
Reasoning Retry
Tool Selection Budget
Replanning Security
Circuit Breaker
State
LLM:
What should I do?
Runtime:
What am I allowed to do?
How long can I run?
How many times can I retry?
How much can I spend?
这是一种:
Policy / Intelligence Separation
四十四、Agent Reliability 的五大原则
如果把全文浓缩成五条架构原则:
原则一:Everything Can Fail
LLM
Tool
Network
Database
Agent
都可能失败。
原则二:Bound Everything
任何 Agent 都必须有:
Time
Token
Step
Tool
Cost
Retry
Budget。
原则三:Make Side Effects Idempotent
所有:
Write Operation
必须考虑:
Idempotency
原则四:Failure Must Be Recoverable
不要:
Failure → Crash
而应该:
Failure
↓
Detect
↓
Classify
↓
Retry / Fallback / Replan
↓
Recover
原则五:Runtime Controls the Agent
最重要:
LLM = Intelligence
Runtime = Control
不要让:
LLM
突破:
Security
Budget
Timeout
Concurrency
Policy
四十五、Agent Reliability 的最终架构思想
传统系统:
Code
↓
Test
↓
Deploy
↓
Monitor
Agent 系统:
Agent
↓
Evaluate
↓
Deploy
↓
Observe
↓
Detect Failure
↓
Recover
↓
Learn
↓
Improve
因此 Agent Platform 最终应该形成:
┌───────────────────┐
│ Agent Runtime │
└─────────┬─────────┘
│
Execute Task
│
┌───────────────┼───────────────┐
│ │ │
Timeout Budget Policy
│ │ │
└───────────────┼───────────────┘
│
Tool / LLM
│
Failure?
│
┌─────┴─────┐
│ │
NO YES
│ │
│ Classify
│ │
│ ┌──────┼──────┐
│ │ │ │
│ Retry Fallback Replan
│ │ │ │
│ └──────┼──────┘
│ │
└─────┬─────┘
│
Recover
│
Complete
│
Observability
│
Evaluation
│
Improve
四十六、结语:Reliability 是 Agent 从 Demo 走向生产的分水岭
Agent 最容易做出来的是:
User
↓
LLM
↓
Tool
↓
Answer
真正困难的是:
User
↓
Agent
↓
LLM
↓
Tool
↓
Timeout
↓
Retry
↓
Tool
↓
Invalid Result
↓
Replan
↓
Fallback
↓
Checkpoint
↓
Resume
↓
Human Approval
↓
Execute
↓
Result
这才是真正的:
Production-Grade Agent
所以,从 Agent Platform 架构角度看,Reliability 不是一个附加功能,而是 Agent Runtime 的核心能力。
可以把整个 Agent Platform 的核心能力概括为:
Agent Platform
|
+----------------+----------------+
| | |
Runtime Observability Evaluation
| | |
+----------------+----------------+
|
Reliability
|
+----------------+----------------+
| | |
Resilience Recovery Governance
| | |
+----------------+----------------+
|
Production
最终形成一套完整的 Agent Engineering 闭环:
Runtime 保证执行,Observability 负责看见,Evaluation 负责判断,Reliability 负责恢复,Governance 负责约束,AgentOps 负责持续改进。
这也是从普通 LLM Application 走向真正 Enterprise Agent Platform 的关键一步。