1. 为什么要在私有环境跑 Qwen3.6-35B-A3BQwen3.6-35B-A3B 是通义千问新一代开源代码模型总参数 35B、激活参数约 3B在编程基准上能对标更大规模的稠密模型。它适合谁适合手里有一张 80G 显存卡、想把代码补全和 Agent 能力留在内网、又不想把源码发到公网的团队。它能做什么用 vLLM 拉起一个 OpenAI-Compatible API再用 TaoToken 统一 Key 接入 OpenCode形成本地推理 统一通道 编码工具的闭环。我这次的目标不是把模型跑起来这么简单而是让它成为一个可服务化的节点局域网内稳定访问、工具链能直接调用、上下文和显存都可控。整个过程基于一台 A100 80G 单卡服务器Ubuntu Server 系统Docker 部署 vLLM。踩过的坑主要集中在 KV Cache 显存分配上后面会详细拆。先说结论Qwen3.6-35B-A3B 在单卡 A100 上跑 18K 上下文、56 token/s 左右的生成速度完全够编程和 Agent 交互用。下面从环境准备一路写到 OpenCode 接入和排障。2. TaoToken 前置统一 Key 与 API 通道私有化部署的模型服务跑在局域网但工具链侧如果每个模型都配一套 Key、一套 baseURL维护起来很碎。TaoToken 在这里的角色是统一入口你可以在控制台生成一把 Key把本地 vLLM 的 OpenAI-Compatible 端点和云端模型都挂到同一个通道下OpenCode 这类工具只需要认一个 baseURL 和一把 Key。具体操作路径打开官网 https://taotoken.net/?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content 注册并进入控制台在控制台里创建 API Key建议按项目命名方便后面区分如果你要把本地 vLLM 也纳入统一管理在接入配置里填本地服务的 baseURL比如http://192.168.15.119:8001/v1需要看模型列表和调试对话用模型对话页需要长期编码和 Agent 任务用 Coding PlanAPI 基础地址是 https://taotoken.net/api 注意这个地址不带 UTM 参数直接用于代码里的 baseURL。控制台、API Keys、接入文档这几个页面建议先各扫一眼后面配置时不用来回找。注意TaoToken 是统一 Key 和通道管理不是让你绕过任何合规要求。本地 vLLM 服务仍然跑在你自己的机器上数据不出内网。3. 可复制配置vLLM 启动与 OpenCode 接入3.1 创建容器并挂载模型先建容器名字叫qwen36_35b_gpu0指定用第 0 块 GPU。Qwen3.6-35B-A3B 用通用 vLLM 镜像即可不需要专属镜像docker run -itd \ --name qwen36_35b_gpu0 \ --entrypoint /bin/bash \ --ipchost \ --network host \ --shm-size 16G \ --gpus device0 \ -v /home/ubuntu/Qwen3.6-35B-A3B:/models/Qwen3.6-35B-A3B \ pytorch_vllm:v3_glm_qwen进容器后确认模型权重路径存在再启动服务。端口这里选 8001因为 8000 可能已经被别的服务占用。3.2 vLLM 启动命令第一次启动时我遇到了ValueError: No available memory for the cache blocks. Available KV cache memory: -10.25 GiB。这不是模型加载失败而是 KV Cache 显存分配失败。KV Cache 随序列长度线性增长vLLM 默认只用 70% 显存长上下文下很容易把 KV Cache 空间挤没。调整后的启动命令vllm serve /models/Qwen3.6-35B-A3B \ --served-model-name qwen3.6-35b-a3b \ --tensor-parallel-size 1 \ --max-model-len 18192 \ --gpu-memory-utilization 0.92 \ --max-num-batched-tokens 512 \ --enable-auto-tool-choice \ --tool-call-parser qwen3_coder \ --reasoning-parser qwen3 \ --language-model-only \ --host 0.0.0.0 \ --port 8001关键参数对照参数作用本次取值--max-model-len最大上下文长度18192--gpu-memory-utilization显存使用上限0.92--max-num-batched-tokens单批 token 上限512--tool-call-parser工具调用解析器qwen3_coder--reasoning-parser推理过程解析qwen3把上下文从 32768 降到 18192KV Cache 占用明显下降释放出约 15% 额外显存给 KV Cache引擎就能正常初始化了。3.3 OpenCode 配置骨架模型服务跑通后接入 OpenCode。配置文件放在~/.config/opencode/opencode.jsonmkdir -p ~/.config/opencode cat ~/.config/opencode/opencode.json EOF { $schema: https://opencode.ai/config.json, provider: { qwen_vllm: { npm: ai-sdk/openai-compatible, name: Qwen3.6-35B-A3B LAN vLLM, options: { baseURL: http://192.168.15.119:8001/v1, apiKey: EMPTY }, models: { qwen3.6-35b-a3b: { name: Qwen3.6-35B-A3B, limit: { context: 18192, output: 2048 } } } } }, model: qwen_vllm/qwen3.6-35b-a3b } EOF如果你走 TaoToken 统一通道把baseURL换成https://taotoken.net/apiapiKey换成控制台生成的 Key模型名按通道里配置的写。这样本地和云端模型可以共用一套工具配置。4. 验证请求与成功结果服务启动后另开终端验证模型列表curl http://127.0.0.1:8001/v1/models返回里可能出现两个重复结果这不是报错。因为启动时加了--reasoning-parser qwen3vLLM 会同时返回答案和推理过程属于 Qwen3 推理模式的正常表现。再发一个对话请求确认推理链路curl http://127.0.0.1:8001/v1/chat/completions \ -H Content-Type: application/json \ -d { model: qwen3.6-35b-a3b, messages: [{role: user, content: 用一句话说明快速排序的平均时间复杂度}], max_tokens: 128 }能拿到正常回复就说明 OpenAI-Compatible API 通了。接着在 OpenCode 里选qwen_vllm/qwen3.6-35b-a3b这个模型发一个代码补全请求工具链侧能正常返回就完成了闭环。实测生成速度2048 tokens 耗时约 36.36 秒约 56.3 token/s。这个速度在 35B 模型单卡 A100 推理里属于第一梯队编程和长文本交互都够流畅。5. 本篇常见错排查5.1 KV Cache 显存不足报错No available memory for the cache blocks处理方式是降--max-model-len、提--gpu-memory-utilization、降--max-num-batched-tokens。三者配合先保证引擎能起来再按实际需求往上调。5.2 端口冲突8000 被占用时换 8001同时确认--host 0.0.0.0让局域网能访问。如果 OpenCode 连不上先用curl从工具所在机器测一下 baseURL 是否可达。5.3 工具调用解析失败--tool-call-parser qwen3_coder和--enable-auto-tool-choice要一起加否则 Agent 场景下工具调用会解析不出来。模型名要和 OpenCode 配置里的models键一致。5.4 返回重复结果前面说过这是--reasoning-parser qwen3的正常表现不是 bug。如果你不需要推理过程可以去掉这个参数但 Qwen3 系列的推理能力会受影响。5.5 接入侧 Key 问题走 TaoToken 统一通道时确认 baseURL 是https://taotoken.net/apiKey 从控制台 API Keys 页面生成。接入文档里有各工具的配置示例排障时对照着看更快。6. 把本地模型接进真实开发流模型跑通只是第一步真正有价值的是让它进入日常开发。我的做法是本地 vLLM 负责代码补全和 Agent 任务TaoToken 统一 Key 管理通道OpenCode 作为前端工具。这样换模型、加模型都不用改工具配置。如果你也在做私有化代码模型落地建议先把 vLLM 的显存参数调稳再处理工具链接入。显存没调好后面所有验证都是白费。需要统一 Key 和通道管理从控制台 API Keys 页面开始需要调试模型对话用模型对话页长期编码和 Agent 任务看 Coding Plan。接入文档里有完整的配置骨架照着改 baseURL 和模型名就能跑。