
一个模型
每台机器都是带通道的设备。
铣床、激光机、打印机,以及盯着它们的相机,在 CommandAGI 中是同一类东西:带通道的设备——一条 G-code 线路、一路状态推送、一路视频流。你把它们作为单元,放进一个与你车间布局一致的世界。
驱动通过统一的会话接口,讲各个控制器自己的协议:
- CNC: 经 USB 的 GRBL 1.1,经 TCP 的 FluidNC 和 grblHAL,Smoothieware,LinuxCNC 2.9。
- 打印机: Marlin、经 Moonraker 的 Klipper、PrusaLink、OctoPrint、Duet / RepRapFirmware、Repetier-Server。
- 激光机: GRBL、Smoothieware、Klipper 和 Duet 的激光指令,矢量应用中提供排样和板材 G-code。

图版 06 · 数字孪生,就在它所跟随的机器旁边
孪生跟随的是机器,不是计划。
数字孪生绘制的是控制器上报的内容——位置、行号、进给、报警——并标出每一处超过半毫米的偏差。仿真与实时分别标注,从不混在一起。
发送之前就已写下。
每个动作都会在调用驱动之前,连同发出它的主体,追加到运行的数据流中。确认不等于位置。断开的链路记录为状态未知——而且从不静默重试。
如果智能体决定再试一次,这个决定本身就是一条被记录的命令。
02:14:07.180 note agent:night-shift: run_program bracket-v3.gcode 02:14:07.192 command G21 G90 02:14:07.204 ack ok 02:14:07.260 command G1 X112.4 Y38.05 F1200 02:14:07.274 ack ok 02:14:09.910 state state: unknown (link lost) 02:14:12.330 event link back · Idle 02:14:12.402 note agent:night-shift: send_command $H
权限
权限是一份长期授权。
你一次性决定智能体可以碰什么:哪个世界、哪些单元、哪些通道、哪些操作、多长时间。在这份授权之内,它可以实时使能机器、运行程序、发送命令——凌晨两点不会弹出确认对话框。
边界由驱动强制执行,而不是由人。停止、暂停保持和紧急停机操作,对任何在该单元上持有任意授权的人都始终允许。
commandagi grant add --principal agent:night-shift \
--world shop --unit mill-1 --channel gcode \
--verb open --verb arm --verb run --for 8h --note "night shift"
相机
相机也是通道。
USB 相机、屏幕或 ESP32-CAM,都只是单元上的又一个通道。它的视频和 G-code 记录在同一次运行中、同一个时钟上,因此回放时能同时看到机器收到了什么指令、实际做了什么。
相机墙仪表盘把所有记录下来的数据流放在一个屏幕上。
图版 07 · 一台夹在龙门上的相机,俯视着切削路径
实数,不是预估。
产品目前包含的内容,按代码仓库中的实际数字统计。
- 26
- 目录中的驱动
CNC、打印机、舵机总线、相机、shell 等——统一的会话接口。
- 4
- 授权可给予的操作
open、arm、run 和 send。停止永远不会被扣留。
- 5分钟
- 使能自动失效
已使能的会话闲置后会自动解除使能。
- 0
- 静默重试
物理命令只发送一次。重试是一个决定,并且会被记录。
验证
测试到什么程度,我们如实说明。
每个驱动都用一个词标明它经过何种验证:none、loopback、bench 或 hardware。目前制造类驱动标注的是 loopback——针对每种协议的忠实软件替身进行测试。还没有任何机器完成调试投用。
当某个驱动在真实的台架上驱动一台真实的铣床时,它才会标注 bench。在那之前不会。