Files
EnterpriseArchitect/plans/BIZ-13_运行稳定性保障方案.md
T
陆怀瑾 (COO) 38b21d7adb 初始提交:多智能体协作体系总体方案及各子项目详细方案
- BIZ-11: 组织架构与岗位职责体系建设方案
- BIZ-12: 文档存储、命名与索引规范方案
- BIZ-13: 运行稳定性保障方案(任务停滞与429速率限制)
- BIZ-14: 知识库体系建设方案
- BIZ-15: 配置文件持续优化机制方案

所有方案均为初稿,待刘总审阅。
2026-06-22 02:45:51 +08:00

345 lines
7.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# BIZ-13 智能体运行稳定性保障方案
> 版本:v1.0
> 编制:陆怀瑾(COO
> 日期:2026-06-22
> 状态:待审阅
---
## 一、目标
解决智能体运行中的两大核心问题:
1. **任务停滞**:智能体未完成任务便停滞不前
2. **429 限流**:API 速率限制(当前 40 RPM)导致任务延迟
确保智能体系统稳定、可靠、持续运行。
---
## 二、任务停滞问题分析
### 2.1 根因分析
| 根因 | 表现 | 发生频率 |
|------|------|----------|
| 超时无响应 | 执行到某一步后卡住,无输出 | 高 |
| 依赖缺失 | 等待前置条件,但条件永不满足 | 中 |
| 无限循环 | 反复执行相同逻辑,无进展 | 中 |
| 上下文溢出 | Token 超限,无法继续 | 低 |
| 工具调用失败 | 工具返回错误,未处理 | 中 |
| 等待用户确认 | 错误地等待人类输入 | 高 |
### 2.2 典型案例
```
案例 1:等待用户确认
问题:Agent 发现任务后,向用户请示"要不要做"
影响:用户不在线时,任务卡死数小时
对策:HEARTBEAT.md 明确规定"禁止请示"
案例 2:依赖循环等待
问题:Agent A 等 Agent BAgent B 等 Agent A
影响:双方永远无法推进
对策:依赖图检测 + 超时自动降级
案例 3:工具调用失败未处理
问题:工具返回错误,Agent 未检查,继续执行
影响:后续步骤全部失败
对策:强制错误检查 + 重试机制
```
---
## 三、任务停滞解决方案
### 3.1 心跳超时检测
**机制**:每个 Agent 配置 HEARTBEAT.md,定期执行检查清单
**超时阈值**
- 高频 Agentsecretary/coo):10 分钟
- 开发 Agent15 分钟
- 业务 Agent15 分钟
**超时处理**
```
检测到超时
检查任务状态
┌─────┴─────┐
│ │
有进展 无进展
│ │
延长超时 自动恢复
(通知 COO) (重新调度)
```
### 3.2 依赖检查前置
**规则**:任务开始前,检查所有依赖是否满足
```python
def check_dependencies(task):
for dep in task.depends_on:
if not is_complete(dep):
return False, f"依赖 {dep} 未完成"
return True, "依赖满足"
# 任务启动前强制检查
ready, reason = check_dependencies(task)
if not ready:
set_status(task, "blocked", reason)
notify_co()
```
### 3.3 最大轮次限制
**规则**:单任务最大执行轮次限制
| Agent 类型 | 最大轮次 | 超限处理 |
|------------|----------|----------|
| 高频 Agent | 50 | 自动暂停,通知 COO |
| 开发 Agent | 100 | 自动暂停,记录日志 |
| 业务 Agent | 30 | 自动暂停,通知创建者 |
### 3.4 上下文控制
**策略**:引用代替填塞
```
错误做法:
- AGENTS.md 中嵌入全部 Agent 信息(3000+ tokens
正确做法:
- AGENTS.md 只保留核心协作协议
- 详细信息存 docs/agent-roster.md
- 通过引用链接访问
```
**上下文清理**
- 每轮对话前清理过期信息
- 工具调用结果仅保留必要部分
- 长文档分块读取
---
## 四、429 限流问题分析
### 4.1 当前限制
| 模型 | RPM 限制 | 当前使用 | 风险等级 |
|------|----------|----------|----------|
| 主模型 (qwen3.5-397b) | 40 | ~30 | 中 |
| 备用模型 (deepseek-v4-pro) | 40 | ~10 | 低 |
### 4.2 限流影响
```
触发 429 限流
任务延迟执行
┌─────┴─────┐
│ │
等待恢复 任务失败
(分钟级) (小时级)
```
---
## 五、429 限流解决方案
### 5.1 请求队列 + 优先级调度
**队列设计**
```
请求队列(FIFO + 优先级)
┌─────────────────────────────────────┐
│ 优先级 1 (紧急): Vincent 直接任务 │
│ 优先级 2 (高): 阻塞性任务 │
│ 优先级 3 (正常): 常规任务 │
│ 优先级 4 (低): 后台优化任务 │
└─────────────────────────────────────┘
令牌桶限流
模型 API
```
**调度算法**
```python
def schedule_request(request):
# 1. 加入优先级队列
priority_queue.add(request)
# 2. 检查令牌桶
if token_bucket.has_tokens():
token_bucket.consume()
send_to_api(request)
else:
# 3. 等待或降级
if request.priority >= 2:
wait_for_token()
else:
fallback_to_backup_model(request)
```
### 5.2 多模型负载均衡
**模型池**
| 模型 | 用途 | 优先级 |
|------|------|--------|
| qwen3.5-397b | 主模型,复杂推理 | 高 |
| deepseek-v4-pro | 备用模型,常规任务 | 中 |
| 本地模型 | 简单任务,成本优化 | 低 |
**负载均衡策略**
```
主模型可用且 RPM 充裕
使用主模型
主模型 RPM 不足
切换到备用模型
备用模型也不足
降级到本地模型或等待
```
### 5.3 智能重试机制
**指数退避 + Jitter**
```python
def retry_with_backoff(api_call, max_retries=3):
for i in range(max_retries):
try:
return api_call()
except RateLimitError:
delay = (2 ** i) * 1000 + random(0, 1000) # ms
sleep(delay)
raise Exception("重试失败")
```
**重试策略**
| 重试次数 | 延迟时间 | 说明 |
|----------|----------|------|
| 第 1 次 | 1-2 秒 | 快速重试,应对短暂波动 |
| 第 2 次 | 2-4 秒 | 指数退避 |
| 第 3 次 | 4-8 秒 | 切换备用模型 |
### 5.4 请求合并与缓存
**合并策略**
```
错误做法:
- 每个 Agent 独立轮询 WorkBoard40 RPM × N Agent
正确做法:
- COO 统一轮询,广播结果
- 减少轮询频率(10 分钟 → 15 分钟)
- 合并相似查询
```
**缓存策略**
```
查询请求
检查缓存
┌─────┴─────┐
│ │
缓存命中 缓存未命中
│ │
返回缓存 调用 API → 更新缓存
```
**缓存有效期**
| 数据类型 | 有效期 | 说明 |
|----------|--------|------|
| WorkBoard 状态 | 5 分钟 | 高频变化 |
| Agent 配置 | 1 小时 | 低频变化 |
| 知识库内容 | 1 天 | 基本不变 |
| 用户信息 | 1 天 | 基本不变 |
---
## 六、监控与告警
### 6.1 监控指标
| 指标 | 阈值 | 告警级别 |
|------|------|----------|
| 任务停滞时长 | > 1h | 警告 |
| 任务停滞时长 | > 4h | 严重 |
| 429 错误率 | > 5% | 警告 |
| 429 错误率 | > 20% | 严重 |
| Agent 响应延迟 | > 30s | 警告 |
### 6.2 告警流程
```
监控系统检测到异常
记录日志
┌─────┴─────┐
│ │
警告 严重
│ │
通知 COO 通知 Vincent
```
### 6.3 监控工具
- Prometheus + Grafana(基础设施监控)
- 自定义 Agent 健康检查脚本
- WorkBoard 诊断工具
---
## 七、实施步骤
### 阶段 1:心跳机制落地(本周)
- [ ] 更新所有 Agent 的 HEARTBEAT.md
- [ ] 配置定时任务(10 分钟)
- [ ] 测试超时检测
### 阶段 2:限流优化(下周)
- [ ] 实现请求队列
- [ ] 配置多模型负载均衡
- [ ] 实现智能重试
### 阶段 3:监控体系(持续)
- [ ] 搭建监控面板
- [ ] 配置告警规则
- [ ] 定期健康检查
---
## 八、风险与对策
| 风险 | 影响 | 对策 |
|------|------|------|
| 心跳任务本身卡死 | 监控失效 | 独立监控进程 |
| 请求队列过长 | 延迟增加 | 动态扩容 |
| 缓存数据过期 | 决策错误 | 设置 TTL + 主动刷新 |
---
## 九、交付物清单
- [ ] HEARTBEAT.md 更新模板
- [ ] 请求队列实现代码
- [ ] 多模型负载均衡配置
- [ ] 智能重试机制实现
- [ ] 监控面板 URL
- [ ] 告警规则配置
---
> ⚠️ 本方案需 Vincent 审阅后方可实施。审阅前不修改任何 Agent 配置文件。