基于Arduino Uno Q的完全本地化代理助手,它会编译代码并烧录到微控制器上
你见过的每一个“硬件上的AI”演示背后,都隐藏着一个大语言模型。用户通过终端或Telegram与一块电路板通信,而该电路板则调用API,让云端模型来完成任务。QClaw打破了这种模式。Arduino Uno Q 本身承载了语言模型,运行代理循环,驱动编译工具链,并自行烧录到微控制器上。
让QClaw在LED矩阵上滚动“QClaw”,它会做到。从头到尾,就在板子上,离线运行。
QClaw 拥有八种工具的代理表面、十五种技能的预路由功能,以及直接的 OpenOCD 闪存路由,使自主上传真正得以执行。双路径运行模式让你可以在同一型号上选择速度或完全硬件控制。
为什么Uno Q 是这个场合的合适棋盘
Arduino Uno Q 是一种分体式硅器件。外观上看起来像经典的 Arduino,但实际上是由两块电路板组成,封装在一条沟槽中:
MPU 和 MCU 共用同一块电路板。MPU 可以将 MCU 处于复位状态,并通过 `linuxgpiod` 驱动器连接到 SWD 的 GPIO 引脚,直接重新编程其闪存。两者之间无需 USB 线缆,无需探针,也无需第二台设备。这正是 QClaw 的巧妙之处。
代理循环在Arduino Uno Q的双硅片拓扑结构中协调整个草图生命周期,MPU驱动该循环,MCU执行生成的固件。QClaw正是通过这种方式进行生成、编译、闪存和观测。
`arduino`` 工具使用 `arduino-cli compile --fqbn arduino:zephyr:unoq --export-binaries`` 进行编译,获取生成的 `.elf-zsk.bin` 文件,并通过 GPIO SWD 串口将其传入 OpenOCD。QClawaw 直接在正确地址调用 OpenOCD,MUCUCUC 立即执行代码。无需 SSH、无需网络凭据,也无需远程 OCD OCD OCD 隧道。只需将 MPU 与 MCU MCU 连接在同一块板上,程序一写入磁盘即可实现毫秒级闪存。
4GB内存对于运行一个带8K上下文窗口、mlocked和q8_0 KV缓存的Qwen3.5 0.8B Q4_0模型来说也完全足够。QClaw在Uno Q上占用约1.3GB内存,解码速度大约为每秒8个标记。相比台式机GPU而言速度较慢,但足以让你在喝完咖啡前完成草图编译并闪存显示。
如何使用 QClaw
QClaw 在相同的 llama-server 后端、相同的 `SOUL.md` 以及相同的 23 规则预路由基础上,提供了两个运行时。它们的区别在于对 LLM 调用的封装方式不同。
代理路径(`make qclaw-agentic`)。qclaw Go 门面位于模型前端,负责运行通道适配器(终端、SSH、Telegram)、多迭代代理循环、预路由器以及八工具调度器。这是生产环境的默认路径,也是唯一能够实际编译并刷入代码的路径。
直接路径(`make qclaw-direct`)。在Python中运行相同的预路由规则后,一个轻量级的Python REPL会直接向`llama-server`发送请求。无需循环、无需工具、无需Telegram。在同等正确性下,对于纯事实型提示,延迟降低了约33%,因为提示中没有工具结构,也无需二次迭代。
当需要显示草图或捕获帧时,请使用代理路径;当只需查询 Uno Q 上哪些引脚支持 PWM 时,请使用直接路径。
输入两条命令,即可开始会话:
`make qclaw-install` 会构建 Go 二进制文件,将系统提示符和十五技能树复制到 `~/.qclaw/workspace/`` 目录下,安装 `arduino-cli`` 及其 `arduino:zephyr`` 核心,并运行一个交互式向导以设置可选的 Telegram 代理。
一旦运行,代理将拥有八种范围较窄的工具可用:
•`read_file`、`write_file`、`list_dir` 用于工作区导航
•使用 OpenOCD 编译和烧录 arduino
•通过 GStreamer 实现单帧 V4L2 捕捉的摄像头
•MPU侧RGB LED的`sysfs_led`位于`/sys/class/leds/*`
•`network` 用于主机名、接口和默认网关,均为只读的标准库 Go
•使用 `-y -r` 仅列出和扫描 Linux I²C 总线的 `i2cdetect`
不使用 `exec`,也不使用 shell。每个工具都会将参数与允许列表进行验证。整个工具的结构大约有 3.4K 个字符,因此在 8K 的上下文窗口中仍有充足空间用于系统提示。
预路由:技能,而非角色扮演
预路由器是 QClaw 中在 0.8BB 模型中承担主要任务的部分。它并非 RAG,而是一个包含 23 个关键词正则表达式规则的扁平化表格,覆盖 15 个技能。当你发送消息时,预路由器会扫描该消息,找到匹配的规则,并直接将相关的 `SKILL.md`` 及其引用的文件嵌入到系统提示中,然后再调用大语言模型(LLM)。
该模型无需调用 `read_file`` 来获取标准技能内容,因为相关内容已经存在。在 0.8BB 规模下,调用 `read_file``` 需要一次完整的 LLMLM 迭代,大约需要 100 到 20 分钟的冷预填充和解码时间。而预路由机制可将这一成本摊销至零。
技能涵盖:
•草图基础:闪烁、呼吸、按钮、电位器、舵机、编译与上传、CAN总线、DAC、运算放大器
•13x8 LED矩阵,使用标准的Arduino_LED_Matrix模板
•硬件组件:接线端子表、电压规则、连接器、电源
•双芯片工作流:连接RPC、App Lab和Bricks
•Linux端功能:Wi-Fi、蓝牙、摄像头、OpenCV、麦克风、sysfs LED
•即插即用的Modulino传感器
每个技能都是 `workspace/skills//` 下的一个目录,包含一个 `SKILL.md` 文件以及可选的参考文件。添加新技能只需编写 Markdown Markdown 内容并添加一个正则表达式规则即可。
本文编译自hackster.io





