RULITH 规据 接入计算后端与执行器

接入计算后端与执行器

计算后端与执行器不推数据,而是领工单:智能体的板上出现了要兑现的主张(求证工单)或要执行的动作(动作工单),worker 领取、交给你的系统、把结果签名回报。 注册与发钥在控制台「计算与执行器」页完成(流程同传感器,见接入传感器);纯出站 HTTPS,防火墙不用开任何入站口。

worker:无界面纯配置的通用领活程序

worker 是我们提供的通用程序:单文件、零依赖(只要 Node 22+)、无界面。它不含你的业务逻辑——真正的计算与动作能力住在你已有的系统里(证明器、ERP 接口、一条命令),worker 只按一张工具表把名字接到它们身上。

第一步:下载。 控制台「计算与执行器」页有下载按钮,或直接:

curl -O https://console.rulith.com/rulith-worker.mjs

第二步:写工具表 rulith-tools.json——动作名与主张形状,各自接到哪:

{
  "notify":      { "impl": "run",  "cmd": "sh", "args": ["notify.sh"] },
  "place_order": { "impl": "http", "url": "http://erp.internal/api/orders",
                   "method": "POST", "allowHosts": ["erp.internal"] },
  "claims": {
    "cert": { "impl": "http", "url": "http://farm.internal/lean/check",
              "allowHosts": ["farm.internal"] }
  }
}

上半张是动作手(执行器用):动作名 → 怎么执行。claims放电手(计算后端用):主张形状 → 哪个后端兑现,主张的内容会作为请求体发给它。

第三步:带凭证跑起来(凭证来自「计算与执行器」页注册的执行器或计算后端连接):

RULITH_CHANNEL=<通道 id> RULITH_CHANNEL_KEY=<密钥> node rulith-worker.mjs

塞进 systemd 或 docker 当服务即可,日志走标准输出。

一台 worker 服务多份案卷:注册这条连接时,服务对象除了选某一个智能体,也可以选全部案卷——它的收件箱就跨板聚合,每条工单自带"属于哪块板",领取与回报据此路由,不必为每块板各配一份凭证。开了一单一板(案卷随单开随封)之后尤其用得上。这一项属于实现快照,见生产状态

worker 的围栏:声明即边界

  • run 手只执行表里写死的命令与参数——不接受任何来自工单的内容插值,注入面为零;
  • http 手只打 allowHosts 名单内的主机;
  • 表里没有的动作不领——别人的活不抢,如实跳过。

所以一台失控的 worker 能做的坏事,被这张表在部署时就钉死了。

为什么 worker 没有界面

worker 部署在你的内网,是一个纯出站的循环(领活 → 执行 → 回执),它自己没有值得看的状态——该看的都在板上:动作的领取与回执(谁领的、结果如何)、放电证据(带实证标记与出身)、哪台执行器在岗,都在控制台「智能体」页。观测面在裁决处,不在执行端。

当前边界(如实说明)

  • 动作工单目前按名字派发:worker 执行的是工具表里写死的命令;把动作参数安全地传给 http 动作手(地址仍表里钉死、参数只作请求体)在计划中;
  • 放电证据默认落「实证」档;升「已验证」档需要额外的复核配置,属于治理项,尚未在自助版开放。

进度与验证记录见生产状态

正文住 content/*.md;能力清单、工具清单、字段矩阵由生成器从实现代码抽取 (快照在 facts.json)——改了实现而忘了改文档,校验会自己发现。