Fix with AI:发布失败时一键修复
在 Mythex 上发布失败时,发布对话框现在会告诉你实际发生了什么,并且每次失败都提供两个按钮:Fix with AI 和 Try again。Fix with AI 会把失败信息以及你的应用输出的内容交给代理,让它修复项目并重新发布;如果你的应用本身没有问题,它就直接重新发布。我们也不再把实际出在应用里的问题都归咎于「我们这边」,并开始能发现那些上线几分钟后才出问题的应用。
有什么变化
每种失败都提供 Fix with AI
以前,有些失败会显示 Fix with AI,另一些只显示 Try again。这种区分取决于错误看起来是不是「我们这边」的问题:如果像是我们的问题,我们不希望代理在没有问题的代码上白白消耗你的积分。
这样一来,你得自己判断遇到的是哪一类失败。现在每次失败都会提供两个按钮。代理会拿到失败的类型以及背后的输出:如果应用有问题,它就修复应用;如果没有问题,它就重新发布。你不必去判断是哪种情况。
例外是那些答案不是代码的情况。链接名已被占用时,系统会建议其他名称;积分用完时,系统会提供获取更多积分的途径。
说明发生了什么的提示
过去,有几种失败最终只会显示「我们这边出了问题,请重新发布」,这并不真实,而且重新发布从来没有用。现在它们各自有了专门的提示:
- 「你的应用在发布后没有启动。」 应用已经发布,但从未开始接受连接。最常见的原因是它监听了其他端口,或者只监听了
localhost。已发布的应用必须监听0.0.0.0以及$PORT中指定的端口。我们现在不再固定等待一段时间后碰运气,而是会检查应用是否真的在其端口上接受连接。 - 「文件太大」/ 文件数量过多。 静态站点对单个文件有大小限制(取决于站点类型,约为 25–30 MB),并且文件总数上限为 20,000 个。我们现在会在上传前统一测量文件夹,对所有类型的文件采用同样的方式检查,提示会列出所有超出限制的文件。
- 「你的应用启动后马上停止了。」 通常是缺少设置,例如环境变量或密钥,或者在第一个请求时崩溃,又或者启动命令有错误。
发现上线后出问题的应用
发布可能成功,但应用在几分钟后才失败:它不断崩溃,或者虽然在运行却不再接受连接。Mythex 会定期检查已发布的应用。如果应用在几分钟内反复崩溃,或者运行着却没有任何连接,这次发布就会被标记为失败,你会收到一封邮件,项目里也会显示该提示以及 Fix with AI。
如果应用崩溃一次后自行恢复,这不算一次失败的发布。如果原因是应用内存耗尽,你会另外收到一封关于内存的邮件。
当我们把一个正在上线的应用标记为失败时,也会保存那一刻应用打印的内容。你不会看到这些原始输出,但它是 Fix with AI 交给代理的材料,因此代理会从真实的错误出发,而不是凭猜测。
如何使用
- 像平常一样点击 Publish。
- 如果失败,请阅读对话框中的提示。它会告诉你发生了什么,而不只是告诉你出了问题。
- 点击 Fix with AI。代理会读取构建输出或应用日志,修复项目,然后你就可以重新发布。
- 如果提示说你的应用没有问题,例如「发布暂时繁忙」或「发布被中断」,通常点 Try again 就够了。
- 如果你收到邮件说在线应用一直在崩溃,请打开项目:同样的提示和 Fix with AI 都在那里等着你。
重新发布时请保持相同的链接名,除非提示说明是名称的问题。
为什么要做这个
发布失败通常是一个人遇到的第一道真正的障碍。应用在预览中运行正常,他们点击发布,结果没有起来。对于不是开发者的人来说,「查看你的日志」并不是他们能够执行的建议。Fix with AI 把这一刻变成一次点击,而诚实的提示意味着当你阅读它们时,它们指向的是正确的问题。
限制
- Fix with AI 会使用代理,因此和其他消息一样会消耗积分。
- 它可以修复项目中的内容:代码、配置、启动命令。它无法修复已被占用的链接名、未验证的邮箱或积分余额为零的情况。
- 有些问题需要你做决定,例如是否把一个大文件移到 Storage 中,或者把它压缩得更小。
每条提示以及对应的处理方法都记录在文档中:发布故障排查。关于在事情出错时修复问题的更广泛技能,请参阅 如何调试 AI 构建的应用。