最近在 Termux 的 Debian 环境下折腾 OpenClaw(小龙虾),发现升级新版后它容易"装死":发消息不回,后台卡死。
核心病因: 记忆功能触发了"内嵌模型加载",8 核 CPU 瞬间过载导致 Node.js 事件循环堵死,系统由于发热直接把进程"猎杀"了。
终极药方: 架构解耦。用 PM2 守护原生的 C++ llama-server 独立跑在后台,OpenClaw 通过端口轻量调用。
第一步:搭建底层------编译与模型准备
在手机端,我们要先手动编译一个原生的"微服务"引擎,这比任何 Node.js 插件都高效。
1. 编译原生推理引擎
# 安装基础编译环境
sudo apt update && sudo apt install build-essential git cmake -y
# 克隆并编译 llama-server (仅编译服务端,省时省力)
git clone https://github.com/ggerganov/llama.cpp.git
cd llama.cpp
cmake -B build
cmake --build build --config Release -j 4 --target llama-server
2. 准备模型
手动下载量化版模型(建议放在家目录):此模型就是openclaw官方示例的模型大小0.6G
wget https://hf-mirror.com/ggml-org/embeddinggemma-300M-GGUF/resolve/main/embeddinggemma-300M-Q8_0.gguf
第二步:进阶管理------使用 PM2 守护记忆引擎
为了让模型服务像系统服务一样稳定,我们使用 PM2 来接管。这样即使程序崩溃,它也会秒级自动重启。
1. 安装 PM2
npm install pm2 -g
2. 编写启动脚本 start_mem.sh
在 llama.cpp/build/bin/ 目录下创建脚本。核心技巧是锁定 4 线程,主动"示弱"以绕过系统温控墙。
#!/bin/bash
# 路径请根据实际情况修改
MODEL="/data/data/com.termux/files/home/embeddinggemma-300M-Q8_0.gguf"
./llama-server -c 4096 -b 4096 -ub 4096 -m "$MODEL" --host 127.0.0.1 --port 8080 -t 4 --embedding
3. 使用 PM2 启动并持久化
# 启动并命名为 llama-mem
pm2 start ./start_mem.sh --name llama-mem
# 查看运行状态
pm2 status
# 保存列表,确保下次启动 Debian 时能自动复活
pm2 save
第三步:配置龙虾------偷天换日接入 API
模型服务立起来后,修改 OpenClaw 的配置文件( ~/.openclaw/openclaw.json),把最累的活"外包"给 PM2 守护的那个端口。
agents: {
defaults: {
memorySearch: {
provider: "openai",
model: "embeddinggemma-300M-Q8_0",
remote: {
baseUrl: "http://127.0.0.1:8080/v1/",
apiKey: "sk-任意",
headers: { "X-Custom-Header": "value" }
}
}
}
}
第三步:更新小龙虾记忆索引
openclaw memory index