1. 为什么要在 Ubuntu 上折腾 OpenClaw + Ollama + 飞书
如果你手里有一台闲置的 Ubuntu 机器,想让它变成一个能干活、能对话、还能被团队直接调用的 AI Agent,那 OpenClaw 这套组合值得试一次。OpenClaw 是一个开源的 Agent 网关,负责把消息通道、模型推理、工具调用串起来;Ollama 负责在本机跑大模型,数据不出内网;飞书则作为团队日常最顺手的消息入口。三者拼在一起,就是一条「飞书发消息 → OpenClaw 编排 → Ollama 推理 → 飞书回结果」的完整链路。
这套方案适合谁?个人开发者想低成本搭私有 Agent、小团队想在内网做知识问答、或者你单纯想验证「本地模型 + 消息通道」到底能不能跑通。它不需要你买 GPU 云主机,也不需要把数据发到外部服务,一台 16GB 内存的 Ubuntu 22.04 就能起步。
不过实际部署时,很多人会卡在两个地方:一是模型提供方的 Key 和地址管理混乱,本地 Ollama、云端模型、备用通道各写一套配置,改起来容易漏;二是飞书通道的凭据和权限配置繁琐,报错信息又不直观。这篇就围绕这两个痛点,用 TaoToken 统一 Key/API 通道来收敛模型接入层,把 Ollama 本地推理和飞书通道一次性打通,配置和命令都可以直接复制。
我试过在空白 Ubuntu 上从零走一遍,下面按「环境准备 → 装 Ollama → 装 OpenClaw → 接 TaoToken 统一通道 → 配飞书 → 端到端验证 → 排错」的顺序展开,每一步都有可复制的命令和配置骨架。
2. TaoToken 前置:统一 Key 与 API 通道怎么准备
在动手之前,先把模型接入层理清楚。OpenClaw 支持多种模型提供方,本地 Ollama 只是其中之一。如果你后面还想接云端模型做兜底,或者团队里多人共用一套 Key,那用 TaoToken 做统一入口会省很多事。
TaoToken 的作用是提供一个统一的 API 通道和 Key 管理,你可以把它理解成「模型接入的中间层」:OpenClaw 只需要认一个 baseUrl 和一个 Key,背后具体走本地 Ollama 还是别的模型,由你在 TaoToken 侧配置。这样配置文件里不会散落一堆不同厂商的地址和密钥。
具体操作分三步。第一步,打开官网 https://taotoken.net/?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content= 注册并登录。第二步,进入控制台 https://taotoken.net/console?utm_source=taotoken_aicg_blog_end&utm_content=console&utm_campaign=rewrite 创建 API Key,建议按用途命名,比如openclaw-ubuntu,方便后面区分。第三步,如果你打算长期跑编码类 Agent,可以看一下 Coding Plan https://taotoken.net/coding-plan?utm_source=taotoken_aicg_blog_end&utm_content=coding-plan&utm_campaign=rewrite,它更适合高频调用的场景。
拿到 Key 之后,API 入口统一用 https://taotoken.net/api(这个地址不加 UTM 参数,直接作为 baseUrl 使用)。接入文档在 https://taotoken.net/doc?utm_source=taotoken_aicg_blog_end&utm_content=doc&utm_campaign=rewrite,里面有各语言的调用示例,配置前扫一眼能少踩坑。
注意:本地 Ollama 的 apiKey 通常用占位值
ollama-local就行,但如果你通过 TaoToken 统一通道转发,就要用 TaoToken 控制台里生成的真实 Key。两者不要混用,否则会出现「本地能跑、走通道报 401」的情况。
3. 可复制配置:Ollama、OpenClaw 与飞书通道
这一节是全文的核心,所有配置都按可直接复制的标准给出。先确认系统环境,再依次装 Ollama、OpenClaw,最后写配置。
3.1 环境确认与基础依赖
先看机器规格,确认架构和资源:
uname -m lsb_release -a free -h df -h /推荐 Ubuntu 22.04 及以上、x86_64 架构、内存 16GB 起步(32GB 更稳)。如果内存只有 8GB,跑 7B 模型会比较吃力,建议换更小的模型。
3.2 安装 Ollama 并拉取模型
Ollama 的安装脚本一行搞定:
curl -fsSL https://ollama.com/install.sh | sh ollama --version拉一个模型做烟雾测试,这里用 qwen2.5:7b:
ollama pull qwen2.5:7b ollama run qwen2.5:7b "只回复 OK"如果机器有 NVIDIA 显卡,用下面这条确认是否走了 GPU:
ollama ps重点看 PROCESSOR 列,出现 GPU 说明显卡推理已启用;如果显示 100% CPU,说明还在用 CPU 跑,速度会慢不少。
3.3 安装 OpenClaw
OpenClaw 依赖 Node 20 LTS,先装 Node:
curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash - sudo apt-get install -y nodejs node -v npm -v然后全局安装 OpenClaw:
sudo npm i -g openclaw openclaw --version3.4 配置模型提供方:走 TaoToken 统一通道
这里有两种写法。如果你只想用本地 Ollama,直接指向本机 11434 端口:
openclaw config set models.providers.ollama.baseUrl "http://127.0.0.1:11434/v1" openclaw config set models.providers.ollama.apiKey "ollama-local" openclaw models set ollama/qwen2.5:7b如果你希望用 TaoToken 统一管理 Key 和通道,把 baseUrl 换成 TaoToken 的 API 入口,apiKey 换成控制台生成的真实 Key:
openclaw config set models.providers.taotoken.baseUrl "https://taotoken.net/api" openclaw config set models.providers.taotoken.apiKey "你的_TaoToken_Key" openclaw models set taotoken/qwen2.5:7b两种方式可以共存,配置文件里会分别保存。下面给一份config.toml骨架,你可以直接对照修改:
[models] default = "taotoken/qwen2.5:7b" [models.providers.ollama] baseUrl = "http://127.0.0.1:11434/v1" apiKey = "ollama-local" [models.providers.taotoken] baseUrl = "https://taotoken.net/api" apiKey = "你的_TaoToken_Key" [gateway] host = "127.0.0.1" port = 187893.5 配置飞书通道
飞书通道用引导命令配置最省事:
openclaw onboard向导里依次选择:通道选 Feishu/Lark;域名国内选feishu.cn,国际选larksuite.com;然后填入 appId 和 appSecret;群聊策略按需选allowlist或open。
如果需要通过配对码放行会话:
openclaw pairing list openclaw pairing approve feishu <配对码>对应的settings.json骨架如下,字段名以你实际向导生成的为准,这里给的是结构参考:
{ "channels": { "feishu": { "enabled": true, "domain": "feishu.cn", "appId": "cli_xxxxxxxx", "appSecret": "xxxxxxxxxxxxxxxx", "groupPolicy": "allowlist" } }, "gateway": { "auth": { "token": "你的_gateway_token" } } }注意:appSecret 和 gateway token 都属于敏感信息,不要提交到公开仓库。生产环境建议用环境变量注入,而不是明文写在配置文件里。
4. 验证请求:从飞书发消息到 Ollama 返回结果
配置写完,启动网关:
openclaw gateway看到类似下面的日志,说明基本正常:
agent model: taotoken/qwen2.5:7b listening on ws://127.0.0.1:18789另开一个终端跟日志,方便观察请求流转:
openclaw logs --follow端到端验证动作:在飞书里给机器人发一条消息,内容写「只回复 OK」。预期链路是飞书消息进入 OpenClaw,OpenClaw 调用配置的模型提供方,Ollama 或 TaoToken 通道返回结果,最后飞书收到回复。
如果不想依赖飞书界面,也可以先用命令行验证 Agent 本身是否通:
openclaw agent --agent main --message "只回复OK" --json --timeout 60返回 JSON 里能看到模型输出,就说明 OpenClaw 到模型这一段是通的。再去飞书发消息,如果没回复,问题基本就落在飞书通道配置上,排查范围能缩小很多。
验证模型对话能力时,也可以直接在模型对话页面 https://taotoken.net/model-chat?utm_source=taotoken_aicg_blog_end&utm_content=model-chat&utm_campaign=rewrite 里测一下同一个 Key 是否可用,排除 Key 本身的问题。
5. 本篇常见错排查
部署过程中最容易撞上的几个报错,这里集中列一下,附上原因和处理方式。
Q1:飞书发消息后报No API key found for provider "ollama"
原因是 agent 侧缺少 Ollama 的 auth/profile。处理:
openclaw config set models.providers.ollama.apiKey "ollama-local" openclaw gateway restart如果你走的是 TaoToken 通道,把 provider 名换成taotoken,apiKey 换成真实 Key。
Q2:日志出现failed to obtain token,请求bot/v3/info返回 400
多半是飞书凭据或应用状态异常。检查 appId/appSecret 是否正确、飞书应用是否已发布到当前企业、权限是否开通。必要时重置 appSecret 后更新配置。
Q3:网页控制台反复token_missing/unauthorized
Control UI 没带 gateway token。在 Dashboard 的 Control UI settings 里填写gateway.auth.token即可。
Q4:出现duplicate plugin id detected
同一插件被重复加载,常见于 feishu 插件存在两份。清理重复插件,只保留一份。
Q5:openclaw agent提示Pass --to / --session-id / --agent
命令需要指定目标会话或 agent。示例:
openclaw agent --agent main --message "只回复OK" --json --timeout 60Q6:走 TaoToken 通道报 401
先确认 apiKey 是控制台生成的真实 Key,不是ollama-local占位值;再确认 baseUrl 是https://taotoken.net/api,没有多余路径。Key 管理可以在 API Keys 页面 https://taotoken.net/api-keys?utm_source=taotoken_aicg_blog_end&utm_content=api-keys&utm_campaign=rewrite 里核对。
6. 长期运行与接入建议
跑通之后,建议用 tmux 持久化运行,避免 SSH 断开导致任务中断:
tmux new -s openclaw openclaw gateway按Ctrl+B再按D脱离会话,下次用tmux attach -t openclaw回来。定期执行openclaw security audit --deep做安全巡检,尤其是暴露到内网多人的场景。
如果你后面要接 Claude Code 或 Anthropic 风格的编码 Agent,可以参考 https://taotoken.net/claudecode-anthropic?utm_source=taotoken_aicg_blog_end&utm_content=ClaudeCodeAnthropic&utm_campaign=rewrite 里的接入方式,和 OpenClaw 共用同一套 TaoToken Key,配置层能保持一致。接入文档在 https://taotoken.net/doc?utm_source=taotoken_aicg_blog_end&utm_content=doc&utm_campaign=rewrite,遇到字段不确定时优先查文档而不是猜。
整套流程走下来,最花时间的其实不是安装,而是飞书凭据和模型通道的对应关系。把 TaoToken 作为统一 Key 入口之后,后面换模型、加通道都只改一处,维护成本会低很多。