diff --git a/docs/design/05-context-layers.md b/docs/design/05-context-layers.md index 789448f..0da8640 100644 --- a/docs/design/05-context-layers.md +++ b/docs/design/05-context-layers.md @@ -1,90 +1,190 @@ -# #05 上下文四层架构 — 现状分析与改造方案 +# #05 上下文四层架构 — 改造方案 -> 版本: v1.0 +> 版本: 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 --- -## 一、四层架构定义 - -Agent 收到的完整上下文由四个独立层叠加而成。每层有不同的注入时机、职责边界和变更频率。 +## 一、原始四层定义(对齐设计) ``` -┌──────────────────────────────────────────────────────────┐ -│ L1 Workspace 层(Gateway 自动注入) │ -│ 时机:每次 turn 的 system prompt │ -│ 来源:Agent workspace 目录下的 .md 文件 │ -│ 职责:我是谁、我擅长什么、团队规则、怎么协作 │ -│ 频率:低频变更(人格/角色/规则稳定后基本不动) │ -├──────────────────────────────────────────────────────────┤ -│ L2 Hook 层(Gateway Plugin 注入) │ -│ 时机:每次 turn 的 user message 前(prependContext) │ -│ 来源:gate-enforcer plugin │ -│ 职责:安全铁律 + 执行策略底线 │ -│ 频率:极低频变更(铁律级,不改则不变) │ -├──────────────────────────────────────────────────────────┤ -│ L3 Daemon 投递层(moziplus 构建的 message) │ -│ 时机:Daemon spawn Agent 时 │ -│ 来源:ticker/dispatcher 的 prompt 模板 │ -│ 职责:这次具体要做什么 + 能用什么 API + 约束 │ -│ 频率:每次投递不同(任务信息变化) │ -├──────────────────────────────────────────────────────────┤ -│ L4 Bootstrap 层(结构化上下文增强) │ -│ 时机:Daemon spawn Agent 时,拼接到 L3 message 中 │ -│ 来源:BootstrapBuilder + prompt_templates + 经验 + 知识 │ -│ 职责:角色模板 + 前序产出 + Guardrail + 审查协议 + 经验 │ -│ 频率:中频(按任务类型/角色动态拼装) │ -└──────────────────────────────────────────────────────────┘ +L0 铁律层(~500 tokens) → Hook 注入,每轮强制,不占 bootstrap +L1 角色层(~2000 tokens) → SOUL.md / IDENTITY.md(Agent Workspace 自带) +L2 引擎注入层(~1500 tokens)→ BootstrapBuilder 按 role 精确拼装 +L3 被动参考层(按需加载)→ SkillRegistry + OpenClaw Skills ``` -### 各层原则 +### 设计初衷(为什么有这四层) -| 原则 | 说明 | -|------|------| -| **不重复** | 同一信息只在一层注入,不在多层重复 | -| **职责单一** | 每层只负责自己的事,不越界 | -| **身份归 L1** | Agent 的"我是谁"由 Workspace 决定,不是 Daemon 告诉它 | -| **安全归 L2** | 铁律级约束由 Hook 保证,不依赖 Daemon prompt | -| **任务归 L3** | Daemon 只传任务信息和 API 能力,不教 Agent 怎么做 | -| **增强归 L4** | 动态上下文(经验/知识/审查协议)由 Bootstrap 拼装 | +| 层 | 解决什么问题 | 核心机制 | +|---|---|---| +| **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。 --- -## 二、L1 Workspace 层 — 现状与改造 +## 二、现状 vs 设计 Gap -### 2.1 现状 +### L0 铁律层 -**文件结构**(每个 Agent 的 workspace 目录): +| 设计 | 现状 | 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 | 无 | -| 文件 | 当前内容 | 问题 | -|------|---------|------| -| SOUL.md | 人格 + 核心信条 + 底线 | ✅ 合理,但**缺少专长声明** | -| AGENTS.md | 团队配置 + 沟通方式 + 编排纪律 | ⚠️ **缺少黑板使用教程**、内容是 v1 mozi 时代的 | -| MEMORY.md | 长期记忆 | ✅ 合理 | -| TOOLS.md | 工具配置 | ⚠️ **缺少黑板 API 参考** | -| HEARTBEAT.md | 当前工作状态 | ✅ 合理 | -| USER.md | 用户信息 | ✅ 合理 | -| IDENTITY.md | 身份元数据 | ⚠️ 空模板,未填 | +### L1 角色层 -**各 Agent 的 SOUL.md 差异**: -- 张飞:编码先锋,豪爽直率 ✅ -- 司马懿:质量总监,深沉狡诈 ✅ -- 其他 Agent:类似结构 ✅ +| 设计 | 现状 | Gap | +|------|------|-----| +| SOUL.md 人格 | ✅ 各 Agent 已有 | 缺**专长声明**段 | +| AGENTS.md 团队规则 | ⚠️ 各 Agent 有,但内容是 v1 mozi 时代的 | 需重写为 **v2 黑板协作指南** | +| TOOLS.md 工具配置 | ⚠️ 各 Agent 有 | 缺**黑板 API 参考** | +| IDENTITY.md | ⚠️ 空模板 | 可选,不阻塞 | -**关键缺失**: -1. **Agent 不知道自己的专长列表** — SOUL.md 说了"我是谁"但没说"我擅长什么" -2. **Agent 不知道怎么用黑板** — AGENTS.md 有 Mail 使用教程但没有黑板操作教程 -3. **Agent 不知道协作规则** — 怎么 @ 别人、怎么讨论、什么时候该问问题 -4. **AGENTS.md 还是 v1 编排纪律** — 写的是 mozi 的 `cli.py` 命令,不是 v2 黑板 API +### L2 引擎注入层 -### 2.2 改造方案 +| 设计 | 现状 | 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` | **关键:从未启用** | -#### SOUL.md 改造 +**一句话**: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 改造:安全红线 + 行为铁律 + Hook + +**改动量**:极小(~10 行) + +#### L0-1:合并 guardrails.yaml + +在 `config/guardrails.yaml` 中新增 `behavior_rules` 区: + +```yaml +# config/guardrails.yaml + +rules: # 安全红线(原有 6 条不变) + - id: live_trading + ... + - id: data_deletion + ... + +# 新增:行为铁律(从蒸馏经验提炼,每次 turn 强制注入) +behavior_rules: + - id: gate_flow + name: GATE 流程门控 + severity: high + frequency: 33 + trigger: "非平凡任务启动时" + rule: | + 需求不清不动手 — 列出假设让用户确认 + 根因不明不修复 — 先查清再改 + 方案未定不实现 — 先出方案等确认 + 评估过影响范围才动手 + L1 小改动(<50行,做错代价低)可跳过 + + - id: no_circle + name: 不绕圈子 + severity: high + frequency: 20 + trigger: "用户已明确方向后" + rule: | + 用户已明确方向后,不再质疑前提 + 用户给出条件假设时,按最坏情况设计 + 用户说"别绕了"= 立刻停止,直接给方案 +``` + +**代码改动**:`guardrail.py` 读取 `behavior_rules` 并拼入 Hook 注入。 + +**清理**:删除 `guardrails/` 目录(孤儿文件)。 + +#### L0-2:gate-enforcer delegation-rule 适配 #02 + +当前:`收到 moziplus 投递的编码/文档/调研等独立任务时,优先使用 subagent-delegation skill` + +改为: +``` +收到 moziplus 投递的独立任务时: +- 编码/文档/调研等重活 → sessions_spawn(subagent, cleanup:"delete") +- 只需决策或确认 → 直接做 +- 需要其他人协作 → 黑板 comment @ 对应 Agent +- 不懂 → 先在黑板提问,不要猜 +``` + +#### L0-3:L0 不会被 BootstrapBuilder 管理 + +L0 是 Hook 层,由 Gateway Plugin 管理,不占 bootstrap token 预算。这点保持不变。 + +--- + +### L1 改造:Workspace 文件重写 + +**改动量**:中等(6 个 Agent × 3 个文件,以文本编辑为主) + +#### L1-1:SOUL.md 加专长声明 + +每个 Agent 的 SOUL.md 在"我是谁"段后新增: ```markdown ## 我的专长 @@ -94,7 +194,7 @@ Agent 收到的完整上下文由四个独立层叠加而成。每层有不同 只认领和执行符合专长的任务,不适合的不要抢。 ``` -**每个 Agent 的专长声明**: +各 Agent 专长: | Agent | 擅长 | 不擅长 | |-------|------|--------| @@ -105,9 +205,11 @@ Agent 收到的完整上下文由四个独立层叠加而成。每层有不同 | simayi-challenger | 审查、质量检查、辩论 | 数据获取、部署 | | pangtong-fujunshi | 规划、协调、策略研究 | 不执行具体编码 | -#### AGENTS.md 改造 +**目的**:Agent 从 L1 知道自己擅长什么,L2 的广播认领模板不需要再注入身份。 -移除 v1 编排纪律(`cli.py`、mozi daemon 相关),替换为 **v2 黑板协作指南**: +#### L1-2:AGENTS.md 重写为 v2 黑板协作指南 + +移除 v1 编排纪律(`cli.py`、mozi daemon 相关),替换为: ```markdown ## 黑板协作(moziplus v2) @@ -119,20 +221,23 @@ Agent 收到的完整上下文由四个独立层叠加而成。每层有不同 - 读活跃任务: 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", "content_type": "code", ...} +- 写产出: 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 中提到 @zhangfei-dev 会自动通知对方 +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 @@ -142,9 +247,7 @@ pending → claimed → working → review → done - 调研分析 → 先出方案等确认 ``` -#### TOOLS.md 改造 - -新增黑板 API 速查段: +#### L1-3:TOOLS.md 加黑板 API 速查 ```markdown ## 黑板 API(moziplus v2) @@ -154,479 +257,465 @@ pending → claimed → working → review → done - 项目 ID: 通过任务消息中的 project_id 获取 ``` -### 2.3 文件变更清单 - -| Agent | SOUL.md | AGENTS.md | TOOLS.md | -|-------|---------|-----------|----------| -| zhangfei-dev | +专长段 | 重写 | +黑板API | -| guanyu-dev | +专长段 | 重写 | +黑板API | -| zhaoyun-data | +专长段 | 重写 | +黑板API | -| jiangwei-infra | +专长段 | 重写(已有定制版) | +黑板API | -| simayi-challenger | +专长段 | 重写 | +黑板API | -| pangtong-fujunshi | +专长段 | 重写 | +黑板API | - --- -## 三、L2 Hook 层 — 现状与改造 +### L2 改造:BootstrapBuilder 启用 + 角色模板 + Prompt 进化 -### 3.1 现状 +**改动量**:核心改造,代码 ~150 行 + 5 个模板文件 -**gate-enforcer plugin**(`~/.openclaw/node_modules/gate-enforcer/index.js`) +这是最大也最关键的一层改造。分三个阶段: -两个 hook: +#### Phase 1:启用 BootstrapBuilder -| Hook | 注入内容 | 注入方式 | 问题 | -|------|---------|---------|------| -| `before_prompt_build` | `` + `` | prependContext | ✅ 合理 | -| `before_tool_call` | ``(GATE 未通过时) | prependContext | ✅ 合理 | - -**GATE_RULES 内容**: -``` -GATE 门控铁律(L2/L3 非平凡任务必遵守): -1. 需求不清不动手 -2. 根因不明不修复 -3. 方案未定不实现 -4. 评估过影响范围才动手 -5. 涉及代码改动或调研分析的非平凡任务,使用 plan-act-verify skill -L1 小改动可跳过。 -``` - -**DELEGATION_RULE 内容**: -``` -收到 moziplus 投递的编码/文档/调研等独立任务时,优先使用 subagent-delegation skill -``` - -### 3.2 改造方案 - -L2 层是铁律级约束,改造极小——**只调内容,不改机制**。 - -#### 改造 1:GATE_RULES 保持不变 - -GATE 五条铁律经过实践验证,不需要改。 - -#### 改造 2:DELEGATION_RULE 适配 Main Session - -当前写的是"使用 subagent-delegation skill",但 #02 改造后 Agent 已在 main session, delegation 逻辑应该更智能: - -``` - -收到 moziplus 投递的独立任务时: -- 如果是编码/文档/调研等重活 → sessions_spawn(subagent, cleanup:"delete") -- 如果只需决策或确认 → 直接做 -- 如果需要其他人协作 → 黑板 comment @ 对应 Agent -- 如果不懂 → 先在黑板提问,不要猜 - -``` - -#### 改造 3:注入方式保持不变 - -`prependContext` 注入到 user message 前,这个机制没问题。不改。 - -### 3.3 改动量 - -- gate-enforcer `index.js`:修改 DELEGATION_RULE 内容(~5 行) -- 不改 hook 机制、不改注入方式 - ---- - -## 四、L3 Daemon 投递层 — 现状与改造 - -### 4.1 现状 - -**6 种 prompt 模板**,分散在 3 个文件中: - -| 模板 | 文件 | 行为 | 问题 | -|------|------|------|------| -| SPAWN_PROMPT_TEMPLATE | spawner.py | 固定4步骤 + curl 指令 | ❌ 太死板,重复注入身份 | -| CLAIM_PROMPT | ticker.py `_build_claim_prompt` | 身份注入 + 任务列表 + 步骤 | ❌ 身份不应由 Daemon 注入 | -| MENTION_PROMPT | ticker.py `_build_mention_prompt` | 身份注入 + @信息 + 步骤 | ❌ 身份不应由 Daemon 注入 | -| REVIEW_PROMPT | ticker.py `_build_review_prompt` | 三问框架 + 状态汇总 | ⚠️ 只给庞统,缺司马懿版 | -| DELEGATE_PROMPT | dispatcher.py | 团队列表让庞统选 | ✅ 合理,小改 | -| MAIL_RETRY_PROMPT | spawner.py | 续杯提醒 | ✅ 合理 | - -**核心问题**: - -1. **身份重复注入** — L1 Workspace 已有 SOUL.md(我是谁),L3 又在 prompt 里写"你是 zhangfei-dev,专长: 编码" -2. **固定步骤指令** — 手把手教 curl,不信任 Agent 自主能力 -3. **Review 不区分角色** — 庞统(进度review)和司马懿(质量review)用同一套逻辑 -4. **缺少"引导提问"** — Agent 不知道可以问问题、可以讨论 - -### 4.2 改造方案 - -#### 原则:L3 只传任务信息,不传身份 - -身份("你是谁、你擅长什么")由 L1 Workspace 负责。L3 只负责: -- 这次的任务是什么 -- 你能用什么 API -- 硬性约束(红线、产出要求) - -#### 改造 1:统一 prompt 结构(三段式) - -所有 L3 模板统一为: - -``` -┌──────────────────────┐ -│ 任务段(变化) │ 具体任务信息 + 上下文 -├──────────────────────┤ -│ 能力段(半固定) │ API 端点列表 + 操作指引 -├──────────────────────┤ -│ 约束段(固定) │ 产出要求 + 红线 + 协作引导 -└──────────────────────┘ -``` - -**身份段删除**(已由 L1 负责)。 - -#### 改造 2:各模板重写 - -**A. Task 执行模板**(替代 SPAWN_PROMPT_TEMPLATE) - -```markdown -## 任务 -{title} -{description} - -项目: {project_id} | ID: {task_id} -类型: {task_type} | 优先级: {priority} -验收标准: {must_haves} - -{retry_context} - -## 操作 -- 读任务详情(含依赖、讨论、产出): GET {api_base}/projects/{project_id}/tasks/{task_id}?expand=all -- 写产出: POST {api_base}/projects/{project_id}/tasks/{task_id}/outputs -- 写评论/提问/讨论: POST {api_base}/projects/{project_id}/tasks/{task_id}/comments -- 更新状态: POST {api_base}/projects/{project_id}/tasks/{task_id}/status -- 创建子任务: POST {api_base}/projects/{project_id}/tasks - -## 约束 -- 完成后必须写产出物并标 review -- 失败了标 failed 并写明原因 -- 不懂就问(黑板 comment 提问) -- 需要其他人协作时 @ 对应 Agent -- 禁止使用 sessions_send(用 Mail API 或黑板 comment) -``` - -**B. 广播认领模板**(替代 _build_claim_prompt) - -```markdown -## 待认领任务 -{task_list} - -## 操作 -- 读任务详情: GET {api_base}/projects/{project_id}/tasks?status=pending -- 认领: POST {api_base}/projects/{project_id}/tasks/{{TASK_ID}}/claim - body: {"agent": "{agent_id}"} -- 认领后标 working: POST .../tasks/{{TASK_ID}}/status - body: {"status": "working", "agent": "{agent_id}"} -- 没有适合你的任务则 NO_REPLY - -## 约束 -- 只认领符合你专长的任务(参考你的 SOUL.md) -- 一个 tick 只认领一个 -- 不确定时不要认领 -``` - -**C. @mention 模板**(替代 _build_mention_prompt) - -```markdown -你在黑板上被 @ 了。 - -## 相关讨论 -{mentions_text} - -## 任务上下文 -- 项目: {project_id} | 任务: {task.title} -- 描述: {task.description} - -## 操作 -- 读完整上下文: GET {api_base}/projects/{project_id}/tasks/{task.id}?expand=all -- 回应: POST {api_base}/projects/{project_id}/tasks/{task.id}/comments -- 如果讨论收敛到可执行任务,创建 sub task - -## 约束 -- 只回应与你专长相关的内容 -- 不懂就问 -``` - -**D. Review 模板 — 分两个** - -**庞统 Review**(进度 review,多轮迭代): - -```markdown -## 庞统 Review(第 {round_num} 轮) - -### Goal -{goal} - -### 验收标准 -{must_haves} - -### 本轮 Sub Task 状态 -- 完成: {done} | 失败: {failed} | 取消: {cancelled} | 总计: {total} - -### 成果物 -{outputs} - -### 黑板讨论 -{comments} - -### 三问 -1. Goal 还清晰吗? -2. 成果物覆盖 goal 了吗? -3. 下一轮需要做什么? - -### 操作 -- 创建新一轮 sub tasks / 标 GOAL_ACHIEVED / 调整方向 -- Round 上限: {MAX_ROUNDS}(当前第 {round_num} 轮) -``` - -**司马懿 Review**(质量 review,单任务审查): - -```markdown -## 司马懿 Review - -### 任务 -{title}: {description} - -### 产出物 -{outputs} - -### 审查要点 -1. 代码质量:命名、结构、可维护性 -2. 正确性:逻辑、边界、异常处理 -3. 安全性:是否有注入、越权等风险 -4. 符合验收标准 - -### 操作 -- 写审查意见: POST {api_base}/projects/{pid}/tasks/{tid}/comments - body: {"author": "simayi-challenger", "body": "...", "comment_type": "review"} -- 写审查结论: POST {api_base}/projects/{pid}/tasks/{tid}/reviews - body: {"reviewer": "simayi-challenger", "verdict": "approved/rejected/needs_revision", "notes": "..."} - -### 约束 -- 审查意见必须具体到行号和修改方向,不做模糊评价 -- rejected 时必须给出改进建议 -- 涉及风控/实盘相关,额外关注安全性 -``` - -**E. Delegate 模板**(保留,小改) - -庞统专用的任务委派模板,保留不变。 - -**F. 续杯模板**(保留) - -已有 MAIL_RETRY_PROMPT,保持不变。 - -#### 改造 3:ticker 触发司马懿 Review - -当前 ticker 的 `_check_round_complete` 只 spawn 庞统 review。改造后: - -``` -_check_round_complete(): - for parent in done_parents: - → spawn 庞统 review(多轮迭代判断) - -_check_single_task_review(): - for task in review_status_tasks: - if task.risk_level == "high": - → spawn 司马懿 review(对抗辩论) - else: - → spawn 司马懿 review(标准审查) -``` - -### 4.3 文件变更清单 - -| 文件 | 改动 | 行数 | -|------|------|------| -| spawner.py | 重写 SPAWN_PROMPT_TEMPLATE,去掉身份段 | ~30 行 | -| ticker.py | 重写 _build_claim_prompt、_build_mention_prompt、_build_review_prompt;新增 _build_simayi_review_prompt、_check_single_task_review | ~80 行 | -| dispatcher.py | _build_delegate_prompt 小改 | ~5 行 | - ---- - -## 五、L4 Bootstrap 层 — 现状与改造 - -### 5.1 现状 - -**BootstrapBuilder**(`src/daemon/bootstrap.py`,~216 行) - -| 组件 | 设计 | 实现 | 实际使用 | -|------|------|------|---------| -| L2a 角色模板 | `_load_template(role.md)` | ✅ 代码存在 | ❌ `prompt_templates/` 目录不存在,返回 None | -| L2b 项目背景 | `_format_project_context()` | ✅ 代码存在 | ❌ 从未被调用 | -| L2c 任务上下文 | `_format_task_context()` | ✅ 代码存在 | ❌ 从未被调用 | -| L2d 前序产出 | `_format_depends_on()` | ✅ 代码存在 | ❌ 从未被调用 | -| L2e Guardrail | 传入 guardrail_rules | ✅ 代码存在 | ❌ 从未被调用 | -| L2f 审查协议 | 传入 review_protocols | ✅ 代码存在 | ❌ `review_protocols/` 不存在 | -| L2g 经验注入 | `_format_experiences()` | ✅ 代码存在 | ❌ 从未被调用 | -| L3 Skill 描述 | `_format_skills()` | ✅ 代码存在 | ❌ 从未被调用 | - -**关键事实**:BootstrapBuilder 从未被实例化。`main.py` 中 Spawner 初始化时 `bootstrap_builder=None`,所以所有 L4 功能完全未启用。 - -Spawner 的 `build_message()` 方法中: -```python -if self.bootstrap_builder and task is not None: - # 走 BootstrapBuilder 路径 - ... -else: - # fallback 到 L3 的硬编码模板 -``` -**永远走 else 分支**。 - -### 5.2 改造方案 - -#### Phase 1:最小可用 — 接入 BootstrapBuilder - -不建 `prompt_templates/` 目录(模板量小,先在代码中管理),只做: - -1. **main.py 中实例化 BootstrapBuilder** 并传给 Spawner -2. **Spawner 的 build_message() 走 BootstrapBuilder 路径** -3. BootstrapBuilder 拼装内容与 L3 新模板对齐 +**改动文件**:`src/main.py`(~5 行) ```python -# main.py 改造 from src.daemon.bootstrap import BootstrapBuilder bootstrap = BootstrapBuilder( - template_dir=None, # Phase 1 不用文件模板 + template_dir=Path("prompt_templates"), # Phase 1 先用文件模板 max_tokens=4096, ) spawner = AgentSpawner( ..., - bootstrap_builder=bootstrap, + bootstrap_builder=bootstrap, # 之前是 None ) ``` -#### Phase 2:接入动态数据源 +**改动文件**:`src/daemon/spawner.py`(~20 行) -BootstrapBuilder 的 `build_for_task()` 增强数据获取: +`build_message()` 方法中,当 `self.bootstrap_builder` 存在时走 BootstrapBuilder 路径: -| 数据 | 来源 | 注入条件 | -|------|------|---------| -| 任务上下文 | 黑板 DB (tasks 表) | 始终 | -| 前序产出 | 黑板 DB (outputs 表,查 depends_on) | 有依赖时 | -| Guardrail 规则 | GuardrailEngine | executor 角色 | -| 审查协议 | review_protocols/ 目录 | executor+reviewer 角色 | -| 经验 | experiences 表 | 有相关经验时 | -| Skill 描述 | SkillRegistry | 按需 | - -#### Phase 3:prompt_templates 目录 - -当模板内容稳定后,从代码中提取到文件: -- `prompt_templates/executor.md` — 执行者角色模板 -- `prompt_templates/reviewer_simayi.md` — 司马懿审查模板 -- `prompt_templates/reviewer_pangtong.md` — 庞统进度模板 -- `prompt_templates/planner.md` — 规划者模板 - -### 5.3 与 L3 的关系 - -L4 的产出**拼接在 L3 消息的尾部**。具体来说: - -``` -openclaw agent --message "{L3_template}\n\n---\n\n{L4_bootstrap}" +```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) ``` -L3 提供任务段 + 操作段 + 约束段(骨架),L4 提供动态增强(前序产出、经验、Guardrail)。 +#### Phase 2:创建 5 个角色模板(L2 ①操作规范) -两者职责不重叠: -- L3 是**模板**,每次结构相同只是参数不同 -- L4 是**增强**,根据任务类型/角色/历史动态拼装 +**目录**:`prompt_templates/` -### 5.4 文件变更清单 +每个模板遵循 #03 Prompt 进化的设计——**能力 + 约束声明,不写固定步骤**。 -| 文件 | 改动 | 阶段 | -|------|------|------| -| main.py | 实例化 BootstrapBuilder 传给 Spawner | Phase 1 | -| spawner.py | build_message() 接入 BootstrapBuilder | Phase 1 | -| bootstrap.py | build_for_task() 增强数据获取 | Phase 2 | -| ticker.py | spawn 调用点传入更多上下文 | Phase 2 | -| prompt_templates/*.md | 从代码提取模板 | Phase 3 | +**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 文件) -| 信息类型 | 归属层 | 注入方式 | 变更频率 | -|---------|--------|---------|---------| -| Agent 人格/身份 | L1 | SOUL.md | 极低 | -| Agent 专长/能力 | L1 | SOUL.md 专长段 | 低 | -| 团队通讯录 | L1 | AGENTS.md | 低 | -| 黑板使用教程 | L1 | AGENTS.md | 低 | -| 黑板 API 参考 | L1 | TOOLS.md | 低 | -| 项目目录 | L1 | AGENTS.md | 中 | -| GATE 安全铁律 | L2 | gate-enforcer prependContext | 极低 | -| Delegation 策略 | L2 | gate-enforcer prependContext | 低 | -| GATE 产出物检查 | L2 | gate-enforcer before_tool_call | 低 | -| 任务信息 | L3 | Daemon prompt 模板 | 每次不同 | -| API 操作指引 | L3 | Daemon prompt 模板 | 半固定 | -| 产出约束 | L3 | Daemon prompt 模板 | 固定 | -| 前序产出摘要 | L4 | BootstrapBuilder | 每次不同 | -| Guardrail 规则 | L4 | BootstrapBuilder | 低 | -| 审查协议 | L4 | BootstrapBuilder | 低 | -| 经验注入 | L4 | BootstrapBuilder | 每次不同 | -| Skill 描述 | L4 | BootstrapBuilder | 低 | +#### 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 铁律层(~600 tokens)→ Hook 每轮强制注入 │ +│ ├── gate-enforcer: GATE 铁律 + Delegation 铁律 │ +│ ├── gate-enforcer: GATE 产出物检查(before_tool_call) │ +│ └── guardrails.yaml: 安全红线 6 条 + 行为铁律 2 条 │ +├──────────────────────────────────────────────────────────────────┤ +│ 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) │ +└──────────────────────────────────────────────────────────────────┘ +``` ### 信息去重检查 -| 信息 | L1 | L2 | L3 | L4 | 唯一归属 | +| 信息 | L0 | L1 | L2 | L3 | 唯一归属 | |------|----|----|----|----|---------| -| "你是 zhangfei-dev" | ✅ SOUL | — | — | — | L1 | -| "你的专长是编码" | ✅ SOUL | — | ~~❌ 删除~~ | — | L1 | -| GATE 五条铁律 | — | ✅ Hook | — | — | L2 | -| 任务标题/描述 | — | — | ✅ 模板 | — | L3 | -| API 端点列表 | — | — | ✅ 模板 | — | L3 | -| 前序 Agent 产出 | — | — | — | ✅ Bootstrap | L4 | -| 审查协议 | — | — | — | ✅ Bootstrap | L4 | -| 黑板使用教程 | ✅ AGENTS | — | — | — | L1 | +| 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:L1 Workspace 改造(独立,可先行) +### Step 1:L0 改造(独立,1 小时) -- 各 Agent SOUL.md 加专长段 -- 各 Agent AGENTS.md 重写(v1 编排纪律 → v2 黑板协作指南) -- 各 Agent TOOLS.md 加黑板 API 段 -- **验证**:直接在 Control UI 对话中测试 Agent 是否知道自己的专长和黑板用法 +1. 合并 guardrails.yaml(新增 behavior_rules) +2. 更新 gate-enforcer delegation-rule +3. 清理 guardrails/ 孤儿文件 +4. **验证**:`openclaw plugins doctor` + session 检查 Hook 注入 -### Step 2:L2 Hook 微调(独立,可先行) +### Step 2:L1 改造(独立,2 小时) -- gate-enforcer DELEGATION_RULE 内容更新 -- **验证**:`plugins doctor` + session 文件检查 +1. 6 个 Agent SOUL.md 加专长段 +2. 6 个 Agent AGENTS.md 重写(v1 → v2 黑板协作指南) +3. 6 个 Agent TOOLS.md 加黑板 API +4. **验证**:在 Control UI 对话中测试 Agent 是否知道专长和黑板用法 -### Step 3:L3 Prompt 模板重写(依赖 Step 1) +### Step 3:L2 Phase 1 — 启用 BootstrapBuilder(依赖 Step 1-2,半天) -- 去掉所有模板中的身份注入 -- 重写 6 个模板 -- 新增司马懿 Review 模板 + 触发逻辑 -- **验证**:E2E 单任务测试 +1. main.py 实例化 BootstrapBuilder +2. spawner build_message() 走 BootstrapBuilder 路径 +3. 创建 5 个角色模板文件 +4. **验证**:单任务 spawn,检查注入内容 -### Step 4:L4 BootstrapBuilder 接入(依赖 Step 3) +### Step 4:L2 Phase 2 — Prompt 模板重写(依赖 Step 3,1 天) -- main.py 实例化 BootstrapBuilder -- spawner build_message() 走 BootstrapBuilder 路径 -- **验证**:E2E 全流程测试 +1. 重写 Daemon 6 个 prompt 模板为 BootstrapBuilder 路径 +2. 去掉身份注入(L1 已负责) +3. 去掉固定步骤,改为能力+约束声明 +4. 新增司马懿 review 模板 + ticker 触发逻辑 +5. **验证**:E2E 单任务测试 -### Step 5:E2E 验证 +### Step 5:L2 Phase 3 — experiences 表 + L3 改造(依赖 Step 4,1 天) -- E1 广播认领(Agent 凭 SOUL.md 专长自主判断) -- E2 任务执行(无固定步骤,Agent 自主决策) -- E3 多轮迭代(庞统 Review 三问框架) -- E4 @mention 协作(黑板讨论) -- E5 mention 重试 -- E6 质量审查(司马懿 Review) -- 新 E7:Agent 主动提问(黑板 comment 提问) +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) | --- -## 八、风险 +## 六、风险 | 风险 | 概率 | 缓解 | |------|------|------| -| Agent 看不到 L1 专长段,不按专长认领 | 中 | L3 claim 模板保留"只认领符合专长"约束作为双保险 | -| L4 BootstrapBuilder 拼装内容过长 | 低 | max_tokens=4096 限制 + 自动截断 | -| 去掉固定步骤后 Agent 不知道怎么操作 | 中 | L1 AGENTS.md 有黑板教程 + L3 有 API 列表 | -| 司马懿 Review 触发时机不对 | 中 | 先接 basic flow,观察后调整 | +| 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 发现机制 |