DotNet开发
DotNet开发技术分享,.NET CORE。。。

基于 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 模型:

模型地址:https://huggingface.co/unsloth/Qwen3.5-35B-A3B-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: https://github.com/ggml-org/llama.cpp

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 部署指南

项目文档

部署步骤

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 集成

  1. 通过 @BotFather 创建 Bot,获取 Token。
  2. openclaw.json 中启用:
"channels": {
  "telegram": {
    "enabled": true,
    "botToken": "YOUR_TELEGRAM_BOT_TOKEN"
  }
}
  1. 用户首次交互会生成配对码,管理员批准:
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 镜像(非 rocmmetal

总结与建议

最佳实践建议

  1. 硬件配置:RTX 2080 Ti(22GB)可稳定运行 Q4_K_M 量化版 Qwen3.5-35B,若追求更高性能可考虑升级至 RTX 3090/4090。
  2. 模型选择:单卡 22GB 条件下已达到性能与功能的较好平衡,适合 长上下文、低并发、高精度 的私有化 AI 代理场景。
  3. 安全策略:生产环境应禁用 allowInsecureAuth,并配置 SSL/TLS 加密通信。
posted on 2026-03-09 22:52  JohnCHsu  阅读(0)  评论(0)    收藏  举报