AI 辅助工作初体验:我用 OpenClaw 两天做了什么

7 月 29 号那天我在一台腾讯云的小机器上装了 OpenClaw,2 核 3.6G 内存,接微信。到今天两天时间,这台机器上跑的 AI 助理帮我把个人网站从零建起来、上了 HTTPS、又升级成了现在这个 Nuxt 博客。
这篇是记录。主要写它实际做完了什么、哪几个地方翻了车、以及两天下来我对这类工具的看法有什么变化。
起因 #
我写代码写了十几年,C、C++、Java、C#、Python 都用过很长时间,前端能上手但不算精。所以我对 AI 写代码这件事本身兴趣不大,那部分我自己更快,也更清楚要什么。
真正让我头疼的是另外一堆活。写文档、写 README、写周报,把技术方案翻译成给非技术同事和领导看的版本,选型之前的资料横评,一堆重复的杂事,还有前端。这些活不难,但很吃时间,而且做得再好也没人注意,做得差还挺显眼。
问题是聊天窗口解决不了这些。你问 nginx 配置怎么写,它给你一段配置,然后你自己 SSH 上去、自己跑 nginx -t、自己看报错、自己贴回去。来回三趟,时间全花在搬运上,AI 只贡献了中间那一小段文本。
我要找的是一个能自己上手的东西。
OpenClaw 大概是个什么东西 #
它跑在你自己的机器上,模型接口可以随便接。核心的地方在于它把几组真实能力开给了模型:读写文件、跑 shell、管后台进程、联网搜索抓页面、驱动浏览器、定时任务、还能派生子 Agent 并行干活。对话通道走 IM,我用的是微信。
有两个设计我用下来觉得挺关键。
一是它的记忆和人格都是纯文本文件。SOUL.md 定性格,USER.md 存我的背景,AGENTS.md 写行为规则,MEMORY.md 是长期记忆,memory/ 下面按日期存日志。每次开新会话它相当于重新醒一次,靠读这些文件恢复上下文。这个方案挺朴素,好处是我随时能打开看、能改、能删。记忆不是黑盒,出问题我知道去哪查。
二是 Skills。一个 SKILL.md 加几个脚本就是一个技能包,需要什么装什么。浏览器自动化、操作云服务器、接文档平台,都是现成的,不用重写 prompt。
第一件事:网站 #
我给它的输入是一个目标:做一个能让潜在客户在十几秒内相信我技术水平的站点。它给了方案,我们对了一遍,然后它自己动手,写 HTML、CSS、JS,装 nginx,配 server 块,调权限,上线。
中间它撞上一个坑。/home/ubuntu 的权限是 750,nginx 的 worker 进程进不去这个目录,静态文件全返回 403。它自己定位到了这一层,chmod o+x 解决。
整个过程我没登过服务器。
第二件事:域名和证书 #
我买了 zhoudaiguang.site,剩下的它做:DNSPod 配解析,申 Let's Encrypt 证书,改 nginx,注册 certbot 的续期定时器。
上线之后它自己去 SSL Labs 跑了一遍外网实测,拿到 Grade A、零 warning。顺带它从这个结果推出来一件事:腾讯云安全组的 443 已经是开的,不需要额外去改。这个推断省了我一次登控制台。
这一轮它做了两个我事后觉得很对的判断,都不是我提的。
第一个是 HSTS 先不开。理由是 HSTS 一旦下发,浏览器会记住好几个月,配错了很难回退,建议先稳定跑一周再说。
第二个是 80 端口暂时不做强制跳转。因为 /.well-known/acme-challenge/ 这个路径必须在 80 上可达,不然证书续期会挂。等 Nuxt 站上线之后再一起加跳转,同时给这个路径开例外。
第三件事:升级成博客 #
技术栈是我定的,Nuxt 4 加 better-sqlite3、drizzle-orm、markdown-it、shiki。它把版本号全核了一遍,然后建骨架、写 API、做管理端、配 systemd。
这一轮我们意见不一致的地方有五处,最后五处我都听了它的。挑几个说。
服务清单那个是产品判断不是技术判断。我原来想让首页精简一点,服务详情全放到二级页去。它反对,说转化点不应该藏起来,首页该留一个紧凑的网格只放标题,二级页放完整内容。我想了一下确实是这样,来访的人大多不会点进二级页。
回滚方案那个是它指出我的硬伤。我原计划是万一新站有问题就改软链回滚老站。它说这个行不通,老站是 nginx 用 root 直接服务静态文件,新站是 proxy_pass 反代,两者机制不一样,软链换不回来,实际回滚动作是换掉整个 server 块再 reload。
还有一条比较有意思,是它主动要求给自己上锁。它写的东西挂我的名字给客户看,署名的风险是不对称的,所以它建议 agent 的 API token 默认只能存草稿,发布必须我在管理端点确认。我同意了。实测确实拦得住,带 status: published 的请求会被强制降级成草稿,返回一个审核链接。
图片上传这块它做得比我预期严 #
我只说了要能上传图片,它自己把安全边界收得挺紧。
判文件类型走 magic bytes,不信 Content-Type,也不信扩展名。SVG 直接拒掉,理由是 SVG 里能内嵌 <script>,是个存储型 XSS 面。文件名完全由服务端生成,一点用户输入都不复用,顺手把路径穿越和同名覆盖都免掉了。
然后它自己造了几个攻击样本去验:正常 PNG 通过,改了扩展名的文本文件返 415,SVG 返 415,没登录返 401,../../.env 这种请求 nginx 直接 400。
踩过的三个坑 #
这部分比成功案例有用。
SQLite FTS5 的 trigram 搜不了两个字的中文。 trigram 分词器按 3 个字符切,所以「良率」「制程」「架构」这种两字词恒定返回空结果。另外查询里带 + 或 # 会直接抛 syntax error,也就是说搜「C++」「C#」是搜不了的。这不是配置问题,是 trigram 机制决定的。最后的解法是混合:查询短于 3 个字符或者带特殊符号就走 LIKE,长词走 FTS,FTS 空结果再兜一次 LIKE。要给中文内容做 SQLite 全文检索的话,这个坑值得提前知道。
nginx 1.24 不支持 http2 on;。 那是 1.25.1 以后的语法,1.24 得写 listen 443 ssl http2。好在 nginx -t 把它拦住了,没变成线上事故。这事也说明每次改完配置跑一遍 -t 是省不掉的动作,不管改的人是谁。
nginx 正则里的 {6} 会被当成配置块。 写 location ~ ^/uploads/(\d{6})/... 会报 missing closing parenthesis,因为花括号在 nginx 配置里本身是块分隔符,得把整个正则用双引号包起来。这里还连带一个坑,兜底那条 location /uploads/ { return 404; } 不能加 ^~ 前缀,加了正则 location 就不会被求值,图片全 404。
两天下来的看法 #
值钱的是闭环,不是生成。 生成能力现在到处都有。少见的是从需求到验证上线这条链能自己走完。改配置、看报错、修、再验,这个循环里省下来的搬运工,比它写出来的代码本身更值钱。
它会反对我,这件事的价值超出我预期。 我一开始的设想是我说什么它做什么。实际用下来最有用的几个时刻反而是它不同意我的时候。HSTS 那个、服务清单那个、软链回滚那个,都是我没细想它替我想到了。只会顺着说的助理只能帮你提速,会拦你的那种能帮你少犯错。
边界还是清楚的。 架构决策、技术选型、方向判断这些还在我手里。它做得好的都是目标已经定下来之后的执行链。这两天我派给它的每个活都有明确的验收标准,它才能自己闭环。如果我丢一句「帮我优化一下网站」过去,出来的东西大概率不能用。
它犯错的方式跟人不一样,这个得适应。 有一次它一次提交了好几个编辑块,其中一个字符没对上。编辑工具是原子的,一个匹配不上全部回滚,但它以为前面几个已经生效了,接着往下走。后来定的规则是改完必须 grep 一遍确认,不看工具返回值,看文件的实际状态。
还有一次它用 ffmpeg 生成 OG 图,exit code 是 0,但中文有可能渲染成豆腐块。它自己意识到这点,调了图像识别工具真去看了一眼那张图,才确认字体是对的。生成完不看结果基本等于没做,这条对人也成立,只是 AI 更容易骗过自己。
如果你也想试 #
先给它一个真实的小项目,别当聊天工具用。有环境、有报错、能验证,它的价值才出得来。
把规则写进文件,别每次口头交代。我定了三条:动手前先讨论、有异议直接说、干完主动汇报。写进 AGENTS.md 之后就不用重复了。
任何对外的动作都上闸门。发布、发消息、改线上,默认走草稿、默认要确认。成本很低。
踩了坑让它记下来写进记忆文件。这是复利,第二天它就不会再犯同一个。
别指望它替你做架构决策,你自己得懂。它补的是短板,不是接方向盘。
这个网站本身就是这两天的产物,从静态站到 HTTPS 到现在这个博客,都是那台 2 核小机器上的 Agent 干的。我在旁边看着,偶尔跟它吵两句。
评论
还没有评论。