news 2026/7/20 11:23:06

初始化 CodeGraph 索引

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
初始化 CodeGraph 索引

容器启动后,对所有一级子项目批量初始化:

docker exec -it “CONTAINERNAME"batchcodegraphinit.sh"{CONTAINER_NAME}" batch_codegraph_init.sh "CONTAINERNAME"batchcodegraphinit.sh"{CONTAINER_PROJECTS_PATH}”
初始化完成后重启容器,让前置网关重新扫描已初始化项目,一定要执行这步:

docker restart “${CONTAINER_NAME}”
单个项目也可以手动初始化:

docker exec -it “CONTAINERNAME"codegraphinit"{CONTAINER_NAME}" codegraph init "CONTAINERNAME"codegraphinit"{CONTAINER_PROJECTS_PATH}/project-a”
检查状态:

docker exec -it “CONTAINERNAME"codegraphstatus"{CONTAINER_NAME}" codegraph status "CONTAINERNAME"codegraphstatus"{CONTAINER_PROJECTS_PATH}/project-a”
测试查询:

docker exec -it “CONTAINERNAME"codegraphexplore"某个函数名或你的问题"−−path"{CONTAINER_NAME}" codegraph explore "某个函数名或你的问题" --path "CONTAINERNAME"codegraphexplore"某个函数名或你的问题"path"{CONTAINER_PROJECTS_PATH}/project-a”
远程访问验证
检查统一网关:

curl “http://远程机器:HOSTPORT{HOST_PORT}HOSTPORT{HEALTH_ENDPOINT}”
查看项目映射:

curl “http://远程机器:${HOST_PORT}/projects”
检查某个项目后端:

curl “http://远程机器:${HOST_PORT}/project-a/healthz”
OpenClaud/Opencode远程MCP配置
假设远程服务端有以下几个项目

/home/dora/Desktop/Projects/git_rep/
├── ragflow/
├── openclaude/
├── codegraph-mcp-gateway/
下面分别给出OpenClaud/Opencode MCP配置示例

OpenClaud:

{
“permissions”: {
“allow”: [
“mcp__codegraph-codegraph-mcp-gateway__codegraph_explore”,
“mcp__codegraph-codegraph-mcp-gateway__",
“mcp__codegraph-openclaude__codegraph_explore”,
"mcp__codegraph-openclaude__
”,
“mcp__codegraph-ragflow__codegraph_explore”,
“mcp__codegraph-ragflow__*”
]
},
“hooks”: {
“UserPromptSubmit”: [
{
“hooks”: [
{
“type”: “command”,
“command”: “codegraph prompt-hook”
}
]
}
]
},
“mcpServers”: {
“codegraph-ragflow”: {
“type”: “http”,
“url”: “http://192.168.220.128:8000/ragflow/mcp”,
“enabled”: true
},
“codegraph-openclaude”: {
“type”: “http”,
“url”: “http://192.168.220.128:8000/openclaude/mcp”,
“enabled”: true
},
“codegraph-codegraph-mcp-gateway”: {
“type”: “http”,
“url”: “http://192.168.220.128:8000/codegraph-mcp-gateway/mcp”,
“enabled”: true
}
}
}

Opencode:

{
“$schema”: “https://opencode.ai/config.json”,
“model”: “deepseek-ai/DeepSeek-V4-Pro”,
“provider”: {

},
“mcp”: {
“codegraph-openclaude”: {
“type”: “remote”,
“url”: “http://192.168.220.128:8000/openclaude/mcp”,
“enabled”: true
},
“codegraph-ragflow”: {
“type”: “remote”,
“url”: “http://192.168.220.128:8000/ragflow/mcp”,
“enabled”: true
},
“codegraph-codegraph-mcp-gateway”: {
“type”: “remote”,
“url”: “http://192.168.220.128:8000/codegraph-mcp-gateway/mcp”,
“enabled”: true
}
},
“tools”: {
“mcp__codegraph-codegraph-mcp-gateway*”: true,
“mcp__codegraph-openclaude__": true,
"mcp__codegraph-ragflow__
”: true
}
}

OpenClaud CLAUDE.md 和 Opencode AGENTS.md路由规则,这里两个文件内容配置的完全相同

CodeGraph 强制使用规则

当用户问题涉及以下任一场景时,必须先使用 CodeGraph,再回答, 优先使用远程 MCP 工具:

  • 查找函数、类、变量、接口、配置项的定义
  • 分析调用链、依赖关系、数据流
  • 解释某个项目/模块/功能的实现
  • 定位 bug、修改代码、评审代码
  • 询问“在哪里实现”“怎么调用”“谁调用了它”

禁止在完成 CodeGraph 初查前使用 grep、read、逐文件扫描来寻找符号或调用关系。

查询规则:

  1. 先用较小范围查询,不要一次塞入大量关键词。
  2. 每次codegraph_explore优先聚焦一个模块、文件或功能点。
  3. maxFiles优先使用 3 到 6,只有结果不足时再提高。
  4. 如果 MCP 返回超时,缩小查询范围后重试。

项目索引映射

项目路径CodeGraph 索引名触发词
codegraph-mcp-gatewayhttp://192.168.220.128:8000/codegraph-mcp-gateway/mcpcodegraph-mcp-gatewaycodegraph-mcp-gateway, 项目规划
openclaudehttp://192.168.220.128:8000/openclaude/mcpopenclaudeopenclaude
ragflowhttp://192.168.220.128:8000/ragflow/mcpragflowragflow

路由优先级

  1. 如果用户给出了文件路径或当前工作目录,按路径选择索引。
  2. 如果用户明确提到项目名,按项目名选择索引。
  3. 如果只出现通用词,例如 RAG、检索、agent、工具调用,不要仅凭该词选择索引;应根据上下文判断,无法判断时先询问用户。
  4. 不要把rag作为 openclaude 和 ragflow 的共同触发词。

执行流程

  1. 先判断是否是代码理解/定位/调用链类问题。
  2. 选择唯一 CodeGraph 索引。
  3. 调用codegraph_search查找相关符号或文件。
  4. 只有在搜索结果需要展开时,才调用codegraph_explore或委托 Explore 子代理。
  5. 如果 CodeGraph 无结果,说明已检索失败,再使用 grep/read 作为兜底。
  6. 回答时说明使用了哪个索引。
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/19 5:07:50

go基础中碰到的疑惑点

前言初学 Go 时,很多语法规则和 Java、C 系语言差异极大,刷题时经常出现 “看着选项都对,一对答案全错” 的情况。 我整理了刷题过程中 3 个反复踩中的失分点:Go 接口隐式实现的核心逻辑混淆;变量声明、包级 / 局部变量…

作者头像 李华
网站建设 2026/7/19 5:06:39

JavaMail邮件发送开发实战与优化指南

1. 为什么选择JavaMail进行邮件发送开发在当今企业级应用开发中,邮件功能几乎是每个系统的标配需求。JavaMail作为Java平台的标准邮件处理API,已经存在了二十余年却依然保持着强大的生命力。我最初接触JavaMail是在2013年一个电商项目里,当时…

作者头像 李华
网站建设 2026/7/19 5:02:55

ARM CoreSight ETMv4调试实战:从寄存器解析到AM62L追踪配置

1. 项目概述与调试基础设施的重要性在嵌入式系统开发,尤其是基于ARM架构的复杂SoC(如TI的AM62L Sitara处理器)开发中,调试与性能分析往往是决定项目成败的关键。想象一下,你的系统在实验室里跑得好好的,一旦…

作者头像 李华
网站建设 2026/7/19 5:02:12

Facebook级机器学习AB测试:从请求分流到业务归因的工程实践

1. 项目概述:当A/B测试遇上机器学习,Facebook如何把“调参”变成流水线作业 你有没有遇到过这样的场景:模型在离线评估时AUC涨了0.02,上线后CTR却掉了0.3%?或者团队花了两周调出一组超参数,在灰度阶段跑三天…

作者头像 李华
网站建设 2026/7/19 5:01:38

嵌入式系统性能优化:片上存储器与相机ISP的架构解析与实战配置

1. 项目概述在嵌入式系统,尤其是移动设备和实时图像处理领域,片上存储器子系统和相机图像信号处理器是决定系统性能、功耗和最终用户体验的两大基石。前者负责高效、低延迟地存储和提供指令与数据,后者则负责将原始传感器数据转化为我们肉眼可…

作者头像 李华