用 AI 完成第一个可运行 App
这一课从真正的空白项目开始。你负责创建项目、确认 AI 的修改、选择首页并完成运行验收;AI 负责创建第一张操作员 Page 和多语言文案。
完成后,你会得到名为“包装工作站”的 App。它能显示工作站名称、模拟模式、当前状态和包装计数,但不会控制任何设备。
本节目标
- 在应用中心创建空白项目
- 用 AI 创建并验证第一张
.qpPage - 看懂 AI 修改了哪些资源
- 人工把 Page 设为首页
- 依次在 Design、Preview 和完整运行页中验收
只需要先懂三个概念
| 概念 | 现在只需知道 |
|---|---|
| App | 一个独立 Theseus 工程,包含 Page、Component、Object、QG 和配置。 |
| Page | 操作员在运行终端看到的 HMI 画面,文件扩展名是 .qp。 |
| Component | Page 上的标题、状态文字、数字、按钮等可视元素;可复用的 App 可视组件使用 .qpc。 |
AI Command Center 只能修改当前编辑器窗口绑定的 App,不能替你在应用中心新建、导入或打开项目。
开始前
- 使用 Theseus Desktop;运行页只用于使用已经交付的 App,不提供项目创建和 AI 工程编辑。
- AI 输入区已经能选择模型。若没有可用模型,先完成 AI 提供方设置。
- 准备一个项目父目录;其中可以已有其他内容。
第 1 步:创建“包装工作站”
- 在应用中心选择新建项目。
- App名称填写
包装工作站。 - 在创建位置选择项目父目录。Theseus 会在其中创建
包装工作站子目录。 - 保持包含模块全部不选。
- 点击创建项目。成功后会自动打开一个绑定到新
*.the文件的编辑器窗口。
空白项目只创建基础项目文件,不自带 Page。左侧 Resources → Pages 为空是正常现象。
第 2 步:把目标交给 AI
点击标题栏的 AI 图标,或按 Cmd+I(macOS)/ Ctrl+I(Windows、Linux)。新建对话,在输入区输入 @ 并选择 qxqp,然后发送:
目标:为当前“包装工作站”App 创建第一张可运行的操作员首页。
页面内容:
- 页面标题“包装工作站”
- 明确显示“模拟模式”
- 状态显示“未启动”
- 包装计数显示 0
- 使用清晰、克制、便于现场扫读的布局
范围:
- 新增 pages/packaging-station.qp
- 为页面可见文案补充当前 App 的 i18n.json
- 不修改项目设置、Object、Variable、QG、C# Provider、外部设备、Pulsar 或 Safety
要求:
- 使用当前编辑器支持的原生元素/组件,并保持结构可在 Properties 中检查
- 不生成物理设备动作,也不放置看似能启动真实设备的按钮
- 完成后验证 Page 和 i18n.json
- 最后列出修改文件、主要 Component 和验证结果
这条指令同时说明了目标、范围、禁止项和验收证据。以后交给 AI 的工程任务也尽量保持这个结构。
本节预期的文件改动
发送任务前,先在 Git 或任务详情中记下已有修改。任务详情展示整个当前工作区,不是本轮 AI 任务的独占清单。
本节预期修改以下文件:
pages/packaging-station.qpi18n.json
AI 可能读取其他项目信息来理解当前 App。完成后,将文件清单与任务开始前的基线比较。
如果出现 Object、QG、C# Provider、Pulsar 或其他设备配置改动,先不要运行。让 AI 解释来源;只有确认该项由本轮任务产生且超出范围时,才恢复这一项。不要删除或覆盖任务开始前已存在、来源不明或属于他人的改动。
第 3 步:在编辑器中检查
AI 保存文件后,Resources 会更新:
- 确认 Resources → Pages 出现
packaging-station。 - 双击 Page 并选择 Design,确认画布有标题、模拟模式、状态和计数。
- 选择画布中的 Component,确认右侧 Properties 显示可理解的 ID、内容和布局字段。
- 切到 Source,确认当前文档没有内联诊断。
- 如果使用了 i18n,打开 Settings → I18n 检查本教程需要的中英文文案。
- 对照 AI 最终回复,确认文件清单、主要 Component 和验证结果与编辑器一致。
AI 的显式 Validate 结果留在对话中;实时文档诊断显示在编辑器内联标记中。底部 Problems 只显示最近一次 Build 对已保存工程生成的诊断,工程再次保存后会清除旧 Build 结果;因此在 Build 前不要把空的 Problems 当作完整验证。
如果你在 AI 修改前已打开并手工修改同一 Page,编辑器会保留未保存草稿并提示磁盘冲突。先决定保留哪一份,不要直接覆盖。
人工决定:把 Page 设为首页
- 在 Resources → Pages 中右键
packaging-station。 - 选择设为首页。
- 确认 Page 名称旁出现首页标记。
首页决定 Runtime target 根页面和 Player 最终进入哪张 Page。未配置首页时,Theseus 不会随意选择第一张 Page。
第 4 步:逐级验收
4.1 Build 并检查 Problems
- 保存所有文件,确认 App 为已停止。
- 打开 Build 菜单,选择构建 Debug,等待 Build 和 Deploy 成功。
- 打开底部 Problems,确认本次 Build 没有 Page 或 i18n 错误。
编辑器 Build 只使用已经保存的工程内容,并把完整版本交付到当前 Runtime target。它不会 Start App。
4.2 在编辑器中 Preview
回到 packaging-station,选择 Preview。确认标题、模拟模式、未启动状态和计数 0 都能看到。
Preview 使用当前目标上已部署的版本。它可以从 Stopped 按需进入 Previewing,也可以复用同一 App 已有的 Previewing 实例,但不会复用 Running / Debugging,也不会 Build、Deploy 或进入生命周期。Preview 是编辑器内验证,不是完整运行终端。
4.3 Start 并打开完整运行页
- 点击标题栏的开始(Start),等待状态变为运行中。
- 在浏览器中打开当前 Runtime target 的根地址。本机默认是 http://127.0.0.1:9210/。
- 如有提示,先登录 Runtime target;Page 需要业务角色时,再登录 App 用户。
- 刷新页面,确认仍能回到
packaging-station首页。
完整运行页只使用当前目标上已经交付的版本。若 App 尚未运行,由目标 Admin 在确认现场条件后执行 Start;运行页不会读取工程源码,也不会 Build 或 Deploy。
如果当前 App 和目标没有合适的 Build,Start 或 Debug 会先显示构建并部署当前 App?,不会静默构建。选择构建并继续后,编辑器先 Build / Deploy,再自动重试原操作;选择取消则不 Build,也不继续。Debug 始终要求 Debug Build。
验收清单
- AI 的文件改动符合已经批准的范围
- Design、Properties 和 Source 检查通过
- Page 已保存并设为首页
- Build 成功,Problems 没有本次工程错误
- Preview 内容正确,且没有真实设备动作
- App 进入 Running
- 当前 Runtime target 根页面直接进入同一首页
- 刷新完整运行页后仍能加载
安全边界
这一课只做静态模拟画面。不要把“未启动”替换为真实设备状态,也不要让 AI 猜测外部控制器地址、轴、IO、相机或联锁含义。工程人员明确设备身份和工艺语义后,才能进入 Object 和 QG 设计。
Page 看起来正确不代表设备逻辑正确。运行前仍要人工确认 AI 没有创建隐藏动作或越界文件。
出问题时怎么恢复
| 症状 | 处理 |
|---|---|
| 没有可用模型 | 打开 AI 提供方设置,完成认证或刷新模型列表。 |
| Resources 中没出现新 Page | 在 Files 中确认文件是否存在;先解决未保存冲突,再重新打开。 |
| Page 有内联错误 | 用 @ 引用 pages/packaging-station.qp,要求 AI 只修复当前诊断,不增加功能。 |
| Preview 提示需要 Build | 保存文件,确认 Stopped,再 Build;Preview 不会自行 Build 或 Deploy。 |
| Start 显示构建并部署当前 App? | 核对当前目标、保存状态和 Build profile,再选择构建并继续;也可以取消并手动 Build。 |
| Runtime 根页面提示未配置首页 | 回到 Resources,把目标 Page 设为首页,然后重新 Build / Deploy。 |
| 完整运行页仍是旧内容 | 保存 Page,Stop 后重新 Build,再 Start;刷新浏览器不会部署源码。 |
| AI 似乎修改了 Object、QG 或 C# Provider | 不要 Start。与任务前基线比较并让 AI 解释;只恢复确认由本轮产生的越界改动。 |
下一步
下一课会在这张 Page 上加入页面状态、按钮和事件,并让你亲手完成一次小修改:页面状态、按钮与事件。