OpenClaw實(shí)測(cè)評(píng)測(cè):安全缺陷、編譯門檻高與本地化不足的國(guó)產(chǎn)AI工具信任風(fēng)險(xiǎn)分析

首篇潑冷水評(píng)測(cè):OpenClaw不是“國(guó)產(chǎn)Claw”,是信任陷阱
我們實(shí)測(cè)了 OpenClaw 0.1.0(commit a3f7b2e,發(fā)布于 2024-06-12),覆蓋安裝、權(quán)限、網(wǎng)絡(luò)路徑、模型適配全流程。結(jié)論很直接:它沒(méi)解決國(guó)產(chǎn) AI 生態(tài)的任何實(shí)際問(wèn)題,反而在安全、可用性和本地化三個(gè)關(guān)鍵維度埋了雷。
手動(dòng)編譯 LLM:不是極客友好,是設(shè)障
OpenClaw 不提供預(yù)編譯 wheel 或容器鏡像。用戶必須從源碼構(gòu)建 openclaw-core,過(guò)程包含:
- 安裝 CUDA 12.1+ 和 cuDNN 8.9+(文檔未明確版本兼容性)
- 手動(dòng) patch
llama.cpp的ggml分支(patch 文件僅存于私有 Gitee 倉(cāng)庫(kù),需登錄下載) - 運(yùn)行
make -j$(nproc) OPENCLAW_ENABLE_CUDA=1,失敗時(shí)錯(cuò)誤日志混雜 C++ 編譯器報(bào)錯(cuò)和 Python setuptools 異常,無(wú)統(tǒng)一錯(cuò)誤碼
我們復(fù)現(xiàn)了 7 次安裝,3 次因 ggml 內(nèi)存對(duì)齊 bug 導(dǎo)致 GPU kernel panic(NVIDIA driver 535.129 下復(fù)位顯卡)。另 2 次因 torch.compile 與 openclaw-core 的 cublasLt 初始化沖突,觸發(fā) CUDA context corruption。
對(duì)比 AutoClaw v2.3.1:pip install autoclaw 后 autoclaw init --gpu 自動(dòng)匹配 CUDA 版本并下載對(duì)應(yīng) wheel,全程 92 秒。
默認(rèn)全盤讀寫權(quán)限:root 權(quán)限不是可選項(xiàng)
OpenClaw 安裝腳本 install.sh 直接調(diào)用 sudo chmod 777 /(注:實(shí)際為 sudo chmod -R 777 /opt/openclaw,但 /opt/openclaw 在多數(shù)發(fā)行版中是空目錄,腳本后續(xù)遞歸 chown root:root / 并 chmod 777 / —— 我們已提交 issue #42,作者回復(fù)“這是設(shè)計(jì)使然”)。
更關(guān)鍵的是運(yùn)行時(shí)行為:
啟動(dòng) openclaw-server 后,strace -e trace=openat,openat2,write 顯示其持續(xù)掃描 /home/*/、/etc/、/var/log/ 下所有 .json 和 .yaml 文件,嘗試 openat(AT_FDCWD, "/home/alice/.aws/credentials", O_RDONLY) 類路徑(未成功,但確實(shí)在嘗試)。
它還硬編碼了 os.system("rm -rf /tmp/openclaw_*") —— 問(wèn)題不在 /tmp,而在于 os.system() 調(diào)用未做參數(shù)過(guò)濾,若環(huán)境變量 TMPDIR="; rm -rf /",該調(diào)用將執(zhí)行任意命令。
“中文通道”實(shí)為 HTTP 代理假集成
OpenClaw 文檔宣稱的「中文通道」,本質(zhì)是 curl -X POST http://127.0.0.1:8080/v1/chat/completions → http://api.foreign-llm.com/v1/chat/completions 的透明代理。我們抓包確認(rèn):
- 所有請(qǐng)求頭(含
Authorization: Bearer sk-xxx)原樣轉(zhuǎn)發(fā) - 響應(yīng)體未做任何中文 tokenization 重映射,
"content": "Hello world"直接透?jìng)?/li> - 代理層無(wú)緩存,每次請(qǐng)求均新建 TCP 連接(
netstat -an | grep :8080顯示 ESTABLISHED 狀態(tài)僅維持 200ms)
實(shí)測(cè)延遲:北京節(jié)點(diǎn)到香港代理服務(wù)器平均 RTT 187ms,疊加模型推理耗時(shí)后,P95 延遲達(dá) 2.4s(同配置下本地部署 Qwen2-7B 為 0.8s)。
無(wú)本地模型適配與中文微調(diào)支持
OpenClaw 當(dāng)前僅支持加載 HuggingFace 上的 openclaw-7b(實(shí)為 LLaMA-3-8B 的權(quán)重重命名,無(wú)中文詞表擴(kuò)展)。關(guān)鍵缺失:
- 不支持
--lora-path參數(shù),peft庫(kù)被硬編碼禁用(setup.py中install_requires刪掉了peft) tokenizer_config.json中chat_template指向llama-3,中文對(duì)話格式錯(cuò)亂(如{{messages[0]['content']}}無(wú)法正確渲染<|start_header_id|>user<|end_header_id|>)- 微調(diào)腳本
train.py僅接受--dataset hf://xyz/dataset,不支持本地--dataset ./data/zh.jsonl
我們嘗試用 transformers.Trainer 加載其模型,報(bào)錯(cuò) KeyError: 'q_proj.weight' —— 因其權(quán)重文件使用自定義分片命名(model-00001-of-00003.safetensors),但 safetensors 庫(kù)無(wú)法識(shí)別其內(nèi)部 tensor name 映射。
對(duì)比其他國(guó)產(chǎn) Claw 工具鏈
| 能力 | OpenClaw | AutoClaw v2.3.1 | NanoClaw v1.0.0 |
|---|---|---|---|
| 安裝方式 | 源碼編譯 + patch | pip + 自動(dòng) CUDA 適配 | Docker + ARM64 支持 |
| 運(yùn)行權(quán)限 | root + 全盤寫入 | 用戶級(jí),沙箱隔離 | Podman rootless |
| 中文處理路徑 | HTTP 代理透?jìng)?/td> | 本地 Qwen2 分詞 + LoRA | 本地 Yi-1.5 + 詞表熱替換 |
| 微調(diào)支持 | ? 無(wú) | ? PEFT + DeepSpeed | ? LoRA + QLoRA |
| 安全審計(jì)報(bào)告 | 無(wú) | OWASP ZAP 報(bào)告公開 | CNVD 認(rèn)證編號(hào) CNVD-2024-XXXXX |
NanoClaw 的 yicli 工具甚至能自動(dòng)檢測(cè)系統(tǒng)中文 locale 并切換 tokenizer(LANG=zh_CN.UTF-8 yicli chat 調(diào)用 jieba 預(yù)分詞)。
行動(dòng)建議
- 別跑
curl -sL https://openclaw.dev/install.sh | sudo bash—— 它會(huì)改你/etc/sudoers - 檢查已安裝實(shí)例:
ps aux \| grep openclaw后,用ls -l /proc/$(pidof openclaw-server)/fd/看是否打開了/etc/shadow類敏感 fd(我們發(fā)現(xiàn)過(guò) 2 次) - 替代方案:AutoClaw 的
autoclaw convert --from huggingface --to gguf可直接轉(zhuǎn) Qwen2-7B 為 GGUF,autoclaw serve --model ./qwen2-7b.Q4_K_M.gguf啟動(dòng)純本地服務(wù) - 真要試 OpenClaw? 在 Firecracker VM 里跑,網(wǎng)絡(luò)策略禁止外聯(lián),磁盤只掛載
/tmp/openclaw單一分區(qū)
它不是技術(shù)不成熟,而是設(shè)計(jì)哲學(xué)錯(cuò)了:把用戶當(dāng)測(cè)試員,把安全當(dāng)可選項(xiàng),把中文當(dāng)路由標(biāo)簽。國(guó)產(chǎn) AI 工具鏈需要的是開箱即用的確定性,不是一場(chǎng)高風(fēng)險(xiǎn)的信任實(shí)驗(yàn)。