本帖最后由 fengxl 于 2026-5-22 18:44 编辑
从零搭建全流程1.设备清单与准备工作- RK3588 开发板:运行 OpenClaw 网关、ClawChips 插件和 Context Router Proxy。 - RK1820/1828 NPU 协处理器:提供本地模型推理能力。 - USB-C 数据线:用于 ADB 调试和文件推送。 - 电源适配器:为 RK3588 稳定供电。 - 主机电脑:用于烧写系统、推送模型文件和执行部署命令。 - 网络环境:用于安装依赖、配置云端模型和访问 Dashboard。 连接顺序很简单:先将 RK1820/1828 插入 RK3588,再用 USB-C 连接主机电脑,接通电源并等待系统启动。主机端执行: 看到设备在线后,进入板端检查 NPU 连接:- adb shell
- cd /usr/bin
- ./rknn3_transfer_proxy devices
复制代码 如果返回 PCIe 设备信息,说明硬件链路已经准备好,可以进入 RKNN3、本地模型和 ClawChips 的部署流程。
Step 0:部署本地大模型服务这一步的目标是让 RK1820/1828 在 RK3588 上跑起本地 Qwen3-4B,并通过 rkllm3-server 暴露 OpenAI 兼容接口,供 OpenClaw / ClawChips 后续调用。 1)安装 RKNN3 运行环境 RKNN3 是本地大模型推理的基础运行环境,主要包含 NPU 固件、RKNN3 推理库、rkllm3-server 和 rknn3_transfer_proxy。准备好 RKNN3 安装包后,将固件、服务程序和运行库推送到 RK3588:
- RKNN3_PATH=/path/to/rknn3
- adb push ${RKNN3_PATH}/rk1820_firmware/EXT_SODIMM/update.img /usr/lib/firmware/rknn3_rk1820.img
- adb push ${RKNN3_PATH}/rknn3-runtime/rkllm3-server/bin/linux-aarch64/rkllm3-server /usr/bin/rkllm3-server
- adb shell chmod +x /usr/bin/rkllm3-server
- adb push ${RKNN3_PATH}/rknn3-runtime/rknn3_transfer_proxy/linux-aarch64/rknn3_transfer_proxy /usr/bin/rknn3_transfer_proxy
- adb shell chmod +x /usr/bin/rknn3_transfer_proxy
- adb push ${RKNN3_PATH}/rknn3-runtime/rknn3-api/Linux/aarch64/* /usr/lib/
- adb shell sync
- adb shell reboot
复制代码 重启后检查关键文件和 NPU 通信是否正常:
- adb shell ls -la /usr/bin/rkllm3-server
- adb shell ls -la /usr/bin/rknn3_transfer_proxy
- adb shell ls -la /usr/lib/librknn3_api.so
- adb shell "/usr/bin/rknn3_transfer_proxy devices"
复制代码- adb push qwen3-4b-thinking /userdata/
- adb shell sync
复制代码- adb shell
- cd /userdata/qwen3-4b-thinking
- chmod +x ./run.sh
- ./run.sh
复制代码
4)验证 OpenAI 兼容接口 在主机端访问本地模型接口,确认服务可用:
- curl http://127.0.0.1:8080/v1/models
复制代码 如果返回模型列表,并能看到 Qwen3-4B 相关模型 ID,说明本地大模型 API 服务已经部署完成。后续 ClawChips 可以把简单任务路由到该本地模型,复杂任务再交给云端模型处理。
Step1:安装 ClawChips 插件和配置 这一步完成 OpenClaw 运行时、ClawChips 插件的安装,以及云端模型的接入和路由规则绑定。 1)安装 Node.js 和 OpenClaw ClawChips 插件运行在 OpenClaw 上,先在 RK3588 板端安装 Node.js 环境和 OpenClaw。以下命令在板端普通用户下执行:
- adb shell
- su linaro
- sudo curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.4/install.sh | bash
- source "$HOME/.nvm/nvm.sh"
- nvm install 25
- npm install -g openclaw@2026.3.24
复制代码
安装完成后确认插件已加载:
- openclaw plugins list | grep clawchips
复制代码- adb shell
- cd /userdata/
- curl -fsSL https://raw.githubusercontent.com/airockchip/clawchips/main/scripts/install_memory_router_deps.sh | bash -s --
复制代码 确认服务正常运行:
- journalctl -u embedding-rknn-server.service
复制代码- adb shell
- su linaro
- openclaw onboard --install-daemon
复制代码
6)验证配置
查看 ClawChips 配置文件确认绑定结果:
- cat ~/.openclaw/clawchips.yaml
复制代码
Step 2【关键】:部署 Context Router Proxy —— Token 安全网
2.1代理服务的核心逻辑 代理服务是一个轻量 Node.js HTTP 服务,监听 8081 端口,前面接 OpenClaw,后面接本地 rkllm3-server:8080。 核心逻辑如下: OpenClaw 请求 → Context Router Proxy(:8081) ↓ 统计完整请求 token 数 ↓ token 未超限 → 转发到 rkllm3-server(:8080) token 超限 → 自动转发到云端 API 2.2关键代码实现 项目中对应脚本是:context-router-proxy.js 核心配置如下: - function estimateRequestTokens(body) {
- let total = estimateMessagesTokens(body.messages);
-
- if (body.tools) {
- total += estimateTokens(JSON.stringify(body.tools));
- }
-
- if (body.functions) {
- total += estimateTokens(JSON.stringify(body.functions));
- }
-
- return total;
- }
复制代码这一步解决了ClawChips 在路由阶段看不到完整上下文的问题。 转发决策逻辑 当请求进入代理后,会先计算 token,再判断走本地还是云端: - const tokens = estimateRequestTokens(body);
- const useCloud = tokens > TOKEN_THRESHOLD;
-
- writeTokenStats(tokens, msgCount, model);
-
- if (useCloud) {
- forwardCloud(req, res, body);
- } else {
- forwardLocal(req, res, rawBody);
- }
复制代码最终效果是:
- tokens ≤ 阈值:正常走本地 rkllm3-server
- tokens > 阈值:自动切到云端 API
- 用户无感知:OpenClaw 侧仍然只调用一个本地接口
2.3 部署操作步骤第一步:启动本地rkllm3-server先保证本地大模型服务已经跑在 8080: - export BAILIAN_API_KEY="sk-xxxx"
复制代码如果使用其他云端模型,只需要替换: - export CLOUD_BASE_URL="https://your-cloud-api/v1"
- export CLOUD_MODEL="your-cloud-model"
复制代码第三步:启动 ContextRouter Proxy - PROXY_PORT=8081 \
- LOCAL_HOST=127.0.0.1 \
- LOCAL_PORT=8080 \
- TOKEN_THRESHOLD=4096 \
- CLOUD_MODEL=qwen3.5-27b \
- BAILIAN_API_KEY=sk-xxxx \
- node scripts/context-router-proxy.js
复制代码启动成功后终端会显示类似信息:Context-SizeRouter ProxyListening : 0.0.0.0:8081LOCAL : 127.0.0.1:8080CLOUD : qwen3.5-27bThreshold : 4096 tokens 第四步:修改OpenClaw 本地模型地址原来 OpenClaw 直接访问: http://127.0.0.1:8080/v1现在改为访问代理: http://127.0.0.1:8081/v1这样 OpenClaw 认为自己仍然在调用本地模型,但实际请求会先经过 Context Router Proxy 做 token 安全检查。 2.4 最终效果
部署完成后,实际链路变成:
text
ClawChips 判断任务复杂度
↓
OpenClaw 发起请求
↓
Context Router Proxy 统计真实 token
↓
本地能处理 → rkllm3-server
本地装不下 → 云端 API
这一步的价值在于:
- 补齐 ClawChips 痛点:解决路由阶段看不到完整请求体的问题
- 扩展 OpenClaw 端云协同能力:让本地模型和云端模型自动配合
- 降低 Token 成本:简单请求仍然留在 RK1828 NPU 本地推
以上是部署的完整的部署流程,该方案核心是解决clawchips的缺陷问题,为OpenClaw 扩展出真正可用的端云协同能力和处理用端云混合模型去稳定对话的思路。 |