构建、远程 Runtime target 与 Player
最后一课把“在开发机上能跑”变成“在目标机和运行终端上可验收”。AI 负责检查本地工程和构建问题;你负责运行目标账户、远程部署、启动和 Player 绑定。
本节目标
- 理解构建、Runtime target、部署和 Player 的区别
- 让 AI 做交付前工程检查
- 人工恢复并确认关键超时参数
- 连接远程 RuntimeHost,并按目标 RID 构建
- 启动时自动上传 runtime package
- 在 Player 中选择页面并形成终端绑定
只需要先懂四个概念
| 概念 | 作用 |
|---|---|
| 构建(Build) | 把 Page Method、Graph、自定义代码和 PLC 等源码准备成目标机可加载的运行包。 |
| Runtime target | 当前编辑器要部署、运行、调试和管理的 RuntimeHost。默认是本机,也可以是远程目标。 |
| 部署 | 把桌面端生成的运行包上传到当前 Runtime target。标题栏没有单独的部署按钮;开始和调试会先完成必要构建与上传。 |
| Player | 只承载运行页的终端壳,不包含编辑器,也不在本地构建工程。 |
开始前
- 已完成模拟对象、Graph 与调试。
- 远程机器上的 RuntimeHost 可访问,并已准备受信任的 HTTPS 地址;远程部署、调试、停止等受保护管理操作要求 HTTPS。
- 你有目标机的 Runtime target 管理员账户,或当前 Qixin 登录已绑定该目标管理员。
- 目标终端已安装 Theseus Player;Windows 还需要可用的 Microsoft Edge WebView2 Runtime。
第 1 步:让 AI 做交付前检查
先保持 App 为已停止,并在 Git 面板或任务详情中记下当前已有改动。在 AI Command Center 中选择 qxauto,并引用首页、包装工作站 Graph 和模拟对象脚本(如果存在)。发送:
目标:对当前“包装工作站”App 做交付前检查,并修复仅限本地工程的阻塞问题。
检查范围:
- 首页是否存在,Page Method、Widget 表达式和对象引用是否有效
- 包装工作站 Object 描述和 Graph 绑定是否清楚
- Graph 的 Success、Timeout、Init、Dispose 路径是否完整
- 当前 Page 和 Graph 诊断
- 应用构建诊断;只有 App 处于已停止或可构建的错误状态时才执行
允许:
- 修复为了通过诊断和构建所必需的当前 App 源文件问题
- 修复后重复校验和构建,直到成功或报告明确阻塞
禁止:
- 不连接、添加或切换 Runtime target
- 不部署、不开始、调试或停止远端 App
- 不修改目标账户、许可证、证书、Player 设置、PLC 地址、Pulsar 或 Safety
- 不隐藏错误,不做宽泛 fallback
输出:
- 修改文件清单
- 诊断与构建结果
- 首页、对象、Graph 和超时参数的交付检查表
- 仍需人工确认的项目
AI 的正确结果通常是“没有新增功能,诊断和构建通过,并列出人工确认项”。如果它建议改工艺或 Safety,先停止执行并交给负责工程师评审。
AI 预期影响面
- 没有阻塞时,可以不修改任何文件。
- 有源码诊断时,只应修改已确认的 Page、Graph、模拟对象或相关 i18n。
- AI 可以运行应用构建,但不能替你连接远程目标、上传、启动、停止或配置 Player。
构建成功只证明工程产物可以生成,不证明现场工艺和安全正确。
人工微调:恢复可交付超时
上一课为了演练 Timeout,把对象的 cycleTimeoutMs 覆盖成了 500 ms。交付前由你恢复:
- 在 资源(Resources)→ 对象(Objects) 中选择包装工作站对象。
- 把
cycleTimeoutMs的对象覆盖值改回3000,或清除覆盖以使用 Graph 默认值 3000。 - 保存对象配置。
- 再运行一次本机调试的正常分支,确认周期成功后点击停止。
这是有意保留给人的决定:参数值来自工艺和现场验证,不能只因为 AI 生成过就直接发布。
第 2 步:添加并连接远程 Runtime target
- 点击编辑器标题栏运行控制组左侧的当前 Runtime target 名称。
- 在 管理运行目标 中点击 新增运行目标。
- 填写目标名称和 访问地址。地址不要包含
/api;生产环境使用完整 HTTPS origin,例如https://runtime.example.com。 - 点击 保存。
- 对新目标点击 检查,确认显示“可访问”和目标 RID。
- 点击 连接,按界面提示使用当前登录或目标账户完成初始化/登录。
- 使用有管理权限的账户完成连接,确认目标显示“已选”。
切换目标只改变当前桌面进程的执行目标,不会把开发者登录、文件、Git、AI 或 LSP 改连远端。
第 3 步:按目标构建并启动
- 确认标题栏显示远程目标名称和云图标。
- 确认 App 为 已停止,所有文件已保存。
- 点击构建。桌面端会读取远端报告的目标平台,并按目标 RID 生成需要的平台产物。
- 等待构建成功;若失败,打开底部 问题(Problems) 修复后重试。
- 点击 开始。
开始会再次检查必要产物,创建 deploy package,上传到当前 RuntimeHost,然后运行已部署 App。第一次部署时,远端目标原本没有这个 App 是正常的;仅仅打开编辑器不会自动上传。
等待标题栏状态变为 运行中,再进入 Player 验收。
第 4 步:在 Player 中绑定运行页
- 启动 Theseus Player。
- 在 RuntimeHost 地址 中输入完整 origin,例如
https://runtime.example.com或局域网测试地址http://192.168.1.10:9210。不要填写/api或具体页面路径。 - 选择终端界面语言,点击 继续。
- 在 Player 内的运行界面完成 Runtime target 初始化或账户登录。
- 在运行态应用列表中打开“包装工作站”。如页面有角色限制,再使用对应的 App 用户登录。
- 打开首页后,Player 会记录同源的
/apps/{appId}/pages/{pageId}路径,并把当前终端绑定到该运行页。 - 退出并重新启动 Player,确认它直接回到绑定的包装工作站首页。
Player 的 Runtime target 账户和 App 用户是两层身份:前者决定能否访问目标上的应用列表,后者决定能否进入受角色保护的具体页面。
交付验收清单
- 远程目标显示可访问、已选和正确 RID
-
cycleTimeoutMs已由工程人员恢复并确认 - Page / Graph 诊断无错误
- 目标 RID 的构建成功
- 点击开始后远程 App 进入运行中
- Player 能登录、看到包装工作站并打开首页
- Player 重启后直接返回绑定页面
- 正常包装周期、Fault 和 ResetFault 都经过终端验收
- 现场账户、证书、许可证、网络和备份策略已由负责人确认
安全边界
AI 不应自动选择生产 Runtime target、输入账户或密钥、批准证书、部署、启动、停止或确认 Safety。所有会改变远端运行状态的操作都由有权限的人执行并记录。
- HTTP 可用于受控局域网运行页测试,但远程管理操作要求 HTTPS。
- Player 是运行终端,不是工程备份,也不包含构建工具。
- 模拟对象部署到远端仍只是模拟器;接真实设备前必须重新完成设备语义、联锁和现场验证。
- 不要把“构建成功”当作生产放行结论。
出问题时怎么恢复
| 症状 | 检查和恢复 |
|---|---|
| 目标检查失败 | 检查 origin、DNS/IP、端口、网络和 RuntimeHost;地址不要包含 /api。 |
| 目标可访问但不能连接 | 检查目标是否已初始化、账户权限和 HTTPS;使用管理员完成部署所需授权。 |
| 构建失败 | 保持 App 已停止,查看问题面板;让 AI 先做只读原因分析,再确认最小修复。 |
| 开始后提示未部署或上传失败 | 确认当前选中的是目标远端、账户有管理权限、HTTPS 可用,然后重新点击开始。 |
| Player 看不到 App | 确认桌面端已把同一 App 部署并启动到 Player 所连接的 RuntimeHost。 |
| Player 提示未配置首页 | 回到编辑器资源视图,右键 packaging-station 并选择设为首页,再重新部署启动。 |
| Player 无法加载 WebView | Windows 安装 WebView2 Runtime;其他平台检查 Player 支持和网络权限。 |
| 需要更换终端绑定 | 在 Player 的错误/配置入口选择 重新配置,输入正确 RuntimeHost 后重新选择应用页面。 |
到这里,你已经完成了完整的 AI 主导闭环:表达目标、检查 AI 产物、人工微调、调试验证、按目标构建、远程启动和 Player 交付。