npm.io
1.0.2 • Published 49m agoCLI

aios-apps-invoke-cli

Licence
MIT
Version
1.0.2
Deps
3
Size
80 kB
Vulns
0
Weekly
161

aios-apps-invoke-cli

aios-apps-invoke-cli 是 AIOS 应用调用入口包。它同时包含:

  • CLI client:servercommand / binding 等一次性命令。
  • 常驻 invoke service:serve 命令启动的本地 socket 服务。

正常调用链路是:

OpenClaw/agent -> aios-apps-invoke-cli client -> app-invoke socket -> aios-apps-invoke-cli serve -> management web / provider SDK -> 业务系统

CLI client 自身不直接访问业务系统,也不通过 MQTT 发起 app invoke 请求。AIOS Docker 容器中,OpenClaw 仍以默认 agent 身份调用 CLI;serve 由 apps supervisor 以 aios-svc 身份常驻运行,因此实际访问局域网业务系统的是 service 进程。

安装

npm install -g aios-apps-invoke-cli

也可以直接用 npx

npx aios-apps-invoke-cli --help

运行模型

同一个 npm 包里包含 client 和 service,不需要安装两个包。

  • aios-apps-invoke-cli servercommand ...:作为 client 发送业务命令请求。
  • aios-apps-invoke-cli binding ...:作为 client 发送系统绑定请求。
  • aios-apps-invoke-cli serve:启动当前主路径使用的 app invoke socket service。
  • aios-apps-invoke-cli service-status:输出 socket service 的状态结构。
  • aios-apps-invoke-cli status:输出 client 配置视图。

环境变量

Client 命令不读取通讯配置环境变量。它固定连接内部 socket:

/var/aios/run/app-invoke.sock

Socket service 使用:

  • AIOS_WEB_BASE_URL:可选,默认 http://127.0.0.1:3030,用于读取业务系统配置、解析外部 cookie、记录调用日志。

用法

aios-apps-invoke-cli servercommand <应用> <命令> <请求方> [jsonBody] -p <provider> -s <SessionId>
aios-apps-invoke-cli binding <应用> <命令> <请求方> <jsonBody> -p <provider> -s <SessionId>
aios-apps-invoke-cli serve
aios-apps-invoke-cli service-status
aios-apps-invoke-cli status

参数说明:

  • provider 必填,当前可执行 provider 为 hzg
  • -s 传入当前 OpenClaw 会话的 SessionId
  • 长参数使用 --provider--sessionId
  • servercommand 的请求方法只支持 GETPOST
  • jsonBody 必须是合法 JSON。

示例

aios-apps-invoke-cli servercommand demo getUser POST "{\"id\":\"1001\"}" -p hzg -s thread-1
aios-apps-invoke-cli binding OASystem GetTableDataWithOffset POST "{\"columns\":[],\"table-name\":\"物品表\",\"page-name\":\"物品_库存\"}" -p hzg -s thread-2

Binding 支持范围

当前实际可执行的 binding 命令:

  • GetTableDataWithOffset
  • GetComboBindingOptions
  • CalcBindingDataSource

CLI 会把 TableBindingCandidatesBindingDataSourceBinding 等别名规范化为上述命令。GetMetadataGetMetadata2 只作为内部辅助能力存在,service 会拒绝直接调用。

Socket 协议

Client 会向内部固定 socket /var/aios/run/app-invoke.sock 写入一行 JSON 请求,service 返回一行 JSON 响应。

请求体包含:

  • traceId
  • command
  • provider
  • sessionId
  • parameters
  • timestamp

响应体格式:

{
  "traceId": "string",
  "code": 0,
  "message": "OK",
  "data": {}
}

code !== 0 时,CLI 以非零退出码结束,并把错误信息输出到 stderr。

AIOS Docker 容器

AIOS Docker 容器中 apps supervisor 会以 aios-svc 启动:

aios-apps-invoke-cli serve

OpenClaw/agent 调用 CLI 时仍使用默认 agent 身份。Docker iptables 的内网限制按 agent UID 生效;invoke service 以 aios-svc 访问业务系统,不需要把 agent 的局域网限制放开。

Keywords