11.5 实战:为 MiniHarness 添加可靠性保障
本节为生产级 MiniHarness 添加可靠性工程保障。核心设计是“可观测性驱动、容错重试、健康检查”三层递进。
完整代码见
lab/mini_harness/reliability/,本节聚焦设计模式与集成策略。
11.5.1 结构化日志系统
生产系统必须支持日志聚合与分析。设计两个核心能力:
字段化日志格式:每条日志包含标准字段(timestamp、level、trace_id)和应用字段(tool_name、duration_ms):
import json
from datetime import datetime
class StructuredLogger:
def log(self, level: str, message: str, **fields):
"""记录结构化日志为 JSON"""
log_entry = {
'timestamp': datetime.now().isoformat(),
'trace_id': get_trace_id(), # 链接相关日志
'message': message,
'level': level,
**fields # 工具名、耗时等
}
print(json.dumps(log_entry))
def log_tool_call(self, tool_name: str, duration_ms: float,
status: str, error: str = None):
"""专用方法记录工具调用"""
self.log('INFO', f'Tool call: {tool_name}',
tool_name=tool_name, duration_ms=duration_ms,
status=status, error=error)关键设计决策:
JSON 序列化:便于日志系统解析和搜索(ELK、DataDog 等)
trace_id 贯穿:关联同一请求的所有日志,便于链路追踪
字段聚合:便于建立告警规则(如 error_count > 100 在 5 分钟内)
完整实现参见 lab/mini_harness/reliability/logging.py。
11.5.2 分布式追踪上下文
追踪用于“跟踪请求经过的所有函数调用”。MiniHarness 示例使用 OpenTelemetry/W3C 形态的 trace/span ID 和 JSON 追踪记录;若要接入完整 OpenTelemetry 生态,还需要补充 SpanContext、上下文传播和 OTLP exporter:
上下文管理器简化使用:
设计优势:
树形结构:Parent Span 可视化整个请求的调用树
自动计时:span 自动记录开始/结束时间,无需手动
异常自动捕获:上下文管理器捕获异常并标记为错误
完整实现参见 lab/mini_harness/reliability/tracing.py。
11.5.3 重试与超时策略
“客户端重试 + 超时保护”是应对瞬时故障的标准做法。核心设计:
设计细节:
指数退避:等待时间按 1s → 2s → 4s 递增,避免打垮故障服务
抖动(Jitter):防止多个客户端同时重试导致雷鸣羊群效应
可恢复异常:仅对网络错误重试(ConnectionError、Timeout),不对业务错误(ValidationError)重试
完整实现参见 lab/mini_harness/reliability/resilience.py。
11.5.4 可靠智能体的集成
将日志、追踪、重试三层叠加在 Agent 执行中:
关键层级:
Agent
追踪整体请求
trace_span('agent_execution')
工具执行
单工具重试保护
@RetryDecorator on _execute_single_tool
外部 API
流量限制+重试
@RetryDecorator on api_client
完整实现参见 lab/mini_harness/reliability/resilience.py(重试/熔断器)与 lab/mini_harness/reliability/monitoring.py(指标采集)。
11.5.5 健康检查与告警
系统运行过程中持续监控关键指标:
告警处理的最佳实践:
不同级别的行动:INFO(记录) vs WARNING(通知) vs CRITICAL(页面告警)
告警去重:避免 5 分钟内重复告警(使用告警窗口)
自愈反馈:告警触发后自动尝试恢复(如重启服务)
完整实现参见 lab/mini_harness/reliability/monitoring.py。
11.5.6 部署检查清单
11.5.7 总结
MiniHarness 可靠性工程的四大柱石:
可观测性:结构化日志 + 分布式追踪,快速定位问题
容错重试:指数退避,应对瞬时故障
健康监控:实时告警,关键指标异常立即发现
指标驱动:追踪成功率、延迟、工具可靠性,数据驱动改进
最后更新于
