# 课题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生命周期） |
