142 lines
5.6 KiB
Markdown
142 lines
5.6 KiB
Markdown
# PMFlow 三引擎统一方案(v2)
|
||
|
||
## 1. 目标
|
||
- 用 3 个引擎达到“质量/成本/稳定性”平衡。
|
||
- 飞书与内置 AI 管家使用同一智能链路,避免 IQ 不一致。
|
||
- 所有系统操作(不止创建需求)由 AI 覆盖,但写库/副作用必须可控可审计。
|
||
- 消除多控制面冲突(PMFlow 配一套、OpenClaw 配一套、规则文件又一套)。
|
||
|
||
## 2. 先把名词说清楚
|
||
当前不是“3 个 agent”,而是:
|
||
- 2 个 agent
|
||
- PMFlow Orchestrator Agent:流程编排与执行(唯一执行入口)。
|
||
- OpenClaw Reasoning Agent:模型网关与推理。
|
||
- 3 个引擎(模型层)
|
||
- Engine-L(Low):低成本/低延迟,处理执行态与轻分类。
|
||
- Engine-H(High):高推理,处理复杂问答/规划。
|
||
- Engine-S(Safety):兜底引擎,处理故障与降级。
|
||
|
||
## 3. 单一控制面原则(必须)
|
||
只保留一个“模型真相源(Source of Truth)”:
|
||
- 推荐:OpenClaw 作为唯一模型控制面(模型、fallback、配额、可用性)。
|
||
- PMFlow 只做函数路由和执行状态机,不再直连多个云厂商。
|
||
|
||
> 结论:PMFlow 不再同时保存 GLM/OpenAI/DeepSeek 直连 key 参与主路由;
|
||
> PMFlow 统一走 OpenClaw 网关。
|
||
|
||
## 4. 三引擎职责分配(推荐)
|
||
- Engine-L:`zai/glm-4-flash`
|
||
- 场景:执行态分类、信号抽取、简短回执、轻量意图识别。
|
||
- Engine-H:`minimax/MiniMax-M2.5`
|
||
- 场景:复杂问答、多约束规划、任务编排、项目方案生成。
|
||
- Engine-S:`deepseek/deepseek-chat`(或你可用的稳定备份模型)
|
||
- 场景:H 不可用/超时/限流后的稳定兜底。
|
||
|
||
## 5. 路由矩阵(按 function_name)
|
||
### 5.1 走 Engine-L
|
||
- `feishu_level_classification`
|
||
- `feishu_signal_extraction`
|
||
- `rag_intent_classification`
|
||
- `classify_intent`
|
||
- `feishu_humanized_reply`(仅咨询态;执行态优先模板)
|
||
|
||
### 5.2 走 Engine-H
|
||
- `adaptive_rag_answer`
|
||
- `feishu_project_prefill`
|
||
- `feishu_task_orchestration`
|
||
- `generate_task_breakdown`
|
||
- `generate_charter_from_signal`
|
||
- `decompose_tasks_from_charter`
|
||
- `recommend_assignees_for_task`
|
||
- `evaluate_model_requirement`
|
||
- `calculate_alignment_score`
|
||
- `detect_cognitive_conflicts`
|
||
- `rag_db_project_semantic_retrieval`
|
||
- `workload_optimize_prompt`
|
||
- `analyze_cost_roi`
|
||
|
||
### 5.3 走 Engine-S(故障兜底)
|
||
- 触发条件:`Engine-L/H` 超时、5xx、限流、空响应、无效结构化输出。
|
||
- 行为:单次兜底重试 + 记录 `routing_decision=fallback_safety_engine`。
|
||
|
||
## 6. “低阶答不上来 -> 高阶接管”硬规则
|
||
已建议启用:
|
||
- 对低阶函数结果做“不可答”检测(如“信息不足/无法回答/不知道”)。
|
||
- 命中后自动升级到 High-tier 再请求 1 次。
|
||
- 若 High-tier 也失败,最后走 Safety-tier。
|
||
|
||
优先级链:
|
||
`Engine-L -> Engine-H -> Engine-S -> 固定降级模板`
|
||
|
||
## 7. 飞书与内置 AI 管家一致性
|
||
两入口统一走同一条链路:
|
||
- `RECEIVED -> CLASSIFIED -> ROUTED -> COMMITTED -> REPLIED`
|
||
- 执行态:禁自由文本,固定模板。
|
||
- 咨询态:允许文本回答,但同样走统一路由与审计。
|
||
|
||
这样飞书和内置管家不会再出现“一个聪明一个笨”的模型漂移。
|
||
|
||
## 8. 全功能 AI 操作覆盖(不止建需求)
|
||
建立 `Operation Catalog`,每个操作都必须有:
|
||
- `operation_code`
|
||
- `input_schema`(Pydantic strict)
|
||
- `rbac_policy`
|
||
- `idempotency_key`
|
||
- `audit_fields`
|
||
- `side_effect_guard`
|
||
|
||
覆盖范围:
|
||
- 项目:create/update/archive/reopen
|
||
- 任务:create/update/assign/prioritize/status_transition/delete
|
||
- 人员:role/workload/availability
|
||
- 知识库:doc/chunk/link/reindex
|
||
- 通知:create/ack/close
|
||
- 文件:白名单路径写入(禁止任意路径)
|
||
|
||
注意:LLM 只产出结构化意图;真正写库必须由 Tool 层执行。
|
||
|
||
## 9. 推荐配置模板
|
||
|
||
### 9.1 PMFlow `.env`(统一走 OpenClaw)
|
||
```env
|
||
LLM_PROVIDER=openai
|
||
OPENAI_BASE_URL=http://openclaw:18789/v1
|
||
OPENAI_API_KEY=<OPENCLAW_GATEWAY_TOKEN>
|
||
|
||
OPENCLAW_ROUTING_ENABLED=true
|
||
OPENCLAW_ROUTING_RULES_PATH=/app/backend/.openclaw/pmflow-routing-rules.json
|
||
|
||
LLM_MIXED_ROUTING_ENABLED=false
|
||
LLM_LOW_TO_HIGH_ESCALATION_ENABLED=true
|
||
```
|
||
|
||
### 9.2 OpenClaw Agent(main)
|
||
- Primary model:`zai/glm-4-flash`(Engine-L)
|
||
- Fallbacks:`minimax/MiniMax-M2.5,deepseek/deepseek-chat`
|
||
|
||
> 如果你要严格“低->高->安全”,可在 OpenClaw 路由中按函数直接指定模型,fallback 只做同层灾备。
|
||
|
||
### 9.3 PMFlow 路由规则(关键)
|
||
- 同一文件统一管理:`backend/.openclaw/pmflow-routing-rules.json`
|
||
- 生产发布必须过 lint + replay gate。
|
||
|
||
## 10. 安全边界(必须守)
|
||
- 执行态不允许自由文本动作建议驱动写库。
|
||
- 所有写操作必须经过 schema 校验;失败直接模板降级,不猜测。
|
||
- 事务与副作用解耦:先 commit,再 outbox 回复。
|
||
- 每条请求全链路 trace:可追溯“模型选择 -> 操作执行 -> 回执结果”。
|
||
|
||
## 11. 落地步骤(按优先级)
|
||
1. 统一控制面:PMFlow 改为只调用 OpenClaw 网关。
|
||
2. 清理直连模型 key 的主路径,仅保留应急开关。
|
||
3. 完整补齐 function_name 路由矩阵(L/H/S)。
|
||
4. 启用低阶失败自动升级高阶(已具备,可保持开启)。
|
||
5. 扩展 Operation Catalog 覆盖全系统操作。
|
||
6. 回放测试扩展到“多操作写库场景”。
|
||
|
||
## 12. 验收标准
|
||
- 飞书与内置管家:同问题同输入,模型决策一致(允许渠道文案差异,不允许能力差异)。
|
||
- 执行态回复无“教程/curl”污染。
|
||
- 回放集通过率 100%,且 `DB + route_status + reply_text` 一致。
|
||
- 任一引擎故障时,系统可自动降级不中断主流程。
|