打开网易新闻 查看精彩图片

生成式AI在企业领域最大的成功案例是AI编程工具,它们能够协助程序员工作。Cursor、Replit、Lovable Labs、Harness、Windsurf、Augment Code、All Hands AI以及微软的Visual Studio with GitHub Co-pilot等公司都提供了能够大幅减少人工编码工作的程序。

作为一个编程知识有限的新手,我想知道:能否通过对话的方式来创建一个应用程序?

英伟达CEO黄仁勋曾说,用英语进行"氛围编程"将成为新的编程语言。带着这个理念,我开始了尝试。

我惊喜地看到Cursor等工具如何自动执行诸如设置"虚拟环境"、查找和安装代码库、安装和运行本地服务器以及进行持续调整等任务。一个应用程序能够通过用户的简单自然语言提示完成所有这些工作,这确实令人惊叹。

经过几天对多种工具的实验,我成功运行了一个小型、简单的数据分析程序。这是一个有希望的开始,但也很明显,如果没有一些实际的编程技能,我无法走得更远。

基于PC的工具如Cursor和微软Visual Studio经常让我进入终端窗口,要求我运行各种命令行任务。虽然我了解命令行操作,但这是一个繁琐的额外步骤——实际上是多个步骤。我相信一个没有我这样耐心的非程序员早就放弃了。

虽然不那么费力,但Replit和Lovable等云服务在我试图弄清楚应用程序需要什么改变才能继续前进时,很快就让我消耗完了积分。而且,将我的私人数据放在云端让我感到焦虑。

大多数使用AI的人都是用聊天机器人进行对话、分析少量文档,或者画图。

所有编程工具,包括Cursor等,都基于同样的原理:你在提示框中输入内容,程序接受项目描述(即使是模糊的描述),制定攻击计划,设置必要的代码文件,并自动为你的新程序生成用户界面,通常是在网络浏览器中运行的界面。

我的氛围编程项目目标是:一个数据库分析工具,能够处理文字处理文档并搜索其中的模式。我的愿景是在我的新闻通讯网站上添加一个部分,读者不仅可以对我的1731篇文章进行关键词搜索,还可以进行更复杂的自由形式查询,比如"英伟达作为一家公司和投资标的在过去五年中的地位如何变化?"我的文章中有数百次提到英伟达,可以产生一种在ChatGPT或Perplexity中询问同样问题无法获得的执行摘要,因为它们没有我的特殊文章。

我从Cursor开始,因为在这些工具中它是我听说最多的品牌,所以我想应该从大家都在谈论的名字开始。我下载并安装了MacOS二进制文件,就像其他Mac下载一样简单。

Cursor为Pro版本提供7天免费试用,但我决定跳过它,从免费计划开始。

对于非编程人员来说,注册后Cursor的第一个屏幕可能令人生畏。它询问我是否想要"打开项目"、"代码仓库"或"通过SSH连接"。

虽然我对这个程序的工作原理一无所知,但我知道它使用了像ChatGPT一样的聊天范式。我找到了如何进入"智能体"侧面板的方法——快捷方式:在键盘上按command+I——然后我描述了我的预期项目。

所有这些程序,无论是在Mac或PC上本地运行的,还是作为云应用在网络浏览器中运行的,都有三个基本的地方供你输入或观察结果:智能体面板,你在这里提示模型,我们都很熟悉;终端显示,你在这里看到传统的命令行,除了内行人外对所有人都令人生畏;以及你的应用程序图形用户界面的预览,这是你工作的最终结果。

这完全是关于在三者之间来回切换,当你提出请求、调整事物、查看结果并重复时。

使用Cursor的前几分钟令人兴奋。Cursor描述了项目的所有要求,这些我本来不会知道;然后它提议在我的硬盘上为项目设置文件结构,连接到数据库,安装必要的Python文件等。我询问是否可以使用Mac的.Pages文字处理文件,当Cursor告诉我它会从外部代码库安装必要的"解析器"时,我松了一口气。

我很兴奋。

然后:失望。

Cursor告诉我它会安装项目所需的一些Python库。然后程序重新启动了,我前一个小时的聊天历史无处可寻。完全没有聊天历史;它是空白的。这意味着我们讨论的构建计划消失了。

我在这个问题上花了一个小时,了解到其他人也遇到过聊天历史消失的情况。帮助论坛和智能体窗口中关于这个问题的新聊天表明,这只是可能发生的事情之一。项目的聊天历史存储在Mac硬盘上当前用户账户的~Library文件夹内的"工作空间"文件夹中。但是,如果Cursor没有自动检索聊天历史,就没有办法强制它检索任何聊天历史。

这对我来说是不可接受的。我不会使用一个不能可靠维护聊天历史的程序,因为聊天历史是氛围编程的关键创新之一。我放弃了Cursor,转向了Replit。

Replit完全在线,在云端,无需下载。我对此不太满意,因为我希望在我的Mac上离线使用自己的数据,但为了实验的缘故,我决定冒险暴露我的数据。

我描述了项目目标,Replit开始设置环境,在大约15分钟内准备好了一个基本的应用窗口预览模式。我请求使用.Pages文件作为数据的能力,它调整了环境变量。

所有这些托管在云端的程序在你必须停止并等待再次工作之前都有一定的容量限制。在我有机会对新创建的应用做任何事情之前,我很快就用完了Replit的配额。

在我尝试的第一个大查询中,应用失败了,因为它说没有上传数据,尽管我的所有数据源都在侧面板中被选中了。就在我在Replit中描述缺失文件问题时,我达到了免费计划的配额,被告知除非升级到付费计划,否则必须等待24小时才能恢复工作。

当我考虑是否要升级到Replit的付费计划时,我知道我仍然想在本地机器上而不是在云端工作。所以,我接下来转向了微软的Visual Studio,它有内置的GitHub Copilot功能,提供像Cursor和Replit一样的基于聊天的编程。Visual Studio有一个专门的Mac IDE,就像Cursor一样。

虽然Visual Studio可以请求权限运行终端命令,但大多数时候它提供的是我必须复制粘贴到命令行的代码片段。

最后,经过几个小时的终端操作,所有技术问题都得到了解决,一个原型分析应用在本地服务器的网络浏览器中运行起来了。这是我走得最远的一次,所以我很兴奋!

然后来到了真正困难的部分。Visual Studio产生的是一种简单的文本字符串匹配功能,只是看看给定的文本字符串是否能在文件中找到。这不是分析,只是关键词匹配。我尝试提示Visual Studio Copilot改进分析,但在Visual Studio中进行了数小时的试错,没有任何改进。

此时很明显,构建一个能够实际执行文本分析的分析工具是一个复杂的问题。这不仅仅意味着能够编码,或让Copilot编码;它意味着理解分析功能的组成,这会影响所做的选择。

我仍然不准备给Replit付钱,所以我转向了Lovable,它提供免费的基于云的设置,看起来很像其他许多工具。

我很高兴看到Lovable如何快速创建一个网络前端来上传文件和执行文本分析。此外,Lovable有最简单的用户界面,隐藏了很多代码细节。在我使用的四个工具中,Lovable最像使用ChatGPT、Gemini或Perplexity。

然而,我很快得出了与Visual Studio相同的结论:要获得有意义的分析,需要更多的工作。我告诉Lovable我想要分析上传文章中的"主题、想法和观点",它建议我使用Google Gemini,我同意了。

这是一个改进。Gemini提供了一些我认为相关的高级观察。然而,由于Apple .Pages文件的独特解析要求,Gemini只能分析文档标题和元数据,而不能分析文章的主体。

在我能够采取下一步行动之前,我已经用完了免费计划的积分。我喜欢到目前为止看到的,而且我被失败搞得筋疲力尽,决心不能空手而归。

所以,我为Lovable的Pro计划输入了我的信用卡,每月25美元,100个积分。

我继续进行一些改进。我没有依赖.Pages文件,而是将Lovable连接到我在Algolia服务上维护的XML格式文章存档。这个过程相对简单。应用程序能够从Algolia服务器检索所有文本,将其发送给Gemini,Gemini响应查询执行基本的语义分析。

我终于实现了一个基本的文本分析应用程序。

在结束之前,我回到了Replit,在我的免费积分暂停一天后。暂停已经结束,我能够从离开的地方继续工作。我继续尝试解决文件无法读取的问题。似乎Replit在提取我的.Pages文件内容时出现了某种错误。我再次尝试上传文档,Replit试图修复情况,但这又拖了半个小时。我放弃了Replit,很高兴我没有给他们任何钱。

AI工具帮助我做了很多没有它们我无法完成的事情,这是肯定的。同时,它们让我意识到,要掌握程序的所有特性和安装维护代码的怪癖,我还需要投入多少努力。

我被夹在两个世界之间:桌面软件世界,如Cursor和Visual Studio,以及云托管平台世界。对我来说,两者都不完全合适。桌面软件给我带来了太多麻烦。但云原生版本一直在计费,累积成本,而且我必须通过将数据放在远程服务器上来暴露我的数据。

在拥有大型IT团队的大企业内部,其他人会为我处理设置虚拟环境、管理数据等细节。但是,作为一个独资经营者,我就是IT团队,对我来说有很多额外的工作。

我要说,使用这些工具让我对程序员有了更大的欣赏。我坐着看过人们编程,对他们如何做出直觉跳跃来发现代码中的问题并即兴解决方案感到惊讶。即使在大量自动化帮助下尝试和失败做任何事情,都让我更清楚地看到仅仅管理工具本身并在自动化不工作时跳入行动涉及多少内容。

我不认为人类编码员的工作会很快消失。

我也对产品开发团队有了更大的欣赏。当我最终通过Lovable达到可用的东西时,我清楚地看到设计终极应用程序以及弄清楚如何到达那里还需要多少工作。你可以自动化代码,但这只是留下更多关于你实际试图构建什么以及如何知道何时获得最小可行产品的决策。我认为这意味着产品开发团队也不会消失。

Q&A

Q1:什么是氛围编程?它有什么特点?

A:氛围编程是指用自然语言(如英语)与AI编程工具对话来创建应用程序的方式。用户只需在提示框中输入项目描述,程序就能制定计划、设置代码文件并自动生成用户界面,大幅减少手工编码工作。

Q2:Cursor和Replit这些AI编程工具适合完全没有编程经验的人使用吗?

A:虽然这些工具能自动化很多编程任务,但对完全的新手来说仍有挑战。桌面工具经常需要命令行操作,云端工具会快速消耗积分且需要将数据上传到云端。要创建复杂应用,仍需要一定的编程知识和产品设计理解。

Q3:使用AI编程工具会完全取代程序员的工作吗?

A:不会。虽然AI工具能自动化代码生成,但仍需要人类程序员来管理工具、解决自动化失效时的问题、做出产品设计决策等。这些工具更多是协助程序员提高效率,而不是完全替代他们。