初始提交: Qihu-AIFlow v2.0.1 完整项目

- 前端 React+TypeScript (源码+构建产物)
- 后端 Python FastAPI
- 数据库迁移 001-015
- Docker部署配置
- 微信ClawBot API频道绑定
- 项目文档 README.md
This commit is contained in:
qyyfw committed 2026-07-02 14:40:46 +08:00
commit 78ff261b5a
199 files changed
+69126

No files matched your search

+620
View File
@@ -0,0 +1,620 @@
# AI自进化功能模块 第二版迭代 - 产品需求文档(PRD v2)
---
## 1. 概述(Summary)
本文档为Qihu-AIFlow平台「AI自进化」功能模块的第二版迭代PRD。基于第一版已完成的功能(14个API端点、5张数据库表、4面板驾驶舱、对话轨迹提交钩子)和测试报告中识别的9项GAP,进行高阶功能补齐与增强迭代。核心目标:将xSkill完整流水线引擎落地运行,补齐前端交互体验缺失项,实现从「数据展示」到「真实进化」的质变。
---
## 2. 联系人(Contacts)
| 姓名 | 角色 | 备注 |
|------|------|------|
| 项目负责人 | Team Lead | 迭代规划与协调决策 |
| 产品经理 | Product Manager | v2 PRD撰写 |
| UI设计师 | UI Designer | 萌芽动画、分享卡片、提示标签等前端视觉设计 |
| 开发工程师 | Developer | GAP补全 + 新功能开发 |
| 测试工程师 | QA Engineer | v2全功能测试与回归测试 |
---
## 3. 背景(Background)
### 3.1 第一版交付回顾
第一版已完成并全部通过测试(44/44用例,100%通过率),交付内容包括:
| 类别 | 已交付 |
|------|--------|
| **后端API** | 14个端点:技能CRUD(9) + 进化事件(1) + 驾驶舱4面板(4) + 轨迹提交(1),另有对话钩子预留 |
| **数据库** | 4张核心表:evolution_skills, evolution_events, evolution_trajectories, skill_trajectory_links;1张配置表user_evolution_config(已建表但服务层未读写) |
| **前端驾驶舱** | 631行主组件 + 1019行CSS:技能图谱面板A(分组树+状态色标)、进化时间线面板B(垂直时间线+7类事件筛选)、技能使用统计面板C(排行+趋势柱状图+饼图+低使用提醒)、AI能力画像面板D(等级环+SVG雷达图+标签云+成长建议) |
| **数据隔离** | API路由层JWT验证 + 服务层user_id过滤,7/7数据隔离测试通过 |
### 3.2 第一版的本质问题
第一版本质上是一个**数据展示层**——后端存储技能元数据、记录事件、生成驾驶舱数据,前端可视化渲染。但xSkill核心流水线(对话轨迹→AtomTask拆分→向量索引→技能聚类→Skill生成→灰度验证)**尚未跑起来**:
- 轨迹提交后状态停留在`discovered`,没有后续处理
- xSkill `DirectoryWatcher`线程未实际启动
- `UserEvolutionConfig`表已建但服务层无读写
- 技能数据为手动写入的演示数据,非真正从对话中进化而来
### 3.3 第二版目标
第二版解决两个核心问题:
1. **让进化真正跑起来**:落地xSkill流水线自动调度,实现对话→技能的完整自动化链路
2. **补齐交互体验缺口**:实现萌芽动画、时间线导出、画像分享、Skill加载提示等前端互动细节
3. **增强业务联动**:技能市场互通、团队共享、定期报告等增值功能
---
## 4. 目标与关键成果(Objective & Key Results)
### 4.1 迭代目标
在v1数据展示层的基础上,将xSkill完整进化流水线落地运行,补齐前端交互体验GAP,并扩展业务联动能力。
### 4.2 关键成果(OKR v2)
| 编号 | 关键结果 | 衡量标准 | 优先级 |
|------|----------|----------|--------|
| KR1 | xSkill流水线自动调度实现 | 轨迹提交后自动完成 discovered→splitting→split_done→indexed→clustering→done 全状态流转 | P0 |
| KR2 | Watcher线程管理上线 | 用户注册后自动启动、异常自动恢复、状态可监控 | P0 |
| KR3 | 技能回滚功能实现 | Git集成回滚可用,回滚后版本号正确、事件记录完整 | P0 |
| KR4 | 前端交互体验GAP全部补齐 | 萌芽动画、时间线导出、画像分享卡片、Skill加载提示标签全部可用 | P1 |
| KR5 | 业务联动增强功能上线 | 技能市场互通、团队共享进化、定期进化报告任选2项交付 | P2 |
---
## 5. 解决方案(Solution)
### 5.1 功能总览
第二版新增/增强功能共分为三大类:
- **核心引擎类(P0)**:xSkill流水线自动调度、Watcher线程管理、技能回滚
- **体验增强类(P1)**:萌芽动画、时间线导出、画像分享卡片、Skill加载提示标签
- **业务联动类(P2)**:技能市场互通、团队共享进化、进化报告推送
---
### 5.2 P0 核心引擎类功能
---
#### 功能一:xSkill流水线自动调度(GAP-09)
**当前状态**:轨迹提交后落盘为`.md`文件,数据库`status="discovered"`,无后续处理。
**目标**:实现从轨迹提交到技能生成的完整自动化流水线。
| 功能点 | 详细描述 |
|--------|----------|
| **流水线调度器** | 新增 `PipelineScheduler` 组件,独立线程定期扫描`status=discovered`的轨迹,投递到xSkill `DirectoryWatcher`流水线 |
| **状态流转** | 轨迹经过完整状态机:discovered → splitting(TaskAgent拆分AtomTask)→ split_done → indexed(向量索引构建)→ clustering(TaskClusterAgent聚类到Skill)→ done |
| **AtomTask拆分** | 调用xSkill `TaskAgent`按用户意图切换点拆分对话为AtomTask,每个AtomTask落盘为JSON文件到`{traj_dir}/tasks/`目录 |
| **向量索引构建** | 对AtomTask的summary/intent做embedding(使用用户专属的embed_client),构建`index.pkl`索引文件 |
| **技能聚类** | `TaskClusterAgent`对每个新AtomTask做向量相似度搜索定位已有Skill,归类到最匹配Skill的`.candidates.yml`候选缓冲区 |
| **Skill生成触发** | 当某Skill的candidates buffer累计weightscore ≥ 10时,自动触发`SkillEditAgent`生成/更新`SKILL.md` |
| **灰度验证** | Skill更新后进入staging分支,`AtomCanary`收集UX评分(每条atom独立打分1-10分),集齐5条后与main分支均分比较:staging均分 ≥ main则promote合入主干,否则reject丢弃 |
| **资源管理** | 每个用户独立LLM调用(使用用户自己的LLM API配额),调度间隔可配置(默认30秒),支持低峰期批量处理积压轨迹 |
| **错误处理** | 单条atom聚类失败不阻塞整条轨迹,自动重试最多3次,超过阈值记录错误日志并跳过 |
**新增API**:
| 接口 | 方法 | 说明 |
|------|------|------|
| `/app/api/evolution/pipeline/status` | GET | 获取当前用户流水线运行状态(运行中/空闲/异常,待处理轨迹数,已完成轨迹数) |
| `/app/api/evolution/pipeline/trigger` | POST | 手动触发一次流水线调度(立即扫描并处理discovered轨迹) |
**数据库变更**:
| 变更类型 | 表/字段 | 说明 |
|----------|---------|------|
| 新增字段 | `evolution_trajectories.error_msg` | 记录轨迹处理失败的错误信息(VARCHAR 500) |
| 新增字段 | `evolution_trajectories.retry_count` | 记录重试次数,默认0 |
| 新增字段 | `evolution_trajectories.tasks_extracted` | 记录该轨迹拆分出的AtomTask数量 |
**技术实现要点**:
```python
# PipelineScheduler 核心逻辑伪代码
class PipelineScheduler:
"""每30秒扫描一次,将discovered轨迹投递到xSkill流水线"""
def __init__(self, user_id: str, xskill_instance: XSkill,
store: AtomTaskStore, db_session_factory):
self.user_id = user_id
self.xskill = xskill_instance
self.store = store
self.poll_interval = 30 # 秒
self._stop = threading.Event()
def run(self):
while not self._stop.is_set():
discovered = self._get_discovered_trajectories()
for traj in discovered:
# 1. 标准化轨迹格式
md_path = Path(traj.file_path)
# 2. TaskAgent拆分
atoms = TaskAgent(llm=self.xskill.llm, store=self.store).run(
traj_id=md_path.stem, traj_path=md_path
)
# 3. 更新状态
self._update_traj_status(traj.id, "split_done", tasks_extracted=len(atoms))
# 4. 向量索引
self.store.rebuild_vector_index(self.xskill.embed)
self._update_traj_status(traj.id, "indexed")
# 5. 逐个atom聚类
for atom in atoms:
process_atom_task(atom_id=atom.atom_id, ...)
self._update_traj_status(traj.id, "done")
self._stop.wait(self.poll_interval)
```
---
#### 功能二:xSkill Watcher线程管理(GAP-08)
**当前状态**:`UserEvolutionConfig`表已建但服务层无读写,watcher线程未启动。
**目标**:完整的watcher线程生命周期管理。
| 功能点 | 详细描述 |
|--------|----------|
| **自动启动** | 用户首次登录或注册时,`UserLifecycleService`自动初始化用户进化环境:创建技能仓库目录、轨迹目录、配置文件,启动watcher线程 |
| **WatcherManager** | 全局单例管理所有用户的watcher线程,提供start/stop/restart/status接口 |
| **状态监控** | watcher状态(运行中/空闲/异常)+ 处理统计(已处理轨迹数/技能数/错误数)可通过API查询 |
| **异常恢复** | watcher线程异常退出时,3次自动重试启动;持续失败记录到`user_evolution_config.watcher_error`字段并告警 |
| **优雅关闭** | 服务关闭时,依次stop所有watcher线程,等待当前任务完成(最长5秒),然后强制关闭 |
| **资源限制** | 单服务器最大并发watcher线程数可配置(默认100),超出时新用户排队等待 |
**服务层新增方法**:
```python
class EvolutionWatcherManager:
"""全局watcher线程管理器(单例)"""
_watchers: dict[str, DirectoryWatcher] = {}
_schedulers: dict[str, PipelineScheduler] = {}
def start_user_evolution(self, user_id: str) -> bool:
"""为用户启动进化引擎(初始化目录 + 配置 + watcher + scheduler)"""
def stop_user_evolution(self, user_id: str) -> bool:
"""停止用户进化引擎"""
def get_user_status(self, user_id: str) -> dict:
"""获取用户进化引擎状态"""
def restart_user_evolution(self, user_id: str) -> bool:
"""重启用户进化引擎(用于异常恢复)"""
```
**新增API**:
| 接口 | 方法 | 说明 |
|------|------|------|
| `/app/api/evolution/watcher/status` | GET | 获取当前用户watcher状态与统计 |
| `/app/api/admin/evolution/watchers` | GET | [管理员] 查看全平台所有用户watcher状态汇总 |
---
#### 功能三:技能回滚API(GAP-01)
**当前状态**:技能管理API缺少回滚端点,前端无回滚UI。
**目标**:支持将技能恢复到任意历史版本,依赖Git版本管理。
| 功能点 | 详细描述 |
|--------|----------|
| **回滚逻辑** | 通过xSkill的`rollback_skill()`函数实现:git checkout指定commit的SKILL.md,version号自增,记录回滚事件 |
| **版本历史** | 复用已有的`/skills/{skill_name}/history`端点,返回事件列表(含version_before/version_after),每个历史版本对应一个可回滚的目标 |
| **前端交互** | 在技能详情弹窗中增加「版本历史」按钮,打开版本列表弹窗(时间线展示),每条记录右侧有「回滚到此版本」按钮 |
| **回滚确认** | 点击回滚前弹出二次确认:「确认回滚到版本 V{N}?当前版本 V{M} 的修改将被撤销」 |
| **回滚后行为** | 回滚成功后:SKILL.md恢复到目标版本内容、version字段+1、记录event_type="rolled_back"的进化事件、技能详情弹窗刷新显示最新状态 |
| **审计追溯** | 回滚操作在evolution_events表中保留完整记录:version_before(回滚前版本号)、version_after(回滚后版本号)、description("版本 V5 回滚至 V3") |
**新增API**:
| 接口 | 方法 | 说明 |
|------|------|------|
| `/app/api/evolution/skills/{skill_name}/rollback/{version}` | POST | 将技能回滚到指定版本号 |
**前端新增组件**:
- `VersionHistoryModal`:版本历史弹窗,时间线展示,每行显示版本号、事件类型、时间、操作按钮
- 回滚确认弹窗
---
### 5.3 P1 体验增强类功能
---
#### 功能四:新技能萌芽动画(GAP-03)
**当前状态**:技能图谱面板(Panel A)有状态色标标识(baby=粉色),但无动画效果。
**目标**:baby状态(萌芽中)的技能节点有CSS动画,增强「养龙虾」的沉浸感。
| 功能点 | 详细描述 |
|--------|----------|
| **动画效果** | baby状态技能节点:周期性缩放脉冲(scale 1.0→1.15→1.0,周期2s)+ 淡入淡出光晕(box-shadow从粉色扩散到透明)+ 节点上方有🌱图标微微摆动 |
| **动画触发** | 页面加载时检测是否有baby状态技能,有则自动播放动画,无则静态展示 |
| **动画性能** | 使用CSS `@keyframes` + `transform`(GPU加速),不触发重排 |
| **动画开关** | 默认开启,用户可在面板右上角关闭动画(偏好持久化到localStorage) |
| **staging动画** | staging状态技能节点:橙色脉冲呼吸动画(scale 1.0→1.08→1.0,周期3s),表示「灰度测试中」 |
**CSS动画定义(核心片段)**:
```css
/* baby技能萌芽动画 */
.skill-node.state-baby {
animation: baby-sprout 2s ease-in-out infinite;
}
@keyframes baby-sprout {
0%, 100% {
transform: scale(1);
box-shadow: 0 0 0 0 rgba(255, 182, 193, 0.4);
}
50% {
transform: scale(1.15);
box-shadow: 0 0 20px 4px rgba(255, 182, 193, 0);
}
}
/* staging技能呼吸动画 */
.skill-node.state-staging {
animation: staging-breathe 3s ease-in-out infinite;
}
@keyframes staging-breathe {
0%, 100% { transform: scale(1); opacity: 0.8; }
50% { transform: scale(1.08); opacity: 1; }
}
```
---
#### 功能五:时间线导出(GAP-04)
**当前状态**:进化时间线面板(Panel B)展示事件列表,但无导出功能。
**目标**:支持将进化时间线导出为PNG图片或PDF文件。
| 功能点 | 详细描述 |
|--------|----------|
| **导出入口** | 时间线面板右上角「导出」按钮,下拉菜单:导出为PNG / 导出为PDF |
| **PNG导出** | 使用`html2canvas`库将时间线DOM节点截图为PNG,支持选择导出时间范围(最近7天/30天/全部) |
| **PDF导出** | 使用`jsPDF`库将时间线内容生成PDF,A4纵向,含标题「我的AI进化时间线」+ 生成日期 + 底部水印「Qihu-AIFlow」 |
| **导出范围** | 导出时遵循当前筛选条件(事件类型筛选、时间范围),所见即所得 |
| **文件命名** | 导出文件名格式:`AI进化时间线_{用户名}_{日期}.png/pdf` |
| **隐私保护** | 导出内容仅包含用户自己的进化数据,不含任何其他用户信息 |
---
#### 功能六:画像分享卡片(GAP-05)
**当前状态**:AI能力画像面板(Panel D)展示等级、雷达图、标签云,但无分享功能。
**目标**:支持将AI能力画像生成为精美分享卡片图片,可保存或在社交媒体分享。
| 功能点 | 详细描述 |
|--------|----------|
| **分享入口** | 画像面板右上角「分享」按钮 |
| **卡片设计** | 750x1334像素竖版卡片:顶部平台Logo + 标题「我的AI进化画像」;中部环形进度条(等级Lv.X + 称号);雷达图(简化版,6维度);能力标签云;底部二维码(扫码体验平台)+ 日期水印 |
| **隐私控制** | 卡片仅包含能力维度值和等级,**不包含**具体技能名称、对话内容等私密数据 |
| **生成方式** | 使用`html2canvas`对隐藏的卡片DOM元素截图,Canvas转Blob后触发下载或调用系统分享API |
| **分享渠道** | 「保存到相册」、「复制图片」、「分享到微信」(如果是移动端环境) |
| **个性化** | 卡片背景支持3种主题色切换(深空蓝/极光绿/暖阳橙) |
---
#### 功能七:Skill加载提示标签(GAP-06)
**当前状态**:AI聊天时没有提示当前是否使用了进化技能。
**目标**:在AI回复消息下方显示「使用了专属进化技能」的提示标签。
| 功能点 | 详细描述 |
|--------|----------|
| **标签位置** | AI回复消息气泡下方,以小型tag形式展示 |
| **标签样式** | 圆角标签,左侧🚀emoji图标,文字:「使用了专属技能:{技能名}」,底色半透明主题色 |
| **显隐逻辑** | 仅当本轮对话中AI实际调用了用户自进化生成的Skill时才显示,否则不显示 |
| **多技能** | 单条回复可能触发多个Skill,多个标签横向排列,最多展示3个,超出显示「+N」折叠 |
| **点击交互** | 点击标签跳转到该技能详情(驾驶舱技能图谱面板中定位到该技能节点) |
| **数据来源** | 后端AI聊天接口返回的`used_skills`字段(字符串数组),前端根据该字段渲染标签 |
| **后端联动** | AI聊天接口 `/app/api/chat/send` 返回体中新增 `used_skills` 字段:`{"reply": "...", "used_skills": ["python_debug_skill", "code_review_skill"]}` |
**后端联动变更**:
聊天消息表新增字段:
| 变更 | 表/字段 | 说明 |
|------|---------|------|
| 新增字段 | `messages.used_skills` | JSON数组,记录该轮对话AI调用的进化技能名列表 |
| 新增字段 | `evolution_skills.use_count` 自增逻辑 | 每次AI回复触发该技能时use_count+1,更新last_used_at |
---
### 5.4 P2 业务联动类功能
---
#### 功能八:技能市场与进化技能联动
**目标**:用户可将进化出的优质技能(state=main、评分≥7)一键发布到应用市场的Skills分类中。
| 功能点 | 详细描述 |
|--------|----------|
| **发布入口** | 技能详情弹窗中,对于state=main的技能增加「发布到市场」按钮 |
| **发布流程** | 点击后弹出发布表单:设置价格(可免费)、填写市场描述、选择分类(Skills)、确认发布。发布后的技能在应用市场可见,其他用户可购买/安装 |
| **发布条件** | 仅state=main的技能可发布;staging/baby状态不可发布(灰度/萌芽中的技能不成熟) |
| **版本同步** | 技能在市场发布后,若技能后续发生进化更新(新版本灰度通过promote),市场版本同步更新 |
| **收益归属** | 技能发布者获取售卖收益(按平台分成规则) |
| **市场标识** | 市场中的技能卡片标注「🦞 进化技能」标识,区别于普通上传应用 |
**实现要点**:
- 后端:`EvolutionService.publish_to_market(skill_name)` → 在`market_apps`表中创建记录
- 前端:技能详情弹窗增加发布按钮和表单
---
#### 功能九:团队共享进化
**目标**:团队成员可以互相借鉴技能,促进团队AI能力共同提升。
| 功能点 | 详细描述 |
|--------|----------|
| **共享开关** | 用户可为每个技能设置「团队可见」开关(默认关闭),开启后该技能在团队空间内可见 |
| **团队技能池** | 在团队空间中新增「团队技能」标签页,展示所有团队成员共享的技能 |
| **借鉴机制** | 团队成员可查看共享技能的SKILL.md内容,并「复制到我的技能库」(复制后为独立的技能副本,后续各自进化互不影响) |
| **借鉴溯源** | 复制的技能标注「来源:{原主人昵称}的{原技能名}」,尊重原创 |
| **权限控制** | 仅团队成员可见共享技能,非团队成员不可见 |
**注意**:此功能与第一版PRD中预留的「AI团队协作空间」扩展模块联动。团队空间表结构已预留,本次补充功能逻辑。
---
#### 功能十:进化报告定期推送
**目标**:定期生成用户的AI进化报告,通过消息通知中心推送。
| 功能点 | 详细描述 |
|--------|----------|
| **报告周期** | 每周一自动生成上周进化周报;每月1日生成上月月报 |
| **报告内容** | 本期新增技能数、技能升级数(baby→main)、最活跃技能TOP3、总调用次数、进化等级变化、能力维度增长、与上期对比数据 |
| **推送方式** | 报告生成后通过消息通知中心推送,用户点击通知跳转到驾驶舱查看完整报告 |
| **报告页面** | 驾驶舱新增「进化报告」子面板,展示历史报告列表,支持查看任意一期报告 |
| **后台任务** | 使用Celery/APScheduler定时任务,每周一凌晨2点批量生成所有用户的周报 |
**新增API**:
| 接口 | 方法 | 说明 |
|------|------|------|
| `/app/api/evolution/reports` | GET | 获取用户的历史进化报告列表 |
| `/app/api/evolution/reports/{report_id}` | GET | 获取指定报告的详细内容 |
---
### 5.5 系统架构变更
```
┌─────────────────────────────────────────────────────────────────────────┐
│ 后端 - v2增强 │
│ │
│ ┌──────────────────┐ ┌──────────────────┐ ┌──────────────────┐ │
│ │ WatcherManager │ │ PipelineScheduler│ │ EvolutionReport │ │
│ │ (全局单例) │ │ (每用户) │ │ Generator │ │
│ │ │ │ │ │ (定时任务) │ │
│ │ start/stop/ │ │ 30s扫描 │ │ 每周一 02:00 │ │
│ │ restart/status │ │ discovered→done │ │ 批量生成周报 │ │
│ └────────┬─────────┘ └────────┬─────────┘ └────────┬─────────┘ │
│ │ │ │ │
│ └──────────────────────┼──────────────────────┘ │
│ ▼ │
│ ┌─────────────────────────┐ │
│ │ xSkill 进化引擎 │ │
│ │ │ │
│ │ Trajectory → TaskAgent │ │
│ │ → AtomTask │ │
│ │ → TaskClusterAgent │ │
│ │ → SkillEditAgent │ │
│ │ → AtomCanary │ │
│ └───────────┬─────────────┘ │
│ │ │
│ ┌────────────────────┼────────────────────┐ │
│ ▼ ▼ ▼ │
│ ┌────────────────┐ ┌────────────────┐ ┌────────────────┐ │
│ │ EvolutionService│ │ 技能市场联动 │ │ 团队共享进化 │ │
│ │ + rollback_skill│ │ publish_to_ │ │ share_to_team │ │
│ │ + watcher_status│ │ market() │ │ () │ │
│ │ + pipeline_stats│ │ │ │ │ │
│ └────────────────┘ └────────────────┘ └────────────────┘ │
└─────────────────────────────────────────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────────────────┐
│ 前端 - v2增强 │
│ │
│ 技能图谱面板A 进化时间线面板B AI能力画像面板D │
│ ┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐ │
│ │ 🆕 baby萌芽动画 │ │ 🆕 导出PNG/PDF │ │ 🆕 分享卡片 │ │
│ │ 🆕 staging呼吸 │ │ 下拉菜单 │ │ 主题切换 │ │
│ │ 动画 │ │ │ │ │ │
│ └─────────────────┘ └─────────────────┘ └─────────────────┘ │
│ │
│ AI聊天页面 技能详情弹窗 │
│ ┌─────────────────┐ ┌─────────────────┐ │
│ │ 🆕 Skill加载提示 │ │ 🆕 版本历史+回滚 │ │
│ │ 标签 │ │ 🆕 发布到市场 │ │
│ └─────────────────┘ │ 🆕 团队共享开关 │ │
│ └─────────────────┘ │
└─────────────────────────────────────────────────────────────────────────┘
```
---
### 5.6 完整API接口清单(v1已有 + v2新增)
| 接口 | 方法 | 版本 | 说明 |
|------|------|------|------|
| `/app/api/evolution/skills` | GET | v1 | 获取技能列表 |
| `/app/api/evolution/skills/{name}` | GET | v1 | 获取技能详情 |
| `/app/api/evolution/skills/{name}` | PUT | v1 | 编辑技能 |
| `/app/api/evolution/skills/{name}` | DELETE | v1 | 删除技能 |
| `/app/api/evolution/skills/{name}/freeze` | POST | v1 | 冻结技能 |
| `/app/api/evolution/skills/{name}/unfreeze` | POST | v1 | 解冻技能 |
| `/app/api/evolution/skills/{name}/history` | GET | v1 | 技能版本历史 |
| `/app/api/evolution/skills/{name}/trajectories` | GET | v1 | 技能来源轨迹 |
| `/app/api/evolution/skills/{name}/rollback/{version}` | POST | **v2 新增** | 回滚技能到指定版本 |
| `/app/api/evolution/skills/{name}/publish` | POST | **v2 新增** | 发布技能到应用市场 |
| `/app/api/evolution/skills/{name}/share-to-team` | POST | **v2 新增** | 设置技能团队共享 |
| `/app/api/evolution/events` | GET | v1 | 进化事件列表 |
| `/app/api/evolution/dashboard/skill-tree` | GET | v1 | 技能图谱数据 |
| `/app/api/evolution/dashboard/timeline` | GET | v1 | 进化时间线数据 |
| `/app/api/evolution/dashboard/statistics` | GET | v1 | 技能使用统计 |
| `/app/api/evolution/dashboard/profile` | GET | v1 | AI能力画像数据 |
| `/app/api/evolution/trajectory/submit` | POST | v1 | 提交对话轨迹 |
| `/app/api/evolution/pipeline/status` | GET | **v2 新增** | 流水线运行状态 |
| `/app/api/evolution/pipeline/trigger` | POST | **v2 新增** | 手动触发流水线 |
| `/app/api/evolution/watcher/status` | GET | **v2 新增** | Watcher状态与统计 |
| `/app/api/evolution/reports` | GET | **v2 新增** | 进化报告列表 |
| `/app/api/evolution/reports/{id}` | GET | **v2 新增** | 进化报告详情 |
| `/app/api/admin/evolution/watchers` | GET | **v2 新增** | [管理] 全平台watcher汇总 |
**v1已有14个端点,v2新增9个端点,总计23个端点。**
---
### 5.7 数据库变更
#### 5.7.1 现有表新增字段
| 表名 | 新增字段 | 类型 | 说明 |
|------|----------|------|------|
| `evolution_trajectories` | `error_msg` | VARCHAR(500) | 轨迹处理失败的错误信息 |
| `evolution_trajectories` | `retry_count` | INT DEFAULT 0 | 失败重试次数 |
| `evolution_trajectories` | `tasks_extracted` | INT DEFAULT 0 | 拆分的AtomTask数量 |
| `messages` | `used_skills` | JSON | 该轮对话调用的进化技能名列表 |
| `user_evolution_config` | `watcher_error` | VARCHAR(500) | watcher异常信息 |
#### 5.7.2 新增表
| 表名 | 说明 | 核心字段 |
|------|------|----------|
| `evolution_reports` | 进化报告表 | id, user_id, report_type(weekly/monthly), period_start, period_end, report_data(JSON), created_at |
| `team_shared_skills` | 团队共享技能表 | id, team_id, skill_id, shared_by, created_at |
| `skill_publish_records` | 技能市场发布记录表 | id, skill_id, market_app_id, published_by, status(已发布/已下架), created_at |
---
### 5.8 关键假设与约束
| 编号 | 假设/约束 | 风险等级 |
|------|-----------|----------|
| A1 | xSkill v0.5.2的TaskAgent、TaskClusterAgent、SkillEditAgent在当前环境下可正常运行 | 中 |
| A2 | 每用户独立LLM调用不会超出API配额限制 | 中 |
| A3 | 单服务器100并发watcher线程在硬件上可行 | 低 |
| C1 | v2不改变v1已有API的请求/响应格式,保证向后兼容 | 强约束 |
| C2 | 进化流水线使用用户自有LLM配额(与聊天共用),不额外计费 | 设计决策 |
| C3 | 技能回滚的Git操作在每用户独立skill仓库内完成,不影响其他用户 | 强约束 |
| C4 | 画像分享卡片仅暴露聚合数据,不暴露具体技能名和对话内容 | 隐私约束 |
---
## 6. 功能需求清单
### v2新增功能清单(共10项功能,34个功能点)
| 序号 | 优先级 | 模块 | 功能点 |
|------|--------|------|--------|
| 1 | P0 | xSkill流水线调度 | PipelineScheduler组件 |
| 2 | P0 | xSkill流水线调度 | 轨迹状态自动流转(discovered→done) |
| 3 | P0 | xSkill流水线调度 | AtomTask拆分与存储 |
| 4 | P0 | xSkill流水线调度 | 向量索引构建 |
| 5 | P0 | xSkill流水线调度 | 技能聚类与生成触发 |
| 6 | P0 | xSkill流水线调度 | 灰度A/B验证自动判定 |
| 7 | P0 | xSkill流水线调度 | 流水线状态查询API |
| 8 | P0 | xSkill流水线调度 | 手动触发流水线API |
| 9 | P0 | Watcher线程管理 | WatcherManager全局管理器 |
| 10 | P0 | Watcher线程管理 | 用户注册/登录自动启动watcher |
| 11 | P0 | Watcher线程管理 | watcher状态监控API |
| 12 | P0 | Watcher线程管理 | 异常自动恢复(3次重试) |
| 13 | P0 | Watcher线程管理 | 优雅关闭机制 |
| 14 | P0 | 技能回滚 | 回滚到指定版本API |
| 15 | P0 | 技能回滚 | 版本历史弹窗(前端) |
| 16 | P0 | 技能回滚 | 回滚确认弹窗 |
| 17 | P1 | 萌芽动画 | baby技能萌芽CSS动画 |
| 18 | P1 | 萌芽动画 | staging技能呼吸CSS动画 |
| 19 | P1 | 萌芽动画 | 动画开关(localStorage持久化) |
| 20 | P1 | 时间线导出 | PNG导出(html2canvas) |
| 21 | P1 | 时间线导出 | PDF导出(jsPDF) |
| 22 | P1 | 时间线导出 | 时间范围选择 + 筛选联动 |
| 23 | P1 | 画像分享卡片 | 分享卡片生成(html2canvas) |
| 24 | P1 | 画像分享卡片 | 3种主题色切换 |
| 25 | P1 | 画像分享卡片 | 保存/复制/分享操作 |
| 26 | P1 | Skill加载提示标签 | 消息下方标签渲染 |
| 27 | P1 | Skill加载提示标签 | 多技能折叠(+N) |
| 28 | P1 | Skill加载提示标签 | 点击标签跳转技能详情 |
| 29 | P1 | Skill加载提示标签 | 聊天接口返回used_skills字段 |
| 30 | P2 | 技能市场联动 | 技能发布到市场 |
| 31 | P2 | 技能市场联动 | 市场进化技能标识 |
| 32 | P2 | 团队共享进化 | 技能团队共享开关 |
| 33 | P2 | 团队共享进化 | 团队技能池+借鉴复制 |
| 34 | P2 | 进化报告推送 | 周报/月报自动生成与推送 |
---
## 7. 版本规划
### 7.1 第二版交付范围
一次性交付全部P0+P1功能,P2功能选择技能市场联动+进化报告推送两项:
| 交付物 | 优先级 | 内容说明 |
|--------|--------|----------|
| **xSkill流水线自动调度** | P0 | PipelineScheduler + 6状态流转 + AtomTask拆分/索引/聚类/Skill生成 + 灰度验证 |
| **Watcher线程管理** | P0 | WatcherManager + 自动启动 + 状态监控 + 异常恢复 + 优雅关闭 |
| **技能回滚** | P0 | rollback API + 前端版本历史弹窗 + 回滚确认 + Git集成 |
| **萌芽动画** | P1 | baby/staging状态CSS动画 + 动画开关 |
| **时间线导出** | P1 | PNG/PDF导出 + 时间范围选择 |
| **画像分享卡片** | P1 | 分享卡片生成 + 主题切换 + 保存分享操作 |
| **Skill加载提示标签** | P1 | AI聊天消息下方标签 + 多技能折叠 + 点击跳转 |
| **技能市场联动** | P2 | 技能一键发布到市场 + 进化技能标识 |
| **进化报告推送** | P2 | 周报/月报自动生成 + 消息推送 + 报告查看页面 |
### 7.2 后续迭代方向
| 方向 | 说明 |
|------|------|
| **团队共享进化** | 与AI团队协作空间联动(P2剩余项) |
| **多模型进化** | 不同模型独立进化不同技能体系 |
| **进化加速** | 用户可消耗更多Token加速流水线扫描频率 |
| **进化质量排行榜** | 平台级技能质量排行,激励用户培养高质量技能 |
---
## 附录:v2与v1差异对照表
| 维度 | v1(已交付) | v2(本次迭代) |
|------|-------------|---------------|
| API端点 | 14个 | 23个(+9) |
| 数据库表 | 5张 | 8张(+3) |
| 进化引擎 | 数据展示层 | 真实xSkill流水线运行 |
| 轨迹处理 | 仅落盘(status=discovered) | 完整6状态流转到done |
| Watcher | 未启动 | WatcherManager全生命周期管理 |
| 技能回滚 | 无 | Git集成回滚+前端UI |
| 动画效果 | 静态色标 | baby萌芽动画+staging呼吸动画 |
| 导出分享 | 无 | 时间线PNG/PDF+画像分享卡片 |
| 聊天联动 | 无 | Skill加载提示标签+used_skills字段 |
| 业务联动 | 无 | 技能市场发布+进化报告推送 |
| 前端代码量 | ~1650行(TSX+CSS) | 预计新增~600行 |
---
> **文档状态**:已定稿
> **创建日期**:2026-05-29
> **文档版本**:v2.0
> **基于**:PRD v1.0 + 测试用例报告 + 测试GAP清单 + evolution_service.py (495行) + evolution.py (215行)
+528
View File
@@ -0,0 +1,528 @@
# AI自进化功能模块 - 产品需求文档(PRD)
---
## 1. 概述(Summary)
本文档为Qihu-AIFlow平台「AI自进化」功能模块的产品需求文档。该模块深度整合开源项目xSkill(https://github.com/SkillNerds/xskill)的自进化技能库引擎,让每个用户的AI在对话过程中持续学习、自动提炼技能、灰度验证后优胜劣汰,形成用户专属的AI能力体系。该功能被用户形象地称为「养龙虾」——在平台内培养不断进化的AI。
---
## 2. 联系人(Contacts)
| 姓名 | 角色 | 备注 |
|------|------|------|
| 项目负责人 | Team Lead | 项目整体规划与协调决策 |
| 产品经理 | Product Manager | PRD撰写、需求分析与产品设计 |
| UI设计师 | UI Designer | AI进化驾驶舱UI视觉设计 |
| 开发工程师 | Developer | xSkill后端整合 + 驾驶舱前端开发 |
| 测试工程师 | QA Engineer | 技能进化链路测试、数据隔离验证 |
---
## 3. 背景(Background)
### 3.1 业务背景
当前AI平台的对话能力是「静态」的——用户每次与AI互动,AI以同样的方式响应,不会从历史对话中学习成长。这意味着:
- 用户重复遇到相似问题时,AI每次都从零开始理解和处理
- 用户无法将自己在特定领域的成功经验「固化」为可复用的技能
- 平台的AI能力不会随着使用深度而个性化升级
- 竞品在AI自进化领域尚未形成标准方案,这是差异化突破口
### 3.2 时机分析
- **xSkill框架成熟**:xSkill已在PyPI发布(v0.5.2),提供完整的「轨迹→原子任务→技能聚类→技能生成→灰度验证」流水线
- **技术可行性已验证**:xSkill使用dulwich纯Python实现git版本管理,每个Skill独立仓库,支持baby/main/staging三态分支
- **用户需求明确**:用户希望拥有「越用越聪明」的AI助理,与平台的SaaS+PaaS定位高度契合
- **与现有平台无缝衔接**:自进化引擎在后台默默运行,无需另设AI聊天窗口,前端仅需增加进化驾驶舱看板
### 3.3 技术依托
- **xSkill开源框架**:核心流水线引擎,负责对话轨迹分析、原子任务拆分、技能聚类、技能生成、灰度验证
- **xSkill核心架构**:
- `XSkill` 顶层门面:持 config + registry + skill_repo,提供 search/serve/score_trajectory_ux
- `DirectoryWatcher` 流水线监听器:discovered → splitting → split_done → indexed → clustering → done
- `TaskAgent`:从轨迹拆分AtomTask(用户意图最小单元)
- `TaskClusterAgent`:将AtomTask智能聚类到已存在或新Skill
- `SkillEditAgent`:基于candidates buffer生成/更新SKILL.md
- `AtomCanary`:灰度系统,A/B测试新Skill版本,按UX评分优胜劣汰
- `SkillRepo`:每个Skill独立git仓库(baby→main→staging分支)管理版本
---
## 4. 目标与关键成果(Objective & Key Results)
### 4.1 产品目标
为Qihu-AIFlow平台每个用户提供**专属的AI自进化引擎**,AI在对话过程中自动学习、提炼技能、持续进化,最终形成用户独一无二的AI能力体系。前端通过「AI进化驾驶舱」直观展示进化过程和成果。
### 4.2 关键成果(OKR)
| 编号 | 关键结果 | 衡量标准 |
|------|----------|----------|
| KR1 | xSkill引擎成功整合至平台后端 | 对话轨迹可自动进入xSkill流水线处理 |
| KR2 | 每个用户拥有独立进化空间 | 技能仓库、向量索引、对话轨迹按user_id完全隔离 |
| KR3 | AI进化驾驶舱看板上线 | 技能图谱/进化时间线/使用统计/能力画像四个面板可用 |
| KR4 | 进化引擎持续运行 | 用户注册后自动启动,全程无感持续进化 |
| KR5 | 技能可手动管理 | 用户可查看、编辑、删除、冻结已生成的Skill |
---
## 5. 市场细分(Market Segments)
### 5.1 目标用户场景
| 用户类型 | 进化需求 | 典型场景 |
|----------|----------|----------|
| **职场个人用户** | AI越用越懂自己的工作流 | 逐步习得用户的报告风格、数据处理习惯、邮件模板偏好 |
| **副业创收个人** | AI掌握自媒体运营技能 | 积累不同类型内容的创作SOP、平台发布规则、SEO技巧 |
| **小微企业商家** | AI理解企业的业务流程 | 学习内部审批流、客户沟通风格、行业术语库 |
| **AI深度使用者** | 培养专属AI能力体系 | 持续优化AI在特定领域(编程/写作/设计)的输出质量 |
### 5.2 用户约束
- 进化过程应对用户透明,不干扰正常对话
- 用户应能随时查看进化成果,但不能感到被「监控」
- 技能数据完全私有,不能跨用户共享或泄露
- 系统默认持续进化,用户无需任何操作即可享受AI成长
---
## 6. 价值主张(Value Propositions)
### 6.1 核心价值
| 用户需求 | 平台方案 |
|----------|----------|
| 希望AI能记住并复用成功经验 | xSkill自动分析对话,提取成功模式固化为Skill |
| 希望直观看到AI的成长 | AI进化驾驶舱:技能树/时间线/统计/能力画像 |
| 不希望额外操作 | 后台全自动运行,系统默认持续进化,用户无需任何设置 |
| 需要控制权 | 技能管理(查看/编辑/删除/冻结),系统自动进化无需手动干预 |
| 数据安全不容妥协 | 每个用户独立xSkill实例和向量空间,完全物理隔离 |
### 6.2 差异化竞争优势
- **「养龙虾」独特体验**:行业首创的AI进化可视化看板,让用户直观感受AI成长
- **xSkill成熟引擎背书**:基于开源xSkill框架,流水线架构经过验证,非从零研发
- **全自动零打扰**:后台默默运行,用户只需聊天,AI自动进化
- **灰度验证机制**:新Skill经过A/B测试才能合入主干,确保进化质量
- **个人专属AI画像**:每位用户拥有独特的技能图谱和能力标签
---
## 7. 解决方案(Solution)
### 7.1 系统架构图
```
┌─────────────────────────────────────────────────────────────────────┐
│ 前台 - 用户侧 │
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌─────────────────────┐ │
│ │ AI聊天 │ │ 频道 │ │ 知识库 │ │ AI进化驾驶舱 🆕 │ │
│ │ │ │ │ │ │ │ │ │
│ │ 对话产生 │ │ │ │ │ │ · 技能图谱/树 │ │
│ │ 轨迹数据 │ │ │ │ │ │ · 进化时间线 │ │
│ │ ↓ │ │ │ │ │ │ · 技能使用统计 │ │
│ │ 自动进化 │ │ │ │ │ │ · AI能力画像 │ │
│ │ 持续运行 │ │ │ │ │ │ · 技能库管理 │ │
│ └──────────┘ └──────────┘ └──────────┘ └─────────────────────┘ │
└─────────────────────────────────────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────────────┐
│ 后端 - xSkill进化引擎 │
│ │
│ 用户对话 ──→ Trajectory(轨迹).md 文件 │
│ │ │
│ ▼ │
│ TaskAgent ──→ AtomTask(原子任务)拆分 │
│ │ │
│ ▼ │
│ Embedding + 向量索引 ──→ index.pkl │
│ │ │
│ ▼ │
│ TaskClusterAgent ──→ 归类到已有Skill / 新建Skill │
│ │ │
│ ▼ │
│ Candidates Buffer ──→ weightscore ≥ 10 触发 │
│ │ │
│ ▼ │
│ SkillEditAgent ──→ 生成/更新 SKILL.md + scripts/references │
│ │ │
│ ▼ │
│ Git版本管理 baby → main → staging │
│ │ │
│ ▼ │
│ AtomCanary ──→ A/B灰度验证 → promote/reject/timeout_discard │
│ │
│ 每个用户独立的xSkill实例 + 独立skill仓库 + 独立向量空间 │
└─────────────────────────────────────────────────────────────────────┘
```
### 7.2 核心功能详细说明
---
#### 功能一:默认全局持续进化
| 功能点 | 详细描述 |
|--------|----------|
| **设计理念** | 系统默认全局开启自进化,用户注册后立即启动,无需手动操作。进化引擎在后台持续运行,用户AI越用越聪明 |
| **启动时机** | 用户完成注册后,进化引擎自动初始化(创建独立skill仓库、初始化xSkill watcher线程),全程无需用户干预 |
| **持续运行** | 用户的每次AI对话结束时,对话记录自动提交至本用户的xSkill流水线进行分析,7x24持续进化 |
| **隐私保障** | AI进化驾驶舱首页展示:「进化数据仅属于你,完全私有,不会与任何人分享」。所有进化数据物理隔离存储 |
| **不可关闭** | 进化是平台核心能力,不可手动关闭。用户可在驾驶舱中管理(查看/编辑/删除/冻结)已生成的技能,但不能停止进化引擎本身 |
#### 功能二:对话自动分析(xSkill流水线整合)
| 功能点 | 详细描述 |
|--------|----------|
| **触发时机** | 每次AI对话会话结束时自动触发;或当对话累计达到一定轮数(如10轮)时增量触发 |
| **轨迹标准化** | 将平台AI聊天记录标准化为xSkill兼容的`.md`轨迹格式,包含`## User`/`## Assistant`轮次标记 |
| **流水线处理** | 轨迹进入xSkill `DirectoryWatcher`流水线:discovered → splitting → split_done → indexed → clustering → done |
| **原子任务拆分** | `TaskAgent`按用户意图切换点将对话拆分为多个`AtomTask`(每个AtomTask包含1-10轮对话) |
| **向量索引** | 对每个AtomTask的summary/intent做embedding,存入用户独立的`index.pkl`向量索引 |
| **技能聚类** | `TaskClusterAgent`遍历新AtomTask,通过向量相似度搜索定位已有Skill,将原子任务归类到最匹配的Skill的候选缓冲区(candidates buffer) |
| **资源控制** | 每个用户的xSkill watcher线程独立运行,使用用户专属的LLM API密钥进行分析调用 |
| **失败重试** | 单次原子任务聚类失败不阻塞整条轨迹,失败原子任务在下一轮watcher扫描时自动重试(最多3次) |
#### 功能三:技能库管理
| 功能点 | 详细描述 |
|--------|----------|
| **技能列表** | 在AI进化驾驶舱中展示用户所有已生成的Skill列表,支持按名称/标签/创建时间搜索和排序 |
| **技能详情** | 点击Skill名称查看完整SKILL.md内容,包括:名称、描述、使用触发条件、执行步骤、版本号、来源对话追溯 |
| **手动编辑** | 用户可直接编辑SKILL.md正文(包含frontmatter和body),保存后进入git版本管理 |
| **技能删除** | 用户可删除不需要的Skill。删除后对应git仓库标记为删除,可在一定时间内恢复 |
| **技能冻结/解冻** | 用户可冻结某个Skill(设置为只读),冻结后xSkill不会再更新该Skill。解冻后恢复自动进化 |
| **技能回滚** | 用户可查看Skill的git版本历史(SKILL.md的diff),并回滚到任意历史版本 |
| **对话溯源** | 每个Skill展示"来源对话"列表,点击可跳转到原始对话记录(如有保存) |
#### 功能四:AI进化驾驶舱(核心前端看板)
这是用户与AI自进化功能交互的核心界面,包含4个子面板:
##### 面板A:技能图谱/技能树
| 功能点 | 详细描述 |
|--------|----------|
| **技能树展示** | 以树形/网状图谱展示用户已掌握的所有AI技能,按技能分类自动分组 |
| **技能状态标识** | 用不同颜色/图标标识技能状态:`baby`(萌芽中,粉色)、`main`(已成熟,绿色)、`staging`(灰度测试中,橙色)、`frozen`(已冻结,灰色) |
| **技能节点信息** | 鼠标悬停显示:技能名称、简短描述、使用次数、最后更新时间 |
| **交互操作** | 点击节点进入技能详情页 |
| **增长动画** | 新技能生成时,技能树上有「萌芽」动画效果(符合「养龙虾」理念) |
##### 面板B:进化时间线
| 功能点 | 详细描述 |
|--------|----------|
| **时间线展示** | 以时间轴形式展示AI的技能进化历程,按时间倒序排列 |
| **里程碑事件** | 记录关键进化节点:新技能诞生、技能重大更新(权重分≥8)、灰度验证通过/拒绝、技能冻结等 |
| **事件卡片** | 每个里程碑显示:时间、事件类型(图标)、技能名称、简短描述(从哪些对话中学到了什么) |
| **筛选能力** | 支持按时间范围、事件类型、技能分类筛选时间线 |
| **导出能力** | 支持将进化时间线导出为图片或PDF分享 |
##### 面板C:技能使用统计
| 功能点 | 详细描述 |
|--------|----------|
| **Top技能排行** | 按使用频率展示TOP N技能,显示每个技能的使用次数和最近一次触发时间 |
| **技能调用趋势** | 折线图展示每日/每周技能调用总量变化趋势 |
| **技能贡献分布** | 饼图展示不同类别技能的使用占比 |
| **最活跃技能** | 标出最近7天内最频繁被调用的前3个技能 |
| **零使用技能提醒** | 自动标识超过30天未使用的技能,建议用户审视或清理 |
| **交互联动** | 点击统计图表中的任意项可跳转到对应技能详情 |
##### 面板D:用户专属AI能力画像
| 功能点 | 详细描述 |
|--------|----------|
| **能力雷达图** | 以六维/八维雷达图展示用户AI的能力分布(如:文字创作、数据分析、代码能力、知识问答、流程自动化、创意生成等维度) |
| **能力标签** | 基于已生成Skill自动打标,展示用户AI的能力关键词标签云 |
| **进化等级** | 根据技能数量、使用频率、技能成熟度等指标计算「AI进化等级」(如Lv.1 ~ Lv.10),直观展示成长阶段 |
| **成长建议** | 基于当前技能缺口,智能推荐「使用这些对话场景来培养新技能」 |
| **画像分享** | 支持将AI能力画像(不含私密数据)生成为分享卡片,可在社交媒体展示 |
#### 功能五:与现有AI聊天模块的无缝衔接
| 功能点 | 详细描述 |
|--------|----------|
| **静默运行** | xSkill进化引擎在后台独立运行,完全不改变/不影响现有的AI聊天交互体验 |
| **不另设聊天窗口** | 自进化功能复用现有的AI聊天模块,不需要额外的聊天界面 |
| **Skill加载提示** | 当某次对话中AI调用了自进化生成的Skill时,在消息下方显示小标签:「🚀 使用了你的专属技能:XXX」 |
| **对话结束钩子** | 每次对话会话正常结束或用户切换话题时,将完整对话轨迹异步提交至进化引擎 |
| **批量处理** | 支持在低负载时段(如凌晨)批量处理白天的对话轨迹,避免影响高峰体验 |
#### 功能六:数据隔离(用户级别)
| 功能点 | 详细描述 |
|--------|----------|
| **Skill仓库隔离** | 每个用户在服务器上有独立的skill根目录:`{data_dir}/users/{user_id}/skills/`,不同用户仓库物理隔离 |
| **向量空间隔离** | 每个用户拥有独立的向量索引文件:`{data_dir}/users/{user_id}/index.pkl`,完全独立embedding |
| **对话轨迹隔离** | 每个用户的对话轨迹存储在独立目录:`{data_dir}/users/{user_id}/trajectories/` |
| **xSkill实例隔离** | 每个用户拥有独立的`XSkill`实例(独立config + registry + skill_repo),后端按user_id路由 |
| **Watcher线程隔离** | 每个用户拥有独立的`DirectoryWatcher`线程,注册后自动启动,处理各自目录的轨迹 |
| **权限验证** | 所有xSkill API调用前验证user_id,确保A用户无法访问B用户的Skill/trajectory/atom数据 |
---
### 7.3 数据库设计概要
#### 7.3.1 新增关系型数据库表
**用户进化配置表:**
| 表名 | 说明 | 核心字段 |
|------|------|----------|
| `user_evolution_config` | 用户进化配置表 | id, user_id, skill_dir_path, trajectory_dir_path, watcher_status(运行中/已停止/错误), created_at, updated_at |
**技能管理表(MySQL中记录Skill元数据):**
| 表名 | 说明 | 核心字段 |
|------|------|----------|
| `user_skills` | 用户技能表 | id, user_id, skill_name, description, tags(json), state(baby/main/staging/frozen), use_count, version, git_commit_sha, skill_md_path, created_at, updated_at |
| `skill_evolution_events` | 技能进化事件表 | id, user_id, skill_name, event_type(created/promoted/rejected/frozen/unfrozen/edited/deleted), description, version_before, version_after, created_at |
| `skill_trajectory_links` | 技能-轨迹关联表 | id, skill_name, user_id, trajectory_id, atom_id, weightscore, created_at |
**对话轨迹表:**
| 表名 | 说明 | 核心字段 |
|------|------|----------|
| `evolution_trajectories` | 进化轨迹表 | id, user_id, conversation_id, file_path, status(discovered/splitting/split_done/indexed/clustering/done/error/filtered), atom_count, token_used, created_at, processed_at |
#### 7.3.2 文件系统存储(每用户独立)
```
{data_dir}/users/{user_id}/
├── config.yaml # xSkill配置文件(用户专属LLM配置等)
├── skills/ # Skill git仓库根目录
│ ├── fix_python_bug/ # 示例Skill:修复Python bug
│ │ ├── .git/ # 独立git仓库
│ │ ├── SKILL.md # 技能定义文件
│ │ ├── .candidates.yml # 候选原子任务缓冲区
│ │ ├── .ux_scores.jsonl # UX评分记录
│ │ ├── scripts/ # 可执行脚本
│ │ └── references/ # 参考资料
│ └── write_blog_post/ # 示例Skill:写博客文章
│ └── ...
├── trajectories/ # 对话轨迹文件
│ ├── traj_0001/
│ │ ├── traj_0001.md # 标准化轨迹文件
│ │ └── tasks/ # 原子任务文件
│ │ ├── atom_traj_0001_0001.json
│ │ └── atom_traj_0001_0002.json
│ ├── index.pkl # 向量索引文件
│ └── evolve.db # xSkill SQLite状态数据库
└── evolution.log # 进化引擎日志
```
---
### 7.4 xSkill整合方案
#### 7.4.1 整合策略
采用**封装模式**整合xSkill开源框架——将xSkill作为后端Python库引用,通过用户级别的wrapper封装为平台服务:
```
平台后端服务(FastAPI)
└── EvolutionService(进化服务层)
├── 用户级别的 xSkill 实例管理
│ └── dict[user_id, XSkill] + dict[user_id, DirectoryWatcher]
├── 对话轨迹提交API
│ └── POST /app/evolution/trajectory/submit
├── 技能查询API
│ └── GET /app/evolution/skills
│ └── GET /app/evolution/skills/{name}
│ └── PUT /app/evolution/skills/{name}
│ └── DELETE /app/evolution/skills/{name}
├── 驾驶舱数据API
│ └── GET /app/evolution/dashboard/skill-tree
│ └── GET /app/evolution/dashboard/timeline
│ └── GET /app/evolution/dashboard/statistics
│ └── GET /app/evolution/dashboard/profile
└── 进化事件API
└── GET /app/evolution/events
```
#### 7.4.2 关键API接口
| 接口 | 方法 | 说明 |
|------|------|------|
| `/app/evolution/trajectory/submit` | POST | 提交对话轨迹到进化流水线 |
| `/app/evolution/skills` | GET | 获取用户所有技能列表 |
| `/app/evolution/skills/{name}` | GET/PUT/DELETE | 技能详情/编辑/删除 |
| `/app/evolution/skills/{name}/freeze` | POST | 冻结技能 |
| `/app/evolution/skills/{name}/unfreeze` | POST | 解冻技能 |
| `/app/evolution/skills/{name}/rollback/{version}` | POST | 回滚到指定版本 |
| `/app/evolution/skills/{name}/history` | GET | 技能版本历史(git log) |
| `/app/evolution/skills/{name}/trajectories` | GET | 技能来源轨迹列表 |
| `/app/evolution/dashboard/skill-tree` | GET | 技能图谱数据 |
| `/app/evolution/dashboard/timeline` | GET | 进化时间线数据 |
| `/app/evolution/dashboard/statistics` | GET | 技能使用统计 |
| `/app/evolution/dashboard/profile` | GET | AI能力画像数据 |
| `/app/evolution/events` | GET | 进化事件列表 |
#### 7.4.3 用户级别xSkill实例管理
```python
# 伪代码示意
class EvolutionService:
_instances: dict[str, XSkillInstance] = {}
def get_or_create_instance(user_id: str) -> XSkillInstance:
"""获取或创建用户专属的xSkill实例"""
if user_id not in self._instances:
config = self._load_user_config(user_id)
instance = XSkillInstance(
xskill=XSkill(config_path=config.config_path),
watcher=DirectoryWatcher(...),
user_id=user_id,
)
instance.watcher.start() # 注册即启动,默认持续进化
self._instances[user_id] = instance
return self._instances[user_id]
```
---
### 7.5 关键假设与约束
| 编号 | 假设/约束 | 风险等级 |
|------|-----------|----------|
| A1 | xSkill v0.5.2框架可通过pip安装并稳定运行 | 低 |
| A2 | 每个用户独立运行xSkill watcher不会导致服务器资源耗尽 | 中 |
| A3 | 对话轨迹标准化格式与xSkill兼容 | 低 |
| A4 | 用户对「后台分析对话」接受度良好 | 低 |
| C1 | 进化引擎不得修改现有AI聊天模块的行为 | 强约束 |
| C2 | 每个用户的数据完全物理隔离 | 强约束 |
| C3 | 进化引擎持续运行,不可手动停止 | 强约束 |
| C4 | xSkill使用用户LLM调用额度进行技能分析(不额外收费) | 设计决策 |
| C5 | 前端驾驶舱通过API获取数据,不做实时WebSocket推送 | 设计决策 |
---
## 8. 版本规划
### 8.1 当前版本交付范围
一次性交付全部功能:
| 交付物 | 内容说明 |
|--------|----------|
| **默认全局持续进化** | 注册即启动进化引擎,全程无需用户干预 |
| **对话自动分析** | xSkill流水线整合:轨迹标准化 → AtomTask拆分 → 向量索引 → 聚类 → Skill生成/更新 |
| **技能库管理** | 技能列表、详情、编辑、删除、冻结/解冻、回滚、对话溯源 |
| **AI进化驾驶舱** | 4个子面板:技能图谱、进化时间线、技能使用统计、AI能力画像 |
| **数据隔离** | 每用户独立xSkill实例、独立skill仓库、独立向量空间、独立轨迹目录 |
| **与AI聊天衔接** | 对话结束钩子、Skill加载提示标签、静默运行不干扰 |
### 8.2 后续迭代方向
| 方向 | 说明 |
|------|------|
| **技能发现与共享** | 用户可选择将优秀Skill匿名贡献到平台Skill集市(需用户主动操作,非自动) |
| **团队进化空间** | 团队共享技能进化(与预留的「AI团队协作空间」联动) |
| **进化加速** | 用户可消耗更多Token加速进化(如:更频繁的流水线扫描间隔) |
| **多模型进化** | 支持不同模型独立进化不同技能体系 |
---
## 附录A:xSkill核心流水线详解
### 流水线状态转换
```
discovered ──→ splitting ──→ split_done ──→ indexed ──→ clustering ──→ done
↑ │
└── error ←── retry ──────┘
```
### Skill三级分支状态机
```
baby ──→ main ──→ staging ──→ (promoted → 合并到main)
│
└── (rejected → 丢弃staging)
│
└── (timeout → 14天未验证 → 丢弃staging)
```
### AtomTask UX评分分档表
| 分数 | 含义 |
|------|------|
| 10 | 一次到位:用户提需求 → agent一步给出正确产出 → 用户接受无澄清 |
| 9 | 接近一次到位:仅一处细节澄清 |
| 8 | 正确完成但绕了1个小弯 |
| 7 | 正确完成,2-3次澄清/修正;无明显不耐烦 |
| 6 | 完成度边界("这就行吧") |
| 5 | 核心需求达成但遗漏明显细节 |
| 4 | 多次错误后才接近正确,用户≥2次否定词 |
| 3 | 任务勉强完成但用户明显失望 |
| 2 | 任务未完成 / 反复blocker / 用户放弃 |
| 1 | 完全失败或副作用 |
---
## 附录B:功能需求清单
### 前台功能清单(共5大功能模块,25个功能点)
| 序号 | 模块 | 功能点 |
|------|------|--------|
| 1 | 技能库管理 | 技能列表展示(搜索/排序/筛选) |
| 2 | 技能库管理 | 技能详情查看(SKILL.md完整内容) |
| 3 | 技能库管理 | 手动编辑Skill |
| 4 | 技能库管理 | 删除Skill |
| 5 | 技能库管理 | 冻结/解冻Skill |
| 6 | 技能库管理 | 版本历史查看(git log) |
| 7 | 技能库管理 | 回滚到历史版本 |
| 8 | 技能库管理 | 来源对话追溯 |
| 9 | 进化驾驶舱-A | 技能图谱/技能树展示 |
| 10 | 进化驾驶舱-A | 技能状态标识(baby/main/staging/frozen) |
| 11 | 进化驾驶舱-A | 新技能萌芽动画 |
| 12 | 进化驾驶舱-B | 进化时间线展示 |
| 13 | 进化驾驶舱-B | 里程碑事件卡片 |
| 14 | 进化驾驶舱-B | 时间线与事件筛选 |
| 15 | 进化驾驶舱-B | 进化时间线导出 |
| 16 | 进化驾驶舱-C | 技能使用排行 |
| 17 | 进化驾驶舱-C | 技能调用趋势图 |
| 18 | 进化驾驶舱-C | 技能贡献分布图 |
| 19 | 进化驾驶舱-C | 零使用技能提醒 |
| 20 | 进化驾驶舱-D | 能力雷达图 |
| 21 | 进化驾驶舱-D | 能力标签云 |
| 22 | 进化驾驶舱-D | AI进化等级 |
| 23 | 进化驾驶舱-D | 成长建议 |
| 24 | 进化驾驶舱-D | 画像分享卡片 |
| 25 | 聊天衔接 | Skill加载提示标签 |
### 后端功能清单(共5大功能模块,17个功能点)
| 序号 | 模块 | 功能点 |
|------|------|--------|
| 1 | xSkill引擎整合 | 用户级别xSkill实例管理 |
| 2 | xSkill引擎整合 | DirectoryWatcher线程管理 |
| 3 | xSkill引擎整合 | 对话轨迹标准化转换 |
| 4 | xSkill引擎整合 | AtomTask拆分与存储 |
| 5 | xSkill引擎整合 | 向量索引构建 |
| 6 | xSkill引擎整合 | Skill聚类与生成 |
| 7 | xSkill引擎整合 | 灰度A/B测试 |
| 8 | xSkill引擎整合 | git版本管理 |
| 9 | xSkill引擎整合 | 用户Skill仓库初始化 |
| 10 | 技能管理API | 技能CRUD |
| 11 | 技能管理API | 版本回滚 |
| 12 | 驾驶舱数据API | 技能树/时间线/统计/画像数据 |
| 13 | 数据隔离 | 每用户独立skill_dir |
| 14 | 数据隔离 | 每用户独立trajectory_dir |
| 15 | 数据隔离 | 每用户独立向量索引 |
| 16 | 数据隔离 | API调用user_id强制验证 |
| 17 | 对话轨迹钩子 | 对话结束自动提交轨迹 |
---
> **文档状态**:已定稿
> **创建日期**:2026-05-26
> **文档版本**:v1.0
> **基于框架**:xSkill v0.5.2 (https://github.com/SkillNerds/xskill)
+548
View File
@@ -0,0 +1,548 @@
# AI智能自动化PaaS平台 - 产品需求文档(PRD)
---
## 1. 概述(Summary)
本文档为AI智能自动化PaaS平台(SaaS+PaaS混合架构)的完整产品需求文档。平台面向个人用户与小微企业,提供一站式AI自动化SOP能力,用户无需编码即可落地全流程AI自动化业务。平台商业模式为会员订阅+单点增值付费双营收体系,前台对标QwenPaw交互体验,后台提供完整的运营管理与商业化配置能力。
---
## 2. 联系人(Contacts)
| 姓名 | 角色 | 备注 |
|------|------|------|
| 项目负责人 | Team Lead | 项目整体规划与协调决策 |
| 产品经理 | Product Manager | PRD撰写、需求分析与产品设计 |
| UI设计师 | UI Designer | 前台+后台UI视觉与交互设计 |
| 开发工程师 | Developer | 全栈系统架构设计与代码实现 |
| 测试工程师 | QA Engineer | 功能测试、安全测试、自动化测试 |
---
## 3. 背景(Background)
### 3.1 业务背景
当前AI工具市场存在以下痛点:
- 个人用户难以将AI能力直接转化为实际商业价值
- 缺乏面向非技术用户的AI自动化工作流搭建工具
- 市面AI平台缺乏完整的商业化闭环(会员+增值+交易市场)
- 小微企业在财务、人事、运营、电商、自媒体等方面急需可落地的标准化AI SOP
### 3.2 时机分析
- 大模型能力日趋成熟,API调用成本持续下降,为PaaS化封装创造可行条件
- 个人副业经济与小企业数字化转型需求爆发,目标用户群体广泛
- 竞品QwenPaw已验证AI聊天+频道的交互模式,但缺乏完整的商业化生态
### 3.3 技术依托
- 深度复用开源项目BuildingAI的成熟底层架构与能力模块
- 关系型数据库(MySQL)+ 向量数据库(RAGFlow)双库部署
- 基于Codpard平台全链路AI开发能力进行云端协作
---
## 4. 目标与关键成果(Objective & Key Results)
### 4.1 产品目标
打造一套**私有化部署、面向个人及小微企业的AI自动化SOP一站式PaaS平台**,提供从AI对话、知识管理、技能市场到Token计费、会员订阅的完整闭环体验。
### 4.2 关键成果(OKR)
| 编号 | 关键结果 | 衡量标准 |
|------|----------|----------|
| KR1 | 前台完成8大功能板块上线 | 所有功能可正常访问,交互对齐QwenPaw |
| KR2 | 后台完成7大管理模块上线 | 管理员可完整配置运营、计费、风控 |
| KR3 | 会员订阅+增值付费双营收体系可用 | 微信支付/支付宝全链路调通 |
| KR4 | 用户数据物理隔离 | 跨用户聊天、知识库、RAG数据零泄露 |
| KR5 | 全系统操作日志不可删除、完整可追踪 | 日志查询与导出功能可用 |
---
## 5. 市场细分(Market Segments)
### 5.1 目标用户群体
| 用户类型 | 核心诉求 | 典型场景 |
|----------|----------|----------|
| **职场个人用户** | 提升工作效率 | 文档处理、数据分析、邮件撰写、PPT生成 |
| **副业创收个人** | AI自动化创收 | 自媒体运营、电商店铺管理、内容创作 |
| **小微企业商家** | 业务增长赋能 | 财务自动化、人事管理、客户服务SOP |
| **全权AI托管需求者** | 业务流程外包 | 全业务AI托管、自动化报表、智能客服 |
### 5.2 用户约束
- 无编程基础,需要零代码操作体验
- 对AI能力有需求但不愿直接对接大模型API
- 对价格敏感,需要灵活付费(月付/季付/年付/单次购买)
- 数据安全意识日益增强,需保障私密性
---
## 6. 价值主张(Value Propositions)
### 6.1 客户需求满足
| 客户需求 | 平台方案 |
|----------|----------|
| 快速落地AI自动化 | 预置标准化SOP模板,一键部署AI工作流 |
| 自建知识库 | 独立RAGFlow向量空间,文档一键切片向量化 |
| 交易变现 | 应用市场支持用户上架自研应用并自主定价 |
| 费用透明可控 | Token驾驶舱实时展示消耗、自动预警、一键充值 |
| 数据安全可控 | 用户间完全物理隔离,逻辑层+数据库双层隔离 |
### 6.2 差异化竞争优势
- **对标QwenPaw但商业化更完整**:在聊天+频道基础上,增加Token驾驶舱、应用市场、付费中心
- **双营收体系**:会员订阅+单点增值付费可叠加,用户灵活选择
- **用户数据物理隔离**:RAG向量空间每个用户独立空间,杜绝交叉访问
- **开放的应用市场**:用户可自主发布并售卖Skills/Agent/MCP应用
- **完整后台运营**:管理员可自主管理模型、定价、会员、风控全线
---
## 7. 解决方案(Solution)
### 7.1 用户流程图(User Flow)
#### 前台用户主流程
```
用户注册/登录
├── AI聊天(选模型→对话→挂载知识库/Agent/技能)
├── 频道(创建频道→配置Agent/知识库→邀请协作)
├── 知识库(上传文档→切片向量化→目录管理→挂载至对话/频道)
├── 应用市场(浏览→查看详情→购买/安装→使用)
├── Token驾驶舱(查看总览→排名→明细→导出→充值)
├── 付费中心(选择会员→支付→查看订单/优惠券)
├── 个人中心(安全设置→API密钥→订单/会员/已购管理)
└── 消息通知(公告/提醒/续费/订单通知)
```
#### 后台管理主流程
```
管理员登录后台
├── 大模型库管理(接入模型→配置API密钥→设置计费单价→开关状态)
├── 网站基础设置(LOGO/名称/公告/备案号→邮件/短信配置)
├── 支付渠道配置(微信支付→支付宝→订单对账/退款)
├── 增值服务管理(上架/编辑/下架→定制服务→订单管理)
├── 会员订阅体系(创建等级→配置价格→配置权益→自动降级)
├── 应用市场审核(审核应用→管理优惠券→官方应用上下架)
└── 日志与风控(操作日志→调用日志→付费日志→封禁/限流)
```
### 7.2 核心功能详细说明
---
#### 模块一:AI聊天板块
| 功能点 | 详细描述 |
|--------|----------|
| **多模型切换** | 支持在对话中切换平台接入的所有大模型,模型列表由后台动态配置 |
| **多轮上下文对话** | 支持连续多轮对话,保持完整上下文;支持单轮对话独立提问 |
| **对话记录保存** | 所有对话自动保存至云端,数据仅归属当前用户,其他用户完全不可见 |
| **对话管理** | 支持对话重命名、对话删除、对话归档、上下文一键清空 |
| **增强对话** | 支持对话时挂载个人知识库、挂载第三方Agent(含已购应用)、挂载技能工具 |
| **对话列表** | 左侧对话历史列表,支持搜索、筛选 |
#### 模块二:频道板块
| 功能点 | 详细描述 |
|--------|----------|
| **自建频道** | 用户可创建专属AI协作频道,频道内绑定固定Agent、固定技能、专属知识库 |
| **多人协作** | 频道支持多人协作对话,用户可自主邀请好友进入,平台不公开频道 |
| **数据隔离** | 频道内所有会话、配置数据独立隔离,不同频道数据完全互不互通 |
| **频道管理** | 支持频道命名、成员管理、配置修改、解散频道 |
#### 模块三:个人知识库 & 知识图谱板块(RAGFlow)
| 功能点 | 详细描述 |
|--------|----------|
| **独立向量空间** | 每位注册用户分配完全独立的RAGFlow向量空间,物理隔离 |
| **文档上传与切片** | 支持上传文档(PDF/Word/Excel/PPT/TXT)、网页URL、本地文件,一键切片向量化 |
| **知识图谱构建** | 自动构建私有化个人知识图谱,支持语义检索与问答溯源 |
| **目录管理** | 支持知识库拆分目录层级管理,方便分类组织 |
| **权限控制** | 知识库默认仅自己可见 |
| **知识库挂载** | 支持将知识库挂载至AI对话、频道、Agent中,增强回答准确性 |
| **问答溯源** | 知识库问答时展示引用原文与来源文档路径 |
#### 模块四:应用市场板块
| 功能点 | 详细描述 |
|--------|----------|
| **三大分类** | Skills工具、智能Agent、MCP协议应用,固定三类不可变更 |
| **应用来源** | ①平台官方免费上架应用;②普通用户自主上传自研应用,可商业化售卖 |
| **发布配置** | 发布者设置固定单次购买价格;选择是否参与平台统一优惠券满减活动 |
| **应用权限** | 购买后仅本人账号可用,不可转租、不可共享 |
| **会员权益** | 会员用户可免费使用标注为"会员专属"的应用 |
| **评分系统** | 用户可对已购应用进行评分评价 |
| **应用详情** | 详情介绍页:应用说明、使用教程、评分展示、价格信息 |
| **一键安装** | 购买后一键安装到个人应用列表 |
| **已购管理** | 个人中心查看、管理所有已购应用 |
#### 模块五:Token消耗驾驶舱(数据可视化面板)
| 功能点 | 详细描述 |
|--------|----------|
| **核心总览** | 累计总消耗Token、当前使用中的应用数量(实时统计) |
| **消耗排名** | 个人账号消耗量第一的大模型、消耗量TOP3应用清单 |
| **明细账单** | 完整Token消耗明细表,按时间/模型/应用分类展示每一笔调用消耗与扣费金额 |
| **余额预警** | Token余额不足时自动弹窗提醒,提示一键充值 |
| **数据导出** | 支持Token消耗明细导出(CSV/Excel格式) |
#### 模块六:订阅付费中心
| 功能点 | 详细描述 |
|--------|----------|
| **会员周期性订阅** | 按月订阅、按季度订阅、按年度订阅三档时长,不同等级匹配不同权益 |
| **会员权益** | 免费模型额度、免费应用使用权限、专属模型使用权 |
| **单独增值服务** | 不依赖会员,用户可单独按需购买一次性增值服务 |
| **支付方式** | 支持微信支付、支付宝支付 |
| **订单管理** | 所有订单全程可查,支持开具电子凭证 |
| **优惠券** | 支持平台发放优惠券,用户下单时可使用 |
#### 模块七:个人中心
| 功能点 | 详细描述 |
|--------|----------|
| **账号安全** | 密码修改、绑定手机/邮箱、登录日志查看 |
| **我的订单** | 查看全部订单(会员订单+增值服务订单),按状态筛选 |
| **我的会员** | 查看当前会员等级、到期时间、自动续费开关 |
| **我的优惠券** | 查看可用优惠券、已用优惠券、过期优惠券 |
| **我的已购应用** | 查看和管理所有已购Skills/Agent/MCP应用 |
| **API密钥管理** | 生成/管理个人API密钥,支持第三方程序对接平台模型能力 |
#### 模块八:消息通知中心
| 功能点 | 详细描述 |
|--------|----------|
| **平台公告** | 接收管理员发布的全平台公告 |
| **会员提醒** | 会员到期提醒、续费成功通知 |
| **余额提醒** | Token余量不足提醒 |
| **应用通知** | 已购应用更新通知 |
| **订单通知** | 支付成功/失败/退款结果通知 |
---
#### 后台模块一:大模型库管理
| 功能点 | 详细描述 |
|--------|----------|
| **模型接入** | 统一接入管理各类大模型供应商,支持添加/编辑/删除模型接口 |
| **API配置** | 填写模型API密钥、接口地址、超时参数 |
| **状态管控** | 单独管控每款模型状态:开启免费调用 / 开启付费调用 |
| **计费配置** | 统一按照"元/百万Token"单位设置扣费单价,输入即实时生效 |
| **全局统计** | 查看全平台所有用户全局模型调用统计数据 |
#### 后台模块二:网站基础信息设置
| 功能点 | 详细描述 |
|--------|----------|
| **品牌配置** | 网站前台LOGO、网站名称、首页公告、备案号、客服联系方式 |
| **邮件配置** | 邮件服务器配置(SMTP),用于发送会员到期通知、验证码、账单邮件 |
| **短信配置** | 对接第三方短信接口,用于手机号验证码、异常登录短信告警 |
#### 后台模块三:支付渠道配置
| 功能点 | 详细描述 |
|--------|----------|
| **微信支付** | 商户号、密钥、证书完整配置 |
| **支付宝支付** | 应用ID、支付密钥、接口配置 |
| **订单管理** | 统一订单回调管理、支付订单对账、退款后台操作功能 |
#### 后台模块四:增值服务管理
| 功能点 | 详细描述 |
|--------|----------|
| **虚拟增值服务** | 上架、编辑、下架各类一次性AI虚拟增值服务 |
| **定制服务** | 后台上架Skills、Agent、MCP三类定制开发服务,用户可付费下单定制 |
| **订单管理** | 增值服务订单管理、售后处理、订单状态修改 |
#### 后台模块五:会员订阅体系管理
| 功能点 | 详细描述 |
|--------|----------|
| **会员等级管理** | 自定义新增/编辑/删除多级会员等级,配置月/季/年三档订阅价格 |
| **权益配置** | 配置各等级会员可免费使用的应用市场Skills/Agent/MCP清单 |
| **免费额度配置** | 设置不同等级会员每日免费Token额度、免费专属大模型 |
| **自动化规则** | 会员到期自动降级、自动续费开关配置 |
#### 后台模块六:应用市场审核管理
| 功能点 | 详细描述 |
|--------|----------|
| **应用审核** | 审核普通用户上传的Skills/Agent/MCP应用,审核通过后上架,违规应用强制下架 |
| **优惠券管理** | 平台优惠券活动创建、编辑、发放,管控用户付费应用是否参与满减活动 |
| **官方应用管理** | 平台官方应用上下架管理 |
#### 后台模块七:全平台日志与用户风控管理
| 功能点 | 详细描述 |
|--------|----------|
| **操作日志** | 全平台用户操作日志查询与导出(不可手动删除) |
| **调用日志** | 模型调用日志查询与导出(不可手动删除) |
| **付费日志** | 付费订单日志查询与导出(不可手动删除) |
| **风控管理** | 用户账号封禁/解封、API调用限流、异常调用风控拦截 |
---
### 7.3 数据库设计概要
#### 7.3.1 关系型数据库(MySQL 8)
**用户与权限相关表:**
| 表名 | 说明 | 核心字段 |
|------|------|----------|
| `users` | 用户表 | id, username, email, phone, password_hash, avatar, role(普通用户/管理员), status(正常/封禁), created_at, updated_at |
| `login_logs` | 登录日志表 | id, user_id, ip, user_agent, login_at |
| `api_keys` | API密钥表 | id, user_id, api_key, secret, status, created_at, expired_at |
**AI聊天与频道相关表:**
| 表名 | 说明 | 核心字段 |
|------|------|----------|
| `conversations` | 对话会话表 | id, user_id, title, model_id, status(活跃/归档), created_at, updated_at |
| `messages` | 对话消息表 | id, conversation_id, role(用户/助手/系统), content, token_used, model_id, knowledge_ids, agent_ids, created_at |
| `channels` | 频道表 | id, owner_id, name, description, default_agent_id, knowledge_base_id, status, created_at |
| `channel_members` | 频道成员表 | id, channel_id, user_id, role(创建者/成员), joined_at |
| `channel_messages` | 频道消息表 | id, channel_id, user_id, role, content, token_used, created_at |
**知识库相关表:**
| 表名 | 说明 | 核心字段 |
|------|------|----------|
| `knowledge_bases` | 知识库表 | id, user_id, name, description, directory_path, created_at, updated_at |
| `knowledge_documents` | 知识文档表 | id, knowledge_base_id, filename, file_type, file_size, status(处理中/已完成/失败), chunk_count, created_at |
| `knowledge_directories` | 知识目录表 | id, user_id, parent_id, name, created_at |
**应用市场相关表:**
| 表名 | 说明 | 核心字段 |
|------|------|----------|
| `market_apps` | 应用市场表 | id, name, type(Skills/Agent/MCP), source(官方/用户自研), publisher_id, description, price, is_member_free, join_promotion(是否参与优惠券), status(审核中/已上架/已下架), rating_avg, created_at |
| `app_purchases` | 应用购买表 | id, user_id, app_id, price, payment_id, created_at |
| `app_reviews` | 应用评价表 | id, user_id, app_id, rating, content, created_at |
| `app_installations` | 应用安装表 | id, user_id, app_id, installed_at |
**付费与订单相关表:**
| 表名 | 说明 | 核心字段 |
|------|------|----------|
| `membership_plans` | 会员等级表 | id, name, level, duration_type(月/季/年), price, daily_free_tokens, created_at |
| `membership_subscriptions` | 用户订阅表 | id, user_id, plan_id, start_at, end_at, auto_renew, status(生效中/已过期/已降级), created_at |
| `orders` | 订单表 | id, user_id, order_type(会员/增值服务), amount, payment_method(微信/支付宝), status(待支付/已支付/已退款), payment_id, created_at |
| `coupons` | 优惠券表 | id, code, type, value, min_amount, valid_from, valid_to, status, created_at |
| `user_coupons` | 用户优惠券表 | id, user_id, coupon_id, status(未使用/已使用/已过期) |
| `value_added_services` | 增值服务表 | id, name, description, price, type, status(上架/下架), created_at |
| `custom_service_orders` | 定制服务订单 | id, user_id, service_type(Skills/Agent/MCP), description, status, price, created_at |
**Token与计费相关表:**
| 表名 | 说明 | 核心字段 |
|------|------|----------|
| `model_providers` | 模型供应商表 | id, name, api_base_url, created_at |
| `models` | 大模型表 | id, provider_id, name, api_key, endpoint, timeout, status(免费/付费), price_per_million_tokens, is_enabled, created_at |
| `token_usage_logs` | Token消耗日志 | id, user_id, model_id, app_id, conversation_id, prompt_tokens, completion_tokens, total_tokens, cost, created_at |
| `token_balances` | Token余额表 | id, user_id, total_consumed, balance, updated_at |
**通知与日志相关表:**
| 表名 | 说明 | 核心字段 |
|------|------|----------|
| `notifications` | 通知表 | id, user_id, type(公告/提醒/续费/订单), title, content, is_read, created_at |
| `operation_logs` | 操作日志表 | id, user_id, action, target, detail, ip, created_at |
| `audit_logs` | 审计日志表 | id, admin_id, action, target_type, target_id, detail, created_at |
**系统配置相关表:**
| 表名 | 说明 | 核心字段 |
|------|------|----------|
| `site_settings` | 网站设置表 | id, key, value, updated_at |
| `email_configs` | 邮箱配置表 | id, smtp_host, smtp_port, username, password, from_address, created_at |
| `sms_configs` | 短信配置表 | id, provider, api_key, api_secret, sign_name, created_at |
| `payment_configs` | 支付配置表 | id, type(微信/支付宝), app_id, merchant_id, api_key, cert_path, status, created_at |
**预留扩展字段表:**
| 表名 | 说明 |
|------|------|
| `teams` | 团队表(预留:AI团队协作空间) |
| `referrals` | 分销推广表(预留:用户推广返佣) |
| `open_api_clients` | API开放平台表(预留:对外售卖模型调用接口) |
#### 7.3.2 向量数据库(RAGFlow)
| 集合/空间 | 说明 | 隔离方式 |
|-----------|------|----------|
| `user_{user_id}_vectors` | 每个用户独立向量空间 | 按用户ID物理隔离,独立集合 |
| 向量文档 | 文档切片后的embedding向量 | 关联knowledge_documents.id |
| 元数据 | 文档来源、切片序号、目录路径 | 用于检索溯源 |
---
### 7.4 技术方案概要
#### 7.4.1 技术栈
| 层级 | 技术选型 |
|------|----------|
| **前端** | TypeScript + React + Vite, HashRouter路由 |
| **后端** | Python 3(FastAPI)或 Golang |
| **关系型数据库** | MySQL 8(已配置:localhost:3306) |
| **向量数据库** | RAGFlow(独立部署,每位用户独立向量空间) |
| **缓存** | Redis(已配置:localhost:6379) |
| **支付** | 微信支付 + 支付宝支付(后端配置) |
#### 7.4.2 架构原则
- **双库部署**:关系型数据库存储业务数据,向量数据库存储知识图谱数据
- **用户数据隔离**:逻辑层+数据库层双层隔离,所有查询必须带user_id过滤
- **后端端口**:18080端口,接口路径以`/app`为前缀
- **前端部署**:构建产物输出至`/data/share/project/frontend/dist`
- **权限体系**:前台用户与后台管理员完全隔离,管理员无法访问用户私密数据
- **日志不可删除**:所有操作日志、调用日志、付费日志数据库级别禁止DELETE操作
---
### 7.5 关键假设与约束
| 编号 | 假设/约束 | 风险等级 |
|------|-----------|----------|
| A1 | BuildingAI开源框架底层可直接复用,减少50%以上开发重复工作 | 中 |
| A2 | RAGFlow支持按用户创建独立向量空间 | 低 |
| A3 | 微信支付/支付宝支付可顺利完成商户号申请与配置 | 低 |
| A4 | 大模型API供应商接口稳定可用 | 中 |
| A5 | 目标用户对QwenPaw交互模式有基础认知 | 低 |
| C1 | 必须遵循Nginx代理配置,前端端口8080,后端端口18080 | 强约束 |
| C2 | 所有文件必须放在`/data/share/project`目录下 | 强约束 |
| C3 | 用户数据强制物理隔离为最高优先级要求 | 强约束 |
---
## 8. 版本规划
### 8.1 当前版本交付范围
本次一次性交付全部功能,不做分阶段开发:
| 交付物 | 内容说明 |
|--------|----------|
| **前台8大板块** | AI聊天、频道、知识库、应用市场、Token驾驶舱、付费中心、个人中心、消息通知 |
| **后台7大模块** | 大模型库管理、网站设置、支付配置、增值服务、会员体系、应用审核、日志风控 |
| **完整数据库** | 关系型数据库全套建表语句 + 向量数据库部署文档 |
| **前后端源码** | 完整可编译/可运行的前后端源代码 |
| **部署方案** | 云端一键部署 + Docker Compose本地私有化部署 |
### 8.2 后续迭代预留
| 预留模块 | 当前处理方式 |
|----------|--------------|
| AI团队协作空间 | 数据库预留表结构,前端页面占位 |
| 平台分销推广体系 | 数据库预留表结构,前端页面占位 |
| API开放平台 | 数据库预留表结构,前端页面占位 |
---
## 附录:功能需求清单
### 前台功能清单(共8大板块,51个功能点)
| 序号 | 板块 | 功能点 |
|------|------|--------|
| 1 | AI聊天 | 多模型切换 |
| 2 | AI聊天 | 多轮上下文连续对话 |
| 3 | AI聊天 | 对话记录云端保存 |
| 4 | AI聊天 | 对话重命名 |
| 5 | AI聊天 | 对话删除 |
| 6 | AI聊天 | 对话归档 |
| 7 | AI聊天 | 上下文清空 |
| 8 | AI聊天 | 挂载个人知识库 |
| 9 | AI聊天 | 挂载第三方Agent |
| 10 | AI聊天 | 挂载技能工具 |
| 11 | 频道 | 自建频道 |
| 12 | 频道 | 频道绑定固定Agent |
| 13 | 频道 | 频道绑定固定技能 |
| 14 | 频道 | 频道绑定专属知识库 |
| 15 | 频道 | 邀请好友协作 |
| 16 | 频道 | 频道会话数据隔离 |
| 17 | 知识库 | 独立RAGFlow向量空间 |
| 18 | 知识库 | 上传文档/表格/网页/本地文件 |
| 19 | 知识库 | 一键切片向量化 |
| 20 | 知识库 | 知识图谱构建 |
| 21 | 知识库 | 目录管理 |
| 22 | 知识库 | 权限设置(仅自己可见) |
| 23 | 知识库 | 挂载至对话/频道/Agent |
| 24 | 知识库 | 问答溯源与原文查看 |
| 25 | 应用市场 | Skills/Agent/MCP三大分类 |
| 26 | 应用市场 | 官方应用上架 |
| 27 | 应用市场 | 用户自主上传自研应用 |
| 28 | 应用市场 | 发布者自定义单次购买价格 |
| 29 | 应用市场 | 选择是否参与优惠券满减 |
| 30 | 应用市场 | 购买后仅本人可用 |
| 31 | 应用市场 | 会员免费使用专属应用 |
| 32 | 应用市场 | 应用评分评价 |
| 33 | 应用市场 | 应用详情介绍 |
| 34 | 应用市场 | 应用使用教程 |
| 35 | 应用市场 | 一键安装 |
| 36 | 应用市场 | 已购应用管理 |
| 37 | Token驾驶舱 | 累计总消耗Token |
| 38 | Token驾驶舱 | 当日使用中应用数量 |
| 39 | Token驾驶舱 | 消耗量第一的大模型 |
| 40 | Token驾驶舱 | 消耗量TOP3应用 |
| 41 | Token驾驶舱 | Token消耗明细表 |
| 42 | Token驾驶舱 | 余额预警弹窗 |
| 43 | Token驾驶舱 | 一键充值 |
| 44 | Token驾驶舱 | 数据导出 |
| 45 | 付费中心 | 会员月/季/年订阅 |
| 46 | 付费中心 | 单独增值服务购买 |
| 47 | 付费中心 | 微信支付/支付宝支付 |
| 48 | 付费中心 | 订单查询 |
| 49 | 付费中心 | 电子凭证开具 |
| 50 | 个人中心 | 账号安全/密码/登录日志 |
| 51 | 个人中心 | 订单/会员/优惠券/已购/API密钥管理 |
| 52 | 消息通知 | 公告/到期/余额/更新/订单通知 |
### 后台功能清单(共7大模块,31个功能点)
| 序号 | 模块 | 功能点 |
|------|------|--------|
| 1 | 大模型库管理 | 添加/编辑/删除模型供应商 |
| 2 | 大模型库管理 | 配置API密钥/超时参数 |
| 3 | 大模型库管理 | 开启免费/付费状态开关 |
| 4 | 大模型库管理 | 自定义Token计费单价 |
| 5 | 大模型库管理 | 全局调用统计 |
| 6 | 网站基础设置 | LOGO/名称/公告/备案号配置 |
| 7 | 网站基础设置 | 邮件服务器配置 |
| 8 | 网站基础设置 | 短信接口配置 |
| 9 | 支付渠道配置 | 微信支付配置 |
| 10 | 支付渠道配置 | 支付宝支付配置 |
| 11 | 支付渠道配置 | 订单对账与退款 |
| 12 | 增值服务管理 | 虚拟增值服务上架/编辑/下架 |
| 13 | 增值服务管理 | Skills/Agent/MCP定制服务 |
| 14 | 增值服务管理 | 订单管理与售后 |
| 15 | 会员订阅体系 | 多级会员等级管理 |
| 16 | 会员订阅体系 | 月/季/年订阅价格配置 |
| 17 | 会员订阅体系 | 会员免费应用清单配置 |
| 18 | 会员订阅体系 | 免费Token额度配置 |
| 19 | 会员订阅体系 | 自动降级/自动续费配置 |
| 20 | 应用市场审核 | 应用审核与违规下架 |
| 21 | 应用市场审核 | 优惠券活动管理 |
| 22 | 应用市场审核 | 官方应用上下架 |
| 23 | 日志与风控 | 全平台操作日志查询导出 |
| 24 | 日志与风控 | 模型调用日志查询导出 |
| 25 | 日志与风控 | 付费订单日志查询导出 |
| 26 | 日志与风控 | 用户账号封禁/解封 |
| 27 | 日志与风控 | API调用限流 |
| 28 | 日志与风控 | 异常调用风控拦截 |
---
> **文档状态**:已定稿
> **创建日期**:2026-05-26
> **文档版本**:v1.0
Binary file not shown.

After

Width:  |  Height:  |  Size: 5.8 KiB

+233
View File
@@ -0,0 +1,233 @@
# AIFlow 前端开发记录文档
## 项目概述
AIFlow 智能自动化PaaS平台,面向个人用户与小微企业,提供AI对话、知识库、应用市场、Token计费等一站式服务。前端包含前台8大板块 + 后台7大模块。
## 技术栈
- TypeScript + React 18 + Vite 5
- React Router v6 (HashRouter)
- 纯CSS(CSS Variables设计系统)
- 内联SVG图标(无第三方图标库)
## 设计系统
- **色彩**:暖灰蓝基调(#F8F9FB背景),品牌色#5B5FED(紫蓝),暗色侧边栏
- **字体**:Inter(正文)+ JetBrains Mono(代码/数字)
- **圆角系统**:6/8/12/16/20/9999px
- **阴影系统**:xs/sm/md/lg/xl五档
- **间距系统**:4px倍率(4/8/12/16/20/24/32/40/48)
## 文件结构
```
src/
├── App.tsx # 路由配置 + AuthContext
├── main.tsx # 入口
├── vite-env.d.ts
├── types/index.ts # 完整类型定义
├── mock/data.ts # Mock数据层(独立,方便后续替换)
├── styles/global.css # 设计令牌 + 全局样式 + 工具类
├── components/layout/
│ ├── FrontLayout.tsx/css # 前台侧边栏布局
│ └── AdminLayout.tsx/css # 后台深色侧边栏布局
└── pages/
├── front/
│ ├── LoginPage.tsx/css # 登录页
│ ├── ChatPage.tsx/css # AI聊天
│ ├── ChannelPage.tsx/css # 频道
│ ├── KnowledgePage.tsx/css # 知识库
│ ├── MarketPage.tsx/css # 应用市场
│ ├── TokenDashboardPage.tsx/css # Token驾驶舱
│ ├── PricingPage.tsx/css # 付费中心
│ ├── ProfilePage.tsx/css # 个人中心
│ └── NotificationPage.tsx/css # 消息通知
└── admin/
├── Dashboard.tsx # 管理概览
├── Models.tsx # 大模型库管理
├── SiteSettings.tsx # 网站基础设置
├── Payment.tsx # 支付渠道配置
├── Services.tsx # 增值服务管理
├── Membership.tsx # 会员订阅体系
├── Market.tsx # 应用市场审核
└── Logs.tsx # 日志与风控
```
## 前台8大板块功能完成情况
### 1. 登录页 (LoginPage)
- [x] 品牌展示面板(深色渐变背景 + 特性介绍)
- [x] 登录/注册Tab切换
- [x] 邮箱+密码登录表单
- [x] 一键体验登录(Demo用户/Pro用户/管理员)
- [x] 登录后自动跳转(用户→前台,管理员→后台)
### 2. AI聊天 (ChatPage)
- [x] 左侧对话列表(280px侧边栏),支持搜索过滤
- [x] 新建对话按钮
- [x] 对话更多操作:重命名/归档/删除
- [x] 右侧聊天区域:模型选择器 + 消息列表 + 输入框
- [x] 消息气泡(用户靠右紫色,AI靠左白色)
- [x] 简单Markdown渲染(标题/粗体/代码块/列表)
- [x] 挂载面板:知识库/Agent/技能下拉选择
- [x] 对话数据从Mock层加载
- [ ] 实际API对接
- [ ] 完整Markdown渲染(表格/图片等)
### 3. 频道 (ChannelPage)
- [x] 频道列表页:2列网格卡片布局
- [x] 频道详情页:频道信息 + 对话模拟
- [x] 频道绑定Agent/知识库标签展示
- [x] 成员数展示
- [x] 创建频道按钮(UI)
- [ ] 实际消息发送与接收
- [ ] 成员邀请功能
### 4. 知识库 (KnowledgePage)
- [x] 知识库列表:可展开卡片
- [x] 文档列表:文件类型标签(PDF/Word/Excel)
- [x] 文档状态标签:已完成/处理中/失败
- [x] 简易目录树展示
- [x] 上传文档按钮(UI)
- [x] 构建知识图谱按钮 + 处理中动画
- [ ] 实际文件上传
- [ ] 真实向量化处理
### 5. 应用市场 (MarketPage)
- [x] 4个筛选Tab(全部/Skills/Agent/MCP)
- [x] 3列应用卡片网格
- [x] SVG星级评分展示
- [x] 官方认证标识
- [x] 价格/会员免费展示
- [x] 应用详情Modal(描述/评分/评价/安装)
- [x] 类型图标区分
- [ ] 真实支付与安装流程
### 6. Token驾驶舱 (TokenDashboardPage)
- [x] 3个统计卡片(渐变色背景)
- [x] 数字千分位格式化
- [x] 消耗排行榜(TOP模型 + TOP3应用)
- [x] Token消耗明细表格
- [x] 余额预警横幅
- [x] 导出/充值按钮(UI)
- [ ] 真实数据统计
- [ ] CSV/Excel导出
### 7. 付费中心 (PricingPage)
- [x] 3个会员等级卡片(月/季/年切换)
- [x] 当前方案高亮
- [x] 权益列表展示
- [x] 增值服务卡片
- [x] 优惠券展示
- [x] 支付方式图标
- [ ] 真实支付对接(微信/支付宝)
### 8. 个人中心 (ProfilePage)
- [x] 6个Tab导航(账号安全/订单/会员/优惠券/已购/API密钥)
- [x] 修改密码表单
- [x] 订单列表 + 状态过滤
- [x] 会员信息卡片 + 自动续费开关
- [x] 优惠券列表 + 状态过滤
- [x] 已购应用列表
- [x] API密钥管理
- [ ] 真实API密钥生成
- [ ] 绑定手机/邮箱验证
### 9. 消息通知 (NotificationPage)
- [x] 通知类型筛选Tab(全部/未读/公告/提醒/续费/订单)
- [x] 不同类型SVG图标(颜色区分)
- [x] 未读标记(蓝色圆点)
- [x] 点击标记已读
- [x] 全部标为已读按钮
- [x] 相对时间显示
- [ ] WebSocket实时推送
- [ ] 真实消息通知
## 后台7大模块功能完成情况
### 1. 管理概览 (Dashboard)
- [x] 4个统计卡片
- [x] 最近操作日志表格
- [x] 最近审计日志表格
- [x] 快速入口链接
### 2. 大模型库管理 (Models)
- [x] 模型供应商卡片
- [x] 模型管理表格(名称/供应商/状态/单价/调用量)
- [x] 添加/编辑模型弹窗表单
- [x] 启用/停用开关
- [ ] 真实API验证
### 3. 网站基础设置 (SiteSettings)
- [x] 品牌设置表单
- [x] 邮件配置表单
- [x] 短信配置表单
- [x] 各区块保存按钮
### 4. 支付渠道配置 (Payment)
- [x] 微信支付配置卡片
- [x] 支付宝配置卡片
- [x] 订单管理表格(含退款操作)
### 5. 增值服务管理 (Services)
- [x] 增值服务列表
- [x] 上架/编辑服务弹窗
- [x] 定制服务订单管理
### 6. 会员订阅体系 (Membership)
- [x] 3个会员等级编辑
- [x] 价格配置(月/季/年)
- [x] 权益管理
- [x] Token额度配置
- [x] 自动化规则配置
### 7. 应用市场审核 (Market)
- [x] 待审核应用列表
- [x] 审核通过/拒绝操作
- [x] 优惠券管理(创建/编辑)
- [x] 官方应用上下架
### 8. 日志与风控 (Logs)
- [x] 3个日志Tab(操作/调用/付费)
- [x] 用户封禁/解封管理
- [x] API限流配置
- [x] 导出按钮(UI)
## 数据Mock层
所有Mock数据集中管理在 `src/mock/data.ts`,与业务代码分离。后续接入后端时:
1. 创建 `src/api/` 目录
2. 实现对应API调用函数
3. 替换页面中的 `import from '@/mock/data'` 为API调用
4. 删除 `src/mock/` 目录即可
## 部署信息
- **构建产物路径**:`/data/share/project/frontend/dist/`
- **前端访问地址**:`http://s-3686137677310083075-773.team-coding:8080`
- **访问方式**:浏览器打开上述地址,自动跳转到 `/#/login` 登录页
- **Nginx**:已配置8080端口指向 `dist/` 目录
- **后端接口前缀**:`/app`(接口需在18080端口)
## 登录账号
| 账号 | 角色 | 密码 |
|------|------|------|
| demo_user | 普通用户(专业版会员) | 任意 |
| pro_user | 普通用户(企业版会员) | 任意 |
| admin | 管理员 | 任意 |
> 登录页提供一键登录按钮,无需输入密码。
## 后续待办
1. [ ] 替换Mock数据为真实API调用
2. [ ] 实现完整的Markdown渲染(react-markdown)
3. [ ] 接入WebSocket实现实时消息推送
4. [ ] 实现文件真实上传功能
5. [ ] 对接微信支付/支付宝支付SDK
6. [ ] 添加表单验证逻辑
7. [ ] 完善错误处理和加载状态
8. [ ] 添加单元测试和E2E测试
9. [ ] 实现i18n国际化(如需要)
Binary file not shown.

After

Width:  |  Height:  |  Size: 188 KiB