先交代我为什么会折腾这套东西。前一阵要把 AI 编程助手放进公司的纯内网环境,也就是研发服务器和办公电脑之间完全不能碰外网那种网络,外部大模型 API 用不了,代码也不能流出机器。查了一圈后,最后落地方案就是标题里这套组合:Qwen Code 负责交互和智能体调度,vLLM 负责推理服务,模型用 Qwen3-Coder 系列。整套跑起来之后,体验接近公网编程助手,同时代码全程留在内网,响应速度在某些场景下甚至更快。
这篇文章不是概念介绍,是我实际部署和调优的记录。我会把硬件准备、离线安装、vLLM 启动参数、Qwen Code 指向本地模型、性能调优、团队共享、踩坑排障都过一遍,尽量做到照做就能复现。如果你只是在自己电脑上随便跑个小模型,这篇也有参考价值,但重点场景是给团队用的内网私服级服务。
1. 为什么内网编程助手要拆成“Qwen Code + vLLM + Qwen3-Coder”三部分
1.1 纯内网部署要解决的三件事
想在断网环境里给团队提供像样的 AI 编程助手,核心不是“能不能生成代码”,而是三个现实问题要同时解决。
第一,模型推理能力要够。写代码不像聊天,经常要处理几千行上下文、跨文件搜索、多轮修改,小模型很容易丢上下文或者生成半吊子代码。所以模型选型不能太凑合。
第二,多人同时用的时候不能互相卡死。如果只是一个人单机用,模型怎么慢都能忍。但团队场景下,不同人同时请求,推理服务必须能排队、批处理、尽量利用显存,否则后发请求会全部超时,体验直接崩塌。这一步就是 vLLM 的活儿。
第三,前端交互得是个“能干活”的智能体。能读懂仓库结构、能自己跑命令、能根据报错改代码,而不是只能在网页上问答。Qwen Code 这类命令行智能体在这里承担的是 IDE 之外的独立助手角色。
这三件事,单一工具都做不全。vLLM 不做交互,Qwen Code 不带模型,Qwen3-Coder 只是模型权重。所以最好的方式是组合:模型权重放在推理服务里,推理服务暴露一个私有 API,客户端只和这个 API 通信。整体就是私有化部署里最常见的“客户端+网关+模型”三层结构。
1.2 三个组件各管哪一段
打个比方,你可以把内网编程助手理解成一个只对你内网开放的“编程外包团队”。
Qwen3-Coder 是这个团队里真正写代码的程序员,它提供写代码、改代码、解释代码、写测试这些能力。但我不能直接把程序员拉去线上开会,它需要一个接待入口。
vLLM 就是那个接待入口。它不仅接待我,还能同时接待团队里的其他人。谁来了先排队,能几个人凑一起处理的请求就合并处理,显存不够的时候自动协调。更重要的是,不管内部用什么方式并行计算,对外都只暴露一个稳定统一的服务接口。
Qwen Code 是“项目经理”。我直接操作它,告诉它需求,它拆解需求、看仓库文件、执行命令、调用工具,把任务一步步拆给模型去完成。它不关心模型跑在哪台机器上,只要一个可以访问的接口。
所以从架构上看,数据和指令流向是:我在终端里操作 Qwen Code,Qwen Code 把临时任务发给 vLLM 暴露的接口,vLLM 把请求真正交给 Qwen3-Coder 的模型权重去推理,再把结果返回。整个过程所有流量都走内网,不经过任何外部节点。
1.3 我为什么不直接用网页版或者 IDE 插件方案
很多人会问:直接用开源项目里的 Web 界面,或者在 IDE 里装个支持自定义模型的插件,不是更省事吗?我的实际感受是,这两类东西适合“轻量自用”,不适合“团队私服”。
Web 项目通常只解决问答或单文件代码补全,缺少对仓库整体结构的理解。让它改一个跨模块的功能,它每次都拿不到完整信息。IDE 插件虽然体验好,但配置灵活度参差,很多插件对自定义模型支持只停留在“能填一个 API 地址”的层面,工具调用、长上下文、函数定义这些高级能力经常对不上。
Qwen Code 这类独立智能体不一样,它把自己定位成一个能用终端工具的智能体,能自己读文件、搜索代码、跑测试、看报错,然后把多步推理串联起来。这正好把 Qwen3-Coder 的代码理解能力发挥出来。单独问一句话生成一段函数,显不出它的优势;但让它“去项目里找到 Redis 缓存那块代码,把并发问题修掉,然后跑一遍单测”,这种多步骤任务才是它的强项。
后面所有章节,我都会围绕这个分工关系展开。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 硬件与离线资源准备:先把基础设施搞定
2.1 一个可以直接参考的硬件配置
先说明白,内网私服级编程助手的体验上限,一半由硬件决定。我用的目标是单机多卡服务器,这张表是可以直接抄的参考:
| 项目 | 最低配置(个人使用) | 推荐配置(团队使用) |
|---|---|---|
| GPU | 单张 24GB 显存(如 RTX 4090 / L20) | 2-4 张 24GB 或更高显存 NVIDIA 卡 |
| 内存 | 64GB | 128GB 及以上 |
| 系统盘 | 100GB SSD(系统+缓存) | 500GB NVMe SSD |
| 模型盘 | 预留 60GB | 预留 100GB 以上(含多个量化版本) |
| CPU | 8 核以上 | 16 核以上 |
| 网络 | 不用外网,内网千兆即可 | 内网万兆更好,尤其多人同时拉大上下文 |
为什么显存这么关键?Qwen3-Coder 系列里,30B-A3B 这种量级的模型是内网部署比较常见的选择,既保证了代码能力,又因为 MoE 结构,实际推理时的活跃参数少,生成速度尚可。但权重文件依然要几十 GB 显存,再加上推理中要占用 KV Cache(可以粗暴理解成模型的临时记忆区),而且编程场景的上下文通常拉得很长,KV Cache 占用更大。所以单张 24GB 卡跑小量化版本可以做个人实验,团队共享就老老实实上多卡。
如果你手里只有 16GB 甚至更小的显卡,也不是完全不能跑,可以选更小的量化版本,并把上下文长度设短。但我的建议是不要把期待放太高,编程助手最怕的就是改到一半忘了前面的需求。
