feat(skill): add feature memory with changelog and decisions
添加 skill 功能的完整记忆文档: Changelog: - 2025-Q4: 初始实现 (GRPC 层 + 内置 skills) - 2026-Q1: API 完善 (REST API + Hook 系统) Design Decisions: - 001: Skill 架构设计 (目录结构、Hook 系统) - 002: 上传安全措施 (ZipSlip、路径遍历防护) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
parent
bbfe5d929f
commit
63d17d355b
38
.features/skill/changelog/2025-Q4.md
Normal file
38
.features/skill/changelog/2025-Q4.md
Normal file
@ -0,0 +1,38 @@
|
||||
# 2025-Q4 Skill Changelog
|
||||
|
||||
## 版本 0.1.0 - 初始实现
|
||||
|
||||
### 2025-10-31
|
||||
- **新增**: agent skills 支持,测试阶段代码
|
||||
- **文件**: `chat_handler.py`, `knowledge_chat_cc_service.py`
|
||||
- **作者**: Alex
|
||||
|
||||
### 2025-11-03
|
||||
- **新增**: 内置 skills (pptx, docx, pdf, xlsx)
|
||||
- **新增**: jina skill - 规范 jina 网络搜索
|
||||
- **解决**: "prompt too long" 问题
|
||||
|
||||
### 2025-11-13
|
||||
- **新增**: cc agent task 任务添加默认 skills
|
||||
- **文件**: `task_handler.py`, `knowledge_task_cc_service.py`
|
||||
|
||||
### 2025-11-19
|
||||
- **新增**: skill-creator 内置技能
|
||||
|
||||
### 2025-11-20
|
||||
- **新增**: EFS 类型接口,新增上传 skill
|
||||
- **功能**: 支持 skill 包上传
|
||||
|
||||
### 2025-11-21
|
||||
- **新增**: EFS 删除 skill 接口
|
||||
- **移除**: skill 查询接口(暂存)
|
||||
|
||||
### 2025-11-22
|
||||
- **新增**: GRPC chat 接口,skills 参数支持
|
||||
|
||||
### 2025-11-26
|
||||
- **新增**: skill 上传支持 `.skill` 后缀(测试)
|
||||
|
||||
### 2025-11-28
|
||||
- **优化**: 默认挂载的 skill 改为合并逻辑
|
||||
- **优化**: 代码结构优化
|
||||
36
.features/skill/changelog/2026-Q1.md
Normal file
36
.features/skill/changelog/2026-Q1.md
Normal file
@ -0,0 +1,36 @@
|
||||
# 2026-Q1 Skill Changelog
|
||||
|
||||
## 版本 0.2.0 - API 完善
|
||||
|
||||
### 2026-01-07
|
||||
- **新增**: Skills 列表查询 API(能力管理页面)
|
||||
- **新增**: 技能管理 API with authentication
|
||||
- **文件**: `routes/skill_manager.py`
|
||||
- **作者**: claude[bot], 朱潮
|
||||
|
||||
### 2026-01-09
|
||||
- **重构**: 移除 catalog agent,合并到 general agent
|
||||
- **说明**: 简化架构,统一使用 general_agent
|
||||
- **作者**: 朱潮
|
||||
|
||||
### 2026-01-10
|
||||
- **修复**: SKILL.md 的 name 字段解析逻辑
|
||||
- **新增**: 支持非标准 YAML 格式
|
||||
- **新增**: 目录名称不匹配时自动重命名
|
||||
- **作者**: Alex
|
||||
|
||||
### 2026-01-13
|
||||
- **修复**: multipart form data format for catalog service
|
||||
- **作者**: 朱潮
|
||||
|
||||
### 2026-01-28
|
||||
- **新增**: enable_thinking, enable_memory, skills to agent_bot_config
|
||||
- **作者**: 朱潮
|
||||
|
||||
### 2026-01-30
|
||||
- **修复**: skill router 正确注册
|
||||
- **作者**: 朱潮
|
||||
|
||||
### 2026-02-11
|
||||
- **新增**: 初始化 skill feature memory
|
||||
- **作者**: 朱潮
|
||||
46
.features/skill/decisions/001-architecture.md
Normal file
46
.features/skill/decisions/001-architecture.md
Normal file
@ -0,0 +1,46 @@
|
||||
# 001: Skill 架构设计
|
||||
|
||||
## 状态
|
||||
已采纳 (Accepted)
|
||||
|
||||
## 上下文
|
||||
需要为 QWEN_AGENT 模式的机器人提供可扩展的技能(插件/工具)支持,允许动态加载自定义功能。
|
||||
|
||||
## 决策
|
||||
|
||||
### 目录结构设计
|
||||
```
|
||||
skill-name/
|
||||
├── SKILL.md # 核心指令文档(必需)
|
||||
├── skill.yaml # 元数据配置(可选)
|
||||
├── .claude-plugin/
|
||||
│ └── plugin.json # Hook 和 MCP 配置(可选)
|
||||
└── scripts/ # 可执行脚本(可选)
|
||||
```
|
||||
|
||||
### Hook 系统
|
||||
| Hook 类型 | 执行时机 | 用途 |
|
||||
|-----------|---------|------|
|
||||
| `PrePrompt` | system_prompt 加载时 | 动态注入用户上下文 |
|
||||
| `PostAgent` | agent 执行后 | 处理响应结果 |
|
||||
| `PreSave` | 保存消息前 | 内容过滤/修改 |
|
||||
|
||||
### 技能来源
|
||||
1. **官方 skills**: `./skills/` 目录
|
||||
2. **用户 skills**: `projects/uploads/{bot_id}/skills/`
|
||||
|
||||
## 结果
|
||||
|
||||
### 正面影响
|
||||
- 渐进式加载,按需读取
|
||||
- 支持多种元数据格式(优先级: plugin.json > SKILL.md)
|
||||
- 完整的 Hook 扩展机制
|
||||
- MCP 服<><E69C8D><EFBFBD>器配置支持
|
||||
|
||||
### 负面影响
|
||||
- 需要管理文件系统权限
|
||||
- 技能包格式验证复杂度增加
|
||||
|
||||
## 替代方案
|
||||
1. 使用数据库存储(拒绝:文件更灵活)
|
||||
2. 仅支持单一格式(拒绝:用户多样性需求)
|
||||
35
.features/skill/decisions/002-security.md
Normal file
35
.features/skill/decisions/002-security.md
Normal file
@ -0,0 +1,35 @@
|
||||
# 002: Skill 上传安全措施
|
||||
|
||||
## 状态
|
||||
已采纳 (Accepted)
|
||||
|
||||
## 上下文
|
||||
用户可以上传 ZIP 格式的技能包,需要防范常见的安全攻击。
|
||||
|
||||
## 决策
|
||||
|
||||
### 安全防护措施
|
||||
|
||||
| 威胁 | 防护措施 |
|
||||
|------|---------|
|
||||
| ZipSlip 攻击 | 检查每个文件的解压路径 |
|
||||
| 路径遍历 | 验证 `bot_id` 和 `skill_name` 格式 |
|
||||
| Zip 炸弹 | 压缩比检查(最大 100:1) |
|
||||
| 磁盘空间滥用 | 上传 50MB,解压后最大 500MB |
|
||||
| 符号链接攻击 | 禁止解压包含符号链接的文件 |
|
||||
|
||||
### 限制规则
|
||||
```python
|
||||
MAX_UPLOAD_SIZE = 50 * 1024 * 1024 # 50MB
|
||||
MAX_EXTRACTED_SIZE = 500 * 1024 * 1024 # 500MB
|
||||
MAX_COMPRESSION_RATIO = 100 # 100:1
|
||||
```
|
||||
|
||||
## 结果
|
||||
- 完整的上传验证链
|
||||
- 防止恶意文件攻击
|
||||
- 资源使用可控
|
||||
|
||||
## 替代方案
|
||||
1. 使用沙箱容器解压(拒绝:复杂度高)
|
||||
2. 仅允许预定义技能(拒绝:限制用户自定义能力)
|
||||
Loading…
Reference in New Issue
Block a user