Skill Market MVP 实现计划
创建日期: 2026-03-20
状态: 研究完成,待实现
优先级: P1 - 中期计划 (M2)
一、背景研究
1.1 现有代码分析
经过代码审查,发现以下关键组件已存在但需要集成和完善:
已存在组件
| 组件 |
路径 |
状态 |
问题 |
| SkillMarket.tsx |
desktop/src/components/SkillMarket.tsx |
已实现 |
使用本地 SkillDiscoveryEngine,未接入后端 |
| skillMarketStore.ts |
desktop/src/store/skillMarketStore.ts |
已实现 |
使用硬编码技能列表,未接入 configStore |
| skill-discovery.ts |
desktop/src/lib/skill-discovery.ts |
已实现 |
使用 localStorage + 静态技能注册表 |
| skill-market.ts (类型) |
desktop/src/types/skill-market.ts |
已实现 |
Skill/SkillReview/SkillMarketState 类型 |
| configStore.ts |
desktop/src/store/configStore.ts |
已实现 |
包含 skillsCatalog 和技能 CRUD 方法 |
| gateway-api.ts |
desktop/src/lib/gateway-api.ts |
已实现 |
包含 listSkills/getSkill/createSkill 等方法 |
技能定义文件
skills/ 目录包含 74 个 SKILL.md 文件
- 格式: YAML frontmatter + Markdown 正文
- 包含: name, description, triggers, tools, capabilities 等
1.2 当前架构问题
- 双轨系统:
SkillMarket.tsx 使用 SkillDiscoveryEngine,但 configStore.ts 已有完整的技能管理逻辑
- 硬编码技能:
skillMarketStore.ts 的 scanSkillsDirectory() 返回硬编码列表,未读取实际 SKILL.md
- 后端未连接: 组件未通过
GatewayClient 与后端 /api/skills 通信
- 安装状态不同步:
skillMarketStore 和 configStore 各自维护 installed 状态
1.3 数据流现状
二、MVP 功能范围
2.1 核心功能
| 功能 |
优先级 |
描述 |
| 技能浏览 |
P0 |
展示所有可用技能,支持分类筛选 |
| 技能搜索 |
P0 |
按名称、触发词、能力搜索 |
| 技能详情 |
P0 |
展示技能详细信息(能力、触发词、工具依赖) |
| 安装/卸载 |
P0 |
切换技能启用状态,持久化到后端 |
| 分类过滤 |
P1 |
按类别筛选技能 |
2.2 MVP 不包含
- 技能评分和评论(已有代码但 MVP 不启用)
- 技能推荐引擎(suggestSkills 功能)
- 技能市场在线同步
- 技能版本管理
- 自定义技能创建
2.3 技能卡片信息
每张技能卡片需要展示:
三、技术架构
3.1 目标数据流
3.2 组件依赖关系
3.3 类型统一
使用 configStore.ts 中的 SkillInfo 类型作为标准:
需要与 skill-market.ts 中的 Skill 类型做适配:
四、实现步骤
Phase 1: Store 统一 (1-2 天)
目标: 让 SkillMarket 使用 configStore 而非 SkillDiscoveryEngine
任务清单
文件变更
| 文件 |
操作 |
desktop/src/components/SkillMarket.tsx |
修改 |
desktop/src/lib/skill-adapter.ts |
新建 |
Phase 2: 后端集成 (2-3 天)
目标: 实现真正的安装/卸载功能
任务清单
文件变更
| 文件 |
操作 |
desktop/src/store/configStore.ts |
修改(增强 updateSkill) |
desktop/src/components/SkillMarket.tsx |
修改(安装/卸载逻辑) |
Phase 3: 搜索和分类 (1-2 天)
目标: 完善搜索和分类过滤功能
任务清单
文件变更
| 文件 |
操作 |
desktop/src/components/SkillMarket.tsx |
修改 |
desktop/src/hooks/useSkillSearch.ts |
新建(可选) |
Phase 4: UI 完善 (1-2 天)
目标: 提升用户体验
任务清单
文件变更
| 文件 |
操作 |
desktop/src/components/SkillMarket.tsx |
修改 |
desktop/src/components/SkillCardSkeleton.tsx |
新建 |
Phase 5: 测试和文档 (1 天)
目标: 确保质量和可维护性
任务清单
文件变更
| 文件 |
操作 |
tests/desktop/skill-market.test.ts |
新建 |
docs/features/04-skills-ecosystem/02-skill-discovery.md |
更新 |
五、文件变更清单
新建文件
| 文件路径 |
用途 |
desktop/src/lib/skill-adapter.ts |
SkillInfo <-> Skill 类型适配 |
desktop/src/hooks/useSkillSearch.ts |
技能搜索 hook(可选) |
desktop/src/components/SkillCardSkeleton.tsx |
加载骨架屏 |
tests/desktop/skill-market.test.ts |
测试文件 |
修改文件
| 文件路径 |
变更内容 |
desktop/src/components/SkillMarket.tsx |
使用 configStore,优化 UI |
desktop/src/store/configStore.ts |
增强 updateSkill,添加乐观更新 |
docs/features/04-skills-ecosystem/02-skill-discovery.md |
更新文档 |
docs/features/README.md |
更新集成状态 |
可删除文件
| 文件路径 |
原因 |
desktop/src/store/skillMarketStore.ts |
合并到 configStore 后废弃 |
desktop/src/types/skill-market.ts |
使用 configStore 类型替代 |
六、风险和缓解
6.1 技术风险
| 风险 |
可能性 |
影响 |
缓解措施 |
后端 /api/skills 未返回完整数据 |
中 |
高 |
添加 fallback 到本地技能列表 |
| 类型不兼容 |
低 |
中 |
创建适配器层 |
| 性能问题(74个技能渲染) |
低 |
低 |
虚拟滚动(后期优化) |
6.2 用户体验风险
| 风险 |
可能性 |
影响 |
缓解措施 |
| 安装状态不同步 |
中 |
高 |
使用单一数据源(configStore) |
| 搜索不准确 |
中 |
中 |
优化搜索算法,支持触发词匹配 |
| 操作无反馈 |
低 |
中 |
添加 Toast 提示 |
七、验收标准
7.1 功能验收
7.2 性能验收
7.3 质量验收
八、时间估算
| 阶段 |
估算时间 |
依赖 |
| Phase 1: Store 统一 |
1-2 天 |
无 |
| Phase 2: 后端集成 |
2-3 天 |
Phase 1 |
| Phase 3: 搜索和分类 |
1-2 天 |
Phase 2 |
| Phase 4: UI 完善 |
1-2 天 |
Phase 3 |
| Phase 5: 测试和文档 |
1 天 |
Phase 4 |
| 总计 |
6-10 天 |
- |
九、后续迭代方向
9.1 短期优化
- 技能推荐引擎(基于对话上下文)
- 技能使用统计
- 技能收藏功能
9.2 中期扩展
9.3 长期愿景
十、参考资料
10.1 相关文档
10.2 相关代码
desktop/src/lib/skill-discovery.ts - 技能发现引擎
desktop/src/store/configStore.ts - 配置状态管理
desktop/src/lib/gateway-api.ts - API 方法实现
skills/.templates/skill-template.md - 技能模板
10.3 技能文件示例
skills/code-review/SKILL.md - 简单格式示例
skills/data-analysis/SKILL.md - 带表格示例
skills/devops-automator/SKILL.md - 完整模板示例