---
description: 在需求变更文档（07+01/02/03）已定稿后，由子 Agent 仅实现本轮 07 关联的 03 任务（代码）；不替代 /kb-revise 的澄清与写文档阶段
argument-hint: "[变更目录或 scan-id] [补充说明]"
---

> Pi 包 `@suwenguang/pi-kb`：运行时包根为环境变量 `PI_KB_ROOT`（由 `extensions/kb-root.ts` 注入）。
> 工种子 Agent 通过 **pi-subagents** 派发（已 bundled）；agent 定义见本包 `agents/`。
> 脚本调用示例：`node "$PI_KB_ROOT/scripts/<name>.mjs"`。

## 用户输入

${@:-（未附带参数；结合当前对话上下文执行，缺信息时向用户澄清。）}

---
在 **`/kb-revise` 已完成澄清并由子 Agent 落盘**（`07-prd-revisions.md` + 更新的 `01/02/03`）之后，执行**本轮需求变更对应的代码实现**。

**输入**：变更名称（**中文**）+ 可选「轮次」`RevN`（不填则默认 **`07` 中最后一条且实现状态为未开始/进行中** 的轮次）。

## 与 `/kb-apply` 的区别

| 命令 | 典型用途 | 任务范围 |
|------|----------|----------|
| `/kb-apply` | 标准从 0 到 1 或全量任务 | 通常覆盖 `03-tasks.md` 中主要任务集 |
| **`/kb-revise-apply`** | **PRD 变更后的增量实现** | **仅** `07-prd-revisions.md` 当前轮「关联 03 任务」列出的任务 ID（及其在 03 中的依赖前置任务，若未完工则一并纳入） |

若 `07` 不存在或当前轮未填写关联任务，**停止**并提示先 `/kb-revise` 或 `/kb-plan` 补全 `03` 与 `07`。

若当前轮关联任务包含 `T-Rev{n}-FIX-{m}`，按评审修复任务处理：完成后必须回写对应 `reviews[].status = "fixed"`，无法确认修复时保持 `open`。

## Bootstrap 门禁（硬阻断）

本命令要求业务仓已完成 KB 初始化（`/kb-init` / `kb-bootstrap`）。开始前**必须**先跑机器门禁；失败则**立即停止**，禁止继续（含禁止用 `mkdir -p knowledge/...` 绕过建目录）。执行：

`node "${PI_KB_ROOT}/scripts/kb-bootstrap-check.mjs" --target "$(pwd)"`

未通过时按脚本输出指引执行 `/kb-init`，或：

`node "${PI_KB_ROOT}/scripts/kb-bootstrap.mjs" --target "$(pwd)"`

## CodeGraph 门禁（硬阻断）

本命令依赖 CodeGraph。开始前**必须**先跑机器门禁；失败则停止并输出脚本指引，禁止继续。执行：

`node "${PI_KB_ROOT}/scripts/kb-codegraph-check.mjs" --target "$(pwd)"`

门禁通过后，再确认 MCP 工具 `codegraph_*`（至少能调用 `codegraph_explore`（或 `codegraph_status`））可用。若工具不可用：阻断，并指引用户从插件示例复制项目级 MCP 配置：

按 [kb-codegraph.md](../skills/kb-workflow/references/kb-codegraph.md) §一，从 `${PI_KB_ROOT}/bootstrap/examples/mcp/` **只写当前宿主**对应文件（Claude/其他 → 根 `.mcp.json`；Cursor → `.cursor/mcp.json`；禁止无脑双写），配置后 Reload / 重启会话，再重试本命令。

## 约束

- **变更名称必须为中文**；目录位于 `knowledge/变更/进行中/*-<中文名称>/`，必要时兼容 `knowledge/变更/归档/*-<中文名称>/`。
- **本命令负责调度业务代码实现**（与 `/kb-revise` 相反），实际代码写入由子 Agent 执行；仍遵守 AGENTS.md：中文注释、关键日志、不写单测等。
- **子 Agent 必用 `Task`**：实现方式与 **`/kb-apply`** 一致，按依赖轮次为 **`S'`** 中每个任务派发 `Task`（`generalPurpose`），主 Agent 仅调度、验收；`07`/`03`/`00-manifest.json` 状态回写也由子 Agent 执行。
- 子 Agent prompt 继承 `/kb-apply` 的 CodeGraph 要求：先用 CodeGraph 理解相关代码上下文和影响面，发现额外影响时报告而不是扩大范围。
- 会话中打印**关键日志**：选中的 `Rev`、任务 ID 列表、每轮调度摘要、最终修改文件列表（短）。

## 执行步骤

### 1. 定位目录与轮次

- 解析变更目录（同 `/kb-revise`）。
- 读取 `00-manifest.json` 与 `07-prd-revisions.md`；若变更目录缺失 manifest，先由子 Agent 从 `01`～`07` 补建最小状态，再继续。确定目标轮次与用户指定 `RevN` 或**最后一条未 completed** 的行；读取「关联 03 任务」得到任务 ID 集合 `S`。

### 2. 解析 `03-tasks.md` 与依赖闭包

- 从 `03-tasks.md` 提取依赖图（同 `/kb-apply`）。
- 令 `S' = S ∪ {所有在依赖图中指向 S 内任务的前置任务}`，且仅包含状态上仍**未完成**的前置（避免重复劳动时可跳过已在仓库完成的项——以 03 勾选或用户说明为准）。
- 若 `S'` 为空，停止并提示检查 `07` 与 `03`。

### 3. 按依赖图调度子 agent（`Task`，继承 `/kb-apply`）

对 `S'` 在全局依赖图中的**诱导子图**按拓扑轮次执行：调度规则、子 agent prompt 构造、验收检查、失败处理、执行报告格式 **与 `prompts/kb-apply.md（斜杠 `/kb-apply`）` 第 2～4、6～7 步一致**（第 5 步强制链见本命令 §5），且**每个实现任务必须通过 `Task` 工具派发子 Agent**；仅将「任务全集」替换为 **`S'`**。

### 4. 回写文档状态（子 Agent，仅本变更目录 .md）

- 将 `07` 中该轮「实现状态」更新为 **已完成**（若部分失败则写 **进行中** 并注明失败任务 ID）。
- 在 `03-tasks.md` 中为已验收通过的任务勾选完成标记（与 `/kb-apply` 惯例一致）。
- 在 `00-manifest.json` 中同步更新 `revisions[].status`、`tasks[].status`、`reviews[].status`（仅限本轮修复关联项）、涉及文件与 `updated_at`。

### 5. 收尾与强制链（与 `/kb-apply` 对齐）

- 输出执行报告（表格）。
- **若本轮 `S'` 仍有失败任务**：不写 `stage = "applied"`、不进入 review/test；修复后重跑本命令对应任务。
- **若本轮 `S'` 全部验收通过**，且 `flow = standard`：与 `/kb-apply` §5 相同，须**同会话**按序完成（失败即阻断，不得只「提示按需 review」）：
  1. 由子 Agent 将 `00-manifest.json` 的 `stage` 写为 `"applied"`（进行中可先写 `"applying"`，全部通过后必须为 `"applied"`）。
  2. 校验 manifest（失败即阻断，不得进入 review）：

```bash
node "${PI_KB_ROOT}/scripts/kb-manifest-validate.mjs" --file <变更目录>/00-manifest.json
```

  3. **强制派发 `/kb-review`**：同会话执行 `/kb-review` 的完整步骤。
  4. review **通过**后，同会话再串联可执行的 `/kb-test`（见 `prompts/kb-test.md（斜杠 `/kb-test`）`）；未通过则走 apply/revise-apply 修复后再 review。
  5. **archive**：test 通过或验收策略写完后，可提示 `/kb-archive`；**禁止**跳过 review 直接 archive。
- `flow = lite`：豁免本强制链（与 `/kb-apply` 一致）。

## 注意事项

- **禁止**在本命令中重做需求澄清或大改 `01` 正文；若发现文档与代码冲突，**停止**并让用户回到 **`/kb-revise`** 修文档后再跑本命令。
- 若本轮任务与历史任务强耦合，确保 `S'` 闭包包含必要前置，避免半套实现。
- `flow = standard` 下，本轮全部通过后的 review/test 为**同会话强制链**，与 `/kb-apply` 对齐，不得改写成「按需提示」。
