mcpField
A
aif-explore

aif-explore

github.com/lee-to开发1.1k91 次安装今天更新
代码仓库

关于 aif-explore

aif-explore 是 AI Factory 技能,用于开放式探讨问题和调查代码库,但不实施修改。它可在常规模式保存研究笔记,或在 ultra 模式创建选定的研究资料包。

主要功能

  1. 01通过讨论探索问题
  2. 02检查代码和项目背景
  3. 03比较方案并梳理风险
  4. 04在常规模式保存研究笔记
  5. 05在 ultra 模式保存选定资料包

适用场景

  1. 01规划工作前调查代码库
  2. 02比较技术方案及其权衡
  3. 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.research
    • language.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:en
  • artifact_language:en
  • technical_terms_policy:keep
  • workflow.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 吗?”
  • 或者继续探索,不必急于正式规划
存在计划时

如果用户提到了计划,或者你发现计划与当前任务相关:

  1. 阅读现有计划以了解背景
    • 已解析的快速计划路径(快速模式)
    • <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 文件不属于计划背景。
  1. 在对话中自然地提及计划

    • “你的计划提到要添加 Redis,但我们刚发现 SQLite 更合适……”
    • “任务 3 将范围限定为高级用户,但我们现在在考虑面向所有用户……”
  2. 做出决定后,主动提出记录下来

    在常规模式下,将所有内容记录到已解析的研究路径中,以便 /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。”
  3. 常规模式下由用户决定——提出建议后继续,不要施加压力。当已解析的模式为超精简模式时,显式标记或配置的默认值已经表示用户要求记录。显式指定 regular 则会恢复保存提示。

持久化探索背景
研究一致性检查(所有持久化模式)

每当常规或 ultra 研究被保存或更新时,都要运行此检查。只从磁盘重新读取持久化范围:常规模式下已解析的 RESEARCH.md,或 ultra 模式下的 INDEX.md 及其 Artifact Index 链接。聊天记录和未存储的记忆都不作为证据。

在呈现保存结果或追加会话条目之前,请验证:

  1. 无需了解生成它的对话,也能理解 Active Summary。
  2. 它不会与持久化研究内容悄然矛盾;已被取代的结论须明确标出。
  3. 各项主张须区分来源证据、推断和未知信息。
  4. 每处不一致都要逐字引用受影响的摘要主张,以及与之冲突或对其加以限定的持久化段落;仅作断言不算调查结果。

修正或限定不一致之处,在 Open questions 中记录证据不足的情况,然后重新运行检查。仅在检查通过后才追加会话,并附上简短的通过说明;仅保存 Active Summary 的常规保存须运行检查,但不添加会话。

在条件允许时,将只读检查委派给全新上下文的子 Agent,并且只提供持久化路径和此检查内容。如果无法委派或委派失败,则直接运行检查;检查标准不变,绝不能跳过或延后检查。

Ultra 模式:自适应资料包

当已解析的模式为 ultra(由开头的 token 或 workflow.explore_mode: ultra 指定)时,请遵循 references/ULTRA-RESEARCH-FORMAT.md:

  1. 将有意义的主题转换为简洁的英文小写连字符 slug,并解析 <research_bundles_dir>/<slug>/。
  2. 如果该目录已存在,仅当 INDEX.md 含有完全匹配的标记时,才将其视为现有 ultra 资料包。重用语义匹配且带标记的资料包;绝不覆盖未带标记的同名目录。
  3. 写入前,根据 artifact 纳入矩阵评估实际证据。INDEX.md 和 RESEARCH.md 为必需文件。C4、ADR 和依赖关系图文件为条件性文件;简单主题只需包含两个文件。
  4. 创建资料包目录,使用旧版 Active Summary/Sessions 标记写入或更新 RESEARCH.md,然后仅写入或更新有充分依据的辅助 artifact。
  5. 最后写入 INDEX.md,确保其中的 Artifact Index 和阅读顺序与实际属于该资料包的文件一致。记录每个可选 artifact 存在的具体原因。
  6. 在追加当前会话条目之前,先运行研究一致性检查,再运行资料包完整性检查。不要生成占位内容、孤立文件、推测性图表或实现任务清单。

任何影响计划要求的 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 会恢复保存提示。
  • 要使用可视化 —— 一张好图胜过许多段落
  • 要探索代码库 —— 让讨论立足于实际情况
  • 要质疑假设 —— 包括用户的假设和你自己的假设

评论

支持 Markdown