ShiMetaPi AI Lobster One-Click Deployment
One-click deployment of OpenClaw + QQ Bot + cloud DeepSeek + local VLM/OCR on the RK182X + RK3588 platform.
Overall block diagram:
QQ user
↓
OpenClaw Gateway (port 18789)
↓
┌──────────────────┬────────────────────┐
│ Cloud DeepSeek │ Local RK182X NPU │
│ (chat/inference) │ (image recognition/VLM) │
└──────────────────┴────────────────────┘
↓
Skills: morning-briefing / rk-remind / rk-vl / rk-ocrPrerequisite: Hardware Installation and Verification is complete and the RK182X NPU service is running normally.
1. Verify prerequisites
systemctl is-active rknn3.service # → active
ls -l /dev/pcie-rkep-* # → /dev/pcie-rkep-0004:41:00.0
ps -ef | grep rknn3_transfer_proxy # → process is presentNPU service
systemctl is-active rknn3.serviceOutput:
activePCIe device
ls -l /dev/pcie-rkep-*Output:
crw------- 1 root root 10, 123 8月20日 16:56 /dev/pcie-rkep-0004:41:00.0Running processes
ps -ef | grep rknn3_transfer_proxy | grep -v grepOutput (example):
linaro 1790 1 0.2 01:18:53 ? 00:00:30 /bin/rknn3_transfer_proxy
linaro 1803 1790 25.0 01:18:53 ? 00:31:09 rknn3_transfer_proxy_c36211b1 -s 0004:41:00.0The actual BDF varies with the board's PCIe topology; the proxy process name may carry a hash suffix (e.g.
rknn3_transfer_proxy_c36211b1), hence matching withps -ef | grep.
2. One-click deployment in 30 minutes
ShiMetaPi's in-house setup.sh script automates the entire deployment, from the system environment to the QQ bot.

2.1 Download the deployment script
curl -sL https://raw.githubusercontent.com/.../setup.sh -o setup.sh
chmod +x setup.shMirror acceleration for mainland China:
curl -sL https://cdn.jsdelivr.net/gh/.../setup.sh -o setup.sh2.2 Run the script
bash setup.shVerify the locally deployed script:
ls -la /home/linaro/lobster-pkg/setup.shOutput:
-rw-rw---- 1 linaro linaro 74024 8月20日 14:05 /home/linaro/lobster-pkg/setup.shsetup.sh has two built-in query subcommands (recommended to use first):
bash setup.sh info # deployment status (no changes)
bash setup.sh check # health check (14 items)The full flow runs automatically:
| Step | Content | Duration |
|---|---|---|
| 1 | Detect hardware and system environment | <5s |
| 2 | Install Node.js (mainland mirror) | ~1min |
| 3 | Install the OpenClaw framework | ~2min |
| 4 | Configure cloud model API (DeepSeek) | Enter Key manually |
| 5 | Configure the QQ bot | Enter AppID/Token manually |
| 6 | Install Skills (reminders/morning briefing/VLM/OCR) | ~3min |
| 7 | Verify and start | <10s |
The API Key / QQ AppID are entered manually.
2.3 Prepare the VLM model (optional)
Image recognition requires downloading the Qwen3-VL-2B model. Place it in /userdata/models/Qwen3-VL-2B/:
ls -la /userdata/models/Output:
总计 40
drwxr-xr-x 5 linaro linaro 4096 8月 6日 16:56 .
drwxr-xr-x 6 root root 4096 8月17日 14:28 ..
drwxr-xr-x 2 linaro linaro 4096 8月20日 11:34 Qwen3-1.7B
drwxr-xr-x 2 linaro linaro 4096 6月 8日 10:45 Qwen3-4B
drwxr-xr-x 4 linaro linaro 4096 8月17日 15:24 Qwen3-VL-2B
-rwxr-xr-x 1 linaro linaro 372 8月 6日 16:56 run.sh
-rwxr-xr-x 1 linaro linaro 373 8月 5日 17:21 run.sh.bak.1.7B
-rwxr-xr-x 1 linaro linaro 356 8月 6日 14:56 run.sh.bak.4b
-rwxr-xr-x 1 linaro linaro 373 8月 5日 17:27 run.sh.bak.testVLM model files:
ls -lh /userdata/models/Qwen3-VL-2B/Output:
总计 1.9G
-rwxr-xr-x 1 root root 8.1K 8月10日 14:34 inspect.sh
-rw-r--r-- 1 linaro linaro 20M 8月17日 13:51 llm_Qwen3-VL-2B.rknn
-rw-r--r-- 1 linaro linaro 1.1G 8月17日 13:52 llm_Qwen3-VL-2B.weight
-rw-r--r-- 1 linaro linaro 3.0K 8月11日 22:53 OCRBench.py
-rw-r----- 1 root root 11K 8月17日 15:24 ocr_server.py
-rwxr-xr-x 1 root root 1.1K 8月10日 14:34 ocr.sh
drwxr-xr-x 4 linaro linaro 4.0K 8月17日 15:22 PaddleOCR-VL
-rw-r--r-- 1 linaro linaro 594M 8月17日 13:55 Qwen3-VL-2B.embed.bin
-rwxr-xr-x 1 linaro linaro 240K 8月20日 14:00 test.jpg
drwxr-xr-x 2 linaro linaro 4.0K 8月 5日 17:04 tokenizer
-rw-r--r-- 1 linaro linaro 4.2M 8月17日 13:50 vision_Qwen3-VL-2B.rknn
-rw-r--r-- 1 linaro linaro 229M 8月17日 13:54 vision_Qwen3-VL-2B.weight
-rw-r--r-- 1 linaro linaro 11K 8月17日 14:01 vlm_server.py
-rwxr-xr-x 1 root root 913 8月10日 14:34 vl.shTokenizer:
ls -lh /userdata/models/Qwen3-VL-2B/tokenizer/Output:
总计 9.4M
-rw-r--r-- 1 linaro linaro 5.4K 8月 5日 17:04 chat_template.json
-rw-r--r-- 1 linaro linaro 11K 8月 5日 17:04 tokenizer_config.json
-rw-r--r-- 1 linaro linaro 6.8M 8月 5日 17:04 tokenizer.json
-rw-r--r-- 1 linaro linaro 2.7M 8月 5日 17:04 vocab.json2.4 Test in QQ
Send /new to start a conversation:
- Chat → cloud DeepSeek
- Send an image → local NPU (VLM)
- Reminder → creates a scheduled task automatically
- Good morning → creates a recurring task automatically
- Extract text → image + "extract text" → OCR

Script capabilities at a glance
bash setup.sh # full deployment
bash setup.sh --stage 4 # resume from step 4 (checkpoint resume)
bash setup.sh --reconfig # reconfigure the API / QQ Bot
bash setup.sh info # deployment status
bash setup.sh check # health check
bash setup.sh --help # help3. Technical architecture
The cloud API is the "brain"; the local NPU is the "eyes".
┌──────────────────────────────────────────┐
│ ShiMetaPi AI Lobster platform │
├──────────────────────────────────────────┤
│ QQ user │
│ ↓ │
│ OpenClaw Gateway │
│ ↓ │
│ ┌──────────────────┬────────────────────┐ │
│ │ Cloud DeepSeek │ Local RK182X NPU │ │
│ │ (chat/inference) │ (image recognition/VLM) │ │
│ └──────────────────┴────────────────────┘ │
│ ↓ │
│ ShiMetaPi in-house Skills │
│ · morning-briefing morning briefing │
│ · rk-remind scheduled reminders │
│ · rk-vl image recognition (VLM) │
│ · rk-ocr text extraction (OCR) │
└──────────────────────────────────────────┘
4. Verification checklist
① NPU service
systemctl is-active rknn3.service # active
ls -l /dev/pcie-rkep-* # /dev/pcie-rkep-0004:41:00.0
ps -ef | grep rknn3_transfer_proxy # process is present② OpenClaw status
which openclawOutput:
/home/linaro/.nvm/versions/node/v25.9.0/bin/openclawopenclaw gateway status 2>&1 | head -15Output:
Service: systemd user (enabled)
File logs: /tmp/openclaw/openclaw-2026-08-20.log
Command: /home/linaro/.nvm/versions/node/v25.9.0/bin/node /home/linaro/.nvm/versions/node/v25.9.0/lib/node_modules/openclaw/dist/index.js gateway --port 18789
Service file: ~/.config/systemd/user/openclaw-gateway.service
Service env: OPENCLAW_GATEWAY_PORT=18789
...
Gateway: bind=lan (0.0.0.0), port=18789 (service args)③ End-to-end QQ test
Send /new in QQ; receiving a bot reply means it passes.
5. System management commands
After setup.sh deployment, the shimeta command lives in /home/linaro/lobster-pkg/scripts/ and must be added to PATH.
5.1 Verify the shimeta command
which shimetaOutput:
shimeta not found in PATHls -la /home/linaro/lobster-pkg/scripts/shimetaOutput:
-rw-rw---- 1 linaro linaro 38 8月 5日 21:42 /home/linaro/lobster-pkg/scripts/shimetacat /home/linaro/lobster-pkg/scripts/shimetaOutput:
#!/bin/bash
exec bash ~/setup.sh "$@"Inside the script,
~/setup.shexpands to/home/linaro/setup.sh. If the deployment package was extracted under~/lobster-pkg/, this path does not hold and must be changed to an absolute path:# Change the content exec bash /home/linaro/lobster-pkg/setup.sh "$@" # Or add a symlink in home ln -s ~/lobster-pkg/setup.sh ~/setup.sh
5.2 Register in PATH
One-time (recommended):
echo 'export PATH=/home/linaro/lobster-pkg/scripts:$PATH' >> ~/.bashrc
source ~/.bashrcOr a symlink (system-wide):
sudo ln -sf /home/linaro/lobster-pkg/scripts/shimeta /usr/local/bin/shimetaCommand reference
| Command | Function | Status |
|---|---|---|
shimeta info | System status | Working |
shimeta check | Health check (14 items) | Working |
setup.sh --help | Deployment help | Working |
shimeta | Re-run the deployment flow | Working |
shimeta --stage N | Resume from a given stage | Working |
shimeta --reconfig | Reconfigure the API / QQ Bot | Working |
shimeta info

shimeta check

6. Configuration file
All service ports, API keys, and model paths are centralized in /home/linaro/lobster-pkg/config/box.conf.
6.1 Verify the configuration
ls -la /home/linaro/lobster-pkg/config/Output:
总计 12
drwxrwx--- 2 linaro linaro 4096 8月 5日 21:42 .
drwxr-xr-x 7 linaro linaro 4096 8月 6日 11:13 ..
-rw-rw---- 1 linaro linaro 555 8月 5日 21:42 box.conf
-rw-r----- 1 linaro linaro 555 8月20日 13:23 box.conf.bak
box.conf.bakis a backup generated automatically whensetup.shmodifiesbox.conf.
cat /home/linaro/lobster-pkg/config/box.confOutput:
# 龙虾盒子配置文件
# 由 setup.sh 自动生成,也可手动编辑
# 所有脚本通过 source 此文件获取统一配置
# ── 板子身份 ──
BOARD_ID="龙虾-001"
BOARD_ROLE="零售巡检"
# ── 服务端口 ──
VLM_PORT=7879
OCR_PORT=7880
# ── 云端 API ──
MINIMAX_KEY="sk-xxx"
MINIMAX_URL="https://api.minimax.chat/v1/chat/completions"
MINIMAX_MODEL="MiniMax-Text-01"
# ── QQ 机器人 ──
QQ_BOT_ID="123456789"
QQ_BOT_SECRET="xxx"
# ── 模型路径 ──
MODEL_DIR="/userdata/models/Qwen3-VL-2B"
# ── 部署信息 ──
SETUP_VERSION="1.1.0"
DEPLOY_DATE="2026-08-20"The above is an example. Cloud API field names vary with the chosen provider — e.g. DeepSeek uses
DEEPSEEK_KEY/DEEPSEEK_URL, while MiniMax usesMINIMAX_KEY/MINIMAX_URL/MINIMAX_MODEL. The actually generatedbox.confis authoritative.
6.2 Symlink the configuration file
For compatibility with setup.sh's lookup path, create a symlink:
sudo mkdir -p /etc/lobster
sudo ln -sf /home/linaro/lobster-pkg/config/box.conf /etc/lobster/box.conf6.3 Configuration example
# 板子身份
BOARD_ID="龙虾-001"
BOARD_ROLE="零售巡检"
# 服务端口
VLM_PORT=7879
OCR_PORT=7880
# 云端 API
DEEPSEEK_KEY="sk-xxx"
DEEPSEEK_URL="https://api.deepseek.com/v1/chat/completions"
# 模型路径
MODEL_DIR="/userdata/models/Qwen3-VL-2B"
VLM_PORT=7879does not clash with port 7878 used by rkllm3-server by default, but if other services use nearby ports, offset them manually.
Multi-board deployment: change BOARD_ID / BOARD_ROLE on each board.
7. Manual installation
This subsection is for users who need a custom deployment path or to skip
setup.shautomation. Regular users should return to the main path above, "One-click deployment in 30 minutes".
Install OpenClaw
su linaro
openclaw onboard --install-daemonFollow the wizard:
| Step | Configuration |
|---|---|
| 1 | QuickStart → Use existing values |
| 2 | Provider: Custom Provider |
| 3 | API Base URL: https://api.deepseek.com/v1 |
| 4 | API Key: sk-xxxxxxxx |
| 5 | Model ID: deepseek-chat |
| 6 | Skip for now for the remaining steps |
| 7 | Restart OpenClaw |
Install the QQ Bot plugin
openclaw plugins install @tencent-connect/openclaw-qqbot@latest
openclaw channels add --channel qqbot --token "your-appid:your-appsecret"
openclaw gateway restartKey directory structure
~/.openclaw/
├── openclaw.json # main configuration
├── clawchips.yaml # routing configuration
├── workspace/
│ ├── skills/ # SKILL definitions
│ └── TOOLS.md # tool guidance
├── extensions/
│ ├── clawchips/
│ └── openclaw-qqbot/
└── agents/main/
├── agent/models.json
└── sessions/8. FAQ
| Symptom | Cause | Fix |
|---|---|---|
which shimeta finds nothing | Not registered in PATH | echo 'export PATH=/home/linaro/lobster-pkg/scripts:$PATH' >> ~/.bashrc && source ~/.bashrc |
shimeta doesn't run (setup.sh not found) | Path ~/setup.sh doesn't exist under ~/lobster-pkg/ | Change the content to an absolute path or ln -s ~/lobster-pkg/setup.sh ~/setup.sh |
openclaw gateway status reports PATH includes version managers | Started with nvm node | Repair with openclaw doctor --repair |
openclaw Node version not in 22/24 LTS | Installed a non-LTS via nvm | nvm install 22 then restart |
QQ /new gets no reply | Bot not started / wrong Token | openclaw gateway status + reconfigure with --reconfig |
| VLM errors, model not found | Wrong MODEL_DIR path | cat box.conf | grep MODEL_DIR |
9. Next steps
- Hardware Installation and Verification — card insertion + health check
- Environment Setup — 30-second overview
- Application Development → SKILL Manual — write custom Skills
