mirror of
https://git.openapi.site/https://github.com/desirecore/market.git
synced 2026-06-06 08:30:42 +08:00
feat: skills i18n 改造(schemaVersion 1.1,零向后兼容) (#1)
* feat: skills i18n 改造 — schemaVersion 1.1,零向后兼容
把 21 个 skills + 1 个 agent + manifest/categories 全量迁移到 schemaVersion 1.1
的 i18n 结构,配套 CI AI 翻译流水线(GitHub Models)与本地工具链。
## 关键变更
### 数据结构(破坏性,schemaVersion 1.0 → 1.1)
- SKILL.md: 顶层 name 改为 ASCII slug(== 目录名,符合 agentskills.io 规范);
中文显示名/short_desc/description 全部迁入 metadata.i18n.<locale>
- agents/<id>/agent.json: shortDesc/fullDesc/tags/persona.{role,traits} 迁入
i18n.<locale>;changelog[].changes 改为 { <locale>: string[] } 对象
- categories.json: 每个分类的 label/description 迁入 i18n.<locale>,顶层只剩
color/icon
- manifest.json: 加 supportedLocales / defaultLocale;顶层 description 迁入
i18n.<locale>
### Body 文件结构
- 根 SKILL.md = frontmatter + default_locale (en-US) body
- SKILL.<locale>.md = 各 locale 的 markdown body(首行 <!-- locale: xx --> 自校验)
### 工具链(scripts/i18n/)
- glossary.json: zh→en 术语表 + do_not_translate 白名单
- schema/skill-frontmatter.schema.json: i18n frontmatter JSON Schema
- validate-i18n.py: 8 条校验规则(name 合规 / locale 完整性 / hash 一致性等)
- translate.py: GitHub Models / Anthropic 双 backend,sha256 增量翻译
- migrate.py: 一次性迁移脚本(旧格式 → i18n 结构)
### CI(.github/workflows/)
- i18n-validate.yml: PR 触发跑 validate + translate --check
- i18n-translate.yml: PR 触发用 GitHub Models(默认 openai/gpt-5-mini)翻译缺失
locale,自动追加 commit;可切到 ANTHROPIC_API_KEY 走 Claude
### 文档
- docs/I18N.md: 作者贡献指南(schema 说明 / 提交流程 / 常见问题)
- README.md: 加多语言段落
## 验证
- uv run scripts/i18n/validate-i18n.py: OK,49 文件 0 错误
- uv run scripts/i18n/translate.py --check: 0 stale locale
- 21 skills 标题数 zh-CN == en-US 严格对齐(最大 66=66)
- skills-ref 规范校验:全部通过(顶层 name ASCII slug + description 单字段)
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
* fix(i18n): 修复 PR #1 review 反馈的 6 项问题
- schema: translated_by 正则放宽为 ^(human|ai:[A-Za-z0-9._:/-]+)$,接受
'ai:github:openai/gpt-5-mini' 这类 backend:model 形式(CI 翻译输出格式)
- README + docs/I18N.md: 修正"CI 用 Claude API"误导描述,正确说明默认是
GitHub Models(openai/gpt-5-mini)+ GITHUB_TOKEN,可选切到 Anthropic
- skills/minimax-tts/SKILL.md & SKILL.zh-CN.md: 删除多余的 ``` 闭合,避免
Markdown 后续渲染错乱
- skills/docx/SKILL.md: 翻译时丢失的 • Unicode escape 示例已恢复,
与 zh-CN 版本对齐
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
210
skills/delete-agent/SKILL.zh-CN.md
Normal file
210
skills/delete-agent/SKILL.zh-CN.md
Normal file
@@ -0,0 +1,210 @@
|
||||
<!-- locale: zh-CN -->
|
||||
|
||||
# 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 "{agentServiceUrl}/api/agents/legal-assistant?deleteRuns=true"
|
||||
```
|
||||
|
||||
> `{agentServiceUrl}` 取自 system prompt「本机 API」小节中的 Agent Service 地址。
|
||||
|
||||
### 阶段 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 条记录
|
||||
```
|
||||
|
||||
## 状态验证与错误处理
|
||||
|
||||
### 删除前状态检查
|
||||
|
||||
在阶段 1 列出智能体时,通过 `GET /api/agents` 筛选状态:
|
||||
|
||||
| 状态 | 可否删除 | 阶段 1 展示方式 |
|
||||
| ------------------------------ | ----------- | ------------------------------ |
|
||||
| `offline` / `error` | ✅ 可删除 | 列入"可删除"列表 |
|
||||
| `online` / `busy` / `recovery` | ❌ 需先停止 | 标注"需先停止",不进入后续流程 |
|
||||
|
||||
**停止活跃智能体的方式**:通过 Socket.IO 发送 `agent:shutdown` 事件:
|
||||
|
||||
```yaml
|
||||
事件: agent:shutdown
|
||||
数据: { 'agentId': '<agent_id>' }
|
||||
效果: 中止所有活跃会话 → 停止调度任务 → 状态转为 offline
|
||||
```
|
||||
|
||||
> Agent 无法直接发送 Socket.IO 事件。如果目标智能体处于活跃状态,应提示用户在 UI 中手动停止,或等待其完成当前任务后再删除。
|
||||
|
||||
### API 错误码
|
||||
|
||||
| 错误码 | 场景 | 处理方式 |
|
||||
| ------ | ---------------------------------------------------------------------------- | -------------------------------- |
|
||||
| 400 | Agent ID 格式无效 | 提示用户检查智能体名称 |
|
||||
| 404 | 智能体不存在 | 告知用户智能体已被删除或 ID 错误 |
|
||||
| 409 | 智能体处于活跃状态(API 返回 `Cannot delete agent "xxx": currently online`) | 提示用户先在 UI 中停止智能体 |
|
||||
| 500 | 服务器内部错误 | 提示用户稍后再试 |
|
||||
|
||||
## 删除范围说明
|
||||
|
||||
| 类别 | 删除内容 | 条件 |
|
||||
| ------------ | -------------------------------------------------------------------------------------------------------------------------- | ----------------- |
|
||||
| **始终删除** | AgentFS 目录(配置、人格、规则、技能、工具、记忆)、用户偏好数据、内存状态(调度器、队列、消息订阅、MCP 连接)、注册表条目 | 无条件 |
|
||||
| **可选删除** | 会话历史、话题索引 | `deleteRuns=true` |
|
||||
| **保留不删** | 其他智能体数据、用户配置、全局设置、市场缓存 | — |
|
||||
|
||||
## 权限要求
|
||||
|
||||
- 建议优先通过 `Bash` 工具调用 curl 访问 Agent Service HTTP API 完成操作
|
||||
- API 基础地址已注入到 system prompt 的「本机 API」小节,直接引用即可
|
||||
- 删除操作需要用户显式确认(高风险操作)
|
||||
|
||||
## 依赖
|
||||
|
||||
- Agent Service HTTP API(`DELETE /api/agents/{agentId}`)
|
||||
- System prompt 中的本机 API 地址声明
|
||||
Reference in New Issue
Block a user