AI 提效战略转型方法论

阶段 3 · 基础设施(可跳过)

给 AI 装上"眼睛和记忆"——业务知识 RAG、代码知识图谱、Skill 仓库、MCP 网关。

基础设施 = 让 AI 从"概率性盲读"升级为"确定性查证"。业务 RAG 让 AI 懂私有知识,代码图谱让 AI 改代码前看到影响范围,Skill 仓库复用团队能力,MCP 网关把企业服务暴露给 Agent。四件套是为大代码库/复杂业务准备的,小团队可跳过。

跳过前提(重要):本阶段是知识基础设施,专为"代码量大、项目多、业务复杂"的团队设计。如果你的情况是:①代码库不大(单仓库、几万行内);②项目少(没有多仓库微服务);③业务知识不算复杂——请直接跳过本阶段,用 CLAUDE.md + grep + 良好代码组织就够,强行建基础设施是过度工程。本阶段适合:多仓库微服务、百万行级代码、复杂业务知识库、跨团队协作的大型组织。
🧰 本阶段速查 (做什么 · 产出什么 · 用什么)
  • 🎯 做什么:业务知识 RAG + 代码知识图谱 + Skill 仓库 + MCP 网关(大代码库 / 复杂业务才需要,小团队跳过)
  • 📦 产出与汇报周报(基建进展)+ 基础设施交接说明
  • 🔧 工具code-lens(代码图谱,主推)/ skillhub(Skill 仓库)/ 《代码知识图谱深度解析》
  • 👥 角色手册开发手册(基建主力:RAG / 图谱 / Skill)

1. 为什么:AI 需要"眼睛和记忆"

工具和培训到位后(阶段 2),AI 还差最后一段:它不懂你的私有业务看不见代码全貌留不住团队能力。三个痛点直接拖垮落地质量:

本阶段四件套(RAG / 代码图谱 / Skill 仓库 / MCP 网关)就是解决这三件事——让 AI 从"概率性盲读"升级为"确定性查证"。但它们是为大代码库/复杂业务准备的,小团队可跳过(见上方"跳过前提")。

2. 业务知识 RAG 服务

通用大模型不懂你的业务(产品手册、内部规范)。RAG = 先检索知识库片段再喂给模型,让它"开卷考试"。自研业务 RAG 服务(基于 DB-GPT)的核心:向量库抽象 + 两阶段检索(多路召回→CrossEncoder 重排)+ 多租户隔离

# milvus_store.py · 两阶段检索(召回率优先→精排提精度)
with concurrent.futures.ThreadPoolExecutor() as executor:
    future_default = executor.submit(self.similar_search_plus, text, topk, expr, None)
    future_v3      = executor.submit(self.similar_search_plus, text, topk, expr, self.embedding_v3)
    future_new     = executor.submit(self.similar_search_new,   text, topk, new_expr or expr)
# 三路并发召回 → 按原文去重 → CrossEncoder 重排 → min_score 过滤
# 多租户隔离:把租户标识拼进 Milvus 过滤表达式
expr = 'corp_code in ["{0}", "default"] and resource_type in ["knowledge","course"]'.format(body.corp_code)
all_docs = client.similar_search(body.current_question, 5, expr)  # default = 全租户共享

3. 代码知识图谱(内部工具:code-lens)

🎯 实践建议:直接使用内部项目 code-lens(Tree-sitter → 知识图谱 → MCP 工具,10 个 MCP 工具,覆盖 ELS 218 仓库)。本节讲透设计原理帮你理解"为什么这么设计、怎么用好";想深入架构或自研可看 《代码知识图谱:架构深度解析》

3.1 为什么用知识图谱,不用 RAG

AI 改代码常因"看不见全貌"酿成事故。传统 Graph RAG 让 LLM 发 4+ 次查询才拼出完整上下文;代码知识图谱在索引期就把关系预算好,一次调用拿全。三大价值:① 可靠——LLM 漏不掉上下文(工具响应已塞满);② 省 token——不用 10 次查询去理解一个函数;③ 解放小模型——工具做了重活,降低对顶级模型的依赖(企业成本杀手锏)。

图谱和 RAG 不是二选一,而是分层共存:确定性关系(CALLS / IMPORTS / EXTENDS)走图查询(一次拿全调用链);语义相似走 BM25 + 向量搜索(找符号)。图谱管"结构/影响",搜索管"找符号",各司其职。

3.2 图谱建模设计

属性图(Property Graph,非 RDF 三元组)——能跑 Cypher、能存向量、LLM 好写查询。

3.3 索引管线(6 阶段)

阶段做什么关键技术
① 扫描 + 结构建 File / Folder + CONTAINS 边路径扫描,不读内容
② 分块解析Tree-sitter 多语言(14+ 语言)解析 AST,提取符号 + 关系Worker 线程池并行(8 线程)、20MB 字节预算分块控内存
③ 跨文件类型传播沿 import 依赖拓扑排序(Kahn 算法),上游导出类型"播种"到下游分层并行重解析,解决 user.address.getCity().save() 链式调用
④ 社区发现Leiden 算法按 CALLS 边聚类 → Community 功能域modularity 评分,自动识别"认证模块""支付模块"等功能边界
⑤ 执行流追踪从入口点(无调用者的函数)沿 CALLS BFS 前向追踪 → ProcessmaxDepth=10、去重、标记 intra/cross_community(跨社区流程更值得关注)
⑥ 业务概念提取Route(API 端点)/ Tool(MCP 定义)/ ORM 数据流 / Entity→Table 映射框架感知(Next.js / Laravel / MyBatis / Prisma 等)
企业级缺口:当前主流工具是 commit 级全量重建。上百项目必须实现文件级增量git diff --name-only 只重解析变更文件 + 受影响 import 闭包),配 CI webhook(merge 触发)+ 夜间 cron(活跃仓库全量刷新)双轨刷新。

3.4 MCP 工具设计(14 个工具,三大类)

// 通用 MCP Server 创建(基于 @modelcontextprotocol/sdk)
const server = new Server(
  { name: 'code-graph', version: pkgVersion },
  { capabilities: { tools: {}, resources: {}, prompts: {} },
    instructions: CODEGRAPH_INSTRUCTIONS });   // ~80 行 MUST/NEVER 工作流
类别工具做什么
理解类context / route_map / topic_map / table_context看清结构:360° 符号视图(含读写/调用链/MQ)、路由→handler→消费方、表外键关系
变更类impact / detect_changes / rename / api_impact评估影响:爆炸半径 + 风险等级(LOW/MEDIUM/HIGH/CRITICAL)、git diff→受影响符号、安全改名(图+文本双路径)
查询类cypher / cross_repo_search自由 Cypher 图查询 / 跨仓库文本搜索(补图谱盲区)

每个工具响应末尾自动追加 "Next 提示"(如 context 之后提示跑 impact),对抗"LLM 调一次工具就停",形成自引导工作流

两条铁律(有代码图谱时,写进 instructions):① NEVER edit code without first running impact(改任何符号前必跑影响分析);② NEVER commit without running detect_changes(提交前必跑变更映射)。
跳过本阶段(无图谱)的团队,用 grep + 人审 + git diff 替代,能力降级但闭环能跑(见阶段 4 工作流说明)。
指令工程实测:instructions 控制在 ~80 行(超 120 行依从度衰减);用 RFC 2119 措辞(MUST/NEVER);关键工作流内联(skill 文件被忽略率 56%,所以不能依赖 skill)。

3.5 企业级建设方案(上百项目团队)

整体架构四层:索引层(Tree-sitter 管线)→ 图存储层 → MCP 暴露层(统一网关)→ Agent 集成层(hooks 自动注入)。

图存储双轨

多仓库索引策略

N+1 反模式警示:跨库高频查询必须建预聚合 sidecar 索引,别每次现查(早期版本 route_map 每次开 240+ 数据库连接,后来用 sidecar 解决)。

推广路径:① 试点(3-5 个高频改动核心服务,量化"漏改率下降")→ ② 标准化(AGENTS.md 模板 + CI 强制 detect_changes 门槛 + GUARDRAILS 失败模式沉淀)→ ③ 全员(中心 MCP 网关 + SSO + 项目级权限,普通开发者只读,架构治理角色开放跨库查询)。

📂 开源参考:这类工具基于开源组件(Tree-sitter 解析 + 图存储 + MCP 暴露)。内部已在用 code-lens(功能最对标:Tree-sitter → 知识图谱 → MCP 工具,10 个工具 + 爆炸半径);想对比同类开源项目的可参考:
deepwiki-open(仓库→可交互 wiki + RAG 问答,DeepWiki 开源版)
sourcebot(自托管代码搜索 + MCP,开源 Sourcegraph 替代)
GitNexus(零服务器本地运行,npx gitnexus setup 一键配置,多仓库 + 架构可视化,适合快速上手)

4. Skill 仓库(团队 Skill 仓库)

把团队重复工作流沉淀成可复用 Skill,编排 OpenSpec(规范)+ Superpowers(执行)。核心:阶段路由表(6 阶段拆独立 .md,每次只读当前阶段)+ Hook 强制激活

| 阶段 | 调用技能 | 代码图谱工具 |
| Stage 1 需求探索 | superpowers:brainstorming | — |
| Stage 3 计划拆分 | superpowers:writing-plans | impact, locate |
| Stage 5 验证 | verification-before-completion | detect_changes |
每次只读取当前执行的 Stage 文件(渐进式披露,省 Token)

4.1 两层 Skill 架构 + RAG 联动(降 Token 关键)

团队 Skill 仓库要分两层,核心是把"业务数据"和"能力逻辑"分离,让 Skill 保持轻量、Token 大幅下降:

层级放什么谁维护
公共 Skill公司级通用能力:代码生成、自检查、测试用例生成、代码提交部署等架构组统一维护
项目级 Skill含 RAG 调用逻辑 + 项目专属规则(编码规范、接口风格)项目负责人维护
🔑 降 Token 的关键:业务数据(项目结构、代码注释、功能描述)不塞进 Skill,而是入 RAG 向量库按需检索。这样项目级 Skill 极轻(只有规则 + 检索逻辑),不必每次把整个项目知识塞进上下文——与本节"代码图谱省 token""CLI 优于 MCP 省 token"是同一思路:能检索/查证的就不盲读

Skill 生命周期:AI 生成初始 → 人工审核(符合规范)→ 试点验证 → 持续优化 → 复用推广,并与 RAG 数据更新保持同步。

📂 开源平台推荐:SkillHub——上面讲的是"团队 Skill 仓库怎么做",想直接用现成开源平台的,推荐 iflytek/skillhub(科大讯飞出品,Apache 2.0):一个自托管的私有智能体技能注册中心,专为内网/防火墙后部署设计,能力正好覆盖本节需求:①发布 + 语义化版本(beta/stable/latest 标签);②团队命名空间(Owner/Admin/Member 角色 + 发布策略);③审核与治理(命名空间审核 + 全局推广 + 审计日志);④全文搜索 + 收藏/评分/下载量;⑤CLI 优先(兼容 ClawHub 协议,一条命令装到 ~/.claude/skills);⑥安全扫描器(vetter 规则审核 Skill 安全性)。技术栈 Java 21 + Spring Boot + React 19 + PostgreSQL,Docker Compose / K8s 一键部署。适合想要"私有化 + 治理"的团队 Skill 共享平台、又不想从零造的中大型团队

5. MCP 工具网关

把企业内部 Nacos 注册的 Dubbo/Spring 服务零代码封装成 MCP 工具,供 AI Agent 调用。基于 Spring AI Alibaba MCP Gateway:

// GatewayController.java · 暴露 Nacos 工具
@GetMapping("/tools")
public List<Map<String,String>> listTools() {
    McpGatewayToolCallbackProvider provider = McpGatewayToolCallbackProvider.builder()
            .toolCallbacks(mcpGatewayToolsInitializer.initializeTools()).build();
    // 从 Nacos 动态拉取注册的 MCP Server → 封装成 ToolCallback[]
    return Arrays.stream(provider.getToolCallbacks()).map(t -> Map.of(
            "name", t.getToolDefinition().name(),
            "description", t.getToolDefinition().description())).toList();
}
CLI 优于 MCP:每个 MCP 服务器的工具定义默认常驻烧 token。能用 gh/aws/kubectl 完成的别用 MCP;MCP 只用于"没有 CLI 等价物"的场景(如连接企业内部服务)。

6. 角色视角 + 案例 + 清单

Leader

先判断是否需要本阶段(看代码量/项目数);需要时优先建代码图谱(改代码安全)和 Skill 仓库(能力复用)。

开发者

改代码前必跑 impact;用 Skill 仓库的团队工作流;通过 MCP 调企业服务。

PM

业务知识库交给 RAG;业务问答准确率上去后,PM 写需求可基于 RAG 的事实。

案例:时代光华基础应用组用代码知识图谱工具 code-lens 给 AI 装"代码眼睛",bug 排查时 cross_repo_search 定位跨仓库调用链,累计排查 144 个生产 bug(覆盖率 80.4%,code-lens 真实数据);用业务 RAG 服务让 AI 准确回答业务知识问题,幻觉大幅下降。

常见坑:①过度工程——小代码库也建全套基础设施,CLAUDE.md + grep 就够(见"跳过前提");②全量重建而非增量——上百项目扛不住 commit 级全量重建,必须文件级增量 + CI/夜间双轨刷新;③N+1 跨库查询——不做 sidecar 预聚合,高频查询每次开数百连接;④有图谱却跳过 impact 盲改——等于白建,铁律是改前必跑影响分析;⑤什么都塞 MCP——能用 CLI 的别用 MCP,工具定义常驻烧 token。
📋 阶段3 落地清单(仅大型团队)
  • 已判断确实需要基础设施(多仓库/百万行/复杂业务),非过度工程
  • 业务知识 RAG:向量库抽象 + 两阶段检索 + 多租户隔离
  • 代码图谱:MCP 工具集 + 两条铁律(impact/detect_changes)+ Claude hooks 自动注入
  • Skill 仓库:团队工作流编排 + Hook 强制激活
  • MCP 网关:企业服务零代码暴露,但 CLI 优先、定期审计消耗