SuperAPI AI 工具集

architecture-research

编程与开发

查看项目

更新于 10-16 04:02

技能介绍

用途

Architecture Research 用于研究一个代码库或系统的架构,帮助用户理解仓库或系统是如何被构建和组织的,并产出结构图、数据流图以及对设计决策的说明。

触发场景

当用户想要:

  • 理解某个仓库或系统是如何架构的
  • 获取代码库结构或数据流的图示
  • 理解项目中的设计决策与取舍

主要能力与工作流程

1. 阅读源码

克隆或浏览仓库,阅读真实代码——模块结构、入口点、关键抽象,而不是仅依赖 README。重点关注:

  • 目录结构与模块边界
  • 入口点与公开 API
  • 数据模型与存储
  • 配置与依赖注入模式
  • 构建/部署设置

2. 寻找外部背景

搜索官方文档、博客文章、会议演讲、设计文档、ADR 和社区讨论,以解释架构背后的“为什么”。引用找到的内容;如果是在推断理由(没有来源),需明确说明。

3. 从多个角度解释

至少覆盖以下视角:

角度 展示内容
系统概览 主要组件及其连接方式
数据/控制流 关键操作(如一次请求、构建、部署)中发生了什么
设计决策 他们选择了什么、显而易见的替代方案,以及为什么

4. 生成 ELK 图(并渲染为 SVG)

为每个主要视角生成一个 ELK JSON 图(elkjs 格式),再渲染为 SVG,以便在 markdown 中内联显示。

ELK JSON 结构示例:

{
  "id": "root",
  "layoutOptions": {
    "elk.algorithm": "layered",
    "elk.direction": "DOWN",
    "elk.spacing.nodeNode": "40"
  },
  "children": [
    { "id": "node1", "width": 150, "height": 60, "labels": [{ "text": "Component A" }] }
  ],
  "edges": [
    { "id": "e1", "sources": ["node1"], "targets": ["node2"], "labels": [{ "text": "calls" }] }
  ]
}

渲染为 SVG:该技能使用 diagrams 技能进行渲染,如未安装需先安装:

clawhub install diagrams

然后使用 diagrams 技能的渲染器将 ELK JSON 渲染为 SVG:

# 单个文件
node <diagrams-skill-dir>/scripts/render-elk.mjs diagram.json output.svg

# 批量:文件夹中所有 .json 文件 → svg/ 子文件夹
node <diagrams-skill-dir>/scripts/render-elk.mjs --dir <folder>

# 批量 + PNG(仅 macOS)
node <diagrams-skill-dir>/scripts/render-elk.mjs --dir <folder> --png

将 <diagrams-skill-dir> 替换为已安装的 diagrams 技能目录路径。注意:elkjs 必须安装在运行脚本的本地环境中,完整设置见 diagrams 技能的 SKILL.md。

每张图的工作流程:

  1. 将 ELK JSON 写入研究文件夹中的 .json 文件
  2. 渲染:node <diagrams-skill-dir>/scripts/render-elk.mjs diagram.json diagram.svg
  3. 在 markdown 文档中嵌入:![System Overview](system-overview.svg)
  4. 在研究文件夹中同时保留 .json(真实来源)和 .svg(渲染结果)

技巧:

  • 流/依赖图使用 elk.algorithm: "layered"
  • 对等关系图使用 elk.algorithm: "force"
  • 使用复合节点(父节点内嵌子节点)对相关节点进行分组
  • 用关系为边添加标签(calls、imports、emits、reads 等)
  • 每张图节点数控制在约 20 个以内,必要时拆分为多张

5. 输出

创建一个研究文件夹和 markdown 文档:

<output-dir>/<repo-slug>-architecture/
├── prompt.md          # 原始问题
├── architecture.md    # 交付物
├── *.json             # ELK JSON 源文件(可编辑)
└── *.svg              # 渲染后的 SVG 图(嵌入 architecture.md)

将输出放在适合工作区的位置(例如 research/ 目录)。

architecture.md 格式:

# [Repo Name] — Architecture

**Repo:** <url>
**Researched:** <date>

## Overview
<1-2 段总结这是什么东西以及它是如何构建的>

## System Diagram
![System Overview](system-overview.svg)
<文字说明>

## Data/Control Flow
<选择一个关键操作,逐步说明>
![Request Flow](request-flow.svg)

## Design Decisions

| Decision | Alternative | Rationale | Source |
|----------|------------|-----------|--------|
| ... | ... | ... | link 或 "inferred" |

## Key Abstractions
<让系统运转的核心类型/接口/模式>

## Sources
<上文引用的文档、文章、演讲链接>

6. 交付

在聊天中发送简要总结(L2 — 75-150 词)并附上关键发现,附上或链接完整文档,如需要可提供 PDF 导出。

适用场景

  • 用户需要理解某个仓库或系统的整体架构
  • 用户需要代码库结构或数据流图
  • 用户需要理解项目中的设计决策与取舍
  • 大型仓库的架构梳理(建议先聚焦架构骨架,再按需深入特定子系统)

限制与注意事项

  • 不要编造内容。如果找不到某个决策的原因,请标注“inferred”或“no source found”。
  • Excalidraw:如果用户要求 Excalidraw 输出而非 ELK,可以尝试,但 ELK JSON 是默认格式。
  • Mermaid 回退:如果用户的工具链无法渲染 ELK,可提供 Mermaid 作为回退方案。
  • 范围控制:对大型仓库,先聚焦架构骨架,可按请求提供深入特定子系统的选项。