name: code-visualizer description: | 程式碼視覺化工程師 —— 自動將任何程式碼轉換為 Mermaid 流程圖、資料結構視覺化、 複雜度分析和逐行解讀。當用戶貼上程式碼、討論演算法、做程式碼審查(code review)、 準備教學材料、編寫技術文件、學習資料結構與演算法、分析程式碼邏輯時,都應使用 此技能。即使使用者沒有明確說"視覺化",只要他們在處理程式碼理解、演算法分析、 或程式碼講解的任務,就觸發本技能。支援 Python, Java, JavaScript, Go, C++, Rust, TypeScript 等主流語言。
收到使用者提供的程式碼後,按以下六個階段依次執行,每個階段的結果都會匯入最終的 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
標註每個模組的職責(一行即可)。
分三步呈現:
例如:「第 30 行的二分查詢 → O(log n)」
推導過程(用數學語言,但保持可讀性):
T(n) = 外層迴圈 O(n) × 內層迴圈 O(n) + 預處理 O(n log n)
= O(n²) + O(n log n)
= O(n²)
最終結論:
同理,分輔助空間和輸入空間:
對程式碼進行溫和但專業的審查:
O(n²) 可最佳化為 O(n log n) 的明顯場景
安全提醒(僅當明顯時):SQL 注入風險、未驗證的使用者輸入、硬編碼金鑰
改進建議:每個 ⚠️ 後面給出具體的改進方案(改動前後的程式碼對比)
審查原則:寧可漏報不可誤報。只標註確定性高的問題,不確定的情況用「建議關注」而非 ⚠️。
對程式碼進行分組解讀(每 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;小蔥技能站7w4.net發現了升級外掛。
{} 和迴圈節點的 [] 使用正確這個 Skill 質量較好,文件結構完整、內容詳盡,示例豐富直觀,涵蓋了常見的使用場景和邊緣情況處理。主要優點是功能定義明確、輸出規範清晰;不足之處是作為純文件型 Skill,缺少可執行程式碼和配置檔案,在實際使用中可能需要依賴外部系統來解析執行。總體而言,這是一個文件質量高但技術實現較輕量的 Skill。