下载模型文件,加载一些塑料丝,按下按钮,就像变魔术一样,一个三维物体就会出现。但结果还没有经过完善,也没有准备好进行大规模生产,创造一种新颖的形状需要更多的技能,而不仅仅是按下按钮。有趣的是,今天AI编码代理感觉也差不多。
从11月份开始,我就开始使用克劳德·科德和 Claude Opus 4.5,通过个人 Claude Max 帐户广泛试验 AI 辅助软件开发(我还使用了 OpenAI)法典以类似的方式,尽管不那么频繁)。五十个项目之后,我坦白说:自从我在电脑上学习 BASIC 以来,我还没有从计算机中获得如此多的乐趣。苹果 II Plus当我9岁的时候。这个观点并不是作为认可,而是作为个人经历:我自愿承担了这个项目,并且我自掏腰包购买了 OpenAI 和 Anthropic 的高级人工智能计划。
在我的一生中,我一直以功利主义编码员的身份涉足编程,在需要时编写小工具或脚本。在我的网络开发生涯中,我从头开始编写了一些小工具,但我主要是根据我的需要修改其他人的代码。自 1990 年以来,我一直使用 BASIC、C、Visual Basic、PHP、ASP、Perl、Python、Ruby、MUSHcode 等语言进行编程。我不是这些语言中任何一种语言的专家——我学到的知识足以完成工作。多年来,我使用 BASIC、Torque Game Engine 和 Godot 开发了自己的爱好游戏,因此我对如何构建可随时间扩展的模块化程序的良好架构有了一些了解。
12 月,我使用 Claude Code 创建了一个多人在线克隆游戏片玉称为“圣诞节汇总”。信用:本杰·爱德华兹
Claude Code、Codex 和 Google 的双子座命令行界面,看似可以在小范围内创造软件奇迹。他们可以吐出简单应用程序、用户界面甚至游戏的华而不实的原型,但前提是他们从训练数据中借用模式。就像 3D 打印机一样,进行生产级工作需要付出更多的努力。创建持久的生产代码、管理复杂的项目或制作真正新颖的东西仍然需要经验、耐心和技能,这是当今人工智能代理无法提供的。
然而,这些工具为我打开了一个充满创意潜力的软件世界,而我以前对这些工具是关闭的,而且它们给我带来了个人的力量。尽管有这样的印象,但我知道这些都是业余爱好项目,编码代理的局限性使我相信经验丰富的软件开发人员可能不应该担心很快就会因为这些工具而失去工作。事实上,他们可能会变得比以往更加忙碌。
到目前为止,我在过去两个月里已经创建了 50 多个演示项目,部分原因是新冠疫情让我卧床不起,我带着一台笔记本电脑和 Anthropic 在 12 月最后几周实施的慷慨的 2 倍 Claude 使用上限。当我整天疯狂地打字时,我的妻子一直问我:“你在和谁说话?”
您可以看到一些更有趣的结果列出在我的个人网站上。以下是我从这个过程中学到的 10 件有趣的事情。
1、人还是必要的
即使拥有当今最好的人工智能编码代理,人类对于软件开发过程仍然至关重要。经验丰富的人类软件开发人员带来了人工智能模型所缺乏的判断力、创造力和领域知识。他们知道如何构建系统以实现长期可维护性,如何平衡技术债务与功能速度,以及当需求没有意义时何时推迟。
对于像我这样的业余爱好项目,我可以避免很多马虎。但对于生产工作来说,拥有一个了解版本控制、增量备份、一次测试一项功能以及调试系统之间复杂交互的人会带来很大的不同。在指导人工智能编码代理时,了解良好的软件开发工作原理非常有帮助——该工具可以增强您现有的知识,而不是取代它。
作为独立人工智能研究员西蒙·威利森写道在区分严肃的人工智能辅助开发与休闲的帖子中 –振动编码, – – 人工智能工具可以增强现有的专业知识。作为软件工程师,您拥有的技能和经验越多,您与法学硕士和编码代理的合作就能更快更好地获得结果。
借助人工智能的帮助,您无需记住如何做一切事情。你只需要知道你想做什么。
卡牌矿工:地球之心完全是人类设计的,但它是使用克劳德代码进行人工智能编码的。它代表了大约一个月的迭代工作。信用:本杰·爱德华兹
所以我想提醒自己,编码代理是最适合用来实现人类想法的软件工具,而不是自主编码员工。他们是不是人(而不是人员替代)无论他们背后的公司如何营销他们。
如果你想一想,你在计算机上所做的一切曾经都是手动过程。像这样对计算机进行编程埃尼亚克涉及到用电线在上面建立物理位(连接)插线板。编程的历史一直是自动化程度不断提高的历史,因此,尽管这种人工智能辅助的飞跃有些令人吃惊,但人们可以将这些工具视为一种进步,类似于高级语言、自动编译器和调试器工具或基于 GUI 的 IDE 的出现。它们可以自动执行许多任务,但管理总体项目范围仍然取决于告诉工具要做什么的人。
而且它们可以带来快速复利。我现在已经使用人工智能工具编写了更好的工具,例如更改模拟器的源,以便编码代理可以直接使用它,而这些改进的工具已经产生了连锁反应。但必须有人参与其中才能最好地实现我的愿景。这种方法让我非常忙碌,与一些普遍存在的对人们的恐惧相反变得更笨由于人工智能,我一路上学到了很多新东西。
2. 人工智能模型的脆弱性超出了训练数据的范围
与所有基于变压器架构,支撑当今编码代理的大型语言模型(LLM)有一个显着的局限性:它们只能可靠地应用从训练数据中收集的知识,并且将这些知识推广到数据中未表示的新领域的能力有限。
什么是训练数据?在这种情况下,在构建编码风格的法学硕士时,人工智能公司下载来自 GitHub 等来源的数百万个软件代码示例,并使用它们来制作人工智能模型。公司后来通过微调流程将它们专门用于编码。
人工智能代理使用反复试验的能力(尝试某件事然后再次尝试)有助于在一定程度上减轻法学硕士的脆弱性。但它并不完美,看到编码代理在一项任务上反复尝试和失败可能会令人沮丧,要么是因为它不知道如何去做,要么是因为它之前学会了如何解决问题,但后来因为上下文窗口被压缩而忘记了(更多关于这一点)这里)。
暴力跳棋是经典棋盘游戏的基于物理的损坏,使用 Claude Code 进行编码。信用:本杰·爱德华兹
为了解决这个问题,让人工智能模型在处理某些问题时记录大量笔记是有帮助的,以便代理的未来实例可以再次向它们学习。您还需要在代理开始会话时读取的 claude.md 文件中设置基本规则。
这种脆弱性意味着编码代理在他们所接受过的训练和微调方面几乎表现得非常出色——现代编程语言、JavaScript、HTML 和类似的代表性技术——而在他们没有接受过深入训练的任务上通常表现得很糟糕,例如 6502 汇编或用真实的角色图形编写 Atari 800 游戏。
我花了五分钟和 Claude 一起制作了一个漂亮的 HTML5 演示,但经过一周的痛苦试验和错误,再加上我自己的实际系统设计,制作了一个类似的 Atari 800 游戏演示。为此,我必须使用 Claude Code 发明多种工具,例如命令行模拟器和MCP服务器,使其能够窥探 Atari 800 内存和芯片组的运行情况,甚至开始实现这一目标。
3.真正的新颖性可能是一场艰苦的战斗
由于编码模型的神经网络(更技术地说,统计语义关联)中融入了诗意上所谓的“先入为主的概念”,即使你仔细地阐明你想要什么,也很难让人工智能代理创造出真正新颖的东西。
例如,我花了四天时间尝试获取 Claude Code 来创建我的 HTML 游戏的 Atari 800 版本暴力跳棋,但它遇到了麻烦,因为在游戏设计中,棋盘上的方块除了起始位置之外并不重要。无论我告诉特工多少次(并在我的克劳德项目文件中做了笔记),它都会回到尝试将棋子置于方块中心,将它们捕捉到方块内,或者使用方块作为游戏计算的逻辑基础,而实际上它们应该只是形成背景图像。
为了在 Atari 800 版本中解决这个问题,我重新开始并告诉 Claude,我正在创建一个游戏,其中有一个 UFO(而不是圆形棋子)飞过相邻方格的区域,并且从未提及“棋子”、“棋盘”或“跳棋”等词。通过这种方法,我得到了我想要的结果。
Benj 的 Mac 工作时的屏幕截图暴力跳棋Atari 800 家用电脑的端口以及其他项目。信用:本杰·爱德华兹
为什么这很重要?因为对于法学硕士来说,语境就是一切,而在语言中,语境会改变意义。拿单词“bank”并在其前面添加单词“river”或“central”,看看含义如何变化。在某种程度上,单词充当地址,解锁神经网络中编码的语义关系。因此,如果您将“棋盘”和“游戏”放入上下文中,模型就会自注意力过程链接了一个关于西洋跳棋游戏应该如何运作的庞大语义关联网络,而语义包袱却让事情变得混乱。
有一些技巧可以帮助人工智能程序员克服这些限制。首先,避免不相关的信息污染上下文。其次,当代理遇到困难时,请尝试以下提示: – 您需要什么信息才能让您立即完美地实施此操作?您可以使用哪些工具来系统地发现该信息而无需猜测?这迫使代理识别(语义上连接)自己的知识差距,在上下文窗口中详细说明并服从未来的行动,而不是盲目地胡乱挥霍。
4. 90%的问题
AI 编码项目的前 90% 进展很快,让您大吃一惊。最后 10% 涉及通过与代理进行来回试错对话,繁琐地填写详细信息。需要比代理能够提供的更深入洞察或理解的任务仍然需要人类建立联系并引导其朝正确的方向发展。我们上面讨论的限制也可能导致您的项目陷入困境。
根据我多年来的观察,较大的法学硕士比较小的法学硕士有可能建立更深入的背景联系。他们有更多参数(编码数据点),并且这些参数以更多维的方式链接,因此它们往往具有更深层次的语义关系图。尽管这些深入,人类大脑似乎仍然对语义联系有更深入的掌握,并且可以进行法学硕士往往不会做的疯狂语义跳跃。
从这个意义上说,创造力可能是当你从篮球等话题跳到肥皂膜中气泡的形成方式,并以某种方式建立有用的联系,从而带来突破。相反,法学硕士倾向于遵循传统的语义路径,这些路径更加保守,并且完全由训练数据中映射的关系引导。这限制了他们的创造潜力,除非提示者通过指导法学硕士建立新颖的语义联系来解锁它。这需要操作者的技能和创造力,这再次表明了法学硕士作为人类使用的工具而不是独立思考的机器的作用。
5. 功能蔓延变得不可抗拒
在使用人工智能编码工具创建软件时,体验新奇的乐趣会让您想要不断添加有趣的新功能,而不是修复错误或完善现有系统。Claude(或 Codex)很乐意效劳,在快速而令人愉悦的演示中(再次出现 90% 的问题)不断地研究那些很容易勾勒出的新想法,而不是完善代码。
信用:本杰·爱德华兹修复错误也可能在其他地方产生错误。
这对于编码代理来说并不新鲜,这是软件开发中一个由来已久的问题。但代理会加剧这种现象,因为他们可以快速浏览您的代码并进行彻底的更改,以追求影响许多工作系统的狭隘目标。我们已经讨论过拥有一个由上方方向盘后面的人类思维引导的良好架构的重要性,这在这里发挥了作用。
6.AGI还没有到来
鉴于我上面描述的局限性,很明显,具有通用智能(人们通常所说的)的人工智能模型通用人工智能(AGI)——仍然不在这里。假设 AGI 能够绕过固有的刻板印象关联,而不必依赖明确的训练或对许多示例进行微调来使事情正确。人工智能公司未来可能需要不同的架构。
我猜测,但 AGI 可能需要永久动态学习,就像修改自己的神经网络权重一样,而不是依赖所谓的“情境学习,--只会持续到上下文被填满并被压缩或清除为止。
如今的编码代理无法做到这一点,他们会忘记之前在长时间会话中或会话之间获得的经验教训,除非您手动为他们记录所有内容。我最喜欢的技巧是指导他们写一份长而详细的报告,说明修复错误后发生的情况。这样,当记忆删除的人工智能模型下次犯同样的错误时,你就可以指出来之不易的解决方案。
7. 即使快也不够快
使用 Claude Code 一段时间后,您很容易想当然地认为自己突然有能力在不了解某些编程语言的情况下创建软件。一开始这很令人惊奇,但您很快就会感到沮丧,因为传统上非常快的开发过程不够快。对编码机不耐烦了,你开始想要更多。
但即使您确实了解所使用的编程语言,您也不会获得免费通行证。您仍然需要就项目如何展开做出关键决策。当代理陷入困境或把事情弄得一团糟时,您的编程知识对于诊断问题所在并将其引导回正轨至关重要。
8.人们可能会变得比以往更加忙碌
在过去两个月通过克劳德代码指导了太多的业余爱好项目之后,我开始认为大多数人不会因为人工智能而失业——他们会变得比以往任何时候都更忙碌。电动工具可以在更短的时间内完成更多的工作,而经济将需要更高的生产力来匹配。
事实上,开发新软件几乎太容易了,而且可能会让人筋疲力尽。一个项目想法会引发另一个项目想法,很快我就在寒假期间每天花八个小时同时管理大约 15 个 Claude Code 项目。对于好的结果来说,注意力分散太多了,但是看到我的想法变成现实的新奇感让人上瘾。除了我在这里提到的游戏创意之外,我还制作了一些工具来抓取和搜索我过去的文章,一个基于ZZT的图形MUD,一种新型的穆什(文字游戏)使用人工智能生成的房间,一种新型的Telnet显示代理,以及 Apple II 的 Claude Code 客户端(稍后会详细介绍)。我还放置了两个支持人工智能的模拟器苹果二代和雅达利800在 GitHub 上。唷。考虑一下
蒸汽铲,这使得人类挖洞的速度比使用手铲的团队更快。它使现有项目更快,并使新项目成为可能。但想想蒸汽铲的人类操作员。突然之间,我们有了一个不知疲倦的工具,如果加满燃料并维护得当,它可以一天 24 小时工作,而驾驶它的人类则需要吃饭、睡觉和休息。
人类需要休息,即使机器不需要。
人工智能系统会取代人类的角色吗?即使人工智能编码代理最终能够完全自主工作,我也不认为它们会完全取代人类,因为仍然有人想要完成任务,并且新的人工智能工具将会出现来帮助他们完成任务。
9. 快速让人害怕
人工智能编码工具可以将曾经长达一年的个人项目变成五分钟的会议。我向 Claude Code 提供了一张 2008 年我在笔记本上画的两人俄罗斯方块游戏的照片,它生成了一个工作原型分钟内(提示:“根据此图创建一个功能齐全、带有音效的网页游戏”)。这太疯狂了,尽管结果并不完美,但理解这可能会给软件开发带来什么样的巨大变化还是有点令人恐惧。
自十二月初以来,我一直在发帖我将一些更有趣的实验性人工智能编码项目提供给 Bluesky 供人们尝试,但我发现我需要故意放慢更新速度,因为它们来得太快,人们无法吸收(而且太快,我无法完全测试)。我还收到过这样的评论:“我担心你正在使用人工智能,你制作游戏的速度太快了”等等。
Benj 手写的关于两人游戏的设计笔记俄罗斯方块2007年的概念。信用:本杰·爱德华兹
无论我自己的习惯如何,新软件的流动都不会减慢。很快就会出现看似无穷无尽的人工智能增强媒体(游戏、电影、图像、书籍),这是我们必须弄清楚如何处理的一个问题。这些产品也不会都是“AI 垃圾”;有些会做得很好,而且这些新的电动工具带来的生产时间的加速将使数量激增,超出我们所见过的任何水平。
社交媒体往往会让人们相信人工智能是好是坏,但这种非黑即白的思维可能是最简单的出路。你不会有认知失调,但你会错过更丰富的第三种选择:认为这些工具不完美,值得批评,但当它们将你的想法变为现实时,它们也是有用的和赋予力量的。
人工智能代理应该被视为工具,而不是实体或员工,它们应该是人类思想的放大器。我的游戏正在进行中卡矿工完全是我自己的高级创意设计工作,但人工智能模型处理了低级代码。我仍然为它作为我个人想法的表达而感到自豪,如果没有人工智能编码代理,它就不会存在。
10.这些工具不会消失
至少目前,编码代理仍然是那些想要构建东西的人手中的工具。问题是人类是否会学会有效地运用这些新工具来增强自己的能力。基于两个月的密集实验,我想说答案是肯定的,但有很多注意事项。
我们还需要面对社会问题:专业开发人员已经在使用这些工具,并且由于一些在线社区中普遍存在针对人工智能工具的耻辱,许多软件开发人员和托管其工作的平台将面临艰难的决定。
最终,我不认为人工智能工具会让人类软件设计师变得过时。相反,它们很可能会帮助这些设计师变得更有能力。当然,这并不新鲜。早在有记载的历史出现之前,各种工具就一直在发挥这一作用。最好的工具可以增强人类的能力,同时让人们掌控方向盘。3D 打印机的类比是:惊人的快速结果是可能的,但掌握仍然需要时间、技能和对机器的大量耐心。
