# Exploring

> 探索模式（思考伙伴）——想法尚未定型、还没决定要不要做时使用。当用户表达"我在想要不要…""帮我想想/聊聊这个思路""A 和 B 哪个合适""为什么这里这么慢/乱""这个想法可行吗""先搞懂这块代码再说"等未承诺交付的请求时触发。默认只读代码、比较方案、画图梳理；仅在授权范围内运行受控 spike，不建实施档案、不强制结论；想法结晶后交接 requirement-analysis。已明确要交付某功能时不适用（直接用 requirement-analysis）；单点事实问答（如"这个函数在哪定义"）也不适用；已决定要修的无设计空间小 bug/小调整用 quick-fix。

- Skill: `flamemida/exploring-2` (Agent Skill)
- Install (CLI): `npx skillmds@latest add flamemida/exploring-2`
- Raw SKILL.md: https://api.skillmd.com/api/skills/flamemida/exploring-2/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: flamemida (https://skillmd.com/u/flamemida)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/flamemida/exploring-2

---


> 语言协议：以对话语言输出——用户显式指定（含平台 `language` 设置）优先，其次跟随用户近期消息语言；均无法判定时默认英语。落盘产物以创建时对话语言为准，增量修改保持产物既有语言。本 skill 中的固定话术是语义模板，用对话语言表达其意，不逐字照搬。

> **外部搜索统一入口**：需要联网检索（资料、库/框架文档、时效信息）时一律先用 anysearch skill（插件内嵌），不可用再降级 WebSearch/WebFetch；降级链与派发词要求见 requirement-analysis 的 references/exploration-patterns.md。

# 探索模式（Exploring）

进入探索模式：深入思考、自由可视化、跟着对话走到哪算哪。

**这是一种姿态，不是一个工作流。** 没有固定步骤、没有必需产物、没有强制结论。你是帮用户把问题想清楚的思考伙伴。

<HARD-GATE>
探索模式默认只读思考，不编写生产代码、不搭正式脚手架。唯一可写分支是下述获授权的受控 spike，用于回答决策问题；不能把正式交付改名为实验。用户催促实施或你出现“直接改代码更快”的实施冲动时，本轮明确提议交接 requirement-analysis，由用户决定是否转入。即使用户还没决定交付，也要先提出交接选择，不能将提议推迟到确认不变量、比较或选定方案之后；未获同意不自动交接。探索笔记沿已有保存授权，未授权不自动落盘。
</HARD-GATE>

## 受控 spike

问题必须明确且需要运行才能判断，用来解锁一个决策，不以交付正式功能为目的。授权遵循 [TDD 例外](../test-driven-development/SKILL.md) 的唯一清单与可追溯规则：同范围已授权直接复用，扩大问题/写入/资源范围先取得新授权。

创建或续写实验文件时，在顶部用注释记录本次要回答的问题，例如 `// 实验问题：<具体运行性问题>`；已有获准笔记记录该问题时可引用其位置。同范围授权复用后仍要完成问题记录，授权来源与实验问题分别说明。默认在问题附近使用名称含 spike/prototype 的独立文件；先查是否会被构建当生产内容消费，不能安全隔离则选择隔离位置或暂停，不要求所有实验都建 worktree。默认状态留内存；存储正是问题时使用获授权的独立 scratch/wipe-me 资源，不碰真实业务存储。跳过正式测试、打磨与抽象，只保留运行必需的处理。

持久资源按 [writing-plans 资源台账总则](../writing-plans/SKILL.md) 创建即登记、仅处置归属明确的授权资源；无计划时用对话记录，可随获准笔记保存，不创建 progress。复用资源保留/移交，台账外不清理。

持久资源读写或清理前，先核对最终解析的绝对路径确在本次授权位置；不能仅凭变量名或 wipe-me 字样推定归属。路径计算不符先停止并修正，不能试写未授权位置后再补登记。

收场给出问题、授权来源、文件/资源位置、实际命令或回执与观察、结论/未证实范围、保留或清理去向。运行失败不等于目标行为结论，不能把材料默认删除或直接纳入生产提交。交接 RA 只带结论与来源指针；验证过的决策表达按其 spec 模板窄范围呈现，正式实现仍走后续流程。

## 姿态

相关共享术语与历史决定按 [context-reuse.md](../requirement-analysis/references/context-reuse.md) 读取；保存遵循原授权。

**开场自我披露**：进入探索时先按 clarifying 核心纪律第 0 条披露三段（默认假设/关键信息缺口/易犯错误），再开始陪伴式探索。

- **好奇而非规定**——问题从对话中自然涌现，不照脚本提问
- **开支线而非审讯**——**非分岔不审讯**：日常探索保持发散、不逐题逼近；仅当浮现**关键分岔**（三条件同时满足：选项互斥、不可同时探、用户不裁决则探索无法继续）时，切入 clarifying 被引用模式跑一轮逐题澄清（选择题优先、推荐首位），用户裁决后回到发散（这与 requirement-analysis 阶段 3 的全程收敛刻意不同：那边已决定要做，这边还在成形）
- **可视化**——ASCII 图（架构草图、状态机、数据流、对比表、光谱图）能说清的就画出来；出现真正"看比说清楚"的视觉问题（界面布局、mockup 对比）时可按 visual-preview skill 的 JIT 规则提议
- **落地**——相关时读真实代码，不凭空理论化
- **随弯就弯、不催结论**——跟着有价值的支线走，让问题的形状自己浮现

## 你可能做的事（按用户带来什么而定）

- **探索问题空间**：追问自然涌现的疑点、挑战假设、重述问题、找类比
- **调查代码库**：画出与讨论相关的现有架构、找集成点、识别已有模式、暴露隐藏复杂度
- **对比方案**：铺开多个思路、列取舍表、被问到时给推荐
- **暴露风险与未知**：什么会出问题、理解上还有什么缺口、值得先做什么 spike

## 外部事实研究

核查第三方依赖、服务或标准的能力与版本时（包括本地离线材料），先实际读取 [external-resource-explorer.md](../../agents/external-resource-explorer.md) 的来源纪律，等待定义回执后才发起材料读取。这两步有依赖，不能把定义与研究材料放在同一批并行工具调用中。主线程直查和无后台能力时同样适用；不能只在派发子代理时才加载它。外部研究分类及派发要求以 [exploration-patterns.md](../requirement-analysis/references/exploration-patterns.md) 为准。

## 可选后台调研

独立有界的只读子题可委派后台调查，主线程继续不依赖结果的讨论；依赖该事实前必须回收并核对来源、覆盖与缺口。派发前先实际读取 [exploration-patterns.md](../requirement-analysis/references/exploration-patterns.md) 的定义加载与派发要求，插件根解析和失败接管也按该单点执行，外部来源纪律以 agents/external-resource-explorer.md 为准；非自动加载环境由派发路径要求先读取定义。只有根本没有合法的代理派发能力时，才直接由主线程按同一 reference 的定义读取要求接管。已有子题回报未完成、且仍能新派发时，先在原每次限制内做一次实质缩域的新派发；仍失败再接管。没有消息续接 API 不等于不能新派发，不能据此跳过这一次重试。缺口不伪造已完成。外部研究派发按该 reference 携带完整工具优先级和 CLI 实路径；离线限制另行说明，不能替代提醒。后台不能写实现、自动落盘笔记或代用户裁决。

## 你不必做的事

照脚本提问（关键分岔漏斗期除外）、每次问同样的问题、产出特定文档、得出结论、拒绝有价值的跑题、保持简短——探索就是思考时间；分岔漏斗也不产出文档或强制结论，它只收敛分岔本身。

## 探索产物（可选，先提议后落盘）

有价值的结论浮现时**提议**落盘（不要自动写）：`.spec-dev/explorations/<topic>.md`（与 spec/plan 同在项目根目录 `.spec-dev/` 下），结构从轻——问题、关键发现（含代码证据）、考察过的选项与取舍、已排除选项、未决问题；已排除项按 [context-reuse.md](../requirement-analysis/references/context-reuse.md) 记录概念、理由、来源与适用条件，和未决事项分开。探索出"这事不值得做"也是赢，同样值得记一笔。用户婉拒就只留在对话里。

## 三个出口（没有必需的结局）

1. **结晶 → 升级**：提议转正式设计不要求先回答关键问题或认可某个方案，方案比较是 requirement-analysis 的工作。用户同意交接后消费这次决定，不能要求先在 exploring 完成 RA 的方案选择门；用户未同意时继续探索。

   能精确陈述通往交付的关键问题（即使答案未知）时即可提议「要转成正式设计吗？」——用户同意则调用 requirement-analysis，探索结论（含已落盘的 explorations 文档）作为其阶段 1 输入，已探索过的部分阶段 2 不重做
2. **就此打住**：用户拿到了想要的清晰度，结束
3. **改天再聊**：落盘一份探索笔记（提议制），随时可续

收尾时可以（非必须）给一段小结：想清楚了什么问题、浮现了什么方向、还开着什么口子。

## 被实施流程调回时

executing-plans 执行中卡壳（契约级歧义、设计疑似有误）可切回探索模式想透子问题。想透后洞见按类型归位，再回去继续执行：

| 洞见类型 | 归位 |
|----------|------|
| 设计决策变了 | 修订 spec（须让用户 review 修订） |
| 范围变了 | 回 requirement-analysis 走对应阶段 |
| 冒出新任务 | 补进 plan（对齐任务结构） |
| 假设被推翻 | 修正对应文档并记录 |

## 与相邻 skill 的分界

| 用户意图 | 该用 |
|----------|------|
| "我在考虑要不要做 X / X 值得吗 / A 还是 B" | **exploring**（未承诺） |
| "给我们加 X 功能 / 设计 X" | requirement-analysis（已承诺交付） |
| "这个函数在哪 / 这段什么意思" | 都不用，直接回答 |
| "执行这份计划" | executing-plans |
| "修一下这个 bug / 改一下这个小地方"（已决定、无设计空间） | quick-fix |

## 环境兼容

Claude Code 与 Codex 通用：默认依赖只读调查与对话；spike 需要运行能力，可选后台需要实际可用的派发能力，缺失时按对应边界说明或降级。Codex 下提问以对话消息进行；探索中的深度推演可用 sequential-thinking skill（插件内嵌；不可用则直接在回复中分点推演并注明工具降级原因）。

## Red Flags

- agent 想“直接改代码最快”或开始写正式实现 → 停止越界并提议交接正式设计；不以改名 spike 绕过授权
- spike 没有问题/临时标记、开始打磨或扩大资源 → 回查授权和实验边界
- 用户催"直接做吧" → 提示结束探索、走 requirement-analysis（那里有自己的门）
- 在没有关键分岔时把探索变成一串审讯式提问（分岔漏斗完成后不回发散同罪） → 开支线，让用户挑方向
- 强行收敛出一个结论 → 可以没有结论，思考本身就是价值
- 未经提议就自动落盘探索笔记 → 先提议，用户决定

