Files
AiPaas/应用服务接入规范_可行性方案.md
T
2026-07-27 09:56:20 +08:00

33 KiB
Raw Blame History

七虎 AI PaaS 平台 · 应用服务接入规范(可行性方案)

文档版本:v1.0.0
生成日期:2026-07-27
定位:七虎 AI PaaS 平台"应用服务"模块的接入标准、集成模式与落地路线图
前置依赖:本文件承接《AI_PaaS_Platform_Analysis_and_Execution_Plan.md》第五部分(七虎AI全面评估)的结论,将其"应用服务接入"从单点案例(MuMuAINovel)升级为平台级规范
目标读者:平台架构组、应用接入开发者、技能市场运营、安全审计


0. 背景与定位

0.1 为什么要做"应用服务接入规范"

七虎 AI PaaS 的定位是"AI 体验、办公提效、创收、自我提升的一站式交互平台"。平台的能力供给有三种形态:

形态 单位 执行环境 典型例子
技能(Skill) 提示词 + 脚本 + SKILL.md 平台 Agent 沙箱内执行 dashi-ppt-skill、SEO 优化、投研报告
应用服务(App Service) 独立可运行的应用 独立容器/子域名,单点登录接入 MuMuAINovel、OpenCut、next-ai-draw-io
IM Bot 消息驱动的长连接 Agent 平台 IM 网关内执行 微信 Bot、企微 Bot、飞书 Bot

"应用服务"是平台差异化最大的形态——它让第三方成熟的开源 AI 应用(小说创作、视频剪辑、绘图、求职……)一键接入平台,用户无需离开七虎 PaaS 即可使用,所有模型调用、Token 计量、订阅计费、会员权益都由平台统一管控。

0.2 本文件要解决的核心问题

  1. 什么样的开源项目适合接入? → 选型评估矩阵
  2. 接入分哪几档?每档改什么? → 三级集成深度模型
  3. 标准接入流程是什么? → 从选型到上线的 SOP
  4. 统一走平台的模型、计费、订阅,技术上怎么落地? → 架构模式 + 代码骨架
  5. 许可证风险怎么规避? → GPL/MIT/Apache 兼容策略
  6. 第一批接入哪些应用做样板? → 基于 Starred 列表的推荐清单

1. 候选应用选型评估矩阵

1.1 从 Starred 列表筛选的 6 个候选

结合你 GitHub starred 列表(259 个项目),按"是否独立可运行、是否有自托管能力、是否依赖 AI 模型、是否与平台定位契合"四要素,筛选出以下 6 个最适合做"应用服务"接入的候选:

# 项目 Stars 协议 技术栈 应用类型 接入价值
1 MuMuAINovel 新建 GPL-3.0 FastAPI + PG + React/AntD AI 小说创作 长文本创作,高 Token 消耗,验证订阅闭环
2 OpenCut 78.5K MIT Next.js + Rust/WASM + PG + Redis 视频剪辑 自媒体/短视频场景,MCP Server 规划中
3 next-ai-draw-io 33.8K Apache-2.0 Next.js + React AI 流程图/架构图 办公提效,开发者高频刚需
4 HyperFrames 37.5K Apache-2.0 Node.js + headless Chrome + FFmpeg HTML→MP4 视频渲染 课件/营销视频自动化生产
5 dashi-ppt-skill 4.1K MIT Node.js + React 渲染引擎 PPT 生成/编辑 办公提效标杆,已做本地优先
6 ai-job-search 26.4K MIT TypeScript + Python + LaTeX AI 求职流水线 个人提升场景,Drafter-Reviewer 范式

1.2 六维量化评估

对每个候选按 6 个维度打分(1-5),加权算出"接入适配总分":

维度 权重 评估要点
自托管能力 15% Docker 一键部署?有无官方镜像?
认证可替换性 20% 是否已有 OAuth/OIDC 适配器?是否易加 Casdoor?
AI 调用可代理 20% 是否走 OpenAI 兼容协议?能否改 BASE_URL?
许可证友好度 15% MIT/Apache 最友好,GPL 需外围集成规避
与平台定位契合 15% 是否覆盖技能市场/办公/创作/提效场景
社区活跃度 5% Stars、近期更新频率
数据隔离可行性 10% 是否用 PG/可加 tenant_id/RLS

1.3 评估结果

项目 自托管 认证 AI代理 协议 契合 社区 隔离 加权总分 推荐档位
MuMuAINovel 5 4(已有LinuxDO OAuth) 5(OpenAI兼容) 2(GPL) 5 3 5 4.25 🥇 首批·深度接入
OpenCut 5 3(需新增) 4(AI功能可代理) 5(MIT) 4 5 4 4.20 🥇 首批·标准接入
next-ai-draw-io 5 3 5(多Provider) 5(Apache) 5 4 4 4.40 🥇 首批·标准接入
HyperFrames 4 2(CLI为主) 5(走LLM生成HTML) 5(Apache) 4 4 3 3.95 🥈 第二批·轻量接入
dashi-ppt-skill 4(本地Node) 1(无登录) 5 5(MIT) 5 4 2 3.70 转"技能"更合适
ai-job-search 3(CLI为主) 1(无登录) 5 5(MIT) 4 5 2 3.55 转"技能"更合适

1.4 关键结论

首批接入 3 个应用做样板(按 ROI 排序):

  1. 🥇 MuMuAINovel —— 验证"平台统一模型+计费+订阅"的核心闭环(GPL 走外围集成规避)
  2. 🥇 next-ai-draw-io —— 协议最友好(Apache-2.0)、认证易加、办公提效高频刚需
  3. 🥇 OpenCut —— Stars 最高、MIT 最自由、视频场景与平台"自媒体/短视频创作"定位契合

第二批(2-3 个月后):HyperFrames(视频渲染 API 化后)、以及新出现的应用级项目。

dashi-ppt-skill 和 ai-job-search 不应作为"应用服务"接入——它们更适合作为"技能"上架到技能市场(本文件承接前份报告的第三部分改造方案)。这个判断很重要:应用服务 vs 技能的边界,下文第 2 节专门界定。


2. 核心概念:应用服务 vs 技能 vs IM Bot

接入前必须明确三者的边界,避免把"该做成技能的项目"错误升级为"独立应用",浪费容器资源。

2.1 决策树

一个新能力要上平台,先回答三个问题:
  ① 它有独立的前端 UI 吗?(用户要在独立界面里操作,不只是对话)
  ② 它需要长时间运行/持有状态吗?(如剪辑时间线、小说章节树、绘图画布)
  ③ 它单用户运行资源占用高吗?(视频渲染、GPU 合成、大型依赖)
  
  ①=否 → 做成【技能】                → 例:SEO 优化、投研报告、信息图生成
  ①=是 且 ②③ 中至少一个=是 → 做成【应用服务】 → 例:MuMuAINovel、OpenCut
  ①=是 且 ②③ 都=否 → 看交互模式:
       以"消息对话"为主 → 做成【IM Bot】  → 例:微信客服 Bot
       以"画布/编辑器"为主 → 做成【应用服务】 → 例:next-ai-draw-io

2.2 三类形态对比

维度 技能(Skill) 应用服务(App Service) IM Bot
执行环境 平台 Agent 沙箱 独立容器/子域名 平台 IM 网关
前端 无(对话即界面) 有(独立 Web UI) 消息气泡
模型调用 平台 Agent 引擎统一 走平台 AI 网关代理 Key 平台 Agent 引擎
计费单元 按次/按 Token 按应用订阅/按 Token 按会话/按 Token
数据归属 平台知识库 应用内 DB + 平台审计 平台消息存档
上架审核 SKILL.md + CI 完整应用安全审计 Bot 权限清单
典型生命周期 轻量,可热更新 重,需版本化部署 常驻,需心跳

3. 三级集成深度模型

所有应用接入分三档,按平台成熟度渐进式推进:

3.1 L1 · 浅集成(快速上线,3-5 天)

目标:单点登录打通,用户在平台内一键进入应用,但模型调用和计费暂由应用自理。

改造项:

改造点 应用侧 平台侧
认证 新增 Casdoor OIDC 适配器 在 Casdoor 注册应用、颁发 Client ID/Secret
会话 用 OIDC 回调建立本地会话 提供 /.well-known/openid-configuration
登录页 隐藏/禁用本地注册(可选) 平台前台"应用服务"卡片 → 跳转授权

适用场景:早期 MVP、应用尚未完成模型代理改造、快速扩充平台"应用数量"。

3.2 L2 · 中集成(核心目标,2-3 周)⭐ 推荐默认档

目标:模型调用统一走七虎 AI 网关,平台统一计量、计费、订阅校验。

改造项(在 L1 基础上增加):

改造点 应用侧 平台侧
AI 调用 OPENAI_BASE_URL 指向平台网关 AI 网关新增代理 Key 校验中间件
密钥 用平台颁发的 PLATFORM_PROXY_KEY 替代用户自配 Key market_apps.proxy_key 颁发与管理
计量 每次调用透传 X-Platform-User-Id 网关写入 token_usage_logs(app_id)
订阅 启动时检查平台订阅态(可选增强) 订阅校验端点 /api/v1/subscription/check
配额 超限时优雅降级(提示充值) 实时余额查询 API

这是推荐的默认接入档位——L1 只是过渡,L2 才是"平台价值"真正体现的地方。

3.3 L3 · 深集成(生产级,4-6 周)

目标:多租户数据隔离、应用内增值购买、审计合规、平台级可观测。

改造项(在 L2 基础上增加):

改造点 应用侧 平台侧
数据隔离 所有表加 tenant_id,启用 PG RLS 提供 RLS 策略模板
增值服务 高级功能走平台支付 API 支付渠道 + 分润结算
审计 关键操作上报平台 audit_logs 审计日志聚合查询
可观测 暴露 Prometheus 指标 平台 Grafana 统一看板
数据导出 GDPR 导出/删除接口 用户注销级联清理

3.4 档位选择决策表

应用特征 推荐档位 理由
新建/重构中、协议友好、核心标杆 L2 起步 一步到位,避免二次改造
成熟稳定、改动风险高(如 GPL 项目) L1 → L2 渐进 先外围集成,验证后再深化
内部工具/实验性 L1 即可 快速验证,不过度投入
金融/医疗/政企客户可达 必须 L3 合规刚需

4. 标准接入架构

4.1 整体拓扑

                        ┌──────────────────────────────┐
                        │        用户浏览器              │
                        └────────┬─────────────────────┘
                                 │
              ┌──────────────────┼──────────────────┐
              ▼                  ▼                  ▼
   ┌────────────────┐  ┌────────────────┐  ┌────────────────────┐
   │ 平台前台        │  │ 应用服务 A      │  │ 应用服务 B          │
   │ (已登录态)      │  │ (独立子域名)     │  │ (独立子域名)         │
   │                │  │                │  │                    │
   │ /apps/novel ───┼─►│ novel.qihuyun  │  │ drawio.qihuyun     │
   │ /apps/drawio ──┼─►│ OIDC 登录      │  │ OIDC 登录          │
   │ /apps/video ───┼─►│                │  │                    │
   └────────────────┘  └───────┬────────┘  └─────────┬──────────┘
                              │                      │
                              ▼                      ▼
                ┌────────────────────────────────────────────────┐
                │          七虎 AI 网关 (FastAPI)                 │
                │  ┌──────────────────────────────────────────┐  │
                │  │ 1. 代理 Key 校验 → 解析 user_id+app_id   │  │
                │  │ 2. 订阅/配额校验 → 拒绝或放行             │  │
                │  │ 3. 模型路由 (LiteLLM) → 上游模型          │  │
                │  │ 4. 计量写入 token_usage_logs              │  │
                │  │ 5. 流式响应返回                           │  │
                │  └──────────────────────────────────────────┘  │
                └────────────────────────────────────────────────┘
                              │
                              ▼
                ┌────────────────────────────────────────────────┐
                │   Casdoor (OIDC IdP)  │  PostgreSQL(RWS)      │
                │   Redis(会话/缓存)    │  Meilisearch(搜索)     │
                └────────────────────────────────────────────────┘

4.2 单应用接入时序(L2 档位)

用户                    平台前台              应用服务               Casdoor               AI 网关
 │                       │                    │                     │                    │
 │ 点击"AI小说创作"       │                    │                     │                    │
 │──────────────────────►│                    │                     │                    │
 │                       │ 302 → 应用授权入口  │                     │                    │
 │                       │───────────────────►│                     │                    │
 │                       │                    │ 重定向到 Casdoor     │                    │
 │                       │                    │────────────────────►│                    │
 │                       │                    │                     │                    │
 │          (用户已登录平台,静默授权)          │                     │                    │
 │                       │                    │ 302 + code ──────────────────────────────►│
 │                       │                    │                     │                    │
 │                       │                    │ 用 code 换 token                          │
 │                       │                    │────────────────────►│                    │
 │                       │                    │◄──── JWT + userinfo ─│                    │
 │                       │                    │                     │                    │
 │                       │                    │ 建立本地会话          │                    │
 │                       │                    │ 注入 user_id 到请求头 │                    │
 │                       │                    │                     │                    │
 │ 在应用内发起 AI 请求    │                    │                     │                    │
 │                       │                    │ POST /v1/chat/completions                   │
 │                       │                    │ Authorization: Bearer <proxy_key>          │
 │                       │                    │ X-Platform-User-Id: <user_id>              │
 │                       │                    │───────────────────────────────────────────►│
 │                       │                    │                     │                    │
 │                       │                    │                     │   校验 → 路由 → 计量 │
 │                       │                    │                     │                    │
 │                       │                    │◄──── 流式响应 ──────│                    │
 │◄──── 渲染结果 ────────│                    │                     │                    │

5. 各应用接入改造要点(首批 3 个)

5.1 MuMuAINovel · 深度接入(L2)

为何首批第一:它是你主动提出、且最贴合"平台统一付费"诉求的项目;已有 LinuxDO OAuth 证明认证层可替换;OpenAI 兼容协议证明模型可调代理。

改造清单:

  1. 新增 CasdoorOIDCProvider 类(照搬现有 LinuxDO 适配器模式)
  2. 环境变量双模式:PLATFORM_MODE=true/false 切换自托管/平台托管
  3. OPENAI_BASE_URL=https://api.qihuyun.com/app/api/aiserver/v1
  4. OPENAI_API_KEY=${PLATFORM_PROXY_KEY}(平台颁发的应用级 Key)
  5. Docker Compose 加 depends_on: [casdoor, ai-gateway]

许可证处理(⚠️ GPL-3.0 重点):

  • 方案 B:OIDC 适配器 + AI 代理层做成独立中间件/Sidecar,不修改 MuMuAINovel 核心源码 → 规避 GPL 传染性
  • 在平台"开源致谢"页声明 MuMuAINovel 及 GPL-3.0 协议
  • 部署容器命名为 mumuainovel-adapter + mumuainovel-core 两层

预期效果:用户在七虎 PaaS 订阅 Pro+小说套餐 → 点击进入 MuMuAINovel → 静默登录 → 创作时消耗的是平台套餐内 Token → 用量实时出现在 Token 驾驶舱。

5.2 next-ai-draw-io · 标准接入(L2)

为何首批第二:Apache-2.0 协议最友好(无传染性);已有 ACCESS_CODE_LIST 密码机制说明认证层可扩展;支持 10+ AI Provider 且都走环境变量配置,模型代理最简单。

改造清单:

  1. 新增 Casdoor OIDC 适配器(项目用 Next.js,可用 next-auth 库快速接入)
  2. 通过环境变量统一 AI Provider 为平台网关:
    AI_PROVIDER=openai
    AI_MODEL=qihuyun-default
    OPENAI_API_KEY=${PLATFORM_PROXY_KEY}
    OPENAI_BASE_URL=https://api.qihuyun.com/app/api/aiserver/v1
    
  3. 用 NEXT_PUBLIC_* 注入平台用户上下文(user_id、subscription_tier)
  4. 禁用 ACCESS_CODE_LIST(平台登录后无需二次密码)

协议优势:Apache-2.0 允许商业使用、修改、私有化部署,无开源传染风险。平台对其做的任何修改可选择性开源,也可私有。

预期效果:开发者在七虎 PaaS 点"AI 绘图"→ 进入 next-ai-draw-io → 用自然语言画云架构图/流程图 → 所有 AI 调用走平台网关计量。

5.3 OpenCut · 标准接入(L2)

为何首批第三:MIT 协议最自由;78.5K Stars 证明市场验证充分;"视频剪辑"是平台"自媒体/短视频创作"定位的核心场景;规划中的 MCP Server 与平台 Agent 生态天然契合。

改造清单:

  1. 认证:OpenCut 新版本正在重写,Editor API + 插件系统开放,OIDC 插件可作为官方插件形式接入
  2. AI 功能代理:OpenCut 的 AI 接入(智能剪辑、自动字幕、翻译)走平台网关
  3. 部署:Docker Compose 已含 PG + Redis,新增 casdoor-sidecar 容器做认证代理
  4. 文件存储:用户上传的视频素材走平台对象存储(S3 兼容),不落应用本地盘

特殊处理:OpenCut 的视频渲染是计算密集型(GPU 合成、FFmpeg 编码),需单独规划资源配额:

  • 容器资源限制:CPU/内存/GPU 配额按会员等级差异化
  • 渲染任务异步化:提交→排队→渲染→回调通知(避免 HTTP 长连接超时)
  • 大文件上传走分片 + 平台 CDN

预期效果:自媒体用户在平台订阅"创作套餐"→ 使用 OpenCut 剪辑短视频 → AI 字幕/翻译/去字幕走平台模型 → 渲染消耗平台算力配额。


6. 平台侧改造需求(支撑所有应用接入)

6.1 必须新增的平台能力

能力 说明 优先级
应用注册中心 market_apps 表扩展(app_id, name, type='app_service', entry_url, proxy_key, is_platform_hosted, docker_compose_tpl) P0
代理 Key 体系 应用级 Key 颁发/轮换/吊销,关联 app_id + 配额 P0
AI 网关中间件 校验代理 Key → 订阅校验 → 路由 → 计量 → 审计 P0
OIDC 应用模板 Casdoor 中预置应用配置,一键注册新应用 P0
订阅套餐映射 会员套餐可包含"应用服务"权益(如 Pro+小说、创作套餐) P0
用量看板(按应用) Token 驾驶舱新增"按应用"维度统计 P1
应用生命周期 部署/启停/升级/回滚/健康检查 P1
审计聚合 各应用上报的操作日志统一入 audit_logs P2

6.2 数据库 Schema 扩展

-- 应用注册表(扩展现有 market_apps)
CREATE TABLE market_apps (
    id VARCHAR(50) PRIMARY KEY,
    name VARCHAR(200) NOT NULL,
    type VARCHAR(20) NOT NULL DEFAULT 'skill',  -- 'skill' | 'app_service'
    category VARCHAR(50),
    description TEXT,
    icon_url VARCHAR(500),
    entry_url VARCHAR(500),           -- 平台托管型应用的访问入口
    deployment_type VARCHAR(20),      -- 'hosted' | 'external' | 'embedded'
    docker_compose_tpl TEXT,          -- Docker Compose 模板(hosted 型)
    proxy_key_hash VARCHAR(256),      -- 平台颁发的代理 Key(bcrypt)
    auth_mode VARCHAR(20),            -- 'casdoor_oidc' | 'platform_token' | 'none'
    protocol_license VARCHAR(50),     -- MIT / Apache-2.0 / GPL-3.0 等
    integration_level INT DEFAULT 1,  -- 1=L1浅 2=L2中 3=L3深
    status VARCHAR(20) DEFAULT 'pending',  -- pending/active/suspended
    version VARCHAR(50),
    repository_url VARCHAR(500),
    is_featured BOOLEAN DEFAULT FALSE,
    created_at TIMESTAMP DEFAULT NOW(),
    updated_at TIMESTAMP DEFAULT NOW()
);

-- 应用实例(每个租户/用户部署一个实例)
CREATE TABLE app_instances (
    id BIGSERIAL PRIMARY KEY,
    app_id VARCHAR(50) REFERENCES market_apps(id),
    tenant_id BIGINT NOT NULL,
    user_id BIGINT NOT NULL,
    instance_url VARCHAR(500),
    container_id VARCHAR(200),
    status VARCHAR(20) DEFAULT 'running',
    deployed_at TIMESTAMP DEFAULT NOW(),
    last_active_at TIMESTAMP,
    resource_quota JSONB,  -- {"cpu": 2, "memory_gb": 4, "gpu": 0}
    rls_tenant_id BIGINT GENERATED ALWAYS AS (tenant_id) STORED
);

-- 应用订阅关联
CREATE TABLE app_subscriptions (
    id BIGSERIAL PRIMARY KEY,
    user_id BIGINT NOT NULL,
    app_id VARCHAR(50) REFERENCES market_apps(id),
    plan_id VARCHAR(50),
    status VARCHAR(20) DEFAULT 'active',
    started_at TIMESTAMP DEFAULT NOW(),
    expires_at TIMESTAMP,
    payment_method VARCHAR(20),  -- 'subscription_quota' | 'pay_per_use'
    rls_tenant_id BIGINT
);

-- 扩展 token_usage_logs 增加 app 维度
ALTER TABLE token_usage_logs 
    ADD COLUMN IF NOT EXISTS app_id VARCHAR(50),
    ADD COLUMN IF NOT EXISTS app_name VARCHAR(200),
    ADD COLUMN IF NOT EXISTS billing_model VARCHAR(20);  -- 'subscription' | 'pay_per_use'

-- RLS 策略(多租户隔离)
ALTER TABLE app_instances ENABLE ROW LEVEL SECURITY;
CREATE POLICY app_instances_tenant_isolation ON app_instances
    USING (tenant_id = current_setting('app.current_tenant_id')::BIGINT);

6.3 AI 网关代理 Key 中间件(FastAPI 骨架)

# /app/api/aiserver/v1/chat/completions
from fastapi import Request, HTTPException, Depends
from fastapi.responses import StreamingResponse
import httpx, os

PLATFORM_AI_BACKEND = os.getenv("PLATFORM_AI_BACKEND")  # 真实上游

@app.post("/app/api/aiserver/v1/chat/completions")
async def proxy_chat_completions(request: Request, body: dict):
    # 1. 校验代理 Key
    auth = request.headers.get("Authorization", "")
    proxy_key = auth.replace("Bearer ", "")
    app = await resolve_app_by_proxy_key(proxy_key)
    if not app or not app["is_active"]:
        raise HTTPException(401, "Invalid or revoked proxy key")
    
    # 2. 解析用户 + 订阅校验
    user_id = request.headers.get("X-Platform-User-Id")
    subscription = await check_subscription(user_id, app["id"])
    if not subscription or subscription["status"] != "active":
        raise HTTPException(402, "Active subscription required for this app")
    
    # 3. 配额检查
    usage = await get_current_period_usage(user_id, app["id"])
    if usage["tokens"] >= subscription["token_quota"]:
        raise HTTPException(429, "Token quota exceeded, please upgrade")
    
    # 4. 转发到真实上游(LiteLLM 或直连模型)
    upstream_body = rewrite_request(body, target_model=subscription["allowed_model"])
    async with httpx.AsyncClient(timeout=300) as client:
        upstream_resp = await client.post(
            f"{PLATFORM_AI_BACKEND}/v1/chat/completions",
            json=upstream_body,
            headers={"Authorization": f"Bearer {os.getenv('UPSTREAM_API_KEY')}"}
        )
    
    # 5. 计量(流式则异步累计)
    await record_usage(
        user_id=user_id,
        app_id=app["id"],
        app_name=app["name"],
        model=upstream_body.get("model"),
        prompt_tokens=upstream_resp.json().get("usage", {}).get("prompt_tokens", 0),
        completion_tokens=upstream_resp.json().get("usage", {}).get("completion_tokens", 0),
        billing_model="subscription"
    )
    
    return StreamingResponse(upstream_resp.aiter_bytes(), media_type="application/json")

7. 许可证风险管理

7.1 主流开源协议对比

协议 商业使用 修改后需开源 传染范围 适用接入策略
MIT ✅ ❌(只需保留版权声明) 无 自由集成、可改可闭源、最友好
Apache-2.0 ✅ ❌(需声明修改) 无 自由集成、需保留 NOTICE
GPL-3.0 ✅ ✅(衍生作品须 GPL) 强传染 必须外围集成,不修改核心
AGPL-3.0 ✅ ✅(网络服务也须开源) 网络服务传染 避免修改,仅做协议适配

7.2 各候选项目的合规策略

项目 协议 风险点 合规方案
MuMuAINovel GPL-3.0 修改核心代码 → 衍生作品须 GPL 外围集成:OIDC/AI代理做成独立 Sidecar,不改核心
OpenCut MIT 几乎无 自由修改、可闭源,最省心
next-ai-draw-io Apache-2.0 需保留 NOTICE 保留版权声明 + NOTICE 文件即可
HyperFrames Apache-2.0 同上 同上
dashi-ppt-skill MIT 无 转技能上架,无顾虑
ai-job-search MIT 无 转技能上架,无顾虑

7.3 平台级合规清单

每个接入应用必须:

  • 在平台"开源致谢"页列出项目名称、作者、协议、仓库链接
  • 保留原始 LICENSE 文件,不删除版权声明
  • GPL 项目:修改(如有)以独立仓库开源,并在 README 声明
  • 用户协议中说明"本平台部分功能基于开源项目构建"
  • 联系原作者获取商业授权(GPL 项目强烈推荐,建立合作)

8. 落地路线图

8.1 三阶段推进

阶段一 · 奠基(第 1-4 周)
├── W1: 平台侧改造
│   ├── 扩展 market_apps 表 + RLS 策略
│   ├── AI 网关代理 Key 中间件
│   ├── Casdoor 应用注册模板
│   └── 订阅套餐映射
├── W2-3: MuMuAINovel L1 接入(OIDC 打通)
└── W4: next-ai-draw-io L1+L2 接入(双模式切换)

阶段二 · 标杆(第 5-8 周)
├── W5-6: MuMuAINovel 升级 L2(模型代理+计量)
├── W7: OpenCut L1+L2 接入
├── W8: 平台"应用服务"前台页面上线(卡片式入口)

阶段三 · 生态(第 9-12 周)
├── W9-10: 技能市场 + 应用服务统一审核流水线
├── W11: 应用内增值购买 + 分润结算
└── W12: HyperFrames 接入评估 + 第二批候选筛选

8.2 里程碑与验收标准

里程碑 验收标准
M1:单点登录打通 用户在平台登录后,点击 3 个应用入口均能静默进入,无二次登录
M2:模型统一路由 3 个应用的所有 AI 调用均走平台网关,上游模型可一键切换
M3:计量闭环 平台 Token 驾驶舱可按"应用"维度展示用量,数据延迟 < 1 分钟
M4:订阅闭环 用户订阅套餐包含应用权益,过期后应用自动提示升级
M5:上架流程 第 4 个应用接入耗时 < 1 周(前 3 个的平均值的 50%)

9. 风险与应对

风险 概率 影响 应对
GPL 项目协议传染 中 高 外围集成策略 + 法律审查 + 作者商业授权
应用升级导致接入层破坏 中 中 Docker 镜像锁定版本 + 适配层测试 + 灰度升级
AI 网关成单点瓶颈 中 高 LiteLLM 水平扩容 + Redis 缓存 + 熔断降级
多租户数据串扰 低 极高 PG RLS 强制 + 集成测试 + 混沌工程
视频渲染资源耗尽 中 中 容器配额 + 任务队列 + 会员差异化
第三方应用安全漏洞 中 高 容器沙箱 + gVisor + 依赖扫描 + 最小权限

10. 与既有文档的承接关系

本文档是《AI_PaaS_Platform_Analysis_and_Execution_Plan.md》的专项延伸,承接关系如下:

既有章节 本文承接点
第二部分 §2.3 插件体系 应用服务是"插件"的终极形态——独立进程级插件
第三部分 dashi-ppt 改造 dashi-ppt 转"技能"上架,本文界定它不该做"应用"
第四部分 技能开发标准 本文 §2 的"应用 vs 技能"决策树与之互补
第五部分 §5.2.5 技能市场 应用市场是技能市场的"重型补充"
第五部分 §5.4 优先级表 #5 MuMuAINovel 接入即"落地标杆技能真实执行器"的具象化

附录 A:应用接入 SOP 检查清单

每个新应用接入必须逐条勾选:

A.1 选型评估

  • 通过 §1.2 六维评估,总分 ≥ 3.5
  • 许可证兼容(MIT/Apache 优先,GPL 走外围集成方案)
  • 与平台定位契合(覆盖至少 1 个核心场景)
  • 技术栈可容器化(Docker 镜像可用)

A.2 L1 接入(认证)

  • 应用侧新增 Casdoor OIDC 适配器并通过联调
  • 平台侧 Casdoor 注册应用、颁发 Client ID/Secret
  • 平台前台"应用服务"卡片可跳转并静默登录
  • 登出平台后,应用会话同步失效

A.3 L2 接入(模型+计费)

  • 应用 AI 调用全部指向平台网关
  • 平台代理 Key 颁发、轮换、吊销流程可用
  • AI 网关中间件通过代理 Key 校验、订阅校验、计量写入
  • Token 驾驶舱"按应用"维度统计正确
  • 订阅过期后应用优雅降级(非 500 错误)

A.4 L3 接入(深度)

  • 应用数据库启用 PG RLS,tenant_id 隔离验证通过
  • 审计日志上报平台 audit_logs
  • 暴露 Prometheus 指标,平台 Grafana 可采集
  • GDPR 数据导出/删除接口可用
  • 安全审计通过(渗透测试 + 依赖扫描)

A.5 上架运营

  • 平台"开源致谢"页已添加项目信息
  • LICENSE 文件保留且完整
  • 应用详情页(截图、介绍、入口、定价)已配置
  • 监控告警已配置(可用性、延迟、错误率)
  • 回滚预案已演练

附录 B:术语表

术语 含义
应用服务(App Service) 独立可运行的 Web 应用,通过单点登录接入平台,共享平台模型与计费
OIDC OpenID Connect,基于 OAuth 2.0 的身份认证协议
Casdoor 开源的统一身份认证平台,本项目用作 OIDC IdP
代理 Key(Proxy Key) 平台颁发给应用的长期密钥,用于 AI 网关识别"哪个应用在代哪个用户调用"
AI 网关 平台统一接管所有模型调用的中间件,承担认证、路由、限流、计量、审计
外围集成 不修改目标项目核心源码,通过 Sidecar/中间件/环境变量方式接入,规避 GPL 传染
RLS Row Level Security,PostgreSQL 行级安全策略,实现多租户数据隔离
LiteLLM 统一 100+ LLM 供应商的开源网关,OpenAI 兼容格式
L1/L2/L3 本文件定义的三级集成深度(浅/中/深)

文档版本:v1.0.0
生成日期:2026-07-27
下一步行动:

  1. 将此文件喂给 WorkBuddy,按 §8 路线图推进阶段一(W1 平台侧改造)
  2. 将本文档作为《AI_PaaS_Platform_Analysis_and_Execution_Plan.md》的新章节合并
  3. 对每个首批应用(MuMuAINovel/next-ai-draw-io/OpenCut)单独生成改造代码骨架
    反馈渠道:平台内部 Issue Tracker / 架构组邮件