把 AirApp 发布成网站
用「网站」引擎把 AirApp 发布到一个一直在线的公开地址,并让网站用 Busabase API 读写工作区。
AirApp 的其他三种运行引擎(浏览器内、本机、云端沙箱)都是临时运行:有人打开应用时才跑起来。网站引擎不一样:上线后,应用会一直在线,有一个固定地址,不用登录就能打开。店铺、落地页、询盘表单这类要给外面的人看的页面,就用它。
网站可以有页面,也可以有自己的后端接口,跑在 Cloudflare Workers 上。
开始之前
- 套餐: 云端版需要 Plus 及以上。免费版的下拉框里,「网站」会显示升级提示。
- 自建版: 需要管理员先配置网站引擎,没配置时「网站」灰显,并写明原因。自建版不限套餐,但要有有效授权。
- 应用本身: 应用的
airapp.json要写明使用网站引擎。让你的 Agent 按busabase-app-creatorskill 写,它知道该怎么写。
预览和上线
- 运行: 打开应用。用网站引擎运行,得到的是预览:只有工作区成员能看,外面的人打不开。
- 上线: 预览没问题,点工具栏的上线。上线的是你刚才预览的那个版本,状态变成已上线。
- 改了文件: 文件改过以后,要先重新运行,看过新的预览,再点上线。否则会提示「预览之后文件又改过了。请重新运行,再上线。」,线上还是旧版本。
上线后,工具栏如果显示有未发布的修改,说明预览比线上新。
地址和公开开关
在应用的设置里可以看到网站的地址和公开开关:
- 公开打开: 任何人打开这个地址都能访问。
- 公开关闭: 立刻下线,这个地址显示找不到页面。再打开就恢复,不用重新上线。
- 移到回收站: 网站自动下线。从回收站恢复后,可以再打开公开开关。
- 永久删除: 网站和它的地址一起删除。
让网站读写 Base
网站的后端(Worker)用 Busabase API 读写工作区,跟 Agent、CLI、SDK 用的是同一套接口和权限。
网站拿到的密钥
每次运行或上线,Busabase 都会给网站生成一把 API 密钥:
- 代表谁: 上线的版本代表点上线的那个人,预览代表运行预览的那位成员。网站能做的事,不会超过这个人自己在工作区里能做的。
- 能做什么: 由应用
airapp.json里写的级别决定:只读(默认)、提交变更请求、写入。点上线就生效,不需要另外批准。 - 在哪有效: 只在这个工作区。拿它去访问这个人的其它工作区会被拒绝,也读不到他个人保险库里的值。
- 在哪看: 它出现在这个人的 API 密钥列表里,名字是「Site: 应用名」,预览的是「Site preview: 应用名」。在列表里删掉它,网站就不能再读写,下次上线会重新生成。
预览用的是另一把同级别的密钥,读写的是工作区里的真实数据,跟其它运行引擎一样。
什么时候停
- 关掉公开开关,或者把应用移到回收站: 上线版本的密钥立刻停用;再打开公开开关就恢复。
- 永久删除应用: 密钥一起删除。
- 上线那个人离开工作区: 密钥失效,请有权限的人重新运行,再上线。
- 每次上线: 换一把新密钥,旧的作废。
网站做的修改和其它 API 写入一样走变更请求,历史里会显示是这把密钥做的。
网站代码决定陌生人能碰到什么
这把密钥能读写上线人在这个工作区里、按级别能读写的所有内容,不只是网站用到的那几张表。陌生人拿不到密钥,只能通过网站开放的接口间接用到它。所以请让 Agent 按 busabase-app-creator skill 写网站:只开放具体的接口,不把访客的请求原样转发给 API。用不到写入,就保持只读。公开表单还没有验证码,可能被人刷。