此技能需要 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 <技能基础目录>/scripts/find-call-chain.ts "<输入>"
将完整的输出原样展示给用户。
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 |