Reflex Build 应用分享(Share App)完整指南:只读预览链接、可见性控制与生产部署的边界
在 Reflex Build 的 AI 应用构建工作流中,Share(分享) 是应用生命周期中一个轻量而关键的环节:它生成一条指向应用某次生成(generation)只读视图的链接,用于在正式部署前收集反馈与开展演示。本指南以 docs/ai_builder/app_lifecycle/share_app.md 为主线,结合 Reflex 平台的可见性设置、项目权限体系与部署/复制/下载/Fork 等相邻工作流,完整讲解"何时分享、如何分享、分享后接收者能做什么、何时应该改用部署",帮助你在团队协作与对外演示中正确使用分享能力,同时避免密钥泄露与越权访问。
Share 的定位:生成级只读预览,而非生产入口
Reflex Build 中,每个应用都由 AI Agent 基于提示词持续迭代生成。Share 动作创建的链接,指向的是应用某一次生成的只读视图,它的核心用途有两个:
- 反馈收集:把当前生成结果发给评审人,让他们查看并交互,再据此给出修改意见;
- 演示:在应用尚未达到生产部署标准时,向利益相关方展示进展。
它与 Deploy App(部署)有本质区别:部署会把当前应用发布到 Reflex Cloud 或所连接的云厂商,获得生产 URL 与生产级配置;而分享只提供一个预览入口,不涉及生产环境、域名、机器规格或环境变量。正如原文档所强调的:当需要生产 URL 和生产配置时,请改用部署(deployment)。
理解这一点后,可以把 Share 放在整个应用生命周期中看待:Reflex Build 生成的是一份标准 Reflex 项目源码(参见 What Is Reflex Build),你可以对它进行 下载、复制、Fork、部署 或分享——它们各自服务于不同的协作与发布场景。
分享前置条件:先确认 App Visibility
Share 动作只对公共(Public)应用可用。 因此在点击分享之前,必须先检查应用的可见性设置。
打开应用的更多菜单(more menu),选择 Settings,在设置页中查看 App Visibility(应用可见性)。Reflex 提供两种可见性(参见 General App Settings):
| 可见性 | 含义 | 分享能力 |
|---|---|---|
| Public(公共) | 应用可以通过只读链接被分享 | ✅ 支持 Share |
| Private(私有) | 仅限拥有项目访问权限的人打开 | ❌ 不支持 Share |
私有应用的访问边界由项目权限体系控制:组织管理员可打开所有项目;团队成员继承团队被授予的项目角色;经理和普通成员只有被显式加入项目后才能访问(详见 Managing Project Access)。因此,私有应用天然停留在"项目内可见"的状态,无法对外生成分享链接。
把应用从 Private 切换为 Public 之前,请先完成下面一节的安全检查。
分享前的安全检查:密钥、个人数据与未完成内容
原文档明确要求:在改变应用可见性之前,先审查应用中是否包含密钥(secrets)、个人数据(personal data)以及未完成的内容(unfinished content)。
这一要求与 Reflex 平台的秘密管理实践一脉相承:
- Reflex 建议将凭据存放在 Secrets 或集成(Integrations)中,而不是写在提示词或源码里(参见 What Is Reflex Build 中的集成与安全说明);
- 下载源码导出时,Secrets 与集成凭据不属于可移植的源码导出内容,需要在目标环境单独配置(参见 Download App);
- 项目中的 Secrets 值默认只有项目 Admin 角色可以查看(参见 Roles & Permissions)。
分享链接将把应用的只读视图暴露给链接持有者,其暴露面大于项目内的正常协作。因此,切到 Public 前应逐项确认:
- 应用中没有硬编码的 API Key、访问令牌或数据库连接串;
- 没有真实用户邮箱、手机号、地址等个人数据,或已替换为示例数据;
- 没有正在编辑的半成品页面、明显的 TODO 占位或调试输出;
- 数据与行为符合"只读对外可见"的预期,而非内部操作入口。
如果你不确定应用当前状态,可先用 Security Scanner 在项目侧边栏运行检查(reflex cloud scan),它会扫描依赖风险、暴露的密钥与 Reflex 特定安全问题,再决定是否公开可见性。
分享一个 Public 应用:三步操作
当应用已是 Public 且通过安全审查后,分享操作本身非常简洁:
- 打开 Deploy 旁边的菜单:在应用界面的右上角区域,找到 Deploy(部署)按钮旁的下拉菜单;
- 选择 Share:从菜单中选择 Share 动作;
- 复制生成的链接:复制分享链接,发送给预期的评审人(intended reviewers)。
整个流程不涉及域名、机器规格或部署配置——它只是生成一条只读预览链接。这一点与部署流程形成鲜明对比:部署时你需要在对话框中检查工作区资源配额、应用名称与生成主机名、托管提供商、区域与机器规格、应用 Secrets 与环境变量,甚至可能触发部署审批(详见 Deploy App 与 Project Approvals)。
接收者的能力边界:可查看、可交互、不可编辑
分享链接的接收者拥有一个明确限定的权限集:
- 可以查看:看到应用当前生成的只读视图;
- 可以交互:与预览中的应用进行交互(例如填写表单、触发事件等前端交互);
- 不可以编辑:无法修改源码应用(source app)。
从源码结构看,Reflex 应用的前端交互最终通过事件(event)处理机制驱动后端状态变更(核心实现在 reflex/event.py 与 reflex/state.py 中),但分享链接的接收者没有 Builder 中的源码编辑能力,也没有项目内 Editor 角色所拥有的"创建/编辑应用"权限(参见 Roles & Permissions 中项目角色能力对比表)。这意味着分享是一种"展示型"而非"协作编辑型"的协作方式——需要多人共同修改应用时,应使用项目内的成员/团队访问控制,而不是分享链接。
Share 与相邻工作流的边界:何时用哪个
分享、部署、复制、Fork、下载在 Reflex Build 中容易混淆,它们的适用场景可以这样区分:
| 动作 | 产出 | 适用场景 | 权限要求 |
|---|---|---|---|
| Share(分享) | 只读预览链接 | 生产部署前的反馈收集与演示 | 应用需为 Public |
| Deploy(部署) | 生产 URL 与生产配置 | 需要正式发布、域名与生产环境 | 项目内 Editor/Admin 及审批策略 |
| Copy(复制) | 独立的新应用副本 | 尝试重大改动而不影响原应用,或复用起点(详见 Copy App) | 拥有源应用 |
| Fork(Fork) | 从他人公共应用/模板创建独立应用 | 基于他人可见的公共应用或模板起步(详见 Fork App) | 取决于你的套餐与源应用可见性 |
| Download(下载) | 一次性源码导出归档 | 本地开发或自托管(详见 Download App) | 项目内相应角色 |
关键决策原则:
- 只想让人看看并给反馈 → Share;
- 需要生产 URL 和生产配置 → Deploy;
- 需要基于现有应用独立演进(属于自己的应用)→ Copy;
- 需要基于他人公共应用或模板起步 → Fork;
- 需要把源码带到本地或其他环境继续开发 → Download。
分享与其他公开渠道的关系:模板与 Fork 的可见性
理解 Share 的只读边界后,还应留意 Reflex 中"公开"的另外两个形态,避免混淆:
- Template(模板):应用可以被保存为项目级或组织级的模板,供团队成员在 Builder 的 Templates 页中作为起点使用(详见 Templates)。模板面向"复用起点",分享则面向"查看当前生成结果";
- Fork:他人的 Public 应用可以被 Fork 成你自己的独立应用。这意味着公开应用不仅可被"看",还可能被他人 Fork——这也进一步说明分享/公开之前做安全审查的重要性:一旦可见性为 Public,代码与数据就超出了项目访问控制的保护范围。
从 Fork App 可知,你的套餐可能限制 Fork 非模板的公共应用;如果 Fork 不可用,应检查应用可见性与套餐限制。这些机制共同构成 Reflex Build 中"公开可见"的完整图景。
最佳实践总结
结合原文档与 Reflex 平台的访问控制设计,推荐以下实践:
- 保持 Private 优先:默认让应用保持 Private,仅在需要对外演示或收集反馈时临时切换为 Public,完成后可考虑改回;
- 分享前执行安全清单:检查 Secrets、个人数据、未完成内容,必要时运行
reflex cloud scan(见 Security Scanner); - 把凭据放在 Secrets,而非源码:这样即使应用被分享或被 Fork,也不至于连带泄露凭据;
- 明确区分分享与部署:分享链接不能替代生产部署;需要生产 URL、生产配置、日志与回滚能力时,走 Deploy App 流程;
- 团队协作使用项目权限:需要多人编辑时,通过 Managing Project Access 添加成员并分配 Viewer/Editor/Admin 角色,而不是依赖分享链接。
小结
Share 是 Reflex Build 应用生命周期中"对外展示"的最小闭环:前置条件是 Public 可见性,核心操作是三步生成只读链接,能力边界是"可查看、可交互、不可编辑",而生产发布则必须交给 Deploy。掌握好 Share 与 Deploy、Copy、Fork、Download 的边界,并严格执行分享前的安全审查,就能让分享成为高效的反馈与演示工具,而不是敏感信息外泄的入口。
atomcodeClaude Code 的开源替代方案。连接任意大模型,编辑代码,运行命令,自动验证 — 全自动执行。用 Rust 构建,极致性能。 | An open-source alternative to Claude Code. Connect any LLM, edit code, run commands, and verify changes — autonomously. Built in Rust for speed. Get StartedRust0631
MiniCPM5-2BMiniCPM5-2B 是一款面向端侧、本地部署和资源受限场景的 2B 稠密 Transformer,能够达到同尺寸开源模型 SOTA 水平。Markdown00
video-shotcraftAI宣传片skill,使用 Remotion 制作电影级产品视频:提供106 张镜头配方卡和可复用的视频魔板。适用于 Claude Code 与 Codex以及所有其他智能体Markdown00
HivisionIDPhotos⚡️HivisionIDPhotos: a lightweight and efficient AI ID photos tools. 一个轻量级的AI证件照制作算法。Python09
DragonOSDragonOS is an operating system developed from scratch using Rust, with Linux compatibility. It is designed for **Serverless** scenarios. 使用Rust从0自研内核,具有Linux兼容性的操作系统,面向云计算Serverless场景而设计。Rust00
Spark-X2.5-1.7BSpark-X2.5-1.7B 旨在让强大的 AI 更加实用、高效且易于获取。这些模型在广泛的日常任务中表现出色,涵盖对话、写作、翻译、推理、编程、工具调用和智能体工作流,并在同等规模的开源模型中取得领先结果。Spark-X2.5 将面向效率的架构与最高 1M tokens 的原生上下文窗口相结合,并支持 200 多种语言。Python00