拓十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

使用OpenClaw+Ollama+飞书部署智能机器人:TaoToken统一Key接入与本地模型联调指南

使用OpenClaw+Ollama+飞书部署智能机器人:TaoToken统一Key接入与本地模型联调指南

1. 为什么本地 Ollama 加飞书机器人,最后卡在鉴权上

OpenClaw 是一个把聊天渠道和模型后端串起来的开源网关,Ollama 负责在本地或云端跑模型,飞书机器人负责把消息送进群聊。三者单独看都不难,难的是把它们接成一条完整链路:飞书回调要验签,OpenClaw 要拿模型 Key,Ollama 又要暴露一个兼容接口。很多人第一次部署时,飞书那边显示“应用已发布”,OpenClaw 这边也显示 gateway 启动成功,但在群里 @机器人 却没有任何回复,翻日志只看到 401 或者 connection refused。

我这次要解决的就是这个“多服务鉴权分散”的问题。核心思路是:把模型调用统一收敛到一个兼容 OpenAI 协议的入口,OpenClaw 只认一个 Base URL 和一个 Key,Ollama 本地模型和云端模型都通过这个入口转发。这样飞书机器人、OpenClaw、模型服务三者的凭证就不会互相打架。下面按“先跑通模型、再配 OpenClaw、最后接飞书”的顺序,把每一步的配置和验证动作写清楚,你照着做基本能一次跑通。

适合谁看:手里有一台能跑 Ollama 的机器(Windows 或 Linux 都行),想在飞书群里放一个能问答的机器人,又不想在多个服务之间来回换 Key 的人。全文不涉及任何网络加速工具,所有地址都是本地或公开 API 入口。

2. TaoToken 统一 Key 与 OpenClaw 前置配置

2.1 为什么要在 OpenClaw 前面加一层统一入口

OpenClaw 的模型配置里,provider 通常要求填 Base URL、API Key、Model ID 三件套。如果你直接用 Ollama 的本地地址,飞书机器人一旦部署到别的机器,或者你想同时用本地模型和云端模型,就要改多处配置。更麻烦的是,Ollama 默认不带鉴权,OpenClaw 的某些 provider 又强制要求 Key,填了假 Key 会在请求头里带出奇怪的 Authorization,导致 401。

TaoToken 在这里的角色是一个兼容 OpenAI 协议的统一入口。你只需要在 OpenClaw 里填一次 Base URL 和 Key,模型侧无论是本地 Ollama 还是云端模型,都通过这个入口转发。这样飞书机器人、OpenClaw、模型服务三者的凭证就收敛成一份,排查问题时也只需要看一个地方。

2.2 获取统一 Key 与确认 Base URL

先到 TaoToken 控制台创建一个 API Key。地址是 https://taotoken.net/api-keys ,登录后点“创建 Key”,复制出来先存到本地文本里,后面配置 auth.json 要用。注意这个 Key 只显示一次,关掉页面就看不到了。

Base URL 用 https://taotoken.net/api ,不要带末尾斜杠。这个地址兼容 OpenAI 的 /v1/chat/completions 路径,OpenClaw 的 openai-compatible provider 可以直接填。

模型对话入口可以用来单独验证 Key 是否有效: https://taotoken.net/models 。在里面选一个模型发一句“你好”,如果有回复,说明 Key 和通道都正常。这一步建议先做,避免后面 OpenClaw 报错时分不清是 Key 问题还是配置问题。

2.3 安装 OpenClaw 并确认版本

OpenClaw 需要 Node 环境,先确认 node -v 能输出版本号。然后执行:

npm install -g openclaw@latest openclaw --version

如果版本号正常显示,说明安装成功。Windows 用户如果遇到原生环境报错,可以按提示用 WSL2,但本文的配置在原生 Windows 上也能跑,只是路径要换成反斜杠。

安装完成后,OpenClaw 的配置目录默认在用户目录下的 .openclaw 文件夹。Windows 是 C:\Users\你的用户名.openclaw ,Linux 是 ~/.openclaw 。后面 auth.json 和 settings 都放在这个目录里。

2.4 准备 Ollama 本地模型

Ollama 装好后,先拉一个模型,比如:

ollama pull qwen2.5:7b ollama list

确认模型在列表里。Ollama 默认监听 127.0.0.1:11434,OpenClaw 如果直接连本地 Ollama,provider 选 ollama 即可。但为了统一鉴权,我们让 OpenClaw 走 TaoToken 的 OpenAI 兼容入口,模型侧仍然可以指向本地 Ollama 的转发地址。这样飞书机器人收到的消息,先到 OpenClaw,再到统一入口,最后落到本地模型。

3. 可复制配置:auth.json 与 OpenClaw settings

3.1 auth.json 三件套写法

在 .openclaw 目录下新建或编辑 auth.json,写入以下内容。注意把 sk-你的Key 替换成你在控制台创建的那串:

{ "providers": { "taotoken": { "baseUrl": "https://taotoken.net/api", "apiKey": "sk-你的Key", "model": "qwen2.5:7b" } } }

这里 Base URL、Key、Model ID 三件套必须齐全。Model ID 写你在 Ollama 里拉下来的模型名,如果走云端模型就写对应的模型标识。OpenClaw 读取 auth.json 后,会在请求头里带上 Authorization: Bearer sk-你的Key,统一入口再根据模型名转发。

3.2 settings 里的 provider 与 channel 配置

OpenClaw 的 settings 可以用 openclaw config 进入交互式配置,也可以直接改配置文件。关键字段如下:

[providers.taotoken] type = "openai-compatible" base_url = "https://taotoken.net/api" api_key_env = "TAOTOKEN_API_KEY" default_model = "qwen2.5:7b" [channels.feishu] enabled = true app_id = "cli_你的AppID" app_secret = "你的AppSecret" connection_mode = "websocket"

api_key_env 指向环境变量,你也可以直接在 auth.json 里写明文 Key。两种方式选一种,不要同时写,否则会出现 Key 覆盖导致 401。

3.3 飞书应用凭证的填写位置

飞书开放平台创建自建应用后,在“凭证与基础信息”页面能看到 App ID 和 App Secret。把这两个值填到 settings 的 channels.feishu 段。连接模式选 websocket,这样不需要公网回调地址,本地机器也能收消息。如果你选 webhook 模式,就需要一个公网可达的地址,配置复杂度会上升。

权限方面,在飞书后台“权限管理”里批量导入以下 JSON:

{ "scopes": { "tenant": [ "im:message", "im:message.group_at_msg:readonly", "im:message.p2p_msg:readonly", "im:message:send_as_bot", "im:resource" ], "user": [] } }

事件订阅里添加 im.message.receive_v1,订阅方式选长连接(WebSocket)。这样飞书的消息会通过长连接推给 OpenClaw,不需要你暴露公网端口。

4. 验证请求:从 Ollama 响应到飞书回调连通

4.1 先用 curl 验证统一入口

在配置 OpenClaw 之前,先用 curl 确认统一入口能正常返回。命令如下:

curl -X POST https://taotoken.net/api/v1/chat/completions \ -H "Authorization: Bearer sk-你的Key" \ -H "Content-Type: application/json" \ -d '{"model":"qwen2.5:7b","messages":[{"role":"user","content":"你好"}]}'

如果返回 JSON 里有 choices 字段,说明 Key 和通道都正常。如果返回 401,检查 Key 是否复制完整;如果返回 model not found,检查模型名是否和 Ollama 里的一致。

4.2 启动 OpenClaw gateway 并看日志

配置写好后,执行:

openclaw gateway --force

--force 会强制重启 gateway,避免旧进程占用端口。启动后日志里会显示 provider 加载情况和 channel 连接状态。看到 feishu channel connected 和 provider taotoken ready 就说明 OpenClaw 侧正常。

然后在浏览器打开 http://127.0.0.1:18789 ,用日志里带 token 的地址登录网页版管理页。在聊天框输入“你好”,如果有回复,说明 OpenClaw 到模型的链路通了。这一步是飞书接入前最重要的验证,不要跳过。

4.3 飞书群内 @机器人 测试

在飞书里建一个测试群,把机器人拉进群。在群里 @机器人 发“你好”,观察 OpenClaw 日志。正常情况会看到收到 im.message.receive_v1 事件,然后调用 provider,最后 send_as_bot 回复。如果群里没反应,先看日志有没有收到事件;如果收到事件但没回复,看 provider 调用是否报错。

飞书回调连通性验证的关键是事件订阅方式。长连接模式下,OpenClaw 启动时会和飞书建立 WebSocket,日志里会有 feishu ws connected。如果一直显示 connecting,检查 App ID 和 App Secret 是否正确,以及应用是否已发布版本。

5. 本篇常见错排查:401、local proxy failed、reading choices

5.1 401 Unauthorized

最常见的原因是 Key 没填对或者 auth.json 和 settings 里的 Key 冲突。检查顺序:先看 auth.json 里的 apiKey 是否和控制台一致,再看 settings 里是否又写了 api_key_env 指向一个空的环境变量。两者只能留一个。另外,Base URL 末尾不要带斜杠,带斜杠会导致路径拼接成 //v1/chat/completions,部分网关会拒绝。

5.2 local proxy failed

这个报错通常出现在 OpenClaw 尝试连接本地 Ollama 时。如果你走的是统一入口,provider 类型应该是 openai-compatible,而不是 ollama。如果 provider 类型写错,OpenClaw 会按 Ollama 原生协议去连 11434 端口,而你的模型其实在统一入口后面,就会报 local proxy failed。改 provider 类型为 openai-compatible,Base URL 填 https://taotoken.net/api 即可。

5.3 reading choices 报错

日志里出现 reading choices 说明请求发出去了,但返回体里没有 choices 字段。常见原因是模型名写错,统一入口找不到对应模型,返回了一个错误对象。检查 auth.json 里的 model 字段,确保和 Ollama list 里的名称完全一致。另外,如果返回体是 HTML 而不是 JSON,说明 Base URL 填成了网页地址,要改成 API 地址。

5.4 飞书事件收不到

如果 OpenClaw 日志里没有 im.message.receive_v1,先检查飞书后台事件订阅是否选了长连接,以及应用版本是否已发布。未发布的应用,事件不会推送到长连接。另外,群聊策略如果选了 Allowlist,只有白名单群能触发,测试群要加进去。选 Open 则所有群都能响应,调试阶段建议先用 Open。

6. 长期编码与 Agent 场景的 CTA

如果你只是想让飞书机器人能问答,上面的配置已经够用。但如果你打算把 OpenClaw 当成长期编码助手或者 Agent 入口,比如让机器人在群里帮忙查代码、跑脚本、做多轮任务,那就需要考虑模型调用的稳定性和额度。TaoToken 的 Coding Plan 适合这种长期编码场景,入口在 https://taotoken.net/coding-plan?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content= ,里面有针对 Agent 场景的调用说明。

接入文档在 https://taotoken.net/doc?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content= ,里面有 auth.json 的完整字段说明和不同 provider 的配置示例。如果你在配置过程中遇到 401 或者 reading choices,先对照文档检查 Base URL 和 Key 的写法,大部分问题都能定位到具体字段。

最后提醒一点:OpenClaw 的 gateway 默认只监听本地,飞书长连接不需要公网地址,所以不要把 gateway 暴露到公网。如果你需要多台机器共用,建议在每台机器上单独配 auth.json,而不是共享一个 Key 文件。

返回列表