<!-- locale: zh-CN -->

# discover-agent 技能

## L0：一句话摘要

根据用户需求描述，在已注册的智能体中匹配并推荐最合适的 Agent。

## L1：概述

流程型技能：理解需求 → `ManageAgent(action='list')` 检索 → 语义匹配评分 → 排序展示 → 引导选择；无匹配时自动衔接 create-agent。适用于用户不知该找哪个智能体、想浏览可用智能体、新用户初次了解、或对当前 Agent 不满意想找替代者。价值在工具给不了的部分：需求语义匹配（而非关键词搜索）、候选排序与呈现、无匹配时的创建衔接。`list` / `get` 只读免审批。

## L2：详细规范

流程：需求理解 → 检索 → 匹配评估 → 排序 → 展示 → 引导选择。

### 阶段 1：需求理解

触发（任一）：用户说"帮我找一个… / 有没有… / 谁能帮我…"、描述任务但未指定智能体、"有哪些智能体"，或系统检测到需求与当前 Agent 能力不匹配。从描述提取维度：`domain`（领域，如法律/财务/技术/教育）、`task_type`（咨询/审查/分析/创作）、`keywords`（合同/报表/代码/论文…）、`urgency`（日常/紧急）。

### 阶段 2：检索

`ManageAgent(action='list')` 取全部已注册智能体（返回 name / id / status / description 的紧凑列表）。`list/get` 是 ManageAgent 的只读能力，可直接调用，不要求先加载创建、更新、克隆或删除技能。过滤：默认展示 offline 之外的，offline 仅在无更优候选时补充；排除系统内部智能体（如 DesireCore 自身，除非用户显式要求）。

### 阶段 3：匹配评估

用 LLM 语义理解综合判断匹配度（非公式计算）：description / persona 与需求的相关性、skills 与任务类型的关联、领域契合度、状态可用性（online 优先）。展示分级：高度匹配 → 标"推荐"，部分匹配 → 标"可能相关"，无明显关联 → 不展示。

### 阶段 4：排序

综合得分降序；同分 online 优先；展示最相关的若干个，数量由你按相关性自主把握。

### 阶段 5：结果展示

- **有匹配**：列出候选，每个含名称、描述、关键技能、状态、匹配度，请用户选择或进一步细化需求。例如「1. 法律顾问助手（92%）——合同审查与法律风险评估；技能：合同审查 / 风险评估 / 法律研究；在线」。
- **无匹配**：告知未找到，给三选项——用更具体描述重试 / 创建新专业智能体（衔接 create-agent）/ 浏览全部。
- **浏览模式**（用户要看全部）：按在线 / 离线分组列出名称 + 描述，问是否要看某个的详情。

### 阶段 6：引导选择

- 选中某智能体 → 切换到该智能体的对话，传递用户需求上下文（source / target / user_intent）。
- 要求了解更多 → `ManageAgent(action='get', id)` 取详情（名称 / 描述 / 状态 / 版本 / 技能数 / 工具数 / Git 状态），以自然语言或表格呈现关键信息，问是否对话。
- 不满意候选 → 引导细化需求或建议创建新 Agent。
- 选"创建新的" → 调 create-agent 技能，传递已收集的需求信息。

### 协作与错误处理

- 协作：无匹配衔接 create-agent（传需求作初始信息）；匹配成功后可创建任务并分配给目标 Agent。
- 错误：工具调用失败 → 提示错误、建议重试；Agent 列表为空 → 引导创建第一个智能体；需求过于模糊 → 追问并给领域选项引导；`get` 返回「智能体不存在: <id>」→ 回退 `list` 重新确认可用智能体；推荐 Agent 状态异常 → 标注状态并建议选在线的。
- `list` / `get` 均为只读、免审批、无风险，一律经 `ManageAgent` 完成。
