# delete-agent 技能 ## L0:一句话摘要 安全删除指定的智能体及其关联数据,包括文件系统、内存状态和可选的会话历史。 ## L1:概述与使用场景 ### 能力描述 delete-agent 是一个**元技能(Meta-Skill)**,赋予 DesireCore 安全删除其他智能体的能力。它通过进程内内置工具 **ManageAgent** 执行完整的前置检查、状态验证,并清理所有关联数据。 ### 使用场景 - 用户想要清理不再使用的智能体 - 删除测试或实验性质的临时智能体 - 释放存储空间,删除旧智能体及其历史记录 - 用户明确要求"删除"、"移除"某个智能体 ### 核心价值 - **安全性**:工具层多重拒绝规则确保不会误删核心智能体、调用方自身或活跃智能体 - **完整性**:清理文件系统、内存状态、消息订阅等所有关联数据,并处理团队级联 - **可恢复性**:默认保留会话历史,可选择是否删除 ## L2:详细规范 ### 执行流程 ``` ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │ 列出可选 │ ──→ │ 确认意图 │ ──→ │ 询问选项 │ │ 智能体 │ │ 与目标 │ │ (删除历史?) │ └──────────────┘ └──────────────┘ └──────────────┘ │ ↓ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │ 返回结果 │ ←── │ 执行删除 │ ←── │ 告知会弹确认 │ │ 与回执 │ │ ManageAgent │ │ │ └──────────────┘ └──────────────┘ └──────────────┘ ``` ### 阶段 1:列出可删除的智能体 **触发条件**:用户表达删除意图但未指定具体智能体 **操作**: - 调用 `ManageAgent(action='list')` 获取所有智能体列表 - 筛选出状态为 `offline` 或 `error` 的智能体(可安全删除) - 标注出 `online`/`busy`/`recovery` 状态的智能体(需先停止,否则会被工具拒绝) - 如需查看某个智能体的详细信息,调用 `ManageAgent(action='get', id='')` **输出示例**: ``` 可删除的智能体: 1. 法律顾问助手 (legal-assistant) - 状态: offline 2. 测试机器人 (test-bot) - 状态: offline 当前活跃的智能体(需先停止才能删除): - 数据分析师 (data-analyst) - 状态: online ``` ### 阶段 2:确认用户意图与目标 **确认要点**: - 用户指定的智能体名称/ID - 明确告知删除操作不可恢复 - 展示智能体基本信息供用户确认 **对话示例**: ``` 您要删除智能体 "法律顾问助手" (legal-assistant)。 ⚠️ 警告:此操作不可恢复,该智能体的所有配置、技能、工具将被永久删除。 确认删除?(是/否) ``` ### 阶段 3:询问删除选项 **询问内容**: ``` 是否同时删除该智能体的所有会话历史? - 是:删除智能体及其所有对话记录 - 否:保留会话历史,仅删除智能体本身 默认选项:否(保留历史) ``` **参数映射**: - 用户选择"是" → `deleteRuns=true` - 用户选择"否" → `deleteRuns=false`(默认,可省略) ### 阶段 4:告知工具级确认 `ManageAgent` 的 delete 动作在工具层**始终触发用户确认弹窗**,无需在技能层再重复一遍二次确认话术。但在调用前应先告知用户: ``` 即将删除智能体 "法律顾问助手" (legal-assistant),删除范围为智能体 + 会话历史(如用户选择)。 系统会弹出确认窗口,请在弹窗中确认执行。 ``` ### 阶段 5:执行删除(ManageAgent 工具) **工具调用**: ``` ManageAgent(action='delete', id='legal-assistant', deleteRuns=true) ``` **参数**: - `id`:目标智能体 ID(必填) - `deleteRuns`:`true` 一并删除全部会话历史;`false`(默认)保留历史,可省略 工具会在执行前弹出用户确认;确认后完成删除,包含团队级联处理:目标是组长的团队自动解散,是成员的自动移除。 ### 阶段 6:返回操作结果 **成功回执处理**:工具返回删除结果,包含已清理路径、删除的会话数量、内存状态清理详情等字段。据此生成报告。 **结果报告模板**: ``` ✅ 智能体 "法律顾问助手" 已成功删除 清理详情: - 文件系统:已删除 2 个目录 - 调度器:已停止所有定时任务 - 消息订阅:已取消 3 个订阅 - MCP 连接:已关闭 - 会话历史:已删除 5 条记录 - 团队级联:目标所在团队已解散/已从团队移除(如涉及) ``` ## 状态验证与错误处理 ### 删除前状态检查 在阶段 1 列出智能体时,通过 `ManageAgent(action='list')` 返回的状态筛选: | 状态 | 可否删除 | 阶段 1 展示方式 | | ------------------------------ | ----------- | ------------------------------ | | `offline` / `error` | ✅ 可删除 | 列入"可删除"列表 | | `online` / `busy` / `recovery` | ❌ 需先停止 | 标注"需先停止",不进入后续流程 | > 活跃状态(online/busy/recovery)的智能体会被 `ManageAgent` 的 delete 动作直接拒绝。应提示用户在 UI 中手动停止该智能体,或等待其完成当前任务后再删除。 ### 工具返回的错误语义 `ManageAgent(action='delete', ...)` 在以下情形会返回明确错误,应据此向用户解释并给出下一步建议: | 拒绝场景 | 触发条件 | 处理方式 | | ---------------- | -------------------------------------------------------------- | -------------------------------------- | | 核心智能体拒绝 | 目标为核心智能体(desirecore/core/绑定 UUID) | 告知用户核心智能体不可删除 | | 自删拒绝 | 目标为调用方自身 | 告知用户智能体不能删除自己 | | 活跃状态拒绝 | 目标处于 `online`/`busy`/`recovery` 状态 | 提示用户先在 UI 中停止该智能体 | | 不存在 | 目标 ID 对应的智能体不存在 | 告知用户智能体已被删除或 ID 有误 | ## 删除范围说明 | 类别 | 删除内容 | 条件 | | ------------ | -------------------------------------------------------------------------------------------------------------------------- | ----------------- | | **始终删除** | AgentFS 目录(配置、人格、规则、技能、工具、记忆)、用户偏好数据、内存状态(调度器、队列、消息订阅、MCP 连接)、注册表条目 | 无条件 | | **可选删除** | 会话历史、话题索引 | `deleteRuns=true` | | **团队级联** | 目标是组长 → 解散其团队;目标是成员 → 从团队移除 | 自动 | | **保留不删** | 其他智能体数据、用户配置、全局设置、市场缓存 | — | ## 权限要求 - 通过进程内内置工具 `ManageAgent` 完成智能体的列出、查询与删除 - delete 动作为高风险操作,工具层会强制弹出用户确认 ## 依赖 - 进程内内置工具 `ManageAgent`(`action='list' | 'get' | 'delete'`)