
最近把openclaw和ollama这套组合全部搬到了本地总算把以前离不开云端 API 的习惯改了。openclaw是一个典型的会话驱动型 AI 代理框架负责管理多轮对话、工具调用和任务拆解ollama则专注在本地跑模型推理。两者前后端配合模型输出、会话状态、工具执行记录都留在自己的机器上对隐私敏感或者需要离线使用的场景特别合适。这篇文章就是我本地搭建过程中踩坑的完整记录包括环境准备、配置连接、以及几个最容易让人卡住的报错修复给同样想做本地部署的朋友做个参考。1. 整体方案与设计思路1.1 为什么选择 openclaw ollama先说结论这套组合最适合“既要 Agent 能力又不想把对话内容送出去”的人。openclaw本身不是模型它更像一个调度中枢负责把任务拆成多步执行并且能决定什么时候调用外部工具——比如读写 Obsidian 笔记、查文件、执行脚本。而真正做文字生成的是底层的 LLM。如果你把openclaw直接连到云端大模型 API会面临两个问题一是数据要经过公网二是每次调用按 token 计费。换成ollama之后模型权重存在本地硬盘推理时完全离线相当于把“大脑”留在了自己电脑里。对于需要处理个人笔记、代码片段、临时问答的场景这种本地闭环体验非常舒服。另外openclaw的会话管理机制也值得一说。它会为每次会话生成独立的 session 文件把历史消息、工具调用结果、状态变量都记录下来这样即使进程重启也能恢复上下文。和ollama的本地模型结合后整条链路不依赖外网断网也能继续用。1.2 本地部署的整体拓扑我实际跑起来的架构大致是这样的openclaw主进程负责接收用户输入判断是否需要调用工具。会话状态写入本地 session 文件并用锁文件保证同一时刻只有一个进程写入。openclaw通过 HTTP 请求调用ollama的/v1/chat/completions接口。ollama收到请求后加载模型把推理结果返回给openclaw。openclaw再把最终回复呈现给用户并更新 session 记录。这个链路看起来简单但问题往往藏在“会话文件锁”和“模型加载失败”这两类环节。后面我会专门展开排查过程。1.3 软硬件准备清单在开始之前先确认自己的机器条件避免装到一半才发现跑不动。项目最低建议推荐配置内存16GB32GB 及以上显卡无CPU可跑小模型NVIDIA 8GB 显存以上系统Windows 10 / Ubuntu 20.04 / macOS 1264位系统Python3.103.11Ollama0.3.x 以上最新版OpenClaw0.4.x 左右最新版如果是纯 CPU 环境建议选 3B 或 4B 参数量的模型比如qwen2.5:3b有 NVIDIA 显卡的话可以上 7B 甚至 14B 的量化版。后续所有调试我都建议先用小模型把链路跑通再换大模型不然一旦报错很难定位是模型问题还是框架问题。2. Ollama 本地环境的安装与模型准备2.1 安装 Ollama 并设置模型路径Windows 上直接下载安装包双击安装即可。但有个细节要注意Ollama 默认把模型放在C:\Users\用户名\.ollama\modelsC 盘空间紧张的话很容易爆红。我习惯把模型迁移到 D 盘安装完成后执行# Windows PowerShell 中设置环境变量重新打开终端生效 setx OLLAMA_MODELS D:\ollama\modelsLinux 上用官方脚本装是最快的curl -fsSL https://ollama.com/install.sh | sh但脚本默认装到/usr/share/ollama模型也在这个目录下。如果想用普通用户直接管理可以在~/.bashrc里导出 OLLAMA_MODELS再手动创建对应目录。装好后先启动服务验证一下ollama serve另开一个终端执行ollama list。如果能显示空列表或者已有的模型说明服务正常。ollama serve这个窗口不要关后面所有推理请求都要依赖它。2.2 模型下载太慢的替代方案很多人卡在ollama pull这一步尤其是大模型几个 G 起步官方源在国内网络环境下经常超时。我踩过几次坑之后总结出三个可行办法方法一换镜像源。如果你有可用的镜像节点可以直接修改 Ollama 的 registry 地址不过要确保镜像节点本身稳定。这个方法见效快但依赖外部服务。方法二手动下载 GGUF 文件再导入。这个方法最保险也最可控。先去模型社区下载对应参数的 GGUF 量化文件比如qwen2.5-7b-instruct-q4_k_m.gguf然后写一个ModelfileFROM ./qwen2.5-7b-instruct-q4_k_m.gguf TEMPLATE {{- if .System }} System: {{ .System }} {{- end }} User: {{ .Prompt }} Assistant: 接着执行ollama create qwen2.5:7b -f Modelfile ollama list这样等于绕开了在线下载大文件的问题只要 GGUF 文件能下载下来后面都是本地操作。方法三从已有的模型库复制。如果团队内有人已经下好模型直接拷贝整个models目录再设置相同的 OLLAMA_MODELS 路径也能省去下载时间。2.3 查看模型状态与 CUDA 加速验证模型准备好后常用这几个命令# 列出本地所有模型 ollama list # 查看模型当前是否加载在内存中 ollama ps # 查看模型参数信息 ollama show qwen2.5:7bollama ps很关键它能告诉你当前有几个模型占用显存。如果发现ollama serve日志里一直有 GPU 相关报错可以先尝试强制 CPU 运行OLLAMA_NUM_GPU0 ollama serve这样能把“显存不足”和“模型推理逻辑问题”区分开。实测下来很多 500 错误其实不是模型文件坏了而是 GPU 加载失败导致的。3. OpenClaw 的安装与对接配置3.1 安装 OpenClawOpenClaw 本身是 Python 项目我建议用虚拟环境隔离依赖避免和系统 Python 环境打架python -m venv openclaw-env source openclaw-env/bin/activate # Windows 下是 openclaw-env\Scripts\activate pip install openclaw安装完成后先初始化配置目录openclaw config init这个命令会在用户目录下生成一个.openclaw目录里面有config.yaml、sessions子目录等。默认的 session 存储路径在~/.openclaw/sessions后面排查锁文件时会用到。3.2 配置 Ollama 作为推理后端OpenClaw 可以通过配置里的 provider 指定后端。由于 Ollama 提供了 OpenAI 兼容接口所以不需要额外插件只需要把 base_url 指到本地 Ollama 服务的/v1路径。我用的配置参考如下provider: ollama ollama: base_url: http://localhost:11434/v1 api_key: ollama model: qwen2.5:7b temperature: 0.7 max_tokens: 2048 session_timeout: 120000这里api_key随便填一个非空字符串就行Ollama 本地服务不会校验。session_timeout是可以自己调的默认可能只有 60000 毫秒如果模型加载慢很容易触发超时锁建议调大到 120000 或更大。配置完可以先用 curl 验证 Ollama 的接口是否通curl http://localhost:11434/v1/models能返回模型列表 JSON说明接口没问题。再发一个简单的对话请求curl http://localhost:11434/v1/chat/completions \ -H Content-Type: application/json \ -d {model:qwen2.5:7b,messages:[{role:user,content:你好}]}如果这一步通了说明 OpenClaw 只差最后一步启动。3.3 启动并完成首次对话启动 Ollama再启动 OpenClawollama serve # 另一个终端 openclaw run首次启动会加载模型时间长短取决于硬件。如果配置都正确看到Agent is ready之类的日志就代表成功了。这时输入一个简单的指令比如“帮我写一段 Python 代码”观察回复内容。如果遇到agent failed before reply: session file locked (timeout 60000ms)这种反馈先别查模型问题出在 session 文件锁上。我们下一章专门解决。4. 实操过程中踩过的坑与排查实录4.1 agent failed before reply: session file locked这个报错我调试了一下午最后发现是多个 OpenClaw 进程同时操作同一个 session 导致的。OpenClaw 为了保证会话数据一致会在写 session 文件前加锁如果锁文件已经存在但持有锁的进程已经死掉就会一直等到超时。排查步骤先看当前有几个 openclaw 进程在跑ps aux | grep openclaw # 或者 Windows 下 tasklist | findstr openclaw如果有残留进程先用kill或任务管理器结束。找到 session 目录下的锁文件。默认路径在~/.openclaw/sessions里面通常有.lock后缀的文件。ls -la ~/.openclaw/sessions确认没有进程占用后可以删除陈旧锁文件rm ~/.openclaw/sessions/*.lock如果问题经常出现可以调大session_timeout我配置里已经从 60000 调到 120000明显减少了超时概率。另外如果有同步网盘软件比如 OneDrive把 session 目录同步到云端也可能导致锁文件被远程拉取或冲突。建议把~/.openclaw/sessions加到同步排除列表里或者干脆移到纯本地路径。4.2 ollama run 报 500 internal server error典型报错长这样c:\users\jinbaoollama run qwen2.5 error: 500 internal server error: error s... ollama run qwen3.5:2b error: 500 internal server error: llama-server process ...这类错误大多不是 API 配置问题而是模型加载环节出了岔子。我总结的排查顺序是第一步看 Ollama 服务日志。在运行ollama serve的那个窗口里会打印加载失败的具体原因。如果是insufficient memory说明是内存不足如果是unknown error继续下一步。第二步检查显卡状态。执行nvidia-smi看显存占用。如果显存已经满了大概率是其它程序占用了显卡或者设置的并发太多。可以用OLLAMA_NUM_PARALLEL1和OLLAMA_MAX_LOADED_MODELS1限制并发。第三步强制 CPU 运行。执行OLLAMA_NUM_GPU0 ollama serve看模型能否正常加载。如果 CPU 能跑而 GPU 报错考虑更新显卡驱动或调整 Ollama 版本。第四步删除模型重新导入。如果模型文件下载中途损坏也可能导致llama-server启动失败。用ollama rm qwen2.5:7b删掉再重新 pull 或 create。我把常见的排查步骤整理成了表格方便直接对照错误表现可能原因解决办法500 internal server error: llama-server process模型二进制加载失败 / 文件损坏重新 pull 或 create检查磁盘空间500 internal server error: error s上下文参数过大导致 OOM调低 OLLAMA_CONTEXT_LENGTH 或减小模型卡在 loading 后自动退出显存不足关闭其它 GPU 程序OLLAMA_NUM_GPU0 试跑响应极慢CPU 占用低服务线程阻塞重启 ollama serve检查日志有无异常4.3 模型加载慢、上下文过长怎么办ollama默认会缓存一定数量的模型但如果加载的上下文过大内存和显存都会吃紧。我建议通过环境变量控制# Linux/macOS export OLLAMA_CONTEXT_LENGTH4096 export OLLAMA_NUM_PARALLEL1 export OLLAMA_MAX_LOADED_MODELS1在 Windows 上可以通过系统环境变量界面设置或者在启动命令前临时设置。另外qwen3.5这类模型默认喜欢在回答前思考一大段如果不需要复杂的推理过程可以在 OpenClaw 的 system prompt 里明确加上“直接给出答案不要输出推理过程”。我实测这样能让响应速度提升不少。甚至在某些模型里可以配置参数禁止思考模式具体要看你用的模型是否支持。5. 常见问题速查表与避坑经验5.1 本地部署高频问题速查表把前面遇到的问题和解决方案汇总在这里遇到类似情况可以直接查表问题可能原因快速处理session file locked 超时残留进程 / 锁文件未释放删除 session 目录下 .lock 文件调大 session_timeoutOpenClaw 找不到 Ollamabase_url 配错确认http://localhost:11434/v1能 curl 通ollama pull 特别慢网络问题 / 镜像源不稳手动下载 GGUF用 Modelfile 导入模型在 C 盘占空间未修改 OLLAMA_MODELS设置模型路径到 D 盘后重启服务显存不足导致 500模型过大 / 并发太高使用更小量化模型限制 OLLAMA_NUM_PARALLEL重启后会话丢失数据未写入成功或被锁阻塞检查 sessions 目录大小排除同步网盘端口被占用11434 被其他进程占用修改 OLLAMA_HOST 换端口5.2 我踩过的其他坑第一坑是 Windows 杀毒软件。Ollama 的模型文件经常被安全软件当作可疑大文件扫描导致加载时随机失败。如果遇到莫名的推理超时先检查安全软件的隔离区把模型目录加入白名单。第二坑是路径里的中文。我把模型放在D:\本地模型\这类目录下结果 Ollama 加载时直接报错。后来把所有路径全部改成英文问题就消失了。虽然这不是必然的但 Windows 下某些交叉编译的组件对中文路径支持不好尽量规避。第三坑是权限问题。如果你用 Linux 的 systemd 方式安装 OllamaOpenClaw 运行时可能因为权限不足无法写 session 文件。最简单的做法是让 Ollama 和 OpenClaw 使用同一个用户启动或者给.openclaw目录设置正确的写权限。第四坑是升级版本带来的兼容问题。openclaw升级后配置格式可能变化之前可用的 session 可能无法读取。我的习惯是升级前备份整个.openclaw目录出现问题可以直接回滚。5.3 部署到服务器上的额外提醒如果你打算把整套方案放到云服务器上比如署到阿里云的免费试用实例有几个额外注意事项一是监听地址不能默认只绑定 localhost需要设置OLLAMA_HOST0.0.0.0:11434才能让 openclaw 远程调用但这样会暴露端口一定要靠安全组和防火墙限制来源 IP二是服务器的内存通常比较小优先选择 4B 量化模型三是不要在公共服务器上存敏感的个人笔记除非你做了加密和访问控制。最后分享一点实际操作心得这套组合跑起来之后我最大的体会是调试时要学会拆解链路。如果 openclaw 回复异常先用 curl 直接测试 ollama 接口确认模型本身没问题再回头查 openclaw 配置。很多看起来像是模型智商不够的问题其实都出在会话锁或上下文处理上。建议第一次搭建的朋友先用qwen2.5:3b这类小模型跑通全流程别一上来就拉 70B 的大模型否则加载时间和报错排查会让你怀疑人生。跑通之后再换大模型后续扩展知识库、接入 Obsidian 等也就顺理成章了。