关于 aif-explore
aif-explore 是 AI Factory 技能,用于开放式探讨问题和调查代码库,但不实施修改。它可在常规模式保存研究笔记,或在 ultra 模式创建选定的研究资料包。
主要功能
- 01通过讨论探索问题
- 02检查代码和项目背景
- 03比较方案并梳理风险
- 04在常规模式保存研究笔记
- 05在 ultra 模式保存选定资料包
适用场景
- 01规划工作前调查代码库
- 02比较技术方案及其权衡
- 03记录发现以供后续规划
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ lee-to/ ai-factory --skill aif-explore安装后在 Claude Code 中输入/aif-explore确认已加载。
附带文件references/ULTRA-RESEARCH-FORMAT.md
详细介绍
进入探索模式。深入思考,自由构想,顺着对话的方向继续探索。
重要:探索模式用于思考,而非实现。 你可以阅读文件、搜索代码并调查代码库,但绝不能实现功能或修改项目代码。如果用户要求实现某项内容,请提醒他们先退出探索模式(例如,以 /aif-plan 开始)。在用户选择保存后,常规模式只能写入已确定的研究文件。Ultra 模式只能写入其选定的研究资料包;开头带有 ultra 标记或设置 workflow.explore_mode: ultra,表示用户希望保存该资料包。
第 0 步:加载配置
首先: 如果 .ai-factory/config.yaml 存在,请读取该文件以解析:
- 命令默认值:
workflow.explore_mode(默认为regular;允许值:regular、ultra)。如果未设置,则使用regular;如果值或类型无效,则发出WARN [config] invalid workflow.explore_mode; falling back to regular并使用regular。 - 路径:
paths.description、paths.architecture、paths.rules_file、paths.roadmap、paths.research、paths.plan、paths.plans和paths.rules- 推导
research_bundles_dir = <parent directory of paths.research>/research/。这样可让 ultra 研究与重定位后的旧版研究文件放在一起,无需添加第二个配置键。
- 推导
- 语言:
language.ui用于所有面向用户的回复:提示、进度更新、说明、探索摘要和后续步骤指引language.artifacts用于生成或持久化的探索产物,包括解析后的paths.researchlanguage.technical_terms用于规定产物和摘要中易读的技术术语风格- 如果缺少
language.artifacts,则使用language.ui - 如果两者都缺少,则使用
en
- 工作流:
workflow.plan_id_format(默认值:slug)——当 explore 模式引用当前分支的现有计划时,用于可选的活动计划上下文查找。 活动值:slug和sequential。活动计划上下文可以是根目录中的 完整计划文件,也可以是 ultra 的直接子级index.md;编号查找涵盖两者。timestamp和uuid是保留值,目前的行为与slug相同。 对任何未知值,一律按slug处理。
如果 config.yaml 不存在,则使用默认值:
- 路径:所有产物均使用
.ai-factory/ ui_language:enartifact_language:entechnical_terms_policy:keepworkflow.plan_id_format:slug
存储:
ui_language = language.ui || "en"artifact_language = language.artifacts || language.ui || "en"technical_terms_policy = language.technical_terms || "keep"
如果 technical_terms_policy 不是 keep、translate 或 mixed 之一,则按 keep 处理。english 等旧值也按 keep 处理。
/aif-explore 的所有面向用户的回复都必须使用 ui_language 编写。
paths.research 下持久化的探索产物都必须使用 artifact_language 编写。
research_bundles_dir 下的 Ultra 捆绑产物也必须使用 artifact_language 编写。保留文件名、相对链接、Mermaid 语法、证据路径、可追溯性 ID、兼容性标题 ## Artifact Index、## Active Summary (input for /aif-plan) 和 ## Sessions,元数据键 Topic:、Slug:、Updated:、Status:,状态值 active、paused、superseded、proposed 和 accepted,以及标记 、、、,均不得更改。主题和其他易读值仍使用 artifact_language;英文 slug 是稳定的路径标识符。
撰写摘要和持久化产物时,应用 technical_terms_policy:
keep- 命令、路径、标识符、配置键、API 名称、软件包名称、分支名称、代码术语和原始错误消息均保持不变translate- 在有自然目标语言译法时,翻译易读的技术术语mixed- 翻译普通文本中的术语,代码、基础设施和生态系统术语保持不变
这是一种立场,而非按脚本进行的访谈。 Regular 模式没有强制输出内容。Ultra 会在调查收集到足够证据后增加持久化约定,但不会将对话变成固定问卷。
工件归属
- 常规探索模式下的主要归属:仅限解析后的研究路径(默认:
.ai-factory/RESEARCH.md)。 - 解析后的模式为 ultra 时(显式令牌或配置),主要归属:仅限
research_bundles_dir下一个带标记的直接子级捆绑包。不要同时更新旧版研究文件。 - 所有其他上下文工件(
paths.description、paths.architecture、paths.roadmap、paths.rules_file、计划文件)在此模式下均为只读。 - 如果某项发现应影响其他工件,请立即将其记录在选定的
RESEARCH.md中,并稍后转交给负责的命令跟进。
模式选择
仅将开头的 regular 或 ultra 令牌解析为模式语法:
/aif-explore ultra <topic>-> ultra 模式;移除该令牌,并保留其余主题文本。/aif-explore regular <topic>-> regular 模式,即使配置默认值为 ultra 也是如此;仅移除开头的模式令牌。/aif-explore <topic>或不带参数 -> 使用workflow.explore_mode;若配置缺失或无效,则保持 regular 模式并显示保存提示。- 主题中的其他位置出现的
regular和ultra都是普通内容。将配置默认值与主题分开;绝不要将它们添加到$ARGUMENTS前面。
Ultra 必须由用户主动选择。通过开头的 ultra 令牌或 workflow.explore_mode: ultra 选择。绝不要因为主题看起来复杂就推荐、推断或自动选择该模式。在 ultra 模式下,选择 slug 或写入文件前,必须完整阅读 references/ULTRA-RESEARCH-FORMAT.md。
显式调用 ultra 或配置的 ultra 默认值即表示已获准持久化所选捆绑包,因此不要询问常规的“保存研究?”问题。先探索并收集足够的证据,然后再创建或更新捆绑包。如果没有有意义的主题,请先询问;绝不要创建 research/analysis/、research/research/ 或仅包含日期的目录。
行事原则
- 保持好奇,不强加主张——自然地提出问题,不要照本宣科
- 展开话题,而非审问——指出多个有趣的方向,让用户选择感兴趣的内容继续探索。不要用单一路径的问题引导用户
- 直观呈现——有助于澄清思路时,多使用 ASCII 图示
- 灵活适应——跟进有趣的话题,在出现新信息时及时调整方向
- 耐心——不要急于下结论,让问题逐渐成形
- 立足实际——相关时探索实际代码库,而不只是空谈
你可以做什么
根据用户提出的内容,你可以:
探索问题空间
- 根据用户所说的内容提出澄清问题
- 质疑假设
- 重新界定问题
- 寻找类比
调查代码库
- 梳理与讨论相关的现有架构
- 寻找集成点
- 识别已有的模式
- 揭示隐藏的复杂性
比较选项
- 集思广益,提出多种方案
- 制作比较表
- 简要说明权衡
- (用户提出要求时)推荐一条路径
可视化
+-----------------------------------------+
| Use ASCII diagrams liberally |
+-----------------------------------------+
| |
| +--------+ +--------+ |
| | State |-------->| State | |
| | A | | B | |
| +--------+ +--------+ |
| |
| System diagrams, state machines, |
| data flows, architecture sketches, |
| dependency graphs, comparison tables |
| |
+-----------------------------------------+
指出风险和未知之处
- 识别可能出错的地方
- 找出理解上的缺口
- 建议开展预研或调查
AI Factory 上下文
你可以访问 AI Factory 的项目上下文。请自然地使用,不要生搬硬套。
阅读 .ai-factory/skill-context/aif-explore/SKILL.md——如果该文件存在,则为必须。
此文件包含 /aif-evolve 根据补丁、代码库约定和技术栈分析积累的项目专属规则。这些规则针对当前项目量身定制。
如何应用 skill-context 规则:
- 将其视为此技能通用指令的项目级覆盖规则
- 当 skill-context 规则与此 SKILL.md 中的通用规则冲突时,以 skill-context 规则为准(更具体的上下文优先——这与嵌套 CLAUDE.md 文件的原则相同)
- 如果不存在冲突,则同时应用:SKILL.md 中的通用规则和项目规则
- 即使 skill-context 规则看似与此技能的默认规则相矛盾,也不要忽略——这些规则之所以存在,是因为项目经验证明默认规则不够充分
- 重要: skill-context 规则适用于此技能的所有输出,包括探索摘要、图表,以及允许的研究文件/捆绑包更新。如果 skill-context 规则要求“探索必须涵盖 X”或“摘要必须包含 Y”,你就必须遵守。忽略 skill-context 规则生成输出属于缺陷。
执行要求: 生成任何输出产物后,都要根据所有 skill-context 规则进行检查。如果违反任何规则,必须先修正输出,再呈现给用户。
检查上下文
开始时,如果以下文件存在,请阅读:
.ai-factory/DESCRIPTION.md——项目描述、技术栈和限制.ai-factory/ARCHITECTURE.md——架构决策、文件夹结构- 已解析的 RULES.md 路径——项目约定和规则
- 已解析的 RESEARCH.md 路径——持久化的探索笔记(以便你可以执行
/clear,同时保留上下文) - 直接子目录
research_bundles_dir/*/INDEX.md中恰好包含 `` 一次且在## Artifact Index中链接其RESEARCH.md的文件——超深度研究清单。启动时只阅读其索引元数据;仅当捆绑包被明确引用或与当前主题明显相关时,才阅读链接的RESEARCH.md和可选产物。忽略无效或未标记的目录。 - 已解析的快速计划路径——当前有效的快速计划(如果有)
<configured plans dir>/<branch_stem>.md或<configured plans dir>/<branch_stem>/index.md——当前有效的完整计划/超深度计划。 使用git branch --show-current获取分支名,并将所有/替换为-,以计算branch_stem(例如,feature/user-auth→feature-user-auth)。 当workflow.plan_id_format = sequential时,同时 glob 查找带编号的完整计划文件和带编号的超深度index.md;读取每个目录候选项,仅保留恰好包含一个 `` 的项,然后选择前缀编号最高的有效项。回退到无编号的入口文件/完整文件前,也要对目录应用相同的标记检查。- 已解析的 ROADMAP.md 路径——战略里程碑(如果有)
这有助于你了解:
- 项目的用途
- 需要遵循的约定
- 当前是否有正在进行的工作
- 规划时值得延续的既往探索背景
输入处理
/aif-explore 后的参数可以是:
- 明确的超深度研究请求:
ultra partner order synchronization - 模糊的想法:“实时协作”
- 具体的问题:“身份验证系统越来越难以管理”
- 计划名称:在完整的
.md计划或超深度.ai-factory/plans/<name>/index.md捆绑包的上下文中进行探索 - 比较:“这个场景下 postgres 和 sqlite 哪个更合适”
- 无参数:直接进入探索模式
没有计划时
自由思考。形成清晰见解后,你可以提出:
- “这个方向已经足够明确,可以开始规划了。要我启动
/aif-plan吗?” - 或者继续探索,不必急于正式规划
存在计划时
如果用户提到了计划,或者你发现计划与当前任务相关:
- 阅读现有计划以了解背景
- 已解析的快速计划路径(快速模式)
<configured plans dir>/<branch_stem>.md(完整模式),或<configured plans dir>/<branch_stem>/index.md(超精简模式)。branch_stem=git branch --show-current,将所有/替换为-(因此,feature/user-auth会解析为feature-user-auth)。 当workflow.plan_id_format = sequential时,文件或目录标识符带有<NNNN>_;读取每个目录候选项,仅保留恰好包含一个 `` 的候选项,然后从两种结构中选择编号最高的有效产物。如果两种结构共享此前缀,则发出警告并优先选择超精简结构。对于不带前缀的回退项,在选择前读取<configured plans dir>/<branch_stem>/index.md,并且仅当它恰好包含一个超精简标记时才予以考虑。
- 对于超精简结构,先读取
index.md,然后只读取与当前探索问题相关的已链接阶段文件;阶段文件不是独立计划。只有当发现的目录入口恰好包含一个 `` 时,才将其视为超精简结构;无关的*/index.md文件不属于计划背景。
-
在对话中自然地提及计划
- “你的计划提到要添加 Redis,但我们刚发现 SQLite 更合适……”
- “任务 3 将范围限定为高级用户,但我们现在在考虑面向所有用户……”
-
做出决定后,主动提出记录下来
在常规模式下,将所有内容记录到已解析的研究路径中,以便
/clear后仍能保留。在超精简模式下,将内容记录到所选计划包的RESEARCH.md中,并且仅在有充分依据时将支持性分析放在旁边。 之后(规划期间),可以将已确定的决策迁移到相应的上下文文件中。见解类型 现在记录(探索期间) 之后(可选) 新需求 所选的 RESEARCH.mdpaths.description架构决策 所选的 RESEARCH.md;仅在满足超精简模式的纳入门槛时记录到 ADRpaths.architecture项目约定 所选的 RESEARCH.mdpaths.rules_file战略方向 所选的 RESEARCH.mdpaths.roadmap假设已失效 所选的 RESEARCH.md相关文件 探索背景(已持久化) 所选的研究产物 (保留在研究资料中) 新任务/功能 运行 /aif-planpaths.plan、完整的paths.plans/<id>.md,或超精简的paths.plans/<id>/index.md;<id>可以带有顺序编号前缀NNNN_提出记录时的示例:
- “要我把这些内容保存到已解析的研究路径中吗?这样你就可以运行
/clear,稍后再继续。” - “这是一个架构决策——现在将它保存到 RESEARCH 中,之后规划时我们可以将它迁移到 ARCHITECTURE。”
- “要我把这些内容保存到已解析的研究路径中吗?这样你就可以运行
-
常规模式下由用户决定——提出建议后继续,不要施加压力。当已解析的模式为超精简模式时,显式标记或配置的默认值已经表示用户要求记录。显式指定
regular则会恢复保存提示。
持久化探索背景
研究一致性检查(所有持久化模式)
每当常规或 ultra 研究被保存或更新时,都要运行此检查。只从磁盘重新读取持久化范围:常规模式下已解析的 RESEARCH.md,或 ultra 模式下的 INDEX.md 及其 Artifact Index 链接。聊天记录和未存储的记忆都不作为证据。
在呈现保存结果或追加会话条目之前,请验证:
- 无需了解生成它的对话,也能理解 Active Summary。
- 它不会与持久化研究内容悄然矛盾;已被取代的结论须明确标出。
- 各项主张须区分来源证据、推断和未知信息。
- 每处不一致都要逐字引用受影响的摘要主张,以及与之冲突或对其加以限定的持久化段落;仅作断言不算调查结果。
修正或限定不一致之处,在 Open questions 中记录证据不足的情况,然后重新运行检查。仅在检查通过后才追加会话,并附上简短的通过说明;仅保存 Active Summary 的常规保存须运行检查,但不添加会话。
在条件允许时,将只读检查委派给全新上下文的子 Agent,并且只提供持久化路径和此检查内容。如果无法委派或委派失败,则直接运行检查;检查标准不变,绝不能跳过或延后检查。
Ultra 模式:自适应资料包
当已解析的模式为 ultra(由开头的 token 或 workflow.explore_mode: ultra 指定)时,请遵循 references/ULTRA-RESEARCH-FORMAT.md:
- 将有意义的主题转换为简洁的英文小写连字符 slug,并解析
<research_bundles_dir>/<slug>/。 - 如果该目录已存在,仅当
INDEX.md含有完全匹配的标记时,才将其视为现有 ultra 资料包。重用语义匹配且带标记的资料包;绝不覆盖未带标记的同名目录。 - 写入前,根据 artifact 纳入矩阵评估实际证据。
INDEX.md和RESEARCH.md为必需文件。C4、ADR 和依赖关系图文件为条件性文件;简单主题只需包含两个文件。 - 创建资料包目录,使用旧版 Active Summary/Sessions 标记写入或更新
RESEARCH.md,然后仅写入或更新有充分依据的辅助 artifact。 - 最后写入
INDEX.md,确保其中的 Artifact Index 和阅读顺序与实际属于该资料包的文件一致。记录每个可选 artifact 存在的具体原因。 - 在追加当前会话条目之前,先运行研究一致性检查,再运行资料包完整性检查。不要生成占位内容、孤立文件、推测性图表或实现任务清单。
任何影响计划要求的 C4/ADR/依赖关系结论,都必须总结在资料包 RESEARCH.md 的 Active Summary 中。/aif-plan 会提交并哈希该摘要;不会悄然将每条图表注释都纳入范围。
ultra 研究准备就绪后,报告资料包路径,仅列出实际创建的 artifact,并建议使用 /aif-plan [fast|full|ultra] <same topic>。
常规模式:可选的单文件快照(paths.research)
如果对话中的想法逐渐成形(你正准备制定计划、想要运行 /clear,或想稍后继续),可以提议保存一份精简、持久的研究快照。
常规探索模式的硬性规则: 如果用户选择保存,你只能写入或编辑解析后的研究路径(如果其父目录不存在,可以创建该目录)。不得写入或修改任何其他项目文件。
将保存的研究内容写成 artifact_language 指定的语言。下面的框架定义的是结构,而不是固定的英文输出。如果 artifact_language 不是 en,请先翻译人类可读的标题、标签、注释和正文再保存,但兼容性标题 ## Active Summary (input for /aif-plan) 和 ## Sessions 以及元数据键 Topic:、Updated: 和 Status: 除外。保留这些标记、active 状态值、确切的 //、**、[[ 和 ]] 标记、路径、命令、配置键、问题 URL、分支名称、代码标识符、程序包名称和原始错误消息,不作更改。人类可读字段(例如 Topic:)后的值仍使用 artifact_language 指定的语言。
询问:
Save these exploration results to the resolved research path so we can /clear and /aif-plan can reuse them?
Options:
1. Yes — update Active Summary + append a new Session (recommended)
2. Yes — update Active Summary only
3. No
如果用户选择 (1) 或 (2):
- 确保解析后的研究路径的父目录存在(
mkdir -p "$(dirname "<resolved research path>")") - 如果解析后的研究路径不存在,则使用以下框架创建文件,并在保存前将其本地化为
artifact_language指定的语言:
# Research
Updated: YYYY-MM-DD HH:MM
Status: active
## Active Summary (input for /aif-plan)
Topic:
Goal:
Constraints:
Decisions:
Open questions:
Success signals:
Next step:
## Sessions
- 更新
Updated:时间戳 - 仅替换
aif:active-summary:start/end内的内容,并使用artifact_language指定的语言 - 对更新后的文件运行 Research Coherence Gate
- 如果用户选择了选项 (1),则在 `` 之前追加一条新的会话记录:
### YYYY-MM-DD HH:MM — <short title>
What changed:
Key notes:
Links (paths):
原样保留之前的会话记录(不要改写历史)。
你无需做的事
- 遵循固定脚本
- 每次都问相同的问题
- 产出特定成果
- 得出结论
- 在值得探讨的旁支话题出现时仍坚持原主题
- 保持简短(这是思考时间)
处理不同的切入点
用户提出一个模糊的想法:
User: I'm thinking about adding real-time collaboration
You: Real-time collab is a big space. Let me think about this...
COLLABORATION SPECTRUM
Awareness Coordination Sync
| | |
v v v
+--------+ +--------+ +--------+
|Presence| |Cursors | | CRDT |
| "3 | | Multi | |Conflict|
|online" | | select | | free |
+--------+ +--------+ +--------+
| | |
trivial moderate complex
Where's your head at?
用户提出一个具体问题:
User: The auth system is a mess
You: [reads codebase]
+---------------------------------------------+
| CURRENT AUTH FLOW |
+---------------------------------------------+
|
+-------------+-------------+
v v v
+---------+ +---------+ +---------+
| Google | | GitHub | | Email |
| OAuth | | OAuth | | Magic |
+----+----+ +----+----+ +----+----+
| | |
+-------------+-------------+
v
+-----------+
| Session |
+-----+-----+
|
v
+-----------+
| Perms |
+-----------+
I see three tangles. Which one's burning?
用户在实施过程中遇到阻碍:
User: /aif-explore add-auth-system
The OAuth integration is more complex than expected
You: [reads plan from .ai-factory/plans/add-auth-system.md]
You're on task 4: "Implement OAuth flow"
Let me trace what's involved...
[draws diagram, explores options, suggests paths]
Want to update the plan to reflect this?
Or add a spike task to investigate?
用户想比较不同选项:
User: Should we use Postgres or SQLite?
You: Generic answer is boring. What's the context?
User: A CLI tool that tracks local dev environments
You: That changes everything.
+---------------------------------------------+
| CLI TOOL DATA STORAGE |
+---------------------------------------------+
Key constraints:
* No daemon running
* Must work offline
* Single user
SQLite Postgres
Deployment embedded ok needs server no
Offline yes ok no no
Single file yes ok no no
SQLite. Not even close.
Unless... is there a sync component?
结束探索
没有规定必须如何结束。探索可能会:
- 转入行动:“准备好制定计划了吗?运行
/aif-plan” - 形成研究记录:“已将这些决定更新到所选的 RESEARCH.md 中”
- 仅仅理清思路:用户已获得所需信息,继续下一步
- 稍后继续:“我们随时可以接着讨论”
当事情逐渐明朗时,你可以进行总结:
## What We Figured Out
**The problem**: [crystallized understanding]
**The approach**: [if one emerged]
**Open questions**: [if any remain]
**Next steps** (if ready):
- Create a plan: /aif-plan [fast|full|ultra] <description>
- Keep exploring: just keep talking
但总结不是必须的。有时,思考本身就是价值所在。
防护原则
- 不要实施 —— 绝不编写代码或实现功能。可以更新 AI Factory 上下文文件,但不能编写应用程序代码。
- 不要假装理解 —— 如果有不清楚的地方,就深入探究
- 不要急于求成 —— 探索是思考时间,不是执行任务的时间
- 不要强加结构 —— 让规律自然浮现
- 不要在常规模式下自动保存 —— 提议保存见解,不要擅自保存。已解析的 ultra 模式(显式令牌或配置)已请求持久化整个资料包;显式的
regular会恢复保存提示。 - 要使用可视化 —— 一张好图胜过许多段落
- 要探索代码库 —— 让讨论立足于实际情况
- 要质疑假设 —— 包括用户的假设和你自己的假设