Article25 Feb 2026

我用一天时间重新设计了这个博客

对,我又改博客了。

之前的主题要靠封面图撑场面,找不到合适的图就乱糟糟的。我有 100 多篇老文章,没精力一篇篇回去补图,那就换一个不需要图的设计。

顺带把 NextUI 也删了。不是因为它不好,是因为根本没用上——所有用到的地方自己写三五行 Tailwind 就够了,留着只是个包袱。


之前一直用 Cursor,这次换成了 Claude Code 和 Codex。

刚开始完全不知道怎么用。Cursor 的方式很直觉,把文件拖进去,告诉它改哪里,看着它改。Claude Code 是你扔一个任务,它自己去读文件、改代码、跑构建,你不用盯着。

适应之后发现更顺手。任务扔出去,自己去做别的,等它搞完了来看结果。甚至可以同时开几个项目跑。以前是"我在改代码",现在是"我在验收"。


设计这件事折腾了好几轮。

一开始跟 Claude 说“我想完全重构首页,改得更大气,高级,精致,有品味的感觉,具体风格你看着来,别的页面不动 项目情况参考 AGENTS.md”

改完发现没啥变化。。

说了三四轮没对上,我换了个说法:「你是一个欧洲范儿的设计师,知道 CSS 禅意花园吗,最好看不出来是同一个网站。」

这次它给了 A、B、C 三个方向让我选。看到 C 直接"哇塞",惊艳,一眼就对了——索引式排版,像印刷杂志的目录页,干净,有结构,没有一点多余的东西。

我问它为什么之前总是在原有基础上改,它说先读了现有代码,所以被现有结构锚定了,换皮没有换骨。然后它说,你与其说"更欧范儿",不如说"参考 Le Monde 的目录页",比"欧洲风格"有效十倍。

Le Monde 是什么我不知道。Monocle 是什么我也不知道。但它把三个方向摆在我面前,我知道哪个好看。


UI 搞定之后,让它列了一下现在博客有哪些问题——SEO、性能、界面,一口气列了 15 条,然后一起修掉。

文章页之前分享出去是空白的,没有 description 没有 Open Graph。sitemap.tsrobots.txt 没有。lang 写的是 en,博客主要是中文。

首页每次查文章列表,把每篇文章完整的 content 字段都拉回来,就为了截 120 字摘要。Archive 页全量加载所有文章,不分页。代码高亮初始化有竞态,Markdown 渲染结果没有缓存。footer 为了读一个 pathname 被做成了 Client Component。

都改了。


然后遇到一个让我无语的 bug。

给文章页加了 generateStaticParams,构建时预渲染所有文章。跑起来直接崩:

FATAL: sorry, too many clients already

把报错给它看,它分析了一通,说根本原因是缺连接池,需要加 PgBouncer 或者 Prisma Accelerate,这是"基础设施层的问题"。

我:125 篇文章,占 100 个数据库连接不够用,这像话吗,应该限制并发 worker 或者连接数。

然后它找到了真正的原因。prisma/db.ts 里有一行:

if (process.env.NODE_ENV !== "production") globalForPrisma.prisma = prisma;

单例只在开发环境生效,生产构建时每个 worker 进程各自 new 一个 Prisma 实例,每个实例默认连接池按 CPU 核心数算,13 个 worker 乘下来轻松超过 100。

加一行 connection_limit=3,把那个条件判断去掉,问题解决,125 篇全部预渲染。


从 2021 年 GitHub Copilot 内测开始用,那时候它只会给我补全 if/else,猜变量名。

2024 年中,能做简单的独立任务。2024 年底,Python 没问题,Rust 完全跑不起来。2025 年中,Rust 也能跑了,但每次我都会仔细 review,一行一行看。

现在,博客这种项目,代码我基本不看,改完了在浏览器点一点,感觉对了就行。把验收标准和原则告诉它,剩下的它来做。

变化很快,我几乎每天跟身边人讲 AI ,让所有人用 AI 哪怕豆包。

以前都说就差一个程序员,现在开发已经不值钱了,重要的是你的想法和品味。

About this article

Author
Lerry
Published
2026-02-25