SuperAPI AI 工具集

arch-discover

编程与开发

查看项目

更新于 10-16 10:57

技能介绍

用途

arch-discover 是一个用于发现既有项目中隐含架构的技能。它分析仓库的结构和代码,识别出那些在代码中实际生效、但从未被正式文档化的架构选择、模式、约定或权衡。每个发现会被转化为可供用户决策是否文档化的候选产物。

主要能力

技能将每个发现翻译为两类产物(完整的区分见 arch-manage 技能):

  • ADR:历史性决策,即为什么选择某个方案。每个相关的发现都会产生一个 ADR 候选。
  • 领域标准中的需求:代码当前遵循的持续规则,位于 docs/standards/。标准是宽泛的(整个技术或功能领域,如 Testing Standards、API Standards;是架构的一个方面,而非业务/DDD 领域),聚合多个需求;每个需求采用 RFC 2119/8174 措辞(MUST/SHOULD/MAY…)。如果一个发现是持续且可验证的规范,则在对应的领域标准中提出一个需求。可由用户选择创建的细粒度可验证单元——合规标准(CR-XXX)——由 arch-manage 在创建文档时提出;在发现阶段,只需提出需求及其规则。

示例:检测到「使用 PHPUnit 的单元测试」和「使用 Playwright 的 e2e 测试」是两个决策(两个 ADR),但只是同一个 Testing Standards 领域标准下的两个需求(「Unit testing」、「E2E testing」)。而检测到「曾从 Webpack 迁移到 Vite」是一个历史性决策(没有合规标准的 ADR):不存在需要遵循的持续规范,只是一个事实。

输出是一个按优先级排序的候选列表,需求按领域标准分组。用户决定哪些需要文档化;随后技能为每个已批准项调用 arch-manage,由其创建 ADR,并在适用时向领域标准添加需求。该技能是自包含的:被调用时(直接调用或作为子代理从其他技能调用,例如 arch-init),会运行完其五个阶段直至结束,包括创建已批准的产物。

使用方式

该技能分为五个阶段:

  1. 阶段 1 — 初始定位:在检查之前确定范围,解析架构根(<raíz-arq>),列出嵌套仓库;读取 AGENTS.md(技术栈部分)和 .agents/MEMORY.md;读取 docs/adr/ 和 docs/standards/ 以列出已有文档,避免重复候选。
  2. 阶段 2 — 项目检查:按顺序探索并累积信号——文件夹结构、依赖清单(Node/Python/JVM/.NET/Rust/Go 等生态的清单文件)、源代码中的架构模式、已有产物。
  3. 阶段 3 — 候选识别:对每个发现的信号,按照包含/排除标准评估是否值得文档化;将每个候选分类为「决策 + 需求」或「仅决策(ADR)」;并按典型类别/领域分组。
  4. 阶段 4 — 候选呈现:以按优先级(🔴 高 / 🟡 中 / ⚪ 低)分组的列表向用户展示,并标明每个需求会贡献到哪个领域标准;最后通过结构化提问工具询问要文档化哪些。
  5. 阶段 5 — 创建已批准的产物:为每个已批准候选调用 arch-manage,传入建议标题、发现的证据、推断的决策、需求陈述与领域标准、隐含的替代方案、整个批次统一商定的决策者,以及阶段 1 解析的架构根。

适用场景

  • 入手一个既有项目,希望梳理其隐含架构决策和生效约定。
  • 需要为未文档化的技术选型、模式或权衡补建 ADR。
  • 需要从代码中提取持续可验证的规范,归入领域标准。
  • 作为其他技能(如 arch-init)的子代理被调用。

限制

  • 一次运行只覆盖一个架构根:不混合主仓库与子模块的发现,也不把文档写错根;要覆盖另一个根需另起一次运行。
  • 不编造决策或规则:证据含糊时会注明不确定性并标为低优先级。
  • 不提出琐碎文档:例如「我们使用 Git」不构成 ADR。
  • 不重复工作:若已有 ADR 或标准需求覆盖该发现,则忽略该候选。
  • 需区分决策与规则,并按领域分组;同一领域的多个需求合并到一个标准。
  • 质量优先于数量。
  • 不向用户叙述内部流程。
  • 执行前必须读取 ${PLUGIN_ROOT}/references/language.md 和 ${PLUGIN_ROOT}/references/linking.md。