聊天变成应用的原理
本文解释了「按设备显示稼动率卡片」这样一句话,如何变成已部署的画面。 了解内部原理,就能明白 为什么第一次响应需要几十秒、为什么预览会短暂停顿、 出故障时应该看哪里。
당신 ──① 말한다──▶ 에이전트 ──② 고친다──▶ 프로젝트(진짜 리액트 코드)
│ │
│ ③ 세션 컨테이너가 띄운다
│ └──▶ 프리뷰 (고치는 즉시 반영)
└──④ 스스로 검사한다 (타입 검사 + 화면 보기)
⑤ 배포 ──▶ 버전 보관 ──▶ /container/… (동료가 본다)
一个项目 = 一个 React 项目
工作室生成的不是画面设置值,而是真正的源代码。创建项目时, 服务器内会复制一套 React 项目,之后的对话全部都是修改这些文件的工作。
这就是与无代码工具的分歧点。
| 画面设置型工具 | 工作室 | |
|---|---|---|
| 生成的东西 | 设置值 | React 源码 |
| 要求工具做不到的事时 | 卡住 | 写代码即可,通常能做到 |
| 对话历史 | 独立 | 每轮自动提交——可回退 |
代理每完成一轮,都会自动提交。因此,不喜欢的更改可以 恢复到之前的状态,并且会记录什么在何时发生了变更。 如果想先审查再接受,请使用审查模式—— 使用构建器开发应用
① 对话——有两种模式
同一个聊天窗口,但做的事不同。
| 模式 | 做的事 | 会修改应用吗 |
|---|---|---|
| 查询 | 读取平台数据,以表格·图表回答 | 否(只读) |
| 构建器 | 修改项目代码来创建画面 | 是 |
「昨天3号线报警有几条?」是查询,「把它做成画面」才开始是构建器。 → 通过聊天查询数据 · 从首页创建应用
② 修改——代理能用的工具是有限的
代理不会随意行事。只使用规定的工具。
| 工具 | 做的事 | 设置的围栏 |
|---|---|---|
| 文件读取·写入·列表 | 修改项目源码 | 不能超出该项目文件夹 |
| 命令执行 | 包安装·构建 | 只在会话容器内运行(不是服务器 Shell) |
| 平台查询 | 读取设备·标签·报警 | 只能读取只读列表中的内容 |
🔴 代理没有服务器 Shell。 命令在该项目的容器内运行, 文件工具无法离开该项目文件夹。即使应用创建错误,也不会影响其他项目或服务器。
③ 预览——每个项目启动一个容器
打开项目时,会启动一个该项目专用的容器,开发服务器在其中运行。 预览画面直接显示该开发服务器,所以代理修改文件的瞬间就会反映出来。
| 默认值 | 为什么 | |
|---|---|---|
| 容器内存 | 2 GB | 1 GB 会导致包含3D 部件的应用构建因内存不足而崩溃(实测) |
| 空闲停止 | 30分钟 | 防止不使用的项目持续占用内存 |
30分钟不使用会关闭容器,但项目文件与对话历史都保留。 重新打开时容器会再次启动——所以很久没打开的项目首次画面会慢。
同时能启动多少个,直接决定了服务器内存需求 → 安装要求
④ 自行检查——所以首次响应很慢
代理修改文件后不会立刻结束。
- 运行类型检查。失败时,它会自己读取错误信息并再次修改。
- 然后实际显示画面。查看渲染结果,找出偏差之处。
一次请求中,这种往返最多发生 24 次。这就是「为什么这么慢」的答案, 同时也是能一次就得到可用画面的原因。
画面较大时,不要立即开始创建,先获取方案会更快——先以列表形式查看 要放置哪些部件及使用哪些数据,修正后再创建,可以减少往返次数。
⑤ 部署——预览与部署是不同的
预览是开发服务器,部署是构建后的产物。同事看到的是部署版本。
| 预览 | 部署版本 | |
|---|---|---|
| 谁看 | 创建者 | 收到链接的人 |
| 何时更新 | 代理修改的瞬间 | 仅在点击部署时 |
| 地址 | /preview/… | /container/… |
部署后会累积版本(默认保留10个)。若新部署有误,可回退到之前的版本。
🔴 私有应用只有所有者·管理员·被共享者才能打开。即使知道链接也无法打开—— 必须指定共享对象。 → 应用目录与共享
出故障时应该看哪里
| 症状 | 首先查看的地方 |
|---|---|
| 聊天无法回答 | AI 提供商设置——环境设置 |
| 预览不显示 | 会话容器——关闭项目后重新打开 |
| 数据为空 | 平台连接·API 密钥——环境设置 |
| 只有部署版本是旧画面 | 未点击部署。 预览与部署不同 |
更多内容请参见问题解决。