收到用户提供的代码后,按以下六个阶段依次执行,每个阶段的结果都会汇入最终的 Markdown 输出文档。
自动检测编程语言。按以下优先级判断:
.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)提取以下代码特征:
理解代码的整体意图和关键逻辑路径:
必须生成一个完整的 Mermaid flowchart。规则:
flowchart TD(上到下)作为默认方向;递归/回溯用 flowchart LR。subgraph),内部用节点表示关键步骤。{条件},循环用 [循环体]。--> 箭头,返回用 -.-> 虚线。示例结构:
flowchart TD
A[开始] --> B{条件判断}
B -->|是| C[执行分支A]
B -->|否| D[执行分支B]
C --> E[返回结果]
D --> E
检测代码中操作的数据结构,用 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
关键原则:不追求一步到位展示最终状态,而是展示"变化过程"——这是教学可视化的核心价值。
当代码超过 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
标注每个模块的职责(一行即可)。
分三步呈现:
```
T(n) = 外层循环 O(n) × 内层循环 O(n) + 预处理 O(n log n)
= O(n²) + O(n log n)
= O(n²)
```
同理,分辅助空间和输入空间:
对代码进行温和但专业的审查:
审查原则:宁可漏报不可误报。只标注确定性高的问题,不确定的情况用「建议关注」而非 ⚠️。
对代码进行分组解读(每 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}
生成 Mermaid 代码后,自检以下项:
( → #40;, ) → #41;, < → #lt;, > → #gt;{} 和循环节点的 [] 使用正确共 1 个版本