我们先把标题拆开看:OpenCLaw是一个轻量级应用服务器(准确说是一个能编排agent的运行时),Ollama是把大模型跑在本地的模型运行时。这两个东西凑一起,你就能在自己电脑上部署一套完整的大模型应用服务——模型不出内网,agent按需调用,数据和推理链路全部本地闭环。
这篇文章把两件事串起来讲:第一步,把Ollama装好,让本地能跑起大模型;第二步,把OpenCLaw部署起来,通过它来调用Ollama里的模型,实现轻量级应用服务。整个链路适合三类人:一是想给团队内部搭一套私有化AI服务的运维或后端工程师,二是在研究agent编排、需要本地模型做后端的开发者,三是单纯被云端API价格和隐私折腾够了、想自己折腾一套本地大模型应用的玩家。
我会把安装、配置、联调过程中最容易踩的坑都标出来,尤其是Windows下PowerShell安装OpenCLaw时的目录问题、Ollama模型下载太慢的解决办法,以及OpenCLaw的exec-approvals审批机制该怎么理解。这些坑我基本都踩过一遍,写出来省得你再趟一遍。
1. 整体设计思路拆解:为什么是OpenCLaw + Ollama这套组合
1.1 先搞明白OpenCLaw在这套架构里的位置
很多人在网上搜到OpenCLaw,看名字以为是个普通Web服务器,其实不是。OpenCLaw本质上是一个Agent运行时服务器,它负责的事情是:加载agent配置、调用大模型、执行工具调用(比如读写文件、执行命令行、访问API),然后通过一个HTTP接口把能力暴露出去。
换成人话——它就是个帮你干活的总管,Ollama是它的“大脑”。
对比一下传统部署方式就清楚了:
| 组件 | 作用 | 类比 |
|---|---|---|
| Ollama | 在本地运行大模型,提供推理能力 | 大脑,负责思考 |
| OpenCLaw | 编排agent逻辑、执行工具、暴露服务 | 手脚,负责干活 |
| 配置文件(config.toml + AGENTS.md) | 定义agent行为规则和可用工具 | 工作手册 |
这个架构最核心的设计思路是“模型与逻辑分离”。大模型纯粹通过Ollama的API提供服务,不关心上层业务逻辑;OpenCLaw负责调度和管理,不关心推理细节。哪怕你后面想换成其他模型(比如从qwen切换到deepseek),只需要改配置,不用动任何agent逻辑。
1.2 为什么选Ollama而不是直接跑Python推理
相比直接用transformers或者vLLM跑模型,Ollama的优势非常明显:
- 模型仓库化:拉取、升级、删除模型就是几条命令,不用自己管理权重文件
- 内存管理成熟:Ollama会自动做模型换入换出,低内存机器也能跑大模型
- OpenAI兼容接口:暴露的API基本兼容OpenAI格式,上面接什么程序都不别扭
我最开始是在一台只有16GB内存的笔记本上跑qwen3:8b,Ollama默认会在模型空闲一定时间后把权重从内存释放,这点比自己写推理脚本省心得多。
1.3 这套组合的适用边界
不要以为OpenCLaw + Ollama能替代Kubernetes那套微服务架构,它们是两个层面的东西。
OpenCLaw适合的是轻量级场景:个人开发机、团队内部工具、边缘设备上的智能服务。它的轻量体现在几个地方:安装简单(Windows下一个命令就装好)、配置集中在几个文件里、资源占用小(看门狗进程也就几十MB内存)。
但代价是:没有内置的负载均衡、没有多节点集群、高并发能力有限。如果你要支撑生产环境的超大访问量,还是得考虑用Docker Compose或K8s做集群部署。不过对于中小团队内部工具来说,这个组合的性价比已经非常高了。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. Ollama本地化部署实操:安装、配置与模型准备
2.1 Windows和Linux环境下的安装差异
Ollama官方提供了Windows安装包,直接去官网下载安装就行。这里注意一件事:Windows版Ollama默认装的路径可能不是你想要的,如果想把模型文件和程序装到D盘,需要提前设置环境变量。
Linux下安装反而更简单:
bash复制curl -fsSL https://ollama.com/install.sh | sh
装完之后先验证一下:
bash复制ollama --version
看到版本号说明装好了。接着启动服务(Linux下服务默认是自动启动的):
bash复制systemctl status ollama
这里有个细节:如果你是在内网环境没有外网,安装脚本可能跑不通,那就得去GitHub下载离线安装包了。
2.2 解决Ollama模型下载太慢的问题
这个是反复被人问的问题之一,我直接摆结论:Ollama默认从官方Registry拉模型,国内链路慢,解决办法是走镜像源。
以配置国内镜像源为例,Linux下编辑环境变量文件:
bash复制sudo mkdir -p /etc/systemd/system/ollama.service.d
sudo tee /etc/systemd/system/ollama.service.d/override.conf << EOF
[Service]
Environment="OLLAMA_HOST=0.0.0.0:11434"
Environment="OLLAMA_MODELS=/data/ollama/models"
EOF
Windows下把模型目录改到D盘的步骤:
- 打开“系统属性” -> “环境变量”
- 新建系统变量 OLLAMA_MODELS 值为 D:\ollama\models
- 重启Ollama服务
下载慢还有一个隐藏原因:ollama在拉取manifest文件后需要下载多个layer层,每个layer单独从registry拉取,如果网络抖动会反复重试。遇到这种情况,建议先手动下载模型文件再本地导入,这是另外一个话题,后面会详细说。
2.3 模型选择与下载
Ollama模型仓库里有大量模型,关键看你的硬件条件:
| 显卡显存 | 推荐模型 | 说明 |
|---|---|---|
| 8GB | qwen3:4b、llama3.2:3b | 日常问答、代码生成够用 |
| 16GB | qwen3:8b、deepseek-r1:7b | 综合能力强,推荐 |
| 24GB+ | qwen2.5:32b、deepseek-r1:32b | 接近云端体验 |
| 纯CPU | qwen3:1.7b | 速度慢但能跑 |
拉取模型:
bash复制ollama pull qwen3:8b
这里再强调一下镜像源问题,如果国内拉取太慢,配置好上面的环境变量后,再去社区找可用的国内镜像源地址,这个方案实测有效。我试过最夸张的情况:直连基本不动,换镜像源后千兆宽带下几分钟就能拉完一个8B模型。
2.4 离线安装模型的补充方案
有时候公司内网完全隔离外网,这时候就得手动导入模型。前提是你在能联网的机器上准备好模型文件。
Ollama支持从GGUF文件直接导入:
bash复制ollama create mymodel -f Modelfile
Modelfile示例如下:
code复制FROM ./qwen3-8b-q4_k_m.gguf
这个方案其实很实用——很多团队在内部做模型选型时,会先用能上网的机器把各种模型文件准备齐,再走离线导入流程分发到内网机器。模型文件在HuggingFace上都能找到,搜GGUF格式即可。
3. OpenCLaw部署与配置:从安装到接入Ollama
3.1 Windows下安装OpenCLaw的几个关键细节
官方推荐Windows下用PowerShell安装:
powershell复制irm https://raw.githubusercontent.com/openclaw/openclaw/main/install.ps1 | iex
这里就要提到热词里大家一直在问的问题:PowerShell安装OpenCLaw能指定目录吗?
实测是可以的。install.ps1支持通过环境变量指定安装路径:
powershell复制$env:OPENCLAW_HOME = "D:\openclaw"
irm https://raw.githubusercontent.com/openclaw/openclaw/main/install.ps1 | iex
安装完成后,OpenCLaw的工作目录默认在 ~/.openclaw/ 下(Windows就是C:\Users\你的用户名\.openclaw\)。如果你想指定workspace目录,在配置文件里调整就行。
Linux下安装更直接:
bash复制curl -fsSL https://raw.githubusercontent.com/openclaw/openclaw/main/install.sh | bash
装完之后验证:
bash复制openclaw --version
3.2 OpenCLaw 2.0核心配置文件逐一拆解
OpenCLaw 2.0的配置集中在config.toml里。第一次初始化时它会生成默认配置,我建议你先跑一遍初始化流程再手动改。
登录认证配置,多用户可以共用一套:
toml复制[server]
host = "0.0.0.0"
port = 8080
[security]
secret = "设置一个高强度的secret"
接下来是关键的Agent路由配置。OpenCLaw允许配置访问Ollama的方式,这个也是标题里“接入Ollama”的关键点。OpenCLaw原生支持OpenAI兼容接口,而Ollama恰好提供了这个兼容层,所以你在配置里填Ollama的地址即可:
toml复制[providers.ollama]
base_url = "http://127.0.0.1:11434/v1"
api_key = "ollama" # Ollama的OpenAI兼容接口不需要真实key,随便填一个就行
配置好之后,agent层面再指定默认模型:
toml复制[agent.default]
model = "qwen3:8b"
provider = "ollama"
这样OpenCLaw就会把agent的推理请求转发给Ollama,所有对话、工具调用都是由本地模型来跑的。
3.3 workspace目录与exec-approvals的初始化
很多人第一次看到这行提示会懵:
code复制legacy exec approvals exist at /root/.openclaw/exec-approvals.json. run `openclaw migrate`
这实际上是OpenCLaw的权限审批机制。它的逻辑是:agent在执行命令、调用工具之前,需要经过审批。默认情况下,你可以预先批准一部分规则匹配的命令,避免每次执行都被打断。
这个文件在.openclaw/目录下,新版OpenCLaw会提示你迁移到新的格式。直接执行:
bash复制openclaw migrate
就会把老的审批记录迁移到新版配置里。如果你不想被审批机制折腾,可以在配置里设置:
toml复制[agent]
auto_approve = true
但生产环境我不建议这么做,agent执行命令前有一道人工审批环节,能挡掉不少操作事故。
Windows下workspace默认在C:\Users\用户名\.openclaw\workspace。如果你希望OpenCLaw只操作某个目录,可以设置sandbox目录:
toml复制[agent]
workspace = "D:\work\openclaw-space"
OpenCLaw的skill机制也值得提一句,它允许把一些重复操作封装成可复用的技能模板,跟agent配合起来很好用。不过默认配置下不需要额外启用,按需添加即可。
3.4 启动服务并验证整体链路
配置完成后,启动OpenCLaw:
bash复制openclaw serve
看到类似这样的日志输出说明服务起来了:
code复制INFO server listening on http://0.0.0.0:8080
然后验证一下OpenCLaw是否能正常访问Ollama。在终端里单独测一下Ollama的接口:
bash复制curl http://127.0.0.1:11434/v1/models
如果返回了模型列表,说明Ollama侧没问题。接着用OpenCLaw提供的CLI发起一次对话:
bash复制openclaw chat --model qwen3:8b --message "你好,用一句话介绍你自己"
如果返回了模型回答,说明整条链路已经打通。这时候你在局域网内其他电脑上,通过http://服务器IP:8080就能访问到这个本地化的AI服务了。
4. 常见问题与排查技巧
4.1 问题速查表
我把实际部署中最高频的几个问题整理成一张表,方便你对照排查:
| 问题现象 | 可能原因 | 解决方案 |
|---|---|---|
| OpenCLaw无法启动,提示端口被占用 | 8080端口被其他程序占用 | 修改config.toml中的port,或释放端口 |
| agent调用模型超时 | Ollama服务未启动或地址配置错误 | 确认Ollama在运行:curl http://127.0.0.1:11434/v1/models |
| 模型加载速度很慢 | 模型文件较大,Ollama首次加载需要时间 | 等待即可,后续调用会走缓存;或换更小量化级别模型 |
| GPU显存不足导致Ollama崩溃 | 选的模型太大,超过显卡显存 | 换小模型,或者调整量化等级Q4/Q3 |
| exec-approvals提醒迁移 | 版本升级 | 执行 openclaw migrate |
| PowerShell无法执行安装脚本 | 执行策略限制 | 以管理员身份运行:Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass |
| 局域网其他设备无法访问 | server host绑定的是127.0.0.1 | 改成0.0.0.0,并检查防火墙 |
4.2 我对Windows安装OpenCLaw的补充经验
Windows下安装OpenCLaw整体顺利,但有几个坑值得单独说。
第一,PowerShell执行策略可能拦截安装脚本,上面表里已经写了解决办法。第二,安装完成后不要直接切换到其他终端去跑openclaw,我建议新开一个PowerShell窗口,确保环境变量生效。第三,Windows Defender可能把OpenCLaw的某些插件文件当可疑程序处理,需要手动加白名单。
另外补充一个我自己的操作习惯:在Windows上,我会额外用--workspace指定一个非系统盘的工作目录。因为agent跑起来之后会创建很多临时文件、日志,放在C盘容易越滚越大,放到数据盘上清理和维护都方便。
4.3 Ollama服务与OpenCLaw的启动顺序
严格来说,OpenCLaw会在调用模型时动态连接Ollama,所以不要求你先启动Ollama再启动OpenCLaw。但我建议固定顺序:先Ollama,后OpenCLaw。
原因很简单——Ollama首次加载模型需要时间,如果你先启动OpenCLaw,然后立刻测试对话,前几次请求可能因为模型还没加载完而报超时,容易误判为配置问题。先启动Ollama并用curl确认模型可用,再启动OpenCLaw,整个验证链路会顺畅很多。
4.4 Ollama国内镜像源的排查心得
我在2.2节提到了镜像源,这里再补充一些实际经验。镜像源不是越多越好,很多镜像源时效性很短,过期之后反而拖慢下载速度。我的做法是:
- 先在官方registry拉一次,观察下载速度,如果速率长期低于100KB/s就不要等了
- 切换到可用的镜像源,拉取时观察日志
- 拉取完成后立刻把代理或镜像配置备注记录一下,防止下次重装找不到
还有一个细节:Ollama的下载缓存目录默认在/root/.ollama/models或Windows的C:\Users\用户名\.ollama\models。如果你换了镜像源之后还是慢,检查一下是不是旧缓存文件太多占满了磁盘,或者内存不足导致下载进程被系统降速。
5. 扩展场景与下一步玩法
5.1 把OpenCLaw接入到团队内部工具链
部署完OpenCLaw + Ollama后,这套服务可以接很多业务场景。比如团队内部的知识库问答——把文档丢进workspace,让agent基于本地模型做检索和问答;再比如自动化运维脚本执行——通过OpenCLaw暴露的HTTP API,写一个简单的Web界面,让同事通过网页发起命令执行。
OpenCLaw 2.0的API是RESTful风格的,调用起来非常直接:
bash复制curl -X POST http://127.0.0.1:8080/v1/chat/completions \
-H "Content-Type: application/json" \
-H "Authorization: Bearer 你的secret" \
-d '{
"model": "qwen3:8b",
"messages": [{"role": "user", "content": "帮我列出当前目录的文件"}]
}'
注意,这里的API格式和OpenAI也是兼容的,意味着现有对接过OpenAI服务的代码不用大改就能切到本地模型上。
5.2 从单一模型到多模型切换
配置了Ollama之后,你可以在里面同时存多个模型。OpenCLaw配置里可以通过不同的agent定义来绑定不同模型。比如:
- 日常对话agent用
qwen3:8b - 代码生成agent用
deepseek-coder - 轻量分类agent用
qwen3:0.6b
这样一套服务可以同时服务不同场景,不用来回拉模型。qwen3-embedding-0.6b这种小模型特别适合嵌入场景,做语义检索的时候效果很稳,而且速度快、占用小。
5.3 大模型联网能力与工具调用
之前有人在热搜里问本地化大模型怎么联网——这个问题的标准答案就是通过agent层解决。
在OpenCLaw里,加一个联网能力其实是在agent配置里加skill或tool:
toml复制[[agent.tools]]
name = "web_search"
config = { engine = "bing", max_results = 5 }
配置好之后,模型本身不“联网”,但OpenCLaw会在模型需要时调用web_search工具,搜索然后把结果喂给模型。这种方式比让模型直接联网更可控、也更安全——你可以审计它搜了什么、拿了什么内容。
我做测试的时候最常用的一种套路是:让agent先搜索关键词,再结合Ollama模型做信息整理,最后输出一份结构化报告。整个流程全自动化,效果比单纯问模型靠谱得多,因为搜索出来的内容是实时的,模型不会被训练数据的时间截断限制住。
5.4 后续还可以怎么玩
如果你对这套组合的稳定性要求更高,可以考虑把OpenCLaw和Ollama放进Docker容器里跑,用docker-compose统一管理,日志、资源隔离、迁移都会省心很多。我个人的建议是:先在本机把整套链路跑通,再容器化,不要一上来就上容器——因为初期配置改得很频繁,容器反而不方便热调试。
另外,我强烈建议你在config.toml里把日志级别调成debug,跑一遍完整流程观察日志输出。这不只是为了排查问题,更重要的是能让你直观理解agent从接收指令到调用模型、再到执行工具的完整调用链。理解了这条链路,后续做任何功能扩展都会轻松很多。
最后再分享一个实操小技巧
聊了这么多,最后说一个我实际操作中觉得特比有用的细节:Ollama和OpenCLaw的联调阶段,不要急着写业务代码,先把API链路验证干净。
具体做法很简单:装完Ollama拉好模型后,先用curl把所有API都摸一遍——模型列表、对话补全、embedding接口;然后启动OpenCLaw,再curl它的接口。两层都通了,再去写agent逻辑,这样出问题时你一眼就能判断是模型层的问题还是agent层的问题,不用来回猜。
我第一次部署的时候就是没做这步,OpenCLaw界面里模型一直不响应,我以为是OpenCLaw配置错了,折腾了大半天,最后才发现是Ollama服务崩了,进程没起来。先验证底层API,这个习惯帮我后面省了无数时间。
这套OpenCLaw + Ollama的轻量级本地化部署方案,最舒服的地方在于它把“AI能力”和“AI调度”拆开了,每一层都能独立替换和升级。模型不行就换模型,agent逻辑不行就改agent逻辑,互不干扰。如果你是第一次搭建本地大模型应用服务,跟着这篇文章一步一步来,顺利的话半小时内就能跑起来一个可用的服务。
