五年后再建站:这次我一行代码都没写
五年前,这个博客的第一篇文章叫《终于建站了!》。我在里面认真记录了一个「要成为 CTO 的男人」是怎么手搓网站的:买 Azure VM,在宿主机上装 MySQL,被 bind-address 卡了半天,用 Docker 跑 WordPress,再配 NGINX 反向代理和 Certbot 证书。前前后后折腾了好几个周末,最后感叹一句「Docker 真香」。
五年后,我把这个网站整个重构了一遍。这一次,我一行代码都没写,没登录过一次服务器,也没查过一篇教程。从提出需求到中英双语的新网站上线,用了一个晚上,大约 3.5 个小时,全程就是和一个 AI Agent(GitHub Copilot)聊天。

为什么要重构
WordPress 陪了我五年,问题也很明显:
- 内容资产不安全:所有文章都在 VM 里的 MySQL,数据库一坏,内容就没了。
- 可用性差:一台 B2S 小 VM,挂了就是挂了,也没有 CDN。
- 发文麻烦:现在我的很多想法是和 AI 聊出来的,还得再复制粘贴进 WordPress 后台。
- 不便宜:VM 一个月将近 40 美元,靠公司的 Azure 额度撑着。
现在 AI 写代码这么便宜,我的想法很简单:不需要 CMS 了,网站和内容都放在 GitHub 仓库里,让 AI 直接改网站。
我提的需求
我给 Agent 的第一条消息,就是一份产品经理式的需求:
功能需求
- 发布要方便:以后我在 Muse、Dots 这类 AI 应用里聊出一篇内容,说一句就能发出去。
- 支持评论,但必须我审核通过才显示。
非功能需求
- 内容和网站都存在我自己的 GitHub 仓库里。
- 加 CDN,全世界访问都快,但 CDN 每月超过 10 美元就要重新评估。
- 有免费托管就用免费的,没有就用 Azure 额度;方案最好通用,以后迁到 AWS 甚至阿里云都方便。
过程:先规划,再执行
规划阶段:像一个靠谱的架构师那样提问
Agent 没有急着写代码,而是先在 Plan 模式里一个一个地问我:
- **大陆访问重要吗?**它解释了 GitHub Pages、Cloudflare、Vercel 在国内的表现差异,以及国内 CDN 必须备案。
- 我让它去看看两个朋友的网站是怎么做的。它很快分析出:一个是 Next.js 主页加 Substack 写作,另一个是 Next.js 部署在 Vercel、内容放在公开的 GitHub 仓库里。然后它告诉我哪些思路可以借鉴,哪些不符合我「内容资产在自己手里」的要求。
- **评论怎么审核?**它给了一个我很喜欢的方案:读者提交评论后,自动在仓库里开一个 Pull Request,我 merge 就等于审核通过,评论数据和文章一样留在仓库里。
- **域名怎么用?**我没搞懂「域名注册商」和「DNS 托管」的区别,它耐心解释了续费在哪里付、改 NS 会不会影响访问速度,以及访问裸域名会不会多一次跳转。
最后定下来的架构:
我 / Muse / Copilot ──► GitHub 私有仓库(唯一数据源)
│ PR → GitHub Actions:校验 + 构建 + 部署
▼
Cloudflare Pages(全球 CDN,免费)
▲
读者评论 ─► Turnstile 人机验证 ─► 边缘函数 ─► 自动开 PR ─► 我审核
- Astro 生成静态站,文章就是 Markdown 文件,由 schema 校验格式:AI 写错了,CI 直接拦下。
- Cloudflare Pages 托管,CDN 不限流量,每月 0 美元。
- 整个站就是一堆静态文件,加两个很小的边缘函数(评论接口和旧链接跳转),核心逻辑只用 Web 标准 API,以后迁到任何云都只需要换部署那一步。
执行阶段:它干活,我只在关键处点头
计划确认后,我切到 Autopilot 模式,它就开始自己干了:
- 先备份:用我本机已登录的 Azure CLI,远程在 VM 上导出数据库、打包整站文件,各存一份到 Azure Storage 和本地,并核对哈希值。它还发现这台 VM 上跑着几个我自己都快忘了的其他服务,主动提醒我以后不能直接删 VM。
- 迁移内容:通过 WordPress REST API 把 8 篇文章、32 张图片和唯一一条评论转成 Markdown,旧链接全部 301 跳转到新地址,外链和搜索引擎都不受影响。
- 做首页:LinkedIn 要登录才能抓,它就改从我的工作资料和公开的 Microsoft Learn 文档里整理履历,并主动过滤掉了所有内部信息:项目代号、未发布的功能、客户名,一律不写。
- 评论系统:Turnstile 人机验证、限流、防垃圾,再用 GitHub App 开 PR,还请求我 review,所以每条新评论我都会收到邮件。另外加了一道构建检查:评论者的邮箱只要出现在网页里,构建就失败。
- CI/CD:每个 PR 自动部署一个预览站点,并在 PR 里贴出改动页面的直达链接。
- 写好
AGENTS.md:教会任何 AI 怎么在这个仓库里发文章、审核评论。Muse、Copilot、Claude Code 这些能访问 GitHub 的 AI,都可以照着它来操作。
人在回路:那些它不能替我做的事
整个过程中,有几处必须我本人出手,而 Agent 在这些地方的分寸感让我印象很深:
- Cloudflare 的 API Token 要我自己创建。后来需要加权限,它在浏览器里帮我点,但每一次修改权限之前都停下来等我明确批准,哪怕我前面说过「帮我配置」也不算数。
- 域名转 DNS 要去 GoDaddy 后台改 NS。我在 Azure 买的域名,根本没有 GoDaddy 账号,它一步步教我怎么找回那个「隐形账号」。
- 创建 GitHub App 由我在浏览器里点「Create」,它负责剩下的配置和验证。
凭据、权限、对外的不可逆操作由我来做;剩下的脏活累活,全部交给它。
改主意也很便宜
网站上线后,我又提了一堆「甲方需求」:
- 「能不能中英文切换?」它开了 3 个子 Agent 并行翻译 8 篇旧文章,自己同时改代码。
- 做到一半我说「还是英文做默认语言吧」,它直接把整套 URL 和文件约定翻转过来。
- 「这行字折成两行不好看」「头像改成圆的」,每次改完它都会更新预览链接,我说「通过」它才合并。
在以前,这些需求每一个都意味着几个小时的研究和实现。
前后对比
| 2021:手搓 | 2026:Agentic AI | |
|---|---|---|
| 耗时 | 好几个周末 | 一个晚上(约 3.5 小时) |
| 我写的代码 | 一堆 shell、NGINX 配置 | 0 行 |
| 内容存放 | VM 里的 MySQL | GitHub 仓库(Markdown) |
| 托管 / CDN | 1 台 B2S VM,无 CDN | Cloudflare 全球 CDN |
| 每月成本 | 约 38.5 美元(VM) | 0 美元(只剩域名费) |
| 发一篇文章 | 登录 WordPress 后台编辑 | 和 AI 说一句,看预览,说「通过」 |
| 语言 | 中文 | 中英双语 |
一点感想
五年前,我选 WordPress 的理由之一是「生态大,以后迁移到别的框架有很多轮子可用」。这话说对了,只是没想到最后造轮子、用轮子的都不是我。
五年前那个「要成为 CTO 的男人」以为,技术栈选得够「企业级」就是专业。现在回头看,这次真正起作用的是另外几件事:**把需求说清楚、在关键的取舍上做决定、守住权限和安全的边界、对结果做验收。**代码本身已经是最便宜的部分了。
最后,这篇文章本身也是按新流程发布的:AI 根据我们整晚的对话记录起草,开 PR,给我预览链接,我看完说了一句「通过」。
欢迎在下面留言,当然,要等我审核通过才会显示 😄
评论
还没有评论,来做第一个留言的人吧。