返回博客
技能详解2026-03-29· 9 分钟阅读

基于图谱写代码:manon_search、manon_graph 与 manon_impact

开发阶段的图谱工具不是搜索引擎的替代品,而是让 AI 在写代码时「看得见」调用关系和依赖链。本文介绍三个查询工具的使用场景,以及 commit 后影响分析的工作原理。

AI 编程工具普及后,「搜索代码」这件事变得更快了,但一个更深的问题没有被解决:AI 在写代码时,看不到它的改动会影响哪里。

这不是智能的问题,是信息的问题。即使是 Claude 3.7 Sonnet,如果你没有告诉它 process_payment() 被 23 个地方调用,它也不会知道。而「告诉它」这件事,靠人工贴代码效率极低,而且容易漏。

图谱工具解决的就是这个问题:在写代码的每一步,给 AI 精确的结构上下文。

三个工具,三类场景

manon_search:不知道关键词时

传统代码搜索(Grep)的前提是你知道关键词。如果你只是知道「我想找处理用户权限的代码」,但不知道函数名,Grep 帮不上忙。

manon_search 把自然语言转为向量嵌入,检索最语义相关的实体,然后沿图谱边展开关联。一次查询返回的不只是匹配的文件,而是与你的问题结构相关的整个代码区域。

典型使用:

  • 「找一下处理 API 限流的逻辑」
  • 「这个项目里哪里做了缓存?」
  • 「找到负责数据库连接池管理的代码」

manon_graph:知道函数名,想看影响范围

知道具体函数名时,manon_graph 做有向图遍历:

  • callers(上游):谁调用了这个函数?改了它会影响哪里?
  • callees(下游):这个函数调用了什么?它的行为依赖哪些模块?
  • both(双向):完整的上下游视图

深度可配置。depth=1 只看直接调用者,depth=2 看调用者的调用者,以此类推。大多数场景 depth=2 已经足够。

典型使用场景:改一个函数之前,先跑 manon_graph(function_name, direction="callers", depth=2),立刻知道这次改动的影响范围。

manon_deep_query:跨模块的架构理解

有时候你需要的不是「找一个函数」,而是理解一个跨越多个模块的系统行为。比如「这个项目的请求从入口到数据库经过了哪些层?」

manon_deep_query 在服务端运行一个多轮查询循环:它会自动识别信息缺口,补充查询,直到能给出一个完整的跨模块答案。一次调用可以覆盖普通搜索需要 10+ 次才能拼出来的架构图。

commit 后的影响分析:manon_impact

manon_impact 是开发阶段最重要的安全网。每次 git commit 后自动触发(通过 git hook),分析这次提交改动了哪些符号,以及这些改动会沿着调用边传播到哪里。

工作流程:

  1. 解析 diff,提取变更的函数/类/变量
  2. 对每个变更符号,沿调用边向上追踪 2 跳(直接调用者 + 调用者的调用者)
  3. 计算影响的实体数量、模块数量、关键路径
  4. 输出 0-100 风险评分,以及受影响的具体位置

风险评分的含义:

评分范围含义建议
0-30低风险,影响局限在少数模块正常 push
31-60中等风险,影响多个模块确认受影响的测试都在跑
61-100高风险,影响核心路径或大量模块先做 code review,再 push

Hooks:强制图谱优先

图谱工具有两个 Claude Code hooks:

PreToolUse(Grep/Glob 前触发):在你用 Grep 搜索代码之前,提醒先查图谱。不是阻止,是提示。大多数情况下,图谱搜索比 Grep 更快、信息更完整。

PostToolUse(git commit 后触发):自动调用 manon_impact,输出这次提交的影响分析。你不需要记得手动跑,每次提交都自动完成。

这两个 hooks 的设计意图是:把「查图谱」从一个需要主动记忆的步骤,变成开发流程的默认行为。

工具选择决策树

你的情况用哪个工具
不知道关键词,描述功能找代码manon_search
知道函数名,要看谁在用它manon_graph(callers)
知道函数名,要看它依赖什么manon_graph(callees)
理解一个跨模块的系统行为manon_deep_query
刚 commit,想知道影响了哪里manon_impact(自动触发)
知道确切关键词,找字符串Grep(图谱不适合这种场景)

为什么这三个工具能减少 91% 的工具调用

在 20 个真实查询任务的测试中,使用图谱工具平均每任务调用 1 次,原生工具平均 13.7 次。

差距来自两点:

  • 一次调用覆盖关联范围:Grep 找到一个函数后,还需要再搜这个函数的调用者,再搜调用者的调用者。图谱一次返回所有层级。
  • 结构信息不需要二次推断:Grep 返回文本匹配,你需要自己理解「这些结果之间是什么关系」。图谱直接返回关系图,不需要二次推断。

减少工具调用的直接好处:Token 节省 94%,AI 的上下文窗口更干净,推理质量更高。

想了解我们如何做软件开发?

我们把这套方法论用在每一个客户项目上。欢迎聊聊你的具体需求。

联系我们