Files
sanguo_moziplus_v2/docs/design/topic4-decomposition-skill-proposal.md
T
2026-05-15 22:00:22 +08:00

18 KiB
Raw Blame History

课题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

参考实践

  • MetaGPTSOP 自动链 + _watch 声明式订阅,不是固定 DAG
  • get-shit-donediscuss→plan→execute→verify→ship 五阶段,但每阶段内部灵活
  • open-multi-agent:Goal → DAG 自动分解,按 complexity 决定粒度
  • v1.05 个固定模板(full_role_development / circular_review_test / multi_stage_review / data_acquisition / multi_edge_discussion

方案:不是 5 个完整 DAG,而是模板组件库(Phase Components。庞统按需组合。

# 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

庞统的拆解流程

Step 1:需求结构化
  - 分析用户输入,提取需求列表
  - 每个需求标注类型(数据/编码/分析/部署/风控)
  - 评估复杂度(简单/中等/复杂)
  - 隐含需求挖掘(如用户说"回测"→ 隐含需要数据获取)
  - 产出:structured_requirements → 写入黑板 decisions 表

Step 2:组件选择 + 组合
  - 根据需求类型,从组件库选择需要的 phases
  - 检查 mandatory 组件是否被遗漏
  - 组合 phases,排列依赖关系
  - AI 增强:增删调整(如"这次数据已有,跳过 data_acquire"
  - 产出:draft_plan → 写入黑板 decisions 表

Step 3Plan Checker 验证
  - 独立验证(不是庞统自己验证自己)
  - 检查项:
    - 覆盖性:每个需求是否被至少一个 step 覆盖
    - 依赖性:step 依赖是否合理(无环、无遗漏前置)
    - 粒度性:step 是否过大/过小
    - 铁律:IR-1(每任务至少2 Agent)是否满足
    - 风险:risk_level 是否合理,高风险任务是否有对抗审查
  - 不通过 → 回 Step 2 调整(最多 2 轮)
  - 通过 → 进入 Step 4

Step 4:任务创建
  - 将 plan 转为黑板 tasks
  - 每个 step → 一个 task(含 truths / artifacts / constraints / risk_level / assigned_to
  - 依赖关系 → tasks 的 depends_on 字段
  - 庞统在黑板上写 scope_declaration
  - 产出:tasks 写入黑板 → Daemon 检测 → 开始执行

D4-2:需求结构化的输出格式

庞统分析用户需求后,输出结构化需求到黑板:

{
  "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-3Plan Checker 独立验证

参考实践

  • superpowersplan-document-reviewer subagent 独立验证方案
  • oh-my-claudecode Critic:预判→验证→自审五阶段
  • get-shit-doneScope Reduction Detection(完成后反向检查覆盖)

Plan Checker 是一个 Subagent(不需要 Agent 身份),Daemon spawn 后执行:

# 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 决定是否拆分子任务
  • wanmanToken 预算控制执行深度
复杂度 判断标准 拆解策略 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-donediscuss phase 是必须的用户确认步骤
  • v2.0 PRD:Phase 1 需求探索(苏格拉底对话)

不是每步都问用户,但在关键节点确认:

检查点 触发条件 用户看到什么
需求确认 Step 1 完成后 结构化需求列表 + 隐含需求
方案确认 Step 2 完成后(complex 任务) 任务列表 + 依赖关系 + 预估时间

simple 任务跳过方案确认,直接创建。complex 任务必须确认。


Part BSkill 体系工程落地

4. 设计目标

三个课题产出了大量"Agent 需要知道怎么做"的内容(28 项 Skill TODO),需要一个系统的 Skill 体系来承载。

5. 设计决策

D4-6:五层 Skill 架构

参考实践

  • Claude Code4 层渐进式加载(Discovery → Matching → Full Load → Overflow
  • oh-my-claudecode:三层组合(Execution + Enhancement + Guarantee
  • nuwa-skill:5 阶段蒸馏 + 检查点 + 诚实边界
  • v3.1 Skill 体系设计(已确认):Hook 铁律 + Agent 角色 + 通用 Skill + moziplus 注入
┌─────────────────────────────────────────────────────────────┐
│ Layer 0: 铁律(Iron Rules                                  │
│   机制: OpenClaw Hook before_prompt_build                    │
│   自由度: 无 | 每轮强制注入                                   │
│   内容: IR-1~IR-5(每个 Agent 可定制)                        │
│   Token: ~500                                                │
├─────────────────────────────────────────────────────────────┤
│ Layer 1: 角色(Agent Identity                               │
│   机制: SOUL.md + IDENTITY.md + AGENTS.md                    │
│   自由度: 无 | 全量加载                                       │
│   内容: 角色定义 + 行为准则 + 记忆                            │
│   Token: ~2000                                               │
├─────────────────────────────────────────────────────────────┤
│ Layer 2: 准则(Guidelines                                   │
│   机制: SKILL.md (type=guideline)                            │
│   自由度: 中 | 按需加载(Discovery → Full Load             │
│   内容: 检查清单 + 边界 + 诚实边界                            │
│   Token: 列表 ~100, 全文 ~500                                 │
├─────────────────────────────────────────────────────────────┤
│ Layer 3: 技能(Procedures                                   │
│   机制: SKILL.md (type=procedure)                            │
│   自由度: 高 | 按需加载                                       │
│   内容: 具体步骤 + 模板 + 脚本 + 示例                        │
│   Token: 列表 ~100, 全文 ~2000                                │
├─────────────────────────────────────────────────────────────┤
│ Layer 4: 引擎注入(Engine Context                           │
│   机制: Daemon 构造 L1 bootstrap 消息                        │
│   自由度: 无 | 每次 spawn 强制注入                           │
│   内容: 任务上下文 + Review Protocol + Guardrail 配置        │
│   Token: ~1000                                               │
└─────────────────────────────────────────────────────────────┘

D4-7:两种 Skill 类型

参考实践

  • oh-my-claudecode:区分 ralplan(规划型)和 ralph(执行型)
  • nuwa-skill:每个 Skill 有 Agentic Protocol(定义"怎么做"
类型 作用 加载时机 示例
guideline(准则型) 定义"应该考虑什么"、"边界在哪" Agent 判断需要时 审查准则、编码规范、风控边界
procedure(过程型) 定义"具体怎么操作" Agent 判断需要时 回测流程、数据获取、部署步骤

区分标准

  • guideline 回答"应该注意什么"
  • procedure 回答"具体怎么做"

D4-8Skill 注册和发现

参考实践

  • GSD:文件系统扫描 + SKILL.md frontmatter + trigger hints
  • Claude CodeskillListingBudgetFraction 控制 Skill 列表 token 占比
# SKILL.md frontmatter 规范
---
name: quant-backtest
description: "量化策略回测执行流程。触发:回测、backtest。"
type: procedure  # procedure | guideline
version: "1.0.0"
agents: [zhangfei-dev, jiangwei-infra]  # 可选,空=所有 Agent 可见
triggers: [回测, backtest, 策略测试]     # 可选,辅助匹配
related_skills: [data-acquisition, risk-assessment]  # 可选,松耦合推荐
---

发现机制

  1. 系统启动时扫描 skills/ 目录
  2. 读取 frontmatter 构建索引
  3. Agent 每轮推理时注入 Skill 列表(只有 name + description~100 token/skill
  4. Agent 用 read 工具按需加载全文

D4-9Skill 诚实边界

参考实践nuwa-skill 的 Agentic Protocol 要求每个 Skill 声明自己做不到什么

每个 Skill 必须包含 ## 诚实边界 section

## 诚实边界
- 本 Skill 不覆盖实盘交易逻辑(实盘请参考 live-trading Skill
- 性能问题需要实际测试数据,纯代码审查无法确认
- 复杂策略可能需要拆分为多个 task

D4-10moziplus 专用 Skill 目录

moziplus 的 Skill 不是放在 OpenClaw 的 skills/ 下,而是放在 moziplus 项目内部:

sanguo_moziplus/
  skills/
    moziplus/
      blackboard-operations/      # S-01: blackboard.py CLI 使用
        SKILL.md
      handoff-write/              # S-03: 写 Handoff Comment
        SKILL.md
      handoff-read/               # S-04: 读 Handoff Comment
        SKILL.md
      scope-declaration/          # S-10: claim 后写 scope_declaration
        SKILL.md
      review-output/              # S-15/17/18/19: 审查者全套
        SKILL.md
      review-protocol/            # S-13/14/18/19/20: 审查协议
        SKILL.md
      task-creation/              # S-21/22/23: 庞统创建任务
        SKILL.md
      task-decomposition/         # S-27: 庞统拆解方法
        SKILL.md
      l1-bootstrap/               # S-28: L1 消息构建
        SKILL.md
    review_protocols/             # D3-9: 审查协议 YAML
      plan_review.yaml
      output_review.yaml
      guardrail_l2.yaml
      analysis_review.yaml
      plan_check.yaml             # D4-3: Plan Checker 协议
    schemas/                      # D2-12: Schema 文件
      handoff.schema.json
      output.schema.json
      decide.schema.json
      observe.schema.json
      review-output.schema.json
    template_components.yaml      # D4-1: 模板组件库
    guardrails.yaml               # D3-8: 声明式 Guardrail

D4-11Layer 4 引擎注入的具体内容

Daemon 每次 spawn Agent 时,在 L1 bootstrap 消息中注入:

[任务上下文]
任务 ID: task-001
任务标题: 双均线策略回测
任务状态: pending
风险等级: standard
truths: ["回测报告包含收益曲线", "策略代码通过单元测试"]
artifacts: ["task-001/output.md", "task-001/backtest_report.pdf"]
constraints: ["使用 vnpy 框架", "不超过 500 行"]

[Review Protocol](如果是审查者角色)
协议: output_review
审查维度: [requirement_traceability, scope_alignment, correctness, completeness]
审查方法: pre_commitment → verification → multi_perspective → gap_analysis → self_audit
多视角: 安全 / 新人 / 运维
对抗性指令: [DO NOT trust the report, ...]
输出 Schema: review-output.schema.json

[Guardrail 配置](如果是执行者角色)
output_guardrails:
  - file_exists (blocking)
  - json_valid (blocking)
  - artifacts_exist (blocking)

[前序信息]
最近 3 条 comments:
  [pangtong] 任务已创建,请开始工作
  [zhangfei] ## Handoff: 完成了策略编码,产出 task-001/strategy.py
最新 output: task-001/strategy.py (summary: 双均线策略实现)

这些内容是 Daemon 根据 tasks 表 + reviews 表 + comments 表 + guardrails.yaml + review_protocols/ 动态拼装的。Agent 不需要自己找这些信息。


6. 和现有设计的对齐检查

已有设计 课题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 moziplus Skill 目录 review_protocols/ 在 Skill 目录下
§9.9 Agent vs Subagent D4-3 Plan Checker 走 Subagent 无身份一次性检查
Skill TODO 28项 D4-10 Skill 目录结构 S-01~S-28 有归属目录

7. 遗留 TODO

# 待解决事项 归属 说明
T4-1 template_components.yaml 完整定义 Phase 2 所有 phase 组件的详细定义
T4-2 Plan Checker 的 subagent 实现 Phase 2 plan_check.yaml + spawn 逻辑
T4-3 需求结构化的 Skill(庞统) Phase 2 S-21 task-creation Skill
T4-4 拆解方法的 Skill(庞统) Phase 2 S-27 task-decomposition Skill
T4-5 L1 bootstrap 消息拼装逻辑(Daemon Phase 1 S-28 + Daemon 代码
T4-6 Skill 注册/发现机制工程化 Phase 2 frontmatter 扫描 + 索引构建
T4-7 铁律 Hook 实现 Phase 1 OpenClaw Plugin Hook
T4-8 现有 42 个 Skill 打标(guideline/procedure Phase 2 分类 + 加 type 字段
T4-9 Skill 诚实边界补充 Phase 2 每个 Skill 加 ## 诚实边界
T4-10 Skill 测试框架 Phase 3 结构测试 + 干跑测试 + 场景测试