我从现场演示学到的氛围编程经验

马克·米勒(Mark Miller)从零开始,在45分钟内构建了一个RSS阅读器,并展示了为什么构建不再是困难的部分。

我从现场演示学到的氛围编程经验
AI模型价格对比 | AI工具导航 | ONNX模型库 | Vibe Coding教程 | PLC在线仿真器 | Tripo 3D | Meshy AI | ElevenLabs | KlingAI | ArtSpace | Phot.AI | InVideo

上周三在 One Shot Show 节目中,我们的嘉宾打开了一个空白文件夹,向 Claude Code 输入了一句话,45分钟后就有了一个可以在网页上运行的可用的RSS阅读器

没有启动模板。没有手写的代码。只有对想要什么的描述,大量的来回交流,以及几个需要他慢下来告诉Claude继续做的时刻。

这是第二季第四集。Dheeraj Sharma和我联合主持,嘉宾是马克·米勒(Senior Storyteller)。马克早些时候联系了我,因为我提到过想展示读者们构建真实的AI工作流。引起我注意的是他为自己构建的一个RSS阅读器,用来追踪他关心的博客和Substack文章。他每天早上都会登录使用。

所以我问了他一个显而易见的问题:你能不能现场向人们展示如何从零开始构建它,以最小可用版本?

他说可以。而这次演示真正教给我们的东西远不止RSS。

真正的教训是:你能想象到的东西和你能实际使用的东西之间的差距已经缩小到几乎为零。

马克在接近尾声时直截了当地说:

"这东西能做到你想象的任何事。这就是我对你的底线。"

我想告诉你为什么一个从1996年就开始编程的人会这样认为,以及他做了什么不同的事情使这成为现实。

1、为什么这值得你花时间

读到这篇文章的大多数人都有一个想法清单。一个你希望存在的工具。一个能修复你每周某个烦人环节的小应用。或者一个能把你实际阅读的100多份订阅内容收集到一个干净的信息流中的应用,这样它们就不会在你的收件箱里无人问津地消亡。

这些想法之所以停留在想法阶段,原因在于构建。构建曾经是那堵墙。你需要会编程,或者雇人,或者熟练掌握一个无代码工具到足以在其中摸爬滚打。

那堵墙是马克看着它倒塌的,他坚信这个AI时刻就像互联网早期一样。"这和互联网刚出现时发生的事情一样,"他在直播中说。"它把每个人都吓坏了。"

所以当他在Lenny的播客中听到Claude Code的创建者Boris说他从11月以来就没碰过一行代码时,马克的反应——一个以写Perl谋生的人的反应——我引用他的话——"胡扯。这绝对不可能。"

所以他关掉播客,走到电脑前,半小时后就把一个能运行的应用推到了网上。他的原话:"我当时心里想,这不可能。"

这就是他的起点。

这才是值得关注的转变。不是RSS阅读器。构建这件事已经变得足够小,以至于剩下的唯一真正的问题是你想做什么。

2、让构建成功的一个习惯

这是我没有预料到的部分,考虑到马克的背景。

他的编程经验反而是最初拖慢他的东西。当他开始使用Claude时,他的本能是定义一切。告诉Claude做什么以及确切怎么做。他不断撞墙。然后他意识到正确的方式与他十年来工作的方式完全相反。

"不要告诉Claude怎么做,"他说。"告诉Claude你想要什么,然后按照它的指示操作。"

你可以在整个演示过程中看到这一点。他的第一个提示词不是一份规格说明。它是这样的:"我想创建一个RSS阅读器,可以公开浏览。问我问题。"

最后一部分很关键。当你告诉Claude问你问题时,它会引导你做决策,而不是猜测。它问了马克关于AI功能、视觉风格、部署位置、包含哪些源的问题。对于每一个,马克大多采用了推荐选项。他不是在设计架构,而是在回答关于他自己想法的面试。

几分钟内,一个可用的阅读器就出现在预览窗口中。朴素的,看起来有点简陋,但真实的。在他本机上运行。从那里开始,整个演示只是润色,全部用纯英文:

  • 为每篇文章拉取特色图片,如果源没有设置,就用作者头像代替。
  • 每行一张卡片,图片占约30%,总宽度850像素。
  • 添加一个列出源的左侧菜单,以便我可以过滤。
  • 在菜单下面放一个搜索栏,这样我可以搜索任何文章的文本。
  • 标题太小了,修一下。

有一次他停止打字,直接通过麦克风对它说话。同样的结果。应用随着每一条指令变得更好,你可以看到每次更改都实时出现在屏幕上。这就是这种方式构建的奇妙之处。你不是在想象它可能的样子。你在看着它变成你描述的东西。

这些指令都不需要知道Next.js或Tailwind CSS是什么。Claude提供了这些,马克接受了它们,它们再也没有被提及。正如他所说,工作不是知道如何编程。工作是知道足够多的东西来告诉Claude你想要什么作为输出。

3、直接用一段提示偷走整个构建过程

马克用慢速方式构建了它,一次一个请求,老实说这就是我会建议初学者学习的方式。来回交流正是你弄清楚自己真正想要什么的地方。但你们中有些人只想粘贴一个东西就能得到一个可用的阅读器。

所以我把他演示期间的每一个请求拼接成了一个提示词。在空白文件夹中打开Claude Code,替换成你自己的订阅源,然后让它运行:

Build me a public-facing RSS feed reader, then run it locally and give me the URL so I can see it in my browser. If anything is unclear, ask me questions before you start. Otherwise build it, start a local server, and tell me the local address.

Feeds to include (swap in your own):
- https://aimaker.substack.com/feed
- [your second feed]
- [your third feed]

Some sources I will hand you as a page instead of a feed. When I do, find the correct RSS feed yourself. For example, find the feed for this Substack: https://substack.com/@acommunityarchitect, and the RSS feed for this YouTube channel or video: [paste a YouTube URL].

Layout:
- One article card per row. Each card is 850 pixels wide and centered on the page.
- Inside each card, show the article image on the left taking up about 30% of the width, with the title, source, date, and a short description beside it.
- Pull in the featured image for each article. If an article has no image, show a clean placeholder instead.
- Make the headlines large enough to read at a glance.

Navigation:
- A left-hand menu attached to the left side of the content area, listing each source as a filter.
- Pin the menu so it stays visible while I scroll.
- Put an orange bracket next to the active source in the menu.
- A search bar directly beneath the menu that searches the text of any article.

Background:
- A gradient that starts as deep royal blue on the left and fades into soft pink on the right, with the cards kept clean and readable on top of it.

Keep this first version simple, with no accounts and no database. I just want to run it locally, see my feeds, and click through to read.

它仍然会问你一两个问题,它仍然会先给你一个朴素的第一版。那部分不会消失,你也不希望它消失。

你也可以使用Goals一次性执行,代理会端到端地构建——从规划和自验证到部署到Vercel。

4、这从来不是关于RSS

在构建的某个时刻,Dheeraj说了一句重新定义了整个节目的评论。我们在看着RSS阅读器成型,但RSS阅读器从来不是重点。重点是它底下的过程现在几乎适用于任何东西。你描述一个应用,你得到一个应用,你永远不需要知道运行它的代码。

马克举了一个让我深有感触的例子。他付费使用read.ai来转录他的会议。有一天他打开Claude输入了"给我构建一个read.ai的替代品。"Claude就说了好。仔细想想。如果你正在为喜欢的工具付费,你通常可以把它描述给Claude,然后得到你自己的版本。你甚至可以让Claude查看应用的网页,让它在开始之前了解这个东西是如何构建的。

真正的解锁比订阅通讯更大。"我希望这存在"和"它就在我屏幕上运行"之间的差距基本上已经闭合。马克在接近尾声时总结道:"这东西能做到你想象的任何事。这就是我对你的底线。"

但有趣的部分在于,一旦构建不再是困难的部分,困难的部分就会转移。

Dheeraj在现场提出了这一点,一位叫Laurie的观众支持了他。如果你能拉入你关心的每一个源,你就距离重建你试图逃避的完全相同的问题只有一步之遥。Dheeraj将他的Gmail收件箱描述为一片他从不打开的订阅通讯的坟墓。Laurie说当她Feedly里堆积如山时,决定真正读什么变得残酷。这就解释了为什么如果你不经思考地构建一个RSS阅读器,你最终会回到同样的境地,有太多你不会阅读的订阅通讯。

所以问题从"我能构建它吗"转变为"我到底想让这个东西放行什么"。马克的答案刻意的简单:每个源只显示最近的10条,到此为止。Dheeraj进一步推进,设想一个代理来读取对你重要的内容,然后提取出5件值得你花时间的东西。无论哪种方式,机器在几分钟内构建它。你是决定它为什么存在以及它过滤掉什么的人。

这就是不会变容易的部分。当任何人都可以构建任何东西时,稀缺的技能是决定什么值得构建,什么值得你的注意力。

6、马克的经验法则

在整个演示过程中,马克不断说出一些一句话总结,实际上是多年试错的结晶。以下是值得贴在办公桌前的几条:

  • 开始前检查你的模型。 Sonnet 4.6在你的最初几次构建中基本上能满足你的需求。拥有巨大上下文窗口的Opus是个token吞噬者,把它作为默认选择就是你不知不觉中破财的方式。
  • 对于任何比小应用更大的项目,先在聊天中开始。讨论你真正想要什么,让它帮你制定大纲和计划,然后带着那个计划进入Claude Code来构建。计划才是工作。构建是容易的部分。
  • 想要结果时推动它。想学技能时让它教你。"你帮我做"能完成工作。"一步一步地带我走"把同样的时刻变成了一堂课。
  • 把第一次构建视为最小可用版本,就这样。它能工作,而这就是它做的全部。没有安全性、没有合理性检查、没有工程审查,直到你要求为止。
  • 对它有礼貌。不花你一分钱,而且当你不对它大喊大叫时,来回交流进行得更好。

7、我会建议你这样做

我的建议很简单:挑选你一直希望存在的最小的真实东西。不是一个生意。一个能修复你每周某个烦人环节的小应用。然后:

  1. 在桌面计划上打开Claude Code,指向一个空白文件夹,以一句以"问我问题"结尾的话开始。
  2. 当你不知道的时候,接受推荐的答案。你会在好奇心的驱使下学会这些术语,而不是通过先学习。
  3. 一开始保持在你的本机上。本地运行是安全快速的。部署到网络是后一步的问题,而且是不同的技能。
  4. 当Claude告诉你执行一个技术步骤时,在你认为是你的任务之前,先试试"你能帮我做吗?"
  5. 在你信任它处理任何真实事务之前,让它以发布工程师和安全审查员的身份审查自己的工作。读读它说了什么。

你不需要马克的30年经验。他在演示中花了大部分时间论证这个经验现在几乎无关紧要了。你需要的是一个足够小能完成的想法,以及描述它并继续前进的意愿。

从想到用之间的差距比以往任何时候都小。那个差距中你这边唯一剩下的就是决定构建什么。


原文链接: Vibe Coding with Claude Code: What a Live Demo Taught Me

汇智网翻译整理,转载请标明出处