Files
qihuaiflow/docs/ITERATION_PLAN.md
QihuAI Design f9c8bda6e0
CI / gate (push) Has been cancelled
docs-add-iteration-plan
2026-07-27 09:26:16 +08:00

287 lines
12 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.
# 七虎AI PaaS 平台 — 迭代优化可执行方案 v1.0
> **来源**: 基于 `AI_PaaS_Platform_Analysis_and_Execution_Plan v2.md`(元宝深度分析文档)
> **日期**: 2026-07-27
> **原则**: P0 先做、P1 跟进、P2 规划评估;每 Phase 一个交付周期
---
## 总览:20 项行动按 4 个 Phase 分组
```
Phase 0 (本周): 4 P0 项 — 基础设施补全,投入产出比最高
Phase 1 (2周内): 6 P0+P1 项 — 核心竞争力构建
Phase 2 (1月内): 5 P1 项 — 体验与护城河加固
Phase 3 (评估): 5 P2 项 — 按需投入
```
---
## Phase 0:基础设施补全(本周,4 项 P0)
这些是文档反复强调的"先决条件"——不做,后面的都没法高效开展。
### #0A. 多租户隔离(PG RLS + tenant_id)
**现状**: 平台无真正的多租户隔离。所有用户共享同一套数据,仅靠 JWT 区分身份。
**目标**: 启用 PostgreSQL Row Level Security,所有业务表加 `tenant_id`。
**工作量**: 3 天
**实施**:
- 核心表(conversations/messages/market_apps/skill_instances)加 `tenant_id UUID` 列
- 启用 `ALTER TABLE ... ENABLE ROW LEVEL SECURITY`
- 创建 RLS 策略:`USING (tenant_id = current_setting('app.current_tenant')::UUID)`
- FastAPI middleware 注入 `app.current_tenant` 从 JWT 提取
- 知识库/资产存储目录结构改为 `/workspace/{tenant_id}/{user_id}/`
### #0B. LiteLLM Proxy — 统一 AI 网关
**现状**: 自定义 failover(`_try_models` 列表 + `continue` 切换),无成本追踪、无限流、无缓存。
**目标**: 引入 LiteLLM Proxy 作为网关,客户端零改动。
**工作量**: 3 天
**实施**:
- 部署 `litellm` 容器,配置 `litellm_config.yaml`
- 映射现有 4 个 provider(SiliconFlow/MiMo/AGNES/DeepSeek)
- 启用 Virtual Keys(按用户/租户分发 API Key,追踪花费)
- 启用 RPM/TPM 限流 + 加权负载均衡(替代 try-except failover)
- 启用 Redis 语义缓存(相同 prompt 不重复计费)
- litellm 端点替换 `DATABASE_URL` 配置中的模型 endpoint
### #0C. Meilisearch — 技能市场搜索引擎
**现状**: 技能市场搜索依赖 PostgreSQL `ILIKE` 查询,无中文分词、无 BM25、无分面筛选。
**目标**: 部署 Meilisearch 容器,替代 PG 全文搜索。
**工作量**: 2 天
**实施**:
- 部署 `meilisearch` 容器(含 jieba 中文分词)
- 创建 `market_apps` 索引(name/description/tags/category/capability/publisher)
- 全量同步现有 115 个技能到 Meilisearch
- 前端 MarketPage 搜索框改为调用 `/search` API(sub-50ms 响应)
- 支持 facets(category/capability/tags)+ 排序(downloads/rating/date)
- 后续可用 Tenant Tokens 做多租户搜索隔离
### #0D. 角色模型扩展(5 级 + 用户组)
**现状**: 仅 admin/user 两级,无 user groups、无模型/技能按组分配。
**目标**: 5 级角色 + 用户组机制。
**工作量**: 3 天
**实施**:
- 角色:super_admin / admin / developer / user / guest
- 用户组(Groups):用户可属于多个组;组级模型配额和技能可见性
- 用户组 API(CRUD + 成员管理)
- 前端 AdminLayout 角色判断(developer 可发布技能但不可管理用户)
---
## Phase 1:核心竞争力构建(2 周内,6 项 P0+P1)
### #1A. 技能真实执行器 — 3 个标杆技能 ⭐ 最重要
**现状**: `_execute_skill_tool()` 是"指令转发"——把 SKILL.md 的文字抄给 LLM,让 LLM "模拟执行"。这是平台最大短板。
**目标**: 落地真实执行器,3 个标杆技能跑通端到端。
**工作量**: 2 周
**实施**:
**Step 1: 执行器基础架构(3 天)**
- `SkillRuntime` 类:鉴权 → 创建工作区 → 调技能 API → 扣配额 → 存储产物 → 记录计量
- `SkillInstance` DB 模型:状态机(generating/ready/failed/archived)
- S3 兼容对象存储集成(MinIO 起步)
- 工作区隔离:`/workspace/{tenant_id}/{user_id}/{skill}/{instance_id}/`
**Step 2: 标杆技能 #1 — AI PPT 生成器(5 天)**
- 基于 dashi-ppt-skill 改造
- 适配层 API:`/api/generate` POST、`/api/export/pptx` GET、`/api/export/pdf` GET
- 输入:文本/文档 → LLM 生成大纲 → 渲染 HTML 幻灯片 → 导出 PPTX/PDF
- 预览图生成(headless Chrome 截图)
- 配额:Free 3次/天,Pro 50次/天
**Step 3: 标杆技能 #2 — SEO 优化助手(2 天)**
- 基于 marketing-skills 改造
- 输入:URL/关键词 → 分析 SERP → 输出 SEO 报告+优化建议
**Step 4: 标杆技能 #3 — AI 投研报告��2 天)**
- 基于 equity-research-skill 改造
- 输入:股票代码 → 财报分析 + DCF 估值 → 输出结构化投研报告
### #1B. 统一 SKILL.md Schema
**现状**: 技能元数据散乱,无统一格式/版本/权限/定价规范。
**目标**: 发布平台统一 SKILL.md 规范(9 大区块)。
**工作量**: 3 天
**实施**:
- Schema:name/version/author/description/capabilities/inputs/outputs/resource/permissions/dependencies/pricing
- 与现有 market_app DB 字段映射
- 自动解析器:`_parse_skill_content()` 增强,从 SKILL.md 提取结构
- 前端技能详情页显示结构化信息(输入/输出/配额/定价)
### #1C. 流式 Token 计费 + 实时余额
**现状**: 仅记录 Token 用量,无计费、无余额扣减、无配额提示。
**目标**: 实时 Token 计费 + 流式扣费 + 用户余额。
**工作量**: 5 天
**实施**:
- LiteLLM 集成后,每次调用自动获取 `usage.prompt_tokens + completion_tokens`
- 流式场景:累加 chunk 计数,`done` 事件时写入
- 用户余额表:`token_balances`
- 前端:对话中实时显示剩余 Token(顶部状态栏)
- 余额不足时提前拦截(不浪费一次模型调用)
### #1D. Agent 可视化编排画布 ⭐ 亮点
**现状**: Agent 编排靠 YAML 手写,无可视化界面。
**目标**: 基于 React Flow 的可拖拽编排画布。
**工作量**: 2 周
**实施**:
- 前端:React Flow 节点编辑器(节点库:LLM/Skill/MCP/External/Reduce/条件分支)
- 拖拽连线定义数据流
- 导出为 YAML → 对接现有 `run_graph()` 引擎
- 执行监控:实时高亮当前执行节点、查看输出
### #1E. 角色模型扩展(5 级 + 用户组)— 续 Phase 0D
(已在 Phase 0 中定义)
### #1F. 技能市场搜索 — 续 Phase 0C
(已在 Phase 0 中定义,Meilisearch)
---
## Phase 2:体验与护城河加固(1 月内,5 项 P1)
### #2A. 工具调用四级风险审批
**现状**: 仅 `tool_policy` 沙箱(白名单+预算+每轮上限),无操作风险分级。
**目标**: 参考 OpenWorker 的四级风险模型。
**工作量**: 3 天
**实施**:
- 风险等级:read / write_local / exec / external
- 每级定义默认行为(read 自动许可 / write_local 确认 / exec 审批 / external 管理员审批)
- 前端:高风险操作弹窗确认 + 审批后重试
- 审批队列:pending_approvals 表 + 管理员后台
### #2B. 引入 MemPalace 分层记忆
**现状**: 五类结构化记忆(实体/事实/偏好/决策/待办),无分层索引。
**目标**: Wing/Room/Drawer 分层索引(MemPalace)。
**工作量**: 1 周
**实施**:
- Wing = 用户级(跨所有对话)
- Room = 对话级(单次对话上下文)
- Drawer = 话题级(对话内特定话题)
- 跑 LongMemEval benchmark 量化召回率
### #2C. Loop 原语 + Verifier
**现状**: Agent 编排是 DAG 拓扑排序,无循环边、无验证器。
**目标**: 引入 Loop 原语(循环边 + 终止条件 + Verifier)。
**工作量**: 1 周
**实施**:
- `orchestrator.py` 支持循环边:`{"from": "verify", "to": "generate", "condition": "not_passed"}`
- Verifier 节点:判断目标是否达成的验证器
- 前端画布(#1D)支持画循环边
### #2D. executor 沙箱升级
**现状**: executor 容器基于 Docker,无严格内核隔离。
**目标**: gVisor 或 Firecracker 微虚拟机隔离。
**工作量**: 3 天
**评估**: gVisor 集成最简单(Docker 的 `--runtime=runsc`)
### #2E. 技能 SDK + 脚手架 CLI
**现状**: 技能开发者手动创建目录和 SKILL.md。
**目标**: `qihu-skill` CLI 脚手架。
**工作量**: 1 周
**实施**:
- `qihu-skill init my-skill` → 生成目录结构 + SKILL.md 模板
- `qihu-skill validate` → 校验 SKILL.md Schema
- `qihu-skill publish` → 打包上传到平台技能市场
- `qihu-skill dev` → 本地调试(Mock SkillRuntime)
---
## Phase 3:评估后按需投入(5 项,P2)
### #3A. Semantica 决策溯源
- 场景:金融/医疗/法律客户要求可解释 AI
- 工作量:评估 3 天 + 集成 1 周
- 决策标准:是否有付费企业客户明确要求
### #3B. Langfuse/LangSmith Agent 轨迹
- 场景:开发者调试 Agent 执行、产品优化
- 工作量:3 天集成
- 决策标准:Agent 可视化画布上线后,按需求优先级
### #3C. Agent 广播网络(EigenFlux)
- 场景:Agent 间自动发现与协作
- 工作量:评估
- 决策标准:多 Agent 协作需求明确后
### #3D. 前端暗色模式
- 工作量:3 天
- 决策标准:用户体验迭代批次
### #3E. 移动端适配
- 工作量:2 周
- 决策标准:移动端用户数据达标后
---
## 优先级总表(20 项排序)
| # | 行动 | 模块 | 优先级 | 工作量 | 依赖 |
|---|------|------|--------|--------|------|
| 1 | LiteLLM Proxy 统一 AI 网关 | 模型路由 | P0 | 3d | - |
| 2 | Meilisearch 技能市场搜索 | 搜索 | P0 | 2d | - |
| 3 | PG RLS + tenant_id 多租户隔离 | 多租户 | P0 | 3d | - |
| 4 | 角色 5 级 + 用户组 | 多租户 | P0 | 3d | #3 |
| **5** | **3 个标杆技能真实执行器** | **技能市场** | **P0** | **2w** | **-** |
| 6 | SKILL.md 统一 Schema | 技能市场 | P0 | 3d | - |
| 7 | 流式 Token 计费 + 实时余额 | 变现 | P0 | 5d | #1 |
| **8** | **Agent 可视化编排画布** | **Agent** | **P1** | **2w** | **-** |
| 9 | Loop 原语 + Verifier | Agent | P1 | 1w | #8 |
| 10 | 工具四级风险审批 | 安全 | P1 | 3d | - |
| 11 | executor gVisor 升级 | 安全 | P1 | 3d | - |
| 12 | MemPalace 分层记忆 | RAG | P1 | 1w | - |
| 13 | 技能 SDK + 脚手架 CLI | 技能市场 | P1 | 1w | #6 |
| 14 | LongMemEval 基准测试 | RAG | P1 | 2d | - |
| 15 | 技能审核流水线 | 技能市场 | P2 | 1w | #6 |
| 16 | 分润模型 + 开发者结算 | 变现 | P2 | 1w | #7 |
| 17 | Langfuse Agent 轨迹 | 可观测 | P2 | 3d | #1 |
| 18 | Semantica 决策溯源 | 安全 | P2 | 评估 | - |
| 19 | 前端暗色模式 | UI | P2 | 3d | - |
| 20 | 移动端适配 | UI | P2 | 2w | - |
---
## 竞品对比更新(基于分析文档)
| 维度 | 七虎AI 现状 | Open WebUI | Dify | 差距/优势 |
|------|------------|------------|------|----------|
| RBAC | admin/user 2 级 | Admin/User/Pending + Groups | 内置多租户 | 🔴 落后 |
| 向量库 | 仅 pgvector | 9 种可插拔 | 多种 | 🟡 够用 |
| RAG 管线 | 单路向量 | 3 阶段 BM25+向量+Rerank | 混合检索 | 🟡 待增强 |
| 插件体系 | Skills+MCP | 5 类插件 | 工作流节点 | 🟡 够用 |
| Token 计量 | 仅记录 | 实时+按模型+仪表盘 | 内置 | 🔴 落后 |
| 模型路由 | try-except | Pipe 路由 | 内置 failover | 🟡 待 LiteLLM |
| Agent 编排 | DAG 图引擎 | 无 | 工作流画布 | 🟢 领先 |
| 技能市场 | 上架-安装-执行 | 无 | 无 | 🟢 护城河 |
---
## 当前已完成(对标分析文档的"已修复弱点")
这些本期会话已修复,分析文档第九节引用:
| 修复 | 状态 | 对应文档章节 |
|------|------|------------|
| AGENT_GUIDE 标准化 | ✅ | §九 - 固定弱点已修复 |
| MCP 官方 SDK + Schema 转换 | ✅ | §九 |
| Tool Policy 白名单+预算+每轮上限 | ✅ | §九 |
| MiMo Token Plan 适配 | ✅ | - |
| `overflow-x: hidden` 响应式修复 | ✅ | - |
| 架构蓝图 `ARCHITECTURE.md` | ✅ | - |
---
> **执行指令**: 告诉我 "执行 Phase 0" 开始落地。每完成一项在对应 checkpoint 勾掉。
> **上传到 Gitea**: 本方案同步上传到 `qihuaiflow/docs/ITERATION_PLAN.md`