蓝调时分的工业试验厂房,管道、储罐和试验台照常运转,现场空无一人。

N° 09运营

整个现场,实时汇入一个世界。

每台机器都是一个设备,把它上报的内容传入 3D 世界。智能体盯着这些数据流,在你写下的授权内行动;每个动作在到达机器之前都已记录在案。

图版 30 · 蓝调时分的一座试验厂房,现场空无一人,照常运转

一个世界

整个设施是一个世界,每台机器都是一个设备。

一个世界就是一个普通文件 worlds/<id>/world.json,标记为物理或仿真。现场的每台机器、机器人、相机和计算机都是带通道的设备,作为单元放进这个世界:一路状态推送、一条 G-code 线路、一条舵机总线、一路视频流。

每个单元按其设备的 CAD 模型在 3D 中绘制(由 STEP 或网格转换为 glTF);还没有模型时,先画成一个方盒。只要某个通道上报了位置,世界视图就会把刀具或机械臂的骨架画在机器自己报告的位置上——可以是实时的,也可以是你拖回去的任意时刻。

暗室里的一台显示器,映出一座工业厂房的线框模型,几个点用橙色标出。

图版 31 · 线框里的现场,标出了四个点

标注的是机器自己说的话。

在 3D 应用的 CAM 模式中打开一台机器的作业,孪生就会根据记录为它标注:当前行、进给、主轴、激光、挤出机和进度。报警显示为错误。与计划偏差超过 0.5 mm 时显示警告;链路中断同样是警告:状态未知,此时不画刀具。计划和上报是两个来源,各自标明,绝不混在一起。

一台小相机和一个传感器夹在泵电机上,一盏橙色状态灯亮着。

数据流

每个通道都写下一条数据流。

设备的所作所为都作为数据流记录在一次运行中。机器每上报一次,records.jsonl 就多一行;相机按同一个时钟写入它唯一的视频文件。

不需要另外维护一套历史数据库并保持同步。运行文件夹就是历史:普通文件,可以复制、比对,用任何工具读取。

图版 32 · 夹在泵电机上的一台相机和一个传感器

分析,直接取自记录。

图表查看器直接读取运行的 records.jsonl,或你的 MES 导出的任意 CSV,提供六种视图:折线、磁贴、柱状、热力图、平行坐标和散点。工厂仪表板把 OEE 表放在孪生和相机旁边。

每个窗口只有一个时钟。拖动时间条,所有窗格一起跳到那一刻:3D 世界、图表、相机和记录。

runs/line-2/streams/mill-2.gcode示例记录
03:41:02.115 state   Run · line 4127 · F1200 S12000
03:41:02.367 state   Run · line 4128 · F1200 S12000
03:41:02.402 event   ALARM:1 hard limit
03:41:02.410 state   Alarm
03:41:06.021 note    agent:floor-watch: stop mill-2/gcode
03:41:06.388 state   Alarm · job stopped at line 4128

权限

智能体实时行动,依据常设授权。

你一次性决定智能体可以碰什么:哪个世界、哪些单元、哪些通道、哪些动作、多长时间。在授权范围内,它通过 MCP 读取数据流、打开通道、上电待命、运行程序、发送命令——凌晨 3 点也不会弹出确认框。

每个动作连同发出它的主体,在调用驱动之前就写入运行记录。确认回复不等于状态,链路中断记录为未知。任何命令都不会被悄悄重试;如果智能体决定再试一次,那是一条新的、被记录的命令。边界由驱动强制执行;停止、暂停和急停类动作,对在该单元上持有任何授权的人始终开放。

shell
commandagi grant add --principal agent:floor-watch \
  --world plant --unit mill-2 --unit press-4 \
  --verb open --verb run --verb send --for 12h --note "night watch"
夜里空无一人的控制室,显示器上亮着图表,窗外是漆黑的厂区。

仪表板

仪表板就是文件。

一个仪表板就是一个 JSON 文件 dashboards/<id>.dashboard.json,里面是窗格、布局和带类型的参数:一个世界、一个单元、一次运行、一条数据流、一个文件。从内置的模板开始,比如工厂现场、相机墙、安防墙、设备驾驶舱、运行回放、打印农场或仓库。然后修改它、提交它,复制到下一个厂区。

相机墙把所有录下的视频流放在一个屏幕上,与机器共用同一个时钟。

图版 33 · 夜里的控制室,椅子空着

相关方

分享运行本身,而不是截图。

分享链接在工作台中以只读方式打开一个文件或文件夹,比如一个仪表板、一次运行或一个世界,并按其类型布局。分享出去的世界里没有任何可以上电的东西。指向进行中运行的文件夹链接,也包含发出链接之后运行写下的内容。

实际清点,不是预测。

以仓库中的数字,说明产品今天已有的东西。

26
目录中的驱动

CNC、打印机、舵机总线、机械臂、相机、Shell 等,统一在一个会话接口之后。

6
图表视图

折线、磁贴、柱状、热力图、平行坐标和散点,都从记录中绘制。

0.5mm
触发标记的偏差

计划所说的位置与机器上报的位置之间的差距。

0
静默重试

物理命令只发送一次。重试是一个决定,并且会被记录。

验证

测试到什么程度,我们如实说明。

每个驱动都用一个词标明它经过何种验证:none、loopback、bench 或 hardware。目前 26 个驱动中有 23 个标注 loopback——针对每种协议的忠实软件替身进行测试;其余三个标注 none。还没有任何机器完成调试投用。

Modbus、OPC UA、MQTT 等现场总线驱动还不在目录中。如果你的现场用的是它们,请告诉我们。

把你的现场放进一个世界。

先在仿真中搭好世界、跑完一个班次,再连接机器。