关于 llmgraph
llmgraph 为编码 Agent 分析函数调用关系和代码变更影响,适用于希望在编辑前后核查依赖的开发者。它区分已证明的调用与分析盲区,并说明证据和不确定性。
主要功能
- 01查找函数调用者及不可见调用
- 02分析修改可能造成的破坏
- 03检查编辑后遗漏的调用点
- 04标注结论的确定程度
- 05解释每条结论的依据
适用场景
- 01修改函数签名前查找调用方
- 02检查代码变更遗漏的调用点
- 03区分可证明依赖与动态调用盲区
MCP 相关
提供 MCP 服务,MCP Agent 可使用调用关系、变更影响、盲区和证据查询工具。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
LLMGRAPH
每张调用图都有盲点。我们会告诉你盲点在哪里。
LLMGRAPH 只绘制它能够证实的调用。对于它看不到的调用,它会统计数量,并用直白的语言说明,让你的 Agent 在编辑前就能看到盲点。
我构建 LLMGRAPH,作为编码 Agent 的真实信息层,而真实信息也包括盲点:Agent 会猜测;LLMGRAPH 会证实它能证实的内容,并指出它无法证实的内容。在三个开源代码库上进行的 50 个问题盲测中,没有一个肯定的回答是错的。
两个函数。同一个名称。你的 Agent 分不出来,我们可以。
grep 会读取名称。LLMGRAPH 会追踪调用。它能证实的,就会证实;不能证实的,就会告诉你,精确到它停下来的那一行。
zod 带有两个 addIssueToContext 副本。文本搜索会把它们混在一起:
$ rg -n addIssueToContext # zod v3.23.8
146 lines, from both copies, mixed together
LLMGRAPH 会将它们区分开,并展示推理过程:
llmgraph · who_calls addIssueToContext (src/helpers/parseUtil.ts:72): 71 in a set
⚠︎ type checker starting: answers use our own reading for now; 71 calls unchecked
◇ within_these 71 calls -> one of 1 (closed: repo only) [c] w1
⚠︎ plus 7 dynamic calls nearby that could reach anything w2
– ruled out: 71 same-name calls (proven: other target) [c] w3
assumes [c]: our own reading, not confirmed by the checker
(lines trimmed)
**排除了 71 个相似项,并说明了原因。**而对于类型检查器尚未确认的内容,它也会如实说明。
谁在另一端?
你的 Agent 在顺着线索追查之前,应该先弄清楚。在 requests 中,将 super_len(o) 改为 super_len(o, strict),然后调用 check_my_changes:
llmgraph · check_my_changes: 1 file changed, 16 calls break
16 breaks: misses "strict" w1
⚠︎ breaks if it runs super_len src/requests/models.py:526 PreparedRequest.prepare_body (within_these, one of 1, closed: repo only) [c] w2
⚠︎ breaks if it runs super_len src/requests/models.py:575 PreparedRequest.prepare_content_length (within_these, one of 1, closed: repo only) [c] w3
⚠︎ breaks if it runs super_len tests/test_utils.py:62 TestSuperLen.test_io_streams (within_these, one of 1, closed: repo only) [c] w4
… 13 more test call sites
⚠︎ plus 9 dynamic calls nearby that could reach super_len w18
(lines trimmed)
**准确指出 16 个失效调用,且恰好都是真正受影响的调用。**盲测者的文本搜索找到了同样的 16 个,不多不少。而它无法追踪的 9 个动态调用也都被标记出来,而非忽略。
随后,类型检查器完成了检查。几秒后再问一次:
llmgraph · who_calls super_len (src/requests/utils.py:135): 16 certain
✓ certain src/requests/models.py:526 PreparedRequest.prepare_body w33
+1 more (all certain, same file) w34
✓ certain tests/test_utils.py:62 TestSuperLen.test_io_streams w35
+13 more (all certain, same file) w36
⚠ plus 9 dynamic calls nearby that could reach anything w37
(lines trimmed)
**从“我们自己的阅读结果”变为已发布程序中的 16 个 certain。**它的标签绝不会超出已证实的范围,并会在获得证据后立即升级。
五种标签
其他工具根据传闻勾勒你的代码库,并自信地填补盲点。LLMGRAPH 只用两种颜色工作:已证实内容用墨色标出,未证实内容用直白的警告说明,绝不会把两者混为一谈。
| 标签 | 含义 |
|---|---|
certain | 我们可以证实它确切地是一个函数。 |
exactly_these | 一个已知集合,且其中每个成员确实都能在此处运行。 |
within_these | 是已知列表中的一个;列表中有些项可能永远不会在此处出现。 |
maybe_more | 存在候选项,但可能还有其他项。 |
cannot_see | 没有任何线索。 |
回答不会给出概率数字,而是说明哪些可能性已被排除。
在我们的测试项目中进行测量
在你的 Agent 发起询问后,类型检查器会在不到一秒内确认调用者(Python);而 check_my_changes 会在 LLMGRAPH 完成保存后的更新后,于不到一秒内给出回答。对于也出现在无关代码中的名称,它没有指出任何错误调用者,而纯文本搜索返回了数百行错误结果,Agent 阅读的令牌也不到一半;对于干净且唯一的名称,则没有节省。
测量方法、原始数据以及 LLMGRAPH 的不足之处:BENCHMARKS.md。
你的 Agent 可以询问什么
| 工具 | 回答内容 |
|---|---|
who_calls | 调用此函数的所有位置,以及我们看不到的调用。 |
what_breaks_if_changed | 直接或间接依赖此函数的所有内容,以及我们看不到的内容。 |
check_my_changes | 编辑后:你未更新的调用者,以及任何我们看不到的内容。 |
what_is_unknown | 我们视野中的盲点(动态调用、未知类型、无法读取的文件)及其原因。 |
explain | 我们给出此结论的原因:某一条回答背后的证据。 |
你的代码会在你的机器上读取和分析,我们绝不会收到你的代码、路径、符号或代码库名称、查询或回答。在已发布程序中检查过:它只会联系 beta.llmgraph.in。使用量统计和崩溃报告默认开启,可以关闭(npx -y llmgraph-mcp telemetry off);许可证检查始终开启。隐私页面。
安装
Claude Code(插件):
claude plugin marketplace add brainfoods-studio/llmgraph-agent-plugin
claude plugin install llmgraph@llmgraph
该插件会在你的 Agent 搜索函数或类名之前提供 LLMGRAPH 的答案,且绝不会阻止搜索。当你的 Agent 即将完成时,如果已保存的编辑导致某些调用确定会出错,它会拦截一次并列出这些调用;对于其他情况绝不会拦截。运行 npx -y llmgraph-mcp hook off 即可关闭这两项功能。
**任何 MCP Agent:**添加服务 npx -y llmgraph-mcp(在 Windows 上,某些 Agent 需要运行 cmd /c npx -y llmgraph-mcp),使用 Google 登录一次,然后由你的 Agent 发起请求。设置指南适用于 Claude Code、Antigravity、Cursor、Codex、Gemini CLI、Windsurf 和 OpenCode;我们已在 Claude Code 和 Antigravity 上进行测试。
**当前限制:**Windows x64 · Python 和 TypeScript/JavaScript(其他语言会报告为 cannot_see,不会被视为没有任何内容)· 仓库行数不超过套餐限制 · 仅限受邀参与的 Beta 版,申请邀请 · 个人用户可试用一种套餐,价格。
此仓库包含采用 MIT 许可证的开源设置文件;LLMGRAPH 引擎为闭源软件,并根据 EULA 在你的机器上运行。Brainfoods Studio,印度 · [email protected] · [email protected]
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。