Ubuntu 本地部署 OpenClaw:接入 Ollama 推理 + 飞书通道(可直接复现)

Ubuntu 本地部署 OpenClaw:接入 Ollama 推理 + 飞书通道(可直接复现)

摘要

本文记录一次从零开始在空白 Ubuntu 服务器部署 OpenClaw 的完整过程:本地使用 Ollama 作为推理引擎,飞书作为消息通道。包含环境准备、安装命令、配置步骤、连通性验证、常见报错排查和运维建议,适合个人开发者快速落地私有化 AI Agent。


目录

  1. 部署目标与架构
  2. 环境准备
  3. 安装 Ollama(本地推理)
  4. 安装 OpenClaw
  5. 配置 OpenClaw 使用 Ollama
  6. 配置飞书通道
  7. 启动与验证
  8. 常见问题 FAQ
  9. 结语

1. 部署目标与架构

本次部署采用单机本地方案:

  • LLM 推理层:Ollama(本机)
  • Agent 网关层:OpenClaw(本机)
  • 消息入口:飞书(Feishu/Lark 应用)

数据路径:飞书消息 -> OpenClaw -> Ollama -> OpenClaw -> 飞书回复。


2. 环境准备

先确认系统和资源:

uname -m lsb_release -a free -h df -h / 

推荐:

  • Ubuntu 22.04+
  • x86_64
  • 内存 16GB+(32GB 更稳)

3. 安装 Ollama(本地推理)

安装并校验:

curl -fsSL https://ollama.com/install.sh |sh ollama --version 

拉取一个模型做烟雾测试:

ollama pull qwen2.5:7b ollama run qwen2.5:7b "只回复 OK"

查看当前模型是否用到 GPU:

ollama ps

重点看 PROCESSOR 列:出现 GPU 说明已启用显卡推理。


4. 安装 OpenClaw

如果系统还没有 Node/npm,先安装 Node 20 LTS:

curl -fsSL https://deb.nodesource.com/setup_20.x |sudo -E bash - sudoapt-getinstall -y nodejs node -v npm -v 

安装 OpenClaw:

sudonpm i -g openclaw openclaw --version 

5. 配置 OpenClaw 使用 Ollama

将 OpenClaw 的模型提供方指向本机 Ollama API:

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 

说明:

  • 本地 Ollama 常用 apiKey 占位值就是 ollama-local
  • models set 用于设置默认模型

6. 配置飞书通道

执行引导配置:

openclaw onboard 

向导里选择:

  • 通道:Feishu/Lark
  • 域名:国内选 feishu.cn,国际选 larksuite.com
  • 填写:appIdappSecret
  • 群聊策略:按需选择 allowlist / open

如需通过配对码放行会话:

openclaw pairing list openclaw pairing approve feishu <配对码>

7. 启动与验证

启动网关:

openclaw gateway 

看到以下日志即基本正常:

  • agent model: ollama/...
  • listening on ws://127.0.0.1:18789

另开终端跟日志:

openclaw logs --follow 

8. 常见问题 FAQ

Q1:飞书发消息后报 No API key found for provider "ollama"

原因:agent 侧缺少 Ollama auth/profile。
处理

openclaw config set models.providers.ollama.apiKey "ollama-local" openclaw gateway restart 

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 60

9. 结语

这套方案适合“本地可控、快速上线”的 AI Agent 场景:

  • 推理本地化(Ollama)
  • 编排本地化(OpenClaw)
  • 使用飞书作为团队入口

建议上线后做两件事:

  1. tmux 持久化运行会话,避免 SSH 断开中断任务
  2. 定期执行 openclaw security audit --deep 做安全巡检

如果你希望,我可以下一篇继续整理:
《OpenClaw + 飞书:权限最小化与生产安全配置清单(含可复制命令)》

Read more

Flutter for OpenHarmony: Flutter 三方库 dart_style 像官方一样统一你的鸿蒙代码格式(代码美化神器)

Flutter for OpenHarmony: Flutter 三方库 dart_style 像官方一样统一你的鸿蒙代码格式(代码美化神器)

欢迎加入开源鸿蒙跨平台社区:https://openharmonycrossplatform.ZEEKLOG.net 前言 在 OpenHarmony 项目开发中,不论是个人的“心血之作”还是团队协作的“巨无霸”工程,代码的可读性是维护成本的生命线。每个人都有自己的编码习惯:有人喜欢紧凑型,有人喜欢在大括号前后留白。如果代码格式没有统一的标准,代码提交(Git Merge)时的差异对比将是一场灾难。 dart_style(其核心命令即 dart format)是 Dart 语言官方出品的格式化引擎。它通过一套被全球 Dart 开发者公认的算法,强制将你的源码重新排版为最标准、最易读的形态。 一、核心排版逻辑 dart_style 采用“行长度优先”的排版权重算法。 计算行长 修正空白 杂乱的源码 dart_style 解析器 折行与对齐策略

By Ne0inhk
Flutter for OpenHarmony:Flutter 三方库 xdg_directories 遵循 Linux 系统目录规范的路径指南(鸿蒙底座兼容性探索)

Flutter for OpenHarmony:Flutter 三方库 xdg_directories 遵循 Linux 系统目录规范的路径指南(鸿蒙底座兼容性探索)

欢迎加入开源鸿蒙跨平台社区:https://openharmonycrossplatform.ZEEKLOG.net 前言 随着 OpenHarmony 在桌面和平板设备上的不断普及,以及其底层与类 Unix / Linux 系统深厚的渊源,开发者在处理本地存储路径时,不仅要考虑手机端的“沙箱”,也需要考虑符合行业标准的系统目录规范(XDG Base Directory Specification)。 xdg_directories 是一个专门用于获取 Linux 系统环境变量定义的标准目录位置的工具库。它能帮你准确定位诸如:配置文件放在哪?缓存数据放在哪?虽然鸿蒙手机端有其特有的路径设计,但在鸿蒙桌面端或利用鸿蒙内核进行 Linux 兼容层开发时,它具有不可替代的规范指导意义。 一、核心概念:XDG 规范图解 XDG 规范定义了应用程序存储不同类型数据的位置,避免了在用户主目录下乱丢文件的乱象。 /home/user $XDG_CONFIG_HOME (.config) $XDG_CACHE_HOME

By Ne0inhk
Flutter 三方库 jao 的鸿蒙化适配指南 - 实现极简的对象映射(Object Mapping)逻辑、支持数据传输对象(DTO)与领域实体的高效转换

Flutter 三方库 jao 的鸿蒙化适配指南 - 实现极简的对象映射(Object Mapping)逻辑、支持数据传输对象(DTO)与领域实体的高效转换

欢迎加入开源鸿蒙跨平台社区:https://openharmonycrossplatform.ZEEKLOG.net Flutter 三方库 jao 的鸿蒙化适配指南 - 实现极简的对象映射(Object Mapping)逻辑、支持数据传输对象(DTO)与领域实体的高效转换 前言 在进行 Flutter for OpenHarmony 的分层架构开发时,我们经常需要在 API 响应模型(DTO)与业务领域实体(Domain Entity)之间进行数据转换。虽然手动编写转换逻辑可以胜任,但随着业务复杂度增加,代码中会充斥大量重复的赋值语句。jao 是一个主打极简风格的对象映射库。本文将探讨如何在鸿蒙端利用该库提升模型转换的效率。 一、原理解析 / 概念介绍 1.1 基础原理 jao 的核心思想是通过定义声明式的映射规则,利用 Dart 的扩展方法(Extension Methods)

By Ne0inhk
Flutter 三方库 swagger_parser 自动化打通鸿蒙 API 通信(一键将 Swagger 转化为 Dart 模型)

Flutter 三方库 swagger_parser 自动化打通鸿蒙 API 通信(一键将 Swagger 转化为 Dart 模型)

欢迎加入开源鸿蒙跨平台社区:https://openharmonycrossplatform.ZEEKLOG.net 前言 在进行 OpenHarmony 项目开发时,最枯燥的工作莫过于根据后端提供的 Swagger (OpenAPI) 文档手动编写一个个的 Request 类、Response 类和 API Client。这不仅低效,而且极易因文档更新没对齐而导致 Bug。 swagger_parser 是一个强大的命令行工具,它能直接读取本地或网络上的 Swagger JSON/YAML 文件,自动为你生成完整的 Dart 数据类和 Dio/Chopper API 控制器。 一、核心工作流 Swagger JSON / YAML Swagger Parser Dart 数据模型 (JSON Serialized) Dio / Chopper

By Ne0inhk