此技能需要 Bun。腳本使用 bun:sqlite。
從指定的程式碼位置向上追蹤呼叫鏈,直到所有可達的進入點。
支援的語言:任何經 CodeGraph 索引的語言(C#、Java、Kotlin、Go、TypeScript、JavaScript、Rust、C、C++、Vue、JSX、TSX、Terraform、Helm YAML 等)
輸入:符號名稱、檔案路徑或 file:line 參考。範例:
FindToolNameCollisionsToolsMappingExtensions.cs:145src/services/auth.ts:89CheckCertificate
需求:專案中必須已建立 CodeGraph 索引(.codegraph/ 目錄必須存在)。如果缺少,請告知使用者先執行 codegraph init。
步驟
1. 執行腳本
腳本是此技能基礎目錄中的 scripts/find-call-chain.ts。從專案資料夾執行,因為它會從目前資料夾尋找 .codegraph/:
bun <skill-base-directory>/scripts/find-call-chain.ts "<input>"
將完整輸出原封不動地顯示給使用者。
2. 多個符號匹配
如果腳本輸出「Multiple symbols matched」,請列出顯示的候選項目,並要求使用者以 file:line 參考重新執行,以指定他們想要的符號。
3. 找不到符號
如果腳本以「No symbol found」結束:
- 嘗試其他拼寫方式或使用
file:line參考 - 確認 CodeGraph 索引是最新的:
codegraph index
終端節點偵測(內建於腳本中 — 無需 LLM 判斷)
當符合以下條件時,腳本會停止遍歷某個分支:
| 條件 | 範例 |
|---|---|
kind = route(CodeGraph 原生) | 任何框架的路由節點 |
| 語言名稱模式匹配 | *Controller(C#/Java)、*Activity(Kotlin)、main(Go/Rust/C)、*Page/*Route(TS/JS) |
| 無呼叫者 | 呼叫圖中的葉節點 |
| 深度上限(6 層) | 在樹中標記為 ⚠ depth cap |
| 偵測到循環 | 在樹中標記為 ⟳ cycle |