Files
EnterpriseArchitect/specs/BIZ-13_运行稳定性保障规范_v1.0.md
陆怀瑾 (COO) f793da91f0 BIZ-13: 运行稳定性保障规范 v1.0
涵盖:禁止请示规则、心跳监控超时恢复、429限流令牌桶、唤醒机制、Token溢出防护、监控告警矩阵
2026-06-22 22:08:54 +08:00

242 lines
6.1 KiB
Markdown
Raw Permalink 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.
# 智能体运行稳定性保障规范 v1.0
> 版本:v1.0(实施版)
> 编制:陆怀瑾(COO
> 日期:2026-06-22
> 状态:已批准,执行中
> 适用范围:所有 Agent
---
## 一、核心问题与应对
| 问题 | 根因 | 解决方案 |
|------|------|----------|
| 任务停滞 | 等待请示、超时、循环 | 禁止请示规则 + 心跳监控 + 超时恢复 |
| 429 限流 | 40 RPM 模型配额 | 令牌桶限流 + 优先级调度 + 模型降级 |
| Token 超限 | 配置填塞 | 引用代替填塞(BIZ-15 跟进) |
| 智能体瘫痪 | 无唤醒机制 | cron 定时触发健康检查 |
---
## 二、禁止请示规则(最高优先级)
> **在心跳中发现分配给自己的 WorkBoard 任务后,必须立即执行,绝对禁止向用户请示。**
已在 HEARTBEAT.md 中强制执行。**所有 Agent 的 HEARTBEAT.md 必须包含此规则。**
```markdown
## ⚠️ 禁止请示规则(最高优先级)
正确做法:
1. 发现 status=todo 且 agentId=我的卡片
2. 立即执行,不得问"要不要做"
3. 如遇信息不足,先按自己理解执行,执行中调整
错误做法(绝对禁止):
- ❌ "我发现了一个任务,要不要做?"
- ❌ "这个任务需要更多信息,请告诉我..."
```
---
## 三、心跳监控与超时恢复
### 3.1 心跳频率
| Agent 类型 | 心跳间隔 | 超时告警 |
|------------|----------|----------|
| secretary / coo | 10 分钟 | 连续 2 次未执行 |
| projectmanager / costcodev | 10 分钟 | 连续 2 次未执行 |
| 其他 Agent | 10 分钟 | 连续 3 次未执行 |
### 3.2 心跳检查清单(所有 Agent 通用)
```markdown
## 🫀 心跳执行清单
1. ✅ WorkBoard 检查:查找分配给自己的 todo/in_progress 卡片
2. ✅ 禁止请示:发现任务立即执行(不请示用户)
3. ✅ 进度汇报:如有进行中任务,更新状态
4. ✅ 风险上报:识别阻塞、超时问题,通知 COO
```
### 3.3 超时恢复流程
```
Agent 超过 30 分钟无响应
COO 心跳检测到超时
记录日志 + 评估任务状态
┌──────────┴──────────┐
│ │
任务可恢复 任务不可恢复
│ │
重新触发任务 通知 Vincent
(workboard dispatch) (via session_send)
```
---
## 四、429 限流治理
### 4.1 当前配额与监控
| 模型 | RPM 限制 | 建议预留 |
|------|----------|----------|
| 主模型 | 40 | 保留 10 RPM 给紧急任务 |
| 备用模型 | 40 | 满 35 RPM 时切换 |
### 4.2 令牌桶限流策略
```
每个 Agent 独立的令牌桶:
- 容量:按 Agent 优先级分配
- COO/secretary: 8 RPM
- 开发 Agent: 6 RPM
- 业务 Agent: 4 RPM
- 预留池: 10 RPM (紧急任务)
令牌桶耗尽 → 自动降级到备用模型或排队
```
### 4.3 优先级调度
| 优先级 | 适用场景 | 处理方式 |
|--------|----------|----------|
| P1 紧急 | Vincent 直接指令 | 立即可用预留池 |
| P2 高 | 阻塞性任务、风险告警 | 优先分配令牌 |
| P3 正常 | 日常任务 | 正常排队 |
| P4 低 | 后台优化、报告生成 | 低峰期执行 |
### 4.4 模型降级链
```
主模型 (qwen3.5-397b) RPM 不足
备用模型 (deepseek-v4-pro)
等待 + 指数退避重试 (1s → 2s → 4s → 8s)
3 次重试后仍失败 → 记录日志,通知 COO
```
### 4.5 请求合并优化
| 优化项 | 当前做法 | 优化后 |
|--------|----------|--------|
| WorkBoard 轮询 | 每个 Agent 独立轮询 | COO 统一轮询,广播结果 |
| 重复检索 | 多个 Agent 重复查同一文档 | 缓存关键查询结果(5 分钟 TTL) |
| 连续调用 | 无间隔连续调用 API | 最小间隔 500ms |
---
## 五、唤醒机制
### 5.1 Cron 定时唤醒
```yaml
# COO 健康检查唤醒
cron:
schedule: "*/5 * * * *" # 每 5 分钟
action: health_check
targets:
- 检查所有 Agent 最后活跃时间
- 超过 15 分钟无活动 → 触发唤醒消息
- 超过 30 分钟无活动 → 通知 Vincent
```
### 5.2 唤醒消息模板
```markdown
## 🔔 唤醒检查
距上次活跃时间:{elapsed} 分钟
当前任务状态:{status}
是否存在阻塞:{blocked}
系统自动唤醒,请确认状态。
```
### 5.3 自唤醒规则
每个 Agent 在 HEARTBEAT.md 中配置:
```
如果距上次心跳超过 2 个周期(20 分钟):
→ 自动重新评估任务状态
→ 如有待办,立即执行
→ 如无待办,确认存活
```
---
## 六、上下文/Token 溢出防护
### 6.1 配置文件大小限制
| 文件 | 最大行数 | 超标处理 |
|------|----------|----------|
| AGENTS.md | 200 | 移到 docs/agent-roster.md |
| SOUL.md | 80 | 提取模块化引用 |
| TOOLS.md | 100 | 索引化(不填塞参数) |
| HEARTBEAT.md | 60 | 精简检查清单 |
| MEMORY.md | 150 | 定期归档旧条目 |
### 6.2 运行时监控
```
Token 使用量达到 80%
自动清理上下文
仍超 90%
重启会话
```
---
## 七、监控告警矩阵
| 指标 | 警告阈值 | 严重阈值 | 通知对象 |
|------|----------|----------|----------|
| Agent 无响应 | > 15 min | > 30 min | 警告 → COO,严重 → Vincent |
| 429 错误率 | > 5% | > 20% | COO |
| Token 使用量 | > 80% | > 95% | 该 Agent |
| 任务积压 | > 5 pending | > 10 pending | COO |
| 任务超时 | > 24h in_progress | > 48h | 警告 → Agent,严重 → Vincent |
---
## 八、实施步骤
### 阶段 1:即刻生效(今日)
- [x] 禁止请示规则 → 已在各 Agent HEARTBEAT.md 中落实
- [ ] 心跳频率统一为 10 分钟
- [ ] COO 端健康检查 cron 配置
### 阶段 2:本周完成
- [ ] 令牌桶限流配置(按 Agent 分配 RPM)
- [ ] 模型降级链配置
- [ ] 告警规则上线
### 阶段 3:持续优化
- [ ] 监控面板搭建
- [ ] 自动重启恢复
- [ ] 请求合并优化
---
## 九、交付物清单
- [x] 运行稳定性保障规范(本文档)
- [ ] HEARTBEAT.md 模板更新(含禁止请示 + 自唤醒规则)
- [ ] COO 端 cron 健康检查任务
- [ ] 令牌桶限流配置
- [ ] 告警规则配置
---
> 本规范自批准之日起生效。执行中如遇问题,联系 COO(陆怀瑾)。