chore: initial import

This commit is contained in:
phamnazage-jpg
2026-05-12 17:47:32 +08:00
commit fc54ba84b2
104 changed files with 11575 additions and 0 deletions

93
prd/PM审核报告.md Normal file
View File

@@ -0,0 +1,93 @@
## PM 审核报告
### 总体评级B
**评级说明**PRD 整体结构完整用户旅程覆盖较全AC 基本满足 SMART 原则,商业化闭环有框架但缺乏财务量化。存在 1 处 P0 级范围不一致、1 处 P0 级错误码冲突,以及工期估算严重偏乐观的问题。建议在进入 TechLead 评审前修复 P0/P1 问题。
---
### 优点
1. **用户旅程覆盖完整**:主流程(监控看板、配置审计回滚、告警处置)+ 异常流程(自愈失败、告警飙升、回滚失败)+ 边缘流程(无人处理告警、数据源丢失、误触发变更)全部覆盖,并配有 F-1~F-8 的独立失败路径表。
2. **AC 量化程度高**12 条 AC 中90% 以上包含明确的数值约束(如 <2s、<3s、30s、90 天、50 条规则、100 条/页),可直接转化为 QA 测试用例。
3. **In/Out of Scope 边界清晰**明确排除了下游大模型监控、基础设施层监控、AI 自动扩缩容、外部监控系统整合,避免范围蔓延。
4. **技术约束明确**:统一 Go 1.22+ / 标准库 net/http / pgx / go-redis禁止引入 Gin/Echo支持独立运行与集成运行双模式数据库表名强制 `ai_ops_` 前缀,减少集成冲突。
5. **发布策略安全**:分 4 阶段上线,自愈规则强制"沙盒模式"验证(>=10 次模拟),并设计了一键关闭自愈的权限开关,风险控制意识强。
6. **竞品分析有价值**:对 LiteLLM、Sub2API、NewAPI、FreeRide 的对标分析到位,差距分析直接转化为产品机会点。
---
### 发现问题(按严重度分类)
#### P0 — 阻塞性问题(必须修复后才能进入开发)
| 编号 | 问题 | 影响 | 位置 |
|------|------|------|------|
| P0-1 | **范围冲突:供应商智能切换未在 PRD 正文 In Scope 中明确纳入,但功能清单将其作为 Phase 3 核心模块3.4,含 16+ 个任务)** | 该功能涉及自动路由变更、供应商探测、Fallback 链管理,本质上属于"自动化配置变更/扩容决策",与 Out of Scope 第 3 条"不做自动扩容决策"存在擦边风险;且 In Scope 第 1 条明确"不含下游大模型服务",而供应商切换直接依赖下游供应商接口。若不加明确界定,开发阶段极易产生范围争议。 | PRD §3 In Scope / 功能清单 模块 3.4 |
| P0-2 | **错误码不一致**PRD 场景 F 与 AC-8 规定回滚失败错误码为 `OPS_AUD_4101`,但功能清单 3.3.2 使用 `AUDIT_ROLLBACK_TARGET_LOST` | 接口契约冲突,前后端/QA 无法对齐,将导致集成测试失败。 | PRD §4 场景 F、§5 AC-8 / 功能清单 3.3.2 |
| P0-3 | **工期估算严重偏离实际**:功能清单列出 138 个任务,总估算仅 18 人天(平均每个任务不足 1 小时未包含联调、集成测试、Bug 修复、文档、评审、返工时间 | 该估算极可能导致项目延期、资源不足、质量下降。按行业常规Go 后端 + 前端 + 测试的完整交付138 个任务至少需要 6~8 周30~40 人天)以上。 | 功能清单 "任务估算汇总" |
| P0-4 | **自愈动作"重启实例"在功能清单中遗漏具体任务**PRD AC-6 明确列出"重启实例"为可选自愈动作之一,但功能清单 3.1.2 的自愈执行后端任务仅覆盖"切换备用路由、限流、触发脚本",未提及"重启实例"的实现任务 | 功能遗漏QA 无法验收该自愈动作。 | PRD §5 AC-6 / 功能清单 3.1.2 |
#### P1 — 重要问题(强烈建议修复)
| 编号 | 问题 | 影响 | 位置 |
|------|------|------|------|
| P1-1 | **双重失败判定线**PRD §2 定义"开发期间任何一周内告警噪声率 >20% 或自愈规则误触发导致生产事故,即判定失败"§8.3 又定义"上线 30 天内 MTTR 未下降至 <20min / 自动化覆盖率 <30% / 噪声率 >15% / 自愈误触发 1 次"进入救援模式 | 两条判定线的时间边界(开发期 vs 上线后、指标阈值20% vs 15%)、触发条件不统一,团队无法判断应以哪条为准。 | PRD §2 成功定义、§8.3 失败判定线 |
| P1-2 | **In Scope 使用"包括但不限于"**:第 1 条"包含但不限于gateway/..." | "包括但不限于"是范围管理中的高风险词汇,为后续需求蔓延留下口子。应改为封闭列表,或明确"仅包含以下模块"。 | PRD §3 In Scope #1 |
| P1-3 | **通知渠道定义不一致**PRD AC-4 要求"Webhook、邮件、飞书/企业微信至少 2 种",但功能清单 2.3.2 和 3.4.3 出现了"钉钉",且备份切换链为 Webhook→邮件→飞书→企微 | 若最终未实现钉钉功能清单需同步删除若实现PRD AC-4 需更新。 | PRD §5 AC-4 / 功能清单 2.3.2、3.4.3 |
| P1-4 | **AC-7 "审计日志必须不可篡改"缺乏技术实现定义**:未说明是通过 WORM 存储、哈希链、数字签名还是仅通过数据库层禁止 UPDATE/DELETE 来实现 | QA 无法验证"不可篡改",不同实现方式的成本和合规等级差异巨大。 | PRD §5 AC-7 |
| P1-5 | **AC-8 "操作前值有效"定义模糊**:未明确"有效"的判定标准非空JSON 可解析?符合当前 Schema | 可能导致回滚接口在边界情况下行为不一致。 | PRD §5 AC-8 |
| P1-6 | **级联故障回退F-6未在 AC 中体现**PRD §6 F-6 描述自愈级联故障时"自动恢复上一步操作前的状态",但 AC-6 仅提到"若未解除则升级为人工告警",未要求验证级联回退能力 | 功能清单 3.1.3 有任务,但 AC 缺失QA 无法据此验收。 | PRD §6 F-6 / §5 AC-6 |
| P1-7 | **容量预测算法缺乏可测试标准**AC-9 要求"按当前增长率预测触达资源上限时间",但注明"仅供参考,不自动执行扩容",且未定义预测准确率、置信区间或最大可接受偏差 | "仅供参考"导致该功能无法被 QA 有效验收,开发完成后可能沦为无法量化的"演示功能"。 | PRD §5 AC-9 |
| P1-8 | **缺少 UI/UX 最低兼容性要求**PRD 和功能清单均未规定浏览器支持范围、移动端适配策略、最低分辨率 | 前端工程师缺乏约束,可能在交付后因兼容性问题返工。 | PRD 全文 |
| P1-9 | **角色权限矩阵过粗**AC-12 仅定义 3 个角色的一句话权限,缺少页面级/API 级权限对照表(如"运维人员能否导出审计日志?""查看者能否导出 CSV" | 功能清单 G1 中"管理员(可管理用户)"超出了 PRD 定义PRD 未提用户管理),进一步加剧不一致。 | PRD §5 AC-12 / 功能清单 G1 |
#### P2 — 改进建议(建议纳入后续迭代)
| 编号 | 问题 | 建议 |
|------|------|------|
| P2-1 | 商业化闭环缺少 ROI 量化模型 | 补充"当前运维人力成本 = X 人月 × Y 元/人月,目标释放 40% 后节省 Z 元/月"的计算示例,使北极星指标与财务指标挂钩。 |
| P2-2 | 竞品分析中的技术设计模式未融入 PRD 正文 | 将 `CustomBatchLogger``DigestEntry``DualCache` 等设计模式从竞品分析报告迁移到 PRD 技术约束或架构建议章节,避免设计阶段遗漏。 |
| P2-3 | 发布策略缺少阶段门控的量化验收标准 | 阶段 2 进入阶段 3 的条件目前是"无 P1 以上告警 72h",建议补充"告警噪声率 <10%""通知渠道成功率 >95%"等可量化门控。 |
| P2-4 | 未定义生产部署拓扑 | 建议明确是单集群还是多集群部署,自愈动作"重启实例"在 K8s 与裸金属环境下的实现差异巨大。 |
| P2-5 | 审计日志 90 天保留期未评估存储成本 | 高并发场景下全量 JSON 审计日志的存储量可能极大,建议补充日志压缩/归档策略或存储成本上限。 |
| P2-6 | PRD 自检清单声称"没有使用优化、支持、友好、尽量、快速等模糊词",但正文中仍存在"等""等相关指标"等模糊表述 | 建议将 In Scope 中的"等"字去除,改为封闭列表;功能清单中的"等相关能力"也需同步清理。 |
---
### 改进建议(优先级排序)
1. **立即修复 P0 问题**
- 在 PRD §3 In Scope 中明确加入"供应商智能切换含健康探测、Fallback 链、策略化路由)"或将其移入 Out of Scope若纳入需在 AC 中补充对应的验收标准。
- 统一回滚失败错误码为 `OPS_AUD_4101`,功能清单同步修正。
- 重新进行工时估算,建议采用"任务 × 复杂度系数 + 联调缓冲20%+ 风险缓冲15%"的方式,输出 30~40 人天的 realistic estimate。
- 在功能清单 3.1.2 中补充"重启实例"自愈动作的实现任务(如调用 K8s API 或主机 agent
2. **本周内修复 P1 问题**
- 合并/统一失败判定线,建议按"上线后 30 天"为统一时间窗口,阈值取更严格的版本(噪声率 <15%)。
- 删除 In Scope 中的"包括但不限于",改为封闭枚举;如确需扩展,规定"新增范围需经 PM+TechLead 双签"。
- 明确 AC-4 通知渠道的最终列表(是否含钉钉),并同步更新功能清单的备用切换链。
- 在 AC-7 中补充"不可篡改"的实现方式(建议:数据库层禁止 UPDATE/DELETE + 应用层只追加写入)。
- 补充 UI 最低兼容性要求Chrome/Firefox/Edge 最新 2 个版本,最小宽度 1280px
- 细化角色权限矩阵到 API 级别,建议以表格形式列出各角色对关键接口的 CRUD 权限。
3. **TechLead 阶段前补充**
- 将竞品分析中的设计模式建议提炼为 PRD 架构约束章节(如告警批量化、摘要窗口、双缓存机制)。
- 为容量预测AC-9补充可测试标准例如"预测值与实际值的平均绝对百分比误差MAPE<30%"或至少提供趋势方向判断准确率。
- 明确生产部署拓扑K8s vs 裸金属 vs 混合),影响自愈动作设计。
---
### 审核结论
| 维度 | 评分 | 说明 |
|------|------|------|
| 用户旅程完整性 | A- | 主/异/边缘流程全覆盖,但级联回退未在 AC 中闭环 |
| AC 可测试性 | B+ | 大部分量化精确,但"仅供参考""有效""不可篡改"等不可测试 |
| In/Out of Scope 清晰度 | B | 主体清晰,但"包括但不限于"和供应商切换造成范围争议 |
| 成功指标与失败判定 | B- | 指标量化,但存在双重标准,时间边界模糊 |
| 商业化闭环 | B- | 有框架但缺 ROI 量化,外部收益链条弱 |
| 功能清单一致性 | C+ | 与 PRD 存在错误码冲突、渠道不一致、任务遗漏、估算失真 |
| 模糊词汇控制 | B+ | 主体控制良好,"等"字和"包括但不限于"需清理 |
**建议行动**:修复 P0-1~P0-4 后,可进入 TechLead 评审P1 问题建议在技术方案评审前同步闭环。

461
prd/PRD.md Normal file
View File

@@ -0,0 +1,461 @@
# 智能运维系统 PRD
> 版本v1.0
> 负责人PM
> 目标读者TechLead、QA、SRE、运营人员
> 状态:待 TechLead 评审
---
## 1. 概述
### 一句话价值
通过自动化监控、告警辅助决策、故障自愈与配置变更管理,将立交桥平台的运维从人工排查转为机器主导的实时保障,降低 MTTR、减少人工成本、提升运行稳定性。
### 用户问题
1. 当前运维严重依赖人工定期检查日志问题发现与处置耗时过长MTTR 超过 30 分钟。
2. 告警规则缺乏分类与阈值动态调整,导致要么漏告警、要么误告警爆炸。
3. 故障发生时无自动恢复机制,必须等待运维人员手动参与,产生可避免的服务中断。
4. 配置变更无审计追溯能力,回滚窗口不明确,引发过多次生产故障。
5. 规模扩张中缺乏量化的容量管理视角,出现无计划的资源短缺。
### 业务意义
- 从 Demo 级运维向生产级运维过渡,建立可重复、可审计、可回滚的运维体系。
- 在人员规模不增的前提下支撑接入商家数、API 调用量与 Token 数量级的增长。
---
## 2. 目标
### 业务目标
1. 将平台核心故障 MTTR 从 >30min 压缩至 <10min。
2. 自动化处理覆盖 P1/P2 级告警事件的 60%以上(含自愈和故障匿离)。
3. 告警噪声率降低至 5% 以下(误告警 / 总告警数)。
4. 实现 100% 生产配置变更的审计追溯,回滚时间窗口 <5min。
### 用户目标
| 用户 | 目标 |
|---|---|
| SRE | 不再 7x24 手动守候日志,告警可触达、可分类、可动作化 |
| 运营人员 | 缺陷发现后能在同一平台完成定位、分析、处置,无需切换多套工具 |
| 平台管理员 | 对任何配置变更能看到影响范围、执行记录、快速回滚能力 |
| 技术负责人 | 获取量化的运维健康度指标,支撑容量与稳定性决策 |
### 成功定义
- 必要条件:运维主控台可访问、监控数据可查、告警规则可配。
- 充分条件:自愈规则生效、告警噪声率 <5%、审计日志完整。
- 失败判定:开发期间任何一周内告警噪声率 >20%或自愈规则误触发导致生产事故,即判定失败。
---
## 3. 范围
### In Scope
1. 立交桥平台本身的运行时监控(不含下游大模型服务),包含但不限于:
- gateway/ 请求量、延迟、错误率、降级/稳定性规则命中率
- supply-api/ 供应商健康状态与审计异常
- platform-token-runtime/ 令牌耗尽、资源约束触发、异常恢复周期
2. 告警规则引擎多维度阈值、分级告警P0/P1/P2/P3、告警抑制与聚合。
3. 故障自愈引擎:自动重启、切换路由、限流、隔离异常节点。
4. **供应商智能切换In Scope**:含供应商健康探测、故障时的多级 Fallback 切换、策略化路由调度、切换后的健康状态监测与回滚。
5. 配置管理与审计:配置变更审计日志、版本化、回滚。
6. 容量视图:以 Token 数量、QPS、响应延迟、资源利用率为核心指标的容量主板。
7. 日志/指标查询与下钻:支持按时间范围、服务、错误码、用户维度筛选。
### Out of Scope
1. 下游大模型服务的监控与告警(如 OpenAI、Claude 本身的稳定性)。
2. 基础设施层监控(如物理机器 CPU/内存/磁盘,由云厂商或 Prometheus Node Exporter 覆盖)。
3. **AI 负载预测/自动规模扩缩(本阶段仅提供容量视图与阈值提示,不做自动扩容决策)。**
- 供应商智能切换如故障时切换到备用供应商属于故障应对策略In Scope。
- 自动规模扩缩(如 K8s HPA 类似的自动扩缩容决策属于资源调度策略Out of Scope。
4. 外部监控系统(如 Datadog、New Relic的整合仅提供标准 Prometheus 格式接口供自取。
### 假设与依赖
1. 假设已有 Prometheus 或类似时序数据库存储指标,可接受定期 PromQL 查询。
2. 假设平台日志已统一格式化,可通过标准化查询接口读取。
3. 假设 gateway/internal/metrics/ 与 gateway/internal/alert/ 现有模块的接口契约在本项目中可延续或克隆。
4. 依赖 supply-api/ 的供应商健康检查接口与审计日志接口。
5. 依赖 platform-token-runtime/ 的运行时状态与异常恢复状态接口。
---
## 4. 用户场景
### 主流程
#### 场景 A监控实时看板查看平台健康状态
1. SRE 登录运维主控台。
2. 首页展示实时 QPS、平均延迟、P99 延迟、错误率、活跃供应商数量、异常告警数量。
3. SRE 点击任意指标卡片,下钻至分钟级趋势图与按服务/路径/供应商的分布。
4. 如果某指标超过预设阈值,卡片变红并显示最近 3 条相关告警摘要。
#### 场景 B配置审计与回滚
1. 平台管理员修改供应商接口地址或路由规则。
2. 系统自动记录操作人、操作前后值、时间戳、IP 地址,并生成唯一审计 ID。
3. 管理员可以在审计日志中搜索该变更。
4. 发现变更引发异常后,管理员在审计页面选择该记录执行回滚,系统在 60 秒内恢复原值并验证恢复后状态。
#### 场景 C告警接收与处置
1. 监控引擎检测到 P1 告警触发条件(如某供应商错误率 >10%持续 2min
2. 告警在 30 秒内通过配置的通知渠道Webhook/邮件/飞书/企业微信)发送给负责人。
3. 自愈引擎判断该 P1 告警是否存在已配置自愈动作:
- 若有:执行自愈(如切换备用供应商、限流、重启异常实例),并在事件中记录动作结果。
- 若无:仅发送通知,等待人工处理。
4. SRE 在控台中对该告警进行确认/忽略/规避,并填写处置结果。
5. 告警事件自动关闭或转为持续告警,根据反馈调整当前期的实时效果。
### 异常流程
#### 场景 D自愈动作失败
1. 自愈引擎尝试执行自愈动作(如切换供应商接口)。
2. 动作执行失败API 返回非 200 或超时)。
3. 系统在 10 秒内尝试重试 1 次,若仍失败,停止自动尝试并升级为 P0 人工告警(电话/短信)。
4. 记录失败原因与日志,保留事件状态供人工排查。
#### 场景 E告警飙升波浪式告警
1. 某基础故障导致成百上千个服务实例同时触发告警。
2. 告警引擎检测到同一资源/服务在 1 分钟内触发 >20 条告警。
3. 自动触发聚合:生成一条 "集群告警",将细节收拢为附件,停止单条通知爆炸。
4. SRE 在控台中批量确认/忽略/属于同一根因的告警。
#### 场景 F回滚失败
1. 管理员发起回滚。
2. 回滚目标值已被后续修改覆盖(关联记录不存在或已被删除)。
3. 系统拒绝执行,返回明确错误码 `OPS_AUD_4101`(回滚目标不存在)。
4. 记录回滚失败事件,告警通知技术负责人。
### 边缘流程
#### 场景 G无人处理的持续告警
1. P2 告警持续 2 小时未被确认。
2. 系统自动将该告警升级为 P1并通知上级负责人。
#### 场景 H监控数据源丢失
1. 指标采集器在 5 分钟内未收到任何新数据点。
2. 控制台显示 "数据源丢失"标识,不显示过期数据,触发 P2 级别的内部告警。
3. 恢复后自动补入缺失时段的空值标记,不伪造数据。
#### 场景 I运维人员误触发配置变更
1. 管理员提交一个将某供应商日请求上限从 10000 降为 10 的变更。
2. 系统检测到该变更带来的影响面 > 预设阈值(比如触发将导致 90% 流量被拒绝)。
3. 在审计日志中标记该变更为 "高风险",并在执行前弹窗警告管理员需要二次确认。
### 用户故事
- 作为 SRE我希望在午夜收到有效告警而不是噪音以便在 10 分钟内完成定位和处置,避免影响生产。
- 作为运营人员,我希望能在同一个控制台查看所有服务的健康状态和日志,而不需要登录多套系统。
- 作为平台管理员,我希望任何配置变更都有日志和回滚能力,让我在发生问题时能快速恢复而不会黄乱找原始值。
- 作为技术负责人,我希望看到量化的运维健康指标,以便在要求增量资源时有数据支撑。
---
## 5. 验收标准AC
### AC-1 实时监控看板
- 当访问运维主控台时,首页加载时间 <2s。
- 首页必须显示以下 6 个指标数值:当前 QPS、平均响应延迟(ms)、P99 响应延迟(ms)、5xx 错误率(%)、活跃供应商数量、未关闭告警数量。
- 每个指标卡片需在数据更新后 15s 内刷新显示。
### AC-2 指标下钻
- 点击任何指标卡片后,页面展示该指标过去 1 小时的分钟级趋势图。
- 趋势图支持按 `service`gateway/supply-api/platform-token-runtime`path`URL path`supplier`(供应商 ID维度下钻分割。
- 下钻结果查询时间 <3s。
### AC-3 告警规则配置
- 控制台支持创建、编辑、启用、禁用告警规则。
- 单条规则必须包含:规则名称、监控指标、阈值类型(>、<、=、匹配正则)、持续时间(min)、级别P0/P1/P2/P3、通知渠道。
- 规则变更后 30s 内生效,无需重启服务。
- 最少支持同时运行 50 条告警规则。
### AC-4 告警通知触达
- P0/P1 级告警必须在触发后 30s 内完成通知发送。
- P2 级告警必须在 120s 内完成通知发送。
- 通知渠道必须支持 Webhook、邮件、飞书/企业微信至少 2 种。
- 通知模板必须包含:告警级别、规则名称、触发时间、当前值、阈值、事件 ID、查看链接。
### AC-5 告警聚合与抑制
- 当同一资源/服务在 1 分钟内触发 >20 条告警时,系统必须自动生成 1 条集群告警,停止单条通知爆炸。
- 集群告警的通知内容必须包含:累计数量、涉及规则列表、时间范围。
- 抑制周期:同一规则同一目标在 5 分钟内只发送 1 次告警(除非级别升级)。
### AC-6 自动自愈
- 系统必须支持为每个告警规则配置可选的自愈动作:无、切换备用路由、限流、重启实例、触发程序化脚本。
- 自愈动作必须在告警触发后 60s 内执行完成(含重试 1 次的时间)。
- 自愈执行结果(成功/失败/拒绝)必须记录在告警事件中。
- 自愈动作触发后,监控必须在 2 分钟内评估是否解除告警条件,若未解除则升级为人工告警。
### AC-7 配置审计日志
- 任何对生产配置的增、删、改操作必须在 1s 内生成审计日志记录。
- 审计日志必须包含:唯一 ID、操作人、操作类型、目标资源类型与 ID、操作前值(JSON)、操作后值(JSON)、时间戳(到毫秒)、IP 地址、请求 ID。
- 审计日志必须不可篡改,存储保留期 >=90 天。
- 控制台必须支持按时间范围、操作人、资源类型、关键词筛选查询,结果返回时间 <3s。
### AC-8 配置回滚
- 对于任何审计日志记录,只要目标资源仍存在且操作前值有效,必须支持执行回滚。
- 回滚执行时间必须 <60s并在执行前显示所有会被覆盖的子资源列表。
- 回滚必须生成新的审计记录,关联原始操作 ID。
- 回滚失败时必须返回明确错误码,不得静默失败。
### AC-9 容量主板
- 容量主板必须显示过去 7 天的 Token 数量、QPS、P99 延迟、各供应商资源利用率趋势。
- 必须对每个服务标出当前负载等级:正常/警告/过载,判定依据可配置阈值。
- 提供 "按当前增长率预测触达资源上限时间"的算法结果(仅供参考,不自动执行扩容)。
### AC-10 日志/指标查询
- 控制台必须支持按时间范围、服务名称、HTTP 状态码、错误码、用户 ID、供应商 ID、关键词筛适日志。
- 日志查询结果支持分页,单页最大 100 条,首页返回时间 <3s。
- 支持将日志结果导出为 CSV 文件,单次导出上限 10000 条。
### AC-11 监控数据保存
- 原始指标数据必须保留 >=7 天,用于短期查询与告警评估。
- 分钟级聚合数据必须保留 >=30 天,用于趋势分析。
- 小时级聚合数据必须保留 >=90 天,用于容量规划与月度报告。
### AC-12 角色与权限
- 必须支持以下角色及其基本权限控制:
- 查看者:可查看监控看板、日志、告警事件,不可修改配置。
- 运维人员:可确认/忽略/规避告警,可管理告警规则,不可执行回滚。
- 管理员:可执行所有操作,包括回滚与高风险变更确认。
---
## 6. 边缘情况与失败路径
| 编号 | 边缘/失败场景 | 系统行为 | 人工介入时机 |
|---|---|---|---|
| F-1 | 自愈动作重试均失败 | 停止自动尝试,升级为 P0 人工告警 | 立即,电话/短信通知 |
| F-2 | 告警通知渠道失效(如 Webhook 8xx/5xx | 记录发送失败,使用备用渠道(邮件→飞书→短信) | 三次切换后仍失败,通知 TechLead |
| F-3 | 回滚目标已不存在 | 拒绝回滚,返回错误码 `OPS_AUD_4101` | 需要运维人员手动修复或联系开发人员 |
| F-4 | 指标采集器连续 5min 无数据 | 显示数据源丢失标识,触发内部 P2 告警 | 检查采集器/网络/存储状态 |
| F-5 | 审计日志存储满盘/写入失败 | 丢弃非关键字段或改为异步上报,不阻断业务操作 | 存储计量触发预警SRE 扩容或清理 |
| F-6 | 自愈动作触发后形成级联故障(如切换路由后导致新节点故障) | 自动恢复上一步操作前的状态(回退),然后升级为人工告警 | 立即,电话通知 |
| F-7 | 监控数据库丢失(全面中断) | 控制台进入只读/降级模式,告警引擎依赖本地缓存持续运行 | 立即,检查存储层 |
| F-8 | 实时看板指标计算结果超时 | 显示上次成功结果并标注时间戳,不等待当前请求 | 检查查询引擎性能或检索时间范围 |
---
## 7. 上线与运营准备
### 发布策略
- 阶段 1监控看板 + 日志/指标查询。只提供可视化,不触发任何自动动作。
- 阶段 2告警规则引擎 + 通知渠道,告警只通知、不执行自愈。
- 阶段 3自愈引擎 + 审计回滚。
- 阶段 4容量主板与高级分析。
### 灰度与回滚
- 每个阶段必须在单个可控集群部署 >=72h无 P1 以上告警才进入下一环境。
- 自愈规则必须通过 "沙盒模式"验证:先在非生产环境模拟触发 10 次以上,确认动作结果符合预期后才允许关联生产告警规则。
- 回滚能力必须在发布前进行 1 次演练,涉及至少 3 个不同资源类型。
- 如阶段 3 中自愈规则出现误触发导致生产事故,立即停用自愈引擎(通过权限开关),所有告警退化为仅通知模式。
### 埋点与监控
- 必须实现以下事件埋点:
- `运维控制台页面加载``指标下钻``日志查询执行``告警规则创建/编辑/删除``告警确认/忽略/规避``自愈动作执行``自愈失败``回滚执行``回滚失败`
- 必须对自身监控层(指标采集器、告警引擎、通知发送器)进行健康检查,检查失败时触发内部 P2 告警。
### FAQ预先准备
| 问题 | 答案 |
|---|---|
| 告警通知没收到怎么办? | 检查通知渠道配置中的接收地址/密钥;检查通知日志中的发送结果与失败原因。 |
| 自愈动作为什么没有触发? | 确认规则中已开启自愈动作并选择了具体动作;确认沙盒测试已通过。 |
| 回滚为什么报错 `OPS_AUD_4101` | 该配置在变更后已被删除或覆盖,无法找到操作前状态,需要手动恢复。 |
| 数据看板为什么卡住? | 检查页面顶部是否有 "数据源丢失"标识;尝试缩小时间范围或筛选条件。 |
| 如何避免误触发自愈规则? | 在非生产环境测试自愈规则 10 次以上并验证结果正确后才关联生产告警规则。 |
---
## 8. 商业化与价值闭环
### 收益路径
1. 内部效益:减少运维人员 7x24 值班压力,释放人力至产品功能开发。
2. 外部收益:提升平台 SLA 从 99.5% 至 99.9%,支撑企业客户签约与续费。
3. 成本节省:将运维人工时长每月减少 40% 以上,可量化计算为节省人力成本。
### 北极星指标
- 平台核心故障 MTTR从 >30min 到 <10min
- 自动化处理覆盖率(目标 >=60%)。
- 告警噪声率(目标 <5%)。
### 失败判定线
- 上线 30 天内 MTTR 未下降至 <20min。
- 自动化覆盖率 <30%。
- 告警噪声率 >15%。
- 自愈规则误触发导致 1 次生产故障事件。
任意一项触发,即进入救援模式。
### 止损条件
- 自愈引擎误触发导致 2 次以上生产事故:立即锁定自愈功能,退回仅通知模式,启动事故复盘。
- 监控数据丢失超过 24h停用依赖监控数据的自动化规则级联退化至人工处理。
---
## 9. 依赖与风险
### 技术依赖
| 依赖 | 风险等级 | 备选方案 |
|---|---|---|
| Prometheus 或类似时序数据库 | 高 | 支持 VictoriaMetrics / Thanos 作为替代后端,提供存储适配层,不锁死单一存储 |
| 通知渠道Webhook/邮件/飞书) | 中 | 必须支持多渠道且自动切换,单渠道不得作为唯一依赖 |
| 审计日志存储 | 中 | 主存储失败时转至本地文件缓存 + 异步上报,不阻断业务 |
| supply-api/ 审计接口 | 中 | 如接口不可用,运维平台自己写审计记录,后续补同步 |
### 业务风险
1. 自愈规则设计不当导致正常流量被掩断或重定向,影响客户请求。
2. 告警规则过于敏感或缺乏抑制,导致噪音爆炸,运营人员麻木对待真实故障。
3. 回滚操作不当导致配置状态更深层次的损坏,如回滚了一个依赖于新配置的下游变更。
4. 审计日志丢失导致故障定责和合规审查受阻。
### 缓解措施
1. 自愈规则必须经历 "沙盒模式"验证才能生效。
2. 所有自愈动作支持通过权限开关一键关闭,关闭后所有告警退化为仅通知。
3. 回滚执行前显示子资源影响范围,必须经二次确认。
4. 审计日志存储采用主备双写,存储期 >=90 天。
---
## 10. 技术栈与集成约束
### 统一技术栈
本项目必须与立交桥主项目保持一致:
- **语言**: Go 1.22+
- **HTTP框架**: 标准库 `net/http` + 自定义中间件(禁止引入 Gin/Echo 等第三方框架,保持与 gateway/ 和 supply-api/ 的一致性)
- **数据库**: PostgreSQL 15+ ,驱动 `jackc/pgx/v5`
- **缓存**: Redis客户端 `redis/go-redis/v9`
- **配置**: YAML + Viper环境变量覆盖敏感字段
- **日志/审计**: 结构化日志,审计事件模型与 supply-api/ 一致
- **错误码**: `{SOURCE}_{CATEGORY}_{CODE}` 格式,例如 `OPS_ALT_4001`
- **健康检查**: `/actuator/health``/actuator/health/live``/actuator/health/ready`
- **测试**: Go testing + testify覆盖率门槛 domain ≥ 70%、service/handler ≥ 80%
### 独立运行与集成运行
本系统必须同时支持两种运行模式:
| 模式 | 特征 | 部署方式 | 适用场景 |
|------|------|---------|---------|
| **独立运行** | 自有 `cmd/ai-ops/main.go`,独立数据库 schema独立 docker-compose | `docker-compose up` 或单独容器 | 外部用户只需要运维能力,不想接入立交桥全套 |
| **集成运行** | 作为 Go module 被 `gateway/``supply-api/` 引入,共享数据库连接池和配置,通过内部接口注册 | 编译时作为子模块编译,运行时挂载到立交桥主进程 | 立交桥用户希望获得一体化运维能力 |
**集成约束**:
- 独立运行时,系统必须提供完整的 HTTP API 和管理后台。
- 集成运行时,系统必须提供 `IntegrationPlugin` 接口,允许主程序通过配置开关启用/禁用各模块。
- 数据库 schema 必须使用独立的 `ai_ops_` 前缀,避免与主项目表名冲突。
- 配置文件必须支持分离加载:独立运行时读取自己的 `config.yaml`,集成运行时合并到主项目配置。
### NewAPI / Sub2API 适配支持
本系统的核心能力必须能够对接 NewAPI 和 Sub2API 系统:
- **监控数据推送**: 提供 Prometheus 格式的 `/metrics` 接口NewAPI/Sub2API 可通过 Prometheus scrape 获取运维数据。
- **告警回调**: 支持 Webhook 告警通知NewAPI/Sub2API 可配置接收本系统的告警事件。
- **自愈脚本扩展**: 自愈动作中的"触发程序化脚本"支持调用 NewAPI/Sub2API 的管理 API如切换供应商、限流配置、重启实例
- **独立部署时**: 通过配置文件指定 NewAPI/Sub2API 的管理端点地址和鉴权信息,本系统通过适配层与之交互。
- **集成部署时**: 若立交桥 gateway/ 已接入 NewAPI/Sub2API本系统通过 gateway/ 的内部路由接口操作上游状态。
### 对外接口契约
- 必须提供 OpenAPI 3.0 接口文档,确保 NewAPI/Sub2API 开发者可以独立接入。
- 接口路径前缀默认为 `/api/v1/ai-ops/`,集成运行时可通过配置改为 `/internal/ai-ops/`
---
## 11. 阶段门控结论
### 当前状态
- 需求范围已明确界定In Scope / Out of Scope 清晰。
- 验收标准已精确到可测试粒度,包含时间、数值、错误码、状态等维度。
- 异常流程、边缘流程、失败路径已全面覆盖。
- 上线策略、灰度方案、回滚路径、埋点检查已明确。
- 技术栈与集成约束已明确(统一 Go 标准库、独立/集成双模式、NewAPI/Sub2API 适配)。
- 北极星指标与失败判定线已量化。
- 依赖与风险已识别,缓解措施已制定。
### 门控结论
可进入 TechLead 阶段。
> 备注TechLead 阶段需要完成的事项
> 1. 确认现有 gateway/internal/metrics/ 与 gateway/internal/alert/ 的契约可延续性。
> 2. 确认存储层技术选型Prometheus / VictoriaMetrics / 自建时序库)。
> 3. 确认通知渠道具体实现方案Webhook / 飞书 / 邮件)。
> 4. 确认审计日志与回滚是否复用 supply-api/ 既有审计能力还是独立实现。
> 5. 确认角色权限体系是否复用平台统一认证系统。
---
## 自检清单
- [x] 已明确真实目标,不是只复述功能
- [x] 已写清 In Scope / Out of Scope
- [x] 每个 AC 都可被 QA 或测试用例直接验证
- [x] 已覆盖异常流、边缘流与失败路径
- [x] 已补齐上线、运营、监控、回滚要求
- [x] 已定义商业化/价值闭环
- [x] 已明确成功指标与失败判定线
- [x] 已明确当前可进入 TechLead 阶段
- [x] 没有使用"优化、支持、友好、尽量、快速"等模糊词替代明确要求
---
---
## 附:供应商智能切换(参考 FreeRide 思路)
### 背景
[FreeRide](https://github.com/openclaw/skills/tree/main/skills/shaivpidadi/free-ride) 是 OpenClaw 的一个 Skill 插件,核心功能:
- 实时拉取 OpenRouter 免费模型列表,按 ELO 评分排序
- 自动选择最强模型作为主模型
- 配置 5 个高质量备用模型作为 Fallback 链
- 主模型限速 → 自动切换下一个,用户无感知
- 非破坏性配置更新,只改 model 相关字段
FreeRide 的设计哲学(自动选择 + 智能降级)对 AI-Ops 的供应商切换场景有直接参考价值。
### 智能供应商切换 vs FreeRide
| 维度 | FreeRide | AI-Ops 供应商切换 |
|------|----------|-------------------|
| **目标用户** | 个人用户/极客 | 企业运维团队 |
| **模型来源** | OpenRouter 免费模型 | 多供应商中转 API |
| **核心价值** | 零成本用最强模型 | 供应商故障无感切换 |
| **Failover 粒度** | 模型级别 | 供应商级别 |
| **切换策略** | 固定轮询 | 成本优先/质量优先/延迟优先/手动 |
| **监控告警** | 无 | 多渠道告警 + 运维大盘 |
| **用量统计** | 无 | 成本分摊到部门/项目 |
| **自愈能力** | 仅切换 | 切换 + 通知 + 锁定 + 升级 |
### 供应商切换策略
| 策略 | 决策依据 | 适用场景 |
|------|----------|----------|
| **成本优先** | input_cost + output_cost 最低 | 预算敏感型业务 |
| **质量优先** | 最近 24h 成功率最高 | 高可用要求业务 |
| **延迟优先** | 最近 probe 响应时间最低 | 低延迟要求业务 |
| **手动** | 每次切换需人工确认 | 高风险变更管控 |
### 设计约束(继承 HLD
- 切换后冷却期默认 300s防止震荡同一供应商反复切换
- 每次切换写入审计日志(切换时间、原供应商、目标供应商、切换原因)
- 供应商配置更新采用原子替换(写临时文件 → 验证 → 原子替换),防止配置损坏
- 切换执行后立即验证新供应商可服务性,失败则回退并升级告警
### 参考实现
供应商探针任务(每 5 分钟执行):
```go
type SupplierProbe struct {
SupplierID string `json:"supplier_id"`
ProbeAt time.Time `json:"probe_at"`
LatencyMs int `json:"latency_ms"`
ErrorRate float64 `json:"error_rate"` // 0.0~1.0
ELOHistory []float64 `json:"elo_history"` // 最近7天 ELO 趋势
}
```
供应商 Fallback 链配置:
```go
type SupplierChain struct {
Model string `json:"model"`
Primary string `json:"primary"` // 主供应商ID
Fallbacks []string `json:"fallbacks"` // 备用供应商列表(按优先级排序)
CooldownSec int `json:"cooldown_sec"` // 冷却秒数默认300
Strategy string `json:"strategy"` // cost/quality/latency/manual
}
```

272
prd/competitor-analysis.md Normal file
View File

@@ -0,0 +1,272 @@
# AI-Ops 智能运维 — 竞品分析报告
## 1. 竞品范围
| 竞品 | 项目地址 | 技术栈 | 相关能力 |
|-------|---------|--------|---------|
| **LiteLLM** | berriai/litellm | Python/FastAPI | 告警系统SlackAlerting、健康检查、自动路由、容灾切换 |
| **Sub2API** | Wei-Shaw/sub2api | Go/Gin/Ent | 基础代理健康、用量统计 |
| **NewAPI / OneAPI** | Calcium-Ion/new-api | Go/Gin/GORM | 渠道监控、状态切换 |
---
## 2. 核心能力对标
### 2.1 告警系统
#### LiteLLM SlackAlerting实现最完整
LiteLLM 的告警系统是当前开源 LLM Gateway 中最成熟的,其核心设计包括:
**告警类型12+种)**:
```python
class AlertType(str, Enum):
# LLM 相关
llm_exceptions = "llm_exceptions" # LLM 调用异常
llm_too_slow = "llm_too_slow" # 响应超时
llm_requests_hanging = "llm_requests_hanging" # 请求悬停
# 资源与成本
budget_alerts = "budget_alerts" # 预算超支
spend_reports = "spend_reports" # 消耗报告
failed_tracking_spend = "failed_tracking_spend" # 成本跟踪失败
# 数据库
db_exceptions = "db_exceptions" # 数据库异常
# 运营报告
daily_reports = "daily_reports" # 每日运营报告
# 部署与模型
cooldown_deployment = "cooldown_deployment" # 部署冷却
new_model_added = "new_model_added" # 新模型上线
# 故障与容灾
outage_alerts = "outage_alerts" # 模型故障
region_outage_alerts = "region_outage_alerts" # 区域故障
fallback_reports = "fallback_reports" # 容灾切换报告
```
**关键技术细节**:
- **批量化与性能优化**: 采用 `CustomBatchLogger` 基类告警批量发送10秒或超过 X 事件触发),避免高并发下的性能瓶颈
- **消息摘要Digest模式**: 支持按 `(alert_type, model, api_base)` 聚合告警,默认 24h 窗口期,避免滥发
- **多渠道分发**: 支持按告警类型路由到不同 Webhook`alert_to_webhook_url = {AlertType.outage_alerts: "#ops-channel", AlertType.budget_alerts: "#finance-channel"}`
- **告警阈值细分**: 悬停检测阈值可配置(默认 300s故障检测分为 minor5 次错误)和 major10 次错误)
- **区域故障检测**: 同一区域内 2+ 模型报告错误时触发 region_outage_alerts
- **告警 TTL 缓解**: budget_alert_ttl=24houtage_alert_ttl=1min防止重复骚扰
**健康检查端点**:
- `/health` — 综合健康(可选择性检查已配置模型)
- `/health/liveliness` / `/health/liveness` — 进程存活
- `/health/readiness` — 依赖就绪Redis、DB、Cache
- `/health/services?service=datadog` — 第三方服务健康
- `/health/history` — 历史健康状态
- `/health/latest` — 最新健康状态
- `/health/backlog` — 请求队列积压
- `/health/test_connection` — 测试特定模型连通性
#### Sub2API / NewAPI / OneAPI
- Sub2API: 仅提供基础代理状态查询,无结构化告警系统
- NewAPI/OneAPI: 有渠道状态监控,支持切换上游,但缺乏自动化告警和根因分析
### 2.2 自动路由与容灾
#### LiteLLM Router Strategy
LiteLLM 提供多种路由策略:
- **lowest_latency**: 选择响应最快的部署
- **lowest_cost**: 选择成本最低的部署
- **lowest_tpm_rpm**: 选择 TPM/RPM 最低的部署
- **least_busy**: 选择当前负载最低的部署
- **auto_router**: 基于语义路由(使用 `SemanticRouter` 和向量编码器匹配请求到最适合的模型)
- **budget_limiter**: 按 key/team 限制预算
**容灾机制**:
- **Cooldown**: 当部署连续失败时自动进入 cooldown 状态,暂时从路由池中移除
- **Fallback**: 主模型失败时自动切换到备用模型
- **Retries**: 配置重试次数和策略
### 2.3 成本跟踪
#### LiteLLM Cost Tracking
- 维护 `model_prices_and_context_window_backup.json` 主数据库,包含所有支持模型的 input_cost_per_token / output_cost_per_token
- 支持分层定价tiered_pricing、批量定价batch pricing、音频 token 定价
- 每次请求完成后计算并记录成本
- 支持自定义成本覆盖
#### Sub2API Pricing Service
- 从 LiteLLM 上游镜像 `model_prices_and_context_window.json`
- 支持模型家族回退(如 gpt-5.3 未知时回退到 gpt-5.1
- 本地 fallback 文件缓存
- 支持动态价格字段优先级
---
## 3. 差距分析(我们的机会)
| 能力维度 | 竞品现状 | 我们的机会 |
|---------|---------|---------|
| **告警渠道** | LiteLLM 仅支持 Slack/Webhook无企微/钉钉/飞书 | 全面支持中国企业常用渠道 +通用 Webhook |
| **根因分析** | 竞品仅提供原始错误数据,无自动根因分析 | AI 驱动的根因分析,自动归类故障类型 |
| **自愈能力** | LiteLLM 仅有 cooldown 和 fallback无可编程自愈 | 可编程自愈脚本,支持自定义操作(切换供应商、限流、重启) |
| **智能升级** | 竞品告警阈值是静态配置 | 基于历史数据自动建议/调整阈值 |
| **多维度健康** | LiteLLM 健康检查偏重连通性 | 连通性 + 配额 + 延迟 + 错误率 + 成功率综合健康指标 |
| **运维大盘** | LiteLLM 有 daily_reports但无运维大盘概念 | 统一运维大盘,汇总所有指标与异常 |
| **预测性运维** | 竞品均为事后告警 | 基于趋势预测的预警(如配额耗尽预测、故障趋势预测) |
---
## 4. 对产品规划的影响
### 强化方向
1. **告警系统设计参考 LiteLLM 的多类型分类**,但扩展为 15+ 种类型,增加:
- 配额耗尽预警(监测余额趋势)
- 响应时间 P99 突变预警
- 模型质量跳水预警
- 安全异常预警(密钥泄露、异常访问模式)
2. **批量化与摘要机制**参考 LiteLLM 的 `CustomBatchLogger` 和 DigestEntry 设计:
- 告警批量发送(含压缩)
- 按 (alert_type, model, api_base) 聚合
- 可配置摘要窗口(默认 24h支持 5min/1h/24h
3. **健康检查端点**参考 LiteLLM 的多层级设计:
- `/health` 综合健康
- `/health/live` 进程存活
- `/health/ready` 依赖就绪
- `/health/backlog` 队列积压
- `/health/test_connection` 模型连通性测试
4. **自愈能力**超越竞品:
- LiteLLM 的 cooldown 只是"移除故障节点",我们应提供"程序化自愈",允许用户配置自定义动作
- 参考 LiteLLM 的 fallback 机制,但增加"智能切换策略"(根据成本/质量/位置综合决策)
### 新增差异化能力
5. **AI 驱动的根因分析**:竞品不具备,是核心差异化
6. **运维大盘概念**:竞品无统一运维视图,我们应提供类似 Grafana Dashboard 的一体化运维大盘
7. **预测性运维**:基于时序分析的预警,而不是事后告警
---
## 5. 对技术规划的影响
### 应引入的设计模式
| 设计模式 | 来源 | 应用场景 |
|---------|------|---------|
| **CustomBatchLogger** | LiteLLM | 告警事件批量处理,避免高并发下的 IO 瓶颈 |
| **DualCache** | LiteLLM | 告警状态缓存(内存 + Redis确保告警可靠性 |
| **DigestEntry** | LiteLLM | 告警聚合,避免滥发 |
| **AlertType + AlertTypeConfig** | LiteLLM | 可扩展的告警类型系统,支持按类型配置不同策略 |
| **OutageModel + ProviderRegionOutageModel** | LiteLLM | 故障状态机,支持模型级和区域级故障检测 |
| **DeploymentMetrics** | LiteLLM | 每部署的运行时指标failed_request, latency_per_output_token |
| **Cooldown 机制** | LiteLLM | 故障部署自动移除,作为自愈动作的一种 |
### 技术避坑
1. **不重复造轮子**: LiteLLM 的告警系统已经很成熟,我们不需要重新设计整套机制,而是将其思想迁移到 Go 技术栈,并增加本地化适配
2. **性能优先**: LiteLLM 的批量处理机制是关键,告警系统不能成为性能瓶颈
3. **可观测性**: 参考 LiteLLM 的健康端点设计,确保所有依赖都有对应的就绪检查
---
## 附FreeRide — OpenClaw 自动模型切换插件(市场调研)
### 1. 基本信息
| 项目 | 内容 |
|-----|------|
| **名称** | FreeRide |
| **类型** | OpenClaw Skill插件 |
| **定位** | 自动模型选择 + Fallback 链管理 |
| **技术栈** | Shell + OpenClaw 原生 API |
| **开源地址** | `openclaw/skills/tree/main/skills/shaivpidadi/free-ride` |
| **安装方式** | `/learn @openclaw/freeride` |
### 2. 核心功能
```
FreeRide 做的事:
1. 实时拉取 OpenRouter 免费模型列表30+ 免费模型)
2. 按社区 ELO 评分排序,选出当前最强免费模型
3. 将最强模型设为主模型
4. 自动配置 5 个高质量备用模型作为 Fallback 链
5. 主模型限速 → 自动切换下一个,用户无感知
6. 只修改 openclaw.json 中的 model 相关字段,不触碰其他配置
```
### 3. 实测数据
- **每日完成**200~500+ 次高质量对话
- **覆盖场景**:写文章、代码调试、数据分析、日常聊天
- **成本**:零(全部使用 OpenRouter 免费额度)
### 4. 技术分析
#### 4.1 设计哲学
| 维度 | FreeRide | LiteLLM | 我们的 AI-Ops |
|-----|---------|---------|--------------|
| **目标用户** | 个人用户/极客 | 企业 | 企业运维团队 |
| **模型来源** | OpenRouter 免费模型 | 任意 OpenAI兼容API | 多供应商中转 |
| **核心价值** | 零成本用最强模型 | 企业级稳定性 | 供应商智能切换 + 运维自动化 |
| **Failover 机制** | 简单的模型列表轮询 | cooldown + fallback + retries | 智能化 failover + 自愈 |
#### 4.2 技术亮点
**亮点1实时模型排行**
```bash
# FreeRide 实时拉取 OpenRouter 免费模型,按 ELO 排序
curl -s "https://openrouter.ai/models?free=true" | jq '.data | sort_by(.rating) | reverse'
```
**借鉴点**:可用类似思路监控各供应商的模型质量变化,自动发现"性价比突变"模型
**亮点2非破坏性配置更新**
```bash
# FreeRide 只更新 model 相关的 key
jq ".model = \"$BEST_MODEL\"" openclaw.json > tmp.json && mv tmp.json openclaw.json
```
**借鉴点**:热切换配置时,先写入临时文件再原子替换,避免损坏配置文件
**亮点3Fallback 链自动编排**
```bash
# FreeRide 默认配置 5 个备用模型
FALLBACK_MODELS="model_a,model_b,model_c,model_d,model_e"
```
**借鉴点**:供应商层面也可以做类似的多级 fallback而不是单层 failover
#### 4.3 不足与局限
| 问题 | 说明 |
|-----|------|
| **无监控告警** | FreeRide 没有告警概念,模型挂了用户需要自己发现 |
| **无用量统计** | 没有成本追踪,不知道花了多少钱 |
| **无自愈脚本** | 只是切换模型,不能执行重启/通知等操作 |
| **依赖 OpenRouter** | 只适合 OpenRouter中国用户无法直接使用 |
| **免费模型质量不稳定** | OpenRouter 免费模型 ELO 排名波动大,不适合企业生产 |
### 5. 对 AI-Ops 的借鉴
#### 5.1 可复用的设计
| FreeRide 思路 | AI-Ops 如何借鉴 |
|--------------|----------------|
| 实时模型排行 | **供应商模型质量监控**:定时拉取各中转的模型列表,按响应速度/成功率排序 |
| Fallback 链 | **多级降级策略**:主供应商 → 备供应商 → 降级回复(而不是简单的一层 failover |
| 非破坏性配置 | **配置热切换规范**:所有配置更新走原子替换,不直接改原文件 |
| 限速自动切换 | **速率限制自适应**:监控各供应商 TPM/QPM 限制,预估耗尽时间并提前切换 |
#### 5.2 AI-Ops 应超越 FreeRide 的地方
```
FreeRide 做到了: AI-Ops 应做到:
✅ 模型自动切换 ✅ 供应商整体健康度评估(不止模型)
✅ Fallback 链 ✅ 切换策略可配置(成本优先/质量优先/延迟优先)
❌ 无监控告警 ✅ 多渠道告警(企微/飞书/钉钉/Slack
❌ 无用量统计 ✅ 成本分摊到部门/项目/用户
❌ 无自愈能力 ✅ 可编程自愈(切换 + 通知 + 锁定 + 升级)
❌ 无运维大盘 ✅ 统一运维视图(健康/配额/成本/故障)
```
### 6. 结论
FreeRide 是一个优秀的**个人用户工具**,核心价值是"零成本 + 自动切换"。它的设计哲学(自动选择 + 智能降级)对 AI-Ops 有参考价值,但企业级需求(监控/告警/成本/自愈)是它完全不覆盖的领域。
**AI-Ops 的差异化定位**:不做 FreeRide 的企业版,而是做一个有**自愈能力的智能运维平台**FreeRide 的思路是其中一个模块(供应商切换策略)。