690 lines
29 KiB
Markdown
690 lines
29 KiB
Markdown
# #05 上下文四层架构 — 改造方案
|
||
|
||
> 版本: v2.0
|
||
> 日期: 2026-05-30
|
||
> 作者: 庞统(副军师)
|
||
> 状态: 设计中
|
||
> 前置: #02 Main Session + Delegation, #03 Prompt 进化, #04 黑板协作模型
|
||
> 来源: architecture-v3.0.md §10.1, technical-design-v2.6.md §5, v2.8-direction-notes, distill-full-design.md, distill-integration-plan.md, v2.6-research-04
|
||
|
||
---
|
||
|
||
## 一、原始四层定义(对齐设计)
|
||
|
||
```
|
||
L0 铁律层(~500 tokens) → Hook 注入,每轮强制,不占 bootstrap
|
||
L1 角色层(~2000 tokens) → SOUL.md / IDENTITY.md(Agent Workspace 自带)
|
||
L2 引擎注入层(~1500 tokens)→ BootstrapBuilder 按 role 精确拼装
|
||
L3 被动参考层(按需加载)→ SkillRegistry + OpenClaw Skills
|
||
```
|
||
|
||
### 设计初衷(为什么有这四层)
|
||
|
||
| 层 | 解决什么问题 | 核心机制 |
|
||
|---|---|---|
|
||
| **L0** | Agent 需要不可绕过的安全/行为底线 | Hook 每轮注入,不受 compaction 稀释 |
|
||
| **L1** | Agent 需要知道"我是谁、我擅长什么、团队怎么协作" | Workspace 文件由 Gateway 自动注入 |
|
||
| **L2** | 不同角色需要不同上下文——执行者需要 Guardrail,审查者需要 Review Protocol | BootstrapBuilder 按 role 精确拼装,不多不少 |
|
||
| **L3** | Agent 有 42+ 个 Skill,全量注入 token 爆炸 | description 注入列表,Agent 按需 read 全文 |
|
||
|
||
### L2 的 7 个注入组件
|
||
|
||
来源:technical-design-v2.6.md §5, topic4 D4-7
|
||
|
||
| 组件 | 内容 | 角色 |
|
||
|------|------|------|
|
||
| ① 操作规范 | `prompt_templates/{role}.md` — 角色的工作方式声明 | 所有 |
|
||
| ② 项目背景 | `project_context.yaml` | 所有 |
|
||
| ③ 任务上下文 | 黑板任务数据(title/description/must_haves/status) | 所有 |
|
||
| ④ 前序信息 | depends_on 产出摘要 + handoff comment | executor |
|
||
| ⑤ Guardrail 规则 | `guardrails.yaml` 的 rules + behavior_rules | executor |
|
||
| ⑥ 审查协议 | `review_protocols/*.yaml` | reviewer |
|
||
| ⑦ 经验注入 | experiences 表按 tag 匹配(最多 5 条) | executor, reviewer |
|
||
|
||
**精确注入原则**(D4-7):
|
||
|
||
| 角色 | 注入 | 不注入 |
|
||
|------|------|--------|
|
||
| executor | ①②③④⑤⑦ | ⑥ |
|
||
| reviewer | ①②③⑥⑦ | ④⑤ |
|
||
| planner(庞统) | ①②③ + template_components | ④⑤⑥ |
|
||
| claim | ②③ + 任务列表 | ①④⑤⑥⑦ |
|
||
| mention | ②③ + 相关讨论 | ①④⑤⑥⑦ |
|
||
| review_pangtong | ①②③⑥ + 三问框架 | ④⑤ |
|
||
| review_simayi | ①②③⑥ + 质量检查清单 | ④⑤ |
|
||
|
||
### 两套 Skill 系统
|
||
|
||
| 系统 | 机制 | 内容 | 数量 |
|
||
|------|------|------|------|
|
||
| **OpenClaw 原生** | `extraDirs` 扫描 SKILL.md frontmatter → Agent 按 description 匹配 → `read` 全文 | 通用的 42 个 Skill(plan-act-verify, code-review, quant-backtest 等) | 42 |
|
||
| **moziplus SkillRegistry** | `skill_system.py` 注册 → Daemon 构建 prompt 时匹配注入 description | moziplus 专用 Skill(蒸馏经验、审查协议等) | 4(蒸馏)+ 未来扩展 |
|
||
|
||
**关系**:moziplus 专用为主,但未来可能有重叠(如 superpower 加入、通用 Skill 被 Daemon 注入)。两套系统按职责分工:OpenClaw 管理 Agent 自己发现的 Skill,moziplus 管理 Daemon 注入的 Skill。
|
||
|
||
---
|
||
|
||
## 二、现状 vs 设计 Gap
|
||
|
||
### L0 铁律层
|
||
|
||
| 设计 | 现状 | Gap |
|
||
|------|------|-----|
|
||
| 安全红线(rules)6 条 | ✅ `config/guardrails.yaml` 已有 | 无 |
|
||
| 行为铁律(behavior_rules)2 条 | ❌ 未合并,存在 `guardrails/` 孤儿文件 | 待合并 |
|
||
| GATE 铁律 | ✅ gate-enforcer Hook 已注入 | 无 |
|
||
| Delegation 铁律 | ✅ gate-enforcer Hook 已注入 | 需适配 #02 Main Session |
|
||
| GATE 产出物检查 | ✅ gate-enforcer before_tool_call | 无 |
|
||
|
||
### L1 角色层
|
||
|
||
| 设计 | 现状 | Gap |
|
||
|------|------|-----|
|
||
| SOUL.md 人格 | ✅ 各 Agent 已有 | 缺**专长声明**段 |
|
||
| AGENTS.md 团队规则 | ⚠️ 各 Agent 有,但内容是 v1 mozi 时代的 | 需重写为 **v2 黑板协作指南** |
|
||
| TOOLS.md 工具配置 | ⚠️ 各 Agent 有 | 缺**黑板 API 参考** |
|
||
| IDENTITY.md | ⚠️ 空模板 | 可选,不阻塞 |
|
||
|
||
### L2 引擎注入层
|
||
|
||
| 设计 | 现状 | Gap |
|
||
|------|------|-----|
|
||
| ① 操作规范 `prompt_templates/*.md` | ❌ 目录不存在,5 个角色模板未创建 | **核心 Gap** |
|
||
| ② 项目背景 | ❌ BootstrapBuilder 未实例化 | 同上 |
|
||
| ③ 任务上下文 | ❌ BootstrapBuilder 未实例化 | 同上 |
|
||
| ④ 前序信息 + handoff | ❌ BootstrapBuilder 未实例化 | 同上 |
|
||
| ⑤ Guardrail 规则 | ❌ BootstrapBuilder 未实例化 | 同上 |
|
||
| ⑥ 审查协议 `review_protocols/*.yaml` | ❌ 目录不存在 | 待创建 |
|
||
| ⑦ 经验注入 experiences 表 | ❌ 表不存在,119 条数据未导入 | 待建表 |
|
||
| Daemon prompt 模板 | ⚠️ 6 个模板存在但风格是固定步骤 | 需重写(#03 Prompt 进化) |
|
||
| BootstrapBuilder 实例化 | ❌ `main.py` 中 `bootstrap_builder=None` | **关键:从未启用** |
|
||
|
||
**一句话**:BootstrapBuilder 代码框架完整,但从未被实例化。所有 L2 功能完全未启用。Daemon 的 prompt 构建走的是 spawner/ticker 的硬编码模板。
|
||
|
||
### L3 被动参考层
|
||
|
||
| 设计 | 现状 | Gap |
|
||
|------|------|-----|
|
||
| OpenClaw 原生 Skills(42 个) | ✅ `extraDirs` 已配置,Agent 可 read | 无 |
|
||
| moziplus SkillRegistry | ❌ `skill_system.py` 只认 .json,skills/ 为空 | 需支持 .md + 注册蒸馏 Skill |
|
||
| Skill description 四要素 | ⚠️ 部分 Skill 有,部分没有 | 按需优化(P3) |
|
||
|
||
---
|
||
|
||
## 三、各层改造方案
|
||
|
||
### L0 改造:保持极简,只放通用铁律
|
||
|
||
**改动量**:极小(维持现状,微调 delegation-rule)
|
||
|
||
**原则**:L0 只放跨系统通用的铁律。moziplus v2.0 特有的行为规范(如行为铁律细节、安全红线等)归入 L2 引擎注入层,不污染 L0。
|
||
|
||
#### L0-1:当前 L0 内容(保持不变)
|
||
|
||
- **GATE 铁律**(gate-enforcer prependContext):需求不清不动手、根因不明不修复、方案未定不实现、评估过影响范围才动手、非平凡任务用 plan-act-verify skill
|
||
- **Delegation 铁律**(gate-enforcer prependContext):收到 moziplus 投递的独立任务时优先使用 subagent-delegation skill
|
||
- **GATE 产出物检查**(gate-enforcer before_tool_call):Agent 调 write/edit 前检查 gate.json
|
||
|
||
#### L0-2:微调 delegation-rule 适配 #02
|
||
|
||
当前:`收到 moziplus 投递的编码/文档/调研等独立任务时,优先使用 subagent-delegation skill`
|
||
|
||
改为:
|
||
```
|
||
收到 moziplus 投递的独立任务时:
|
||
- 编码/文档/调研等重活 → sessions_spawn(subagent, cleanup:"delete")
|
||
- 只需决策或确认 → 直接做
|
||
- 需要其他人协作 → 黑板 comment @ 对应 Agent
|
||
- 不懂 → 先在黑板提问,不要猜
|
||
```
|
||
|
||
#### 归入 L2 的内容
|
||
|
||
以下内容不进 L0,归入 L2 引擎注入层(角色模板或 BootstrapBuilder 动态拼装):
|
||
- 行为铁律(GATE 流程细节、不绕圈子)→ `prompt_templates/executor.md` 的约束段
|
||
- 安全红线(guardrails.yaml rules)→ BootstrapBuilder ⑤Guardrail 组件,仅注入 executor
|
||
- 审查协议(review_protocols/)→ BootstrapBuilder ⑥审查协议组件,仅注入 reviewer
|
||
|
||
---
|
||
|
||
### L1 改造:Workspace 文件重写
|
||
|
||
**改动量**:中等(6 个 Agent × 3 个文件,以文本编辑为主)
|
||
|
||
#### L1-1:SOUL.md 加专长声明
|
||
|
||
每个 Agent 的 SOUL.md 在"我是谁"段后新增:
|
||
|
||
```markdown
|
||
## 我的专长
|
||
- ✅ 擅长:编码、实现、回测脚本、策略编码
|
||
- ❌ 不擅长:风控审核(找关羽)、数据获取(找赵云)、部署(找姜维)
|
||
|
||
只认领和执行符合专长的任务,不适合的不要抢。
|
||
```
|
||
|
||
各 Agent 专长:
|
||
|
||
| Agent | 擅长 | 不擅长 |
|
||
|-------|------|--------|
|
||
| zhangfei-dev | 编码、实现、脚本、策略编码 | 风控、数据、部署 |
|
||
| guanyu-dev | 风控、合规、仓位检查 | 编码实现、数据获取 |
|
||
| zhaoyun-data | 数据获取、清洗、验证 | 编码实现、风控 |
|
||
| jiangwei-infra | 部署、Docker、vnpy、NAS | 策略编码、风控 |
|
||
| simayi-challenger | 审查、质量检查、辩论 | 数据获取、部署 |
|
||
| pangtong-fujunshi | 规划、协调、策略研究 | 不执行具体编码 |
|
||
|
||
**目的**:Agent 从 L1 知道自己擅长什么,L2 的广播认领模板不需要再注入身份。
|
||
|
||
#### L1-2:AGENTS.md 重写为 v2 黑板协作指南
|
||
|
||
移除 v1 编排纪律(`cli.py`、mozi daemon 相关),替换为:
|
||
|
||
```markdown
|
||
## 黑板协作(moziplus v2)
|
||
|
||
黑板是你的工作空间。所有任务、讨论、产出都在黑板上。
|
||
|
||
### 你能做什么
|
||
- 读任务详情: GET http://localhost:8083/api/projects/{pid}/tasks/{id}?expand=all
|
||
- 读活跃任务: GET http://localhost:8083/api/projects/{pid}/tasks?status=working,claimed,review
|
||
- 认领任务: POST .../tasks/{id}/claim body: {"agent": "你的id"}
|
||
- 更新状态: POST .../tasks/{id}/status body: {"status": "working", "agent": "你的id"}
|
||
- 写产出: POST .../tasks/{id}/outputs body: {"agent": "你的id", ...}
|
||
- 写评论: POST .../tasks/{id}/comments body: {"author": "你的id", "body": "..."}
|
||
- 创建子任务: POST .../tasks body: {"title": "...", "parent_task": "父任务id", ...}
|
||
|
||
### 协作规则
|
||
1. **讨论用 comment** — 有疑问、要讨论、给反馈,写在黑板 comment 里
|
||
2. **@ 别人协作** — comment body 中 @zhangfei-dev 会自动通知对方
|
||
3. **不懂就问** — 任务描述不清、验收标准模糊、上下文不够,先在黑板 comment 提问,不要猜
|
||
4. **写交接** — 完成任务时写 comment_type=handoff,告诉下一个人你做了什么
|
||
5. **产出物 > 消息** — 产出写在 output 里,不只是 comment
|
||
6. **只认领符合专长的任务** — 参考 SOUL.md 的专长声明
|
||
|
||
### 状态流转
|
||
pending → claimed → working → review → done
|
||
↘ failed
|
||
↘ blocked
|
||
↘ waiting_human
|
||
|
||
### 对应 Skill
|
||
- 非平凡编码任务 → plan-act-verify skill
|
||
- 代码审查 → code-review skill
|
||
- 数据获取 → data-acquisition skill
|
||
- 部署 → deployment-infra skill
|
||
- 调研分析 → 先出方案等确认
|
||
```
|
||
|
||
#### L1-3:TOOLS.md 加黑板 API 速查
|
||
|
||
```markdown
|
||
## 黑板 API(moziplus v2)
|
||
- 端口: 8083
|
||
- 前端: http://localhost:8083/
|
||
- API Base: http://localhost:8083/api
|
||
- 项目 ID: 通过任务消息中的 project_id 获取
|
||
```
|
||
|
||
---
|
||
|
||
### L2 改造:BootstrapBuilder 启用 + 角色模板 + Prompt 进化
|
||
|
||
**改动量**:核心改造,代码 ~150 行 + 5 个模板文件
|
||
|
||
这是最大也最关键的一层改造。分三个阶段:
|
||
|
||
#### Phase 1:启用 BootstrapBuilder
|
||
|
||
**改动文件**:`src/main.py`(~5 行)
|
||
|
||
```python
|
||
from src.daemon.bootstrap import BootstrapBuilder
|
||
|
||
bootstrap = BootstrapBuilder(
|
||
template_dir=Path("prompt_templates"), # Phase 1 先用文件模板
|
||
max_tokens=4096,
|
||
)
|
||
spawner = AgentSpawner(
|
||
...,
|
||
bootstrap_builder=bootstrap, # 之前是 None
|
||
)
|
||
```
|
||
|
||
**改动文件**:`src/daemon/spawner.py`(~20 行)
|
||
|
||
`build_message()` 方法中,当 `self.bootstrap_builder` 存在时走 BootstrapBuilder 路径:
|
||
|
||
```python
|
||
def build_message(self, agent_id, task, role="executor", **kwargs):
|
||
if self.bootstrap_builder and task is not None:
|
||
# 走 BootstrapBuilder 路径
|
||
return self.bootstrap_builder.build(
|
||
role=role,
|
||
agent_id=agent_id,
|
||
task=task,
|
||
guardrail_rules=self._get_guardrails_for_task(task),
|
||
project_context=self._get_project_context(task),
|
||
experiences=self._get_matching_experiences(task),
|
||
)
|
||
else:
|
||
# fallback(无 task 的场景,如 broadcast)
|
||
return self._build_fallback_message(agent_id, **kwargs)
|
||
```
|
||
|
||
#### Phase 2:创建 5 个角色模板(L2 ①操作规范)
|
||
|
||
**目录**:`prompt_templates/`
|
||
|
||
每个模板遵循 #03 Prompt 进化的设计——**能力 + 约束声明,不写固定步骤**。
|
||
|
||
**executor.md**:
|
||
|
||
```markdown
|
||
# 执行者操作规范
|
||
|
||
## 你的能力
|
||
通过黑板 API({api_base})你可以:
|
||
- 读任何任务详情(含依赖、讨论、产出)
|
||
- 读所有活跃任务
|
||
- 写产出(POST outputs)
|
||
- 写评论/交接/提问(POST comments)
|
||
- 更新任务状态(POST status)
|
||
- 创建子任务(POST tasks)
|
||
|
||
## 任务执行纪律
|
||
1. 先确认当前设计再改——不确定时问用户确认
|
||
2. 认领任务前检查角色匹配——评审者不认领编码任务
|
||
3. 发现实现与预期不符时,先理解当前设计逻辑
|
||
|
||
## 约束
|
||
- 完成后必须写产出物(output)并标 review,不能无产出就提交
|
||
- 失败了标 failed 并写明原因
|
||
- 产出物 handoff comment ≥ 50 字符(用于系统验证)
|
||
- 禁止使用 sessions_send 直接发消息(用黑板 comment)
|
||
|
||
## 交接责任
|
||
完成后写交接文档(handoff comment):
|
||
- 你做了什么决策、为什么这么做
|
||
- 遇到什么问题、怎么解决的
|
||
- 给下一个 Agent 的建议和注意事项
|
||
⚠️ handoff 不超过 500 字,只写决策/权衡/坑/建议
|
||
```
|
||
|
||
**reviewer.md**:
|
||
|
||
```markdown
|
||
# 审查者操作规范
|
||
|
||
## 你的能力
|
||
通过黑板 API({api_base})你可以:
|
||
- 读任务详情(含全部产出和讨论)
|
||
- 写审查评论(POST comments, comment_type=review)
|
||
- 写审查结论(POST reviews)
|
||
- 标 approved / rejected / needs_revision
|
||
|
||
## 审查纪律
|
||
1. 审查意见必须具体到行号和修改方向,不做模糊评价
|
||
2. rejected 时必须给出改进建议
|
||
3. 涉及风控/实盘相关,额外关注安全性
|
||
4. 不批准自己写的代码
|
||
|
||
## 审查要点
|
||
- 代码质量:命名、结构、可维护性
|
||
- 正确性:逻辑、边界、异常处理
|
||
- 安全性:注入、越权、硬编码密钥
|
||
- 符合验收标准(must_haves)
|
||
|
||
## 诚实边界
|
||
- 审查者可能遗漏深层逻辑问题
|
||
- 性能问题需要实际测试数据
|
||
```
|
||
|
||
**planner.md**(庞统规划):
|
||
|
||
```markdown
|
||
# 规划者操作规范
|
||
|
||
## 你的能力
|
||
- 分析需求,拆解为子任务
|
||
- 创建任务(POST tasks)含 must_haves 和 risk_level
|
||
- 委派给合适的 Agent(通过 assignee 或 @mention)
|
||
- 调整计划(增删任务、修改依赖)
|
||
|
||
## 规划纪律
|
||
1. 需求不清时用苏格拉底提问帮用户梳理,不猜
|
||
2. 拆解结果要经过验证——覆盖性、依赖合理性、粒度适当
|
||
3. 计划是活的,执行过程中随时调整
|
||
4. 不懂就问用户,不要静默做决策
|
||
|
||
## 模板组件
|
||
根据需求选择需要的 phases:
|
||
- research(需要调研)
|
||
- design(需要设计)
|
||
- coding(需要编码)+ code_review
|
||
- data(需要数据获取)
|
||
- deploy(需要部署)
|
||
- risk_control(涉及实盘/资金,不可删除)
|
||
- final_review(铁律,不可删除)
|
||
```
|
||
|
||
**review_pangtong.md**(庞统进度 review):
|
||
|
||
```markdown
|
||
# 庞统 Review 操作规范(多轮迭代)
|
||
|
||
## 三问框架
|
||
1. Goal 还清晰吗?
|
||
2. 成果物覆盖 goal 了吗?
|
||
3. 下一轮需要做什么?
|
||
|
||
## 你的能力
|
||
- 读所有 sub task 的状态和产出
|
||
- 创建新一轮 sub tasks
|
||
- 标 GOAL_ACHIEVED / 调整方向
|
||
- 写 review comment
|
||
|
||
## 约束
|
||
- Round 上限: {MAX_ROUNDS}(当前第 {round_num} 轮)
|
||
- 超过上限时升级用户
|
||
```
|
||
|
||
**review_simayi.md**(司马懿质量 review):
|
||
|
||
```markdown
|
||
# 司马懿 Review 操作规范
|
||
|
||
## 审查层级
|
||
- high 风险:对抗辩论(正方 vs 反方)
|
||
- standard 风险:单审
|
||
- low 风险:Guardrail 自动
|
||
|
||
## 你的能力
|
||
- 读任务产出和前序讨论
|
||
- 写 review(POST reviews)含 verdict + notes
|
||
- 反驳权:被 rejected 时可以 ACCEPT/REJECT/PARTIAL
|
||
|
||
## 约束
|
||
- 审查意见必须具体,不做模糊评价
|
||
- rejected 必须给改进建议
|
||
- 涉及风控/实盘额外关注安全
|
||
```
|
||
|
||
#### Phase 3:改造 Daemon prompt 模板(#03 Prompt 进化)
|
||
|
||
将现有的 6 个硬编码模板统一归入 BootstrapBuilder。Daemon 的 prompt 构建变成:
|
||
|
||
```
|
||
Spawner.spawn() → BootstrapBuilder.build(role, task, ...) → 拼装后的 message
|
||
```
|
||
|
||
**各场景的 role 映射**:
|
||
|
||
| 场景 | 原模板 | 新 role | BootstrapBuilder 注入 |
|
||
|------|--------|---------|---------------------|
|
||
| 任务执行 | SPAWN_PROMPT_TEMPLATE | executor | executor.md + 任务上下文 + Guardrail + 经验 |
|
||
| 广播认领 | _build_claim_prompt | claim | 任务列表 + API 列表(无角色模板) |
|
||
| @mention | _build_mention_prompt | mention | 相关讨论 + 任务上下文(无角色模板) |
|
||
| 庞统 review | _build_review_prompt | review_pangtong | review_pangtong.md + 产出汇总 |
|
||
| 司马懿 review | 不存在(新增) | review_simayi | review_simayi.md + 产出物 |
|
||
| 庞统委派 | _build_delegate_prompt | delegate | 团队列表 + 任务上下文 |
|
||
| 讨论 | DISCUSSION_PROMPT | discussion | 开放式(保留不变) |
|
||
|
||
**关键变化**:
|
||
- **去掉身份注入** — "你是 {agent_id},专长: {caps}" 由 L1 SOUL.md 负责
|
||
- **去掉固定步骤** — 不再写"标 working → 干活 → 写产出 → 标 review"
|
||
- **保留能力列表** — API 端点列表在角色模板中,Agent 自己选怎么用
|
||
- **保留约束底线** — 必须写产出、必须标 review 是硬约束
|
||
|
||
#### Phase 4:创建 experiences 表 + 导入
|
||
|
||
**建表 SQL**:
|
||
|
||
```sql
|
||
CREATE TABLE experiences (
|
||
experience_id TEXT PRIMARY KEY,
|
||
source TEXT NOT NULL, -- 'pangtong' | 'simayi' | 'mail'
|
||
category TEXT NOT NULL, -- 'correction' | 'trial_error' | 'success' | 'collaboration' | 'disagreement' | 'declaration'
|
||
summary TEXT NOT NULL, -- 200 字以内
|
||
confidence REAL DEFAULT 0.5,
|
||
status TEXT DEFAULT 'draft', -- 'draft' | 'active' | 'deprecated'
|
||
created_at TEXT NOT NULL,
|
||
created_by TEXT NOT NULL
|
||
);
|
||
|
||
CREATE TABLE experience_tags (
|
||
experience_id TEXT NOT NULL REFERENCES experiences(experience_id),
|
||
tag TEXT NOT NULL,
|
||
PRIMARY KEY (experience_id, tag)
|
||
);
|
||
```
|
||
|
||
**导入**:将 `distill-experiences-collaboration.json`(119 条)导入表。
|
||
|
||
**接入**:`bootstrap.py` 的 `_format_experiences()` 已有从表读取并格式化的逻辑,表存在即可工作。
|
||
|
||
---
|
||
|
||
### L3 改造:SkillRegistry 支持 .md + 注册蒸馏 Skill
|
||
|
||
**改动量**:小(~30 行代码 + 4 个 Skill 文件)
|
||
|
||
#### L3-1:skill_system.py 支持 .md frontmatter
|
||
|
||
```python
|
||
# skill_system.py _load_from_dir 增加 .md 支持
|
||
def _load_from_dir(self, dir_path: Path) -> None:
|
||
# 原有 .json 加载(不变)
|
||
for f in dir_path.glob("*.json"):
|
||
try:
|
||
data = json.loads(f.read_text())
|
||
skill = Skill.from_dict(data)
|
||
self._skills[skill.id] = skill
|
||
except Exception:
|
||
logger.warning("Failed to load skill from %s", f)
|
||
|
||
# 新增:.md frontmatter 加载
|
||
for f in dir_path.glob("*.md"):
|
||
try:
|
||
skill = self._parse_skill_md(f)
|
||
if skill:
|
||
self._skills[skill.id] = skill
|
||
except Exception:
|
||
logger.warning("Failed to load skill from %s", f)
|
||
|
||
def _parse_skill_md(self, path: Path) -> Optional[Skill]:
|
||
"""从 SKILL.md frontmatter 解析 Skill 描述"""
|
||
content = path.read_text(encoding="utf-8")
|
||
if content.startswith("---"):
|
||
_, fm, _ = content.split("---", 2)
|
||
meta = yaml.safe_load(fm)
|
||
return Skill(
|
||
id=meta.get("name", path.stem),
|
||
name=meta.get("name", path.stem),
|
||
description=meta.get("description", ""),
|
||
freedom=SkillFreedom.HIGH.value,
|
||
tags=meta.get("tags", []),
|
||
)
|
||
return None
|
||
```
|
||
|
||
#### L3-2:注册 4 个蒸馏 Skill
|
||
|
||
将 `skills/` 目录下的 4 个蒸馏 Skill 文件注册:
|
||
|
||
| 文件 | 内容 | 来源 |
|
||
|------|------|------|
|
||
| trial-and-error-patterns.md | 6 个试错模式 | 蒸馏扫描② |
|
||
| proven-practices.md | 9 个成功最佳实践 | 蒸馏扫描③ |
|
||
| review-quality.md | 4 个评审质量模式 | 蒸馏扫描②③ |
|
||
| self-reflection-wisdom.md | 3 个自我反思模式 | 蒸馏扫描⑥ |
|
||
|
||
#### L3-3:BootstrapBuilder 接入 SkillRegistry
|
||
|
||
`bootstrap.py` 的 `_format_skills()` 从 SkillRegistry 获取匹配的 Skill description,按 D4-8 的四要素格式注入:
|
||
|
||
```
|
||
Skill: quant-backtest
|
||
When to use: 回测量化策略、验证策略历史表现
|
||
Chinese triggers: 回测、backtest、策略测试
|
||
Proactively suggest when: 用户提到策略实现完成后
|
||
```
|
||
|
||
#### L3-4:两套 Skill 系统的协同
|
||
|
||
```
|
||
┌─────────────────────────────────────────────────────────────┐
|
||
│ OpenClaw 原生 Skills(42 个) │
|
||
│ 来源: ~/.sanguo_projects/sanguo_mozi/skills/ (extraDirs) │
|
||
│ 机制: SKILL.md frontmatter → Agent description 匹配 → read │
|
||
│ 角色: Agent 自主发现和使用 │
|
||
├─────────────────────────────────────────────────────────────┤
|
||
│ moziplus SkillRegistry(4+ 个) │
|
||
│ 来源: skills/ 目录 + skill_system.py 注册 │
|
||
│ 机制: Daemon 构建 prompt 时匹配 → 注入 description │
|
||
│ 角色: Daemon 在 spawn 时注入,确保关键 Skill 不被遗漏 │
|
||
└─────────────────────────────────────────────────────────────┘
|
||
|
||
重叠处理:
|
||
- 同一个 Skill 可以同时出现在两套系统中
|
||
- OpenClaw 发现的通用 Skill(如 plan-act-verify)Agent 可以直接 read
|
||
- moziplus SkillRegistry 的专用 Skill(如 review-quality)由 Daemon 确保注入
|
||
- 未来:superpower 等第三方 Skill 通过 extraDirs 进入 OpenClaw 系统
|
||
```
|
||
|
||
---
|
||
|
||
## 四、改造后完整架构
|
||
|
||
```
|
||
┌──────────────────────────────────────────────────────────────────┐
|
||
│ L0 铁律层(~500 tokens)→ Hook 每轮强制注入 │
|
||
│ ├── gate-enforcer: GATE 铁律 + Delegation 铁律 │
|
||
│ └── gate-enforcer: GATE 产出物检查(before_tool_call) │
|
||
├──────────────────────────────────────────────────────────────────┤
|
||
│ L1 角色层(~2000 tokens)→ Workspace 自动注入 │
|
||
│ ├── SOUL.md: 人格 + 专长声明 │
|
||
│ ├── AGENTS.md: 团队通讯录 + 黑板协作指南 + 协作规则 │
|
||
│ ├── TOOLS.md: 工具配置 + 黑板 API 速查 │
|
||
│ ├── MEMORY.md: 长期记忆 │
|
||
│ └── HEARTBEAT.md: 当前工作状态 │
|
||
├──────────────────────────────────────────────────────────────────┤
|
||
│ L2 引擎注入层(~1500 tokens)→ BootstrapBuilder 按 role 精确拼装 │
|
||
│ ① 操作规范: prompt_templates/{role}.md(5 个角色) │
|
||
│ ② 项目背景: project_context.yaml │
|
||
│ ③ 任务上下文: 黑板任务数据 │
|
||
│ ④ 前序信息: depends_on 产出摘要 + handoff comment │
|
||
│ ⑤ Guardrail: rules + behavior_rules(仅 executor) │
|
||
│ ⑥ 审查协议: review_protocols/*.yaml(仅 reviewer) │
|
||
│ ⑦ 经验注入: experiences 表按 tag 匹配(最多 5 条) │
|
||
│ │
|
||
│ Prompt 风格: 能力 + 约束声明,不写固定步骤 │
|
||
│ 身份注入: 无(由 L1 负责) │
|
||
├──────────────────────────────────────────────────────────────────┤
|
||
│ L3 被动参考层(按需加载) │
|
||
│ ├── OpenClaw Skills: 42 个 SKILL.md(extraDirs, Agent 自主 read)│
|
||
│ └── moziplus Skills: 4+ 个(SkillRegistry, Daemon 注入 desc) │
|
||
└──────────────────────────────────────────────────────────────────┘
|
||
```
|
||
|
||
### 信息去重检查
|
||
|
||
| 信息 | L0 | L1 | L2 | L3 | 唯一归属 |
|
||
|------|----|----|----|----|---------|
|
||
| GATE 铁律 | ✅ Hook | — | — | — | L0 |
|
||
| Delegation 铁律 | ✅ Hook | — | — | — | L0 |
|
||
| 安全红线 | ✅ guardrails | — | ✅ 注入 executor | — | L0 为主,L2 按需引用 |
|
||
| 行为铁律 | ✅ guardrails | — | — | — | L0 |
|
||
| "你是谁" | — | ✅ SOUL | ~~❌ 删除~~ | — | L1 |
|
||
| "你擅长什么" | — | ✅ SOUL | ~~❌ 删除~~ | — | L1 |
|
||
| 黑板使用教程 | — | ✅ AGENTS | — | — | L1 |
|
||
| 黑板 API | — | ✅ TOOLS | — | — | L1 |
|
||
| 操作规范(能力+约束) | — | — | ✅ 模板 | — | L2 |
|
||
| 任务上下文 | — | — | ✅ 动态 | — | L2 |
|
||
| Guardrail 规则 | — | — | ✅ 动态 | — | L2 |
|
||
| 审查协议 | — | — | ✅ 动态 | — | L2 |
|
||
| 经验注入 | — | — | ✅ 动态 | — | L2 |
|
||
| Skill description | — | — | — | ✅ | L3 |
|
||
|
||
---
|
||
|
||
## 五、实施路线
|
||
|
||
### Step 1:L0 改造(独立,1 小时)
|
||
|
||
1. 合并 guardrails.yaml(新增 behavior_rules)
|
||
2. 更新 gate-enforcer delegation-rule
|
||
3. 清理 guardrails/ 孤儿文件
|
||
4. **验证**:`openclaw plugins doctor` + session 检查 Hook 注入
|
||
|
||
### Step 2:L1 改造(独立,2 小时)
|
||
|
||
1. 6 个 Agent SOUL.md 加专长段
|
||
2. 6 个 Agent AGENTS.md 重写(v1 → v2 黑板协作指南)
|
||
3. 6 个 Agent TOOLS.md 加黑板 API
|
||
4. **验证**:在 Control UI 对话中测试 Agent 是否知道专长和黑板用法
|
||
|
||
### Step 3:L2 Phase 1 — 启用 BootstrapBuilder(依赖 Step 1-2,半天)
|
||
|
||
1. main.py 实例化 BootstrapBuilder
|
||
2. spawner build_message() 走 BootstrapBuilder 路径
|
||
3. 创建 5 个角色模板文件
|
||
4. **验证**:单任务 spawn,检查注入内容
|
||
|
||
### Step 4:L2 Phase 2 — Prompt 模板重写(依赖 Step 3,1 天)
|
||
|
||
1. 重写 Daemon 6 个 prompt 模板为 BootstrapBuilder 路径
|
||
2. 去掉身份注入(L1 已负责)
|
||
3. 去掉固定步骤,改为能力+约束声明
|
||
4. 新增司马懿 review 模板 + ticker 触发逻辑
|
||
5. **验证**:E2E 单任务测试
|
||
|
||
### Step 5:L2 Phase 3 — experiences 表 + L3 改造(依赖 Step 4,1 天)
|
||
|
||
1. 创建 experiences 表 + 导入 119 条数据
|
||
2. skill_system.py 支持 .md
|
||
3. 注册 4 个蒸馏 Skill
|
||
4. BootstrapBuilder 接入 SkillRegistry
|
||
5. **验证**:experiences 注入检查 + Skill description 注入检查
|
||
|
||
### Step 6:E2E 全流程验证(依赖 Step 5,半天)
|
||
|
||
| 测试 | 验证点 |
|
||
|------|--------|
|
||
| E1 广播认领 | Agent 凭 L1 专长自主判断 |
|
||
| E2 任务执行 | 无固定步骤,Agent 自主决策 |
|
||
| E3 多轮迭代 | 庞统 Review 三问框架 |
|
||
| E4 @mention | 黑板讨论协作 |
|
||
| E6 质量审查 | 司马懿 Review |
|
||
| 新 E7 | Agent 主动提问(黑板 comment) |
|
||
|
||
---
|
||
|
||
## 六、风险
|
||
|
||
| 风险 | 概率 | 缓解 |
|
||
|------|------|------|
|
||
| BootstrapBuilder 拼装内容过长 | 低 | max_tokens=4096 限制 + 自动截断 |
|
||
| 去掉固定步骤后 Agent 不知道怎么操作 | 中 | L1 AGENTS.md 有黑板教程 + L2 角色模板有 API 列表 |
|
||
| L1 专长段不够强,Agent 还是乱认领 | 中 | L2 claim 模板保留"只认领符合专长"约束作双保险 |
|
||
| 两套 Skill 系统信息冲突 | 低 | OpenClaw 管理 Agent 自主的,moziplus 管理 Daemon 注入的 |
|
||
| experiences 注入噪音 | 中 | confidence 阈值过滤 + 最多 5 条 |
|
||
|
||
---
|
||
|
||
## 七、来源索引
|
||
|
||
| 设计文档 | 涉及内容 |
|
||
|---------|---------|
|
||
| architecture-v3.0.md §10.1 | L0-L3 四层定义 |
|
||
| technical-design-v2.6.md §5 | BootstrapBuilder 拼装逻辑 |
|
||
| v2.8-direction-notes §一~§三 | Daemon 退化 + Agent 进化 + Prompt 进化方向 |
|
||
| #03-prompt-evolution.md | 固定步骤 → 能力+约束声明 |
|
||
| distill-full-design.md | 蒸馏完整方案 |
|
||
| distill-integration-plan.md | 四层整合改造方案(未确认未执行) |
|
||
| v2.6-research-04 | Skill 三层自由度 + description 四要素 |
|
||
| v2.6-research-06 | SkillRouter 调研 + 三层组合方案 |
|
||
| topic4 D4-7 | L2 精确注入原则 |
|
||
| topic4 D4-8 | L3 Skill description 四要素 |
|
||
| OpenClaw skills-config.md | extraDirs + Skill 发现机制 |
|