- 前端 React+TypeScript (源码+构建产物) - 后端 Python FastAPI - 数据库迁移 001-015 - Docker部署配置 - 微信ClawBot API频道绑定 - 项目文档 README.md
35 KiB
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 第二版目标
第二版解决两个核心问题:
- 让进化真正跑起来:落地xSkill流水线自动调度,实现对话→技能的完整自动化链路
- 补齐交互体验缺口:实现萌芽动画、时间线导出、画像分享、Skill加载提示等前端互动细节
- 增强业务联动:技能市场互通、团队共享、定期报告等增值功能
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数量 |
技术实现要点:
# 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),超出时新用户排队等待 |
服务层新增方法:
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动画定义(核心片段):
/* 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行)