AI Agent 高级 25分钟

企业代码助手

私有化部署的代码助手,基于企业代码库训练,支持代码生成、审查、重构建议。

ContinueOllamaCodeLlamaVS Code ExtensionDocker

项目概述

企业代码库是公司的核心知识产权。直接使用云端 AI 编程助手(如 GitHub Copilot)意味着代码片段会发送到外部服务器处理,对金融、医疗、军工等敏感行业存在合规风险。

本案例展示了一套完全私有化部署的企业代码助手系统。基于 Continue 开源框架,搭配本地运行的 Ollama/CodeLlama 模型,结合企业内部代码库的 RAG 索引,实现代码生成、代码审查、重构建议等功能,所有数据不出企业内网。

关键指标

75%
代码补全采纳率
提升 3x
代码审查效率
100%
数据不出内网
< 3s
推理延迟

系统架构

系统采用「VS Code Extension + 本地推理 + 企业知识库」三层架构。Continue 插件作为 IDE 前端,通过自定义 API 后端路由到本地 LLM 和 RAG 检索服务。

┌──────────────────────────────────────────────────────┐
│                 开发者 IDE (VS Code)                   │
│  ┌────────────────────────────────────────┐          │
│  │          Continue Extension             │          │
│  │  ┌──────────┐  ┌──────────┐  ┌──────┐  │          │
│  │  │ 代码补全  │  │ 对话问答  │  │ 审查  │  │          │
│  │  └──────────┘  └──────────┘  └──────┘  │          │
│  └───────────────────┬────────────────────┘          │
│                      │ HTTP (内网)                    │
├──────────────────────┴──────────────────────────────┤
│                 企业内网 API 网关                      │
├──────────────────────┬──────────────────────────────┤
│                      │                               │
│  ┌───────────────────▼──────────────┐  ┌──────────┐  │
│  │     本地 LLM 推理集群             │  │  RAG 检索  │  │
│  │  ┌──────────┐  ┌──────────┐     │  │  ┌──────┐ │  │
│  │  │ Ollama   │  │ vLLM     │     │  │  │ 代码库 │ │  │
│  │  │ CodeLlama│  │ DeepSeek │     │  │  │ 索引   │ │  │
│  │  └──────────┘  └──────────┘     │  │  └──────┘ │  │
│  └─────────────────────────────────┘  └──────────┘  │
│                                                       │
│  ┌──────────────────────────────────────────────────┐ │
│  │           企业代码向量库 (Chroma)                  │ │
│  │  代码片段  │  API文档  │  README  │  技术规范     │ │
│  └──────────────────────────────────────────────────┘ │
└──────────────────────────────────────────────────────┘

实现细节

1

本地推理部署

模型选型

主模型选用 CodeLlama-34B(代码生成和审查),辅助 DeepSeek-Coder-6.7B(轻量级补全)。通过 Ollama 管理模型生命周期,支持 GPU 推理加速。

量化优化

使用 GPTQ 4-bit 量化将 CodeLlama-34B 的显存需求从 68GB 降至 20GB,单张 A100-40G 即可运行。推理延迟控制在 1-3 秒,满足交互式编码需求。

负载均衡

多张 GPU 卡组成推理集群,通过 Nginx 做请求分发。高峰期自动扩容(Kubernetes HPA),低峰期缩容至单卡以降低能耗。

2

企业代码库索引

代码抓取与解析

定时扫描 GitLab/GitHub Enterprise 仓库,使用 tree-sitter 解析代码 AST,提取函数签名、类定义、文档字符串、注释等结构化信息。

代码嵌入

使用 CodeBERT 或 starcoder-embedding 模型将代码片段向量化(768 维),存入 Chroma 向量数据库。支持多语言混合索引(Python/Java/TypeScript/Go)。

增量更新

通过 Git webhook 监听代码变更,只有修改过的文件才重新索引。全量索引首次约 2 小时(10 万文件),增量更新平均 < 30 秒。

3

产品功能

智能代码补全

基于 FIM(Fill-in-the-Middle)模式,在编码过程中实时预测后续代码。同时从企业代码库中检索最相似代码片段作为参考上下文。

对话式代码审查

选中代码片段后,Agent 自动分析并给出:潜在 Bug、性能问题、安全漏洞、风格规范违反。支持批量审查 PR。

重构建议

分析代码结构,识别设计模式违规和代码坏味道(过长函数、重复代码、过度耦合),自动生成重构方案和对应的代码 diff。

Continue 自定义配置

{
  // Continue VS Code Extension 配置
  "models": [
    {
      "title": "企业代码助手",
      "provider": "ollama",
      "model": "codellama:34b-code-q4_K_M",
      "apiBase": "http://internal-llm-cluster:11434",
      "completionOptions": {
        "temperature": 0.2,
        "topP": 0.9,
        "maxTokens": 2048
      }
    },
    {
      "title": "代码补全(轻量)",
      "provider": "ollama",
      "model": "deepseek-coder:6.7b-q4_K_M",
      "apiBase": "http://internal-llm-cluster:11434",
      "completionOptions": {
        "temperature": 0.1,
        "maxTokens": 512
      }
    }
  ],
  "contextProviders": [
    {
      "name": "codebase-rag",
      "params": {
        "type": "chroma",
        "url": "http://internal-rag-service:8000",
        "collection": "enterprise-codebase",
        "nResults": 10,
        "minScore": 0.7
      }
    },
    {
      "name": "file",
      "params": {
        "maxTokens": 4096
      }
    },
    {
      "name": "terminal",
      "params": {}
    }
  ],
  "slashCommands": [
    {
      "name": "review",
      "description": "审查选中的代码片段",
      "prompt": "请以下列维度审查代码:安全性、性能、可维护性、代码规范。指出问题并给出修复建议。"
    },
    {
      "name": "refactor",
      "description": "分析代码并提出重构建议",
      "prompt": "分析这段代码的设计模式、代码坏味道和重构机会。为每个问题提供具体的重构方案。"
    },
    {
      "name": "test",
      "description": "为选中代码生成单元测试",
      "prompt": "为以下代码生成 pytest 单元测试。覆盖正常路径、边界条件、错误处理。"
    }
  ],
  "tabAutocompleteModel": {
    "title": "企业代码补全",
    "provider": "ollama",
    "model": "deepseek-coder:6.7b-q4_K_M",
    "apiBase": "http://internal-llm-cluster:11434"
  }
}

经验教训

  • 模型量化后的质量损失可以接受 — CodeLlama-34B 4-bit 量化在代码生成任务上准确率下降不到 3%,但显存需求降低 70%,性价比极高
  • 企业代码索引的质量比规模重要 — 索引 10 万个精心筛选的高质量代码文件,比索引 100 万个仓库所有文件效果好得多。建议从 Top 10 核心项目开始
  • Ollama 的并发能力有限 — 默认只支持单请求串行处理,团队规模超过 20 人时需要换用 vLLM 或 TGI 作为推理后端
  • 安全审计不能少 — 即使私有化部署,也需要审计日志记录所有查询、补全和代码发送,确保合规

更多案例

查看其他 AI 工程化落地案例

返回案例库