博客 / 詳情

返回

AI工具實踐日記(一):在樹莓派上搭建OpenClaw,一個後端開發者的真實踩坑記錄

真實記錄我在樹莓派上探索OpenClaw的過程——不美化、不炫技,只有真實的踩坑和驚喜。


引言

作為一名後端開發者,我的技術棧從C#開始,逐漸學會了VUE,變成了全棧開發。後來也學習了Python,也用Java開發企業級應用。但是最近這幾年,隨着AI的發展,從ChatGPT到Kimi,從在VsCode中對話,到在Cursor中編程,從學會使用Claude Code開始,我已經變成了AI全棧開發者。最近OpenClaw也很火,而我也很羨慕鋼鐵俠中的賈維斯,於是我開始探索一個不同的方向:把AI助手部署在自己的樹莓派上。

為什麼是樹莓派?

  1. 數據隱私:AI助手運行在自己的設備上,數據不出本地
  2. 硬件集成:樹莓派支持GPIO、攝像頭、藍牙等硬件
  3. 7x24小時運行:低功耗,可以一直待命
  4. 多渠道集成:直接在釘釘、Discord等通訊工具中使用
  5. 自動化能力強:內置Cron調度器,各種定時任務

聽起來很完美,對吧?

但實際在樹莓派上安裝和配置OpenClaw的過程中,我踩了不少坑。下面,我想記錄真實的探索過程。


為什麼選擇在樹莓派上部署OpenClaw?

我的樹莓派配置

  • 型號:樹莓派4B(4GB內存)
  • 系統:Linux 6.12.62+rpt-rpi-v8(ARM64架構)
  • Python版本:3.8+
  • Node.js版本:v24.13.0

選擇OpenClaw的原因

  1. 本地化部署:完全在樹莓派上運行,數據更安全
  2. 硬件友好:支持攝像頭、藍牙等硬件設備
  3. 多渠道集成:支持釘釘、Discord等,直接在聊天中使用
  4. 技能擴展:可以自己寫Python/Shell腳本擴展功能
  5. 定時任務:內置Cron調度器,自動化更方便

在樹莓派上安裝OpenClaw:從"一鍵安裝"到"慢慢摸索"

第一步:環境準備

樹莓派的系統環境和普通的x86服務器不太一樣,這點在安裝時給了我不少驚喜。

坑1:Python版本不兼容

樹莓派默認安裝的是Python 3.7,但OpenClaw需要Python 3.8+。

# 檢查Python版本
python3 --version
# Python 3.7.3

# 安裝Python 3.8+
sudo apt update
sudo apt install python3.8 python3.8-venv python3-pip

坑2:ARM64架構的Node.js安裝

OpenClaw需要Node.js,但樹莓派是ARM64架構,普通的x86版本不能用。

解決:

# 下載ARM64版本的Node.js
wget https://nodejs.org/dist/v24.13.0/node-v24.13.0-linux-arm64.tar.xz

# 解壓
tar -xf node-v24.13.0-linux-arm64.tar.xz

# 移動到系統目錄
sudo mv node-v24.13.0-linux-arm64 /usr/local/node

# 配置環境變量
echo 'export PATH=/usr/local/node/bin:$PATH' >> ~/.bashrc
source ~/.bashrc

# 驗證安裝
node --version
# v24.13.0

第二步:安裝OpenClaw CLI

官方文檔説一行命令就能安裝:

npm install -g @openclaw/cli

但在樹莓派上,遇到了幾個問題。

坑3:npm權限問題

第一次安裝時報錯:EACCES: permission denied

解決:

# 配置npm全局目錄
mkdir ~/.npm-global
npm config set prefix '~/.npm-global'
echo 'export PATH=~/.npm-global/bin:$PATH' >> ~/.bashrc
source ~/.bashrc
npm install -g @openclaw/cli

坑4:npm安裝速度慢

樹莓派的性能有限,npm安裝速度很慢,甚至會超時。

解決:

# 使用國內鏡像
npm config set registry https://registry.npmmirror.com

第三步:初始化配置

openclaw init

這步比較順利,但有個小細節:

坑5:時區配置錯誤

一開始我沒注意時區設置,結果定時任務總是比我預期的時間晚8小時(UTC vs 北京時間)。

解決:

# 檢查系統時區
timedatectl status
# 顯示:Time zone: UTC

# 設置時區為Asia/Shanghai
sudo timedatectl set-timezone Asia/Shanghai
# 驗證
timedatectl status
# 顯示:Time zone: Asia/Shanghai (CST, +0800)

第四步:安裝DingTalk插件

我想用釘釘作為主要通訊工具,所以安裝了DingTalk插件:

openclaw plugins install dingtalk

坑6:插件配置複雜

安裝後需要配置AppKey、AppSecret、企業ID等信息。我在釘釘開發者後台折騰了很久才搞清楚這些參數從哪裏獲取。

解決:

  1. 登錄釘釘開放平台:https://open.dingtalk.com/
  2. 創建應用(機器人應用)
  3. 獲取AppKey、AppSecret
  4. 配置企業ID
  5. ~/.openclaw/openclaw.json中填入這些信息

配置文件示例:

{
  "channels": {
    "dingtalk": {
      "enabled": true,
      "clientId": "你的AppKey",
      "clientSecret": "你的AppSecret",
      "robotCode": "你的機器人編碼",
      "corpId": "你的企業ID",
      "dmPolicy": "open",
      "groupPolicy": "open",
      "messageType": "card"
    }
  }
}

第五步:啓動Gateway服務

openclaw gateway start

坑7:端口衝突

第一次啓動時報錯:Error: listen EADDRINUSE: address already in use :::18789

檢查發現是其他服務佔用了端口。

解決:

# 檢查端口占用
lsof -i :18789

# 停止佔用端口的進程
sudo kill <進程ID>

# 或者修改配置文件中的端口

坑8:樹莓派性能限制

啓動Gateway後,樹莓派的內存佔用很高,系統變得卡頓。

解決:

# 在~/.openclaw/openclaw.json中調整併發參數
"agents": {
  "defaults": {
    "maxConcurrent": 2,  // 降低併發數
    "subagents": {
      "maxConcurrent": 4  // 降低子任務併發數
    }
  }
}

在樹莓派上的實用場景

場景1:藍牙TTS語音播放

我想讓OpenClaw通過藍牙音箱播放語音。這在樹莓派上實現起來很有意思。

坑9:藍牙音箱配對

樹莓派的藍牙配置和普通電腦不太一樣。

# 安裝藍牙工具
sudo apt install bluez bluez-tools pulseaudio pulseaudio-module-bluetooth

# 啓動藍牙服務
sudo systemctl start bluetooth

# 配置藍牙
sudo bluetoothctl
# 進入交互模式
[bluetooth]# power on
[bluetooth]# agent on
[bluetooth]# scan on
# 找到設備後
[bluetooth]# pair <設備MAC地址>
[bluetooth]# connect <設備MAC地址>
[bluetooth]# trust <設備MAC地址>
[bluetooth]# exit

問題:配對成功了,但音頻輸出不到藍牙音箱。

解決:

# 檢查音頻輸出設備
pactl list sinks short

# 設置默認輸出為藍牙設備
pactl set-default-sink <藍牙設備名稱>

# 測試音頻播放
paplay /usr/share/sounds/alsa/Front_Center.wav

現在,我可以對OpenClaw説:

請播放語音:"現在是下午三點,記得休息一下"

它就會通過藍牙音箱播放出來。

樹莓派上的特別之處:

  • 藍牙配置需要手動操作,不像PC那樣圖形界面方便
  • 脈衝音頻(PulseAudio)的配置需要熟悉
  • 但一旦配置好,可以7x24小時待命,隨時播報

場景2:攝像頭拍照和控制

我想讓OpenClaw幫我拍照併發送到釘釘。樹莓派上接USB攝像頭很方便。

坑10:攝像頭被佔用

樹莓派上有個監控服務 motion,它佔用了攝像頭設備 /dev/video0

第一次拍照時報錯:Could not open video device /dev/video0

解決:

# 停止motion服務
sudo pkill motion
sudo systemctl stop motion

# 檢查攝像頭
ls /dev/video*
# /dev/video0 /dev/video1

# 拍照
ffmpeg -f v4l2 -video_size 640x480 -i /dev/video0 -frames:v 1 /tmp/photo.jpg -y

# 拍照後重啓motion(如果需要)
sudo systemctl start motion

坑11:攝像頭分辨率限制

樹莓派支持的攝像頭格式和分辨率有限。

# 查看攝像頭支持的格式
v4l2-ctl --list-formats

# 查看支持的分辨率
v4l2-ctl --list-formats-ext

# 我的icspring camera最高只支持640x480,YUYV格式

拍攝命令需要指定正確的格式:

ffmpeg -f v4l2 -video_size 640x480 -i /dev/video0 -pix_fmt yuyv422 -frames:v 1 /tmp/photo.jpg -y

現在,我可以對OpenClaw説:

請拍一張照片,併發送到釘釘

幾秒後,我就能在釘釘聊天中看到剛剛拍的照片。

樹莓派上的特別之處:

  • USB攝像頭熱插拔方便
  • 可以和監控服務motion配合使用
  • 樹莓派體積小,可以放在任何需要監控的地方

場景3:郵件發送功能

我想讓OpenClaw幫我發郵件。於是開發了一個email-sender技能。

坑12:SMTP配置陷阱

配置126郵箱的SMTP服務時,我一開始用的是郵箱密碼,結果一直報認證錯誤。

查了半天文檔才發現,126郵箱需要用"客户端授權碼",而不是郵箱密碼。

解決:

  1. 登錄126郵箱網頁版
  2. 進入設置 → POP3/SMTP/IMAP
  3. 開啓SMTP服務
  4. 獲取授權碼
  5. 在配置文件中使用授權碼

配置文件(/home/pi/.openclaw/workspace/config/email.conf):

[SMTP]
host = smtp.126.com
port = 465
username = ren8179@126.com
password = QHyjTYHm8w3QVpi6  # 客户端授權碼,不是郵箱密碼

Python發送腳本:

import smtplib
from email.mime.text import MIMEText
import configparser

def send_email(to, subject, content):
    config = configparser.ConfigParser()
    config.read('/home/pi/.openclaw/workspace/config/email.conf')

    smtp_host = config['SMTP']['host']
    smtp_port = config['SMTP']['port']
    username = config['SMTP']['username']
    password = config['SMTP']['password']

    msg = MIMEText(content)
    msg['From'] = username
    msg['To'] = to
    msg['Subject'] = subject

    with smtplib.SMTP_SSL(smtp_host, smtp_port) as server:
        server.login(username, password)
        server.send_message(msg)

現在,我可以對OpenClaw説:

請發送郵件到ren8179@126.com,主題是"測試",內容是"OpenClaw郵件發送功能測試"

幾秒後,郵件就發送成功了。

樹莓派上的特別之處:

  • 24小時在線,隨時可以發送郵件
  • 可以配合定時任務,自動發送日報、週報
  • 郵件內容可以基於傳感器數據(温度、濕度等)

場景4:定時任務和自動化

這是OpenClaw最強大的功能之一。內置的Cron調度器讓我可以設置各種自動化任務。

坑13:Cron表達式理解錯誤

一開始我不太理解Cron表達式的格式,導致任務執行時間和預期不符。

比如,我想設置"每天早上8點執行",我寫成了:

"expr": "0 8 * * *"

結果發現是在UTC時間8點執行,不是北京時間8點。

解決:
在配置文件中明確指定時區:

{
  "schedule": {
    "kind": "cron",
    "expr": "0 8 * * *",
    "tz": "Asia/Shanghai"  // 明確指定時區
  }
}

現在,我可以設置各種自動化任務:

  • 每天8點:發送早間簡報到釘釘
  • 每小時整點:播報時間
  • 每天凌晨2點:執行數據備份
  • 工作日上午9點:發送工作提醒

早間簡報示例:

{
  "id": "morning-report",
  "name": "早間簡報",
  "schedule": {
    "kind": "cron",
    "expr": "0 8 * * *",
    "tz": "Asia/Shanghai"
  },
  "payload": {
    "kind": "agentTurn",
    "message": "請生成今天的早間簡報,包括:\n1. 昨夜完成的工作\n2. 系統狀態\n3. 今日建議\n\n發送到釘釘"
  }
}

樹莓派上的特別之處:

  • 低功耗,24小時運行也不心疼電費
  • 系統穩定,長時間運行不重啓
  • 可以和各種硬件定時器配合

樹莓派性能優化經驗

挑戰1:內存佔用高

OpenClaw運行在樹莓派上,內存佔用是個問題。

解決方案:

  1. 降低併發數

    "agents": {
      "defaults": {
        "maxConcurrent": 2,
        "subagents": {
          "maxConcurrent": 4
        }
      }
    }
    
  2. 啓用會話壓縮

    "agents": {
      "defaults": {
        "compaction": {
          "mode": "safeguard",
          "maxTokens": 200000
        }
      }
    }
    
  3. 定期清理舊會話

    openclaw sessions cleanup --older-than 1d
    

挑戰2:磁盤空間不足

OpenClaw會話日誌會佔用大量磁盤空間。

解決方案:

# 設置日誌輪轉
sudo vim /etc/logrotate.d/openclaw

/home/pi/.openclaw/agents/main/sessions/*.jsonl {
    daily
    rotate 7
    compress
    delaycompress
    missingok
    notifempty
}

挑戰3:樹莓派散熱

OpenClaw持續運行會讓樹莓派發熱,影響性能。

解決方案:

# 安裝散熱監控
sudo apt install lm-sensors

# 查看温度
sensors

# 安裝散熱風扇
# 樹莓派4B強烈建議安裝主動散熱

# 配置CPU頻率調節
echo 'performance' | sudo tee /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor

深入體驗:主動式AI助手的力量

OpenClaw最讓我驚喜的,是它的"主動性"。

傳統的AI助手

傳統的AI助手,是"被動式"的:

  • 你問什麼,它答什麼
  • 你不問,它什麼都不會做
  • 像一個隨時待命的僕人

OpenClaw的主動性

OpenClaw的設計理念是"主動式AI助手":

  • 它會主動檢查系統狀態
  • 它會主動發送早間簡報
  • 它會主動執行定時任務
  • 像一個積極的隊友

實際案例:早間簡報

我設置了一個每日早間簡報,每天早上8點自動發送到釘釘。內容包括:

  • 📝 內容創作進展
  • 🚀 工具優化和創新
  • 📚 學習進度
  • 🔍 行業動態
  • 💡 今日建議

每天早上醒來,打開釘釘,就能看到AI助手已經幫我整理好了所有重要信息。這種感覺,真的像有一個"私人助理"在默默為我工作。

樹莓派上的優勢:

  • 7x24小時在線,從不錯過任何任務
  • 低功耗,一個月電費不到10元
  • 體積小,可以放在任何地方

我的思考:樹莓派+AI助手的可能性

以前的想法:AI在雲端

以前我覺得AI必須在雲端運行,因為:

  • 雲端算力強
  • 雲端模型大
  • 雲端更新快

現在的想法:AI也可以在邊緣

在樹莓派上運行OpenClaw後,我的想法改變了:

AI不是隻能在雲端,也可以在邊緣設備上運行。

優勢:

  1. 數據隱私:所有數據在本地,更安全
  2. 網絡獨立:不依賴網絡,離線也能用(部分功能)
  3. 硬件集成:可以直接控制攝像頭、藍牙、GPIO等
  4. 7x24小時:低功耗,可以一直待命
  5. 成本可控:一次性購買,沒有訂閲費用

應用場景

基於樹莓派+OpenClaw,可以做很多事情:

  1. 智能家居控制中心:控制燈光、温度、安防
  2. 家庭監控:攝像頭拍照、異常檢測
  3. 語音助手:通過藍牙音箱播報信息
  4. 自動化任務:定時發送郵件、提醒、備份
  5. 遠程監控:通過釘釘隨時查看狀態
  6. 學習記錄:記錄學習進度、生成日報週報

寫在最後

這篇文章,記錄了我在樹莓派上安裝和配置OpenClaw的真實過程。

真實體驗總結:

  1. 安裝不輕鬆:踩了不少坑,但都解決了
  2. 學習曲線陡:需要時間熟悉,但值得
  3. 功能很強大:超出了我的預期
  4. 主動性很強:像一個真正的"隊友"
  5. 性能需要優化:樹莓派性能有限,需要調整配置
  6. 硬件集成很有趣:攝像頭、藍牙等,探索空間很大

給想嘗試的朋友的建議:

如果你也想在樹莓派上玩AI助手,我的建議是:

  1. 選擇合適的設備:樹莓派4B(4GB或8GB內存)
  2. 耐心安裝:會遇到各種問題,慢慢解決
  3. 關注性能:注意內存、CPU、磁盤使用情況
  4. 發揮硬件優勢:攝像頭、藍牙、GPIO都試試
  5. 記錄經驗:把踩坑經驗記錄下來,既幫助自己,也能幫助別人

下一步計劃:

  1. 繼續探索OpenClaw的高級功能
  2. 開發更多自定義技能
  3. 嘗試樹莓派+AI的各種組合場景
  4. 記錄完整的智能家居項目
  5. 分享更多樹莓派+AI的實踐經驗

參考鏈接

  • OpenClaw 文檔:https://docs.openclaw.ai
  • 釘釘開放平台:https://open.dingtalk.com/
  • 樹莓派官方文檔:https://www.raspberrypi.org/documentation/
  • 愛彌兒任務看板:https://github.com/ren8179/aimier-kanban

本文是真實的探索記錄,沒有美化,沒有技術炫技。只是一個後端開發者在樹莓派上探索AI助手的踩坑經歷。


發佈日期: 2026-02-07
作者: 任琪
標籤: #AI工具 #OpenClaw #樹莓派 #後端開發 #實踐經驗 #本地化部署 #智能家居

user avatar
0 位用戶收藏了這個故事!

發佈 評論

Some HTML is okay.