OpenClaw 超详细使用指南:零基础用 Docker 与 Ollama 跑通全流程
1. 为什么零基础跑 OpenClaw 总卡在 Docker 和 Ollama 之间很多人第一次接触 OpenClaw是被它“自然语言驱动本地工具链”的能力吸引一句话让它读文件、跑脚本、剪视频。但真正动手时问题往往不在 OpenClaw 本身而在它依赖的三个外部环节——Node.js 运行时、Ollama 本地模型服务、FFmpeg 媒体处理。这三个环节任何一个没打通OpenClaw 就会在启动或执行任务时报错而报错信息又常常指向内部调用让人摸不着头脑。我自己第一次在 Docker 里跑 OpenClaw 时就遇到过容器内localhost:11434连不上 Ollama 的情况。当时以为是模型没拉下来反复ollama pull了好几次最后才发现是 Docker 网络隔离导致容器里的localhost指向容器自身而不是宿主机。这类问题在零基础场景里非常典型不是命令写错而是对“服务运行在哪里”没有概念。这篇指南面向的是完全没有 Docker 和 Ollama 经验的读者。我会把 OpenClaw 的落地路径拆成三个可独立验证的环节先用 Docker Compose 把 OpenClaw 容器跑起来再让容器能访问宿主机的 Ollama 服务最后通过 FFmpeg 完成一次真实的媒体处理任务。每一步都有可复制的配置和验证命令你不需要理解所有原理跟着做就能跑通。核心检索词先明确OpenClaw 是一个本地优先的 AI 助手框架它通过自然语言指令调用 shell、文件、视频、浏览器等工具Docker 负责隔离运行环境Ollama 提供本地大模型推理FFmpeg 负责视频音频处理。适合谁适合想在自己电脑上跑 AI 自动化、又不想把数据传到云端的开发者、博主和运维人员。在开始之前你需要确认三件事第一你的机器已经安装 Docker 和 Docker Compose第二你有至少 16GB 内存跑 8B 模型建议 16GB70B 模型需要 64GB 以上第三你有一个可以访问的模型服务可以是本地 Ollama也可以是兼容 OpenAI 接口的云端服务。如果你还没有模型服务后面我会给出 Ollama 的完整接入方式。2. TaoToken 前置准备模型接入与 API Key 获取OpenClaw 本身不包含模型它需要连接一个推理服务。你可以选择本地 Ollama也可以选择云端模型服务。如果你希望快速验证 OpenClaw 的完整流程又不想在本地拉取大模型可以先用一个兼容 OpenAI 接口的云端服务把链路跑通再切换到 Ollama 做本地化。TaoToken 提供的就是这样一个兼容 OpenAI 接口的模型接入服务。它的作用是让你用一个统一的 Base URL 和 API Key调用多种模型而不需要分别去每个模型厂商注册和配置。对于 OpenClaw 来说你只需要在配置文件里填入 Base URL、API Key 和 Model ID 三个值就能让 OpenClaw 通过标准接口调用模型。具体操作路径如下先访问 TaoToken 官网注册账号然后进入控制台创建 API Key。创建时建议给 Key 起一个容易识别的名字比如openclaw-local方便后续在多个项目里区分。创建完成后复制 Key 并保存到安全位置页面关闭后通常不会再完整显示。接下来你需要确认两件事Base URL 和 Model ID。Base URL 是模型服务的接口地址OpenClaw 会向这个地址发送请求。Model ID 是你要调用的具体模型名称比如gpt-4o、claude-3-5-sonnet等。你可以在 TaoToken 的模型列表页面查看当前可用的模型 ID选择其中一个作为 OpenClaw 的默认模型。如果你打算用本地 Ollama这一步可以跳过但建议先记下 Ollama 的默认接口地址http://localhost:11434/v1。这个地址在 Docker 环境下需要替换成宿主机 IP后面会详细说明。这里有一个关键点OpenClaw 的模型配置和权限配置是分开的。模型配置决定它用哪个模型推理权限配置决定它能操作哪些文件和命令。很多新手只配了模型忘了配权限结果 OpenClaw 能回答问题但无法执行文件操作。所以下一步我会同时给出模型配置和权限配置的完整片段。如果你还没有 API Key可以现在去创建访问 TaoToken API Keys 页面 生成一个。创建后不要直接写在文章或聊天记录里后面我们会把它放进环境变量或配置文件。3. 可复制配置Docker Compose Ollama 绑定 FFmpeg 调用这一节是整篇指南的核心。我会给出一个完整的docker-compose.yml它同时启动 OpenClaw 容器并通过extra_hosts让容器能访问宿主机的 Ollama 服务。然后给出 Ollama 的拉取和绑定命令最后给出 FFmpeg 在 OpenClaw 里的调用示例。先看目录结构。在你的工作目录下创建以下文件mkdir -p ~/openclaw-demo/config cd ~/openclaw-demo然后创建docker-compose.ymlversion: 3.8 services: openclaw: image: openclaw/openclaw:latest container_name: openclaw restart: always ports: - 3000:3000 volumes: - ./config:/root/.openclaw - ./workspace:/workspace environment: - OPENCLAW_MODEL_BASE_URLhttp://host.docker.internal:11434/v1 - OPENCLAW_MODEL_API_KEYollama - OPENCLAW_MODEL_IDllama3.1:8b - OPENCLAW_FFMPEG_PATH/usr/bin/ffmpeg extra_hosts: - host.docker.internal:host-gateway networks: - openclaw-net networks: openclaw-net: driver: bridge这个配置里有几个关键点需要解释。extra_hosts把host.docker.internal映射到宿主机的网关地址这样容器内部就能通过host.docker.internal访问宿主机上运行的 Ollama。OPENCLAW_MODEL_BASE_URL指向http://host.docker.internal:11434/v1而不是localhost:11434这是 Docker 环境下最常见的坑。volumes把宿主机的./config映射到容器的/root/.openclaw这样配置不会因为容器重建而丢失。接下来配置 OpenClaw 的模型和权限。在~/openclaw-demo/config/config.json中写入{ ai: { defaultModel: llama3.1:8b, models: { llama3.1:8b: { baseUrl: http://host.docker.internal:11434/v1, apiKey: ollama, maxTokens: 8192 } } }, tools: { video: { ffmpegPath: /usr/bin/ffmpeg } } }如果你用的是 TaoToken 云端模型把baseUrl改成https://taotoken.net/api/v1apiKey改成你的真实 KeydefaultModel改成你选择的 Model ID。注意 Base URL 不要加 UTM 参数保持接口地址干净。权限配置在~/openclaw-demo/config/permissions.json{ allowedDirectories: [ /workspace ], blockedCommands: [ rm, sudo, mkfs, dd ], allowedTools: [ shell, file, video ], allowNetworkAccess: true, allowFileWrite: true, allowFileDelete: false }这里把/workspace作为唯一允许操作的目录对应 docker-compose 里的./workspace:/workspace映射。allowFileDelete设为false避免 AI 误删文件。blockedCommands里禁用了rm、sudo等高危命令。现在启动 Ollama 并拉取模型。如果你还没安装 Ollama先按官网指引安装。安装完成后执行ollama serve保持这个终端窗口打开或者用后台方式运行nohup ollama serve ollama.log 21 然后拉取一个适合你机器配置的模型ollama pull llama3.1:8b8B 模型对内存要求较低16GB 内存的机器可以流畅运行。如果你的机器有 64GB 以上内存可以尝试llama3.1:70b效果更好但速度会慢一些。拉取完成后验证ollama list你应该能看到llama3.1:8b在列表中。接着测试 Ollama 的 OpenAI 兼容接口是否正常curl http://localhost:11434/v1/models如果返回模型列表 JSON说明 Ollama 的接口已经就绪。现在启动 OpenClaw 容器docker compose up -d查看容器状态docker compose ps如果状态是running说明容器已经启动。进入容器验证 FFmpeg 是否可用docker exec -it openclaw ffmpeg -version如果输出了 FFmpeg 版本信息说明媒体处理工具已经就绪。如果提示ffmpeg: not found说明镜像里没有预装 FFmpeg你需要在 Dockerfile 里安装或者换一个包含 FFmpeg 的镜像。后面排障部分会详细说明。4. 验证请求从模型对话到 FFmpeg 媒体处理配置完成后不要急着让 OpenClaw 执行复杂任务。先用一个最小请求验证模型链路是否通。进入容器docker exec -it openclaw /bin/bash然后执行 OpenClaw 的对话命令openclaw chat在交互界面输入请用一句话介绍你自己。如果 OpenClaw 返回了模型生成的回答说明模型链路已经打通。如果一直卡住或报错先检查 Ollama 是否在宿主机运行再检查config.json里的baseUrl是否写成了host.docker.internal。模型验证通过后测试文件操作能力。在宿主机的~/openclaw-demo/workspace目录下创建一个测试文件echo hello openclaw ~/openclaw-demo/workspace/test.txt然后在 OpenClaw 对话中输入请读取 /workspace/test.txt 的内容并告诉我。如果 OpenClaw 返回了hello openclaw说明文件工具和权限配置都正常。接下来测试 FFmpeg。先在宿主机准备一个测试视频。如果你没有现成视频可以用 FFmpeg 生成一个ffmpeg -f lavfi -i testsrcduration5:size640x480:rate30 -pix_fmt yuv420p ~/openclaw-demo/workspace/test.mp4这个命令会生成一个 5 秒的测试视频。然后在 OpenClaw 对话中输入请用 FFmpeg 把 /workspace/test.mp4 转换成 720P 分辨率输出到 /workspace/test_720p.mp4。OpenClaw 会调用 FFmpeg 执行转码。执行完成后你可以在宿主机检查输出文件ls -lh ~/openclaw-demo/workspace/test_720p.mp4如果文件存在且大小合理说明 FFmpeg 调用链路已经跑通。你也可以用ffprobe查看分辨率ffprobe -v error -select_streams v:0 -show_entries streamwidth,height -of csvsx:p0 ~/openclaw-demo/workspace/test_720p.mp4预期输出是1280x720。到这里模型对话、文件操作、FFmpeg 媒体处理三条链路都已经验证通过。如果你在验证模型对话时想快速对比不同模型的效果可以访问 TaoToken 模型对话页面 直接测试不需要在本地反复切换配置。5. 本篇常见错排查401、local proxy failed、reading choices、OAuth这一节列出我在实际部署中遇到过的真实报错以及对应的排查步骤。每个报错都给出错误现象、原因分析和解决命令。报错一401 Unauthorized现象OpenClaw 调用模型时返回401 Unauthorized或invalid api key。原因API Key 配置错误或者 Base URL 和 Key 不匹配。如果你用的是 TaoTokenKey 需要和 Base URLhttps://taotoken.net/api/v1配套使用如果你用的是 OllamaKey 固定填ollama即可。解决步骤先检查config.json里的apiKey字段。如果是云端模型确认 Key 没有多余空格没有过期。然后检查baseUrl是否写成了https://taotoken.net/api而不是https://taotoken.net/api/v1。最后重启容器docker compose restart报错二local proxy failed现象OpenClaw 启动时报local proxy failed或connection refused。原因容器内无法访问宿主机的 Ollama 服务。最常见的原因是baseUrl写成了localhost或127.0.0.1这两个地址在容器内指向容器自身而不是宿主机。解决步骤确认docker-compose.yml里有extra_hosts配置并且baseUrl使用host.docker.internal。如果你在 Linux 上运行host-gateway需要 Docker 20.10 以上版本支持。验证方式docker exec -it openclaw curl http://host.docker.internal:11434/v1/models如果返回模型列表说明网络通了。如果仍然失败检查宿主机防火墙是否允许 11434 端口。报错三reading choices现象OpenClaw 返回error reading choices或unexpected response format。原因模型服务返回的响应格式不符合 OpenAI 兼容规范。Ollama 的/v1接口是兼容的但如果你用了其他非标准接口可能会出现这个问题。解决步骤先用 curl 直接测试接口curl http://host.docker.internal:11434/v1/chat/completions \ -H Content-Type: application/json \ -d {model:llama3.1:8b,messages:[{role:user,content:hi}]}如果返回的 JSON 里有choices字段说明接口正常。如果没有检查 Ollama 版本是否过旧建议升级到最新版。报错四OAuth 相关错误现象OpenClaw 提示OAuth token expired或authentication failed。原因如果你用的是需要 OAuth 的云端服务Token 可能过期了。OpenClaw 本身不处理 OAuth 刷新它依赖你提供的长期 API Key。解决步骤重新生成 API Key更新config.json然后重启容器。如果你用的是 TaoToken可以在控制台重新创建 Key。如果你需要长期运行编码任务可以考虑使用 TaoToken Coding Plan它提供更稳定的调用额度。报错五ffmpeg not found现象OpenClaw 执行视频任务时返回ffmpeg not found。原因容器镜像里没有安装 FFmpeg或者ffmpegPath配置错误。解决步骤先进入容器检查docker exec -it openclaw which ffmpeg如果没有输出说明镜像里没有 FFmpeg。你可以在docker-compose.yml里换一个包含 FFmpeg 的镜像或者自己构建一个。如果which ffmpeg有输出但 OpenClaw 仍然报错检查config.json里的ffmpegPath是否和实际路径一致。Linux 下通常是/usr/bin/ffmpeg。如果你在排查过程中需要查看 OpenClaw 的详细日志可以执行docker logs openclaw --tail 100日志里会记录每次模型调用和工具执行的详细信息对定位问题很有帮助。6. 长期使用建议与接入文档跑通基础流程后你可能会想把 OpenClaw 用在日常工作中。这里给出几个实用建议。第一把配置和 workspace 分开管理。config目录存放模型和权限配置workspace目录存放实际处理的文件。这样即使容器重建配置和文件都不会丢失。你可以把config目录纳入版本控制但不要提交 API Key用环境变量或.env文件管理敏感信息。第二根据任务类型切换模型。轻量任务用 8B 模型复杂推理用 70B 或云端模型。你可以在config.json里配置多个模型然后在对话时指定。OpenClaw 支持在指令中写明“使用 xxx 模型”它会自动切换。第三定期检查权限配置。随着使用场景变化你可能需要调整allowedDirectories和allowedTools。建议遵循最小权限原则只开放必要的目录和工具。allowFileDelete保持false除非你非常确定 AI 不会误删重要文件。第四FFmpeg 的参数可以通过 OpenClaw 的自然语言指令动态生成。你不需要记住所有参数只需要描述清楚需求比如“把视频压缩到 10MB 以内保持 1080P”OpenClaw 会调用 FFmpeg 并自动计算合适的码率。但建议在正式处理前先用小文件测试确认输出符合预期。如果你需要更详细的接口说明和配置参数可以查阅 TaoToken 接入文档。文档里包含了 Base URL、Model ID 列表和常见错误码说明。对于需要长期运行编码或 Agent 任务的场景可以考虑使用 TaoToken Coding Plan它提供更稳定的调用额度和更适合开发场景的模型配置。如果你只是想快速验证模型效果可以直接在 TaoToken 模型对话 页面测试不需要本地部署。最后如果你在 Docker 网络配置上遇到问题记住一个原则容器内的localhost永远指向容器自身要访问宿主机服务必须用host.docker.internal或宿主机的局域网 IP。这个原则适用于 Ollama、数据库、Redis 等所有宿主机服务。把这条记住后面遇到类似问题就能快速定位。