PicoClaw - 从免费的本地“皮皮虾”开始养起
近段时间“养虾”这件事开始爆火,一大波人开始尝鲜安装 OpenClaw,其中也包含愿意付费请人安装的,可见 Claw 之火热。几周的时间看下来,在用途上面也各式各样,有拿来做自动聊天的、有做单片机自动写程序烧写的,也有用来做炒股看盘的,多种使用场景被大家所探索。
手机端 Claw 也不甘示弱,近期百度和阿里在端侧陆续上线了相关 APP,旨在通过用户指令来操作手机,个人理解是想达成低成本豆包手机的效果。

作为一名软件研发,对待新事物的兴趣更在于背后原理的探索,而不是单单使用。
抱着边用边学的态度,直接选择用 OpenClaw 的话,工程过于庞大学习成本高,花费的周期要久一些,不利于入门。
网上冲浪无意中发现了 PicoLM,一款极轻量的推理引擎,其使用一些 CPU 矢量指令来助力推理加速,在一个十几或几十块的 Arm 或 Risc-v 小单板上就能运行起来,项目 Github 页面中还声称可搭配 PicoClaw 作为助手使用,一下激起了劲头,岂不是同时收获了两个极致轻量项目!
一、小试牛刀
PicoLM 支持一些小体量模型,官方推荐 TinyLlama 1.1B 小模型,按照预想的架构开始着手操练,极致简单的架构如官方所示,

PicoLM 使用 C 语言编写(底软开发者狂喜),PicoClaw 使用 Go 语言编写,二者在编译构建上没有什么难度,参照官方建议命令很快完成,如果你的 Ubuntu 下没有 Go 环境可以去官方 Release 的程序中选一个适合架构的即可。
构建这么简单,是不是运行起来很容易了?
不,居然折腾了一天,最后放弃了,主要原因有几点,
- 二者生态衔接不完善:虽然都名叫 Pico,但他们并不是出自一人之手,PicoClaw 支持 OpenAI 对接协议,但 PicoLM 当前还不支持,需要以 PicoClaw Spawn PicoLM 进程的形式进行联络。且到目前 cf3f2df 提交时,主线的这种 Spawn 形式也并未支持好,需要打上一个叫 ghstrider 哥们的 feat: add PicoLM local subprocess provider 的补丁才成,其在 PicoClaw 中支持上了 PicoLM Provider. 经测试是有效的,可以打通连接。
- PicoLM 似乎存在自身缺陷:单纯同模型交互时,一般通过控制台 Stdin/Stdout 就可以,但 Claw 与 LLM 交互时,一般需要借助 Json 进行消息封装。但试验下来,PicoLM 启用 Json 后的推理结果不符合预期,简单调试了下没发现问题点,后续有空再看。
- PicoLM 推理效率低:虽说是 Tiny 模型,但 Claw 提交过来的 Sequence 很长,推理一下太慢太慢了,毕竟它是通过 CPU 推理,如果你不是服务器没个几十上百个核,这个时间等不了一点。
综上,先放弃挣扎 PicoLM,但 PicoClaw 还是要继续用的。
二、回归正轨
正式介绍下 PicoClaw
🦐 PicoClaw is an ultra-lightweight personal AI Assistant inspired by nanobot, refactored from the ground up in Go through a self-bootstrapping process, where the AI agent itself drove the entire architectural migration and code optimization.
简单的说,其特点就是:轻量!快速!小巧!
鉴于 PicoLM 拉胯,果断上手 vLLM,它既支持 OpenAI 协议也能推理多个模型,没有什么喷的。使用难度上稍大一些,其环境上依赖 PyTorch 和 CUDA 等,版本兼容性上是比较头疼的,好在官方支持 uv 安装,依赖组件的版本自动选择。
因本地环境配置不算高,先不上手过大的模型,就以 Qwen2.5-7B-Instruct-AWQ 为入手点,做些基础的功能应该够用。
那么当前的环境组合即为,

首先将 vLLM 通过 serve 的方式运行起来,作为后台服务端,

运行成功后会有相应提示(对于低显存的显卡来说运行成功不易:),需要具体参数配置显存的使用限制),
(APIServer pid=33850) INFO: Started server process [33850]
(APIServer pid=33850) INFO: Waiting for application startup.
(APIServer pid=33850) INFO: Application startup complete.
此时通过代表推理服务已运行成功,可响应 HTTP 请求。
其次是启动本文的主角 PicoClaw,
PicoClaw 的使用上比较简单,有几个核心指令,如 agent 指令下发,skills 的预览与安装等,

通过 onboard 指令初始化好环境后,会在指定目录下生成配置文件,用来做与 LLM 间接交互方式指定等,
在我的环境中,只需要将 vLLM 相关的信息指定好即可,改动如下,
# agents
"provider": "local-model"
"model_name": "local-model"
# model_list
"model_name": "local-model",
# model 这里指定为 vllm serve 运行时的参数
"model": "vllm/model",
"api_base": "http://localhost:8000/v1",
"api_key": ""
配置完成后,通过 agent 交互形式运行起来 PicoClaw 开启正式体验,
运行成功后,会提示当前在 Interactive 模式下,

好,前置环境均准备完成,赶快将“皮皮虾”拉出来溜溜吧,
三、正式拉练
Claw 的能力在于「问题分析处理」和「命令本地执行」,那我们先来演示个简单的任务好了,
任务下发:让“皮皮虾”给我查一下北京今天的天气并存成文本文件放置在某个目录下

“皮皮虾”首先回答出做出的几步内容,然后和你确认是否执行,
当你告诉它:OK, go ahead. 后,它会执行具体的动作,其中主要涉及到两个 Tool 的调用,分别是 web_fetch 和 write_file,

至此,“皮皮虾”的任务就完美执行完成了,查看本地目录中的文件内容与它给出来的结果一致。
当然,这只是此虾的一点小技能,后续会再继续探索与 APP 端侧的打通,从手机上的「飞书」或「QQ」等应用同虾联络,例如,让它本地文件发给我、让它给我更新个游戏版本等等。
四、涉及命令集
# vLLm + pyTorch install
python3.12 -m venv .venv
uv pip install vllm --torch-backend=auto
# PicoClaw compile
make deps
make build
# Download model
hf download Qwen/Qwen2.5-7B-Instruct-AWQ --local-dir .
# vLLM launch
vllm serve --model model --gpu-memory-utilization 0.88 --enable-auto-tool-choice --tool-call-parser llama3_json --max_model_len 10000 --quantization awq --max_num_seqs 1
# PicoClaw launch
picoclaw agent
文末彩蛋
作者用的几年前小卡 RTX2060S,和虾的对话过程中,算力、显存的消耗已经接近极限了:)
