本周节目讨论了 AI 工具及其在开发者中的应用。主持人分享了他们使用 AI 聊天机器人的经验,重点介绍了其在代码生成、问题解决指导和代码解释方面的实用性。他们还讨论了 AI 工具在查找代码片段和记住 API 名称方面的优势。AI 工具对开发者非常有用,尤其是在处理过时或晦涩的技术时,因为它们可以提供准确且相关的资料。虽然 Apple 在 Xcode 中的预测代码补全功能有限制,但这却是将 AI 整合到开发者工具中的一步。然而,Apple 承诺的基于聊天的工具 Swift Assist 缺乏进展,这让人们对 Apple 在快速发展的 AI 领域中的竞争力表示担忧。本期节目中提到的内容开发者 DuckCursorGitHub Copilot for XcodeClean My Mac关注 Peterhttps://peterwitham.com关注 Geoffhttps://cocoatype.com成为 Patreon 会员并帮助此播客生存https://www.patreon.com/compileswift感谢我们每月的支持者Marko WieseAdam WulfbitSpectreArclite★ 支持此播客在 Patreon 上 ★</context> <raw_text>0 大家好!欢迎收听 Compile Swift Podcast 的另一期节目。本周,我们将讨论一些 AI 工具以及我们使用这些工具的经验。但首先,Jeff,你好吗,老兄?我很好。最近我的应用开发效率很高……
你知道,希望能继续努力,再发布一期播客。太棒了。是的,本周我也希望提高效率,我们肯定能发布一期播客。各位,我们上周休息了一周。我们俩都需要处理一些事情,嘿,就是这样,对吧?你不可能每周都做所有事情,即使你再努力。而且众所周知,作为开发者,我们非常努力。
事实上,截至录制时,我已经用 AI 工具进行了两次直播。我们将深入探讨,简而言之,它让我震惊了。本周我们将讨论一些我们认为对开发者有帮助的 AI 工具。其中一些工具专门针对开发者并为此进行了调整,而另一些工具则是你可能熟悉的通用工具,我们也认为它们很有用。
因此,我将把话题交给 Jeff,他将分享一些他的经验。是的。我认为人们最熟悉的工具集就是标准的 AI 聊天机器人。你用过 ChatGPT,还有 Anthropic 的 Claude。我认为还有其他一些人们熟悉的
用于开发工作的工具,这些工具并非专门针对开发,但在这些情况下仍然非常有用。你可以要求 ChatGPT 或 Claude 或其他任何工具为你生成代码,它会这样做。它会输出代码,而你则需要自己完成所有后续工作。我个人觉得,与其让它为我生成代码,
不如与它进行代码方面的对话更有帮助,也就是说,我试图解决一个问题。我知道我需要做 X、Y、Z 之类的事情。我将从更高的层面来描述它。现在,聊天机器人,你能帮我完成这种路径吗?你能引导我走这条路吗?你能做我的向导,而不是直接帮我完成吗?
我认为一些工具的目标就是直接取代它。但对于许多基于聊天的工具来说,我认为它们的目标是聊天,与这些工具进行来回对话。为此,有一些工具在这些工具的基础上添加了一个不错的前端,使其对开发人员更有用。
我们节目的一位朋友兼前嘉宾 Adam Wolf 为此创建了一个非常酷的应用程序,名为 Developer Duck。我们将在节目说明中添加链接。这只是 OpenAI 所有模型的前端,它为这些工具提供了一个友好的开发者前端,但它仍然非常注重成为一种聊天工具,而不是像我们稍后可能讨论的一些工具那样,成为一个集成的 AI IDE。所以……
我很少使用这些工具。我确实使用过几次。就像我说的,我经常在知道自己需要做什么,但不知道具体怎么做的情况下使用它。例如,我最近需要为 Bark 中正在实现的一个新条形码格式做很多数学运算。
我根本不是数学专家。我所做的是,基本上说,嘿,我知道我需要这样做。我需要解决这种问题。我该如何在代码中表示它?我不想让它自动给出答案,比如,哦,这是解决方案,因为……
我无法检查。我的数学技能不足以让我查看代码并说,哦,是的,这是绝对正确的。我希望它一步一步地引导我,并说,你需要解决这个问题。这就是你将如何解决这个问题的一部分。然后你需要解决这个问题。这就是你将如何解决这个问题的另一部分,并以此类推。明白了吗?是的,因为这正是我使用这些工具的两种方式之一。
在我们深入讨论特定工具之前,我将快速描述一下我如何使用它们。因此,我喜欢这种聊天工具,从某种意义上说,我可以与它进行讨论,进行某种意义上的结对编程,而无需过于具体。只是对它说,
嘿,这是问题。你知道,我走对了吗?看看它怎么说。因为我同意你的说法。像数学之类的,我绝对不是专家。因此,如果我需要一个数学公式,或者我想到了另一个好方法,也许是一个正则表达式,我会希望它生成那部分。然后我可以将那部分应用到我的代码中,对吧?这就是我的……
我的第一种方法。我使用这些工具的第二种方法,这是一种我直到现在才想到的方法,就是让它为我不熟悉的东西生成代码,我可以从中学习。但重点是学习。
从中学习,而不仅仅是,好的,代码一定很好,因为机器说是的。明白了吗?是的,绝对明白。这实际上与我使用这些工具的另一种方式相反,直到刚才我才想到,那就是在互联网上查找执行某些操作的代码。然后你首先不理解这段代码的作用。你可以将这段代码
发送给这些聊天机器人,然后说,你能解释一下这里发生了什么吗?所以去年,这已经是,天哪,一年多以前了。我当时正在处理一些机器学习方面的事情。具有讽刺意味的是,所有这些都层层叠加在一起。我当时正在处理一些机器学习方面的事情,而且我并不真正理解发生了什么。由于是机器学习方面的事情,所以所有现有的示例代码都是用 Python 编写的。是的。
使用像 Python 的 NumPy 这样的库。所有 Python 程序员都会对我大喊这不是它的发音方式。我不知道它的发音方式。使用 NumPy,使用它所做的一些特殊数学运算。因此,我做了很多事情,我将从互联网上找到的 Python 代码拿来,然后说,请用英语或 Swift 解释一下
这段代码到底在做什么,发现它非常有助于理解,如果我查看一些 Python 代码,我对 Python 有一定的了解,但我绝对不熟悉 NumPy 等一些更深奥的库,我可以将这段代码发送给像这样的 LLM,然后说,引导我了解它实际上在做什么。
它会这样做。这是一种让我理解它在做什么的方法,然后我可以在 Swift 中自己重新实现它,或者在我的代码库中重新实现它,并根据需要进行调整以使其适应。这非常有帮助。这是一种情况,就像我找到了这段代码,它可以做我想做的事情。
但我不想直接复制粘贴,因为 A,它可能无法完全符合我的用例。但我也不喜欢在我的代码库中使用我不理解的代码。因此,这非常像我找到了这段代码。我想把它从互联网上拿走。我想用它。但我不知道它。你能帮我理解一下吗?我认为这是这些工具非常有用的另一个地方。你可以让它
与你讨论一段代码,无论是你的代码还是别人的代码。是的,就像你说的,我认为这在很多方面是一种结对编程技术。而且正如你所说,在我提到它之前我没有想到,但这是一种很好的入门方式,说,嘿,这是这种语言中的东西。我需要把它转换成这种语言。想办法帮我解决这个问题。然后,就像你说的,把它放在你需要的上下文中,并从中学习。因为对我来说,这实际上将是学习 Python 的一种好方法,而我对 Python 几乎一无所知。
但我了解我需要什么的概念。然后我认为我使用的最后一个用例,这是一个比其他任何用例都更愚蠢的用例,那就是我只是知道这个 API 存在,但我记不起它的名字了。我们都熟悉 Apple 的文档。而我的搜索不起作用。我找不到我需要的东西。我的 Google 搜索能力很差。我找不到它,或者它很晦涩,但我知道它存在。
能够进入并询问 LLM,嘿,我正在尝试做这件事。
我知道它存在,但我需要哪个 API?它非常擅长成为一种高级搜索工具。它会说,哦,是的,你只需要调用这个方法。它不会为我编写代码。它不会生成一大块代码。它会说,嘿,这是你需要的一行代码。你可以从那里解决其余问题。所以我认为这是我发现非常有用的另一件事,就像
我知道我可以做到这一点,我只是,我只是忘记了如何去做。Google 搜索帮不了我。Apple 的文档帮不了我。我需要做什么才能到达那里?这些工具非常棒。在处理旧的或晦涩的东西时尤其如此。最近帮助我的一个大问题是 Apple 的
AppleScript。我正在一个应用程序中实现 AppleScript,在一个我正在开发的 Mac 应用程序中。所有 AppleScript 文档都是 20 年前编写的。Apple 的文档搜索喜欢隐藏它。Google 如果你问它关于 20 年前发生的事情,它会说 20 年前,那没有发生。这是最简单的。你在说什么?呃,Google 似乎非常反对向你展示任何超过几年的内容。嗯,
所以,不可能找到任何东西。你转到 LLM,你说,嘿,我有一个关于如何在应用程序中实现 AppleScript 函数的问题。它会说,哦,是的,你只需要这样做。它不会抱怨说,哦,谁在 2024 年编写 AppleScript?是我。处理它。它只给你你需要的。是的,我认为你刚才说的这一点非常重要。
那就是无论你使用什么工具,我的意思是无论是 AI 聊天机器人、Google 搜索还是其他任何工具,最终你仍然需要知道你需要问什么问题以及如何提问。我认为 AI 在……
帮助你弄清楚如何提出这个问题方面做得更好,对吧?就像你说的,我们都坐在那里在搜索引擎中输入一堆东西,无论你如何尝试措辞,它都无法正常工作。但我认为对于 AI 来说,你知道,有时我发现这种体验是
它有点理解你的意思,但是你,你知道,就像,我明白你想说什么,但你没有找到合适的词语。让我来帮你。你知道,你是这个意思吗?是的,这正是我想表达的意思。我喜欢这个想法,我,你知道,我知道。我记不起这个 API 的名字了。当然,一旦它告诉你,
你会说,哦,是的,就是这样。然后你会想起,哦,我现在想起来我以前是怎么用它的了。这也是一个很好的用例。是的。
或者,你知道,它会给你一个起点,让你进入 Apple 的文档,然后说,好的,现在具体是什么?现在我知道我在看哪个类了,它的函数是什么,它的什么是什么,它会给你另一个起点,让你进行更多学习。我想这里的经验教训是,既然你已经说出来了,让我们希望他们没有训练 Apple。
呃,你知道,他们将在 Xcode 中提供的 AI 服务对文档进行训练,否则一切希望都破灭了,让我们希望他们这样做,然后这给了他们一个改进文档的借口,也许那时机器接管了,就像看,我搞定了
大家好!我想向你们介绍 MacPort 的 CleanMyMac。我已经使用它很多年了。多年到我甚至不记得是什么时候了。但如果你是一位 Mac 用户,并且没有这个工具,相信我,你需要它。所以让我告诉你你可以用它做什么。
现在,当我打开应用程序时,不仅 UI 非常漂亮,而且我运行 SmartCare,我只需要打开应用程序,点击 SmartCare 并点击扫描按钮。现在,当我这样做时,
将会发生什么,它将分析我的系统,然后它将检查并查找垃圾文件。它将检查以确保我的 Mac 上没有任何恶意软件之类的东西。它将运行一些性能检查。它将检查应用程序更新。然后它还将让我查看我所说的机器上的杂乱文件,我的文件,对吧?我放在那里的东西。
我可不是在开玩笑。每次我运行它,我至少每周运行一次,它都会找到至少几 GB 的垃圾文件需要清理。
我只需要告诉它,继续运行,它就会清理垃圾文件。前几天我运行它时,它找到了 6 GB 的文件。相信我,我非常细致地清理机器上的垃圾文件。它只会找到散布在不同文件夹中的这些文件。
然后它会运行性能检查,就像我说的那样。它会检查并查看它认为需要做的事情。它会让我知道任何应用程序更新。我可以让它帮我更新。最重要的是,还有其他选项卡。还有一个清理选项卡。它会进入那里。你可以告诉它为你执行各种清理操作。同样,它将运行分析。
作为开发者,我们都知道 Xcode 占用了多少空间,但你会惊讶于随着时间的推移,缓存中会积累多少文件,而你根本不会想到。而且,你知道,它们不会自己清理得很好。同样,它会
进入那里并为我节省几 GB 的空间。这绝对令人难以置信。性能选项卡很棒。它会为我运行诸如刷新 DNS 之类的事情,它会运行维护脚本。它会检查磁盘权限是否存在问题,以及所有这些事情,以充分发挥你的机器的性能。如果所有这些听起来对你来说都不错,如果你是 Mac 用户,就像我说的那样,我认为这是我的首批安装之一,
你可以访问 peterwhedham.com/cmm,这将带你到正确的位置,你可以在那里试用 CleanMyMac。你将获得七天的免费试用。就像我说的那样,每次他们发布新版本时,我都会立即升级。所以再次访问 peterwhedham.com/cmm,立即开始使用 CleanMyMac。
然后,作为纯粹的基于聊天的工具(并非真正用于开发工作)和我们将稍后介绍的成熟的开发者 IDE 之间的半步,我们有我们久经考验的、我们好朋友 Xcode,以及 Sequoia 和 Xcode 16,你需要两者。
Apple 推出了预测代码补全功能。这可以说是现有自动补全功能的扩展,它试图使用 AI 启发式方法来提供你从开发角度所需的內容。因此,我认为我们俩都使用过它。我认为我们俩都遇到过
类似的答案,那就是有时它是神奇的。有时它很棒,它只做了你绝对想要的一切。而其他时候你坐在那里想,你到底在想什么,Xcode?你从哪里得到这个的?你为什么认为这是我想要的?而且永远不清楚为什么。
哪个是哪个,以及你会得到什么。所以这是一个混合包,但我认为,这是 Apple 意识到,嘿,这些工具可能很有用,也许我们应该开始考虑将它们与我们的软件集成,以及我们能从中做什么?你的经验如何?是的,我的经验也是好坏参半,我开始使用它
我认为是在测试版中,对吧?我们在 RC 之前就有了它。而且,你知道,我没有期待奇迹。但我发现,它很好。它以一种……
让我感到惊讶的方式,就像,哦,你知道,它会根据我的代码建议变量名,你知道,诸如此类的事情,这有助于我思考,你知道,变量命名很难,对吧?它确实有助于,是的,这是一个好主意。让我们用这个吧,对吧?也就是说,如果它
在没有代码的情况下,你知道,这绝对是其中之一。是的,这不太好。对。但一旦有一些代码,你知道,对我来说它非常好,比如初始化器之类的东西。所以这是一个混合包。
但总的来说,我对 Apple 的第一次尝试印象深刻。这就是我的感受。现在,我会完全相信它并使用它吗?不,绝对不会。但这是一种填充空白屏幕的好方法,如果这有帮助的话。你知道我的意思吗?是的,绝对的。是的,我认为我的经验也是如此。这是一个……
对于许多样板类型的东西,就像你说的那样,初始化器、可编码一致性,诸如此类的东西,它很好。它并不完美,但它很好。而且它处理起来比他们过去的一些重构工具要好得多。是的。但有时它想插入一些东西,而我只是想,我不知道你为什么认为这是我想要做的。是的。
是的,它并没有那么多地绕圈子,而是偏离了主题。是的,完全正确。谢天谢地,他们集成的这种方式很容易忽略。它只是给你一些虚拟代码,它会显示出来,你可以很容易地忽略它。但是,你知道,有时它做的事情太奇怪了,你会停下来一秒钟,然后说,什么?
是的,是的。如果你把它看作一个智能自动补全工具,它还不错。是的,我认为这就是它的用途。而且,你知道,它具有作为智能自动补全工具的所有优缺点,这是我们在 iOS 上的键盘自动补全功能中一直以来所了解的。是的,是的,对。是的,它和那个一样好。让我们这么说吧,各位。祝你好运。是的。但这只是 Xcode 计划的第一步,对吧?是的。
是的,他们在 WWDC 上宣布他们将拥有自己的聊天相关工具,称为 Swift Assist。我不知道你怎么样,但我从 WWDC 以来就没有看到过它的踪影。没有,什么都没有。是的,我不知道我们还没有关于它的任何公告。我们还没有,你知道,这是你可能期望看到它的时间。甚至,你知道,Apple 谈到了很多 Apple 智能方面的事情。
他们在 18.2 中宣布的功能,以及图像游乐场等这些东西,这个似乎并没有真正出现,所以我不知道我们什么时候期望看到它,或者我们是否期望在明年之前看到它,但它会很好,但就目前而言,我们只是在等待它真正出现,我认为我
认为这里有两个问题,我认为对于 Apple 来说,嗯,这取决于你如何看待它,但在我看来,你知道,他们显然在他们的 AI 服务方面普遍落后了,无论是开发者还是消费者,现在我们开始看到它们,正如你所说,到目前为止,我对它们还算满意,但我认为开发者方面的问题是
你知道,当 Apple 在 6 月份宣布这些事情时,就会发生这种情况。然后我们在接下来的这一年中一直对这个承诺抱有希望。现在我们几乎准备好开始讨论下一次大会了。我们仍然没有这次应该出现的东西。与此同时……
其他人已经,我本来想说赶上了他们,但我认为从一开始,其他人就已经超越了他们。我想原因的一部分,可以理解的是,他们没有发布它们,因为他们查看了它,然后说,你知道,我们的东西还不够好。但问题是,好吧,如果你一开始没有告诉我们,它会在某个时候出现……
我们会比这个承诺更印象深刻,一年等待的空洞承诺。对。是的。如果他们推迟发布是因为它不够好,你知道,这并不是说其他人已经停止了。是的,完全正确。对。你知道,而且,这并不是说其他人的东西都完美无缺。所以现在,也许把它发布出来,不要请求原谅,而是说,嘿,它来了,你知道,把它发布出来并进行迭代。是的。是的。嗯,
至少对我来说是这样。我有点,不想说放弃等待它。你知道,就像,是的,我会在它出现时尝试一下,如果它出现的话。但与此同时,我认为还有其他途径可能……
可能比这个未发布的东西更好,除非它真的令人惊叹,嗯,我无法想象它会基于现在消费者使用的服务的褒贬不一的评价,而这些服务可以说是使用得更多,对,绝对的。然后在光谱的另一端,我们有这些完全以开发者为中心的 IDE
我还没有真正使用过任何这些,但我了解你使用过。我知道你与之互动最多的一个叫做 Cursor。我们也将在节目说明中添加指向它的链接。你能不能告诉我一些你使用 Cursor 的经验,你用它做了什么,你喜欢什么,你不喜欢什么。告诉我关于它的所有信息。
是的,我将在这里介绍我进行的两个不同测试的两个不同方面。我们将在节目说明中添加链接。我在直播中进行了这些测试,因为我希望每个人都能看到它发生的过程。值得庆幸的是,聊天室里也有一些之前使用过 Cursor 的人,他们能够给我一些提示。现在,让我们从什么是 Cursor 开始。所以,
Cursor 本质上是带有额外智能功能的 Visual Studio Code,这就是我如何描述它的。因此,如果你熟悉 Visual Studio Code,你已经差不多完成了,对吧?我做了一些实验,这些实验与两个不同的项目遵循相同的思路,我认为是两个截然不同的项目。
我想做的是把它交给工具,然后说,我将完全按照你告诉我的去做。这似乎是最好的方法。因此,这两个例子是,
一个是使用 React 的 Web 应用程序。另一个是构建 iOS SwiftUI 应用程序。让我们来谈谈 React 项目。它的工作方式是这样的,对吧?我有一个空的 IDE,本质上是一个聊天窗口。在聊天窗口中,你描述你想要什么。现在,你可以随意表达,我建议这样做。
或者你可以分段构建它。我的做法是,我将向它提供我想要这个应用程序执行的所有操作的概述。对于 Web 应用程序来说,对吧,我的做法是这样的,我想使用 Node、React、Tailwind CSS、MySQL 和 TypeScript 构建一个基于 Web 的应用程序。
我希望该应用程序有一个使用电子邮件和密码的注册屏幕。我希望它有一个配置文件屏幕,我可以更改我的密码。登录后,我希望有一个主屏幕,本质上是。此外,还可以,你知道,通常的 CRUD,对吧?你知道,删除配置文件等等。
就是这样。那时,我只是按了回车键。它消失了,思考了一分钟。我不得不说,速度很快。它返回并说,好的,这里有一些我认为你需要执行的任务才能实现这一点。它非常努力地完成这些任务,并说,是的,继续执行这个任务。例如,让我们来看一下我的SQL部分。
它说,好的,你需要创建一个数据库,它向我展示了SQL语句,
我说,是的,继续吧。它创建了数据库,以及表,它为我运行了这些语句,创建了数据库。然后它说,好的,现在你需要能够连接到该数据库。所以它会向我展示一些连接代码。我会说,是的,继续吧。它将创建一个包含所有连接代码的新文件,以及任何提示,例如密码等需要我输入的内容。在这种情况下,它采用了环境变量的明智方法,对吧?
就是这样。然后你保存这些文件,并通过创建一系列基于各个部分的文件的过程。它会向你完整地解释它正在做什么。所以如果你不知道
这里发生了什么,你可以从中学习。我选择这个的原因是我已经知道如何做这些事情。我想看看它的建议与我将要做的方式有多匹配。现在,在最后,你将完成许多任务,用于,你知道,你想要创建的内容。然后
最后,它会说类似这样的话,好的,现在继续运行应用程序,对吧?在这种情况下,节点有一个服务器部分,React端有一个客户端部分。所以我同时运行它们。果然,它在浏览器中弹了出来……
情况不太好。原因是有点用户错误,因为如果我没记错的话,我没有在我的SQL上设置密码。你回到聊天框。再次,我想把它全部交给机器。我告诉它问题是什么。
你可以告诉它,你知道,这是问题所在,它会消失并分析你项目中的所有文件以获得上下文,然后提出解决方案。果然,它返回并说,啊,是的,我看到了问题。它字面意思是说,“啊,是的,我看到了问题”。它试图表现得很友好。提出一个解决方案。同样,你可以说,继续执行。再次运行。
太好了,现在一切正常了。那是网络应用程序的基础,对吧?现在,唯一的先决条件是我必须安装Node和SQL,对吧?这是有道理的。所以那是第一条轨道。那里相当简单的事情,对吧?在下一个……
流中,我想进一步挑战它,因为这就像,好吧,这东西不可能做到这一点,对吧?所以我打开了一个Xcode,一个新的空Xcode项目,进入应用程序,并说,我想创建一个具有列表视图、带有各种字段的条目表单的SwiftUI应用程序。我想能够编辑
记录,我想能够,你知道,显示记录列表,当我点击一个记录时查看详细信息,仅此而已,我说的另一件事是我想使用Swift Data,我认为这肯定能难倒它,同样的过程,它会继续说,好的,我们将要做的事情,一系列的任务,完成这些任务,创建一系列Swift文件,
在我的Xcode项目中。我搞砸了。是我的错。它把我放在了错误的位置。我应该事先设置好。这是我的问题。但可以肯定的是,它创建的文件很好,对吧?它做的第一件事是为我创建了一个模型,一个不错的模型。所以如果你没有做过Swift Data,这是一个很好的方法,可以了解如何在Swift Data中创建模型。然后它创建了列表视图,
它创建了,你知道,其中的for循环来制作列表。它创建了点击事件,或者更确切地说,应该是导航,用于详细信息视图。在详细信息视图中,我实际上可以在屏幕上进行编辑,返回,它会自动保存,因为它是Swift Data。作为奖励,它甚至给了我滑动删除功能。它就这样运行了。
所以,你知道,在这一点上,我就像,好吧,这比我预期的要好得多。是的。
我知道你在那里观看直播。我没有做任何其他事情。我实际上只是让它做它的事情。就像我说的,那里的一些错误肯定是人为错误。我已经了解了,下次指向正确的文件夹,这样你就不用移动文件了。这就像基本的体验。还有一个第二部分,我稍后会讲到。但我先在这里暂停一下……
你有什么评论或问题,因为你看到了这件事的发生?不,我的意思是,我看到了完整的初始过程,有点奇怪的是它并没有真正捕捉到你已经设置好的所有东西,关于空的Xcode项目。但是一旦你让它工作,它基本上就工作了。
是的。
是的,这是一个非常重要的点。这是我在直播中提到的我的一个收获,好的,它没有做任何我无法自己做的事情,但它完成的速度比我快得多,因为,嘿,我必须自己输入代码,而它不需要,对吧?所以对于那种基础板块来说,它是一个很好的节省时间的工具
你知道,普通的代码来帮助你开始。我同意你的观点。你知道,其中一些事情就像,好吧,我可能不会那样做,但它让我得到了一个可以立即开始使用的运行应用程序。这是好的一面。好了。现在事情变得有趣了,因为我想,我想做的一件事是通过添加新功能来挑战它。
我想添加这个功能,基本上有一个带有文本字段和富文本编辑器的屏幕,你可以在其中输入文本并将其存储起来,你可以将其与预先存在的记录之一关联起来,所以我再次描述了我想要它做什么,我觉得我描述得很好
果然,你知道,它分析了所有文件,并说,好的,看,我们需要做一些更改,创建了一个新的模型,对吧,用于这个新的数据片段,然后还创建了一堆文件并对现有文件进行了更改。
这很重要,因为一方面,你想更新现有的文件。例如,在应用程序启动时将模型添加到容器中等等。但它开始产生错误。之前在做网络应用程序时,我已经经历过这种情况,所以我并不太担心,因为我知道解决这个问题的最佳方法是,是的,我可能可以自己解决。
但要相信这个系统。所以我会在聊天框中说,我会直接说,嘿,在这个文件中,或者当我构建时,我得到了这个错误,或者几次,我得到了这个崩溃,对吧,当它试图运行时。它会继续进行,你会说它几乎感觉有点
自鸣得意,就像哦,是的,我看到了问题,对吧,我想我甚至对着屏幕说,不,不,不,是你创建了这个问题,不是我,嗯,所以它提出了解决问题的建议,再次就像,好吧,我们将采用这个,相信这个系统
我开始往下走,一开始一切都很顺利。它正在构建,但有一些问题。所以我读了它,再次描述了一些不太正确的事情。但在那一点上,我们陷入了试图解决这些问题的兔子洞,感觉我陷入了循环,不断解决一个问题,然后产生另一个问题,然后破坏第一个问题,然后修复第一个问题,破坏第二个问题。
大约30分钟后,它开始感觉像这样。你观看的时候也有这种感觉吗?还是只是我?
我认为那时我看到它在兜圈子,而我还有其他事情要做。所以我那时就离开了。所以我想,哦,好吧,这看起来不太好。我不知道我能做些什么来帮忙。让我,我还有其他事情需要赶上。所以我不幸错过了这一切的结局。好的。但是是的,我确实看到了你开始进入你正在编辑文件的点,
而且它就像重新编辑它们,你有点陷入了这样的境地,就像等等,我们之前来过这里,是的,而且,嗯,所以是的,我错过了之后发生的事情,我错过了你是否真的摆脱了这个循环,但是,是的,我确实看到你陷入了困境,好吧,所以剧透警告,我们没有摆脱这个循环,如果你大约
我不知道,40分钟后回来,我们只是在不同的圈子里。就像在美国司机在英国时,你上了环岛,却不知道如何下来。我们没有解决这个问题。但我认为在那里与聊天室讨论的经验教训是,如果你一开始采用一种整体的方法,
你知道,描述构建应用程序并这样做,然后尝试添加功能。它不一定对你有好处。所以这是一个记号……
这很奇怪,因为这似乎是这些工具的构建目的。没错。拥有你代码库的知识。是的。所以听到这个消息我很惊讶。我知道我见过,再说一次,我们将回到节目的朋友Adam Wolf。我知道我在他的……
那里,他正在使用他现有的代码库,这是一个巨大的代码库。他有一个非常大的代码库,并且一直在使用像Cursor这样的东西,并且一直在使用它来添加功能,并且,
对他来说,它似乎大部分都能正常工作。所以,我有点惊讶,老实说,我不知道你的经历有多具有代表性。就像,我不会说,哦,是的,Peter显然做错了。但我也喜欢,你知道,
Adam的项目是否存在于某种程度上更适合它的设置中?是因为你像你说的那样,使用最新和最好的东西来故意难倒它吗?你说你试图通过让它使用Swift Data而不是……
Adam的代码库已经有几年历史了,他可能会遇到你使用最新和最好的东西时遇到的问题……或者对不起,他可能不会遇到你试图使用最新和最好的东西时遇到的问题,LLM对此并不了解。哦,是的,你不能用Swift Data做这个。是的,我认为两者都有,因为我在第二天思考之后得出的结论是,是的,你知道,首先,是的,当然,
最终,AI是从它的经验中学习的。所以它只知道数据中存在多少信息。至于提到Swift Data,这是一种可能性。我还认为,另一方面,你的代码库中需要从中提取的信息越多,你的成功几率就越大,这有点奇怪。
处境,因为你正在使用这个工具来构建一个应用程序,来,你知道,扩展代码库来添加功能,但与此同时
如果它不能帮助你在开始时添加功能,那么它以后会有多大帮助呢?我认为这是我们目前在许多此类事情中所处的奇怪位置。我认为这就是为什么我当时有点,你知道,当我们谈论,你知道,他们要放在Xcode 16中的东西时,是的,它只会和它的输入一样好,对吧?所以我想说,我不认为这是我所拥有的最终体验。
我认为鉴于这是我第二次使用它,这一点很重要,因为这也是我想从这里出发的原因,嘿,我从未使用过它。如果我是开发者,因为让我这么说吧,如果你要使用像这样的工具,你应该成为开发者。你必须知道它在做什么,对吧?因为你必须让自己摆脱这些困境,对吧?
因为我在想,好吧,这应该是一个很好的工具,可以让我使用我现有的应用程序之一,并说,嘿,我想添加这个新功能,这正是这种情况。它做得不太好,这确实让你质疑,好吧,它有多有用,对吧?但我将给它在我两次测试中都及格的分数,因为……
它肯定比我预期的要好得多。很好。是的,听到这个消息我很高兴。是的。现在,我确实想指出,聊天室里的一些人指出了一些事情。我不熟悉它们,所以我不想在这里深入探讨。我可能会研究一下。
但它并没有以任何方式与Xcode集成。它实际上只是将文件转储到你的Xcode项目中。是的,我看到了这一点,是的。是的,所以,例如,有人说,你知道,一个Xcode项目文件……
尽管我们不理解它们,但它知道的更少。我确实发现这很令人惊讶,因为在GitHub或其他地方并没有缺乏Xcode项目文件。我实际上有点惊讶这些工具对Xcode项目文件的理解甚至不如Xcode。而我希望……
希望LLM能够做到的是,你知道,你,每个人都熟悉这种情况,哦,我做了一个git merge,现在我的Xcode文件坏了。现在我必须弄清楚我的Xcode项目文件到底出了什么问题。感觉LLM应该很聪明,这里是我的Xcode项目文件,找到错误并修复它。
这似乎是它应该知道的事情。而拥有这样的经验,不,实际上这些工具对Xcode项目文件和我们一样困惑,这似乎……
与我对LLM设计的理解相悖。我确定我不知道你的意思。我从未遇到过Xcode项目文件的合并问题。如果这是一个问题,那么就会有一些其他工具可以生成Xcode项目文件,或者一些疯狂的世界,就像那样。没错。是的,你说的对。对。它,
我觉得它至少应该有一个基本的理解。这些文件中没有任何严重的魔法。也许在未来的道路上,它会。
看看Apple的版本是否理解项目文件,这将很有趣,对吧?绝对的。如果它能做到这一点,那将可能是它最突出的功能。但这基本上是两个流。所以我猜大约四个小时。这就是我的经验。我想说,在我看来,这是一个值得考虑的工具。
或者至少是一个值得考虑的工具类别。当然,绝对的。让我们公平地说,是的,因为我知道我们将在最后触及一些其他的工具。归根结底,是的,这是一个更好的说法。这些工具,如果你使用它们来帮助你,
你会走很远。
因为我知道,我确实看过几次,而且我的,就像我从未真正使用过它一样。我甚至没有下载它。我对Cursor的担忧并不是对
是什么让Cursor成为Cursor的担忧?我对Cursor的担忧是它与VS Code的历史以及我对VS Code的经验。是的。哦,当然。所以,是的。嗯,我知道我过去用过它,我曾经很喜欢它,但现在我不再喜欢它了。所以它更像是,如果我可以在,呃,
项目或我实际上喜欢使用的环境中拥有Cursor的功能。完美的过渡。做得漂亮。专业地完成。上周在他们的年度会议上,GitHub宣布他们正在
他们自己的版本接管,对我来说还不完全清楚,GitHub Copilot for Xcode插件。现在,这在之前就存在了,那时我还没有使用它。它现在是一个官方的GitHub项目。它现在是GitHub组织在GitHub上的一个部分,并且
这么说很令人困惑。它在github.com/github。但这现在是GitHub方面在Xcode和Copilot之间的一种官方集成。它使用一些有问题的技巧来使其工作,因为Xcode没有一个很好的插件系统。所以为了做到它所做的事情,它确实有点棘手。
我还没有使用过这个。我很确定你也没有使用过这个。正确。我还没有使用过这个。你刚才提到了。对我来说,一个担忧是许多担忧,但最直接的一个担忧是,由于Xcode插件系统的限制,这个工具或任何试图与Xcode集成的工具到底能做多少?是的,我,
我认为这是我将要研究的东西,因为我认为它很有趣,它可以解决我对VS Code作为编辑器的担忧,让我可以使用Xcode。所以它可能很有趣。我更喜欢quad生态系统而不是OpenAI生态系统。显然,它还没有与之集成,因为它来自微软及其与OpenAI的所有集成。但我希望我们最终会看到
GitHub似乎更愿意与其他模型提供商配对。所以我希望我们将来能看到类似的东西,它开始与OpenAI的模型以外的东西一起工作。我认为这可能是Cursor之类的工具的另一个有趣的替代方案。你知道,我应该在这里补充一点,作为Cursor的一个注释,你可以选择许多不同的
我使用的是Claude,这是它默认使用的。但在屏幕底部有一个下拉菜单。好吧,点击它,它是一个下拉菜单。所以你可以选择你选择的引擎。是的。是的,我认为这是我喜欢Cursor胜过我们目前在Copilot for Xcode中拥有的东西的一点。是的。是的。
是的,我很想看到你尝试一下。我认为我将坐在那里观看火车经过,只是和你一起乘坐,而不是深入研究。是的,我将来应该尝试一下,也许我们会在这些剧集的开头做一个快速的后续。是的,我确定那里有一些人会说,天哪,他们要在Kapow Swift上做多少关于AI的剧集?
但事实是,这是一件事,对吧?我的意思是,这是一件大事。它只会越来越大。重要的是要保持领先地位,至少要意识到,即使你无意使用任何这些东西。
你至少应该了解你周围正在发生的事情,就像我总是说的那样,关于工具、服务和方法。这绝对是一个重要的方面。
所以,你知道,AI,恐怕它已经存在一段时间了。我们都在许多不同的环境中听说过它。它不仅仅是用于开发者工具,你也不必使用特定的开发者工具,你知道,就AI而言。还有其他领域也很重要。
在某些方面,这可能更重要,这取决于你的观点,而不是帮助你编写代码,你实际上有一些非常好的例子,你为我输入了机器,我想这就是方法,但它对营销和其他事情很有用,但你有一些我认为非常好的用例,所以你想继续深入探讨这些用例吗?
我认为你指的是你的应用程序Job Finder Tracker和Endless Hurdles的图标。这些图标都是我使用Midjourney创建的,从Midjourney中的提示开始,然后
通过与它进行讨论,并使用Midjourney的许多工具来调整它,使其看起来像你想要的样子。我认为Job Finder Tracker是在Midjourney体验的早期完成的。你可以看到它。如果你仔细观察一下,你会发现,哦,是的,这肯定有一些奇怪的AI把戏。而Endless Hurdles,我认为是在后来完成的,他们已经构建了更多工具。所以你可以,
你知道,擦除它的一部分,并说,等等,这看起来不对。这不是……
进攻的样子。这不是障碍物的样子,让我们,让我们构建一些看起来更好一点的东西。所以这个在它所做的事情方面更干净一些。所以,如果你想要一个应用程序图标,你负担不起真正的设计师来为你定制一些东西,而且你也没有自己动手的能力,那么这就是让你获得80%足够好的东西的东西,呃,
应用程序图标的体验,这样你就可以真正拥有某些东西。你可以拥有一个在应用商店中看起来不错的应用程序,并让你开始成为开发者的道路。哦,我同意。就像Endless Hurdles,当你做那个的时候,我看到它时,我立刻就说,哦,我的上帝。是的。因为它,
这不是我想象的东西,我肯定也做不到那么好。我只是喜欢它。这是其中之一,就像,是的,我只想让它永远成为图标。是的,你说的Job Finder Tracker是对的。它适合它是什么。
但就像你说的那样,它确实让人感觉,哦,也许以后可以重新审视一下。但无论如何,我认为这里的重要一点是,有时……
我们认为,哦,图标或屏幕截图会很容易,但它们最终却成为最难的事情,对吧?哦,是的,绝对的。是的,因为你可以自由选择做任何事情。我知道,你知道,我已经看过你完成屏幕截图,例如,它就像,是的,你可以将这些带到任何你想要的方向,这就是问题所在,对吧?是的。是的,绝对的。是的,而且……继续。
我只是想说,它对营销材料也很有用,对吧?你可以,你知道,就像,好吧,我可以在纸上或屏幕上描述我认为它应该说什么,但我不能保证它听起来是对的。我可以使用这些工具来处理这个问题。
是的,绝对的。这就是我在我最近的应用程序Bark的营销中所做的事情,我绝对没有让它生成任何东西,因为,哦,天哪,它自己生成的东西很糟糕。这很有趣,因为我确实让它做过一次。我说,我直接对LLM说,这看起来像是那些真正俗气的周六的事情之一。
它就像你黑白视频一样,你做过这个吗?是的。它非常俗气。所以是的,绝对不要相信它们……
是的,让我们从头开始生成一个营销内容。但我发现,与我在本剧集开头讨论的内容类似,能够与它配对并说,我想这样做。例如,我应该考虑哪些事情?我需要涵盖哪些营销方面?最低限度是什么?这是我的预算。这是我的,你知道,有限的资源。这是我所拥有的。什么……
我的优先事项?我应该关注什么?我应该真正用什么来做,你知道,我应该处理哪些事情以及按什么顺序?有了这个,它做得更好。它擅长为你自己填写大纲。如果你自己做一些事情,它非常擅长
判断你,你可以坐在这里说,哦,例如,这是我写好的应用商店描述,它会说,嘿,你可能想提到这个,你可能想提到那个,这是你应该如何更努力地销售你的订阅,这是你应该如何做到这一点,我发现它在这方面做得更好,不要
让它自己去生成东西,因为它听起来非常像LLM驱动,非常,非常俗气。而且你,你,你们都见过那些显然是由ChatGPT写的东西。我要说100%。是的。是的。在这一点上,我认为我们都在许多不同的东西上看到了足够多的东西,
去,你知道,就像,是的,我们现在可以发现它们了,对吧?是的。而将你已经拥有并自己创建的东西带入,并让它
甚至不用它润色,而是让它批评你,指导你,告诉你哪些地方需要修改。当然,你也可以告诉它,不,我不想这样做。我不想这么说。我不想听起来像个骗子。我不想听起来太商业化。
但它能给你一些提示和建议,我发现这对我的应用营销非常有用。你知道,这很有趣,因为我一直在使用苹果的AI服务。你知道,你现在可以获得的文本服务。写作工具。是的,没错。而且……
我不确定我对它们的感觉。它们有点游走在听起来不自然和自然之间,你知道吗?所以你提到这一点很有趣。是的。是的。我认为这一集的要点是,伙计们,有很多工具。
可以帮助你完成任何你需要做的任务。这就是你应该如何看待这个问题。我个人认为,这就是你如何才能最大限度地利用这些工具的方法。你知道,无论是应用程序中的代码,还是像我们所说的营销材料、设计,所有这些东西。你知道,一定要把这些工具当作助手。就像我之前说的,结对编程,结对任何东西,批评。
你知道,所有这些事情,我认为这将是你在这方面取得最大成功的途径,对吧?绝对的。好的,彼得,我想今天的节目就到这里。大家在哪里可以找到你?你可以在现实生活中找到我,而不是AI。哦,天哪。是的,我知道。太糟糕了。你可以在peterwhitam.com找到我,你也可以在compileswift.com找到这个播客。
我在CocoType.com,以及你能想到的世界上每一个社交媒体平台上都是CocoType。总是有新的平台出现。好了,朋友们。请放心,我们不会很快就被AI取代成为主持人。你听到的那些荒谬、疯狂的评论都是我们自己说的,而不是机器。好的。是的。好了,朋友们。我们下一集再见。