AI 模型与选型10 分钟阅读
私有化部署 AI 编程助手:在自己的 GPU 服务器上搭建私有 Copilot
私有化部署的 AI 编程助手会把您的源代码留在您掌控的 GPU 服务器上,无论多少开发者使用,月费都固定不变。下文介绍如何自建代码大模型:挑选模型,按团队规模确定服务器规格,部署模型并启用工具调用,把 VS Code、JetBrains 和终端智能体接入服务器,并严格限制访问。
CryptGPU 团队发布于

核心要点
- 私有化部署的 AI 编程助手,就是在您掌控的 GPU 服务器上运行 Qwen3-Coder-Next 或 Devstral Small 2 等开放权重代码模型,并通过兼容 OpenAI 的 API 供 VS Code、Cline、Continue 或 Aider 调用,因此您的代码不会发送给外部 AI 服务。
- 自动补全和智能体需要不同的模型:Continue 的文档指出,大多数最先进的自动补全模型都不超过 100 亿参数;编程智能体则需要可靠的工具调用能力和较长的上下文。
- 每个并发请求都需要自己的 KV 缓存:在 BF16 下,一个 64K token 的请求在 Devstral Small 2 上约占 10.7 GB,在 Qwen3-Coder-Next 上则约为 1.6 GB,因为后者的 48 层中只有 12 层保留 KV 缓存。
- 按 CryptGPU 的选型规则,FP8 精度的 Qwen3-Coder-Next 同时处理 16 个 64K token 的智能体请求时,约需 105 GB:能容纳它的最便宜服务器是 4× RTX 5090,每月 $1,316。
- VS Code 内置的聊天功能可以通过 Custom Endpoint(自定义端点)使用私有化部署的模型,无需 GitHub 账户,也无需订阅 Copilot,但它的内联建议无法使用本地模型。
什么是私有化部署的 AI 编程助手?
私有化部署的 AI 编程助手(也常被称作本地部署的 Copilot 替代方案),就是运行在您掌控的 GPU 服务器上的开放权重代码模型:它通过兼容 OpenAI 的 API 对外提供服务,您的编辑器或终端智能体调用的是这个 API,而不是某个云服务。您的源代码、提示词和生成内容都留在这台服务器上;您为服务器付费,而不是按席位付费;用哪个模型也由您决定。
- 私有仓库依然私有。作为上下文发送的代码只会到达您的服务器,记录哪些内容也由您决定。
- 不按席位收费,没有速率限制。只要服务器跟得上,2 名开发者和 20 名开发者的月费完全一样;限制只来自 GPU 的显存和速度。
- 模型由您来选。您可以一直沿用在自己代码库上表现良好的版本,等更好的开放模型出现再切换,或者用您自己的代码微调一个模型。
取舍也确实存在。GitHub Copilot 的套餐中列出的是 Anthropic、OpenAI 和 Google 的闭源模型(GitHub,核实于 2026年10月19日),这些模型的权重并未公开,因此私有化部署的助手只能运行开放模型,其质量需要您用自己的代码来检验。而且服务器要由您自己运维。如果想在同类服务器上搭建私有聊天服务,请参见如何私有化部署大模型。
自动补全、聊天和智能体需要不同的模型
| 任务 | 要求 | 适合的模型 |
|---|---|---|
| 自动补全(Tab 补全) | 经过中间填充(fill-in-the-middle,FIM)训练的小型快速模型:它接收光标前后的代码,写出两者之间的内容 | Continue 推荐的 Qwen2.5-Coder 1.5B 或 7B;任何 Qwen3-Coder 模型 |
| 聊天与代码编辑 | 优秀的指令模型,上下文要足够长,能容纳您附加的文件 | 下一张表中的任何模型 |
| 读取、编辑和运行代码的智能体 | 可靠的工具调用和较长的上下文:智能体的每个请求都会附带它的指令、工具定义以及它读取的文件 | Qwen3-Coder-Next、Devstral Small 2 |
Continue 的文档指出,“大多数最先进的自动补全模型都不超过 100 亿参数,继续增大参数也不会显著提升性能”,而且 GPT-5 或 Claude 等商业模型并未针对自动补全所用的提示词格式进行训练(Continue)。Qwen 表示,中间填充“在 Qwen3-Coder 的每个版本中都受支持”,Qwen3-Coder-Next 也不例外(Qwen3-Coder),因此如果您宁愿只用一个模型而不是两个,智能体模型也可以兼顾代码补全。至于智能体,Ollama 建议为编程工具设置至少 64,000 个 token 的上下文(Ollama)。
该私有化部署哪个代码模型?
我们的目录中有两个专为编程智能体打造的模型,另有三个通用模型也能用作编程助手。所需显存按我们的选型规则计算,即权重大小 × 1.2,GPU 显存按 92% 计为可用,与各模型页面一致:
| 模型 | 参数量 | 设计用途 | vLLM 或 SGLang(FP8 或原生精度) | Ollama(默认版本) |
|---|---|---|---|---|
| Qwen3-Coder-Next | 80B MoE · 激活 3B | 编程智能体与本地开发,256K 上下文 | 95 GB:4× RTX 5090,$1,316 | 62 GB:1× RTX PRO 6000,$959 |
| Devstral Small 2 | 24B | 智能体软件工程,256K 上下文 | 31 GB:2× RTX 4090,$538 | 18 GB:1× RTX 4090,$269 |
| Qwen3.8 27B | 27B | 编程与长程智能体任务,262K 上下文 | 34 GB:2× RTX 4090,$538 | 22 GB:1× RTX 4090,$269 |
| gpt-oss-120b | 117B MoE · 激活 5.1B | 推理,原生函数调用 | 78 GB:1× RTX PRO 6000,$959 | 78 GB:1× RTX PRO 6000,$959 |
| gpt-oss-20b | 21B MoE · 激活 3.6B | 更低延迟,本地使用 | 17 GB:1× RTX 4090,$269 | 17 GB:1× RTX 4090,$269 |
- Qwen3-Coder-Next 是一个混合专家(MoE)模型,共有 800 亿个参数,每个 token 激活 30 亿个,原生上下文为 262,144 个 token,没有思考模式。Qwen 提到它可以集成到 Claude Code、Qwen Code、Kilo 和 Cline 等 CLI 和 IDE 平台中,并发布了官方 FP8 检查点
Qwen/Qwen3-Coder-Next-FP8。 - Devstral Small 2 是一个 240 亿参数的密集模型,以 FP8 格式发布,上下文窗口为 256K。Mistral 称它“足够轻量,单块 RTX 4090 即可运行”:按我们的规则,Ollama 的 15 GB 版本用一块就能放下,完整的 FP8 权重则需要两块。
- Qwen3.8 27B 默认开启思考模式,可以按请求关闭;gpt-oss 的推理强度可以设为低、中、高三档。两者也都能回答与编程无关的问题。
我们开放模型目录中更大的模型,例如 GLM-5.3-Flash 和 Kimi K2.6,需要多 GPU 服务器。最终选定之前,请先在您自己的代码仓库上测试两个候选模型。模型信息取自 Hugging Face 上的模型卡片:Qwen3-Coder-Next、Qwen3-Coder-Next-FP8、Devstral Small 2、Qwen3.8 27B、gpt-oss-120b、gpt-oss-20b;Ollama 各版本的大小取自其模型库。
开发团队需要多少 GPU 显存
我们的规则只考虑了少量中等上下文长度的请求。团队需要更多显存,因为每个并发请求都带有自己的 KV 缓存,即其上下文中每个 token 的键和值,而智能体的请求又往往很长。请按同一时刻运行的请求数来估算,而不是按席位数:
memory needed = weights + KV cache per request × requests in flight
KV per token = 2 × attention layers × KV heads × head dimension × 2 bytes (BF16)
Devstral Small 2 有 40 层,每层 8 个 KV 头,头维度为 128:每个 token 约 0.16 MB,一个 64K token(65,536 个)的请求约需 10.7 GB。Qwen3-Coder-Next 的 48 层中只有 12 层保留 KV 缓存,每层 2 个 KV 头,头维度为 256;其余 36 层使用 Gated DeltaNet,这是一种线性注意力,上述公式没有计入它的状态。算下来每个 token 约 0.025 MB,每个 64K 请求约 1.6 GB(Devstral 配置、Qwen 配置)。使用 FP8 权重时:
| 并发的 64K token 请求数 | 8 | 16 | 32 |
|---|---|---|---|
| Devstral Small 2,BF16 KV 缓存 | 112 GB:4× RTX 5090,$1,316 | 198 GB:4× RTX PRO 6000,$3,836 | 370 GB:8× RTX PRO 6000,$7,672 |
| Devstral Small 2,FP8 KV 缓存 | 69 GB:1× RTX PRO 6000,$959 | 112 GB:4× RTX 5090,$1,316 | 198 GB:4× RTX PRO 6000,$3,836 |
| Qwen3-Coder-Next,BF16 KV 缓存 | 92 GB:4× RTX 5090,$1,316 | 105 GB:4× RTX 5090,$1,316 | 131 GB:2× RTX PRO 6000,$1,918 |
- 混合注意力在团队场景中优势明显。Qwen3-Coder-Next 的权重是 Devstral Small 2 的三倍,但使用 BF16 缓存时,从 6 个并发请求起,它所需的显存反而更少。
- FP8 KV 缓存只占一半的字节数(在 vLLM 中使用
--kv-cache-dtype fp8;vLLM 建议使用校准过的缩放因子以获得最佳质量:vLLM)。这样,一块 RTX PRO 6000 就能容纳 Devstral Small 2 并同时处理 11 个请求。 - 最便宜的方案未必最简单。四块 RTX 5090 要通过 PCIe 拆分模型;而一块 H200($2,279)在单块 GPU 上就能容纳 Qwen3-Coder-Next,还能留出约 31 个 64K token 请求的空间。
这些数字只是估算:推理引擎自身也要占用显存,真实请求的长度也各不相同。同样的计算也适用于单个开发者:在 64K 上下文下,Ollama 版的 Devstral Small 2 使用 Ollama 默认的 f16 缓存约需 26 GB(最便宜的配置:1× RTX 5090,每月 $329),使用 OLLAMA_KV_CACHE_TYPE=q8_0 则约需 20 GB(1× RTX 4090,每月 $269)。团队用起来之后,请关注等待中的请求数和 KV 缓存使用率(vLLM 指标)。其他模型可以用选型助手估算,最适合 LLM 推理的 GPU 一文则比较了带宽和每 GB 价格。
部署模型并启用工具调用
智能体要通过工具来工作,因此推理引擎必须能解析模型发出的工具调用:在 vLLM 中,需要加上 --enable-auto-tool-choice 以及该模型对应的解析器(vLLM)。以 Qwen3-Coder-Next 为例,使用其模型卡片中给出的解析器(需要 vLLM 0.15.0 或更高版本):
# 在服务器上执行:一块 H200;如用两块 GPU,加上 --tensor-parallel-size 2
KEY=$(openssl rand -hex 32); echo "$KEY"
vllm serve Qwen/Qwen3-Coder-Next-FP8 --served-model-name qwen3-coder-next \
--host 127.0.0.1 --port 8000 --api-key "$KEY" \
--enable-auto-tool-choice --tool-call-parser qwen3_coder \
--max-model-len 131072
--served-model-name为您的工具提供一个简短的模型名称;--max-model-len把每个请求限制在 131,072 个 token 以内(模型本身支持 262,144 个),从而为每个请求的缓存设定了上限。- Devstral Small 2 使用
--tool-call-parser mistral --enable-auto-tool-choice,gpt-oss 则使用openai解析器。 - SGLang 0.5.8 或更高版本在模型卡片给出的命令中使用同一个解析器,再加上
--api-key即可,默认监听 127.0.0.1:30000(SGLang)。 - 使用 Ollama 时,一条
ollama pull devstral-small-2就能起步,但它的 API 不校验任何密钥;除非调高OLLAMA_NUM_PARALLEL,否则每个模型一次只处理一个请求;而且 GPU 显存低于 24 GiB 时,默认上下文只有 4K token。请按照我们的 Ollama 指南中的服务设置,把OLLAMA_CONTEXT_LENGTH设为至少 64000。
安装、Docker 和多 GPU 选项见使用 vLLM 部署 LLM 推理服务。
配置 VS Code、JetBrains 或终端智能体
下面的每个工具都调用同一个接口:通过下一节的 SSH 隧道访问 http://localhost:8000/v1,并带上密钥和服务端设定的模型名称。VS Code 内置的聊天功能可以直接使用它:打开 Chat: Manage Language Models,选择 Add Models,再选 Custom Endpoint 并将 API 类型设为 Chat Completions,然后补全 VS Code 打开的 chatLanguageModels.json 文件(以 Qwen3-Coder-Next 为例):
[
{
"name": "GPU server",
"vendor": "customendpoint",
"apiKey": "${input:gpuServerKey}",
"apiType": "chat-completions",
"models": [
{
"id": "qwen3-coder-next",
"name": "Qwen3-Coder-Next (self-hosted)",
"url": "http://localhost:8000/v1/chat/completions",
"toolCalling": true,
"vision": false,
"maxInputTokens": 114688,
"maxOutputTokens": 16384
}
]
}
]
两个 token 上限加起来正好等于服务器的 --max-model-len;toolCalling 则让聊天中的智能体可以使用该模型。VS Code 的文档说明,这类模型无需 GitHub 账户,也无需订阅 Copilot 即可使用,但不能用于补全:“目前,您无法为内联建议连接本地模型”(VS Code 文档)。如果您使用的是公司的 Copilot 套餐,管理员的策略必须允许使用自有模型。
| 工具 | 运行环境 | 如何指向您的服务器 |
|---|---|---|
| Cline | VS Code、JetBrains、终端 | API Provider 选择“OpenAI Compatible”,Base URL 填 http://localhost:8000/v1,填入您的密钥,Model ID 填 qwen3-coder-next(文档)。除非开启自动批准(auto-approve),否则每次修改文件、每条终端命令都需要您批准(GitHub)。 |
| Kilo Code | VS Code、JetBrains、终端 | 依次进入 Settings、Providers、Custom provider:Provider API 选择“OpenAI Compatible”,Base URL 和密钥同上(文档) |
| Aider | 终端 | 在环境变量中设置 OPENAI_API_BASE 和 OPENAI_API_KEY,然后运行 aider --model openai/qwen3-coder-next(文档) |
| Continue | VS Code、JetBrains | config.yaml:provider: openai,并设置 apiBase 和 apiKey;Agent 模式需要 capabilities: [tool_use];再添加第二个模型,赋予 autocomplete 角色(文档、配置参考)。自最终版本 2.0.0 发布以来,该代码仓库已设为只读,不再维护(GitHub)。 |
| Tabby | 自带服务端,配合 IDE 插件使用 | config.toml:配置一个带中间填充提示词模板的 vllm/completion 模型,用于代码补全(文档) |
| Roo Code | — | 已于 2026年5月15日关停;其代码仓库已归档(GitHub) |
要实现 Tab 补全,请使用 Continue 的 autocomplete 角色或 Tabby,在智能体模型之外再运行一个支持中间填充的小模型。Continue 的示例是 Ollama 上的 qwen2.5-coder:1.5b,大小为 986 MB;它不在我们的目录中,但您拥有 root 权限,可以安装任何模型。
为团队提供安全的访问方式
让推理引擎只监听 127.0.0.1,切勿对外发布 8000(vLLM)、30000(SGLang)或 11434(Ollama)端口。vLLM 的密钥只保护部分路由,其安全指南也提醒不要只依赖它。安全的访问方式有两种:
每位开发者一条 SSH 隧道。在一个仅用于隧道的账户中,把每位开发者的公钥各写成单独的一行:该密钥只能转发到 API 端口,其他什么都做不了;删除这一行,就撤销了此人的访问权限(sshd 手册):
# 在服务器上执行,只需一次
sudo useradd -m -s /usr/sbin/nologin tunnel
sudo install -d -m 700 -o tunnel -g tunnel /home/tunnel/.ssh
# 每位开发者一行,填入其公钥
echo 'restrict,port-forwarding,permitopen="127.0.0.1:8000" ssh-ed25519 AAAA... alice@laptop' \
| sudo tee -a /home/tunnel/.ssh/authorized_keys
# 在每位开发者的电脑上执行;之后 API 地址为 http://localhost:8000/v1
ssh -N -L 8000:127.0.0.1:8000 tunnel@203.0.113.10
restrict 会禁用转发和终端,port-forwarding 重新开启转发,permitopen 把转发限定在 API 上,nologin shell 则不提供命令行。密钥和 ~/.ssh/config 的配置见 SSH 访问。
TLS 反向代理:适合没有 SSH 访问权限的人。用 Caddy 只转发 /v1/(我们的示例),并只允许您团队的 IP 地址访问。这样所有人共用同一个 API 密钥,因此有人离开时要更换密钥。
CryptGPU 适合什么场景
CryptGPU 按月出租独享 GPU 服务器,从一块 GeForce 显卡到八块数据中心 GPU,提供 SSH root 权限,您的显卡上也不会有其他租户。Qwen3-Coder-Next 和 Devstral Small 2 都在我们的目录中:下单时,“软件”步骤可以免费安装 vLLM、SGLang 或搭配 Open WebUI 的 Ollama,以及这两个模型中的任意一个;付款完成链上确认后,服务器会在 10 分钟内上线。隧道账户、编辑器设置和自动补全模型(如果需要)则由您自己添加。价格按服务器计算,而不是按开发者人数:RTX 4090 每月 $269,RTX PRO 6000 每月 $959,H200 每月 $2,279。您可以用比特币、以太坊、USDT、门罗币或莱特币付款,且无需 KYC。
如果您需要闭源模型、带单点登录(SSO)的托管服务,或者每周只用几个小时 GPU,CryptGPU 就不是合适的选择。服务器由您自己管理,包括更新和安全,我们也不公布 SLA。未续费的服务器会在付费月结束时停止运行,磁盘也会被清空,因此请把您的配置和微调得到的适配器另行保存。
常见问题
私有化部署的模型能取代 GitHub Copilot 吗?
在聊天和智能体方面,上述工具能让您用自己的模型获得同样的工作流程。不同之处有两点:Copilot 的闭源模型无法私有化部署,因此效果取决于您选择的开放模型;Tab 补全则需要借助 Continue 或 Tabby 等扩展,因为 VS Code 的内联建议无法使用本地模型。
哪些代码模型能在单块 GPU 上运行?
按我们的规则,Ollama 版的 gpt-oss-20b 用一块 RTX 4090(每月 $269)即可放下,64K 上下文的 Devstral Small 2 用一块 RTX 5090($329)即可;Ollama 版的 Qwen3-Coder-Next(52 GB,4-bit)和 gpt-oss-120b 用一块 RTX PRO 6000($959)即可放下。如需完整的 FP8 权重并供团队使用,请参见上面的表格。
一台服务器能供多少名开发者共用?
这取决于同一时刻运行多少个请求、请求有多长,而不是席位数。请用上面的公式按峰值估算,然后关注 vLLM 中等待的请求:如果 KV 缓存已满时还有请求在排队,就说明您需要更多显存或更短的上下文。
我的代码会离开服务器吗?
模型运行在您的服务器上,因此提示词和生成内容不会发送给任何模型提供商。但编辑器和扩展仍可能向其开发方发送使用数据;如果您给智能体提供了能联网的工具,它也会访问互联网:请检查它们的设置。Continue 的最终版本已移除其匿名遥测功能。




