“帮我做个文章网站,剩下的交给你!”
AI 很勤快:文章、多语言、相关文章、搜索、质量检查、安全检查、自动修复,统统加上。原本的小摊成了拥有翻译部、质检部、审计部和“逗号审批委员会”的大型工厂。出货口突然亮起 BUILD FAILED。
AI:“修好了。”下一次还失败;再修,又是另一关。打败一个最终 Boss,就解锁下一个。本文以 Cloudflare Pages 和 Astro 为例解释这种通用现象,不把任何个人网站的真实故障原因当成既定事实。
1. 构建到底在做什么?
Markdown 原稿、图片、样式和代码只是原材料,不一定能直接成为网页。构建(Build)把它们加工成浏览器能显示的页面和文件。Astro 通常把可部署的静态文件生成到 dist 文件夹。[1]
原稿是菜谱,构建是做饭。把生洋葱和菜谱放在桌上说“上菜了”,顾客可不会感动。
2. Cloudflare 负责哪一段?
Cloudflare Pages 可以获取 Git 仓库中的代码,执行项目设定的构建命令,再发布结果。[2] 常见流程是获取源码、准备工具、事前检查、生成页面、检查结果、部署;具体由项目决定。
构建是制造,部署是出货和发布。 构建失败,新版本就无法完成成功的发布。Cloudflare 提供厂房,里面的迷宫式流水线却可能是网站自己的设计。
3. 文章工厂在做网页之前就很忙
普通博客也许只把 Markdown 变成 HTML。自动文章工厂还可能检查能否发布、翻译是否齐全、文章编号与 URL、相关文章、站内链接、搜索数据、标题、图片说明以及广告和安全规则。
每项检查都有道理。问题是,改一个字,全厂就要重新开早会。只想修改标点符号,全体员工却戴着安全帽集合。
4. 页面和语言增加为什么更难?
一万篇文章不代表计算量必然翻一万倍,但文件和连接关系会增多。多语言又增加对应网址和翻译状态。每次把每篇文章都与其他全部文章重新比较,规模大时可能很慢。
最好只计算变化部分、重复使用已有结果,并测量每个环节的耗时。图书馆新增一本书,没必要重排全国书架。
5. 为什么修好一个又出现一个错误?
流程按顺序运行时,前面的错误会挡住后面的错误。修好文章数据,链接检查才开始;修好链接,页面生成才开始;之后搜索索引又可能失败。
这不一定代表每次修复都制造了新问题。 多个旧问题可能一直在排队。修复也确实可能带来回归错误,需要看日志与修改记录。打开一扇门还是一扇门,每扇都写着“最后一关”。
6. 构建失败至少有六类
代码与依赖:语法错误、缺包、版本冲突。输入:文件缺失或格式不对。验证:页面能生成却不满足规则。资源:超时、内存不足、文件数量超限。环境:本地与云端设置不同。部署:生成后检查或上传失败。
Cloudflare Pages 会将构建命令的非零退出码视为失败。[2] 最后一句“Build failed”可能只是结果,不是真正原因。它是侦探小说的封面,不是凶手的口供。
7. 日志该从哪里看?
Cloudflare 部署详情里能打开 Build log。[3] 重点是找到第一个真正失败的步骤,判断属于数据、代码、规则、资源还是环境。能单独重现就别总是全量运行,并区分临时绕过和根本修复。修好后还要验证后续步骤。
“再运行一次”喊上一百遍,缺失的文件也不会自己长出来。
8. Cloudflare 不是只有一个额度
截至 2026 年 10 月 10 日,官方文档列出的 Pages 免费额度为每月 500 次构建、同时 1 次、每次 20 分钟超时,以及每站最多 20,000 个静态文件。[4] HTML 之外,图片和搜索文件也会增加数量。
Workers 的请求量与执行资源是另一套限制。Pages Functions 的请求可能计入 Workers,但Workers 额度用完不等于已经找到了 Pages 构建失败的原因。[4][5] 财务喊“没钱了”,先问清楚到底是哪一个钱包。
9. 高级不等于必要
隐私泄露、严重安全问题、关键页面损坏应该阻止发布。可是相关文章的排序稍有不完美,是否就要让整个网站停工?
把检查分成必须阻止发布、只发警告、另行定期执行三类,以实际风险为标准。如果审计室的门把手有点灰尘就要永久关厂,那是审计部门篡位了。
10. AI 功能膨胀的陷阱
“再优化 SEO”“再加翻译”“防止错误重现”“再加审计”。AI 添加功能非常快。单项看都有用,全部串起来就成了每个部门都盖章才能发布一篇文章。
人类开发也会制造这种技术债,AI 只是加速。使用者不必亲自写懂每行代码,却需要决定哪些风险不能放过、哪些事情可以稍后处理、哪些任务真正相互依赖。叫 AI 扫地,结果成立了扫地机器人监察委员会。地板还脏着。
11. 修复分三步
稳定:暂缓非必要新增,保留最近成功发布的版本,找到第一个失败点,不要随意关闭隐私和安全保护。
拆分:只有必要的页面生成留在每次发布的主流程里;耗时的全站分析和次要检查单独运行。Cloudflare 提供 Build watch paths 和构建缓存,但不会自动将自定义全量脚本变为增量处理。[6][7]
防复发:记录每步耗时、错误类型、文件数量、发布成功率和恢复时间。成功不是“AI 说修好了”,而是新版本确实通过检查并发布。
12. 最终 Boss 可能是工厂的线路
大量多语言文章、链接和质量检查确实很难,但不意味着所有任务都必须塞进同一次构建。要追问为什么一个警告能阻止发布、为什么每次全量计算、哪些工作可以独立继续。
好工厂会拦住危险品、放行安全品,并准确报告哪台机器坏了。
AI:“全部搞定!” 人:“那上线了吗?” AI:“构建失败。”
唯一实现全自动生产的原来是借口。
参考资料(7条)
- Astro Docs, CLI reference: astro build docs.astro.build
- Cloudflare Docs, Build configuration (updated 2026-09-18) developers.cloudflare.com
- Cloudflare Docs, Debugging Pages (updated 2026-06-02) developers.cloudflare.com
- Cloudflare Docs, Pages limits (updated 2026-09-05) developers.cloudflare.com
- Cloudflare Docs, Workers limits (updated 2026-09-05) developers.cloudflare.com
- Cloudflare Docs, Build watch paths (updated 2026-04-21) developers.cloudflare.com
- Cloudflare Docs, Build caching (updated 2026-05-27) developers.cloudflare.com

