跳到主要内容OpenClaw + Ollama 集成指南:本地私有化部署 LLM | 极客日志TypeScriptNode.jsAI
OpenClaw + Ollama 集成指南:本地私有化部署 LLM
综述由AI生成介绍如何通过 OpenClaw 与 Ollama 集成实现本地大语言模型(LLM)的私有化部署。方案解决了云端 API 成本高、数据隐私风险及网络依赖问题。内容涵盖硬件要求确认、Ollama 安装配置、上下文窗口扩展、OpenClaw 对接设置、模型量化优化及混合路由策略。通过实战案例展示了搭建本地代码审查助手的全过程,实现了零成本、数据不离本地的 AI 智能体运行环境。
王者24 浏览 
零成本运行 AI 智能体:OpenClaw+Ollama 本地私有化部署完全指南
告别 API 账单,让 AI 真正属于你自己——数据隐私 + 零 Token 成本 + 离线可用
引言:为什么需要本地模型?
在 OpenClaw 的生态中,模型是 AI 的'大脑'。无论是 GPT-4 还是 Claude,云端大模型虽然强大,但存在三个无法回避的问题:
- 成本居高不下:一个中等规模的团队,每月 API 费用轻松超过$500
- 隐私风险:敏感代码、商业文档、个人数据必须上传到厂商服务器
- 网络依赖:断网环境 AI 直接'罢工'
OpenClaw + Ollama 的组合正是为解决这些问题而生。Ollama 作为轻量级本地大模型管理工具,能将 Llama、Qwen 等开源模型部署在你的电脑上,让 OpenClaw 彻底摆脱云端依赖,实现本地推理、数据私有化、零 Token 成本的全闭环体验。
本地部署模式
用户指令 → OpenClaw 网关 → 本地 Ollama (Llama/Qwen) → 返回结果 (零成本,数据留在本地)
云端部署模式
用户指令 → OpenClaw 网关 → 云端 API (GPT-4/Claude) → 返回结果 (每 Token 计费,数据上传厂商)
本文将手把手教你完成 OpenClaw+Ollama 的完整集成,从安装部署到性能优化,再到混合模型策略和实战案例,让你拥有真正属于自己的 AI 智能体。
一、Ollama 部署与配置:搭建本地'大脑'
1.1 硬件要求
在开始之前,先确认你的硬件是否满足要求:
| 配置项 | 最低要求 | 推荐配置 |
|---|
| GPU | NVIDIA 显存≥4GB(可运行 4B 模型) | NVIDIA 显存≥8GB(流畅运行 7B~14B 模型) |
| 内存 | 16GB | 32GB 及以上 |
| 磁盘空间 | 20GB 空闲(SSD 优先) | 50GB 以上 SSD |
| 处理器 | Intel i5/Ryzen 5 | Intel i7/Ryzen 7 或 Apple M 系列 |
特别说明:
- 无独立显卡可使用 CPU 推理,但速度会大幅下降
- Apple Silicon(M 系列芯片)通过 Metal 加速,性能优秀
- 显存 4GB 可运行 Qwen2.5-4B 等轻量模型
1.2 Ollama 一键安装
macOS/Linux 用户:
curl -fsSL https://ollama.com/install.sh | sh
Windows 用户:
- 访问 Ollama 官网 下载 Windows 安装包
双击运行,默认下一步完成安装打开 PowerShell(管理员身份)验证:安装完成后,Ollama 会自动注册为系统服务,开机自启。
1.3 拉取基础大模型
Ollama 支持一键拉取主流开源模型。推荐通义千问系列,中文适配性最佳:
ollama pull qwen2.5:7b
ollama pull qwen3:8b
ollama pull qwen2.5:4b
ollama pull llama3:8b
拉取过程耗时 5~20 分钟,取决于网络速度。模型文件会自动存储在 Ollama 目录。
1.4 验证本地对话
输入'你好',看到模型正常回复,说明 Ollama 已就绪。
1.5 关键定制:扩展上下文窗口(必做)
OpenClaw 要求模型上下文窗口**≥16000 tokens**,而 Ollama 基础模型默认仅 4096 tokens。必须手动定制扩展:
基础模型 (上下文 4096) → 创建 Modelfile (设置 num_ctx 32768) → 创建自定义模型 (新模型 上下文 32768) → 满足 OpenClaw 要求
Windows PowerShell(管理员身份):
# 1. 切换到用户根目录
cd C:\Users\<你的用户名>
# 2. 创建 Modelfile 配置文件
@"FROM qwen2.5:7b PARAMETER num_ctx 32768"@ | Out-File -Encoding ascii Modelfile
# 3. 验证配置文件
Get-Content Modelfile
# 4. 创建自定义模型(命名为 qwen2.5:7b-32k)
ollama create qwen2.5:7b-32k -f Modelfile
# 5. 验证自定义模型
ollama list
# 应显示 qwen2.5:7b-32k
ollama show qwen2.5:7b-32k --modelfile
# 确认包含 num_ctx 32768
echo "FROM qwen2.5:7b\nPARAMETER num_ctx 32768" > Modelfile
ollama create qwen2.5:7b-32k -f Modelfile
ollama list
二、OpenClaw 对接 Ollama:让大脑连接身体
2.1 OpenClaw 安装
npm install -g openclaw
openclaw --version
若权限不足,Windows 请以管理员身份运行 PowerShell,或执行:
npm install -g openclaw --unsafe-perm
2.2 交互式配置:对接本地 Ollama
执行配置向导,将 OpenClaw 指向本地 Ollama:
| 配置步骤 | 操作要求 | 输入/选择内容 |
|---|
| Model/auth provider | 选择模型提供商,拉到列表最后 | Custom Provider |
| API Base URL | 本地 Ollama 的 API 地址 | http://127.0.0.1:11434/v1 |
| API Key | 任意字符串(不可留空) | ollama(或自定义如123456) |
| Endpoint compatibility | 接口兼容模式 | OpenAI-compatible |
| Model ID | 本地自定义模型名 | qwen2.5:7b-32k |
| 后续所有配置项 | 暂不配置渠道、技能等 | 全部选择Skip for now / No |
配置完成后,若显示'Verification successful',表示连接成功;控制台会显示 OpenClaw Web UI 地址(http://127.0.0.1:18789)和管理员 Token,务必保存 Token。
2.3 解决核心报错:模型上下文窗口过小
Model context window too small (4096 tokens). Minimum is 16000
这是因为 OpenClaw 缓存了原始模型的 4096 参数,需要手动修改配置文件:
- 主配置文件:
C:\Users\<你的用户名>\.openclaw\openclaw.json
- 模型配置文件:
C:\Users\<你的用户名>\.openclaw\agents\main\agent\models.json
- 用记事本打开两个文件
- 搜索
"maxTokens"或"contextWindow"
- 将值从
4096改为32768
- 保存文件,重启 OpenClaw:
openclaw gateway restart
2.4 测试调用
在浏览器打开 http://127.0.0.1:18789,粘贴 Token 登录。输入测试指令:
如果模型正常响应,说明 OpenClaw+Ollama 集成成功!
三、模型适配优化:让本地模型更好用
3.1 提示词适配
不同模型的提示词格式存在差异。Ollama 兼容 OpenAI 格式,但某些模型有特殊要求。
通用适配方案:在 OpenClaw 的~/.openclaw/agents/main/agent/system.md中,针对不同模型设置 system prompt:
# 当使用 Qwen 系列模型时
你是一个有帮助的 AI 助手,用中文回答,保持简洁。
# 当使用 Llama 系列时(英文模型需明确语言)
You are a helpful assistant. Answer in Chinese.
3.2 上下文窗口调整
OpenClaw 允许在配置中动态调整上下文窗口大小:
openclaw config get models
openclaw config set models.providers.custom.options.num_ctx 16384
- 简单对话:4K~8K 足够
- 文件分析、长文档处理:16K~32K
- 代码审查、复杂推理:根据模型能力选择上限
| 任务类型 | 上下文需求 | 备注 |
|---|
| 简单对话 | 4K-8K | 节省内存 |
| 文档处理 | 16K-32K | 平衡性能 |
| 复杂分析 | 32K+ | 需高配硬件 |
3.3 解决'模型输出不稳定'问题
temperature: 0.7
top_p: 0.9
top_k: 40
repeat_penalty: 1.1
四、混合模型策略:本地 + 云端的最佳组合
本地模型虽然零成本,但复杂推理能力不如云端大模型。OpenClaw 支持混合模型策略,根据任务类型动态选择模型。
4.1 路由规则设计
- 简单指令/文件操作/定时任务/简单查询 → 强制本地模型
- 复杂推理/代码审查/创意写作/复杂分析 → 云端模型
- 敏感数据/密码/密钥/token/隐私/机密 → 强制本地模型
4.2 OpenClaw 配置实现
在~/.openclaw/config/models.yaml中配置多模型路由:
providers:
local:
type: custom
baseUrl: http://127.0.0.1:11434/v1
apiKey: ollama
models:
- qwen2.5:7b-32k
- llama3:8b
cloud:
type: openai
apiKey: ${OPENAI_API_KEY}
models:
- gpt-4
- gpt-3.5-turbo
routing:
- pattern: "文件 | 目录 | 备份 | 整理 | 移动 | 复制"
provider: local
model: qwen2.5:7b-32k
- pattern: "代码审查 | 优化 | 重构 | 架构 | 设计模式"
provider: cloud
model: gpt-4
- pattern: "密码 | 密钥 |token| 隐私 | 机密"
provider: local
model: qwen2.5:7b-32k
- default:
strategy: dynamic
local_threshold: 0.7
4.3 高级优化:Viking 分层路由
对于追求极致 Token 节省的场景,可以参考 OpenClaw-Viking 项目的实现:
用户消息 → Viking Router (轻量模型判断意图) → 路由决策 (需要哪些工具/文件?只加载匹配的工具定义,只注入相关的上下文文件) → 主模型响应
Token 节省 60%-93%
| 场景 | 优化前 | 优化后 | 节省 |
|---|
| 简单对话('你好') | 15,466 tokens | 1,021 tokens | 93% |
| 文件操作 | 15,466 tokens | 3,058 tokens | 80% |
| 代码编写 | 15,466 tokens | 5,122 tokens | 67% |
五、性能优化:让本地模型跑得更快
5.1 模型量化:用精度换速度
原始模型 (FP16 16bit) → 8bit 量化 (内存减半) → 4bit 量化 (内存再减半) → 2bit 量化 (极致压缩,精度损失大)
ollama pull qwen2.5:7b-q4_0
ollama pull qwen2.5:7b-q8_0
ollama pull qwen2.5:7b-q2_k
- 显存充足(≥10GB):使用 8bit 量化,保留更高精度
- 显存中等(6-8GB):使用 4bit 量化,最佳平衡点
- 显存紧张(4GB):使用 4bit 轻量模型,如
qwen2.5:4b-q4_0
5.2 硬件加速配置
- 安装最新版显卡驱动
- Windows 设置'首选最大性能'电源模式
- 验证 CUDA 可用:
ollama run qwen2.5:7b --verbose 查看日志中的设备信息
- Ollama 自动启用 Metal 加速
- 保持充电器插入(某些 Mac 在电池模式下会降速)
- 关闭占用 GPU 的其他应用(视频编辑、浏览器 WebGL 标签)
ollama run qwen2.5:7b --num-thread 8
ollama run qwen2.5:7b --memory-limit 8G
5.3 内存优化技巧
- 合理设置上下文窗口:不需要时保持在 4K-8K,而非始终 32K
- 定期清理缓存:
ollama cleanup
- 使用批处理:合并多个小任务为单个请求
- 监控资源:
ollama ps 查看运行中的模型
六、实战案例:基于 Ollama+OpenClaw 搭建本地代码审查助手
6.1 需求分析
构建一个能够自动审查 PR、分析代码质量的 AI 助手,要求:
- 所有代码数据留在本地,不上传云端
- 支持 Python、JavaScript、Java 等多种语言
- 发现潜在 bug、安全漏洞、代码风格问题
6.2 系统架构
本地服务器 ←→ GitHub (PR 创建/更新) → Webhook 触发 → OpenClaw 网关 → 代码审查 Skill → 拉取 PR 代码 → 静态分析工具 (ESLint/Pylint) → LLM 分析 (Ollama+Qwen) → 生成审查报告 → 评论到 PR → 开发者查看反馈
6.3 开发步骤
创建 ~/.openclaw/skills/code-review/index.ts:
import { exec } from 'child_process';
import { promisify } from 'util';
import fs from 'fs-extra';
import path from 'path';
import { LLM } from 'openclaw-sdk';
const execAsync = promisify(exec);
interface PRParams {
repo: string;
prNumber: number;
baseDir?: string;
}
export async function handler(params: PRParams) {
const baseDir = params.baseDir || path.join(process.env.HOME, 'repos');
const repoDir = path.join(baseDir, params.repo.replace('/', '-'));
const prDir = path.join(repoDir, `pr-${params.prNumber}`);
if (!await fs.pathExists(prDir)) {
await fs.ensureDir(prDir);
await execAsync(`git clone https://github.com/${params.repo}.git ${prDir} && ` +
`cd ${prDir} && git fetch origin pull/${params.prNumber}/head:pr-branch && ` +
`git checkout pr-branch`);
}
const linters = { js: 'npx eslint --format json', py: 'pylint --output-format=json', java: 'checkstyle -c /sun_checks.xml -f xml' };
const lintResults = {};
for (const [ext, cmd] of Object.entries(linters)) {
try {
const { stdout } = await execAsync(`cd ${prDir} && find . -name "*.${ext}" | xargs ${cmd} 2>/dev/null`);
lintResults[ext] = JSON.parse(stdout);
} catch (e) {
if (e.stdout) {
try { lintResults[ext] = JSON.parse(e.stdout); } catch {}
}
}
}
const { stdout: diffFiles } = await execAsync(`cd ${prDir} && git diff --name-only origin/main...pr-branch`);
const changedFiles = diffFiles.split('\n').filter(Boolean);
const changes = [];
for (const file of changedFiles.slice(0, 10)) {
if (await fs.pathExists(path.join(prDir, file))) {
const content = await fs.readFile(path.join(prDir, file), 'utf-8');
changes.push(`文件:${file}\n\`\`\`${content.slice(0, 1000)}\n\`\`\``);
}
}
const llm = new LLM({ provider: 'local', model: 'qwen2.5:7b-32k' });
const prompt = `
你是一位资深的代码审查专家。请分析以下 PR 的变更,指出:
1. 潜在的 bug 或逻辑错误
2. 安全漏洞(SQL 注入、XSS 等)
3. 性能问题
4. 代码风格不符合最佳实践的地方
5. 改进建议
变更文件列表:${changedFiles.join('\n')}
静态分析结果:${JSON.stringify(lintResults, null, 2)}
关键变更内容:${changes.join('\n\n')}
请用中文输出审查报告,按严重程度排序。
`;
const reviewReport = await llm.complete(prompt);
const comment = `## 🤖 AI 代码审查报告\n\n${reviewReport}\n\n---\n*由 OpenClaw 本地模型自动生成*`;
return {
code: 0,
data: { reviewed: changedFiles.length, report: comment }
};
}
在 GitHub 仓库设置中添加 Webhook:
- Payload URL:
http://你的 OpenClaw 公网 IP:18789/webhook/github
- Content type:
application/json
- Events: 选择'Pull requests'
name: pr-review
schedule: "*/30 * * * *"
type: cron
skill: code-review
params:
repo: "your-org/your-repo"
6.4 效果验证
当有新的 PR 创建或更新时,OpenClaw 会自动:
- 拉取 PR 代码到本地
- 运行 ESLint/Pylint 等静态分析
- 用 Qwen 模型深度分析代码逻辑
- 在 PR 评论区生成审查报告
整个过程零 API 成本,所有数据留在本地服务器,敏感代码永不外泄。
七、结语:本地 AI 的时代已经到来
OpenClaw + Ollama 的组合,让 AI 智能体真正实现了'我的 AI 我做主':
- 零成本运行:告别按 Token 计费的账单焦虑
- 数据绝对隐私:敏感代码、商业文档永不离开本地
- 离线可用:飞机上、远程机房、内网环境都能工作
- 自由定制:可按需选择模型、调整参数、优化性能
随着 Llama 3、Qwen 3 等开源模型的性能逼近 GPT-4,本地部署的体验正在快速提升。现在,正是拥抱本地 AI 的最佳时机。
相关免费在线工具
- RSA密钥对生成器
生成新的随机RSA私钥和公钥pem证书。 在线工具,RSA密钥对生成器在线工具,online
- Mermaid 预览与可视化编辑
基于 Mermaid.js 实时预览流程图、时序图等图表,支持源码编辑与即时渲染。 在线工具,Mermaid 预览与可视化编辑在线工具,online
- 随机西班牙地址生成器
随机生成西班牙地址(支持马德里、加泰罗尼亚、安达卢西亚、瓦伦西亚筛选),支持数量快捷选择、显示全部与下载。 在线工具,随机西班牙地址生成器在线工具,online
- Base64 字符串编码/解码
将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online
- Base64 文件转换器
将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online
- Markdown转HTML
将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML转Markdown 互为补充。 在线工具,Markdown转HTML在线工具,online