# 需求：Phase B 方案输出纪律强化

## 1. 背景与目标

### 1.1 来源

复盘 CRACKME3 分析过程，发现 AI 在阶段 B（分析规划）读取了 `analysis-planning.md`，理解了场景分类和方案模板，但**跳过了向用户输出格式化方案**这一步骤，直接开始执行分析。

### 1.2 问题分析

`analysis-planning.md` 已明确定义了方案输出格式（L106-124）：

```
## 分析方案

**场景分类**: [packed] [crypto] [gui]

**计划步骤**:
1. [x分钟] 操作描述 — 失败时: 切换方向
2. [x分钟] 操作描述
3. ...

**预计总耗时**: Xm

开始执行...
```

`ida-pro-analysis.md` 的阶段 B 描述（L137-145）也要求"向用户输出方案"。

**根因**：prompt 中的"向用户输出方案"是一条软性描述（"向用户输出方案 — 简要说明分析计划和预期步骤"），没有与"禁止无方案直接开始分析"同等级别的强调。AI 在上下文压力下跳过了这一步。

### 1.3 目标

通过在 `ida-pro-analysis.md` 阶段 B 中增加明确的禁止跳过规则，确保 AI 在分析规划阶段始终输出格式化方案。

### 1.4 评估维度

| 维度 | 改进 |
|------|------|
| 减少对话轮次 | 方案输出让用户能在执行前调整，避免方向错误导致的浪费轮次 |
| 提升分析速度 | 用户确认方案后执行更有针对性，减少中途方向切换 |
| 提升准确度 | 方案经过用户审查，减少执行阶段的方向性错误 |

---

## 2. 技术方案

### 2.1 修改 `ida-pro-analysis.md` 阶段 B 描述

将阶段 B 的核心规则从 4 条增加到 5 条，新增"禁止跳过方案输出"规则：

**当前**（L142-145）：

```
1. **先规划再执行** — 禁止无方案直接开始分析
2. **场景驱动** — 根据 `scene.scene_tags` 决定加载哪些知识库
3. **知识库按需加载** — 只读取场景标签对应的文档，不全部加载
4. **向用户输出方案** — 简要说明分析计划和预期步骤
```

**修改为**：

```
1. **先规划再执行** — 禁止无方案直接开始分析
2. **场景驱动** — 根据 `scene.scene_tags` 决定加载哪些知识库
3. **知识库按需加载** — 只读取场景标签对应的文档，不全部加载
4. **必须输出方案** — 使用 `analysis-planning.md` 定义的格式向用户输出完整方案（场景分类、计划步骤、预计耗时），禁止跳过
5. **方案优先** — 未输出方案前禁止执行任何 idat 分析调用（仅 Python 预检查脚本和阶段 A 的 initial_analysis.py 除外）
```

**改动量**：2 行修改（第 4 条重写 + 第 5 条新增）。

### 2.2 行数影响

- 当前 `ida-pro-analysis.md` 共 290 行
- 本次改动：+1 行
- 改动后：291 行（远低于 450 行上限）
- 注意：如果与 Doc 2（force_create）同时实施，Doc 2 增加 ~3 行，合计 294 行

### 2.3 实施顺序

本需求修改 `ida-pro-analysis.md` 的 L144-145 区域。如果与 Doc 2（force_create，修改 L198-200 区域的查询表格）同时实施，两者修改不同区域，无冲突。但行号可能因 Doc 2 先实施而偏移 ~3 行，实施时应按内容定位而非行号。

---

## 3. 实现规范

### 3.1 改动范围

| 文件 | 改动类型 | 行数变化 |
|------|---------|---------|
| `ida-pro-analysis.md` | 修改 | +1 行（L144-145 区域） |

### 3.2 不修改的文件

- `analysis-planning.md` — 方案输出格式已定义，无需变更
- `_base.py` / `_utils.py` / `query.py` / `update.py` — 无代码变更
- `templates.md` — 无变更

---

## 4. 验收标准

### 4.1 功能验收

- [ ] `ida-pro-analysis.md` 阶段 B 包含 5 条核心规则
- [ ] 第 4 条明确要求"必须输出方案"且"禁止跳过"
- [ ] 第 5 条明确要求"未输出方案前禁止执行 idat 调用"

### 4.2 回归验收

- [ ] 阶段 A（信息收集）不受影响
- [ ] 阶段 C（执行与监控）不受影响
- [ ] 查询型需求（跳过阶段 B）不受影响
- [ ] 主 prompt 总行数 ≤ 450 行（291 行，OK）

### 4.3 架构验收

- [ ] 仅修改 prompt 文档，不涉及代码文件
- [ ] 不引入新的知识库文件

---

## 5. 与现有文档的关系

| 现有文档 | 关系 |
|---------|------|
| [需求-进化流程渐进式披露与Prompt瘦身](需求-进化流程渐进式披露与Prompt瘦身.md) | 本次修改是 prompt 纪律强化的延续 |
| `analysis-planning.md` | 本次修改强化了 `analysis-planning.md` 中方案输出格式的执行纪律 |

---

## 6. 不做的事

1. **不增加方案审批步骤** — 输出方案后直接执行，不需要等待用户确认（用户可以中断）
2. **不修改 analysis-planning.md** — 方案输出格式已定义，问题是执行纪律而非格式定义
3. **不增加场景检测逻辑** — 只是强化现有流程的执行纪律
