feat: add skill feature memory
添加 skill 功能的 feature memory,记录技能包管理服务和 Hook 系统的核心信息。 Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
parent
5138cd0abf
commit
bbfe5d929f
121
.features/skill/MEMORY.md
Normal file
121
.features/skill/MEMORY.md
Normal file
@ -0,0 +1,121 @@
|
||||
# Skill 功能
|
||||
|
||||
> 负责范围:技能包管理服务 - 核心实现
|
||||
> 最后更新:2025-02-11
|
||||
|
||||
## 当前状态
|
||||
|
||||
Skill 系统支持两种来源:官方 skills (`./skills/`) 和用户 skills (`projects/uploads/{bot_id}/skills/`)。支持 Hook 系统和 MCP 服务器配置,通过 SKILL.md 或 plugin.json 定义元数据。
|
||||
|
||||
## 核心文件
|
||||
|
||||
- `routes/skill_manager.py` - Skill 上传/删除/列表 API
|
||||
- `agent/plugin_hook_loader.py` - Hook 系统实现
|
||||
- `agent/deep_assistant.py` - `CustomSkillsMiddleware`
|
||||
- `agent/prompt_loader.py` - PrePrompt hooks + MCP 配置合并
|
||||
- `skills/` - 官方 skills 目录
|
||||
- `skills_developing/` - 开发中 skills
|
||||
|
||||
## 最近重要事项
|
||||
|
||||
- 2025-02-11: 初始化 skill 功能 memory
|
||||
|
||||
## Gotchas(开发必读)
|
||||
|
||||
- ⚠️ 执行脚本必须使用绝对路径
|
||||
- ⚠️ MCP 配置优先级:Skill MCP > 默认 MCP > 用户参数
|
||||
- ⚠️ 上传大小限制:50MB(ZIP),解压后最大 500MB
|
||||
- ⚠️ 压缩比例检查:最大 100:1(防止 zip 炸弹)
|
||||
- ⚠️ 符号链接检查:禁止解压包含符号链接的文件
|
||||
|
||||
## Skill 目录结构
|
||||
|
||||
```
|
||||
skill-name/
|
||||
├── SKILL.md # 核心指令文档(必需)
|
||||
├── skill.yaml # 元数据配置(可选)
|
||||
├── .claude-plugin/
|
||||
│ └── plugin.json # Hook 和 MCP 配置(可选)
|
||||
└── scripts/ # 可执行脚本(可选)
|
||||
└── script.py
|
||||
```
|
||||
|
||||
## Hook 系统
|
||||
|
||||
| Hook 类型 | 执行时机 | 用途 |
|
||||
|-----------|---------|------|
|
||||
| `PrePrompt` | system_prompt 加载时 | 动态注入用户上下文 |
|
||||
| `PostAgent` | agent 执行后 | 处理响应结果 |
|
||||
| `PreSave` | 保存消息前 | 内容过滤/修改 |
|
||||
|
||||
## API 接口
|
||||
|
||||
| 端点 | 方法 | 功能 |
|
||||
|------|------|------|
|
||||
| `GET /api/v1/skill/list` | - | 返回官方 + 用户 skills |
|
||||
| `POST /api/v1/skill/upload` | - | ZIP 上传,解压到用户目录 |
|
||||
| `DELETE /api/v1/skill/remove` | - | 删除用户 skill |
|
||||
|
||||
## 内置 Skills
|
||||
|
||||
| Skill 名称 | 功能描述 |
|
||||
|-----------|---------|
|
||||
| `excel-analysis` | Excel 数据分析、透视表、图表 |
|
||||
| `managing-scripts` | 管理可复用脚本库 |
|
||||
| `rag-retrieve` | RAG 知识库检索 |
|
||||
| `jina-ai` | Jina AI Reader/Search |
|
||||
| `user-context-loader` | Hook 机制示例 |
|
||||
|
||||
## plugin.json 格式
|
||||
|
||||
```json
|
||||
{
|
||||
"name": "skill-name",
|
||||
"description": "描述",
|
||||
"hooks": {
|
||||
"PrePrompt": [{"type": "command", "command": "python hooks/pre_prompt.py"}],
|
||||
"PostAgent": [...],
|
||||
"PreSave": [...]
|
||||
},
|
||||
"mcpServers": {
|
||||
"server-name": {
|
||||
"command": "...",
|
||||
"args": [...]
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
## Skill 加载优先级
|
||||
|
||||
1. Skill MCP 配置(最高)
|
||||
2. 默认 MCP 配置 (`mcp/mcp_settings.json`)
|
||||
3. 用户传入参数(覆盖所有)
|
||||
|
||||
## 安全措施
|
||||
|
||||
- ZipSlip 防护:检查解压路径
|
||||
- 路径遍历防护:验证 `bot_id` 和 `skill_name` 格式
|
||||
- 大小限制:上传 50MB,解压后 500MB
|
||||
- 压缩比限制:最大 100:1
|
||||
|
||||
## 设计原则
|
||||
|
||||
- **渐进式加载**:按需加载,避免一次性读取所有
|
||||
- **绝对路径优先**:执行脚本必须使用绝对路径
|
||||
- **通用化设计**:脚本应参数化,解决一类问题
|
||||
- **安全优先**:完整的上传验证链
|
||||
|
||||
## 配置项
|
||||
|
||||
```bash
|
||||
SKILLS_DIR=./skills # 官方 skills 目录
|
||||
BACKEND_HOST=xxx # RAG API 主机
|
||||
MASTERKEY=xxx # 认证密钥
|
||||
```
|
||||
|
||||
## 索引
|
||||
|
||||
- 设计决策:`decisions/`
|
||||
- 变更历史:`changelog/`
|
||||
- 相关文档:`docs/`
|
||||
Loading…
Reference in New Issue
Block a user