aixautobotaixautobot
写新云 aixautobot 文档

方式 D:Web 控制台

aixautots TypeScript 客户端 SDK

要做网页 / 桌面控制台(列设备、管脚本、跑 flow、看任务、实时镜像),用 TypeScript SDK aixautots。它是 headless 客户端层:带数据、传输、鉴权,UI 自备。

  • 三个子包aixautots/coreAixClient + 会话层)、aixautots/react(hooks)、aixautots/ui(设备部件)。
  • 资源面devices / scripts / clusters / fleet / tasks / locators / nodes / projects / webhooks / llm / admin,外加会话层 MirrorSession(镜像)/ DeviceChannel(adb/wda/frida)。
  • 运行 flow 两条链路:自家交互式运行走 fleet/api/fleet/runs,可 pause/resume/cancel);第三方 webhook 走 tasks / FlowRun/api/webhook/tasks)。

接入架构(推荐):前端直连 + 后端两件事

消费方后端(薄)                消费方前端(直连 aixautobot)
─────────────────              ──────────────────────────────
POST /mint-token  ──────►       createCachedUserCredential({ mint })
  持 project key/secret,          → <AixProvider config={{ baseUrl, auth }}>
  铸 user JWT 返回                 → useDevices / useScripts / useTasks / useFleetRun / useMirror
POST /provision /destroy
  注入代理策略
  • 鉴权(关键)浏览器不持 project key/secret。消费方后端用 project key/secret 调 /api/auth/project-useruser JWT 返给前端;前端用 createCachedUserCredential 自动缓存/刷新(按 expiresIn 或 JWT exp,并发去重)。浏览器也无需网关 X-API-Key
  • 单用户模型:项目开发者创建 project(拿 key/secret)→ 后端铸 user token → 该 user 用设备。
  • provision/destroy 留后端:起/销设备并注入代理策略属密钥/策略面,不进浏览器 SDK;SDK 只暴露无策略的 devices.power('destroy') 等生命周期。

最小示例(前端:换 token → 列设备 → 跑 flow)

import { AixClient, createCachedUserCredential } from 'aixautots/core'
import { AixProvider, useDevices, useFleetRun } from 'aixautots/react'

const auth = createCachedUserCredential({
  mint: () => fetch('/mint-token').then((r) => r.json()), // 你后端 → { token, expiresIn? }
})
// <AixProvider config={{ baseUrl: 'https://aixautobot.com', auth }}>

function Panel() {
  const { data: devices } = useDevices()
  const run = useFleetRun()
  return (
    <button onClick={() => run.start(flow, [devices![0].id])}>
      Run({run.status} {run.progress}%)
    </button>
  )
}

也可用 { kind: 'project', key, secret } 直连——但仅限服务端 / Node 等可安全持密钥的环境,切勿放进浏览器。完整文档见 aixautots/README.md;桌面端 frontend/ 即是其参考实现。