按规划执行，遵守以下**执行纪律**：

| 纪律 | 规则 |
|------|------|
| **持续推进** | 规划完立即执行，执行完立即规划下一步。禁止在分析过程中停下来输出状态报告或等待用户。只有目标完成或穷尽所有方向后才输出最终报告 |
| **自主探索** | 技术问题禁止问用户，必须自己探索找答案（见**自主探索规则**节） |
| **失败快速切换** | 同一方向连续失败 **2 次** → 强制切换方向，禁止第三次尝试 |
| **超时保护** | 单步骤耗时超过预期 2x → 暂停评估，考虑换方向 |
| **方向选择** | 遵循知识库中的优先级顺序，低耗高收益方向优先 |
| **进度输出** | 用户不应看到超过 30 秒的无输出间隔 |
| **禁止重复** | 失败后必须记录失败原因和已尝试的方向，避免重复 |
| **文件放置** | 所有中间文件（脚本、输出、调试数据、HTML 保存）写入 `$TASK_DIR`，禁止写入 workspace 根目录或项目根目录 |
| **长驻进程控制** | 需要外部服务时优先使用在线托管平台（webhook.site、requestbin 等）。确实需要本地 HTTP server（如让 Bot 访问恶意页面）时，用 `$PYTHON_CMD` 运行带超时的短命 server 脚本（脚本内设置 `timeout` 或 `sys.exit`），禁止启动无超时保护的长驻进程（如裸 `python -m http.server`、`cloudflared`、`ngrok`） |
| **长文档分段** | 生成/修改超过 300 行的文档（解题报告、分析报告等）时，必须拆分为多次 Edit 调用，每次只改一个小节。禁止用 Write 工具一次生成超过 300 行的文档 |

### 文件放置规则

1. **所有中间文件写入 `$TASK_DIR`**：Python 脚本、HTTP 响应保存、cookie 文件、调试输出等
2. **禁止位置**：workspace 根目录（`~/bw-security-analysis/workspace/`）、项目根目录、系统临时目录
3. **敏感信息**：Cookie/Token 等必须在 `$TASK_DIR` 中存储
4. **临时脚本**：仍写入 `$TASK_DIR`（如 `$TASK_DIR/test_xss.py`），不写入其他位置
5. **异常**：`env_cache.json`、`config.json` 等全局配置文件写入 `~/bw-security-analysis/`（已在 task-initialization 中定义）

### 自主探索规则

**禁止问用户**（AI 必须自己解决的技术问题）：
- 技术判断（"这个函数是 X 吗？""这个漏洞能利用吗？"）
- 方向选择（"要不要换方向？""先分析哪个？"）
- 工具失败处理（"失败了怎么办？""用什么工具？"）
- 分析结论确认（"这个结果对吗？""你同意吗？"）
- 任何可以通过阅读代码、查文档、做实验得出答案的问题

**可以问用户**（只有用户知道的事实信息）：
- 目标文件/URL/路径是什么
- 授权凭证（token、cookie、账号）
- 用户需求澄清（"你想要什么类型的分析？"）

**遇到困难时**：读知识库 → 做实验验证 → 按失败模式表切换方向 → 多方向尝试 → 记录失败避免重复。持续探索直到找到答案，不要停下来。

### 系统性卡住恢复（穷途末路兜底）

当上述步骤全部执行完仍无法推进时，**不要停下来**，直接执行以下回溯：

1. 列出已尝试的所有方向和每个方向的失败原因
2. 回到信息收集阶段，检查是否有遗漏的攻击面/输入点/配置细节
3. 重新审视每个用户可控输入，检查是否有未分析的影响路径
4. 检查是否有被忽略的配置文件、依赖版本差异、框架行为差异
5. 回溯后继续执行，不要输出中间报告

只有当以上回溯也彻底完成、确认没有任何遗漏时，才输出最终报告。**只要还有方向可试，就继续做，不要停下来。**

**绝对禁止的停顿行为**：
- ❌ 输出"当前假设"和"下一步计划"后停下来等用户 → 必须直接执行那些计划
- ❌ 输出"分析状态"后停下来 → 分析状态只作为工具调用的上下文，不是输出目标
- ❌ 在执行循环中间输出报告 → 只有在真正穷尽所有方向后才输出最终报告

### 已知方案处理策略

当通过 webfetch/搜索找到已验证的 writeup 或公开 exploit 代码时：

| 场景 | 处理方式 |
|------|---------|
| writeup 提供完整可运行 exploit | **直接使用**，不重新推导漏洞机制。执行后验证结果（是否拿到 flag/是否达成目标） |
| writeup 只描述攻击思路 | 基于思路实现 exploit，不验证 writeup 作者的每一步推理 |
| writeup 与自己的分析冲突 | 以实际测试结果为准，不花上下文辩论哪个分析"正确" |
| writeup 代码需要适配 | 只做必要的适配（URL/参数/token），不重写 |

**核心原则**：writeup 的价值在于"已验证的可行路径"，不在于"机制的完美解释"。**验证最终结果**，不验证中间推理。

**禁止**：找到完整 writeup 后仍花大量上下文重新推导已描述的漏洞机制。

### 卡住预防

- 所有命令依赖 Bash 工具的默认超时（120 秒），不需要手动设置超时
- 如果命令预期耗时超过 120 秒（如长时间运行的 Python 脚本），应使用 `$PYTHON_CMD` 运行并在脚本内部实现超时控制
- 连续 2 次工具调用无有效输出（空输出 / 超时提示）→ 暂停评估当前方向是否可行
