关于

richbay.org 是怎样建成的:一个由 AI 智能体开发和维护的 2,800 页三语网站

一个 AI 构建的资料型网站背后的架构、工作流程和踩过的坑。

数据截至 2026 年 10 月。

概览

richbay.org 是一个基于各国政府官方来源的资料网站,用来比较国家、城市、签证、大学和生活成本。从 2026 年 5 月 3 日的空仓库开始,大约五个半月后达到下面的规模:

国家中心
已发布 51 个(目录共 100 个国家/地区)
城市页
405 个,其中 41 篇深度生活指南
签证路线
64 条
大学
160 个详情页,收录 3,385 所
监控的官方来源
109 个,覆盖 55 个国家/地区
语言
英文、中文、日文
sitemap 中的 URL
约 2,800 个
提交
约 2,400 次,约 290 个版本

几乎所有代码和内容都由 AI 编程智能体编写,由一个小团队在开发会话中指导完成。这种做法常被叫作 vibe coding。但让它真正跑起来的不是"感觉",而是写成文字的规则、会拒绝已知错误上线的自动检查,以及"看线上页面,而不是相信改动"的习惯。

分工

团队 决定做什么、不做什么,制定规则,并抽查内容和决策。

AI 编程智能体 编写代码和内容,运行测试和检查,部署,核对线上网站,并把学到的东西写下来留给下一次会话。

AI 智能体不会记得之前的会话。所有经验都必须写进文件,由下一次会话先读。

技术栈

层选择原因
框架Astro 5,绝大多数页面预渲染以静态页为主,外加少量服务端接口
语言全部 TypeScript类型检查是 AI 代码的第一位审查者
样式Tailwind CSS 4便于智能体保持风格一致
托管Cloudflare Workers + Static Assets静态页和服务端路由一次部署
数据库Cloudflare D1 (SQLite)用户保存的内容、候补名单、维护计划
CI/CDGitHub Actions每次推送到生产分支自动部署;每日维护
测试Vitest

架构

  1. 各国政府官方来源
  2. 仓库中的类型化数据文件
  3. 构建 + 检查
  4. 预渲染页面 · en / zh / ja
  5. Cloudflare Worker
  • 每日维护任务 → 更新数据、检查链接
  • 数据文件 → 单向同步 → Cloudflare D1 → Worker

数据放在代码里,而不是 CMS 里。所有发布的事实(国家、城市、签证路线、税率、节假日、大学)都保存在仓库中的 TypeScript 类型化文件里,这是唯一的数据源,数据库只接收单向副本。每一次事实修改都是一个可审查的 diff,很适合 AI 智能体工作。每个数据点都能追溯到登记过的来源,页面链接到官方来源,而不是自称官方。

以国家为中心。每个国家中心有五大支柱:生活、工作、移民、教育、商业。新增国家或主题只需追加数据,路由、导航和 sitemap 会自动跟上,不用改布局代码。

多语言。英文在根路径,中文和日文分别在 /zh/ 和 /ja/。所有翻译文本都按语言键存储,新增语言只是加一个键,不需要改代码结构。

工作流程

  1. 在开发分支上工作
  2. 测试和检查通过
  3. 合并到生产分支
  4. 自动部署
  5. 检查线上页面
  • 每次部署都会运行类型检查、翻译审计、数据校验,以及一组针对性的质量检查。每一项检查都是在真实出过错之后才加上的。任何一项不通过,就不会上线。
  • 部署后,智能体会确认线上运行的版本正是自己推送的那个。推送成功不等于部署成功。
  • 每日维护无需人工。定时任务会更新汇率和公共节假日、检查外链、重新生成目录。如果生成的文件突然大幅变小、没通过合理性检查,或导致类型检查失败,改动会被撤回,而不是提交。

踩过的坑,以及我们的改变

这是最有用的部分,每一条都变成了一条规则或一项检查。

  • 超出托管平台的限制。 网站最初所在的平台对单次部署的文件数有上限,三种语言加上几百个实体很快超出,于是迁到了 Workers。
  • 从未生效的重定向。 写在框架中间件里的重定向,在预渲染页面上悄无声息地失效了。现在重定向放在 CDN 层。
  • 页面返回 404,而不是按需渲染。 预渲染路由只服务构建时列出的路径。"服务器会兜底"是一个错误的假设。
  • 缺失的翻译通过了类型检查。 一个类型过宽的数据表允许缺少某种语言,结果部分页面在其他语言下显示了英文。更严格的类型和一个检测脚本解决了这个问题。
  • 被翻译的键。 机器翻译曾把数据标识符和正文一起翻译,导致内容悄悄消失。现在有一项检查会比较各语言的结构是否一致。
  • 检查全绿,页面却是坏的。 检查通过不代表页面看起来正确。现在的规则是:每次改动后都看一眼渲染出来的页面。
  • 有来源链接,不等于有来源。 我们随机抽了 30 个数值,逐一核对旁边的来源链接。能打开的 22 个链接里,没有一个和数值矛盾,但有 9 个指向机构首页,在那里找不到这个数值。读者点开"来源"却看不到数字,就是被辜负了。我们的方法说明页现在如实写明了这些链接能做到哪一步。
  • 页面更多,流量没有更多。 对年轻的网站来说,瓶颈是权威度,不是页数。我们不再为了数量而加页面。

给今天起步的人的建议

  1. 从第一天起就把规则写下来。 智能体会忘记,文件不会。
  2. 把每个重复出现的错误变成自动检查,而不是一句提醒。
  3. 把数据放进有版本控制的类型化文件。 diff 是最便宜的审查方式。
  4. 核对线上网站,而不是推送结果。 静默失败才是常态。
  5. 由人来决定不做什么。 智能体什么都乐意做。

想把 AI 用好?

richbay.ai 是 AI 实践工坊:做一道挑战,查看真实输出,带走一个用得上的方法。无需注册。

去 richbay.ai 试做挑战