让 AI Agent 先读懂代码再动手:CodeGraph 与代码知识图谱实战

从 Token 消耗、调用链和影响范围出发,拆解 CodeGraph 的本地图谱原理,对比 Serena、Graphify 等工具,并以 Windows + Codex 为主线说明跨平台、多 Agent 的安全接入、验证、测量与风险控制流程。

CodeGraph Codex MCP Windows 代码知识图谱 影响分析
浏览 173
让 AI Agent 先读懂代码再动手:CodeGraph 与代码知识图谱实战封面

当 Codex、Claude Code 或 Cursor 面对一个陌生项目时,最贵的往往不是“写出那几行代码”,而是先回答这些问题:入口在哪里?这个函数被谁调用?改公共模块会波及哪些路由?哪些测试最应该先跑?

没有结构化索引时,Agent 通常会反复 rg、列目录、读取大文件,再从入口函数逐层追踪。上下文窗口里混入大量与任务无关的代码,同一个文件还可能被重复打开。代码知识图谱的价值,是把文件、符号、导入、调用、继承、路由与引用预先组织成可查询关系,让 Agent 先取得“小而准”的候选上下文,再读取必要源码并动手。

这不等于“装上工具就必然节省某个百分比的 Token”。节省幅度受仓库规模、任务类型、模型、提示词和索引质量影响。本教程不会复述厂商宣传数字,而是给出可由你自己复跑的 A/B 测量模板。

本文于 2026-07-21 核验公开资料。这里的 CodeGraph 明确指向 colbymchenry/codegraph,不是 GitHub 上其他同名项目。官方最新正式 Release 为 v1.4.1。安装、配置和命令均依据该版本官方文档整理;本文没有把未执行步骤写成实测结果。

先给结论:什么任务值得先查图谱

以下任务通常能从代码知识图谱中获益:

  • 修改认证、权限、数据库访问、公共组件等高扇出模块前,先找调用方与影响范围;
  • 跨文件追踪“路由 → 控制器 → 服务 → 数据访问 → 测试”的链路;
  • 大型项目交接、新成员入门、业务流程梳理;
  • 复杂重构前盘点引用、继承、实现类与潜在测试;
  • 排查一个问题为什么跨越多个模块,减少重复搜索与漏读。

如果只是改一段独立文案、一个无引用的小函数,建立图谱的固定成本未必划算。图谱也不应替代项目的 AGENTS.md、设计文档、数据库 schema、运行日志和真实测试。

一、Token 为什么花在“找代码”上

传统 Agent 探索链路通常是:

  1. 列目录,猜入口文件;
  2. rg 搜索函数名、路由或错误文本;
  3. 打开几个候选文件;
  4. 顺着 import、调用和配置继续搜索;
  5. 因上下文不足,再次读取刚看过的文件;
  6. 修改后才发现另一个调用方、类型声明或测试夹具被遗漏。

其中每次工具调用都可能把路径、匹配行、整段源码和解释重新送入模型。动态调用、反射、字符串路由或依赖注入还会让纯文本搜索失去线索。更棘手的是,新任务和新会话经常要重新建立同一份项目地图。

代码知识图谱把“代码是什么”和“代码之间怎么连”拆开:

  • 节点:文件、模块、函数、方法、类、接口、路由、组件等;
  • 关系边:包含、调用、导入、导出、继承、实现、引用、实例化等;
  • 查询:从一个符号向上找调用者,向下找被调用者,或按深度计算影响半径;
  • 上下文裁剪:只返回相关符号、路径、逐行源码和关系摘要,而不是先塞入整批文件。

它真正减少的是“盲搜 → 大读 → 再盲搜”的次数。至于 Token 是否下降、下降多少,应由同仓库、同任务、同模型的对照实验回答。

二、CodeGraph 如何工作

根据 CodeGraph 的工作原理知识图谱模型MCP 参考

  1. 它使用 Tree-sitter 解析源码的抽象语法树,提取文件、类、函数、方法、路由等符号;
  2. 随后解析 import、call、extends、implements、references 等关系;
  3. 图谱保存在项目内的 .codegraph/codegraph.db,当前文档说明使用 SQLite、FTS5 全文检索与 WAL;
  4. 文件监听器使用操作系统原生事件,Windows 对应 ReadDirectoryChangesW,修改后防抖增量同步;
  5. Agent 通过本地 STDIO MCP 启动 codegraph serve --mcp。默认只暴露 codegraph_explore,以降低工具选择和上下文负担;需要时才启用更多工具;
  6. 一次 explore 可以返回相关符号、文件路径、带行号源码、调用路径和 blast radius(影响范围)提示。
CodeGraph 从源码到 Agent 上下文的流程
CodeGraph 从源码到 Agent 上下文的流程

*图 1:HelloAIFlow 根据 CodeGraph 官方工作原理、索引与 MCP 文档绘制。它是说明图,不是 CodeGraph 官方原图,也不是运行界面截图。*

图谱里有哪些关系

官方图模型列出的节点包含 file、module、class、interface、function、method、route、component 等;关系包含 contains、calls、imports、exports、extends、implements、references、instantiates、overrides、decorates 等。部分跨文件关系可以确定解析,部分动态分派或框架模式依赖启发式解析,官方会保留来源或置信信息。

这意味着 Agent 得到的是“有证据的导航图”,不是运行时真相。反射、字符串拼装、运行时注入、消息总线、数据库触发器和外部服务调用仍可能超出静态图覆盖范围。

增量更新不是“永远不会过期”

官方当前实现有三层保护:文件监听防抖同步、响应中的待同步提示、MCP 连接时的补偿性扫描。若你在禁用 watcher 的沙箱里工作,或在 Agent 会话外批量改了文件,可以运行:

codegraph sync
codegraph status

预期:sync 只增量处理变化;status 不再显示 pending sync,并报告当前文件、节点、边和数据库状态。若仍有 pending 文件,先直接读取实时源码,不要让 Agent 仅凭旧图修改。

三、CodeGraph 与同类工具怎么选

以下矩阵只比较截至核验日能由官方仓库或文档支持的能力。 不代表所有语言、框架和动态模式都能完整解析。

工具核心定位 / 索引技术MCP 与工具负担Windows、JS/TS、增量调用/引用、编辑、可视化最适合主要限制
CodeGraphTree-sitter + 本地 SQLite/FTS5 图谱有;默认 1 个 codegraph_explore,可选更多细粒度工具官方支持 Windows 和 JS/TS;原生监听增量同步强调用链、callers/callees/impact;不负责代码编辑;可视化不是主线日常理解项目、影响分析、给 Agent 精准上下文静态/启发式边可能漏动态行为;需保证图谱新鲜
SerenaLSP 为主的符号级检索与编辑,可选 JetBrains 后端有;符号、引用、编辑等工具较多,可按 context 关闭重叠能力跨平台;官方列出 JS/TS;语言服务器随文件变化更新强符号、引用、重命名、安全删除和结构化编辑;无图谱看板精准符号重构和跨文件安全编辑LSP 能力依语言服务器而异;工具多时要精简;仍须测试
Graphify代码用 Tree-sitter,文档/媒体可结合模型推断;产出 JSON、HTML 图和报告可选 MCP;官方列出 10 个图查询/可视化工具官方给出 Windows 路径;支持 JS/TS;支持变更更新强可视化、社区/关键节点和图查询;不是重构编辑器架构可视化、代码与文档联合导览非代码材料可能调用配置的模型;图中可能含源码派生信息
code-review-graphTree-sitter + SQLite,围绕 Git 变更构建审查图有;默认工具较多(官方列出 30 个),应使用过滤选项支持 Windows 与 JS/TS;update/watch 增量强 blast radius、affected tests、风险评分;编辑不是主线PR 审查、测试范围和变更影响默认工具负担高;风险评分是辅助信号,不是合并结论
Understand AnythingTree-sitter 结构解析 + LLM 语义总结,保存 .ua/knowledge-graph.json官方主线是 Agent skill/命令和看板,不是原生 MCP 服务提供 Windows 安装;支持主流代码库;后续可增量分析强业务概念、导览、tour、diff impact 和看板;不负责精确重构陌生项目首次理解、新成员和非纯开发角色入门首次全仓语义分析可能消耗较多 Token;模型/源码外发边界需先确认
CodeGraphContextTree-sitter + 可选 SCIP;Kuzu/Ladybug、FalkorDB 或 Neo4j有;多种图查询工具,后端和配置项更多Kuzu 路径可用于 Windows;支持 JS/TS;有 watcher强调用关系、复杂图查询与可视化;不负责精确编辑需要可配置图数据库和复杂图查询安装维护成本较高;官方 README、文档与最新 Release 版本口径不完全一致,采用前应复核

维护状态与许可证快照

工具截至 2026-07-21 的维护证据许可证
CodeGraph正式 Release v1.4.1,发布于 2026-07-10MIT
Serena正式 Release v1.6.0,发布于 2026-07-16MIT
Graphify正式 Release v0.9.22,发布于 2026-07-20MIT
code-review-graph正式 Release v2.3.7,发布于 2026-07-18MIT
Understand Anything正式 Release v2.9.0,发布于 2026-07-10MIT
CodeGraphContext可核验的最新 GitHub Release 为 v0.4.7(2026-05-07);README/文档出现 0.5.0/0.5.1,版本口径需复核MIT

“有近期 Release”只说明项目近期有维护动作,不代表 API 稳定、没有安全问题或适合你的仓库。正式采用前仍要读对应 Release、依赖清单与开放问题。

五种场景的直接建议

  • 轻量日常理解项目:先选 CodeGraph,默认单工具更容易控制 MCP 负担。
  • 精准符号重构:优先 Serena;让 LSP 处理符号、引用和编辑,再跑类型检查与测试。
  • 架构可视化:优先 Graphify;若输入包含文档或媒体,先确认模型和数据外发配置。
  • 代码审查与影响分析:优先 code-review-graph,安装时过滤到 review、impact、tests 所需工具。
  • 陌生项目首次理解:Understand Anything 适合生成业务导览;若你只需要代码调用链,不要先付出全仓 LLM 分析成本。

不要把所有工具同时全局安装。先写下当前最重要的一个问题,再选一个工具跑通。两个 MCP 服务若都提供搜索、引用、图查询,会增加工具描述 Token、误选概率和排障面。

扩展候选:FalkorDB/code-graph 已核实为 FalkorDB 官方仓库,采用 MIT License,提供 PyPI CLI falkordb-code-graph、FalkorDB/GraphRAG、可视化和 STDIO MCP。它需要 Python、FalkorDB 或 FalkorDBLite,完整界面还涉及 Node.js,部署与数据库成本明显高于本文的轻量本地 Agent 上下文主线,因此不进入核心矩阵,也不在本教程提供安装实战。“RepoGraph”则同时指向学术仓库、商业产品和其他同名实现;未能唯一对应用户线索,所以继续排除。

四、主实战:Windows + Codex,再迁移到其他平台和 Agent

本节选择 Windows + Codex 作为主线,是因为目标读者以 Windows、Node.js、JavaScript/TypeScript 项目为主,也便于把 PowerShell 路径、MCP 配置和验证方法讲清楚;CodeGraph 本身并不只支持 Windows 或 Codex。官方当前同时支持 Windows、macOS、Linux,以及 Claude Code、Cursor、Codex CLI、opencode、Hermes Agent、Gemini CLI、Antigravity IDE 和 Kiro。

以下命令以 CodeGraph 官方 v1.4.1 Release 与当前安装文档整理。教程制作过程没有下载、安装、升级、初始化项目或写入任何 Agent 配置;所有操作步骤均属于“依据官方文档整理,待读者在自己的环境验证”。

0. 明确目录、权限和停止条件

执行目录:你要分析的 单个项目根目录,不要在 C:\、用户目录根或多个项目的上级集合目录执行。

$ProjectRoot = (Resolve-Path 'C:\path\to\your-project').Path
Set-Location -LiteralPath $ProjectRoot

Get-Location
git status --short

预期:Get-Location 是目标项目根;git status --short 让你记录操作前基线。

验证:目录里应有该项目的 package.json.git 或其他明确入口。

常见错误:

  • Resolve-Path 失败:路径不存在,先修正占位路径;
  • 当前目录是盘符根或工作区总根:立即停止;
  • 仓库已有未提交变更:不要清理或覆盖,先记录并避开这些文件。

1. 检查现有安装;缺失时按官方方式安装当前正式版

执行目录:检查命令可在目标项目根执行;全局安装可在普通 PowerShell 中执行,不要求管理员终端,但它会写入用户/系统 npm 全局位置,必须先取得本机或组织许可。

Get-Command codegraph -ErrorAction SilentlyContinue
codegraph --version

预期:能看到 codegraph 的命令路径与版本。

验证:到官方 Releases核对版本与发布日期,再查看对应 tag 的变更。本文核验日最新正式 Release 是 v1.4.1

如果命令不存在,先停下来取得安装许可。官方提供独立安装脚本、npm 全局安装与 npx 安装器;这些都会下载并执行第三方代码,可能写 PATH 或 Agent 配置。企业或受管设备应先审查仓库、Release、MIT License 和包来源,再按官方安装文档选择方式。不要因为教程里出现命令就直接粘贴 irm ... | iex

以下是依据官方 npm 包和 v1.4.1 Release 整理、当前环境未执行、待读者验证的固定版本示例。执行当天先重新核对 Release 与 npm 包来源;只有审批通过后才运行第二条:

npm.cmd view @colbymchenry/codegraph version dist.tarball
npm.cmd install -g @colbymchenry/[email protected]

预期:第一条显示当前包版本和 npm tarball 来源;第二条安装固定的 1.4.1,结束时不应出现审计或权限错误。官方也提供 Windows PowerShell 远程安装脚本,但本教程不推荐把网络响应直接通过管道执行。

安装后关闭并重新打开 PowerShell,再验证:

Get-Command codegraph -ErrorAction Stop
codegraph --version

预期:命令可解析,版本输出为 1.4.1。若 npm 当前包、Release tag 或校验信息对不上,立即停止;若出现 EACCES/EPERM,不要改系统权限或用管理员模式强装,先检查组织的 Node/npm 安装策略;若新终端仍找不到命令,检查 npm 全局 bin 是否在 PATH,并记录真实路径,不要反复安装。

2. 先预览,再让官方安装器配置 Codex

执行目录:目标项目根。

codegraph install --print-config codex

预期:只打印 Codex 的配置片段,不写文件。核心应等价于:

[mcp_servers.codegraph]
command = "codegraph"
args = ["serve", "--mcp"]

验证:配置必须是本地 STDIO 命令,不应出现陌生公网 URL、Token 或硬编码私密路径。

常见错误:

  • 旧版本不认识 --print-config:先执行 codegraph --version,对照对应版本文档,不要猜参数;
  • codegraph 不在 PATH:重新打开终端或使用经核验的绝对命令路径;不要改系统 PATH 后假装当前会话已生效。

确认预览无异常并已取得配置写入许可后,按官方安装器为 Codex 写入项目级配置:

codegraph install --target=codex --location=local

预期:安装器只配置 Codex 的本地 MCP 入口,并报告写入或更新了哪些文件;它不会在这一步索引代码。完成后检查 git status --short 和变更内容,确认没有覆盖项目原有规则或其他 MCP 配置,再重启 Codex。

若你确实希望所有项目共享配置,可在取得组织或设备所有者许可后选择 --location=global。Codex 官方文档说明项目级配置位于受信项目的 .codex/config.toml;全局配置通常位于用户目录的 .codex/config.toml。不要手工覆盖整个配置文件,也不要在没有检查差异时使用非交互确认参数。

3. 为单个项目建立本地图谱

执行目录:目标项目根。

codegraph init

预期:创建 .codegraph/,完成首次全量索引,并输出文件、符号或关系统计。

验证:

codegraph status
Get-ChildItem -LiteralPath '.codegraph' -Force

预期:状态能报告索引统计且没有待同步错误;目录中出现本地数据库等派生文件。

常见错误:

  • No index found:确认你在项目根运行 init
  • 某些文件未索引:检查扩展名、忽略规则和解析错误;
  • 数据库被锁:先退出重复的 Agent/MCP 进程,确认没有正常索引任务后再处理;不要直接删除数据库或锁文件;
  • Windows 与 WSL 交叉使用:官方排障文档提示两套环境可能拥有不同索引,固定在同一环境和同一路径操作。

.codegraph/ 是源码派生数据。先检查其内容和团队策略,再决定是否加入 .gitignore;未经代码所有者确认,不要擅自改仓库规则。

4. 在 CLI 里先做三层查询

执行目录:目标项目根,且 codegraph status 已确认索引可用、无待同步错误。

先找符号,再看上下游,最后看影响范围。把 AuthMiddleware 换成你项目的真实符号。

codegraph query AuthMiddleware --kind class --limit 10
codegraph callers AuthMiddleware --json
codegraph callees AuthMiddleware --json
codegraph impact AuthMiddleware --depth 3

预期输出:

  • query 返回候选符号和路径;
  • callers 返回调用或引用它的上游;
  • callees 返回它向下调用的符号;
  • impact 按深度返回潜在受影响代码。

验证方法:随机选择 1—2 条关键边,打开对应源码手工确认。不要只看名称相似就认定关系正确。

常见错误与排查:符号重名时先用 query --json 查看路径,再收窄名称;动态注册、字符串路由或依赖注入没有出现时,回到 rg、配置文件和运行时日志补查。查询为空且源码确实存在时,停止影响分析,先查语言支持、忽略规则和解析错误。

5. 启动新的 Codex 会话并验证 MCP

执行目录:目标项目根;如果使用项目级 .codex/config.toml,该项目必须已被 Codex 信任。

官方说明 MCP 服务由 Agent 自动启动,不需要你手工常驻运行 codegraph serve --mcp

codex mcp list

预期输出:列表里出现 codegraph 及本地 STDIO 命令。进入新的 Codex 交互会话后,再执行:

/mcp

预期:CodeGraph 处于 active/connected 状态,并能看到 codegraph_explore

验证方法:最终验证不是“配置存在”,而是完成一次真实工具调用。向 Codex 提问:

请先使用 codegraph_explore 查询“认证请求从路由到权限判断再到数据库访问的完整链路”。
返回入口、相关符号、调用关系、可能受影响的测试和需要直接读取的源码文件。
不要修改文件。

预期:工具返回真实项目中的符号、路径、带行号源码或关系摘要,而不是模型凭空回答。

常见错误与排查:列表中没有 CodeGraph 时,用 codegraph install --print-config codex 与实际配置逐项对照,确认命令路径、serve --mcp 参数、项目信任状态,并完全重启 Codex;服务存在但没有工具时,先在同一目录运行 codegraph status,无索引时 MCP 不暴露查询工具;连接失败时先直接执行 codegraph --version 验证命令可解析。不要为排障临时暴露公网 HTTP MCP,也不要把私有路径或配置全文粘贴到公共工单。

6. 修改前生成风险清单

执行目录:目标项目根中的新 Codex/Claude Code 会话;当前阶段保持只读分析。

不要直接说“帮我改”。先让 Agent 把图谱结果转为可审计计划:

先查询目标符号的 callers、callees 和 impact,必要时补查受影响测试。
再直接读取关键源码、项目规则和真实配置。
输出:入口、直接调用方、间接依赖、数据边界、权限边界、可能受影响测试、动态关系盲区、回滚点。
当前只分析,不修改。

人工验收至少检查:

  • 是否覆盖公开 API、路由、事件订阅者和后台任务;
  • 是否出现权限、生产配置、数据库迁移或共享模型;
  • 图谱没找到的动态关系是否用文本搜索和运行日志补查;
  • 测试清单是否与变更类型匹配。

预期输出:一份包含入口、直接/间接依赖、数据与权限边界、动态关系盲区、测试范围和回滚点的风险清单,且每项能回指真实源码或图谱关系。

验证方法:至少抽查一个上游调用方、一个下游依赖和一个测试文件;再用 rg 搜索路由字符串、事件名或依赖注入 token,确认图谱盲区是否补齐。

常见错误与停止条件:如果 Agent 只复述图谱、不读源码,要求其回读关键文件;如果索引 pending、目标符号歧义、权限/数据库边界不清或动态链路无法确认,停止修改并报告,不允许凭推断继续。

7. 修改后运行真实质量检查

执行目录:目标项目根;先用 git diff --statgit diff --check 确认只改了授权范围。

知识图谱不能告诉你运行结果。Node.js / TypeScript 项目至少按项目已有脚本选择:

npm.cmd run lint
npm.cmd run typecheck
npm.cmd test

不要假设三个脚本都存在。先读 package.jsonscripts,只运行项目定义且与变更相关的命令;涉及认证、权限、数据库或生产维护时,还应执行相应集成测试、只读结构检查和人工代码审查。

修改后让图谱追上源码:

codegraph sync
codegraph status
codegraph affected

affected 根据变更文件追踪依赖并给出潜在测试;它是测试选择的辅助,不是跳过全量质量门的理由。若发生大量重命名、分支切换或解析异常,可在确认项目根和派生目录后,依据官方文档评估 codegraph index --force;全量重建不应成为遇到问题就执行的默认动作。

预期输出:授权范围内的 diff;项目真实的 Lint、类型检查和测试均以退出码 0 完成;codegraph status 无 pending;affected 给出候选测试或明确无匹配。

验证方法:保存每条命令、退出码与失败摘要;再次查询被改符号的 callers/impact,和修改前风险清单对照,确认没有新增遗漏调用方。

常见错误与排查:Missing script 表示项目未定义该命令,应回到 package.json 选择真实脚本,不能伪造成功;测试失败时停止交付,区分本次回归与既有失败并保留证据;图谱仍 pending 时先等待 watcher 或运行一次 sync,仍失败则直接读实时源码并报告图谱不可作为验收依据。

8. 迁移到 macOS、Linux、Claude Code 或 Cursor

主线方法不依赖 Windows 或 Codex。迁移时只替换“安装命令、Agent 配置目标和客户端验证入口”,codegraph init、图谱查询、风险清单、源码回读和测试收口保持不变。

macOS / Linux 安装:官方提供自包含安装脚本,也支持 npm。远程脚本会下载并执行代码,受管设备应先下载到本地审查,再决定是否运行;已有 Node.js 时可以继续采用固定版本 npm 安装:

npm view @colbymchenry/codegraph version dist.tarball
npm install -g @colbymchenry/[email protected]
codegraph --version

预期:命令可解析并输出 1.4.1。若执行当天官方最新 Release 已变化,应以新的 Release、安装文档和对应包版本重新核验本文命令,不要把 1.4.1 永久理解为“最新版”。

为其他 Agent 配置项目级 MCP:先预览或检查现有配置,再运行官方安装器。只配置 Claude Code 和 Cursor 的示例为:

codegraph install --target=claude,cursor --location=local

如果同一项目确实需要 Codex、Claude Code 和 Cursor,可显式列出三个目标:

codegraph install --target=codex,claude,cursor --location=local

官方安装器也支持 --target=auto 自动检测,但团队环境更适合显式列出目标,避免写入你没有计划使用的客户端。配置完成后必须完全重启对应 Agent,在目标项目根确认 MCP 已连接,并完成一次真实 codegraph_explore 查询。

不同客户端的界面入口可能不同:Codex 可使用 codex mcp list 和交互界面的 /mcp;Claude Code、Cursor 应按各自当前 MCP 管理界面或官方配置检查方式确认。不要因为配置文件存在就宣布成功,最终标准始终是:在已初始化的项目中完成一次真实图谱调用,并抽查返回关系与源码一致。

五、Token 与准确性 A/B 实验

下面是测量模板,不是本次实测结果。选择一个有明确验收标准的跨文件任务,例如:“找出修改 AuthMiddleware 会影响的所有 HTTP 入口和对应测试,不修改代码”。

控制变量

  • 同一仓库 commit、同一工作树状态;
  • 同一 Agent、模型、推理档位、系统提示和时间限制;
  • 同一问题文本;
  • A 组禁用 CodeGraph MCP,B 组启用且先确认索引新鲜;
  • 每组至少重复 3 次,记录中位数,同时保留异常值说明;
  • 两组都允许使用 rg 和文件读取,不能故意削弱基线。

记录表

指标A:无图谱B:CodeGraph记录方法
总输入 Token待读者测量待读者测量Agent 会话用量或 API usage
总输出 Token待读者测量待读者测量同上
搜索工具调用次数待读者测量待读者测量统计 rg、search、grep
文件读取次数待读者测量待读者测量统计 Read/open
重复读取次数待读者测量待读者测量同一路径重复读取
找到的真实调用方数量待读者测量待读者测量人工基准清单对照
遗漏关键引用待读者测量待读者测量是/否 + 路径
完成时间待读者测量待读者测量墙钟时间
修改后测试失败数待读者测量待读者测量同一测试集
人工纠正次数待读者测量待读者测量每次纠正写原因

先建立“真值清单”:由熟悉项目的人结合代码审查、类型系统、测试和运行路径确认真实调用方。否则只比较两个 Agent 答案,无法判断谁漏了引用。

结果应同时看效率与准确性。Token 更少但漏掉权限调用方,不是胜利;调用更少但图谱过期,也不是可复用结论。

六、风险边界与安全清单

  1. 动态关系不完整:反射、字符串路由、运行时注入、事件总线和外部服务可能无法从静态图完整恢复。
  2. 图谱会过期:监听器可能受沙箱、休眠、分支切换或文件系统差异影响;关键任务前运行 status,必要时 sync
  3. 错误索引会放大错误:解析器、启发式边或重名符号可能给 Agent 错误上下文;关键边必须回读源码。
  4. 不能替代验证:单元测试、集成测试、类型检查、Lint、代码审查和真实运行验证仍是完成条件。
  5. 私有源码边界:CodeGraph 官方当前主张本地 SQLite、无需外部服务;但同类工具可能把语义分析交给配置的模型。未确认前不要上传私有源码、图 JSON 或截图。
  6. MCP 不是越多越好:同时启用大量重叠工具会增加工具描述 Token 和误选概率。CodeGraph 默认单工具是一个有意的取舍。
  7. 生产逻辑要回到事实源:权限、数据库、密钥、生产配置和部署流程必须继续读取项目规则、schema、当前代码与运行证据;图谱只是导航。
  8. 版本变化要复核:CodeGraph 更新较快;执行安装、升级或参数复制前,以你将安装版本的 Release 与官方文档为准。

七、可直接交给 Codex 或 Claude Code 的安全任务模板

目标:在不扩大范围的前提下,分析并完成【填写具体任务】。

工作规则:
1. 先读取项目内的 AGENTS.md、README、当前任务文档、package.json 和与任务相关的事实源;若规则冲突,以当前仓库文件为准并指出冲突。
2. 先检查代码知识图谱状态。若索引不存在、过期、报错或指向错误项目,停止修改并报告;不要删除、重建或修复索引,除非我明确授权。
3. 使用代码知识图谱查询目标入口、相关符号、直接调用者、被调用者、间接依赖、继承/实现关系、路由绑定和潜在测试范围。
4. 图谱只用于缩小范围。必须直接读取准备修改的源码、关键调用方、类型定义、配置和测试;对反射、字符串路由、运行时注入、事件订阅和外部服务再用文本搜索与运行证据补查。
5. 修改前输出风险清单:入口、调用链、影响文件、权限/数据边界、动态关系盲区、测试清单、回滚点。等待我确认后再改;若任务已明确授权小范围修改,可在清单后继续,但不得扩大范围。
6. 只做完成任务所需的最小改动。不要顺手重构、安装依赖、修改全局 MCP、清理文件、触碰密钥、连接生产或执行部署。
7. 修改后运行项目已有且与变更相关的 Lint、类型检查、单元测试和集成测试;不存在的脚本不要杜撰。失败时保留输出并说明影响。
8. 更新或同步图谱后再次查询目标符号,检查是否仍有遗漏调用方。图谱结果不能代替测试、代码审查和真实运行验证。
9. 最终报告:改了什么、图谱如何帮助定位、读了哪些真实源码、跑了哪些命令、哪些通过/失败、剩余风险和未验证项。不得把未执行步骤描述为已验证。

当前阶段只允许:【只读分析 / 分析后小范围修改,二选一】。
目标符号或业务流程:【填写】。
允许修改范围:【填写目录或文件】。
禁止触碰范围:【填写】。
验收命令:【填写项目真实脚本】。

官方来源

最后记住:好的代码知识图谱不是替你做决定,而是让 Agent 更快地提出正确问题。真正安全的顺序仍然是——先查图,后读源码;先列影响,再做修改;最后用测试和运行事实收口。

173