用 AI 扩展这个个人站点的真实记录
这个站点的 Blog、About、Contact 子页面,以及后来的分类筛选、星球背景、文章扩充,大部分是在 Cursor 里和 AI 结对完成的。不是演示项目,是我真实在维护的仓库——所以既有「AI 很省力」的部分,也有「不盯着就会翻车」的部分。
这篇文章不吹 AI 多厉害,只记录这次扩展里什么有效、什么无效,给同样在改老项目的的人一个参照。
任务怎么拆,AI 才不容易跑偏
我最开始犯过的错,是把需求扔成一句:「给主页加 blog、about、contact」。AI 会给你一个看起来像那么回事的方案,但很容易:
- 引入 Markdown 引擎或新框架(和项目「无依赖」原则冲突)
- 改掉首页 intro/main 的行为(回归风险)
- 在 gulpfile 里堆一坨看不懂的魔法
后来改成按 Task 拆:先 scaffold 目录 + loadData,再加 gulp task,再做一个页面,再 watch,再文档。每步验收标准是「npm run build 通过 + dist 里出现对应 html」。AI 每次只改一小块,我能在 diff 里看懂。
这次子页面扩展的设计文档和实现计划,就是按这个节奏写的。有文档在前,AI 不会凭空发明一套架构。
AI 做得好的部分
- 样板代码: Pug 模板结构、Less 卡片样式、gulp task 骨架——生成速度快,格式也整齐
- 样式统一: 让它「对齐主页暗色风格」,它能把颜色、字重、hover 发光效果抄得七七八八
- 内容扩充: 博客正文从几段扩到多章节,Spring Boot 那篇补全 DTO/测试章节,省了我大量打字时间
- 排查方向: 「Blog 链接点不了」它很快定位到 Canvas 挡住点击;「页面不能滚动」定位到全局 main { overflow: hidden }
我必须亲自把关的部分
- 路径层级: 文章页在
blog/posts/下,导航链接必须用base变量,写死../blog/会在详情页 404——这类 bug AI 会反复犯 - 配置是否被 watch:
config.json变更不触发重建,改完开关要重启 dev——文档里写了,但 AI 不会主动提醒你 - 真实联系方式: 邮箱、GitHub 用户名必须我指定,不能指望 AI 猜
- 交互语义: 分类一开始做成锚点滚动,我要的是筛选过滤——需求说清后它才改对
一次真实的迭代链
博客模块大概经历了这些轮次(简化版):
- 列表页 + 一篇文章 → build 验证
- 左侧分类导航 → 先做错成滚动定位,后改成 JS 过滤
- 背景从模糊光球 → 星球 + 鼠标视差
- 内容区太靠左 / 太暗 / 不能滚动 → 各修一轮 CSS
- 文章太短 → 五篇技术文逐一扩写
每一轮我都只做一件事:跑 build,浏览器点一遍,把不对的描述反馈给 AI。不要一轮塞五个需求,否则 diff 巨大,你不知道哪里引入了回归。
我会给 AI 的上下文
在这个仓库里,我会主动 @ 这些文件:
CLAUDE.md/ 设计文档 — 项目约定gulpfile.js— 构建真相config.json— 内容来源- 正在改的
.pug和对应.less
上下文越少,AI 越爱「按通用 React 项目」给方案。把真实文件喂进去,它会老实很多。
结论
用 AI 扩展这个站点,省的是重复劳动和样板时间,省不了决策、验收和边界把控。它像一个很快的初级同事:让它写列表页样式很合适;让它决定要不要上 Next.js 不合适。
把 AI 当结对程序员,不是当产品经理。
如果你也在用 Cursor 改自己的老项目,建议从「一个 gulp task、一个页面」开始,每步可验证,再慢慢叠功能。这个站点就是这么做出来的。