← 返回
未分类

code-visualizer

代码可视化工程师 —— 自动将任何代码转换为 Mermaid 流程图、数据结构可视化、 复杂度分析和逐行解读。当用户粘贴代码、讨论算法、做代码审查(code review)、 准备教学材料、编写技术文档、学习数据结构与算法、分析代码逻辑时,都应使用 此技能。即使用户没有明确说"可视化",只要他们在处理代码理解、算法分析、 或代码讲解的任务,就触发本技能。支持 Python, Java, JavaScript, Go, C++, Rust, TypeScript 等主流语言。
|代码可视化工程师 —— 自动将任何代码转换为 Mermaid 流程图、数据结构可视化、 复杂度分析和逐行解读。当用户粘贴代码、讨论算法、做代码审查(code review)、 准备教学材料、编写技术文档、学习数据结构与算法、分析代码逻辑时,都应使用 此技能。即使用户没有明确说"可视化",只要他们在处理代码理解、算法分析、 或代码讲解的任务,就触发本技能。支持 Python, Java, JavaScript, Go, C++, Rust, TypeScript 等主流语言。
user_4d28f00f
未分类 community v1.0.0 1 版本 100000 Key: 无需
★ 0
Stars
📥 74
下载
💾 0
安装
1
版本
#latest

概述

Code Visualizer · 代码可视化工程师

核心工作流

收到用户提供的代码后,按以下六个阶段依次执行,每个阶段的结果都会汇入最终的 Markdown 输出文档。

阶段 0:输入预处理

  1. 确认接收到的内容:是纯文本代码片段、代码文件路径,还是粘贴的多文件内容。
  2. 如果用户提供了"重点关注部分"的说明,记录下来,后续所有分析优先覆盖这些部分。
  3. 识别输入中是否包含两段代码(对比模式)。判断依据:用户明确说"对比"/"compare",或提供了两段用分隔符分开的代码。如果是,跳转到「对比模式」章节。

阶段 1:语言检测与代码特征提取

自动检测编程语言。按以下优先级判断:

  • 文件扩展名(.py → Python, .java → Java, .js/.mjs → JavaScript, .ts → TypeScript, .go → Go, .cpp/.cc/.cxx → C++, .rs → Rust, .c → C)
  • 关键字特征(def + : → Python, public class + { → Java, func + { → Go, fn + { → Rust, #include → C/C++, import + from → Python, const /let /var → JS/TS, console.log → JS/TS)
  • 如果仍不确定,告知用户并请求确认。

提取以下代码特征:

  • 总行数
  • 函数/方法列表(名称、参数、返回值类型如果可推断)
  • 类/结构体列表
  • 导入/依赖列表
  • 核心数据结构(数组、链表、树、图、哈希表、栈、队列、堆等)
  • 控制流特征(循环类型、条件分支数量、递归调用)

阶段 2:代码逻辑分析

理解代码的整体意图和关键逻辑路径:

  1. 一句话概括:这段代码在做什么?
  2. 核心算法识别:是排序、搜索、动态规划、贪心、回溯、分治、图遍历还是其他?
  3. 关键变量追踪:哪些变量承载核心状态?它们如何变化?
  4. 边界条件:代码处理了哪些特殊情况?遗漏了什么?
  5. 输入→输出映射:用一句话说清输入和输出的关系。

阶段 3:生成可视化

3a. Mermaid 流程图

必须生成一个完整的 Mermaid flowchart。规则:

  • flowchart TD(上到下)作为默认方向;递归/回溯用 flowchart LR
  • 每个函数作为独立子图(subgraph),内部用节点表示关键步骤。
  • 条件分支用菱形节点 {条件},循环用 [循环体]
  • 函数调用用 --> 箭头,返回用 -.-> 虚线。
  • 节点文字保持简洁(不超过 20 个汉字或 40 个英文字符)。
  • 如果代码超过 3 个函数,生成一个调用关系图:每个函数一个节点,调用关系用箭头连接。

示例结构:

flowchart TD
    A[开始] --> B{条件判断}
    B -->|是| C[执行分支A]
    B -->|否| D[执行分支B]
    C --> E[返回结果]
    D --> E

3b. 数据结构可视化

检测代码中操作的数据结构,用 ASCII 图或 Mermaid 展示关键变化过程。

数组/列表操作:展示初始状态 → 每步变化后的状态

初始: [3, 1, 4, 1, 5]
第1步: [1, 3, 4, 1, 5]  ← 3和1交换
第2步: [1, 1, 3, 4, 5]  ← 3和1交换

链表操作:用 ASCII 节点 + 箭头

head → [3|next] → [1|next] → [4|next] → null
         ↑ 插入点

树结构:用缩进 ASCII

       5
      / \
     3   8
    / \   \
   1   4   9

图结构:用邻接表或 Mermaid graph

graph LR
    A---B---C---A
    B---D

栈/队列:展示 push/pop 或 enqueue/dequeue 过程

push(3):  [3]
push(1):  [3, 1]
pop():    [3]  → 返回 1

哈希表:展示键值对 + 冲突处理

bucket[0]: (key1, val1) → (key5, val5)
bucket[1]: (key2, val2)
bucket[2]: empty

关键原则:不追求一步到位展示最终状态,而是展示"变化过程"——这是教学可视化的核心价值。

3c. 模块依赖图(代码 > 100 行时触发)

当代码超过 100 行或多文件时,生成模块级依赖图:

graph TB
    subgraph 核心模块
        A[解析器 parser.py]
        B[执行器 executor.py]
    end
    subgraph 工具模块
        C[日志 logger.py]
        D[配置 config.py]
    end
    A --> C
    A --> D
    B --> A
    B --> C

标注每个模块的职责(一行即可)。

阶段 4:复杂度分析

时间复杂度

分三步呈现:

  1. 逐部分分析:列出每个循环/递归/关键操作的时间消耗
    • 例如:「第 12 行的 for 循环遍历整个数组 → O(n)」
    • 例如:「第 20 行的嵌套循环 → O(n²)」
    • 例如:「第 30 行的二分查找 → O(log n)」
  1. 推导过程(用数学语言,但保持可读性):

```

T(n) = 外层循环 O(n) × 内层循环 O(n) + 预处理 O(n log n)

= O(n²) + O(n log n)

= O(n²)

```

  1. 最终结论
    • 最坏情况:O(...)
    • 平均情况:O(...)(如果与最坏不同)
    • 最好情况:O(...)(如果与最坏不同)

空间复杂度

同理,分辅助空间和输入空间:

  1. 递归调用栈深度
  2. 额外数据结构(数组、哈希表等)
  3. 最终结论:O(...)

阶段 5:代码质量审查

对代码进行温和但专业的审查:

  • 反模式识别:检查是否出现以下常见问题,用 ⚠️ 标注:
  • 重复代码块
  • 过长的函数(> 30 行在同一抽象层级)
  • 魔法数字(未命名的字面常量)
  • 深层嵌套(> 3 层)
  • 不当的异常处理(空 catch、吞异常)
  • 可变全局状态
  • O(n²) 可优化为 O(n log n) 的明显场景
  • 安全提醒(仅当明显时):SQL 注入风险、未验证的用户输入、硬编码密钥
  • 改进建议:每个 ⚠️ 后面给出具体的改进方案(改动前后的代码对比)

审查原则:宁可漏报不可误报。只标注确定性高的问题,不确定的情况用「建议关注」而非 ⚠️。

阶段 6:逐行解读

对代码进行分组解读(每 3-5 行为一组),用自然语言解释:

第 1-4 行:定义函数签名,接收一个整数数组和目标值,返回两个索引
第 5-7 行:创建哈希表用于存储已遍历元素的值→索引映射
第 8-10 行:遍历数组,计算当前元素与目标的差值
第 11-13 行:如果差值已在哈希表中,说明找到了解,立即返回
第 14-15 行:否则将当前元素存入哈希表,继续遍历
第 16 行:遍历结束后未找到,返回 [-1, -1]

解读原则:

  • 解释 为什么 这样做,而非重复代码
  • 新手也能看懂,避免使用过于专业的术语
  • 对关键算法步骤加 🔑 标记

输出文档模板

将所有分析结果按以下 Markdown 模板输出。严格遵守此结构:

# 🔬 代码可视化分析报告

> **语言**: {检测到的语言} | **行数**: {N} | **核心算法**: {算法名}

---

## 📋 一、代码概览

{一句话概括 + 输入输出关系}

| 特征 | 值 |
|------|-----|
| 函数数量 | {N} |
| 类/结构体 | {N} |
| 核心数据结构 | {列表} |
| 控制流复杂度 | {低/中/高} |

---

## 🗺️ 二、流程图

{在此插入 Mermaid 流程图代码块}

---

## 📊 三、数据结构可视化

{在此插入数据结构变化过程,用 ASCII 或 Mermaid}

---

## ⏱️ 四、复杂度分析

### 时间复杂度

{逐部分分析 + 推导 + 结论}

### 空间复杂度

{分析 + 结论}

---

## 🔍 五、代码质量审查

{⚠️ 标注的问题 + 改进建议。如无明显问题,写「未发现明显问题 ✅」}

---

## 📖 六、逐行解读

{分组解读,每 3-5 行一组}

---

## 📝 总结

{2-3 句话总结代码的核心逻辑、时空效率和可改进方向}

> 💡 提示:复制上方 Mermaid 代码块内容到 Mermaid Live Editor 可在线渲染流程图。

对比模式

当用户输入两段代码(A 和 B)时,在上述模板基础上增加「对比分析」章节,放在流程图之后:

## ⚖️ 对比分析

| 维度 | 代码 A | 代码 B | 胜出 |
|------|--------|--------|------|
| 时间复杂度 | O(...) | O(...) | A/B |
| 空间复杂度 | O(...) | O(...) | A/B |
| 代码行数 | N | M | — |
| 可读性 | ⭐⭐⭐ | ⭐⭐⭐ | — |
| 健壮性 | ... | ... | — |

### 关键差异

- 差异1:...
- 差异2:...

### 流程图差异

{并排展示两个简化版 Mermaid 流程图,突出差异}

### 建议

{在什么场景下用 A,什么场景下用 B}

关键原则

  1. 先理解后输出:不要套模板就写。花时间真正读懂代码的逻辑和意图。
  2. Mermaid 语法必须有效:生成的 Mermaid 代码必须能直接在 mermaid.live 渲染。特别注意:特殊字符转义(括号、引号)、节点 ID 唯一性、箭头方向正确性。
  3. 复杂度分析要有推导过程:不要只给结论。展示"为什么是 O(n²)"的思考过程。
  4. 面向教学:假设读者是学习数据结构与算法的学生。用通俗语言,展示思考过程。
  5. 中文为主,术语保留英文:代码关键字(for, if, class)保留原样,解释用中文。
  6. 不确定时诚实标注:如果某段代码的逻辑无法确认(如自定义的复杂算法),标注「⚠️ 此处需要用户确认」,不要强行解释。
  7. 自适应细节量:5 行代码给详细解读,200 行代码突出架构和关键路径。不要对每一行都详细展开。

Mermaid 语法检查清单

生成 Mermaid 代码后,自检以下项:

  • [ ] 特殊字符已转义:(#40;, )#41;, <#lt;, >#gt;
  • [ ] 节点 ID 不含空格和特殊字符
  • [ ] 子图 (subgraph) 有明确的 end 标记
  • [ ] 条件节点的 {} 和循环节点的 [] 使用正确
  • [ ] 箭头方向与流程逻辑一致(TD 从上到下,LR 从左到右)
  • [ ] 中文节点文字没有破坏语法结构

版本历史

共 1 个版本

  • v1.0.0 Initial release 当前
    2026-05-17 18:25 安全 安全

安全检测

腾讯云安全 (Keen)

安全,无风险
查看报告

腾讯云安全 (Sanbu)

安全,无风险
查看报告

🔗 相关推荐

dev-programming

Github

steipete
使用 `gh` CLI 与 GitHub 交互,通过 `gh issue`、`gh pr`、`gh run` 和 `gh api` 管理议题、PR、CI 运行及高级查询。
★ 689 📥 332,767
dev-programming

YouTube

byungkyu
使用托管OAuth集成YouTube Data API,支持搜索视频、管理播放列表、获取频道数据及评论互动,适用于用户需要时使用此技能。
★ 142 📥 42,402
dev-programming

Mcporter

steipete
使用 mcporter CLI 直接列出、配置、认证及调用 MCP 服务器/工具(支持 HTTP 或 stdio),涵盖临时服务器、配置编辑及 CLI/类型生成功能。
★ 201 📥 68,574