一行代码没敲,我跟AI把个人站造出来了
事情是这样的。
前阵子我一直有个念头,想给自己弄个网站。
我是写公众号的,聊哉梦呓,写点 AI 相关的东西。公众号这玩意儿,写起来顺手,但它是个围墙花园,你写的所有东西都关在微信的服务器里,哪天平台规则变了、号出问题了,你攒了几年的东西可能一夜之间就没着落。
我之前写过一个小工具叫 wx-kit,专门把公众号文章扒下来存到本地,根上就是因为这个不安全感。
所以我想,我得有个自己的地方。
另外我平时也写点小工具软件,wx-kit 啊,x-reader 啊,都是我自己天天在用的东西。这些作品散在 GitHub 里,没一个能让人一眼看清「这家伙到底做了点啥」的橱窗。
我想要个个人站。一头备份我发在公众号的文章,顺便发点不适合发公众号的,另一头把我做的工具摆出来给人看。
要求听着挺简单。但我要是按老办法干这事,选技术栈、搭脚手架、写前端、调样式、配部署、弄域名 HTTPS,一整套折腾下来,怎么也得搭进去好几个周末。
我是程序员出身,这些活我都会。
但我现在不想干了。
我觉得这些活,配不上一个程序员的时间。
然后我打开了 Claude Code。
我跟它说,我想做个个人站,大概这么几个需求。
它没急着动手敲代码。它先反过来问我。
它问,你的读者主要在哪。我说国内。它说那免费托管方案访问不稳,你有自己的服务器吗。我说有。它又问,你希望「放一篇文章」这个动作发生在哪,本地还是服务器上。
就这一个一个问题问下来。
我才意识到,我一开始那句「我想做个个人站」,其实是一团模糊的雾。是它一层一层帮我擦清楚的。
聊到一半,有个瞬间我挺兴奋。
是我们在定「发文章这件事到底怎么发生」的时候。
它给我捋出来一个东西,纯静态网站,没有后台,没有数据库,没有在线编辑器。我发文章的方式,就是在我电脑的一个文件夹里建个目录,丢一个 markdown 文件进去,跑一条命令,上线。作品展示也一样,约定好一个目录结构,往里扔东西就算上架。
「目录就是数据库,放文件就是发表。」
我跟你说,我听到这句话的时候,是真的觉得对味了。
这就是我一直想要的极简。我不需要一个复杂的系统来管我的内容,我只需要一个约定。文件系统本身就是最好的内容管理器。
它还跟我定了一堆规矩。哪些字段必填,哪些可选,文章可以标草稿,可以标「不出现在列表里但知道链接的人能看」。这些规矩不是写在一份没人看的文档里靠自觉,它直接焊进了构建脚本,我哪个字段填错了,网站根本构建不出来,会清清楚楚告诉我哪个文件哪个字段错了。
约定这东西,靠人自觉是靠不住的,得靠机器执行。
这个道理我太熟了。
需求聊清楚,它给我出了一份设计文档,又出了一份实施计划,把造站拆成十个小任务。然后它开始一个任务一个任务地干,每干完一个,自己跑测试,再叫另一个 AI 来做代码审查,审查过了才往下走。
我就坐在旁边看着。
它敲代码,它写测试,它审查它自己,它修自己审查出来的 bug。我大部分时间是个旁观者。
偶尔它会停下来问我。部署要服务器登录信息的时候,它很自觉地没让我把这些写进任何文件,用 SSH 密钥搞定,密码从头到尾没落过盘。第一次部署卡在登录那步,它告诉我得我手动跑一条 ssh-copy-id 装下公钥,因为涉及密码它不能替我干。
它分得很清,什么它能干,什么必须我来。
整个过程中真正需要我动手的就那么几下。敲一次 ssh-copy-id,确认下 HTTPS 证书的邮箱。剩下的,全是它。
前后没花几个晚上,网站上线了。
simiam.com,聊哉梦呓。
文章页、作品展示、备案信息、RSS、sitemap,全都在。手机上打开看了看,挺像那么回事。
但我看着看着,总觉得哪儿不对。
说不上来。就是,太普通了。
它确实能跑,功能都在,但你打开它,就是个「能用的网站」,没一处让你想多看两眼。像个刚装好系统的电脑,桌面是默认壁纸。
我是个对体验有执念的人。我做的所有东西,都希望用户碰到的每一层是丝滑的、有审美的。我自己那个 wx-kit 阅读器,我都专门调了暖色调排版,让它读起来像翻一本旧杂志。结果我自己个网站,长了个网页说明书的样子。
我跟它说,这个主题没设计感,最好像杂志风格。
它挺坦诚。它说之前那版样式是它顺手写的功能性 CSS,图个不出错,确实没设计。然后反过来问我,杂志风有好几种气质,你要哪种。
它给我列了三种。暖色旧杂志,米黄纸底衬线字,像翻一本旧的《读者》。现代文艺杂志,大留白大标题,性冷淡。编辑部风,严格网格粗字,像新闻周刊。
它还特意提醒我一句。说,你给你那个 wx-kit 阅读器选的就是暖色旧杂志的调子,你文章原话写的,「暖色的、像翻一本旧杂志那种感觉」。你的审美已经用作品投过票了。
我愣了一下。它翻我自己写过的话来劝我。
那就暖色旧杂志。
接下来是一连串细节决策。
中文字体怎么办。这是杂志感最关键也最贵的一环,中文字体全量动辄好几 MB,直接挂上去网站就废了。它给我三个方案,我选了全站思源宋体,构建时自动切成几百个小包,读者打开网页只下载这页用到的那么几个字。
深色模式怎么办。旧杂志是纸,纸没有深色模式。但它说,你站上长文多,夜里躺着刷手机的人不少,满屏米黄会刺眼。建议保留深色,但调成「夜读」气质,暖黑底配米色字,像台灯下的纸页。我觉得在理。
栏宽多宽,行距多大,链接要不要下划线,首段要不要首字下沉,公众号备份的文章要不要盖个「首发于公众号」的小印章。
每一个它都给选项,给推荐,给理由。我一路选,它一路改。
改完,我打开本地预览。
那个感觉,怎么说呢。
像一个人换上一身剪裁得体的衣服,整个精气神都不一样了。米黄纸底,墨色宋体,赭红的标题和链接,文章正文第一段首字是一个大大的下沉的赭红字母。目录页的文章标题和日期之间,一串小圆点连成的虚线,像真的杂志目录。公众号备份的文章标题旁,盖着一个赭红细边框的小印章,「首发于公众号」。
是那个味儿了。
但事情到这没完。
杂志风上线之后,我开始一个细节一个细节抠。这一抠,抠出来一个特别真实、特别反直觉的体验,我得跟你讲讲。
就是它会犯错。而且有些错,它自己不知道。
最有意思的一回,是字体加载量。
之前定全站宋体方案的时候,它拍着胸脯跟我说,字体分包之后,首屏加载量能控制在一两百 KB。我当时觉得挺好,就这么定了。
结果杂志风上线,我让它实测了一下真实文章页的字体加载量。
它跑完工具,给我报了个数。
一点四 MB。
???
我看着那个数,乐了。
它设计阶段跟我保证的一两百 KB,实际跑出来一点四 MB,翻了快十倍。
它也坦诚。它说这个估算对短页面成立,对你这种五千字的长文失准了,你的用字散在二十多个分包里,光正文一个字重就九百多 KB。它说这个预算对全站宋体的方案,实际上达不到。
它当初拍胸脯,是基于一个想当然的估算。它不是故意骗我,它就是估错了。
这事儿搁人类工程师身上其实也挺常见,谁拍脑袋没拍错过呢。但区别在于,AI 拍错的时候,它特别自信,特别像那么回事。你听它那一两百 KB 的口气,你会觉着这事儿它门儿清。
所以跟 AI 结对,有条我自己的心得。它的方案你要听,它的理由你要信,但它给的数字,特别是预测性的数字,你得自己验。它不会因为你问了就承认不确定,它会给你一个看起来特确定的答案,那个答案有时候是错的。
不是它坏,是它就这么个东西。最后拍板的那个,得是你。
那天字体的事,最后是我拍的板。它给了三条路,接受一点四 MB 但加强缓存、砍掉粗体字重、正文退回系统字体。我选了第一条。字体文件名带内容哈希,配上永久缓存,每个读者只有第一次访问付那一点四 MB,之后再翻页、回访,字体流量是零。第一次加载也是渐进的,字会先拿系统字体顶上,宋体慢慢替换,阅读不被阻塞。这体验我能接受。
它给选项,我定方向。
然后是下划线。这个事更小,但我特别喜欢。
杂志风上线那天晚上,我打开首页,看两眼,觉着哪儿别扭。文章列表里的标题,还有那个「全部→」的链接,底下都带着一条赭红的下划线。
我当时就觉着,杂志的目录页,不该有这个。太土了。像九几年的超链接。
我发消息问它,这个下划线是故意的还是 bug。
它查了一下,回来跟我说,是 bug。
它说设计文档里写的是「正文内的链接才有下划线」,但它落代码的时候,写成了全站所有链接都有下划线,把目录页和按钮都罩进去了。它实现越界了。
然后它修了。改了个 CSS 选择器,下划线就只剩文章正文里的链接有了。目录页干干净净。
我特别喜欢这个小故事,是因为它特别能说明一个问题。
AI 写代码,它对着设计文档写,但它不一定真「懂」每一条设计意图。设计文档说「正文内链接」,它字面上能写对,但落到具体那条 CSS 规则的时候,它会顺手把范围扩大,因为它没有「杂志目录不画线」这种审美层面的判断。
这个判断得我来。
它写出来的东西,得我一双人的眼睛去过。过不去的地方,往往不是代码错,是审美错。代码没错,但不好看。这种错,它自己发现不了。
还有栏宽,这个更逗。
杂志风最初定的栏宽是 38rem,一个挺窄的栏,它说这是杂志单栏的标准宽度,更聚焦。
我打开看了。
太窄了,一行字太少,看着憋屈。
我让它调宽。它调到 44。我又看一眼,还是有点窄。让它再宽。调到 50。
调了三回。
最后一回它跟我说,50rem 对中文长文是个相当舒适的上限,再宽单行字数太多反而容易跳行,大概率这个数就是甜点了。
你看,它一开始按「杂志的形式感」定的 38,是忠于杂志这个参考物。但实际读起来不舒服,是我用人的眼睛读出来的。最后定 50,是体验优先于形式感。
我跟它说,你把这个决策的来龙去脉记到设计文档里,别让以后看代码的人困惑这个数为啥和最初设想不一样。它乖乖去记了。
聊到这儿,我想你应该明白我想说啥了。
整个过程,我一行代码都没亲手敲。
但累吗,说实话,挺费脑子的。
我跟 AI 结对做这个东西,我干的活不是写代码,是想事情。是回答它一个接一个的问题,是在它给的几个选项里挑那个对的,是用我自己的眼睛去读它做出来的东西,读出那个「不对,这里丑了」「不对,这里窄了」「不对,这里不该有下划线」。
它负责把我想清楚的东西又快又稳地落地,在我犯懒的时候帮我跑测试。在我犯傻的时候,老实说,有时候它也跟着我犯傻,但更多时候是它帮我兜底。
这不就是我之前写 wx-kit 那篇讲的事儿吗。
你负责想,它负责扛。
那篇讲的是我跟 AI 结对做一个产品。这一回,同一个套路,我用它给我造了个自己的阵地。
这套路是真的好使。
我现在越来越觉得,未来每个人,不管你是不是程序员,都会有个自己的 AI 结对伙伴。你不需要懂代码,你只需要懂你想要什么。
这话听着像鸡汤,但我是认真的。
非程序员用 AI 结对做事,唯一的门槛不是技术,是表达能力。是你能不能把脑子里那团模糊的雾,一层一层说清楚。你只要说清楚,它就能给你做出来。说不清楚,它就给你做个四不像,你还以为是自己不会用,其实是自己没想明白。
程序员用 AI 结对,门槛也不是技术,是审美和判断力。代码它都替你写了,你的活儿变成,挑那个对的,否掉那个丑的,在它自信地报错数字的时候拦一下。
门槛从「会不会写」,变成了「想得清不清楚」「眼睛毒不毒」。
这个变化挺大的。
现在这个网站就在那了。simiam.com。
它所有的代码,每一个决策的来龙去脉,都被那个 AI 老老实实记在一份开发日志里。哪个地方为啥这么定,哪一回踩了坑怎么修的,都写得明明白白。我自己回头看,都觉着这玩意儿比我自己手写的项目还清楚。
因为不用我记了。它都记着。
最后说点虚的。
我一直觉着,一个人在这个互联网上,得有个自己的地方。不是微博,不是公众号,不是任何一个平台分给你的角落。是一个网址,一个你说了算的地方。平台会变,规则会变,但你的网址在那,你的东西就在那。
这个站,就是我的那个地方。
它是我跟一个 AI,没几个晚上,一个决定一个决定敲出来的。我没写一行代码,但每一个字,每一个颜色,每一个宽度的数字背后,都是我。
这玩意儿,挺香的。
以上,既然看到这里了,如果觉得不错,随手点个赞、在看、转发三连吧,如果想第一时间收到推送,也可以给我个星标⭐~
谢谢你看我的文章,我们,下次再见。