1. 本地 AI 员工工作流OpenCode、OpenClaw 与 Ollama 到底怎么分工很多人第一次听到「AI 员工」这个词脑子里浮现的是一个能自己看屏幕、自己敲命令、自己改代码的完整智能体。但真到本地搭建的时候问题就来了OpenCode、OpenClaw、Ollama 这三个名字经常一起出现它们到底是替代关系还是协作关系我该先装哪个先把定位说清楚不然后面配置全是坑。Ollama 是模型运行时你可以把它理解成「本地的大模型发动机」。它负责把 Qwen、Llama、DeepSeek 这类开源权重加载进显存或内存并对外暴露一个兼容 OpenAI 风格的 HTTP 接口默认监听11434端口。它本身不干任何「员工」的活只负责推理。OpenCode 是编码智能体跑在终端里的 TUI也有 Web 和 IDE 扩展形态。它的职责是理解你的项目上下文、规划任务、调用模型、执行代码修改并验证结果。它不训练模型也不自带模型而是一个模型调度层支持 75 家模型提供商包括本地 Ollama。OpenClaw 是执行中枢也就是「AI 员工」里那个真正动手的角色。它连接大模型、本地系统与多平台通讯渠道飞书、钉钉、Telegram 等具备长期记忆、任务规划、工具调用、本地文件操作和 MCP 协议支持。它更像一个自托管的自动化网关把「想」和「做」串起来。所以三者的关系是Ollama 提供推理能力OpenCode 负责编码场景的智能体交互OpenClaw 负责跨渠道、跨工具的自动化执行。你要搭一套完整的本地 AI 员工工作流最省事的路径是先用 Ollama 把模型跑起来再用 OpenCode 验证模型接入是否正常最后用 OpenClaw 把执行链路打通。这套组合适合谁适合有本地服务器或一台内存 16GB 以上的开发机、希望数据不出内网、又想体验 Agent 工作流的人。如果你只是想试试模型对话那 Ollama 单独用就够了如果你要的是「能自己干活」的员工那三个组件缺一不可。下面我按「环境准备 → 模型接入 → 配置片段 → 验证请求 → 排障」的顺序把每一步都写成可以直接复制的形式。中间会给出 OpenCode 和 OpenClaw 的配置文件片段以及 Ollama 的模型拉取和接口验证命令。2. 环境准备与 Ollama 安装本地模型运行时怎么跑起来在装 OpenCode 和 OpenClaw 之前先把 Ollama 跑通因为后面两个组件都要通过 HTTP 接口调用它。如果 Ollama 本身没起来后面所有配置都是白搭。2.1 系统要求与依赖清单先确认你的机器满足基本条件。Ollama 对内存比较敏感7B 级别的模型量化后大约需要 5–6GB 可用内存14B 级别建议 12GB 以上。如果你打算同时跑 OpenClaw 的 Node.js 进程建议整机内存不低于 16GB。组件最低要求推荐配置操作系统Linux / macOS / Windows 10Ubuntu 22.04 或 AlmaLinux 9内存8GB16GB 以上磁盘20GB 空闲50GB 以上模型文件较大Node.js20.x24.xOpenClaw 要求Docker可选24.x 以上容器化部署用Node.js 这块要注意OpenClaw 官方要求 Node 24如果你系统自带的 Node 版本太低后面openclaw onboard会直接报错。建议用 nvm 管理版本不要用系统包管理器装的老版本。2.2 安装 Ollama 并拉取模型Linux 和 macOS 下一条命令搞定curl -fsSL https://ollama.com/install.sh | sh安装完成后确认服务状态systemctl status ollama ollama --version如果systemctl显示 active (running)说明服务已经起来了。默认监听127.0.0.1:11434。如果你需要从其他机器访问比如 OpenClaw 跑在 Docker 里需要改一下监听地址sudo mkdir -p /etc/systemd/system/ollama.service.d sudo tee /etc/systemd/system/ollama.service.d/override.conf EOF [Service] EnvironmentOLLAMA_HOST0.0.0.0:11434 EOF sudo systemctl daemon-reload sudo systemctl restart ollama注意改成0.0.0.0之后任何能访问你机器 11434 端口的人都能调用模型生产环境一定要配合防火墙规则只放行内网网段。接下来拉取模型。编码场景建议用 Qwen2.5-Coder 系列通用场景可以用 Qwen2.5 或 Llama 3.1ollama pull qwen2.5-coder:7b ollama pull qwen2.5:7b拉完之后确认模型列表ollama list你应该能看到类似qwen2.5-coder:7b和qwen2.5:7b的条目。然后用 curl 直接验证接口是否可用curl http://127.0.0.1:11434/v1/chat/completions \ -H Content-Type: application/json \ -d { model: qwen2.5-coder:7b, messages: [{role: user, content: 用一句话说明什么是递归}], stream: false }如果返回 JSON 里choices[0].message.content有内容说明 Ollama 这一层已经通了。这一步很关键因为后面 OpenCode 和 OpenClaw 报的很多错根源都在这里没通。2.3 安装 OpenCodeOpenCode 的安装分平台。Linux 和 macOS 用官方脚本curl -fsSL https://opencode.ai/install | bash source ~/.bashrc opencode --versionWindows 下用 scoopSet-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser Invoke-RestMethod -Uri https://get.scoop.sh | Invoke-Expression scoop install git scoop install opencode如果你在 Windows 上执行scoop报「无法将 scoop 项识别为 cmdlet」说明 PowerShell 不是管理员权限或者执行策略没放开。用管理员身份打开 PowerShell先跑Set-ExecutionPolicy那条再装 scoop。如果还是报错改用iex {$(irm get.scoop.sh)} -RunAsAdmin。装完之后opencode命令应该能直接启动 TUI。第一次启动会让你选模型提供商这里先跳过我们后面用配置文件直接指定 Ollama。2.4 安装 OpenClawOpenClaw 有两种装法Docker 和直接安装。Docker 方式隔离性好但网络配置容易出问题直接安装更简单适合先跑通流程。直接安装Linuxcurl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.3/install.sh | bash . $HOME/.nvm/nvm.sh nvm install 24 node -v npm config set registry https://registry.npmmirror.com curl -fsSL https://openclaw.ai/install.sh | bash openclaw onboard --install-daemon openclaw gateway statusopenclaw onboard会引导你完成初始配置包括模型接入、渠道绑定等。如果你只是想先验证本地模型能不能用可以在 onboard 时选择「本地模型」或「自定义 OpenAI 兼容接口」填入 Ollama 的地址。Docker 方式git clone https://github.com/openclaw/openclaw.git cd openclaw ./docker-setup.sh docker-compose up -dDocker 方式有一个非常常见的坑容器会一直重启。原因是 OpenClaw Gateway 在容器里运行时Docker 网络会让它被识别为非本地环回访问而 Control UI 默认只允许环回来源。解决办法是在~/.openclaw/openclaw.json的gateway部分加上controlUi.allowedOrigins{ gateway: { controlUi: { allowedOrigins: [ http://127.0.0.1:18789, http://localhost:18789, http://你的服务器IP:18789 ] } } }改完之后docker-compose down docker-compose up -d容器就能稳定运行了。这个配置片段建议直接复制路径和字段名都不要改否则 OpenClaw 读不到。3. 可复制配置OpenCode 与 OpenClaw 接入 Ollama 的完整片段这一节是整篇的核心。前面装好的东西只有通过配置文件把 Ollama 的接口接进去才算真正跑通。我会给出 OpenCode 和 OpenClaw 两边的配置片段以及一个可选的 TaoToken 接入方式方便你在本地模型之外补充云端模型能力。3.1 OpenCode 配置 Ollama 本地模型OpenCode 的配置文件默认在~/.config/opencode/opencode.jsonLinux/macOS或%APPDATA%\opencode\opencode.jsonWindows。如果目录不存在手动创建。一个接入 Ollama 的最小配置如下{ $schema: https://opencode.ai/config.json, provider: { ollama: { npm: ai-sdk/openai-compatible, name: Ollama Local, options: { baseURL: http://127.0.0.1:11434/v1 }, models: { qwen2.5-coder:7b: { name: Qwen2.5 Coder 7B }, qwen2.5:7b: { name: Qwen2.5 7B } } } }, model: ollama/qwen2.5-coder:7b }这里有几个关键点。baseURL必须带/v1后缀因为 Ollama 的 OpenAI 兼容接口在/v1路径下。npm字段指定用 OpenAI 兼容的适配器不要写成ai-sdk/openai否则会因为认证方式不匹配报 401。model字段的格式是provider/model也就是ollama/qwen2.5-coder:7b。如果你同时想接入云端模型作为补充可以在provider里再加一段。比如通过 TaoToken 接入 Claude 或 GPT 系列{ provider: { taotoken: { npm: ai-sdk/openai-compatible, name: TaoToken, options: { baseURL: https://taotoken.net/api/v1, apiKey: 你的API Key }, models: { claude-sonnet-4-5: { name: Claude Sonnet 4.5 } } } } }API Key 在 TaoToken 控制台的 API Keys 页面生成地址是https://taotoken.net/console/api-keys。注意baseURL用https://taotoken.net/api/v1不要加 UTM 参数那是给推广链接用的接口地址保持干净。配置写完后启动 OpenCodeopencode在 TUI 里按Tab切换到 Plan 模式输入一句「读取当前目录的 README总结项目结构」如果模型正常返回说明 OpenCode 到 Ollama 的链路通了。3.2 OpenClaw 配置本地模型与网关OpenClaw 的配置文件在~/.openclaw/openclaw.json。这个文件结构比 OpenCode 复杂因为它要管模型、网关、渠道、记忆等多个模块。我们先给一个最小可用的本地模型配置{ models: { providers: { ollama: { type: openai-compatible, baseUrl: http://127.0.0.1:11434/v1, apiKey: ollama, models: [ { id: qwen2.5:7b, name: Qwen2.5 7B Local } ] } }, default: ollama/qwen2.5:7b }, gateway: { port: 18789, controlUi: { allowedOrigins: [ http://127.0.0.1:18789, http://localhost:18789 ] } } }apiKey字段对 Ollama 来说是必填的但 Ollama 本身不校验随便填一个非空字符串就行写ollama最直观。default字段指定默认模型格式同样是provider/model。如果你要用 TaoToken 作为云端补充把providers里再加一段{ taotoken: { type: openai-compatible, baseUrl: https://taotoken.net/api/v1, apiKey: 你的API Key, models: [ { id: claude-sonnet-4-5, name: Claude Sonnet 4.5 } ] } }改完配置后重启 OpenClaw 网关openclaw gateway restart openclaw gateway statusstatus显示 running 之后在浏览器打开http://你的服务器IP:18789应该能看到 Control UI 界面。如果打不开先检查防火墙有没有放行 18789 端口再检查allowedOrigins里有没有把你的访问地址加进去。3.3 三件套对照Base URL、Key、Model ID不管你是接 Ollama 还是接 TaoToken配置里永远绕不开三个字段Base URL、API Key、Model ID。我把它们整理成一张表方便你对照检查。组件Base URLAPI KeyModel ID 示例Ollama 本地http://127.0.0.1:11434/v1任意非空字符串qwen2.5-coder:7bTaoToken 云端https://taotoken.net/api/v1控制台生成的 Keyclaude-sonnet-4-5OpenCode 引用配置在provider.options.baseURL配置在provider.options.apiKeyprovider/model格式OpenClaw 引用配置在providers.name.baseUrl配置在providers.name.apiKeyproviders.name.models[].id这张表建议截图保存。后面遇到 401 或者 model not found先回来对一遍这三个字段八成问题都出在这里。4. 验证请求逐条命令确认三个组件协同正常配置写完不代表跑通必须用实际请求验证。这一节我给出从 Ollama 到 OpenCode 再到 OpenClaw 的逐层验证命令每一层都确认通过之后再往下走。4.1 第一层Ollama 接口直连验证先用 curl 直接打 Ollama 的 OpenAI 兼容接口确认模型能返回内容curl -s http://127.0.0.1:11434/v1/chat/completions \ -H Content-Type: application/json \ -d { model: qwen2.5-coder:7b, messages: [ {role: system, content: 你是一个简洁的助手}, {role: user, content: 写一个 Python 函数判断字符串是否为回文} ], stream: false } | python3 -m json.tool如果返回的 JSON 里choices[0].message.content包含代码说明 Ollama 这一层完全正常。如果返回model not found说明模型名写错了用ollama list确认实际名称。如果连接被拒绝说明 Ollama 服务没起来或者监听地址不对。4.2 第二层OpenCode 调用本地模型OpenCode 的验证更直观直接在终端里跑cd /path/to/your/project opencode run 读取当前目录下的 package.json告诉我项目用了哪些依赖opencode run是非交互模式适合脚本化验证。如果模型正常返回依赖列表说明 OpenCode 已经成功调用 Ollama。如果报provider not found检查opencode.json里的provider字段名和model字段的前缀是否一致。如果报 401检查npm字段是不是写成了ai-sdk/openai改成ai-sdk/openai-compatible。你也可以在 TUI 里按Tab切换到 Plan 模式输入一个需要多步推理的任务比如「分析这个项目的目录结构给出重构建议」。Plan 模式不会直接改代码适合验证模型的规划能力。4.3 第三层OpenClaw 网关与执行链路验证OpenClaw 的验证分两步。先确认网关状态openclaw gateway status输出里应该有running和端口号18789。然后确认模型列表openclaw models list你应该能看到ollama/qwen2.5:7b在列表里。如果看不到说明openclaw.json里的models.providers配置没被加载检查 JSON 格式是否合法可以用python3 -m json.tool ~/.openclaw/openclaw.json验证。最后做一个端到端测试让 OpenClaw 执行一个简单任务openclaw run 在当前目录创建一个 hello.txt内容为 hello ai employee如果命令执行成功并且当前目录下真的出现了hello.txt说明 OpenClaw 的工具调用链路已经打通。这一步验证的是「模型 → 规划 → 工具执行」的完整闭环比单纯返回文本更有说服力。4.4 成功结果应该长什么样三层都通过之后你的终端应该呈现这样的状态Ollama 的systemctl status显示 activeollama list能看到模型OpenCode 的opencode run能返回项目分析结果OpenClaw 的gateway status显示 runningopenclaw run能实际创建文件。这时候你打开 OpenClaw 的 Control UI在对话框里输入「帮我整理当前目录下的 Markdown 文件按主题分类」它应该能自主规划步骤、调用文件操作工具、给出执行结果。这就是一个最小可用的本地 AI 员工。5. 常见报错排查401、local proxy failed、reading choices、OAuth这一节列的都是真实踩过的坑每个报错都给出原因和修复方式。你遇到问题的时候先在这里对一遍。5.1 401 Unauthorized这是最高频的报错。在 OpenCode 里接 Ollama 时报 401九成是因为npm字段写成了ai-sdk/openai。OpenAI 官方适配器会强制要求 API Key 并走 Bearer 认证而 Ollama 不认这套。改成ai-sdk/openai-compatible即可。在 OpenClaw 里报 401检查providers.name.apiKey是否为空。Ollama 虽然不校验但 OpenClaw 的适配器要求这个字段非空填ollama就行。如果你接的是 TaoToken401 说明 Key 无效或过期去控制台重新生成一个。5.2 local proxy failed这个报错通常出现在 OpenClaw 的 Docker 部署里。原因是容器内的 OpenClaw 试图通过本地代理访问外部模型接口但容器网络没有配置代理或者代理地址在容器内不可达。修复方式有两种。第一种是改用宿主机网络模式在docker-compose.yml里加network_mode: host。第二种是在 OpenClaw 配置里把模型地址改成宿主机的内网 IP而不是127.0.0.1。因为容器里的127.0.0.1指向容器自身不是宿主机。如果你用的是 Ollama确认OLLAMA_HOST已经改成0.0.0.0:11434并且防火墙放行了容器网段。5.3 reading choices 相关报错这个报错一般长这样Cannot read properties of undefined (reading choices)。原因是模型接口返回的 JSON 结构不符合 OpenAI 兼容格式适配器解析choices字段时拿到 undefined。常见触发场景有两个。一是baseURL没带/v1请求打到了 Ollama 的原生接口而不是 OpenAI 兼容接口返回结构不一样。二是模型名写错Ollama 返回了错误信息而不是正常的 completion 结构。修复方式确认baseURL以/v1结尾用curl直接打这个地址确认返回结构里有choices字段。5.4 OAuth 相关报错如果你在 OpenClaw 里配置了需要 OAuth 的云端模型比如某些 Claude 接入方式可能会遇到OAuth token expired或invalid_grant。这类报错说明刷新令牌失效需要重新走授权流程。在 OpenClaw 里重新授权openclaw auth login --provider provider-name如果你用的是 TaoToken 这类 API Key 方式不涉及 OAuth直接检查 Key 是否有效即可。API Key 方式比 OAuth 简单适合本地自托管场景。5.5 模型返回空内容有时候请求成功了但content是空字符串。这种情况通常是模型加载失败或者显存不足。用ollama ps确认模型是否在运行用nvidia-smi如果有 GPU确认显存占用。如果显存不够换更小的量化版本比如qwen2.5-coder:1.5b。另外OpenCode 的 Plan 模式下模型可能只返回规划而不返回代码这是正常行为。切换到 Build 模式才会实际执行修改。6. 把本地 AI 员工用起来从验证通过到日常协作三层验证通过之后你手里就有了一套完整的本地 AI 员工工作流。但「跑通」和「好用」之间还有一段距离这一节说几个实际使用中的经验。第一模型选择要分场景。编码任务用 Qwen2.5-Coder通用对话和任务规划用 Qwen2.5 或 Llama 3.1。OpenCode 的配置文件里可以配多个模型用model字段切换。OpenClaw 的default字段指定默认模型具体任务可以在会话里临时切换。第二OpenClaw 的渠道绑定建议先只开一个。它支持飞书、钉钉、Telegram 等 50 多个渠道但每开一个就多一层配置和排障成本。先用 Control UI 在浏览器里跑通确认任务执行没问题再绑渠道。第三长期跑 Agent 任务的话本地模型的上下文长度是个瓶颈。7B 模型通常支持 32K 上下文处理大项目会不够用。这时候可以用 TaoToken 接入云端模型作为补充在 OpenClaw 里配置多个 provider按任务复杂度切换。Coding Plan 适合长期编码和 Agent 场景模型对话适合临时验证模型效果接入文档里有完整的配置说明。第四定期检查 Ollama 的模型更新。开源模型迭代很快ollama pull会拉取最新版本。但更新之后要重新验证一遍接口因为模型名和返回结构偶尔会有变化。最后说一个实际经验本地 AI 员工最大的价值不是替代人而是把重复性的文件整理、代码分析、任务规划自动化掉。我试过让 OpenClaw 每天定时扫描项目目录把新增的 Markdown 文件按主题归档这个任务用本地 7B 模型完全够用而且数据不出内网。真正复杂的推理任务再切到云端模型。这种混合模式比全部本地或全部云端都更实用。