feat: 添加 4 个全局技能到 builtin 通道

- 新增 builtin-skills.json 清单
- 添加 create-agent / delete-agent / discover-agent / update-agent SKILL.md
- 添加 _protected-paths.yaml 共享配置
- 与捆绑源版本一致,启用 Phase 2 热更新通道

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-02-25 09:10:44 +08:00
parent b09592338c
commit 15e8d1f0c8
6 changed files with 1151 additions and 0 deletions

View File

@@ -0,0 +1,243 @@
---
name: delete-agent
description: 安全删除指定的智能体及其关联数据。删除前会验证智能体状态支持可选地删除所有会话历史。Use when 用户需要删除不再使用的智能体。
type: meta
risk_level: high
status: enabled
disable-model-invocation: true
metadata:
author: desirecore
version: "1.0.0"
updated_at: "2026-02-17"
---
# delete-agent 技能
## L0一句话摘要
安全删除指定的智能体及其关联数据,包括文件系统、内存状态和可选的会话历史。
## L1概述与使用场景
### 能力描述
delete-agent 是一个**元技能Meta-Skill**,赋予 DesireCore 安全删除其他智能体的能力。它会执行完整的前置检查、状态验证,并清理所有关联数据。
### 使用场景
- 用户想要清理不再使用的智能体
- 删除测试或实验性质的临时智能体
- 释放存储空间,删除旧智能体及其历史记录
- 用户明确要求"删除"、"移除"某个智能体
### 核心价值
- **安全性**:多重检查确保不会误删活跃智能体
- **完整性**:清理文件系统、内存状态、消息订阅等所有关联数据
- **可恢复性**:默认保留会话历史,可选择是否删除
## L2详细规范
### 执行流程
```
┌──────────────┐ ┌──────────────┐ ┌──────────────┐
│ 列出可选 │ ──→ │ 确认意图 │ ──→ │ 询问选项 │
│ 智能体 │ │ 与目标 │ │ (删除历史?) │
└──────────────┘ └──────────────┘ └──────────────┘
┌──────────────┐ ┌──────────────┐ ┌──────────────┐
│ 返回结果 │ ←── │ 执行删除 │ ←── │ 最终确认 │
│ 与回执 │ │ API 调用 │ │ │
└──────────────┘ └──────────────┘ └──────────────┘
```
### 阶段 1列出可删除的智能体
**触发条件**:用户表达删除意图但未指定具体智能体
**操作**
- 调用 `GET /api/agents` 获取所有智能体列表
- 筛选出状态为 `offline``error` 的智能体(可安全删除)
- 标注出 `online`/`busy`/`recovery` 状态的智能体(需先停止)
**输出示例**
```
可删除的智能体:
1. 法律顾问助手 (legal-assistant) - 状态: offline
2. 测试机器人 (test-bot) - 状态: offline
当前活跃的智能体(需先停止才能删除):
- 数据分析师 (data-analyst) - 状态: online
```
### 阶段 2确认用户意图与目标
**确认要点**
- 用户指定的智能体名称/ID
- 明确告知删除操作不可恢复
- 展示智能体基本信息供用户确认
**对话示例**
```
您要删除智能体 "法律顾问助手" (legal-assistant)。
⚠️ 警告:此操作不可恢复,该智能体的所有配置、技能、工具将被永久删除。
确认删除?(是/否)
```
### 阶段 3询问删除选项
**询问内容**
```
是否同时删除该智能体的所有会话历史?
- 是:删除智能体及其所有对话记录
- 否:保留会话历史,仅删除智能体本身
默认选项:否(保留历史)
```
**参数映射**
- 用户选择"是" → `deleteRuns=true`
- 用户选择"否" → `deleteRuns=false`(默认)
### 阶段 4最终确认
**确认摘要**
```
请确认删除操作:
- 目标智能体:法律顾问助手 (legal-assistant)
- 删除范围:智能体 + 会话历史(如用户选择)
- 风险等级:高(不可恢复)
确认执行删除?(是/否)
```
### 阶段 5执行删除 API 调用
**API 端点**`DELETE /api/agents/{agentId}`
**查询参数**
- `deleteRuns`: `'true'``'false'`
**请求示例**
```bash
curl -X DELETE "http://127.0.0.1:<agentServicePort>/api/agents/legal-assistant?deleteRuns=true"
```
### 阶段 6返回操作结果
**成功响应处理**
```json
{
"deleted": true,
"cleanedPaths": [
"/Users/xxx/.desirecore/agents/legal-assistant",
"/Users/xxx/.desirecore/users/xxx/agents/legal-assistant"
],
"deletedRunsCount": 5,
"memoryCleaned": {
"scheduler": true,
"queue": 0,
"messaging": 3,
"mcp": true
}
}
```
**结果报告模板**
```
✅ 智能体 "法律顾问助手" 已成功删除
清理详情:
- 文件系统:已删除 2 个目录
- 调度器:已停止所有定时任务
- 消息订阅:已取消 3 个订阅
- MCP 连接:已关闭
- 会话历史:已删除 5 条记录
```
## 前置检查
### 智能体状态验证
在调用删除 API 前,系统会自动检查:
| 状态 | 是否可删除 | 处理方式 |
|------|-----------|---------|
| `offline` | ✅ 是 | 直接删除 |
| `error` | ✅ 是 | 直接删除 |
| `online` | ❌ 否 | 返回 409 错误,提示先停止 |
| `busy` | ❌ 否 | 返回 409 错误,提示等待完成 |
| `recovery` | ❌ 否 | 返回 409 错误,提示等待恢复 |
**API 返回 409 时的处理**
```
无法删除智能体 "xxx":当前处于 online 状态。
请先停止该智能体,或等待其完成任务后再删除。
停止命令:...
```
## 错误处理
| 错误码 | 场景 | 处理方式 |
|--------|------|---------|
| 400 | Agent ID 格式无效 | 提示用户检查智能体名称 |
| 404 | 智能体不存在 | 告知用户智能体已被删除或 ID 错误 |
| 409 | 智能体处于活跃状态 | 提示先停止智能体或等待任务完成 |
| 500 | 服务器内部错误 | 记录错误,提示用户稍后再试 |
## 删除范围说明
### 始终删除的数据
以下数据无论 `deleteRuns` 参数如何都会被删除:
1. **AgentFS 目录**`~/.desirecore/agents/{agentId}/`
- agent.json入口配置
- persona.md人格定义
- principles.md行为原则
- skills/(技能目录)
- tools/(工具目录)
- memory/(记忆目录)
- heartbeat/(心跳配置)
2. **用户偏好数据**`~/.desirecore/users/{userId}/agents/{agentId}/`
- 工作目录配置
- 用户特定设置
3. **内存状态**
- 调度定时器(全部停止)
- 队列中的请求(全部取消)
- 消息订阅(全部取消)
- MCP 连接(全部关闭)
4. **注册表条目**:从 AgentRegistry 中注销
### 可选删除的数据
仅当 `deleteRuns=true` 时删除:
- **会话历史**`~/.desirecore/runs/` 中该智能体的所有记录
- **话题索引**:相关话题的索引和元数据
### 保留的数据
以下数据不会被删除:
- 其他智能体的数据
- 用户配置文件
- 全局设置
- 市场缓存数据
## 权限要求
- 需要调用 `fetch_api` 工具访问删除 API
- 删除操作需要用户显式确认(高风险操作)
## 依赖
- Agent Service HTTP API
- Agent Registry 状态查询