Feature Flag:
FEATURE_EXPERIMENTAL_SKILL_SEARCH=1实现状态:全部 Stub(8 个文件),布线完整 引用数:21
EXPERIMENTAL_SKILL_SEARCH 提供 DiscoverSkills 工具,根据当前任务语义搜索可用技能。目标是让模型在执行任务时自动发现和推荐相关的技能(包括本地和远程),无需用户手动查找。
| 模块 | 文件 | 状态 | 说明 |
|---|---|---|---|
| DiscoverSkillsTool | src/tools/DiscoverSkillsTool/prompt.ts |
Stub | 空工具名 |
| 预取 | src/services/skillSearch/prefetch.ts |
Stub | 3 个函数全部空操作 |
| 远程加载 | src/services/skillSearch/remoteSkillLoader.ts |
Stub | 返回空结果 |
| 远程状态 | src/services/skillSearch/remoteSkillState.ts |
Stub | 返回 null/undefined |
| 信号 | src/services/skillSearch/signals.ts |
Stub | DiscoverySignal = any |
| 遥测 | src/services/skillSearch/telemetry.ts |
Stub | 空操作日志 |
| 本地搜索 | src/services/skillSearch/localSearch.ts |
Stub | 空操作缓存 |
| 功能检查 | src/services/skillSearch/featureCheck.ts |
Stub | isSkillSearchEnabled => false |
| SkillTool 集成 | src/tools/SkillTool/SkillTool.ts |
布线 | 动态加载所有远程技能模块 |
| 提示集成 | src/constants/prompts.ts |
布线 | DiscoverSkills schema 注入 |
模型处理用户任务
│
▼
DiscoverSkills 工具触发 [需要实现]
│
├── 本地搜索:索引已安装技能元数据
│ └── localSearch.ts → 技能名称/描述/关键字匹配
│
└── 远程搜索:查询技能市场/注册表
└── remoteSkillLoader.ts → fetch + 解析
│
▼
结果排序和过滤
│
▼
返回推荐技能列表
│
▼
模型使用 SkillTool 调用推荐技能
prefetch.ts 预期在用户提交输入前分析消息内容,提前搜索相关技能:
startSkillDiscoveryPrefetch()— 开始预取collectSkillDiscoveryPrefetch()— 收集预取结果getTurnZeroSkillDiscovery()— 获取 turn 0 的技能发现结果
| 优先级 | 模块 | 工作量 | 说明 |
|---|---|---|---|
| 1 | DiscoverSkillsTool |
大 | 语义搜索工具 schema + 执行 |
| 2 | skillSearch/prefetch.ts |
中 | 用户输入分析和预取逻辑 |
| 3 | skillSearch/remoteSkillLoader.ts |
大 | 远程市场/注册表获取 |
| 4 | skillSearch/remoteSkillState.ts |
小 | 已发现技能状态管理 |
| 5 | skillSearch/localSearch.ts |
中 | 本地索引构建/查询 |
| 6 | skillSearch/featureCheck.ts |
小 | GrowthBook/配置门控 |
| 7 | skillSearch/signals.ts |
小 | DiscoverySignal 类型定义 |
- 预取优化:在用户提交前就开始搜索,减少首次响应延迟
- 本地+远程双搜索:本地索引快速匹配 + 远程市场深度搜索
- SkillTool 集成:发现的技能通过 SkillTool 调用,不需要新的调用机制
- 独立于 MCP_SKILLS:MCP_SKILLS 从 MCP 服务器发现,EXPERIMENTAL_SKILL_SEARCH 从技能市场发现
# 启用 feature(需要补全后才能真正使用)
FEATURE_EXPERIMENTAL_SKILL_SEARCH=1 bun run dev| 文件 | 职责 |
|---|---|
src/tools/DiscoverSkillsTool/prompt.ts |
工具 schema(stub) |
src/services/skillSearch/prefetch.ts |
预取逻辑(stub) |
src/services/skillSearch/remoteSkillLoader.ts |
远程加载(stub) |
src/services/skillSearch/remoteSkillState.ts |
远程状态(stub) |
src/services/skillSearch/signals.ts |
信号类型(stub) |
src/services/skillSearch/telemetry.ts |
遥测(stub) |
src/services/skillSearch/localSearch.ts |
本地搜索(stub) |
src/services/skillSearch/featureCheck.ts |
功能检查(stub) |
src/tools/SkillTool/SkillTool.ts |
SkillTool 集成点 |
src/constants/prompts.ts:95,335,778 |
提示增强 |