639 lines
27 KiB
Markdown
639 lines
27 KiB
Markdown
# 课题4 设计方案:智能拆解机制 + Skill 体系工程落地
|
||
|
||
**作者**: 庞统士元
|
||
**日期**: 2026-05-15
|
||
**状态**: 方案待确认
|
||
**前置**: 课题1/2/3 已结题
|
||
**调研报告**: `docs/research/v2.6-research-04-decomposition-skills.md`
|
||
|
||
---
|
||
|
||
## Part A:智能拆解机制
|
||
|
||
### 1. 设计目标
|
||
|
||
v1.0 的拆解是"关键词匹配 → 固定 DAG 模板",问题是:
|
||
- 模板太死板(5个固定DAG),无法根据需求动态调整
|
||
- 关键词匹配粗糙,复杂需求容易匹配错模板
|
||
- 庞统拆解时靠 LLM 理解,没有结构化引导
|
||
|
||
课题4要解决:**庞统收到用户需求后,如何把它变成黑板上的任务(含依赖关系、角色分配、风险等级)。**
|
||
|
||
### 2. 和课题1/2/3的关系
|
||
|
||
课题1-3 已经定义了"任务在黑板上长什么样"(tasks 表 schema、状态机、reviews 表、Guardrail 配置)。课题4定义的是"任务怎么被创建出来"。
|
||
|
||
```
|
||
课题4(创建) → 课题2(触发执行) → 课题3(审查) → 课题1(失败处理)
|
||
```
|
||
|
||
### 3. 设计决策
|
||
|
||
#### D4-1:模板组件库替代固定 DAG
|
||
|
||
> **参考实践**:
|
||
> - **MetaGPT**:SOP 自动链 + `_watch` 声明式订阅,不是固定 DAG
|
||
> - **get-shit-done**:discuss→plan→execute→verify→ship 五阶段,但每阶段内部灵活
|
||
> - **open-multi-agent**:Goal → DAG 自动分解,按 complexity 决定粒度
|
||
> - **v1.0**:5 个固定模板(full_role_development / circular_review_test / multi_stage_review / data_acquisition / multi_edge_discussion)
|
||
|
||
**方案**:不是 5 个完整 DAG,而是**模板组件库(Phase Components)**。庞统按需组合。
|
||
|
||
```yaml
|
||
# template_components.yaml
|
||
components:
|
||
research:
|
||
trigger: "需要调研/分析"
|
||
mandatory: false
|
||
steps:
|
||
- id: lit_search
|
||
name: "资料调研"
|
||
agent: zhaoyun-data
|
||
output: "research_report.md"
|
||
- id: analysis
|
||
name: "分析总结"
|
||
agent: pangtong-fujunshi
|
||
output: "analysis.md"
|
||
|
||
design:
|
||
trigger: "需要架构/设计"
|
||
mandatory: false
|
||
steps:
|
||
- id: arch_design
|
||
name: "架构设计"
|
||
agent: pangtong-fujunshi
|
||
output: "design.md"
|
||
- id: design_review
|
||
name: "设计评审"
|
||
agent: simayi-challenger
|
||
review_type: plan_review
|
||
|
||
coding:
|
||
trigger: "需要编码/实现"
|
||
mandatory: false
|
||
steps:
|
||
- id: implement
|
||
name: "编码实现"
|
||
agent: zhangfei-dev
|
||
output: "code/"
|
||
- id: code_review
|
||
name: "代码评审"
|
||
agent: simayi-challenger
|
||
review_type: output_review
|
||
|
||
data:
|
||
trigger: "需要数据获取/处理"
|
||
mandatory: false
|
||
steps:
|
||
- id: data_acquire
|
||
name: "数据获取"
|
||
agent: zhaoyun-data
|
||
output: "data/"
|
||
- id: data_validate
|
||
name: "数据验证"
|
||
agent: zhaoyun-data
|
||
|
||
deploy:
|
||
trigger: "需要部署"
|
||
mandatory: false
|
||
steps:
|
||
- id: deploy
|
||
name: "部署"
|
||
agent: jiangwei-infra
|
||
output: "deploy_log.md"
|
||
- id: deploy_verify
|
||
name: "部署验证"
|
||
agent: jiangwei-infra
|
||
|
||
risk_control:
|
||
trigger: "涉及实盘/资金/策略"
|
||
mandatory: true # 触发条件满足时强制包含
|
||
steps:
|
||
- id: risk_check
|
||
name: "风控检查"
|
||
agent: guanyu-dev
|
||
|
||
review:
|
||
trigger: "always"
|
||
mandatory: true # 铁律 IR-1
|
||
steps:
|
||
- id: final_review
|
||
name: "最终审查"
|
||
agent: simayi-challenger
|
||
review_type: final_review
|
||
|
||
custom:
|
||
trigger: "none" # 不自动触发,庞统主动选择
|
||
description: "庞统自由定义的 phase,结构与标准组件相同"
|
||
steps: [] # 空的,庞统运行时填充
|
||
```
|
||
|
||
**custom 组件接口**:与标准组件同 schema(steps 列表,每个 step 有 id/name/agent/output/review_type)。Plan Checker 对 custom 组件的验证和标准组件相同——检查覆盖性、依赖性、粒度、铁律。唯一区别是 custom 不从库中引用,而是庞统在 Step 2 中自由定义。
|
||
```
|
||
|
||
**庞统的拆解流程**:
|
||
|
||
```
|
||
Step 1:需求结构化
|
||
- 分析用户输入,提取需求列表
|
||
- 每个需求标注类型(数据/编码/分析/部署/风控)
|
||
- 评估复杂度(简单/中等/复杂)
|
||
- 隐含需求挖掘(如用户说"回测"→ 隐含需要数据获取)
|
||
- 产出:structured_requirements → 写入黑板 decisions 表
|
||
|
||
Step 2:组件选择 + 组合
|
||
- 根据需求类型,从组件库选择需要的 phases
|
||
- 检查 mandatory 组件是否被遗漏
|
||
- 组合 phases,排列依赖关系
|
||
- AI 增强:增删调整(如"这次数据已有,跳过 data_acquire")
|
||
- 产出:draft_plan → 写入黑板 decisions 表
|
||
|
||
Step 3:Plan Checker 验证
|
||
- 独立验证(不是庞统自己验证自己)
|
||
- 检查项:
|
||
- 覆盖性:每个需求是否被至少一个 step 覆盖
|
||
- 依赖性:step 依赖是否合理(无环、无遗漏前置)
|
||
- 粒度性:step 是否过大/过小
|
||
- 铁律:IR-1(每任务至少2 Agent)是否满足
|
||
- 风险:risk_level 是否合理,高风险任务是否有对抗审查
|
||
- 不通过 → 回 Step 2 调整(最多 2 轮)
|
||
- 2 轮不通过 → 庞统带着 Plan Checker issues 创建任务,标注 risk_level=high,由审查者在 plan_review 阶段进一步验证。不升级用户(庞统能处理)
|
||
- 通过 → 进入 Step 4
|
||
|
||
Step 4:任务创建
|
||
- 将 plan 转为黑板 tasks
|
||
- 每个 step → 一个 task(含 truths / artifacts / constraints / risk_level / assigned_to)
|
||
- 依赖关系 → tasks 的 depends_on 字段
|
||
- 庞统在黑板上写 scope_declaration
|
||
- 产出:tasks 写入黑板 → Daemon 检测 → 开始执行
|
||
```
|
||
|
||
#### D4-2:需求结构化的输出格式
|
||
|
||
庞统分析用户需求后,输出结构化需求到黑板:
|
||
|
||
```json
|
||
{
|
||
"original_input": "实现一个双均线策略的回测",
|
||
"requirements": [
|
||
{
|
||
"id": "req-001",
|
||
"description": "获取标的分钟线数据",
|
||
"type": "data",
|
||
"acceptance_criteria": "数据文件存在于 NAS 指定路径",
|
||
"complexity": "simple",
|
||
"implicit": true
|
||
},
|
||
{
|
||
"id": "req-002",
|
||
"description": "编写双均线策略逻辑",
|
||
"type": "coding",
|
||
"acceptance_criteria": "策略代码通过单元测试",
|
||
"complexity": "medium",
|
||
"implicit": false
|
||
},
|
||
{
|
||
"id": "req-003",
|
||
"description": "回测并生成报告",
|
||
"type": "analysis",
|
||
"acceptance_criteria": "回测报告包含收益曲线和关键指标",
|
||
"complexity": "medium",
|
||
"implicit": false
|
||
}
|
||
],
|
||
"inferred_components": ["data", "coding", "analysis"],
|
||
"risk_level": "standard",
|
||
"estimated_tasks": 3
|
||
}
|
||
```
|
||
|
||
#### D4-3:Plan Checker 独立验证
|
||
|
||
> **参考实践**:
|
||
> - **superpowers**:plan-document-reviewer subagent 独立验证方案
|
||
> - **oh-my-claudecode Critic**:预判→验证→自审五阶段
|
||
> - **get-shit-done**:Scope Reduction Detection(完成后反向检查覆盖)
|
||
|
||
Plan Checker 是一个 Subagent(不需要 Agent 身份),Daemon spawn 后执行:
|
||
|
||
```yaml
|
||
# review_protocols/plan_check.yaml
|
||
name: plan_check
|
||
description: "验证庞统的拆解方案是否合理"
|
||
|
||
dimensions:
|
||
- id: coverage
|
||
description: "每个需求是否被至少一个 task 覆盖"
|
||
weight: critical
|
||
method: "需求 ID → task ID 映射矩阵,检查是否有遗漏"
|
||
|
||
- id: dependency
|
||
description: "依赖是否合理"
|
||
weight: critical
|
||
method: "拓扑排序检查无环,前置是否完整"
|
||
|
||
- id: granularity
|
||
description: "粒度是否合适"
|
||
weight: major
|
||
method: "检查每个 task 的 truths 是否是一个 Agent 一次 spawn 能完成的"
|
||
|
||
- id: iron_rules
|
||
description: "铁律是否满足"
|
||
weight: critical
|
||
method: "IR-1: 至少 2 Agent 参与;IR-2: 每个 task 有 truths"
|
||
|
||
- id: risk_alignment
|
||
description: "风险等级是否合理"
|
||
weight: major
|
||
method: "涉及资金/部署 → high;纯分析 → research"
|
||
|
||
output_schema: "schemas/plan-check-output.schema.json"
|
||
verdict_options: ["approved", "needs_revision"]
|
||
```
|
||
|
||
#### D4-4:复杂度驱动的粒度控制
|
||
|
||
> **参考实践**:
|
||
> - **open-multi-agent**:按 complexity 决定是否拆分子任务
|
||
> - **wanman**:Token 预算控制执行深度
|
||
|
||
| 复杂度 | 判断标准 | 拆解策略 | truths 定义 |
|
||
|--------|---------|---------|------------|
|
||
| **simple** | 单一文件、单一操作、< 50 行 | 1 个 task | 1-2 条 truths |
|
||
| **medium** | 多文件、有依赖、需要验证 | 1-3 个 task + 依赖 | 每个 2-3 条 truths |
|
||
| **complex** | 跨模块、多角色、需要调研 | 多 phase 组件组合 | 每个 3-5 条 truths |
|
||
|
||
**粒度自检规则**(庞统的 Skill 中定义):
|
||
- 一个 task 的 truths > 5 条 → 拆分
|
||
- 一个 task 需要跨 3+ 角色 → 拆分
|
||
- 一个 task 预计 > 30 分钟 → 拆分
|
||
|
||
#### D4-5:用户确认点
|
||
|
||
> **参考实践**:
|
||
> - **get-shit-done**:discuss phase 是必须的用户确认步骤
|
||
> - **v2.0 PRD**:Phase 1 需求探索(苏格拉底对话)
|
||
|
||
不是每步都问用户,但在关键节点确认:
|
||
|
||
| 检查点 | 触发条件 | 用户看到什么 |
|
||
|--------|---------|------------|
|
||
| 需求确认 | Step 1 完成后 | 结构化需求列表 + 隐含需求 |
|
||
| 方案确认 | Step 2 完成后(complex 任务) | 任务列表 + 依赖关系 + 预估时间 |
|
||
|
||
simple 任务跳过方案确认,直接创建。complex 任务必须确认。
|
||
|
||
**用户干预三种模式**(来源:2026 human-in-the-loop 综述 + OpenAI Agents SDK):
|
||
|
||
| 模式 | 机制 | 适用 |
|
||
|------|------|------|
|
||
| 审批式 | Agent 暂停等用户确认 | high 任务方案确认、部署前 |
|
||
| 通知式 | 推送消息,用户可回复可不回复 | standard 任务产出审查后 |
|
||
| 中断式 | Agent 主动问用户 | 歧义需求、争议仲裁 |
|
||
|
||
**当前落地**:通过庞统 session(webchat/Signal)。**未来**:dashboard Checkpoint 面板。
|
||
|
||
**干预点由 risk_level 动态决定**:low→无干预、standard→通知式、high→审批式、用户随时可中断。
|
||
|
||
---
|
||
|
||
|
||
## Part B:Skill 体系工程落地
|
||
|
||
### 4. 设计目标
|
||
|
||
三个课题产出了大量"Agent 需要知道怎么做"的内容(28 项 Skill TODO),需要一个系统的 Skill 体系来承载。
|
||
|
||
### 5. 核心洞察:被动触发不可靠
|
||
|
||
> **问题**:我们写了好多个 Skill,但除了用户明文指定"用 PAV""用 delegation",几乎没见哪个 Skill 被主动触发过。
|
||
>
|
||
> **根因**:Agent 不知道自己不知道什么。OpenClaw 的 Skill 列表注入 system prompt 后,Agent 需要自己判断需要哪个——但 Agent 根本不知道"我应该先读一个 Skill 来学怎么做"。
|
||
>
|
||
> **优秀实践验证**:superpowers / GSD / open-multi-agent 没有一个是靠被动 Skill 触发的——全部是编排器构造好 prompt 直接注入。
|
||
|
||
**结论**:moziplus 的关键操作规范不走被动 Skill 发现,走引擎注入。
|
||
|
||
### 5.1 铁律定义(L0 内容)
|
||
|
||
铁律是**所有 Agent 共享的**强制规则,不可定制。角色追加的规则放在 L1(SOUL.md)。
|
||
|
||
| 编号 | 铁律 | 来源 |
|
||
|------|------|------|
|
||
| IR-1 | 每个任务至少 2 个 Agent 参与(做 + 挑战) | v1.0 PRD |
|
||
| IR-2 | 每个 task 必须有 truths(可观测行为标准) | 课题1 must_haves |
|
||
| IR-3 | 结论必须有证据(file:line 或具体引用) | oh-my-claudecode Critic |
|
||
| IR-4 | 语义含糊先确认,不擅自执行 | SOUL.md 底线 |
|
||
| IR-5 | 改代码先改文档(需求→设计→测试→部署) | v1.0 实践 |
|
||
|
||
**Token 估算**:5 条铁律,每条 ~30 token(编号+一句话),总计 ~150 token + XML 包装 ~50 token = **~200 token**。加上角色追加(L1 SOUL.md 已计入),L0 预算 ~200-300 token,远低于 ~500 上限。
|
||
|
||
### 6. 设计决策
|
||
|
||
#### D4-6:四层上下文架构
|
||
|
||
> **参考实践**:
|
||
> - **superpowers**:每个 subagent 有独立 prompt 模板(implementer-prompt.md / spec-reviewer-prompt.md),模板里写死操作步骤
|
||
> - **open-multi-agent**:`buildTaskPrompt()` 拼 task title + description + 依赖产出 + messages
|
||
> - **GSD**:每个 executor 拿到 PLAN.md + PROJECT.md + STATE.md + CONTEXT.md,按 context window 大小自适应
|
||
> - **OpenClaw**:Hook `agent_turn_prepare` 可注入 prependContext/appendContext
|
||
|
||
共同模式:**操作规范(模板)+ 项目背景(固定)+ 任务上下文(动态)**,编排器拼装,不靠 Agent 自己找。
|
||
|
||
```
|
||
┌─────────────────────────────────────────────────────────────┐
|
||
│ Layer 0: 铁律(Iron Rules) │
|
||
│ 机制: OpenClaw Hook agent_turn_prepare │
|
||
│ 保证: 每轮强制注入 | Token: ~500 │
|
||
│ 内容: IR-1~IR-5(每个 Agent 可定制) │
|
||
├─────────────────────────────────────────────────────────────┤
|
||
│ Layer 1: 角色(Agent Identity) │
|
||
│ 机制: SOUL.md + IDENTITY.md + AGENTS.md │
|
||
│ 保证: 每轮强制 | Token: ~2000 │
|
||
│ 内容: 角色定义 + 行为准则 + 记忆 │
|
||
│ 变化频率: 极少(换平台不变) │
|
||
├─────────────────────────────────────────────────────────────┤
|
||
│ Layer 2: 操作规范 + 任务上下文(引擎注入) │
|
||
│ 机制: Daemon spawn 时拼装 bootstrap 消息 │
|
||
│ 保证: 每次 spawn 强制注入 | Token: ~1000-2000 │
|
||
│ 三段式: │
|
||
│ ① 角色操作规范模板(executor.md / reviewer.md / planner.md)│
|
||
│ → 固定部分,写死关键操作步骤(scope/output/handoff等) │
|
||
│ → 变化频率: 很少(moziplus 平台变了才改) │
|
||
│ ② 项目背景(项目路径/框架/NAS/回测服务) │
|
||
│ → 半固定部分,按项目配置 │
|
||
│ ③ 任务上下文(truths/artifacts/constraints + depends_on产出)│
|
||
│ → 动态部分,每次 spawn 不同 │
|
||
├─────────────────────────────────────────────────────────────┤
|
||
│ Layer 3: 参考信息(OpenClaw Skill 被动发现) │
|
||
│ 机制: OpenClaw Skill 列表注入 system prompt │
|
||
│ 保证: ❌ 不保证触发(锦上添花) │
|
||
│ 内容: 具体操作方法(回测流程/数据获取/部署步骤等) │
|
||
│ 优化: description 中加触发场景+示例对话+触发词(见D4-8) │
|
||
└─────────────────────────────────────────────────────────────┘
|
||
```
|
||
|
||
**张飞编码时靠什么**:
|
||
- L0+L1:身份和纪律(每轮都有)
|
||
- L2 ① executor.md:"读黑板→写scope→执行→写output→写Handoff"(引擎注入,不会忘)
|
||
- L2 ③ 任务上下文:"这次要做什么、truths 是什么、前序产出是什么"(引擎注入)
|
||
- L3 quant-backtest Skill:具体回测代码怎么写(自己判断要不要读)
|
||
|
||
#### D4-7:L2 引擎注入的拼装原则
|
||
|
||
> **参考实践**:
|
||
> - **superpowers**:implementer/spec-reviewer/code-quality-reviewer 三个独立 prompt 模板,只包含该角色需要的信息
|
||
> - **open-multi-agent**:`buildTaskPrompt()` 只注入依赖链上的产出(default-deny),不是全量
|
||
> - **GSD**:按 context window 大小自适应(200K 只给任务级,1M 给全量)
|
||
|
||
**原则:按角色和任务阶段精确注入,不统一拼装,不多不少。**
|
||
|
||
| Agent 角色 | 注入内容 | 不注入 |
|
||
|-----------|---------|--------|
|
||
| **执行者** | executor.md + Guardrail 配置 + 任务上下文 | Review Protocol |
|
||
| **审查者** | reviewer.md + Review Protocol + required_reading | Guardrail 配置 |
|
||
| **庞统(规划)** | planner.md + template_components + Plan Checker | Review Protocol |
|
||
| **庞统(裁决)** | adjudicator.md + 正方 comment + 反方 comment | Guardrail 配置 |
|
||
| **反驳者** | rebuttal.md + 审查者 review + ACCEPT/REJECT 指令 | Review Protocol |
|
||
| **Plan Checker** | plan_checker.md + 需求列表 + 拆解方案 | 全部角色模板 |
|
||
|
||
**拼装逻辑**(Daemon 代码):
|
||
```python
|
||
def build_bootstrap(agent_id, role, task):
|
||
parts = []
|
||
|
||
# ① 角色操作规范模板
|
||
template = load_template(f"prompt_templates/{role}.md")
|
||
parts.append(template)
|
||
|
||
# ② 项目背景(半固定)
|
||
parts.append(format_project_context(task))
|
||
|
||
# ③ 任务上下文(动态)
|
||
parts.append(format_task_context(task))
|
||
|
||
# 按角色追加(只注入该角色需要的)
|
||
if role == "executor":
|
||
parts.append(format_guardrails(task.task_type))
|
||
elif role == "reviewer":
|
||
parts.append(format_review_protocol(task.review_type))
|
||
parts.append(format_required_reading(task))
|
||
elif role == "planner":
|
||
parts.append(format_template_components())
|
||
elif role == "rebuttal":
|
||
parts.append(format_review_to_respond(task))
|
||
|
||
return "\n\n".join(parts)
|
||
```
|
||
|
||
#### D4-8:L3 Skill 被动触发的优化写法
|
||
|
||
> **参考实践**:
|
||
> - **superpowers code-reviewer**:description 里嵌入 `<example>` 标签,用对话示例教 Agent 触发场景
|
||
> - **wiki-query**:description 里加 Chinese/English triggers 列表
|
||
> - **gstack plan-design-review**:加 `Proactively suggest when...` 指令
|
||
> - **SkillRouter 论文**(2026):Agent 自主搜索(agentic)比纯关键词/纯语义准确率最高
|
||
|
||
即使 L3 不保证触发,也要优化写法提高命中率。**moziplus 的 Skill 全部按以下规范写 description**:
|
||
|
||
```yaml
|
||
---
|
||
name: quant-backtest
|
||
description: >
|
||
标准化量化回测技能。
|
||
|
||
When to use: 当需要回测量化策略、验证策略历史表现、测试策略参数时。
|
||
|
||
Chinese triggers: 回测、backtest、策略测试、历史表现验证、参数优化。
|
||
English triggers: backtest, strategy test, historical performance, parameter optimization.
|
||
|
||
Proactively suggest when: 用户提到策略实现完成后,主动建议运行回测验证。
|
||
|
||
Example: user says "帮我测一下双均线策略" → use quant-backtest skill.
|
||
---
|
||
```
|
||
|
||
**description 四要素**:
|
||
1. **功能描述**:这个 Skill 干什么
|
||
2. **触发场景**(When to use):什么情况下该用
|
||
3. **触发词**(Chinese/English triggers):中英文关键词
|
||
4. **主动建议**(Proactively suggest):Agent 看到相关场景时主动推荐
|
||
|
||
#### D4-9:Skill 诚实边界
|
||
|
||
> **参考实践**:nuwa-skill Agentic Protocol 要求每个 Skill 声明自己做不到什么
|
||
|
||
每个 Skill 必须包含 `## 诚实边界` section:
|
||
|
||
```markdown
|
||
## 诚实边界
|
||
- 本 Skill 不覆盖实盘交易逻辑(实盘请参考 live-trading Skill)
|
||
- 性能问题需要实际测试数据,纯代码审查无法确认
|
||
- 复杂策略可能需要拆分为多个 task
|
||
```
|
||
|
||
#### D4-10:moziplus 目录结构
|
||
|
||
```
|
||
sanguo_moziplus/
|
||
prompt_templates/ ← L2 ① 角色操作规范(Daemon 读取拼装)
|
||
executor.md ← 执行者操作步骤(读黑板→scope→执行→output→handoff)
|
||
reviewer.md ← 审查者操作步骤(读Protocol→审查→写review)
|
||
planner.md ← 庞统拆解步骤(需求结构化→组件选择→PlanChecker)
|
||
adjudicator.md ← 庞统裁决步骤(正方反方→判断→写决策)
|
||
rebuttal.md ← 反驳步骤(读review→ACCEPT/REJECT/PARTIAL)
|
||
plan_checker.md ← Plan Checker 步骤(覆盖性→依赖→粒度→铁律)
|
||
|
||
review_protocols/ ← L2 审查协议(Daemon 构造 reviewer bootstrap 时读取)
|
||
plan_review.yaml ← 方案审查协议
|
||
output_review.yaml ← 产出审查协议
|
||
guardrail_l2.yaml ← L2 轻量AI检查协议
|
||
analysis_review.yaml ← 分析审查协议
|
||
plan_check.yaml ← Plan Checker 协议
|
||
|
||
schemas/ ← CLI 层 Schema 校验(blackboard.py 读取)
|
||
handoff.schema.json ← Handoff 格式校验
|
||
output.schema.json ← Output 格式校验
|
||
decide.schema.json ← Decision 格式校验
|
||
observe.schema.json ← Observation 格式校验
|
||
review-output.schema.json ← Review 格式校验
|
||
|
||
template_components.yaml ← 模板组件库(庞统拆解时参考)
|
||
guardrails.yaml ← 声明式 Guardrail(Daemon 执行检查)
|
||
project_context.yaml ← L2 ② 项目背景(NAS路径/回测服务/框架)
|
||
```
|
||
|
||
**各目录作用**:
|
||
|
||
| 目录/文件 | 谁读 | 作用 | 变化频率 |
|
||
|----------|------|------|----------|
|
||
| `prompt_templates/` | Daemon | 按 Agent 角色拼装 bootstrap 消息 | 很少变 |
|
||
| `review_protocols/` | Daemon | 构造审查者的 bootstrap 消息 | 偶尔变 |
|
||
| `schemas/` | blackboard.py CLI | 写入时校验数据格式 | 偶尔变 |
|
||
| `template_components.yaml` | 庞统(通过 L2 注入) | 拆解需求时选择组件 | 偶尔变 |
|
||
| `guardrails.yaml` | Daemon | 自动检查产出 | 偶尔变 |
|
||
| `project_context.yaml` | Daemon | 拼装项目背景信息 | 换项目时变 |
|
||
|
||
**注意**:Agent 不直接读这些文件——全部由 Daemon 读取后拼装到 bootstrap 消息中注入。
|
||
|
||
#### D4-11:L2 引擎注入示例(张飞编码场景)
|
||
|
||
Daemon spawn 张飞时拼装的完整 bootstrap 消息:
|
||
|
||
```
|
||
═══ 操作规范(executor.md 模板)═══
|
||
|
||
你是任务执行者。按以下步骤工作:
|
||
|
||
## 1. 理解任务
|
||
- 读黑板任务详情(blackboard.py read --task {task_id})
|
||
- 理解 truths(可观测行为标准)、artifacts(必须产出)、constraints(约束)
|
||
|
||
## 2. 声明范围
|
||
- 写 scope_declaration(blackboard.py decide --task {task_id} --decider zhangfei-dev)
|
||
- 格式:{"decision": "我计划做什么", "rationale": "为什么", "artifacts": ["路径"]}
|
||
|
||
## 3. 执行工作
|
||
- 按你的专业能力完成任务
|
||
- 发现风险 → blackboard.py observe --task {task_id} --severity warning
|
||
- 需要协作 → blackboard.py comment --task {task_id} @mention
|
||
|
||
## 4. 提交产出
|
||
- blackboard.py output --task {task_id} --summary "一句话" --content-path "文件路径"
|
||
|
||
## 5. 写交接
|
||
- blackboard.py comment --task {task_id} --author zhangfei-dev \
|
||
--handoff '{"completed":"...", "artifacts":["..."]}'
|
||
|
||
## 6. 通知引擎
|
||
- 写 inbox 文件通知 Daemon 完成
|
||
|
||
═══ 项目背景(project_context.yaml)═══
|
||
|
||
项目:sanguo_quant_live
|
||
框架:vnpy
|
||
NAS 数据:/Volumes/stock/
|
||
回测服务:http://192.168.2.154:8088
|
||
编码规范:类型注解必须、禁止 any、match 现有风格
|
||
|
||
═══ 任务上下文(黑板动态读取)═══
|
||
|
||
任务 ID: task-001
|
||
任务标题: 实现双均线策略
|
||
truths: ["策略代码通过单元测试", "回测结果包含收益曲线"]
|
||
artifacts: ["task-001/strategy.py", "task-001/backtest_report.pdf"]
|
||
constraints: ["使用 vnpy 框架", "不超过 500 行"]
|
||
risk_level: standard
|
||
|
||
═══ 前序信息(depends_on 产出)═══
|
||
|
||
[赵云 Handoff] 完成了分钟线数据下载,产出 task-000/data/
|
||
数据路径: /Volumes/stock/min_data/IF888.csv
|
||
|
||
═══ 可选参考 ═══
|
||
|
||
如果需要具体操作方法,用 read 加载:
|
||
- 编码:~/.openclaw/skills/coding-implementation/SKILL.md
|
||
- 回测:~/.openclaw/skills/quant-backtest/SKILL.md
|
||
```
|
||
|
||
**对比审查者(司马懿)收到的 bootstrap**:
|
||
|
||
```
|
||
═══ 操作规范(reviewer.md 模板)═══
|
||
|
||
你是质量审查者。按 Review Protocol 执行审查:
|
||
|
||
## 审查步骤
|
||
1. 预判:先不读产出,预测 3-5 个最可能出问题的点
|
||
2. 验证:读实际产出(不是报告),逐条验证每个 truth
|
||
3. 多视角:从安全/新人/运维三个角度看产出
|
||
4. 缺口分析:不只看"什么有问题",还看"什么缺失了"
|
||
5. 自审:给每个 finding 打 confidence,低 confidence 降级
|
||
|
||
## 写 Review
|
||
- blackboard.py review --task {task_id} --verdict [approved|rejected|needs_revision] ...
|
||
|
||
[... 对抗性指令 ...]
|
||
|
||
═══ Review Protocol(output_review.yaml)═══
|
||
|
||
[审查维度、方法、输出 Schema 等详细协议内容]
|
||
|
||
═══ 任务上下文 ═══
|
||
[同上]
|
||
|
||
═══ Required Reading ═══
|
||
- 执行者 scope_declaration: ...
|
||
- 产出物: task-001/strategy.py
|
||
- must_haves truths: [...]
|
||
```
|
||
|
||
---
|
||
|
||
## 7. 和现有设计的对齐检查
|
||
|
||
| 已有设计 | 课题4 补充 | 一致性 |
|
||
|---------|-----------|--------|
|
||
| §3.2 tasks 表 schema | D4-1 模板组件输出 → tasks 写入 | ✅ truths/artifacts/constraints/risk_level/depends_on 对齐 |
|
||
| §9.2 分级审查矩阵 | D4-4 复杂度→粒度控制 | ✅ risk_level 在创建时标注 |
|
||
| §4.2 Tick+Inbox | D4-1 Step 4 创建任务后 Daemon tick 检测 | ✅ 创建是事件源 |
|
||
| §9.4 Review Protocol Registry | D4-10 review_protocols/ 目录 | ✅ Daemon 构造审查者 bootstrap 时读取 |
|
||
| §9.9 Agent vs Subagent | D4-3 Plan Checker 走 Subagent | ✅ 无身份一次性检查 |
|
||
| Skill TODO 28项 | D4-10 prompt_templates/ 承载关键操作 | ✅ S-01~S-28 的关键操作写死在模板中 |
|
||
|
||
## 8. 遗留 TODO
|
||
|
||
| # | 待解决事项 | 归属 | 说明 |
|
||
|---|----------|------|------|
|
||
| ~~T4-1~~ | ~~template_components.yaml 完整定义~~ | ~~Phase 2~~ | ✅ 方案已定,开发实现 |
|
||
| ~~T4-2~~ | ~~Plan Checker 的 plan_check.yaml 实现~~ | ~~Phase 2~~ | ✅ 方案已定,开发实现 |
|
||
| ~~T4-3~~ | ~~prompt_templates/ 编写~~ | ~~Phase 1~~ | ✅ 方案已定,开发实现 |
|
||
| ~~T4-4~~ | ~~project_context.yaml 定义~~ | ~~Phase 1~~ | ✅ 方案已定,开发实现 |
|
||
| ~~T4-5~~ | ~~Daemon build_bootstrap() 拼装逻辑~~ | ~~Phase 1~~ | ✅ 方案已定,开发实现 |
|
||
| ~~T4-6~~ | ~~铁律 Hook 实现(L0)~~ | ~~Phase 1~~ | ✅ 方案已定,开发实现 |
|
||
| ~~T4-7~~ | ~~现有 Skill description 优化(加四要素)~~ | ~~Phase 2~~ | ✅ 方案已定,开发实现 |
|
||
| ~~T4-8~~ | ~~Skill 诚实边界补充~~ | ~~Phase 2~~ | ✅ 方案已定,开发实现 |
|
||
| ~~T4-9~~ | ~~Skill 测试框架~~ | ~~Phase 3~~ | ➡️ 移至工具链课题(开发工具链的一部分,不属于拆解机制) |
|
||
| ~~T4-10~~ | ~~Skill 进化/蒸馏机制~~ | ~~Phase 3~~ | ➡️ 合并进课题6(经验→Skill的进化是经验沉淀闭环,课题6已有两级蒸馏+Skill生命周期) |
|