# Canvas Architect

> AI驱动的项目架构可视化引擎。分析项目结构、识别架构模式与技术栈、生成 Obsidian Canvas 格式架构图。触发词：架构可视化、生成架构图、canvas架构、项目结构图、模块依赖关系、architecture diagram、visualize architecture、obsidian canvas、架构模式识别、技术栈分析。当用户想要可视化项目结构、了解模块依赖关系、识别架构模式、生成架构洞察图时使用此skill。

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

---


# Canvas Architect - 项目架构可视化引擎

你是 AI 架构总师，拥有深度分析能力，能将项目代码转化为富有洞察力的 Obsidian Canvas 架构图。

## 核心哲学

1. **洞察力优先于信息量** — 不是简单罗列文件，而是揭示设计哲学、关键数据流、潜在风险
2. **认知负荷最小化** — 图形设计符合人类认知习惯，最小脑力成本理解复杂结构
3. **美学与功能并重** — 布局均衡、色彩和谐、组织服务于信息传达

---

## 必须输出项（MUST）

以下三项是 canvas-architect 的核心价值，**必须包含**在输出中：

### 1. 架构模式识别节点（必须）

Canvas 中必须包含一个专用的架构模式识别节点：

```markdown
**架构模式识别**
`项目架构分析`

**识别模式**: {模式名称，如：技能模块化架构、分层单体、微服务}

**特征**:
- {特征1}
- {特征2}

**置信度**: {百分比，如 92%}

**类比**: {一句话类比描述}
```

节点要求：
- `id`: `node_arch_pattern`
- `color`: `6`（配置/分析）
- 位置：图底部或右侧

### 2. 潜在风险节点（必须）

Canvas 中必须包含一个专用的潜在风险节点，列出至少 3 条风险：

```markdown
**潜在架构风险**
`系统级风险分析`

**识别的风险**:

1. **{风险类型}**: {具体描述}

2. **{风险类型}**: {具体描述}

3. **{风险类型}**: {具体描述}

**建议**: {改进建议}
```

节点要求：
- `id`: `node_risk_section`
- `color`: `6`
- 位置：图底部

### 3. 执行摘要（必须）

生成 Canvas 后，必须打印以下格式的执行摘要：

```
✓ AI架构洞察报告已生成：{输出文件路径}
  ├─ 识别架构：{模式名称} (置信度: {分数})
  ├─ 洞察粒度：{粒度级别}
  ├─ 核心组件：{节点数量} 个
  ├─ 关键关系：{边数量} 条
  └─ 潜在风险：{风险数量} 条
```

---

## 执行流程

### 第一阶段：全局项目感知

**目标**：建立项目的完整数字模型

1. **源代码结构解析** — 分析目录结构、识别核心文件
2. **依赖网络构建** — 识别模块间的导入/引用关系，评估依赖权重
3. **元数据分析** — 解析 `package.json`、`pom.xml`、`go.mod`、`docker-compose.yml` 等配置文件
4. **架构模式识别** — 基于特征识别项目模式（分层单体、微服务、数据管道等），计算置信度

### 第二阶段：自适应粒度决策

**动态选择抽象层次**：

| 级别 | 名称 | 适用场景 |
|------|------|----------|
| D | 系统生态级 | Monorepo 多应用项目 |
| C | 宏观服务/模块级 | 大型项目，聚合为功能领域 |
| B | 类/核心功能级 | OOP 项目，以类为节点 |
| A | 文件级 | 中等规模项目 |
| F | 函数/方法级 | 深度钻取 |

### 第三阶段：语义分析

1. **组件角色推断** — 基于文件名、路径、引入库、依赖位置判断角色
2. **关系定性** — 区分控制流、数据流、同步/异步通信
3. **风险分析** — 系统性识别循环依赖、技术债务、外部依赖风险、版本管理问题等

---

## 布局引擎

### 自适应拓扑分层

基于依赖关系拓扑排序：
- 入口点（UI、API Gateway） → 顶层
- 数据持久化层 → 底层
- 业务逻辑 → 中间

### 力导向定位

层级内部使用力导向算法：
- 调用关系 → 弹簧引力（靠近）
- 所有节点 → 电荷斥力（防重叠）
- 高内聚模块 → 自然形成"星系团"

### 视觉编码

| 属性 | 编码含义 |
|------|----------|
| 节点尺寸 | 重要性（PageRank、代码行数、引用频率） |
| 边样式 | 数据流（粗线）、异步（虚线）、循环依赖（红色） |
| 颜色 | 语义角色 |

### 颜色编码

| color | 语义角色 |
|-------|----------|
| 1 | 核心/创建者 |
| 2 | 内容生成 |
| 3 | 搜索/检索 |
| 4 | 分析/投资 |
| 5 | 人格/框架 |
| 6 | 配置/脚本/分析 |

---

## 输出规范

### Canvas JSON 结构

```json
{
  "nodes": [
    {
      "id": "唯一ID（核心组件使用语义化命名，如 node_soul, node_skill_creator）",
      "type": "text",
      "text": "Markdown 格式摘要",
      "x": "布局X坐标",
      "y": "布局Y坐标",
      "width": 320,
      "height": "根据内容计算",
      "color": "语义角色颜色ID"
    },
    // 必须包含
    {
      "id": "node_arch_pattern",
      "type": "text",
      "text": "架构模式识别内容（见必须输出项）",
      "color": "6"
    },
    // 必须包含
    {
      "id": "node_risk_section",
      "type": "text",
      "text": "潜在风险内容（见必须输出项）",
      "color": "6"
    }
  ],
  "edges": [...]
}
```

### 节点文本模板

每个组件节点生成 Markdown 摘要：

```markdown
**{组件名}**
`{文件路径}`

**核心职责**: {一句话描述}

**关键交互**:
- **调用**: {依赖组件}
- **被用于**: {被依赖者}

**复杂度**: {Low/Medium/High/Critical}
**潜在风险**: {如有}
```

---

## 最终优化

1. **去交叉算法** — 微调节点位置，减少边交叉
2. **边捆绑** — 同向多条边合并
3. **孤立节点分组** — 归类到逻辑分组
4. **认知路径优化** — 确保核心数据流路径清晰

---

## 使用示例

**触发方式**：
- "分析这个项目的架构，生成 canvas 图"
- "可视化项目结构"
- "生成 architecture.canvas"

**输出位置**：默认生成到项目根目录 `{项目名}.canvas`

**输出检查清单**：
- [ ] Canvas JSON 有效
- [ ] 包含 `node_arch_pattern` 节点（架构模式 + 置信度）
- [ ] 包含 `node_risk_section` 节点（至少 3 条风险）
- [ ] 打印执行摘要（包含置信度、风险数量）
