一台数控铣床在漆黑的车间里独自切削铝件,只有它自己的工作灯亮着。

N° 05制造

车间,熄灯照常运转。

铣床、激光机和打印机的数据流入数字孪生。智能体运行你授权给它们的作业。每条命令在到达机器之前都已写下。

图版 05 · 下班后的一台三轴铣床,只有它自己的工作灯亮着

一个模型

每台机器都是带通道的设备。

铣床、激光机、打印机,以及盯着它们的相机,在 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。
一台工作中的 3D 打印机,旁边的显示器上映出它的数字孪生。

图版 06 · 数字孪生,就在它所跟随的机器旁边

孪生跟随的是机器,不是计划。

数字孪生绘制的是控制器上报的内容——位置、行号、进给、报警——并标出每一处超过半毫米的偏差。仿真与实时分别标注,从不混在一起。

发送之前就已写下。

每个动作都会在调用驱动之前,连同发出它的主体,追加到运行的数据流中。确认不等于位置。断开的链路记录为状态未知——而且从不静默重试。

如果智能体决定再试一次,这个决定本身就是一条被记录的命令。

runs/night-shift/streams/mill-1.gcode示例记录
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

权限

权限是一份长期授权。

你一次性决定智能体可以碰什么:哪个世界、哪些单元、哪些通道、哪些操作、多长时间。在这份授权之内,它可以实时使能机器、运行程序、发送命令——凌晨两点不会弹出确认对话框。

边界由驱动强制执行,而不是由人。停止、暂停保持和紧急停机操作,对任何在该单元上持有任意授权的人都始终允许。

shell
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。在那之前不会。

带上你的机器。

在浏览器中打开工作台,把你的机器放进一个仿真世界,先在那里把作业跑一遍。