refactor(kb-workflow): 重构为真正的编排者,使用sessions_spawn调用子agent

- kb_workflow.py: 重构为编排者,使用sessions_spawn调用子技能
- skill_main.py: 新增技能入口,处理用户消息
- SKILL.md: 更新文档,明确架构和流程
- SkillBug.md: 新增问题记录文档

设计原则:
- workflow不读文件内容,从文件名提取平台
- 使用sessions_spawn调用子agent
- 子技能自己定义输入输出格式
This commit is contained in:
OpenClaw Agent
2026-02-10 20:31:33 +08:00
parent 49ebbdff0a
commit 11c62dd383
4 changed files with 1049 additions and 1031 deletions
+99
View File
@@ -0,0 +1,99 @@
# SkillBug.md
## 问题记录
### 2026-02-10: 缺少自动写入pending目录的功能
**状态:** ✅ 已修复
**解决方案:**
1. 创建 `skill_main.py` 作为技能入口
2. 创建 `kb_workflow.py` 实现完整流程
3. 接收用户消息后自动处理
---
### 2026-02-10: kb-workflow 自己实现链接解析而非调用子技能
**状态:** ✅ 已修复
**解决方案:**
重构 `kb_workflow.py`:
1. 使用 `sessions_spawn` 调用子agent
2. 不自己实现链接解析,调用 `kb-link-parser`
3. 从文件名提取平台(不读内容)
```python
# 调用子agent
result = sessions_spawn(
agentId="kb-link-parser",
task="解析URL,输出到pending目录"
)
```
---
### 2026-02-10: _extract_metadata 是空壳
**状态:** ✅ 已修复
**解决方案:**
实现真正的子agent调用:
```python
def call_metadata_agent(platform, link_file, metadata_dir):
agent_id = METADATA_AGENTS.get(platform) # bilibili → kb-bilibili-metadata
return call_subagent(agent_id, task, timeout=120)
```
---
## 重构总结
### 架构变化
**之前(错误):**
```
kb_workflow.py (自己造轮子)
├── _extract_link() - 自己解析URL
├── _extract_metadata() - 空壳
```
**之后(正确):**
```
kb-workflow (主代理)
├── sessions_spawn() 调用子agent
│ ├── kb-link-parser → pending/*.link.json
│ ├── kb-bilibili-metadata → metadata/*.meta.json
│ ├── kb-bilibili-content → content/downloads/*.mp4
│ ├── kb-ocr-processor → content/*.txt
│ └── kb-deep-analyzer → analyzed/*.md
└── 文件流转 + Git归档
```
### 设计原则
| workflow 管 | workflow 不管 |
|-------------|---------------|
| 查重 | 读文件内容 |
| 调用子agent | 子技能内部格式 |
| 提取文件名(从返回结果) | 子技能逻辑 |
| 提取平台(从文件名) | |
| 传递路径信息 | |
| Git归档 | |
### 文件变更
| 文件 | 操作 | 说明 |
|------|------|------|
| `kb_workflow.py` | 重构 | 使用 sessions_spawn 调用子agent |
| `skill_main.py` | 新增 | 技能入口 |
| `SKILL.md` | 更新 | 明确架构和流程 |
---
## 待办
- [ ] 测试完整的处理流程
- [ ] 验证 sessions_spawn 调用是否正常
- [ ] 完善错误处理
- [ ] 添加单元测试