基于 Docker + llama.cpp 的本地化 AI 代理平台完整部署指南 本方案已在单卡 22GB 显存(如 RTX 2080Ti)环境下验证,达到性能与功能的较好平衡,适用于 长上下文、低并发、高精度 的私有化 AI 代理场景。
目录
前言
为什么选择本地部署而非调用云端 API?
| 优势 | 说明 |
|---|---|
| 数据安全 | 所有项目代码、文件、交互记录均在内网处理,避免敏感信息外泄。 |
| 成本可控 | 无需支付高昂的 Token 费用,尤其适用于 OpenClaw 这类高上下文、高频交互场景。 |
| 能力自主 | 可自由选择开源模型,自定义上下文长度、并发数、量化精度等参数。 |
为什么模型选择:Qwen3.5 系列
Qwen3.5 采用了一种混合架构,解决超大参数模型在推理时的效率瓶颈。
- ✅ MoE 稀疏激活:Qwen3.5-397B-A17B 总参数 397B,仅激活 17B,激活率 <4.3%,推理成本媲美 20B 级模型。
- ✅ 线性注意力机制:Gated DeltaNet + Gated Attention 混合架构,将注意力复杂度从O(n2) 降至 O(n),原生支持 1M Token 上下文。
- ✅ 长上下文支持:1,048,576 Token 原生支持,无需滑动窗口,适用于全文档分析、长代码库、多轮对话记忆。
模型规格(2026 年 3 月)
| 模型名称 | 参数量 | 开源时间 | 架构类型 | 典型使用场景 |
|---|---|---|---|---|
| Qwen3.5-0.8B | 0.8B | 2026-03-02 | 稠密(Dense) | 智能手表、车载终端、毫秒级响应边缘设备,ARM功耗<1.5W |
| Qwen3.5-2B | 2B | 2026-03-02 | 稠密(Dense) | 轻量级本地AI助手、移动端实时交互,模型体积缩减40%以上 |
| Qwen3.5-4B | 4B | 2026-03-02 | 稠密(Dense) | 轻量化智能体基座,支持多模态输入与工具调用,4GB显存可部署 |
| Qwen3.5-9B | 9B | 2026-03-02 | 稠密(Dense) | 中小企业AI服务平台,数学与代码能力达GPT-oss-120B的92%,16GB显存下32 token/s |
| Qwen3.5-27B | 27B | 2026-02-24 | 稠密(Dense) | 高性能稠密模型首选,代码能力(HumanEval 89.1)居稠密模型之首,适合本地微调 |
| Qwen3.5-35B-A3B | 397B总参 / 3B激活 | 2026-02-24 | 混合专家(MoE) | 企业级Agent核心,工具调用准确率78.2%,性能超越Qwen3-235B |
| Qwen3.5-122B-A10B | 122B总参 / 10B激活 | 2026-02-24 | 混合专家(MoE) | 复杂多步推理与跨应用操作,综合能力90.8(MMLU),逼近旗舰级 |
| Qwen3.5-397B-A17B | 397B总参 / 17B激活 | 2026-02-16 | 混合专家(MoE) | 企业级基座模型,多模态原生推理,MMLU达91.5,对标GPT-5.2 |
llama.cpp 本地模型服务部署
1. 下载模型
Qwen3.5-35B-A3B 性能已超越参数规模大数倍的 Qwen3-235B-A22B 与 Qwen3-VL-235B-A22B,这里使用的是GGUF 格式int4 模型。 从 Hugging Face 获取量化后的 GGUF 模型:
# 创建模型目录
mkdir -p ./models/unsloth/Qwen3.5-35B-A3B-GGUF
# 下载 Q4_K_M 量化模型(约 22GB)
wget -O ./models/unsloth/Qwen3.5-35B-A3B-GGUF/Qwen3.5-35B-A3B-UD-Q4_K_M.gguf \
https://huggingface.co/unsloth/Qwen3.5-35B-A3B-GGUF/resolve/main/Qwen3.5-35B-A3B-UD-Q4_K_M.gguf
2. 部署 llama.cpp 服务
docker run -d \
--gpus all \
--restart unless-stopped \
--name cpp-qwen3.5-35b-a3b-ud-q4_k_m \
--shm-size=16g \
-p 8001:8001 \
-v ./models:/models \
ghcr.io/ggml-org/llama.cpp:server-cuda \
--model /models/unsloth/Qwen3.5-35B-A3B-GGUF/Qwen3.5-35B-A3B-UD-Q4_K_M.gguf \
--alias Qwen3.5-35B-A3B-UD-Q4_K_M \
--ctx-size 128000 \
--n-gpu-layers 99 \
--host 0.0.0.0 \
--port 8001 \
--parallel 1 \
--threads 16
GitHub: github.com/ggml-org/ll…
3. 验证服务
curl http://10.0.0.10:8001/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{
"model": "Qwen3.5-35B-A3B-UD-Q4_K_M",
"messages": [{"role": "user", "content": "写一个快速排序的Python函数"}],
"temperature": 0.7
}'
4. 显存使用情况
| 组件 | 显存占用 | 说明 |
|---|---|---|
| 模型权重(Model Weights) | 18,590.99 MiB ≈ 18.15 GB | 39 个重复层 + 输出层已全部卸载到 GPU |
| KV Cache(键值缓存) | 2,500.00 MiB = 2.44 GB | 支持 128K 上下文,10 层,f16 精度(K: 1.22GB, V: 1.22GB) |
| Recurrent State (RS) 缓冲区 | 62.81 MiB | MoE 架构的专家状态缓存(R + S) |
| 计算临时缓冲区(Compute Buffer) | 493.00 MiB | 用于 Flash Attention 等算子的中间计算 |
| 总计 GPU 显存占用 | ≈ 21.25 GB | 接近 RTX 2080 Ti 的 22GB 上限 |
OpenClaw 部署指南
项目文档
- GitHub: github.com/openclaw/op…
- 文档: docs.openclaw.ai/
- Skills 市场: clawhub.ai/skills
部署步骤
1. 克隆项目
git clone https://github.com/openclaw/openclaw
cd openclaw
2. 构建镜像
docker build -t openclaw:latest -f Dockerfile .
3. 配置 .env
OPENCLAW_IMAGE=openclaw:latest
OPENCLAW_CONFIG_DIR=./config
OPENCLAW_WORKSPACE_DIR=./workspace
OPENCLAW_GATEWAY_PORT=18789
OPENCLAW_BRIDGE_PORT=18790
OPENCLAW_GATEWAY_BIND=lan
4. 初始化服务
docker compose run --rm openclaw-cli onboard
5. 配置本地模型(config/openclaw.json)
{
"agents": {
"defaults": {
"model": {
"primary": "llama-cpp/Qwen3.5-35B-A3B-UD-Q4_K_M"
},
"maxConcurrent": 4,
"workspace": "/home/node/.openclaw/workspace"
}
},
"models": {
"providers": {
"llama-cpp": {
"baseUrl": "http://10.0.0.1:8001/v1",
"apiKey": "not-needed",
"api": "openai-completions",
"models": [{
"id": "Qwen3.5-35B-A3B-UD-Q4_K_M",
"name": "Qwen3.5-35B-A3B-UD-Q4_K_M",
"contextWindow": 128000,
"maxTokens": 65536,
"cost": { "input": 0, "output": 0 }
}]
}
}
},
"controlUi": {
"allowInsecureAuth": true
}
}
6. 启动服务
docker compose up -d openclaw-gateway
打开WebUI 服务网站,如果不清楚,可通过下面代码获取连接和token
docker compose run --rm openclaw-cli dashboard --no-open
7. 终端Telegram 集成
- 通过
@BotFather创建 Bot,获取 Token。 - 在
openclaw.json中启用:
"channels": {
"telegram": {
"enabled": true,
"botToken": "YOUR_TELEGRAM_BOT_TOKEN"
}
}
- 用户首次交互会生成配对码,管理员批准:
docker compose run --rm openclaw-cli pairing approve telegram <CODE>
常见问题与注意事项
| 问题 | 解决方案 |
|---|---|
| GPU 内存不足 | 尝试更低量化(如 Q3_K_M),或减少 --ctx-size |
| OpenClaw 配对失败 | 确保 allowInsecureAuth: true,并检查 Gateway 是否运行 |
| 模型响应慢 | 调整 --threads(建议 = CPU 核心数),确保 --n-gpu-layers=99 |
| 2080 Ti 兼容性问题 | 使用 server-cuda 镜像(非 rocm 或 metal) |
总结与建议
最佳实践建议
- 硬件配置:RTX 2080 Ti(22GB)可稳定运行 Q4_K_M 量化版 Qwen3.5-35B,若追求更高性能可考虑升级至 RTX 3090/4090。
- 模型选择:单卡 22GB 条件下已达到性能与功能的较好平衡,适合 长上下文、低并发、高精度 的私有化 AI 代理场景。
- 安全策略:生产环境应禁用
allowInsecureAuth,并配置 SSL/TLS 加密通信。