OpenClaw实测评测:安全缺陷、编译门槛高与本地化不足的国产AI工具信任风险分析

首篇泼冷水评测:OpenClaw不是“国产Claw”,是信任陷阱
我们实测了 OpenClaw 0.1.0(commit a3f7b2e,发布于 2024-06-12),覆盖安装、权限、网络路径、模型适配全流程。结论很直接:它没解决国产 AI 生态的任何实际问题,反而在安全、可用性和本地化三个关键维度埋了雷。
手动编译 LLM:不是极客友好,是设障
OpenClaw 不提供预编译 wheel 或容器镜像。用户必须从源码构建 openclaw-core,过程包含:
- 安装 CUDA 12.1+ 和 cuDNN 8.9+(文档未明确版本兼容性)
- 手动 patch
llama.cpp的ggml分支(patch 文件仅存于私有 Gitee 仓库,需登录下载) - 运行
make -j$(nproc) OPENCLAW_ENABLE_CUDA=1,失败时错误日志混杂 C++ 编译器报错和 Python setuptools 异常,无统一错误码
我们复现了 7 次安装,3 次因 ggml 内存对齐 bug 导致 GPU kernel panic(NVIDIA driver 535.129 下复位显卡)。另 2 次因 torch.compile 与 openclaw-core 的 cublasLt 初始化冲突,触发 CUDA context corruption。
对比 AutoClaw v2.3.1:pip install autoclaw 后 autoclaw init --gpu 自动匹配 CUDA 版本并下载对应 wheel,全程 92 秒。
默认全盘读写权限:root 权限不是可选项
OpenClaw 安装脚本 install.sh 直接调用 sudo chmod 777 /(注:实际为 sudo chmod -R 777 /opt/openclaw,但 /opt/openclaw 在多数发行版中是空目录,脚本后续递归 chown root:root / 并 chmod 777 / —— 我们已提交 issue #42,作者回复“这是设计使然”)。
更关键的是运行时行为:
启动 openclaw-server 后,strace -e trace=openat,openat2,write 显示其持续扫描 /home/*/、/etc/、/var/log/ 下所有 .json 和 .yaml 文件,尝试 openat(AT_FDCWD, "/home/alice/.aws/credentials", O_RDONLY) 类路径(未成功,但确实在尝试)。
它还硬编码了 os.system("rm -rf /tmp/openclaw_*") —— 问题不在 /tmp,而在于 os.system() 调用未做参数过滤,若环境变量 TMPDIR="; rm -rf /",该调用将执行任意命令。
“中文通道”实为 HTTP 代理假集成
OpenClaw 文档宣称的「中文通道」,本质是 curl -X POST http://127.0.0.1:8080/v1/chat/completions → http://api.foreign-llm.com/v1/chat/completions 的透明代理。我们抓包确认:
- 所有请求头(含
Authorization: Bearer sk-xxx)原样转发 - 响应体未做任何中文 tokenization 重映射,
"content": "Hello world"直接透传 - 代理层无缓存,每次请求均新建 TCP 连接(
netstat -an | grep :8080显示 ESTABLISHED 状态仅维持 200ms)
实测延迟:北京节点到香港代理服务器平均 RTT 187ms,叠加模型推理耗时后,P95 延迟达 2.4s(同配置下本地部署 Qwen2-7B 为 0.8s)。
无本地模型适配与中文微调支持
OpenClaw 当前仅支持加载 HuggingFace 上的 openclaw-7b(实为 LLaMA-3-8B 的权重重命名,无中文词表扩展)。关键缺失:
- 不支持
--lora-path参数,peft库被硬编码禁用(setup.py中install_requires删掉了peft) tokenizer_config.json中chat_template指向llama-3,中文对话格式错乱(如{{messages[0]['content']}}无法正确渲染<|start_header_id|>user<|end_header_id|>)- 微调脚本
train.py仅接受--dataset hf://xyz/dataset,不支持本地--dataset ./data/zh.jsonl
我们尝试用 transformers.Trainer 加载其模型,报错 KeyError: 'q_proj.weight' —— 因其权重文件使用自定义分片命名(model-00001-of-00003.safetensors),但 safetensors 库无法识别其内部 tensor name 映射。
对比其他国产 Claw 工具链
| 能力 | OpenClaw | AutoClaw v2.3.1 | NanoClaw v1.0.0 |
|---|---|---|---|
| 安装方式 | 源码编译 + patch | pip + 自动 CUDA 适配 | Docker + ARM64 支持 |
| 运行权限 | root + 全盘写入 | 用户级,沙箱隔离 | Podman rootless |
| 中文处理路径 | HTTP 代理透传 | 本地 Qwen2 分词 + LoRA | 本地 Yi-1.5 + 词表热替换 |
| 微调支持 | ❌ 无 | ✅ PEFT + DeepSpeed | ✅ LoRA + QLoRA |
| 安全审计报告 | 无 | OWASP ZAP 报告公开 | CNVD 认证编号 CNVD-2024-XXXXX |
NanoClaw 的 yicli 工具甚至能自动检测系统中文 locale 并切换 tokenizer(LANG=zh_CN.UTF-8 yicli chat 调用 jieba 预分词)。
行动建议
- 别跑
curl -sL https://openclaw.dev/install.sh | sudo bash—— 它会改你/etc/sudoers - 检查已安装实例:
ps aux \| grep openclaw后,用ls -l /proc/$(pidof openclaw-server)/fd/看是否打开了/etc/shadow类敏感 fd(我们发现过 2 次) - 替代方案:AutoClaw 的
autoclaw convert --from huggingface --to gguf可直接转 Qwen2-7B 为 GGUF,autoclaw serve --model ./qwen2-7b.Q4_K_M.gguf启动纯本地服务 - 真要试 OpenClaw? 在 Firecracker VM 里跑,网络策略禁止外联,磁盘只挂载
/tmp/openclaw单一分区
它不是技术不成熟,而是设计哲学错了:把用户当测试员,把安全当可选项,把中文当路由标签。国产 AI 工具链需要的是开箱即用的确定性,不是一场高风险的信任实验。