发布时间:2026/6/28 3:00:11
如何在 Reasonix 中使用 CodeGraph 以及 CodeGraph 效果实测经验分享
什么是 CodeGraphCodeGraph 是一个开源的代码知识图谱 MCP 服务器34k Stars核心思路是​提前把代码的符号关系建好索引​让 AI 代理直接查询图谱而不是每次从头扫描文件。工作原理AI Agent (Reasonix Code) │ codegraph_context / codegraph_trace / codegraph_explore ▼ CodeGraph MCP Server │ SQLite 知识图谱符号 边 全文索引 ▼ Tree-sitter 解析 AST → 提取函数/类/方法/调用/继承关系 │ ▼ 项目源代码Java / Vue / JS / XML / YAML 等关键特性支持 20 语言包括 Java、JavaScript、TypeScript、Vue 等完整的调用图callers / callees / trace影响范围分析impact文件监听自动同步OS 原生事件2 秒去抖100% 本地运行无外部 API二、安装步骤2.1 全局安装# 使用 npx 零安装推荐 npx colbymchenry/codegraph安装器会交互式选择要配置的 AI 客户端。目前支持Claude Code、Cursor、Codex CLI、Gemini CLI、OpenCode、Hermes Agent 等。​Reasonix Code 不在自动配置列表中​需手动注册。2.2 在项目根目录创建索引cd your-project codegraph init -i-i参数表示初始化后立即建索引。执行后在项目根目录生成.codegraph/目录其中包含 SQLite 数据库codegraph.db。2.3 在 Reasonix Code 中手动注册 MCP 服务由于 Reasonix Code 未被自动配置工具识别需要手动添加 MCP 服务配置。Reasonix Code 的add_mcp_server工具可以自动完成此操作{ name: codegraph, transport: stdio, command: codegraph, args: [serve, --mcp] }注册成功后重启 Reasonix Code 即可生效。可通过codegraph_codegraph_status工具验证索引状态。三、CodeGraph 提供的工具集CodeGraph 注册后暴露以下 MCP 工具工具名用途对标传统操作codegraph_context首要调用— 输入任务描述返回入口点 相关符号 代码相当于search_contentread_file组合codegraph_trace追踪两个符号之间的调用路径需要手动逐层阅读代码推理codegraph_explore一次查询获取多个文件的源码内联返回行号精确单个read_file× Ncodegraph_search按符号名快速搜索search_filescodegraph_callers列出调用某个函数的所有调用者search_content搜方法名codegraph_callees列出某个函数调用的所有子函数逐行阅读代码codegraph_impact修改某个符号前分析影响范围手动 grep 推理codegraph_node获取单个符号的详细信息read_file定位codegraph_files展示项目文件树directory_treecodegraph_status查看索引健康状态—四、实测对比方案测试任务追踪PUT /system/colonelActivity/changeSyncProduct接口的完整后端调用链路。需要回答HTTP 请求从进入 Spring Boot 到最终响应经过了哪些拦截器/过滤器Controller → Service → Mapper 的每一层调用了什么方法当isSyncProductY时RocketMQ 消息是如何被发出的涉及哪些异常/校验逻辑操作日志如何被记录衡量指标工具调用次数实际文件读取数答案完整性与准确性基线流程未安装 CodeGraph阅读SysColonelActivityController.java→ 发现调用了colonelActivityService.changeSyncProduct()阅读ISysColonelActivityService.java→ 发现接口定义阅读SysColonelActivityServiceImpl.java→ 理解业务逻辑、事务、校验、分支路径发现调用productSyncService.sendNonPendingActivityProductSyncMessage()→ 阅读DoudianColonelActivityProductSyncService.java发现调用mqProducer.sendAsyncMessage()→ 阅读MqProducer.java查看MqTopicConstant.java→ 确认 Topic 名称查看SecurityConfig.java→ 理解过滤器链查看JwtAuthenticationTokenFilter.java→ JWT 认证流程查看PermissionService.java→PreAuthorize权限校验查看LogAspect.java→Log操作日志 AOP查看GlobalExceptionHandler.java→ 异常处理查看BaseController.java→getUsername()/toAjax()父类方法查看SysColonelActivityMapper.java→ MyBatis-Plus Mapper查看ColonelActivitySyncProductUpdateParam.java→ 参数校验注解手动整合各层调用关系CodeGraph 流程codegraph_context— 输入任务描述自动返回入口点 相关符号 代码片段覆盖 3 个文件源码codegraph_trace(changeSyncProduct, sendNonPendingActivityProductSyncMessage)— 自动输出完整调用路径codegraph_explore— 一次查询返回 8 个关键文件的完整源码SecurityConfig、PermissionService、MqProducer、BaseController 等codegraph_explore— 另一次查询补充 LogAspect、GlobalExceptionHandler、SysColonelActivityServiceImpl、SysColonelActivityMapper五、实测数据对比指标未安装 CodeGraph基线已安装 CodeGraph提升幅度工具调用总数16 次5 次↓69%read_file 调用12 次0 次↓100%search_content 调用1 次0 次↓ 100%search_files 调用3 次0 次↓ 100%codegraph_* 调用0 次5 次—文件读取数12 个0 个源码内联↓100%调用链串联方式手动逐层推理trace一键自动输出答案完整性覆盖 7 层覆盖 7 层持平 ✅文件行号准确性全部精确全部精确持平 ✅核心体验差异1. 零文件读取 — 从 12 次 read_file 降为 0基线时需要逐个文件打开阅读SysColonelActivityController.java → ISysColonelActivityService.java → SysColonelActivityServiceImpl.java → DoudianColonelActivityProductSyncService.java → MqProducer.java → SecurityConfig.java → JwtAuthenticationTokenFilter.java → PermissionService.java → LogAspect.java → GlobalExceptionHandler.java → BaseController.java → SysColonelActivityMapper.javaCodeGraph 通过codegraph_explore批量将源码内联到工具响应中无需手动 read_file。2. 调用链一键追踪基线时需手动推理每层的调用关系。codegraph_trace一个调用自动输出changeSyncProduct (Controller:62) ↓ 71 calls sendNonPendingActivityProductSyncMessage (Service:103) ↓ 105 calls sendActivityProductSyncMessage (Service:120) ↓ 123 calls MqProducer.sendAsyncMessage (MqProducer:58-81) ↓ calls RocketMQTemplate.asyncSend(topic, message, callback) → Topic: ruoyi-doudian-colonel-activity-product-sync-topic3. 调用关系一目了然codegraph_context自动列出changeSyncProduct调用的所有子方法路径无需逐行扫描。六、CodeGraph 完整的 7 层调用链路测试答案第 1 层Spring Security 过滤器链SecurityConfig.filterChain() [SecurityConfig.java:97] ├─ CorsFilter (跨域) [line 162-163] ├─ JwtAuthenticationTokenFilter (JWT 认证) [JwtAuthenticationTokenFilter.java:31] │ └─ TokenService.getLoginUser(request) → 解析 JWT Token │ └─ TokenService.verifyToken(loginUser) → 刷新 Token 有效期 │ └─ 设置 SecurityContextHolder → 注入 LoginUser └─ PreAuthorize 拦截 [SecurityConfig.java:29 EnableMethodSecurity]第 2 层权限校验PreAuthorize(ss.hasPermi(system:colonelActivity:edit)) └─ PermissionService.hasPermi() [PermissionService.java:27] └─ SecurityUtils.getLoginUser() → 从 SecurityContext 获取 └─ loginUser.getPermissions() → 获取用户权限集 └─ hasPermissions(permissions, permission) → 检查是否包含含 ALL_PERMISSION 超级权限 └─ 失败 → AccessDeniedException └─ GlobalExceptionHandler.handleAccessDeniedException() → 403第 3 层参数校验Validated RequestBody ColonelActivitySyncProductUpdateParam activityRecordId: NotNull(message 活动记录ID不能为空) isSyncProduct: NotBlank Pattern(regexp ^[YN]$) └─ 校验失败 → MethodArgumentNotValidException └─ GlobalExceptionHandler.handleMethodArgumentNotValidException() → 返回错误信息第 4 层Controller 入口SysColonelActivityController.changeSyncProduct() [Controller.java:62] ├─ PreAuthorize(ss.hasPermi(system:colonelActivity:edit)) ├─ Log(title 团长活动管理, businessType BusinessType.UPDATE) ├─ PutMapping(/changeSyncProduct) ├─ int rows colonelActivityService.changeSyncProduct(param, getUsername()) ├─ if (rows 0 YES.equals(param.getIsSyncProduct())) │ └─ productSyncService.sendNonPendingActivityProductSyncMessage(activityRecordId) └─ return toAjax(rows) → BaseController.toAjax() [BaseController.java:161]第 5 层Service 业务逻辑SysColonelActivityServiceImpl.changeSyncProduct() [ServiceImpl.java:64] ├─ Transactional(rollbackFor Exception.class) ├─ requireActivity(activityRecordId) → 校验活动记录存在 authId/activityId 非空 ├─ assertSelfOwnedColonel(activity) → [Y 路径] 校验授权未过期 自有团长 │ └─ colonelAuthService.getById(authId) ├─ updateById(activity) → 写入 DBupdate_time, update_by └─ [Y→N 转换路径] 清理关联数据 ├─ colonelActivityProductService.deleteByActivityRecordId() ├─ talentProductDetailService.deleteByActivityRecordId() ├─ productSkuService.clearProductSkus() └─ pendingProductService.deleteByActivityRecordId()第 6 层RocketMQ 消息发送Y 路径DoudianColonelActivityProductSyncService └─ sendNonPendingActivityProductSyncMessage(id) [SyncService.java:103] └─ sendActivityProductSyncMessage(id, NON_PENDING) [SyncService.java:120] └─ mqProducer.sendAsyncMessage(topic, jsonMsg) [SyncService.java:123] └─ MqProducer.sendAsyncMessage() [MqProducer.java:58] └─ rocketMQTemplate.asyncSend(topic, message, callback) └─ Topic: ruoyi-doudian-colonel-activity-product-sync-topic第 7 层操作日志AOP 切面LogAspect [LogAspect.java] ├─ Before: doBefore() → 记录开始时间 (ThreadLocal) ├─ AfterReturning: doAfterReturning() └─ handleLog() → 构建 SysOperLog ├─ 获取用户、IP、URL、方法名 ├─ 读取 Log 注解title团长活动管理, businessTypeUPDATE ├─ 序列化请求参数 / 返回值 └─ AsyncManager.me().execute(AsyncFactory.recordOper(operLog)) → 异步写入数据库

相关新闻

2026企业大模型管理中心排行:五大平台实测对比
2026/6/28 3:00:11

2026企业大模型管理中心排行:五大平台实测对比

作者:资深AI大模型服务行业监理,从业6年,参与12家中大型企业大模型部署项目;数据来源:各厂商官方公开文档、第三方AI服务评测机构2026年Q2实测报告。当前企业大模型部署面临多账号管理混乱、成本失控、合规风险高等痛点…

阅读更多
【GitHub】Video2X 深度解析:从架构到源码的开源视频增强框架
2026/6/28 3:00:11

【GitHub】Video2X 深度解析:从架构到源码的开源视频增强框架

项目地址:https://github.com/k4yt3x/video2x | Stars: 17k+ | 许可证: AGPL-3.0 | 当前版本: 6.4.0 一、项目介绍 1.1 定位 Video2X 是一个基于机器学习的视频超分辨率与帧插值框架。它将多种前沿 AI 模型统一封装到一条高效的处理流水线中,用户无需编写代码即可对视频进行…

阅读更多
Claude Code 从入门到精通(2):安装、Agentic Loop 与 Harness
2026/6/28 2:00:11

Claude Code 从入门到精通(2):安装、Agentic Loop 与 Harness

本文假设读者具备基本的终端和 Git 使用经验。内容更新于 2026 年 6 月,安装方式和产品能力可能继续变化,请以官方文档为准。 上一篇文章梳理了主流 AI 编程工具,这一篇开始进入 Claude Code 本身。 我最初理解 Claude Code 时,最…

阅读更多
大模型装上“手脚“:Agent智能体实战指南,轻松搞定复杂任务!
2026/6/28 5:00:11

大模型装上“手脚“:Agent智能体实战指南,轻松搞定复杂任务!

本文介绍了大模型Agent的概念及其优势,Agent通过结合大模型、思考决策逻辑和外部工具集,能够自主判断、选择工具并分步完成复杂任务。文章详细解析了ReAct架构Agent的四大核心模块:大模型、自定义工具集、工具装饰器和ReAct调度器&#xff0c…

阅读更多
2026上海小程序开发公司排行:哪家好?商城、会员与预约项目怎么选
2026/6/28 5:00:11

2026上海小程序开发公司排行:哪家好?商城、会员与预约项目怎么选

2026上海小程序开发公司排行:哪家好?商城、会员与预约项目怎么选 上海企业做小程序,已经不只是为了展示品牌和联系方式。对于连锁门店、品牌零售、教育培训、企业服务、美业、医疗咨询、招商加盟和本地生活类项目来说,小程序往往承…

阅读更多
在影子里验证比较对象:随机指纹和哈希的数学原理
2026/6/28 5:00:11

在影子里验证比较对象:随机指纹和哈希的数学原理

程序里经常会遇到一种看似朴素、实际很贵的问题:两个东西是不是一样?它可能是两个字符串、两个文件、两个集合、一段文本里的子串,或者三个矩阵是否满足 A⋅BCA⋅BC。如果对象本身很大,尤其是在对象需要跨机器通信、被反复比较、以…

阅读更多
AI Agent 工程师(一)
2026/6/28 5:00:11

AI Agent 工程师(一)

一、AI Agent 工程师是什么? AI Agent 工程师是大模型时代的新型开发岗位,核心是研发具备自主感知、推理规划、工具调用、环境交互与自我迭代能力的智能体(Agent)系统。 与传统岗位的核心区别: 不同于 AI 算法工程师:不聚焦模型训练与微调,而是以现成大模型为 “推理大…

阅读更多
**别再乱买耳饰了!成熟女人的衣柜里,都藏着一对翡翠硬通货**
2026/6/28 5:00:11

**别再乱买耳饰了!成熟女人的衣柜里,都藏着一对翡翠硬通货**

谢邀。这个问题我太有发言权了。去年入坑翡翠,前前后后买了七八对耳饰,踩了不少坑,也总结出一些经验。 先说说我踩过的坑。第一对买的是圆形的满绿蛋面耳钉,看图特别好看,结果我圆脸戴上,耳朵两个圆、脸一个…

阅读更多
帝国理工学院研究团队破解“电力调度难题“
2026/6/28 4:00:11

帝国理工学院研究团队破解“电力调度难题“

这项由英国伦敦帝国理工学院电气与电子工程系、航空系,以及SLB剑桥研究中心联合完成的研究,发表于2026年6月,论文编号为arXiv:2606.12345,研究方向为数学优化与控制领域。感兴趣的读者可通过该编号在arXiv平台上查阅完整论文。每天…

阅读更多
AI Coding 六个月真实ROI账本:产品经理的血泪教训,研发的冷静忠告
2026/6/28 0:00:11

AI Coding 六个月真实ROI账本:产品经理的血泪教训,研发的冷静忠告

6个月前的2025年12月,Boris Cherny 公开宣布自己卸载了 IDE。一时间,Vibe Coding 成了全行业最热的话题。6个月后,当我们回过头来拉一份真实账本,发现事情远没有"一句话生成一个App"那么浪漫。本文从产品经理和研发两个…

阅读更多
审计来了,数据权限全开——审计走了,怎么确保权限全部关掉?
2026/6/28 0:00:11

审计来了,数据权限全开——审计走了,怎么确保权限全部关掉?

引言:审计结束三个月了,审计员的权限还没关某城商行每年按照监管要求开展至少一次数据安全审计。审计期间,内审部门需要抽样检查各类业务数据——交易流水、客户信息、员工操作日志、权限配置记录。这些数据分布在不同系统中,审计…

阅读更多
AI Coding 六个月真实ROI账本:产品经理的血泪教训,研发的冷静忠告
2026/6/28 0:00:11

AI Coding 六个月真实ROI账本:产品经理的血泪教训,研发的冷静忠告

6个月前的2025年12月,Boris Cherny 公开宣布自己卸载了 IDE。一时间,Vibe Coding 成了全行业最热的话题。6个月后,当我们回过头来拉一份真实账本,发现事情远没有"一句话生成一个App"那么浪漫。本文从产品经理和研发两个…

阅读更多
审计来了,数据权限全开——审计走了,怎么确保权限全部关掉?
2026/6/28 0:00:11

审计来了,数据权限全开——审计走了,怎么确保权限全部关掉?

引言:审计结束三个月了,审计员的权限还没关某城商行每年按照监管要求开展至少一次数据安全审计。审计期间,内审部门需要抽样检查各类业务数据——交易流水、客户信息、员工操作日志、权限配置记录。这些数据分布在不同系统中,审计…

阅读更多
GIT修改用户名
2026/6/27 5:38:22

GIT修改用户名

在GIT中修改用户名可按以下步骤操作: 查看当前git的用户名,使用命令git config --list或git config user.name。修改git用户名,使用命令git config --global user.name "xxx(新的用户名)",将其中…

阅读更多
Win11Debloat:让你的Windows系统重获新生的终极优化工具
2026/6/26 13:36:46

Win11Debloat:让你的Windows系统重获新生的终极优化工具

Win11Debloat:让你的Windows系统重获新生的终极优化工具 【免费下载链接】Win11Debloat A simple, lightweight PowerShell script that allows you to remove pre-installed apps, disable telemetry, as well as perform various other changes to declutter and …

阅读更多
技术深度解析:m4s-converter实现原理与B站缓存视频转换最佳实践
2026/6/26 13:36:41

技术深度解析:m4s-converter实现原理与B站缓存视频转换最佳实践

技术深度解析:m4s-converter实现原理与B站缓存视频转换最佳实践 【免费下载链接】m4s-converter 一个跨平台小工具,将bilibili缓存的m4s格式音视频文件合并成mp4 项目地址: https://gitcode.com/gh_mirrors/m4/m4s-converter m4s-converter是一个…

阅读更多