上一篇 下一篇 分享链接 返回 返回顶部

把 AI 编程助手搬进内网:从 Ollama 到 Continue 的完整部署实战

发布人:慈云数据-客服中心 发布时间:22小时前 阅读量:4

AI编程 私有化部署方案|附完整命令

在 AI 编程逐渐成为研发团队标配的今天,越来越多企业开始关注一个核心问题:能不能把 AI 编程助手部署在自己的服务器里?

答案是可以的。

相比直接使用云端 AI 编程工具,私有化部署有几个明显优势:

  • 代码不出内网,降低源代码泄露风险;
  • 数据可控,更适合金融、政企、制造、医疗等高合规行业;
  • 可接入内部知识库,让 AI 理解公司项目、接口文档、规范和历史代码;
  • 成本可控,适合团队长期高频使用;
  • 模型可替换,可以根据预算和性能选择不同大模型。

本文将从实际落地角度,介绍一套相对通用的 AI 编程私有化部署方案,并附上完整命令,帮助你快速在本地服务器、内网服务器或 GPU 机器上搭建可用的 AI 编程环境。


一、整体方案架构

一个完整的 AI 编程私有化部署方案,通常包括以下几个部分:

开发者 IDE
   │
   ├── VS Code / JetBrains 插件
   │
   ▼
AI 编程助手插件
   │
   ├── Continue
   ├── CodeGPT
   └── 自研插件
   │
   ▼
私有化大模型服务
   │
   ├── Ollama
   ├── vLLM
   ├── llama.cpp
   └── LocalAI
   │
   ▼
代码大模型
   │
   ├── DeepSeek-Coder
   ├── Qwen2.5-Coder
   ├── Code Llama
   └── StarCoder2
   │
   ▼
企业内部资源
   │
   ├── Git 仓库
   ├── 接口文档
   ├── 数据库文档
   ├── 技术规范
   └── 知识库

对于大多数团队来说,推荐优先选择以下组合:

Ollama + Qwen2.5-Coder / DeepSeek-Coder + Continue

原因很简单:

  1. 部署简单;
  2. 命令少;
  3. 对机器要求相对灵活;
  4. 能快速接入 VS Code;
  5. 适合中小团队先跑起来。

如果你有较强 GPU 资源,并且需要更高并发,可以选择:

vLLM + Qwen2.5-Coder / DeepSeek-Coder + OpenAI Compatible API

二、服务器配置建议

AI 编程模型对硬件有一定要求,尤其是显存。下面给出几种常见配置建议。

1. 入门测试环境

适合个人体验、功能验证、小规模测试。

CPU:8 核以上
内存:16GB 以上
显卡:可无 GPU
磁盘:100GB SSD
系统:Ubuntu 22.04 LTS

适合模型:

qwen2.5-coder:1.5b
qwen2.5-coder:3b
deepseek-coder:1.3b

这种配置可以运行小模型,但响应速度和代码能力有限。


2. 小团队使用环境

适合 3~10 人团队日常辅助编码。

CPU:16 核以上
内存:64GB 以上
显卡:NVIDIA RTX 4090 / A5000 / L40S
显存:24GB 以上
磁盘:500GB SSD
系统:Ubuntu 22.04 LTS

适合模型:

qwen2.5-coder:7b
deepseek-coder:6.7b
codegemma:7b
codellama:7b

3. 企业级部署环境

适合多人并发、代码知识库检索、统一 API 服务。

CPU:32 核以上
内存:128GB 以上
显卡:A100 / H100 / L40S 多卡
显存:48GB~80GB+
磁盘:1TB NVMe SSD
系统:Ubuntu 22.04 LTS

适合模型:

Qwen2.5-Coder-14B
Qwen2.5-Coder-32B
DeepSeek-Coder-V2
Code Llama 34B
StarCoder2-15B

三、方案一:使用 Ollama 快速部署 AI 编程模型

Ollama 是目前本地运行大模型最简单的工具之一。它可以帮助我们快速下载、管理和运行大模型,并提供本地 API 服务。

1. 更新系统

以下命令以 Ubuntu 22.04 为例。

sudo apt update
sudo apt upgrade -y

安装常用工具:

sudo apt install -y curl wget git vim net-tools htop unzip

2. 安装 NVIDIA 驱动

如果服务器有 NVIDIA GPU,需要先检查显卡。

lspci | grep -i nvidia

查看系统推荐驱动:

ubuntu-drivers devices

自动安装推荐驱动:

sudo ubuntu-drivers autoinstall
sudo reboot

重启后检查:

nvidia-smi

如果能看到 GPU 信息,说明驱动安装成功。


3. 安装 Ollama

执行官方安装命令:

curl -fsSL https://ollama.com/install.sh | sh

查看版本:

ollama --version

启动服务:

sudo systemctl start ollama

设置开机自启:

sudo systemctl enable ollama

查看服务状态:

sudo systemctl status ollama

默认情况下,Ollama 会监听本机地址:

127.0.0.1:11434

如果只是在本机使用,这样即可。如果需要局域网其他机器访问,需要修改监听地址。


4. 配置 Ollama 允许内网访问

编辑 systemd 配置:

sudo systemctl edit ollama

写入以下内容:

[Service]
Environment="OLLAMA_HOST=0.0.0.0:11434"

保存后执行:

sudo systemctl daemon-reload
sudo systemctl restart ollama

检查端口:

sudo ss -lntp | grep 11434

如果防火墙开启,需要放行端口:

sudo ufw allow 11434/tcp
sudo ufw reload

测试接口:

curl http://127.0.0.1:11434/api/tags

如果在其他机器访问:

curl http://服务器IP:11434/api/tags

四、下载并运行代码大模型

1. 推荐模型一:Qwen2.5-Coder

Qwen2.5-Coder 是通义千问系列中的代码模型,在代码生成、解释、重构、补全方面表现较好,中文支持也不错。

拉取 7B 模型:

ollama pull qwen2.5-coder:7b

运行模型:

ollama run qwen2.5-coder:7b

测试问题:

请用 Python 写一个 FastAPI 登录接口,包含 JWT 生成和密码校验。

如果机器配置较低,可以使用小模型:

ollama pull qwen2.5-coder:3b
ollama run qwen2.5-coder:3b

如果显存充足,可以尝试更大模型:

ollama pull qwen2.5-coder:14b
ollama run qwen2.5-coder:14b

2. 推荐模型二:DeepSeek-Coder

DeepSeek-Coder 是非常适合编程场景的模型,尤其适合代码解释、生成、补全和错误排查。

拉取模型:

ollama pull deepseek-coder:6.7b

运行模型:

ollama run deepseek-coder:6.7b

测试:

帮我分析下面这段 Java 代码是否存在线程安全问题,并给出优化方案。

3. 查看已安装模型

ollama list

4. 删除不需要的模型

ollama rm qwen2.5-coder:3b

五、通过 API 调用私有化模型

Ollama 提供 HTTP API,方便 IDE 插件或内部系统调用。

1. 普通生成接口

curl http://127.0.0.1:11434/api/generate \
  -H "Content-Type: application/json" \
  -d '{
    "model": "qwen2.5-coder:7b",
    "prompt": "用 Go 写一个 HTTP 中间件,打印请求耗时。",
    "stream": false
  }'

2. Chat 接口

curl http://127.0.0.1:11434/api/chat \
  -H "Content-Type: application/json" \
  -d '{
    "model": "qwen2.5-coder:7b",
    "messages": [
      {
        "role": "system",
        "content": "你是一个资深后端架构师,擅长 Java、Go、Python 和微服务架构。"
      },
      {
        "role": "user",
        "content": "请设计一个订单系统的数据库表结构。"
      }
    ],
    "stream": false
  }'

3. OpenAI 兼容接口

新版 Ollama 支持 OpenAI Compatible API,便于接入各种插件和系统。

测试命令:

curl http://127.0.0.1:11434/v1/chat/completions \
  -H "Content-Type: application/json" \
  -d '{
    "model": "qwen2.5-coder:7b",
    "messages": [
      {
        "role": "user",
        "content": "请用 TypeScript 写一个防抖函数 debounce。"
      }
    ]
  }'

接口地址:

http://服务器IP:11434/v1

六、接入 VS Code:使用 Continue 插件

Continue 是一个开源 AI 编程助手插件,支持 VS Code 和 JetBrains。它可以接入本地模型,也可以接入 OpenAI、Anthropic、Ollama 等服务。

1. 安装 Continue

在 VS Code 插件市场搜索:

Continue

安装后,打开配置文件。

也可以使用命令面板:

Ctrl + Shift + P

搜索:

Continue: Open Config

2. 配置 Continue 连接 Ollama

配置文件通常位于:

~/.continue/config.json

写入以下配置:

{
  "models": [
    {
      "title": "Qwen2.5 Coder 7B",
      "provider": "ollama",
      "model": "qwen2.5-coder:7b",
      "apiBase": "http://服务器IP:11434"
    }
  ],
  "tabAutocompleteModel": {
    "title": "Qwen2.5 Coder 7B",
    "provider": "ollama",
    "model": "qwen2.5-coder:7b",
    "apiBase": "http://服务器IP:11434"
  },
  "customCommands": [
    {
      "name": "explain",
      "prompt": "请解释选中的代码,说明它的功能、关键逻辑和潜在问题。"
    },
    {
      "name": "review",
      "prompt": "请对选中的代码进行 Code Review,重点关注性能、安全性、可维护性和边界情况。"
    },
    {
      "name": "test",
      "prompt": "请为选中的代码生成单元测试,要求覆盖正常流程、异常流程和边界条件。"
    }
  ]
}

如果 Ollama 和 VS Code 在同一台机器上,可以使用:

"apiBase": "http://127.0.0.1:11434"

配置完成后,即可在 VS Code 中进行:

  • 代码解释;
  • 代码生成;
  • 单元测试生成;
  • Bug 分析;
  • 函数重构;
  • SQL 优化;
  • 正则表达式生成;
  • 接口文档编写;
  • 注释补全。

七、接入 JetBrains 系列 IDE

如果团队使用 IntelliJ IDEA、PyCharm、GoLand、WebStorm 等 JetBrains IDE,也可以安装 Continue 插件。

1. 安装插件

打开:

Settings -> Plugins

搜索:

Continue

安装并重启 IDE。


2. 配置模型

JetBrains 版本 Continue 同样使用配置文件:

~/.continue/config.json

可以复用前文的配置。


八、部署 Web 端 AI 编程助手:Open WebUI

如果希望团队成员通过浏览器访问私有 AI 助手,可以部署 Open WebUI。它可以连接 Ollama,提供类似 ChatGPT 的 Web 页面。

1. 安装 Docker

sudo apt update
sudo apt install -y ca-certificates curl gnupg lsb-release

添加 Docker 官方 GPG key:

sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | \
sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg

添加 Docker 源:

echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] \
https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

安装 Docker:

sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

启动 Docker:

sudo systemctl enable docker
sudo systemctl start docker

检查版本:

docker --version
docker compose version

将当前用户加入 docker 组:

sudo usermod -aG docker $USER

重新登录后生效。


2. 使用 Docker 运行 Open WebUI

如果 Ollama 已经安装在宿主机,并且监听 0.0.0.0:11434,可以执行:

docker run -d \
  --name open-webui \
  --restart always \
  -p 3000:8080 \
  -e OLLAMA_BASE_URL=http://服务器IP:11434 \
  -v open-webui:/app/backend/data \
  ghcr.io/open-webui/open-webui:main

访问地址:

http://服务器IP:3000

首次进入后创建管理员账号,然后选择对应模型即可。


3. 使用 Docker Compose 部署 Open WebUI

创建目录:

mkdir -p ~/ai-coding/open-webui
cd ~/ai-coding/open-webui

创建 docker-compose.yml

vim docker-compose.yml

写入:

services:
  open-webui:
    image: ghcr.io/open-webui/open-webui:main
    container_name: open-webui
    restart: always
    ports:
      - "3000:8080"
    environment:
      - OLLAMA_BASE_URL=http://服务器IP:11434
    volumes:
      - open-webui:/app/backend/data

volumes:
  open-webui:

启动:

docker compose up -d

查看日志:

docker logs -f open-webui

停止:

docker compose down

升级:

docker compose pull
docker compose up -d

九、方案二:使用 vLLM 部署高性能 OpenAI 兼容接口

如果团队并发较高,或者希望统一提供 OpenAI 格式接口,推荐使用 vLLM。vLLM 对 GPU 推理优化更强,适合服务化部署。

1. 安装 Conda

下载 Miniconda:

cd /tmp
wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh

安装:

bash Miniconda3-latest-Linux-x86_64.sh

使配置生效:

source ~/.bashrc

创建环境:

conda create -n vllm python=3.10 -y
conda activate vllm

2. 安装 vLLM

pip install -U pip
pip install vllm

检查:

python -c "import vllm; print(vllm.__version__)"

3. 启动 Qwen2.5-Coder 服务

以 Hugging Face 模型为例:

vllm serve Qwen/Qwen2.5-Coder-7B-Instruct \
  --host 0.0.0.0 \
  --port 8000 \
  --served-model-name qwen2.5-coder-7b \
  --gpu-memory-utilization 0.90 \
  --max-model-len 32768

如果显存不足,可以降低上下文长度:

vllm serve Qwen/Qwen2.5-Coder-7B-Instruct \
  --host 0.0.0.0 \
  --port 8000 \
  --served-model-name qwen2.5-coder-7b \
  --gpu-memory-utilization 0.85 \
  --max-model-len 8192

4. 测试 vLLM OpenAI 接口

curl http://127.0.0.1:8000/v1/chat/completions \
  -H "Content-Type: application/json" \
  -d '{
    "model": "qwen2.5-coder-7b",
    "messages": [
      {
        "role": "user",
        "content": "请用 Java 写一个线程安全的单例模式,并解释原因。"
      }
    ],
    "temperature": 0.2,
    "max_tokens": 1024
  }'

5. Continue 接入 vLLM

修改 ~/.continue/config.json

{
  "models": [
    {
      "title": "vLLM Qwen2.5 Coder",
      "provider": "openai",
      "model": "qwen2.5-coder-7b",
      "apiBase": "http://服务器IP:8000/v1",
      "apiKey": "EMPTY"
    }
  ],
  "tabAutocompleteModel": {
    "title": "vLLM Qwen2.5 Coder",
    "provider": "openai",
    "model": "qwen2.5-coder-7b",
    "apiBase": "http://服务器IP:8000/v1",
    "apiKey": "EMPTY"
  }
}

十、让 AI 理解企业内部代码库

仅仅部署模型还不够。真正好用的 AI 编程助手,应该理解企业内部项目结构、技术规范和业务文档。

可以考虑接入以下内容:

1. Git 仓库代码
2. README 文档
3. 接口文档
4. 数据库表结构
5. 架构设计文档
6. 编码规范
7. 常见故障处理文档
8. 历史需求文档

常见做法是搭建 RAG 知识库系统:

文档/代码
   │
   ▼
文本切分
   │
   ▼
向量化 Embedding
   │
   ▼
向量数据库
   │
   ├── Milvus
   ├── pgvector
   ├── Chroma
   └── Elasticsearch
   │
   ▼
检索增强生成
   │
   ▼
AI 编程助手

如果是轻量级使用,可以先利用 Continue 的上下文能力,例如:

  • 选中代码后提问;
  • 引用当前文件;
  • 引用整个项目文件;
  • 让模型解释某个目录结构;
  • 让模型根据已有代码风格生成新代码。

对于企业级使用,则建议将内部文档和核心代码仓库进行向量化,并增加权限控制,避免不同项目组之间的数据越权访问。


十一、安全与权限控制建议

AI 编程私有化部署虽然解决了“代码不出内网”的问题,但仍然需要做好安全治理。

1. 不建议裸露公网

不要直接将以下端口暴露到公网:

11434
8000
3000

如果必须远程访问,建议使用:

VPN
堡垒机
零信任网关
Nginx 反向代理 + HTTPS + 认证

2. 使用 Nginx 增加访问控制

安装 Nginx:

sudo apt install -y nginx apache2-utils

创建密码文件:

sudo htpasswd -c /etc/nginx/.htpasswd aiuser

配置反向代理:

sudo vim /etc/nginx/sites-available/ai-coding.conf

写入:

server {
    listen 80;
    server_name ai.example.local;

    auth_basic "AI Coding";
    auth_basic_user_file /etc/nginx/.htpasswd;

    location / {
        proxy_pass http://127.0.0.1:3000;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}

启用配置:

sudo ln -s /etc/nginx/sites-available/ai-coding.conf /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl reload nginx

3. 内网防火墙限制访问来源

例如只允许某个网段访问 Ollama:

sudo ufw allow from 192.168.1.0/24 to any port 11434 proto tcp
sudo ufw allow from 192.168.1.0/24 to any port 3000 proto tcp
sudo ufw enable
sudo ufw status

4. 代码与数据审计

建议企业在上线前明确以下规则:

  • 哪些代码可以提交给 AI;
  • 哪些密钥、Token、数据库密码必须脱敏;
  • AI 生成代码是否必须人工 Review;
  • 是否记录用户提问和模型回答;
  • 日志保留多久;
  • 是否允许模型访问生产环境数据;
  • 是否允许跨项目组共享知识库。

十二、常见问题排查

1. Ollama 下载模型很慢

可以尝试更换网络环境,或在能够访问外网的机器下载后迁移模型目录。

Ollama 默认模型目录一般在:

/usr/share/ollama/.ollama/models

也可能在:

~/.ollama/models

查看服务用户:

ps aux | grep ollama

2. 端口无法访问

检查服务是否启动:

sudo systemctl status ollama

检查监听地址:

sudo ss -lntp | grep 11434

检查防火墙:

sudo ufw status

测试本机访问:

curl http://127.0.0.1:11434/api/tags

测试远程访问:

curl http://服务器IP:11434/api/tags

3. GPU 没有被使用

检查 NVIDIA 驱动:

nvidia-smi

检查 Ollama 进程:

ps aux | grep ollama

运行模型时观察显存:

watch -n 1 nvidia-smi

如果显存不足,可以换小模型:

ollama pull qwen2.5-coder:3b
ollama run qwen2.5-coder:3b

4. 模型回答质量不稳定

可以从几个方面优化:

1. 换更大的代码模型
2. 降低 temperature
3. 提供更多上下文
4. 给出明确角色和输出格式
5. 接入项目文档和代码库
6. 使用更适合代码任务的模型

示例 Prompt:

你是一个资深 Java 后端工程师。
请基于 Spring Boot 3、Java 17、MyBatis Plus 编写代码。
要求:
1. 代码风格简洁;
2. 必须包含异常处理;
3. 必须包含参数校验;
4. 输出完整代码;
5. 不要省略 import。

十三、推荐落地路径

如果你的团队刚开始做 AI 编程私有化部署,建议按以下顺序推进:

第一阶段:快速验证

目标是先让模型跑起来。

Ollama + Qwen2.5-Coder 7B + Continue

部署内容:

curl -fsSL https://ollama.com/install.sh | sh
ollama pull qwen2.5-coder:7b
ollama run qwen2.5-coder:7b

然后在 VS Code 中安装 Continue 并连接 Ollama。


第二阶段:团队试用

目标是让 3~10 名开发者稳定使用。

建议增加:

Open WebUI
Nginx 认证
内网访问控制
统一模型配置
常用 Prompt 模板

第三阶段:企业级增强

目标是让 AI 编程助手真正理解企业内部系统。

建议增加:

vLLM 高性能推理
知识库 RAG
权限体系
日志审计
多模型路由
代码安全扫描
私有 Git 集成

十四、一键部署示例脚本

下面给出一个简化版脚本,用于在 Ubuntu 服务器上快速安装 Ollama、拉取 Qwen2.5-Coder,并启动 Open WebUI。

创建脚本:

vim install-ai-coding.sh

写入:

#!/usr/bin/env bash

set -e

MODEL_NAME="qwen2.5-coder:7b"
SERVER_IP=$(hostname -I | awk '{print $1}')

echo "========== 更新系统 =========="
sudo apt update
sudo apt install -y curl wget git vim htop net-tools ca-certificates gnupg lsb-release

echo "========== 安装 Ollama =========="
if ! command -v ollama >/dev/null 2>&1; then
  curl -fsSL https://ollama.com/install.sh | sh
else
  echo "Ollama 已安装"
fi

echo "========== 配置 Ollama 监听地址 =========="
sudo mkdir -p /etc/systemd/system/ollama.service.d
cat </dev/null 2>&1; then
  sudo install -m 0755 -d /etc/apt/keyrings
  curl -fsSL https://download.docker.com/linux/ubuntu/gpg | \
  sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg

  echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] \
  https://download.docker.com/linux/ubuntu \
  $(lsb_release -cs) stable" | \
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

  sudo apt update
  sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
else
  echo "Docker 已安装"
fi

sudo systemctl enable docker
sudo systemctl start docker

echo "========== 启动 Open WebUI =========="
docker rm -f open-webui >/dev/null 2>&1 || true

docker run -d \
  --name open-webui \
  --restart always \
  -p 3000:8080 \
  -e OLLAMA_BASE_URL=http://${SERVER_IP}:11434 \
  -v open-webui:/app/backend/data \
  ghcr.io/open-webui/open-webui:main

echo "========== 部署完成 =========="
echo "Ollama API: http://${SERVER_IP}:11434"
echo "Open WebUI: http://${SERVER_IP}:3000"
echo "模型名称: ${MODEL_NAME}"

赋予执行权限:

chmod +x install-ai-coding.sh

执行:

./install-ai-coding.sh

部署完成后访问:

http://服务器IP:3000

十五、总结

AI 编程私有化部署并不复杂,关键是选对技术路线。

如果你想快速搭建,推荐:

Ollama + Qwen2.5-Coder + Continue + Open WebUI

如果你需要高性能和企业级服务能力,推荐:

vLLM + Qwen2.5-Coder / DeepSeek-Coder + OpenAI Compatible API + RAG 知识库

对于企业来说,AI 编程助手不是简单的“聊天机器人”,而是研发效率基础设施的一部分。它可以帮助开发者完成代码生成、代码解释、单元测试、重构优化、故障排查和文档编写。但与此同时,也必须重视权限控制、代码安全、日志审计和模型输出质量管理。

建议先从小范围试点开始,让核心研发团队真实使用,再逐步接入内部知识库、代码仓库和权限体系。这样既能快速看到效果,也能降低一次性投入和上线风险。

目录结构
全文