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

8
builtin-skills.json Normal file
View File

@@ -0,0 +1,8 @@
{
"skills": [
"create-agent",
"delete-agent",
"discover-agent",
"update-agent"
]
}

View File

@@ -0,0 +1,104 @@
# 受保护路径配置
# 此配置由元技能update-agent, delete-agent, self-evolve共享
# 定义了不可被自动修改的敏感路径
# 注意create-agent 通过 HTTP API 创建,不直接操作文件,因此不受此配置约束
version: 2
# 保护级别定义
protection_levels:
block:
description: 完全阻断,不可通过技能修改
requires: manual_edit
owner_only:
description: 需要 owner 角色显式确认
requires: owner_confirmation
confirm:
description: 需要用户确认
requires: user_confirmation
# 受保护路径列表AgentFS v2 扁平结构)
protected_paths:
# ============================================
# 核心身份(不可自动修改)
# ============================================
- path: "persona.md"
section: "L0"
protection: block
reason: "核心身份定义,不可被对话或进化改变"
description: "L0 部分包含 Agent 的核心身份定义,是人格的根基"
# ============================================
# 安全红线(不可自动修改)
# ============================================
- path: "principles.md"
section: "绝不做"
protection: block
reason: "安全边界,必须由人类显式修改"
description: "绝不做部分定义了不可逾越的安全红线"
# ============================================
# 权限配置(需 owner 确认)
# ============================================
- path: "agent.json"
section: "access_control"
protection: owner_only
reason: "权限配置敏感,需 owner 审批"
description: "访问控制配置影响整个 Agent 的权限体系"
- path: "agent.json"
section: "privacy"
protection: owner_only
reason: "隐私配置敏感,需 owner 审批"
description: "隐私配置影响数据处理和共享策略"
# ============================================
# 工具权限(需 owner 确认)
# ============================================
- path: "tools/"
pattern: "**/permissions.yaml"
protection: owner_only
reason: "工具权限敏感,需 owner 审批"
description: "工具权限决定 Agent 可执行的操作范围"
- path: "tools/"
pattern: "**/credentials.yaml"
protection: block
reason: "凭证文件不可通过技能修改"
description: "凭证文件包含敏感信息,必须手动管理"
# ============================================
# 用户隐私(需用户本人确认)
# ============================================
- path: "~/.desirecore/users/*/privacy.md"
protection: owner_only
reason: "隐私设置需用户本人或 owner 修改"
description: "用户隐私边界配置"
- path: "~/.desirecore/users/*/agents/*/relationship.md"
section: "禁区"
protection: confirm
reason: "关系禁区需用户确认"
description: "用户定义的交互禁区"
# 验证规则
validation:
# 在应用变更前必须检查是否触及受保护路径
pre_change_check: true
# 触及受保护路径时的默认行为
default_action: block_and_notify
# 是否记录所有受保护路径访问尝试
audit_access_attempts: true
# 例外规则(谨慎使用)
exceptions:
# 系统初始化时可以写入所有路径
- context: system_initialization
paths: ["*"]
allowed_operations: [create]
# owner 可以在显式确认后修改 owner_only 路径
- context: owner_explicit_confirmation
paths: ["owner_only"]
allowed_operations: [update]

View File

@@ -0,0 +1,253 @@
---
name: create-agent
description: 通过多轮对话收集需求,调用 HTTP API 创建新的 AgentFS v2 智能体,支持自定义 persona 和 principles。Use when 用户要求创建新智能体、培养某领域助手、或快速基于模板生成可治理 Agent。
version: "2.0.0"
type: meta
risk_level: medium
status: enabled
disable-model-invocation: true
tags: [agent, creation, meta]
metadata:
author: desirecore
version: "2.0.0"
updated_at: "2026-02-21"
---
# create-agent 技能
## L0一句话摘要
通过自然语言对话收集需求,调用 HTTP API 创建专业化的数字智能体。
## L1概述与使用场景
### 能力描述
create-agent 是一个**元技能Meta-Skill**,赋予 DesireCore 创建其他 Agent 的能力。它通过多轮对话收集用户需求,生成 persona 和 principles 内容,调用 `POST /api/agents` 完成创建。
### 使用场景
- 用户想要一个专业领域的数字助手(如法律顾问、财务分析师)
- 企业需要快速部署定制化的业务 Agent
- 开发者需要基于模板快速创建 Agent 原型
### 核心价值
- **降低门槛**:无需编程知识,用对话就能创建 Agent
- **专业化**:根据领域模板生成合适的 persona 和 principles
- **可治理**:创建的仓库符合 AgentFS v2 规范,支持版本管理
## L2详细规范
### 对话流程
```
┌──────────────┐ ┌──────────────┐ ┌──────────────┐
│ 意图识别 │ ──→ │ 需求收集 │ ──→ │ 内容生成 │
└──────────────┘ └──────────────┘ └──────────────┘
┌──────────────┐ ┌──────────────┐ ┌──────────────┐
│ 回执生成 │ ←── │ API 创建 │ ←── │ 用户确认 │
└──────────────┘ └──────────────┘ └──────────────┘
```
### 阶段 1意图识别
**触发条件**(任一满足):
- 用户明确说"创建一个 Agent"或"帮我做一个助手"
- 用户描述需要某领域的专业帮助,且当前 Agent 不具备该能力
- 用户询问"能不能帮我培养一个..."
**输出**:确认用户的创建意图,进入需求收集阶段。
### 阶段 2需求收集
**必填信息**
| 字段 | 说明 | 引导问题示例 |
|------|------|------------|
| `name` | 智能体名称 | "你想给这个智能体起什么名字?" |
| `role` | 核心职责 | "它主要负责什么工作?" |
| `target_users` | 目标用户 | "谁会使用这个智能体?" |
| `domain` | 专业领域 | "它需要哪些专业知识?" |
**选填信息**
| 字段 | 说明 | 默认值 |
|------|------|-------|
| `style` | 沟通风格 | 根据领域模板决定 |
| `boundaries` | 禁区/红线 | 根据领域模板决定 |
| `language` | 主要语言 | 中文 |
**收集策略**
- 优先通过用户的自然描述推断信息
- 仅追问用户未提及的必填项
- 每轮最多追问 2 个问题
### 阶段 3内容生成
根据收集的需求,为新 Agent 生成以下内容:
**persona.md 生成规范**
```markdown
# L0 — 核心身份
你是 {name}{一句话角色定位}。
# L1 — 行为风格
- {风格特征 1}
- {风格特征 2}
- {风格特征 3}
# L2 — 深层动机
{2-3 句话描述深层价值观和驱动力}
```
**principles.md 生成规范**
```markdown
# L0 — 基础约束
- {安全红线 1}
- {安全红线 2}
# L1 — 行为边界
- {行为规则 1}
- {行为规则 2}
- {行为规则 3}
# L2 — 治理原则
{2-3 句话描述最高治理原则}
```
**领域匹配参考**
| 领域关键词 | 推荐风格 | 默认边界 |
|-----------|---------|---------|
| 法律、合同、法务 | 专业、严谨、审慎 | 不提供诉讼代理、不替代正式法律意见 |
| 财务、会计、投资 | 精确、分析性、保守 | 不提供投资建议、不处理真实交易 |
| 代码、开发、架构 | 逻辑、务实、直接 | 不直接访问生产环境、不存储凭证 |
| 通用/其他 | 友好、有帮助 | 通用安全规范 |
### 阶段 4用户确认
**展示预览**
```
即将创建智能体:
名称:法律顾问小助手
描述:专注于合同审查和法律风险评估的数字智能体
--- persona.md 预览 ---
# L0 — 核心身份
你是法律顾问小助手,专注于合同审查和法律风险评估...
[完整内容]
--- principles.md 预览 ---
# L0 — 基础约束
- 不提供诉讼代理
[完整内容]
---
确认创建?
[确认] [修改] [取消]
```
### 阶段 5调用 API 创建
**API 端点**`POST /api/agents`
**请求体**
```json
{
"name": "法律顾问小助手",
"description": "专注于合同审查和法律风险评估的数字智能体",
"persona": "# L0 — 核心身份\n\n你是法律顾问小助手...",
"principles": "# L0 — 基础约束\n\n- 不提供诉讼代理..."
}
```
**可选**:如需指定 slug ID可根据 name 生成合理的 kebab-case slug如 "法律顾问" → "legal-advisor"),在请求体中附带 `"id": "<slug>"`。不指定时系统会自动从 name 生成。
**成功响应** (`201 Created`)
```json
{
"agentId": "fa-lv-gu-wen-xiao-zhu-shou"
}
```
**验证创建结果**:创建成功后可调用 `GET /api/agents/{agentId}` 确认agentId 为 slug
### 阶段 6回执生成
**回执报告**
```
✅ 智能体 "法律顾问小助手" 创建成功
详情:
- Agent Slug: fa-lv-gu-wen-xiao-zhu-shou
- 仓库路径: ~/.desirecore/agents/fa-lv-gu-wen-xiao-zhu-shou
- 已生成文件: agent.json, persona.md, principles.md
- AgentFS 规范: v2扁平结构
下一步建议:
- 为它添加技能(通过 update-agent 技能)
- 直接开始对话
```
### AgentFS 知识(创建后的仓库结构)
DesireCore 应理解创建后的 Agent 仓库遵循 AgentFS v2 扁平结构:
```
<agent_id>/
├── agent.json # 入口配置name, version, description, engine, skills, tools, mcp_servers
├── persona.md # 人格定义L0 核心身份 / L1 行为风格 / L2 深层动机)
├── principles.md # 行为原则L0 基础约束 / L1 行为边界 / L2 治理原则)
├── memory/ # 记忆目录timeline/topics/pinned/product/lessons
│ └── _index.md
├── skills/ # 技能目录
│ └── _index.md
├── tools/ # 工具目录
│ └── _index.md
└── heartbeat/ # 心跳配置
└── HEARTBEAT.md
```
**关键文件职责**
| 文件 | 职责 | AI Agent 关注点 |
|------|------|----------------|
| `agent.json` | Agent 元数据与运行时配置 | engine 字段决定使用哪个推理引擎 |
| `persona.md` | 人格与沟通风格定义 | L0 不可自动修改(受保护路径) |
| `principles.md` | 行为规则与安全红线 | "绝不做" section 不可自动修改 |
| `memory/` | 对话记忆、知识积累 | 随交互自动积累 |
| `skills/` | Agent 拥有的技能 | 可通过 update-agent 添加 |
| `tools/` | Agent 可用的工具 | MCP Server、脚本工具等 |
### 错误处理
| 错误码 | 场景 | 处理方式 |
|--------|------|---------|
| 400 | 缺少 name 或 ID 格式无效 | 提示用户检查输入 |
| 409 | Agent ID 已存在 | 建议使用其他名称 |
| 500 | 服务器内部错误 | 提示用户稍后再试 |
### 权限要求
- 需要调用 `fetch_api` 工具访问创建 API
- 创建操作需要用户确认
### 依赖
- Agent Service HTTP API`POST /api/agents`

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 状态查询

View File

@@ -0,0 +1,227 @@
---
name: discover-agent
description: 根据用户需求推荐最匹配的智能体展示候选列表并引导选择。Use when 用户描述需求但不确定该找哪个智能体帮忙,或想浏览可用的智能体。
version: "1.0.0"
type: procedural
risk_level: low
status: enabled
disable-model-invocation: false
tags: [agent, discovery, recommendation]
metadata:
author: desirecore
version: "1.0.0"
updated_at: "2026-02-17"
---
# discover-agent 技能
## L0一句话摘要
根据用户需求描述,在已注册的智能体中匹配并推荐最合适的 Agent。
## L1概述与使用场景
### 能力描述
discover-agent 是一个**流程型技能Procedural Skill**,赋予 DesireCore 为用户发现和推荐合适智能体的能力。它通过理解用户需求描述,在已注册的 Agent 列表中进行多维度匹配,展示候选列表供用户选择。
### 使用场景
- 用户描述了一个需求,但不知道该找哪个智能体帮忙
- 用户想浏览当前可用的智能体及其能力
- 用户需要为特定任务找到最合适的专业助手
- 新用户初次使用系统,需要了解有哪些智能体可用
### 核心价值
- **降低门槛**:用户无需记住每个智能体的名称和能力
- **精准匹配**:基于需求语义进行智能推荐,而非简单关键词搜索
- **流畅衔接**:无匹配时自动建议创建新 Agent衔接 create-agent 技能)
## L2详细规范
### 执行流程
```
┌──────────────┐ ┌──────────────┐ ┌──────────────┐
│ 需求理解 │ ──→ │ Agent 检索 │ ──→ │ 匹配评分 │
└──────────────┘ └──────────────┘ └──────────────┘
┌──────────────┐ ┌──────────────┐ ┌──────────────┐
│ 引导选择 │ ←── │ 结果展示 │ ←── │ 候选排序 │
└──────────────┘ └──────────────┘ └──────────────┘
```
### 阶段 1需求理解
**触发条件**(任一满足):
- 用户说"帮我找一个..."、"有没有..."、"谁能帮我..."
- 用户描述了一个任务但未指定具体智能体
- 用户说"有哪些智能体"、"看看都有谁"
- 系统检测到用户需求与当前 Agent 能力不匹配
**需求解析**
从用户描述中提取以下维度:
| 维度 | 说明 | 示例 |
|------|------|------|
| `domain` | 专业领域 | 法律、财务、技术、教育 |
| `task_type` | 任务类型 | 咨询、审查、分析、创作 |
| `keywords` | 关键词 | 合同、报表、代码、论文 |
| `urgency` | 紧急程度 | 日常 / 紧急 |
### 阶段 2Agent 检索
**数据源**:调用 `GET /api/agents` 获取所有已注册的智能体列表。
**API 调用**
```bash
GET /api/agents
```
**返回数据中的关键字段**
- `id` — 智能体唯一标识
- `name` — 智能体名称
- `description` — 智能体描述
- `skills` — 技能列表
- `status` — 当前状态online/offline/busy
**过滤规则**
- 默认只展示 `status: online``status: offline` 的智能体
- 排除系统内部智能体(如 DesireCore 自身,除非用户显式要求)
### 阶段 3匹配评分
**匹配维度与权重**
| 维度 | 权重 | 说明 |
|------|------|------|
| 描述相似度 | 40% | 智能体 description 与用户需求的语义相似度 |
| 技能匹配 | 30% | 智能体拥有的 skills 与任务类型的关联度 |
| 领域匹配 | 20% | 智能体专业领域与用户需求领域的匹配度 |
| 可用性 | 10% | 智能体当前状态online 优先于 offline |
**评分规则**
- 每个维度 0-100 分
- 加权计算综合得分
- 综合得分 >= 60 为"推荐"
- 综合得分 40-59 为"可能相关"
- 综合得分 < 40 不展示
### 阶段 4候选排序
**排序规则**
1. 按综合得分降序排列
2. 同分时 online 状态优先
3. 最多展示 5 个候选
### 阶段 5结果展示
**有匹配结果时**
```
根据你的需求,我推荐以下智能体:
┌─────────────────────────────────────────────────────┐
│ 1. 法律顾问助手 匹配度: 92% │
│ 专注合同审查和法律风险评估 │
│ 技能:合同审查、风险评估、法律研究 │
│ 状态:在线 │
├─────────────────────────────────────────────────────┤
│ 2. AI 文书助手 匹配度: 71% │
│ 专业文书撰写和格式优化 │
│ 技能:文书撰写、格式排版、合规检查 │
│ 状态:在线 │
├─────────────────────────────────────────────────────┤
│ 3. 数据分析师 匹配度: 45% │
│ 数据分析和可视化报告 │
│ 技能:数据分析、报表生成、趋势预测 │
│ 状态:离线 │
└─────────────────────────────────────────────────────┘
请选择一个智能体,或告诉我更具体的需求。
```
**无匹配结果时**
```
目前没有找到完全匹配你需求的智能体。
你可以:
1. 用更具体的描述再试一次
2. 创建一个新的专业智能体(我可以帮你)
3. 浏览所有可用的智能体
你想怎么做?
```
**浏览模式**(用户要求查看所有):
```
当前可用的智能体:
在线:
- 法律顾问助手 — 合同审查和法律风险评估
- AI 文书助手 — 专业文书撰写和格式优化
离线:
- 数据分析师 — 数据分析和可视化报告
- 翻译助手 — 多语言翻译和本地化
共 4 个智能体。需要了解某个智能体的详细信息吗?
```
### 阶段 6引导选择
**用户选择后的操作**
| 用户选择 | 后续操作 |
|---------|---------|
| 选择了某个智能体 | 切换到该智能体的对话,传递用户需求上下文 |
| 要求了解更多 | 展示该智能体的详细信息persona、skills、最近活跃时间 |
| 不满意候选 | 引导用户细化需求或建议创建新 Agent |
| 选择"创建新的" | 调用 create-agent 技能,传递已收集的需求信息 |
**切换上下文传递**
```yaml
context_handoff:
source_agent: desirecore
target_agent: legal-assistant
user_intent: "帮我审查这份合同的风险点"
discovery_metadata:
match_score: 92
match_dimensions:
description: 95
skills: 90
domain: 88
availability: 100
```
### 与其他技能的协作
| 协作技能 | 协作方式 |
|---------|---------|
| create-agent | 无匹配时建议创建新 Agent传递用户需求作为初始信息 |
| task-management | 匹配成功后可自动创建任务并分配给目标 Agent |
### 错误处理
| 错误场景 | 处理方式 |
|---------|---------|
| API 调用失败 | 提示网络错误,建议稍后重试 |
| Agent 列表为空 | 引导用户创建第一个智能体 |
| 用户描述过于模糊 | 追问具体需求,提供领域选项引导 |
| 推荐的 Agent 状态异常 | 标注状态,建议选择其他在线 Agent |
### 权限要求
- 需要调用 `fetch_api` 工具访问 Agent 列表 API
- 只读操作,无风险
### 依赖
- Agent Service HTTP API`GET /api/agents`
- Agent Registry 状态查询

View File

@@ -0,0 +1,316 @@
---
name: update-agent
description: 安全更新现有智能体的配置、人格、原则、技能与记忆,输出可审阅 diff 并在确认后应用与提交。Use when 用户要求修改 Agent 行为、安装/卸载技能、调整配置、回滚变更或修订规则。
version: "1.1.0"
type: meta
risk_level: high
status: enabled
disable-model-invocation: true
tags: [agent, update, meta]
metadata:
author: desirecore
version: "1.1.0"
updated_at: "2026-02-17"
---
# update-agent 技能
## L0一句话摘要
通过自然语言对话,安全地修改 Agent 的配置、人格、规则和技能。
## L1概述与使用场景
### 能力描述
update-agent 是一个**元技能Meta-Skill**,允许用户通过对话方式修改 Agent 的各项配置。所有修改都会生成可审阅的 diff 补丁,经用户确认后才会应用,并支持版本回滚。
### 使用场景
- 用户想要调整 Agent 的沟通风格("说话再正式一点"
- 需要添加新的行为规则("以后遇到敏感话题要先提醒我"
- 安装或卸载技能包("学会写合同吧"
- 批量更新多项配置("全面升级一下你的能力"
### 核心价值
- **安全可控**:所有变更需用户确认,支持回滚
- **透明可见**:变更以 diff 形式展示,清晰明了
- **版本管理**:通过 Git 管理版本,可追溯历史
## L2详细规范
### 支持的更新类型
| 更新类型 | 目标文件 | 风险等级 | 示例 |
|---------|---------|---------|------|
| Persona 更新 | `persona.md` | 中 | 修改沟通风格、价值观 |
| Principles 更新 | `principles.md` | 高 | 添加/修改行为规则 |
| Skills 安装 | `skills/` | 中 | 添加新技能包 |
| Skills 卸载 | `skills/` | 低 | 移除技能包 |
| Memory 更新 | `memory/` | 低 | 添加知识条目 |
| Tools 配置 | `tools/` | 高 | 修改工具权限 |
### 对话流程
```
┌──────────────┐ ┌──────────────┐ ┌──────────────┐
│ 意图识别 │ ──→ │ 变更分析 │ ──→ │ Diff 生成 │
└──────────────┘ └──────────────┘ └──────────────┘
┌──────────────┐ ┌──────────────┐ ┌──────────────┐
│ 回执生成 │ ←── │ 变更应用 │ ←── │ 用户确认 │
└──────────────┘ └──────────────┘ └──────────────┘
```
### 阶段 1意图识别
**触发条件**(任一满足):
- 用户说"修改你的..."、"更新你的..."、"调整一下..."
- 用户说"你以后要..."、"记住这个规则..."
- 用户说"安装/卸载这个技能..."
- 用户描述对当前行为的不满并期望改变
**输出**:识别更新类型和目标范围。
### 阶段 2变更分析
**分析维度**
| 维度 | 说明 |
|------|------|
| 影响范围 | 影响哪些文件、哪些行为 |
| 风险等级 | 低/中/高(见风险分级表) |
| 依赖检查 | 是否影响其他配置 |
| 冲突检测 | 是否与现有规则冲突 |
**风险分级表**
| 风险等级 | 条件 | 确认要求 |
|---------|------|---------|
| 低 | 仅影响非核心配置(如记忆条目) | 简单确认 |
| 中 | 影响 persona 或普通 principles | 展示 diff 后确认 |
| 高 | 影响核心 principles 或工具权限 | 详细说明 + diff + 确认 |
| 受保护 | 触及受保护路径 | 阻断,需 owner 权限 |
### 阶段 3Diff 生成
**Diff 格式示例**
```diff
# persona.md
## 沟通风格
- 友好、随和、轻松幽默
+ 专业、严谨、适度幽默
## 决策偏好
保持不变...
```
**Diff 元数据**
```yaml
diff_metadata:
files_affected: 1
lines_added: 1
lines_removed: 1
risk_level: medium
reversible: true
estimated_impact: "沟通风格会变得更正式"
```
### 阶段 4用户确认
**确认界面**
```
变更预览
影响文件: persona.md
风险等级: 中
影响说明: 沟通风格会从"友好随和"变为"专业严谨"
--- 变更内容 ---
[展示 diff]
----------------
请确认是否应用此变更?
[应用] [取消] [修改]
```
**确认选项**
- **应用**:执行变更
- **取消**:放弃变更
- **修改**:进入编辑模式微调
### 阶段 5变更应用
**应用步骤**
1. **备份当前版本**
```bash
git stash push -m "backup before update-agent"
```
2. **应用变更**
```bash
# 写入修改后的文件
```
3. **Git 提交**
```bash
git add <affected_files>
git commit -m "refactor(persona): 调整沟通风格为专业严谨
- 修改 persona.md 中的沟通风格描述
- 从'友好随和'调整为'专业严谨'
Updated by: update-agent skill
Risk level: medium
User confirmed: true
"
```
4. **验证变更**
```bash
# 检查文件语法
# 验证配置完整性
```
### 阶段 6回执生成
**回执内容**
```yaml
# ~/.desirecore/runs/<run_id>/receipts/update-<timestamp>.yaml
receipt:
type: agent-update
timestamp: "2024-01-15T10:30:00Z"
request:
user_intent: "说话正式一点"
update_type: persona
target_files:
- persona.md
changes:
files_modified: 1
diff_summary: "沟通风格从'友好随和'改为'专业严谨'"
git_commit: "def456..."
previous_commit: "abc123..."
metadata:
risk_level: medium
user_confirmed: true
rollback_available: true
```
### 特殊操作:版本回滚
**触发条件**
- 用户说"撤销刚才的修改"
- 用户说"回滚到之前的版本"
- 用户说"恢复原来的设置"
**回滚流程**
1. **列出可回滚版本**
```
可回滚的版本
1. [2小时前] 调整沟通风格为专业严谨
2. [1天前] 添加合同审查技能
3. [3天前] 初始化仓库
请选择要回滚到的版本:
```
2. **确认回滚**
```
回滚确认
将回滚到版本 #21天前
以下变更将被撤销:
- 沟通风格调整
确认回滚? [确认] [取消]
```
3. **执行回滚**
```bash
git revert <commit_hash> --no-edit
# 或
git reset --soft <commit_hash>
```
### 受保护路径
变更应用前**必须**检查是否触及受保护路径。完整定义见共享配置文件 [`_protected-paths.yaml`](../_protected-paths.yaml)。
**关键规则摘要**
- `persona.md` L0 section → **block**(核心身份不可自动修改)
- `principles.md` "绝不做" section → **block**(安全红线不可自动修改)
- `agent.json` access_control / privacy → **owner_only**(需 owner 确认)
- `tools/` permissions / credentials → **owner_only / block**
### 错误处理
| 错误场景 | 处理方式 |
|---------|---------|
| 尝试修改受保护路径 | 阻断操作,提示需要 owner 权限 |
| Diff 应用冲突 | 展示冲突内容,请用户手动解决 |
| Git 操作失败 | 保留修改文件,提示用户手动提交 |
| 回滚版本不存在 | 列出可用版本,请用户重新选择 |
### 权限要求
| 操作 | 所需角色 |
|------|---------|
| 更新 persona | owner, member |
| 更新 principles普通规则 | owner, member |
| 更新 principles安全红线 | owner |
| 安装/卸载 skills | owner, member |
| 修改 tools 权限 | owner |
| 版本回滚 | owner |
---
## 附录Principles 更新示例
### 添加新规则
**用户输入**"以后遇到法律问题,先提醒我找专业律师"
**生成的 Diff**
```diff
# principles.md
## 必须做
- 始终保持礼貌和尊重
- 不确定时主动询问
+ - 遇到法律相关问题时,提醒用户咨询专业律师
## 绝不做
...
```
### 修改现有规则
**用户输入**"不要每次都提醒我,太啰嗦了"
**生成的 Diff**
```diff
# principles.md
## 必须做
- - 每次回答后都提醒用户检查内容
+ - 仅在重要决策时提醒用户检查内容
```