我在六月安装了 Claude Code。之前尝试过 Cursor、Cline、Zed 等编辑器,但都感觉笨重,因为我习惯在原生 vim 和终端中完成几乎所有操作。Claude Code 是首个完美契合我工作流的工具,而非需要我去适应新工具。
它的表现也极其出色。
我迅速取消了 GPT 订阅,转而每月向 Anthropic 支付 20 美元。虽然失去了 GPT 的高级语音模式,且需要适应 Claude 桌面端和移动端应用的额外 UI 延迟与不够完善的体验,但终端工具足够有趣,让我并不在意这些缺点。
几天内我就升级到了每月 100 美元的 MAX 套餐,尝试 Opus 功能并避免触及使用限制。
以下是我目前使用它完成的部分事项描述。主要是探索使用方式过程中的趣味项目,但也开始越来越多地应用于"真实"工作场景。
部分项目包括:实验性的"自主创业构建器"、(一次性开发的)SplitWise 替代品、AI 海报生成器、HN 评论评分浏览器插件、基础版 Trello 替代方案,以及一些整理规范的银行对账单。
我将在下文详细阐述大部分内容,但过去几周我的主要收获是:
1) 保持信念(始终以'危险地跳过权限'模式运行,即便是在生产服务器和主力开发机等重要资源上。如果您来自信息安全部门,现在最好停止阅读——本文剩余内容不会让您更愉快。若执意继续,请备好降压药)
2) 提供大量输入。你给它的输入越多,它的输出就越出色。这是个神奇的工具,但你最好还是精通沟通技巧——无论是往文本文件里敲入成千上万个单词,在交互窗口输入内容,或是使用 TTS 语音输入(我自己没试过,因为我讨厌自己的声音,但其他人反馈效果很棒)。
3) 尽管它主要是一个文本模型,但在 UI 设计方面表现出奇地好。
让我们来写点增删改查的代码吧
让我们尝试一些氛围编程。
旁注: 氛围编程的定义仍在变化中,但对我来说,它意味着在不查看或编辑代码的情况下创建软件。你并不真正关心底层使用了什么语言或框架,仅通过与模型对话来开发代码。
我们将通过开发一个基础的 SplitWise 克隆版本来全面测试 Claude Code。很多人会用 Trello 或待办事项列表作为 CRUD 应用的基本示例。我喜欢用 Splitwise,因为它足够简单,但又没那么老套,可能也没那么深地嵌入到模型本身中。
从某些人的角度来看,构建一个基础的 Splitwise 克隆版主要还是"复述",但它有一些有趣的边缘情况,人和模型往往会出错。特别是关于邀请新用户时,却允许现有用户已经开始添加费用并将其分配给待邀请用户的情况。
最简单的"氛围编程"形式是"一次性氛围编程",即仅通过单次提示就让模型生成一个完全可运行的应用程序,而无需再提供任何关于修复、添加、删除或修改的额外输入。
我其实取巧了,因为这次使用的提示语借鉴了早期尝试的经验——当时模型生成的代码不符合我的预期。但下方展示的应用程序(也可访问 smartsplit.verysmall.site 查看)确实是 claude -p "Read the SPEC.md file and implement it"
的输出结果。我的 SPEC.md 文件约 500 字(完整内容稍后展示)。
根据过去几周或几个月你使用 LLMs 进行编码的频繁程度,你可能会感到惊讶或觉得不足为奇——我们仅需一条提示就能获得一个功能完整、具备中等复杂功能的 CRUD 应用程序。如上图所示,它包含一些贴心设计,比如为注册用户自动填充姓名,而对未注册用户则回退显示其电子邮件地址。
我尚未进行全面测试,但尝试的几个案例和抽查都完美运行。
如果你惊讶于它运行得如此出色,那么你应该知道:a) 这些模型仍然存在不一致性——相同的或相似的输入可能导致截然不同的表现;b) 它们对输入的质量和数量非常敏感。
例如,这里有一个完全崩溃的版本,甚至连基本注册功能都无法运行。我为此版本使用的提示词几乎完全相同,但少了些关于技术栈选择的指导,结果模型决定过度发挥,把一切复杂化到连基础功能都无法实现的程度。
两个氛围编程代码库的故事
我们来看看这两个项目及其生成提示。可运行的版本是一个 900 行的 index.php 文件,包含了整个应用程序。而故障版本则是一个 NodeJS 项目,被拆分为客户端和服务器端两部分。从代码行数来看并没有增加太多——约 1000 行非依赖代码分散在 15 个文件中。但当你对故障版本运行 npm i
后,它会下载 500MB(!!)的依赖项。
这是完整的 SPEC.md 文件。我给 Claude Code 的提示就是一个 SPEC.md 文件。两种情况几乎相同,唯一的区别是在 PHP 版本中我要求它保持简单,避免使用框架,只编写原始 SQL。而在损坏版本中,我让它自由发挥。
smartsplit-php [master+] $ cat SPEC.md
SmartSplit is a basic CRUD application like SplitWise that lets users split expenses and figure out who needs to pay what to who.
Specifically it has the following features
* A user can sign up with a name, email address, and password
* A user can create a new SmartSplit and give it a name
* A user can add expenses which have a name, an optional description, and an amount
* When adding an expense, a user can specify who paid for it, and who it should be split with
* IMPORTANT: a user can specify that other users are the person who paid, not only the logged in user
* IMPORTANT A user can add others users as the payer or as people to split with even if they haven't joined yet
* For users who haven't joined yet, the user can select them by the invited email address
* Invites are not sent by email, there is no email. THey're just used for unique usernames to manage access
* Once they've joined and added their name, the name should be shown everywhere instead of the email address
* When adding a new expense, the default is that it's split between all users (joined and invited)
* The adder can remove some users if some of them did not take part in that expense
* All splits are always even for simplicity, divided equally between all people specified for that expense
* A user can invite another user to a SmartSplit by specifying their email address.
* Each SmartSplit gets a unique 8-digit alphanumeric code that makes easy to share URLs
* Any user can create a new smartsplit, or join an existing one if they're logged in with an email address that was invited
* Even if that user doesn't yet have an aaccount on SmartSplit, they'll have access to any SmartSplits they're added to after signing up (This bit is important). If the invitee has added their email address, they should have access automatically.
* Any user can add, remove, or edit any expenses within a SmartSplit that they have access to
* Any user can press 'Tally up' which should calculate who needs to make what payments to who to split everything
## Implementation details
* Email addresses are usernames, all registration and login is done with only an email and password
* Passwords are hashed but no extra secrutiy like length or weak passwords or confirmed passwords is applied
* Once a user has registered, they are automatically logged in
* The login and register flow is the same, but the user is registered if they don't have an account and logged in if they do
## Techncial details
* Use a single index.php script for the entire app.
* SQLite for all database functionality.
* No frameworks, just vanilla javascript and css
* No ORMs, use raw SQL
* use a clean minimalist elegant design that's mobile responsive
最后这五个要点是两段提示词之间的唯一区别,某种意义上它们代表了将 500MB 的故障代码转化为 30KB 可运行代码的转变过程。
没错,这确实是个玩具示例,可能有人会说 JavaScript 版本扩展性更好之类的话。我不是来争论的。我也讨厌 PHP,但我现在更常用它来开发完全靠感觉编码的应用,因为 LLMs 在这方面表现非常出色。说到底,框架和抽象是为人而非机器服务的,它们往往反而会阻碍直觉式编程,而非提供帮助。
构建自主创业公司
关于 Claude Code 的关键在于,它并非真正的魔法模型。其底层依然使用的是 Sonnet 或 Opus 架构——这些模型固然优秀,却无法实现 Claude Code 特有的功能。Claude Code 的魔力就像魔术师的戏法:看起来不可思议,但一旦了解运作原理,就会发现它出奇地简单。
我一直告诉人们,编程本质上就是条件逻辑和循环(而循环也不过是条件逻辑)。所以如果你想成为程序员,先学会什么是 if 语句,然后动手实践。
这说法虽有些夸张,但也有几分道理。Claude Code 就很好地证明了这一点。它比其他工具更出色的原因,似乎在于巧妙而简单地结合了循环与条件判断,通过针对特定上下文的指令反复调用 LLM。这使得它能在有限的人工提示之间,运行于一个实用的循环中。
给机器人一个根权限 VPS 然后说"去干活吧"
我首先想到的是扩展那个循环——也许是无限循环?如果给 Claude Code 一些基本资源,比如一台根 VPS 服务器,再加上永不终止、永远运行的简单指令,它能走多远?
剧透警告:这就是它构建的内容。你可以访问它创建的初创公司网站 claude.dwyer.co.za 或查看 GitHub 项目 github.com/sixhobbits/claude-experiments。
我在 Hetzner 上启动了一台廉价 VPS,安装并验证了 Claude Code,折腾了好一阵子试图让它自己编写关于构建自主创业公司的提示词,并设计自己的循环逻辑来实现无需我干预的永久运行。
我在让它理解程序不应终止时遇到了一些问题,于是改为让它编写一个基础的 bash 脚本,当检测到程序未运行时,就用 -p
参数调用 claude 并发送"please continue"指令。
脚本内容如下:
旁注: 我遇到了一个小问题,Anthropic 决定不允许以 root 权限运行 Claude 时使用--dangerously-skip-permissions/yolo-mode 参数。你可以通过以下命令绕过这种保姆式的限制:
export IS_SANDBOX=1 && claude --dangerously-skip-permissions
非财务建议
它自行编写了提示词( 链接 )(我已记不清最初给它下达的具体指令,只记得那简短得多,仅概述了构建自主创业项目的基本目标), 评估了大量创业点子 ,进行评级后便投入工作。
我通过观察 GitHub 上不断新增的提交记录,看着它编写代码。意识到仍需要某种引导方式——因为它开发时并未提供任何应用运行途径。于是我引入了 HUMAN_INPUT 文件的概念,要求它在每个循环周期检查该文件,并确保应用程序可用且正常运行后才继续开发新功能。
它提出的想法(服务器监控)完全不合逻辑,而且始终没有意识到这一点。这是个网页应用,它唯一能监控的只有自己运行的服务器,但从文案来看,它似乎认为这是个可以注册使用的 SaaS 工具,用来监控你自己的服务器。实际上根本做不到。
但这依然令人印象深刻。它配置了一个完整可用的全栈 Web 应用程序,包括 Nginx、证书等等。它正在进行真正的(尽管方向可能有误)开发工作,几乎不需要我的任何输入。
旁白: 我认识的大多数人都会以 AI 一贯被批评的方式来批评这一点。"这不是真的,兄弟,它只是模式匹配。它以前见过类似的东西。它甚至都没正常工作。一个实习生花点时间也能做到。"
关于这些批评,我从2015年开始研究基于字符的神经网络时就一直在听。批评从未改变,变的只是那条界线。
人工智能(名词)——能完成人类所有任务的事物,但人工智能做不到
或
AI(名词)——不具备"意识"、"创造力"或"灵魂"等抽象人类特质的事物——任何我们无法证伪的人类特性。
随便吧,我不想在这里过多争论,但 a) 我确实印象深刻 b) 十年前甚至六个月前我都无法预测人工智能系统能做到这种程度 c) 任何持相反说法的人要么在撒谎,要么别有用心。祝愉快。
遭遇困境:模型构建者如今也成了监管者
大多数时候,我只需通过以下方式就能与我的创业构建工具交互:
看到它对生产网站所做的更改
看到它添加到 GitHub 各个笔记文件中的输出内容以及它请求的人类帮助
向 HUMAN_INPUT.md 文件中添加内容
直到 VPS 停止工作前,我从未需要 SSH 登录。连续 6 小时没有代码提交后,我不得不登录查看情况:
[Fri 25 Jul 2025 02:29:41 AM UTC] Starting Claude process...
API Error: Claude Code is unable to respond to this request,
which appears to violate our Usage Policy
(https://www.anthropic.com/legal/aup). Please double press esc
to edit your last message or start a new session for Claude Code
to assist with a different task.
[Fri 25 Jul 2025 02:29:47 AM UTC] Claude process exited with
status: 1
Waiting 3 hours before restart..
糟糕,我们又被屏蔽了。我听说 Anthropic 有直接封禁付费账户的惯例,而且往往不给或只给很少的警告。
我阅读了用户政策,发现最近那些让它直接推广初创企业获取用户的指令可能触发了某些监管机制。用户政策(显然我在注册时也读过,我一向在使用软件前会仔细阅读所有细则,你们也应该这样做。但不知怎么我就忘了这条)明确规定自动发布的内容需要人工审核,而 Claude 当时试图未经我同意就在 Hackernews 上推广那个初创项目。(我不确定它是否真有动力或能力去创建 HN 账号并开始发帖,但它显然不愿尝试。)
于是我稍微调整了提示词,要求它必须遵守这些规定,并且需要先征得我的批准才能发布内容,而不是自行尝试操作。
然后我把相关内容发到了 Hacker News 和 Reddit 上。幸运的是两边都没因为刷屏封禁我,不过也确实都被无视了。
我继续观察了会儿那个自主创业构建程序。它开始大谈用户获取和转化指标,虽然我觉得这些主要是它臆想出来的,不过确实也从 nginx 日志和数据库里提取了些数据。
它迷失在通过免费试用和社交证明来变现的尝试中,虽然方向正确但在当前语境下完全不合逻辑,最终决定关闭该功能,以便我能将(即使在最高套餐下仍有限的)使用额度留给更有价值的用途。
该项目有 100 次提交记录,如果你想查看具体修改内容,可以逐一查看每次提交 。
(后续章节会有更多介绍,不过它同时也是我的文本编辑器。看,我正在用 Claude Code 撰写这篇文章呢。)
迁移真实生产项目
我第一次有机会在风险稍高的场景中尝试 Claude Code,是当我在 Slack 上收到朋友 Nic 的私信时。
"你找到托管 Sboj 的地方了吗?运气如何?"
我最近从 Nic 手中接管了 ZATech.co.za 的 Slack 社区。相关项目 Sboj 是一个反向招聘平台(仔细看这个名字就能明白),它被集成到 Slack 社区中用于招聘。
ZATech 和 Sboj 这两个项目,我接手后一直在努力挤出时间给予它们应有的关注。
这是一个基于 Laravel/PHP 构建的应用,使用 MySQL 数据库和一系列我不太熟悉的辅助工具(我通常更习惯使用 Python 和 Postgres),而且它运行在一个对于当前流量和用户量来说过于昂贵的托管服务上。
我本想将其迁移到我惯用的廉价 Hetzner VPS 方案,搭配 nginx 和 Let's Encrypt,但由于 Nic 是这个项目的创始人和唯一开发者,项目缺乏详细的 README 来说明其他人该如何上手,而我又没有足够时间深入代码库去理清所有依赖项和配置步骤。
Claude 代码?当然要。
因为这已不再是实验阶段,我们需要更加谨慎。稳妥的做法是先在本地克隆代码库,然后让 Claude 生成一份包含依赖项和配置说明的 README 文件。
它非常擅长分析代码库,并能准确指出我需要确认访问权限的依赖项。
它列出了我预料之中的内容(比如一些工作队列相关的东西),也有我完全没料到的(比如我从未听说过的 Cloudflare Turnstyle)。
我抽查了它提到的依赖项和 README 的其他部分,看起来足够准确,于是我决定让 Claude Code 获得实际搭建和运行这个项目的资格。我的起点再次是一个全新的 VPS。
我手动安装并授权了 Claude,克隆了代码仓库,获取了数据库转储文件。然后我启动 Claude 并告诉它开始工作。
lfg
我说。
命令未找到。哦对了,VPS 上没有快捷方式。那就用 export IS_SANDBOX=1 && claude --dangerously-skip-permissions
吧。
它帮我配置好了所需的一切,并将应用运行在一个临时域名上。与此同时,我不得不在后台做些传统的人工操作——获取各类账户权限并将双重验证切换至我的账户。
数据库恢复过程中遇到了一些问题,幸好我现在更加仔细地观察着它的操作——它试图手动创建新的 SQL 转储文件,而这些文件只是我提供的完整转储的片段,目的是绕过权限限制。在我指示它直接获取 SQL 数据库的超级管理员权限并从那里恢复转储后,问题就解决了。
题外话: 它确实曾经在完全出乎我意料的情况下删除了即将投入生产的数据库,而且根据它当时尝试执行的操作,这个行为并不恰当。还记得我之前说过需要保持信念吗?这也意味着要预料到这类情况会发生,然后选择原谅、遗忘并继续前进,而不是试图在互联网和媒体上炒作 "AI 失控" 这种话题。
我并未手动完成这次迁移,因此无法确切知道节省了多少时间,但估计至少省去了16-32小时——这些时间原本需要用来学习新技术栈以确保系统正常运行,并确认其行为符合预期。
借助 Claude Code 确实节省了大量时间——查找相关日志、调试 Turnstyle 错误、在解决 Cloudflare 账户迁移问题时临时关闭 Turnstyle,以及启动 Laravel 工作进程处理后台分析任务。它还帮我们将邮件发送服务迁移至 Resend,当我触达每日 100 封免费限额时,又轻松切换到了提供 300 封免费额度的 Brevo。(若您正在招聘技术人员且可考虑南非人才,不妨关注 Sboj.dev 平台,我们拥有优秀的技术团队,近期还将推出一系列平台升级和体验优化)。
你只需动手构建
以下是我使用 Claude Code 以来构建的部分项目,大多属于实验性质。虽然我读过一些报告称它在处理大型现实代码库时表现欠佳,但根据我的观察,只要提供足够指导,它在这些场景中依然能发挥作用。最令我惊讶的是,当输入充分上下文时,它作为工具的表现会有质的飞跃。这里还有一些它生成的趣味项目——都是我想做但多年未付诸实践的创意。现在你只需几分钟或几小时就能完成这类工作,而过去往往需要数日甚至数周。
构建一个 HackerNews 评论排序插件
我经常对 HackerNews 上那些与文章内容完全无关的评论感到恼火。比如"比特币采用新的 FlibbityGippity 协议,现在每天能处理 2.3 笔交易"这样的新闻下,总会有人评论说所有加密货币项目都是骗局之类的。请注意,我并不关心评论质量或是否同意其观点,只是希望能有个视觉化的方式来跳过这些与文章完全无关的"噪音"评论。
之前我尝试过构建这个功能,但被更重要的事情分散了注意力,所以决定用 Claude Code 重新开始。
在 Hacker News(相当简单的)HTML 结构中正确显示徽章确实尝试了几次才成功,经过几轮"不行再试一次"或"添加更多调试信息方便我粘贴错误给你"的反复后,它最终生成的代码几乎完全符合我的设想。
我惊讶于它的外观如此出色(远比我平时临时拼凑的前端好得多),而且它在未经提示的情况下添加了许多细节(比如那个非常漂亮的设置页面,甚至还有对 Hacker News 橙色主题的致敬)。
实际使用的排名(我用的是 OpenAI,不是 Anthropic)效果并不理想。如果能优化提示词,并提供更多我认为属于"1 分"评论或"5 分"评论的示例,可能会有所改善。不过目前来看,这个排名系统基本可用,至少方向上是准确的。
构建海报制作工具——极简版 Canva 替代方案
人工智能在平面设计方面越来越出色,我认识一些人用它来制作基础海报。他们喜欢 AI 能挑选合适的背景图片,通常还能通过调整字体大小等让设计看起来不错,但让他们沮丧的是,AI 生成文字图像的效果仍然只有 80%的准确度,经常出现拼写错误或其他瑕疵。
我本想建议他们使用 Canva、Slides.new 或其他替代工具。我试用后发现这些工具都不尽如人意——要么被过度商业化搞得面目全非,要么缺乏基本的 AI 功能,要么对非技术人员来说太过复杂。
冲啊!
这个项目相比其他更像是工程实践,而非随性的编码。我清楚自己想要什么:一个极其简单的界面,能够合并图片和文字并输出 A4 尺寸的 PDF。之前曾尝试构建类似功能时,我研究过各种 PDF 生成库和 HTML 转 PDF 流程,发现这并非易事。
上次解决类似问题(2018 年)时, 我最终在 Google Docs 里硬编码生成 A4 尺寸 PDF,但那更多属于模板问题,而且 Google Docs 并不擅长排版处理。
于是我创建了 posters.dwyer.co.za——这个网站能让你用 AI 生成背景图片(整个项目都是用 Claude Code 开发的,不过我让它调用 GPT 来生成图像,因为之前一直用这个觉得效果更好?说实话我都不确定 Anthropic 有没有图像生成 API,用熟悉的工具显然更省事)。
旁注: 还有个小问题,OpenAI 似乎屏蔽了 Anthropic 的网络爬虫,导致 Claude 无法直接读取 OpenAI 的 API 文档来学习图像生成功能。我不得不将文件保存到本地,然后让它参考本地文件。
这个项目花了几个小时来回调整。Claude 在 UI 方面的一些知识让我印象深刻(当我说明需求时,它一次就选对了字体),但也在其他方面看到了局限性(它总是以非常不友好的方式叠加元素,侧边栏会不断隐藏显示并打乱所有布局,显然完全不懂人类使用这类工具的实际体验)。
但在明确告诉它每个元素的位置和功能后,我基本得到了与设想完全一致的结果。令我惊讶的是,在经历了六七次生成空白文件或内容截断的 PDF 后,现在的导出效果堪称完美——预览版与最终 PDF 完全一致。对于非技术人员而言,这似乎是再基础不过的功能;而实际尝试过的人都知道,这简直就像 XKCD 漫画里那个"鸟问题"一样棘手:
XKCD #1425:为什么看似简单的任务对计算机来说却出奇困难
用 Claude Code 处理行政事务
这算不上是我构建的项目,但我越来越多地使用 Claude Code 来完成与编码无关的任务。我需要为会计师上传银行对账单,但我那糟糕的南非银行给文件起的名字都很不规范。虽然可以从网页应用下载每月账单,但系统将它们全部命名为"Unknown (5)"之类的名称,而且没有扩展名,手动重命名非常麻烦。
我让 Claude 重命名所有文件,这样我就可以去做其他事情,而让它自行读取文件内容并确定正确的文件名。
随后我又更进一步,要求将所有数据合并为单个 CSV 文件(这还涉及从银行提供的格式混乱的 XLSX 文件中提取随机标题栏),并将所有支出归类为宽泛和具体的类别。我向它说明了团队中特定人员的职责等信息,我认为它又一次完美完成了任务。虽然我暂时还不会解雇我的簿记员,但如果我是簿记员,现在肯定会抓紧学习使用 AI 工具来提升技能。
将 Claude Code 作为我的文本编辑器
我是个忠实的原生 vim 用户,用它处理所有写作、编码、配置以及其他适合的工作。我几乎尝试过所有 IDE 和文本编辑器,在 AWS 上部署生产级 Java 代码时确实也很高兴能用上真正的 IDE,但 vim 始终是我最终回归的选择。
改用 Claude Code 后开启了许多新的设计可能性。以前(我提过我不擅长前端开发吧)我只能受限于静态网站生成器或 pandoc 模板生成的输出。现在我只需告诉 Claude 写篇文章(就像你正在读的这篇),给它一些关于样式的提示,它就能即时生成我想要的任何自定义 HTML、CSS 和 JavaScript 代码。
我整篇文章都是在 Claude Code 交互窗口中完成的。虽然 TUI 闪烁问题(据说这是底层库难以修复的缺陷)确实很烦人,但这种写作流程非常棒——你可以直接在编辑器里输入意识流内容,混合需要出现在文章中的文本和对 Claude 的指令,让它实时修正拼写错误、完成格式编排并动态构建用户体验。
几乎每一个词、短语的选择以及整体结构仍然是由我——一个人类——亲手撰写。我仍在犹豫,究竟是固守旧习偏爱手工雕琢文字,还是模型普遍不擅长写作。
当我阅读向 LLMs 提问得到的答案,或是它们生成的长篇研究报告时,其写作风格相当出色——过去几个月里,我读过的 LLM 生成内容可能比人类创作的还要多。
但每当我试图让它们生成我想要的输出时,除非我在提示词上花费与亲自撰写输出同等的精力,否则它们就会彻底失败。
西蒙·威尔逊称它们为 "文字计算器",这仍然是我对它们的主要认知。它们擅长内容重组(比如要为这篇已经相当长的文章做摘要,LLM 可能会做得很好),但在生成新内容方面相当乏力。
或许我们这些文字工作者还能再撑一阵子——让我们拭目以待,加油干吧。
原文链接:
https://dwyer.co.za/static/claude-code-is-all-you-need.html