ChatGPT 现在可以访问 Mac 应用程序为你编写代码
AI 的下一大趋势已经到来——AI 聊天机器人开始控制你的电脑。
就在三周前,Anthropic 在 Claude 上推出了一项名为 Computer Use 的功能,可以通过文本命令控制桌面。紧接着,Microsoft 发布了 Omniparser,一个可以解析你屏幕的 AI 代理研究预览版,可能是未来能够通过 Copilot 控制用户桌面的功能的预示。
虽然 Apple 和 Google 还没有类似工具的公开消息,但可以肯定的是他们正在暗地里进行相关的研发。
今天,OpenAI 为 Mac 上的 ChatGPT 桌面应用发布了一项名为 "Work with Apps" 的新功能。这一功能让 ChatGPT 可以控制编程工具,例如 Xcode、VS Code,甚至是终端应用。
作为开发者和 AI 编程助手的忠实用户,这是个大新闻。
ChatGPT 新功能 "Work with Apps"
首先需要说明的是,这个功能还不是一个完整的 AI 代理。
然而,OpenAI 将其描述为创造代理系统的“关键构建块”。当前 AI 代理面临的主要挑战是学会解释整个电脑屏幕,而不仅仅是基于文本的提示或自身的输出。
以下是 ChatGPT 新功能能做的事情:
-
访问并读取 Xcode 或 VS Code 等应用中的代码。
-
根据项目中的现有代码编写新代码。
-
在像 Terminal 或 iTerm2 这样的终端应用中提交更改。
-
调试并为你的项目编写单元测试。
以下是在 Mac 上的 ChatGPT 桌面应用中,这一新功能的界面表现。
新的桌面应用控制按钮放置在搜索切换按钮旁边,点击它可以显示你可以启用/禁用的兼容应用列表。
使用新桌面控制功能之前,请确保在“辅助功能”设置中授予 ChatGPT 控制你计算机的权限。
一旦在“辅助功能”设置中启用 ChatGPT,你会看到 Xcode 已经在 ChatGPT 的控制台中启用了。
在这个例子中,我让 ChatGPT 为我的产品 Flux Labs AI 创建一个导航菜单。它是一种使用训练过的图像模型生成高质量产品和人像的工具。
让我们试试让 ChatGPT 编写一个在屏幕底部显示导航菜单的代码。
提示: 你能在屏幕底部创建一个导航菜单吗?
- AI 工具
- 创作
- 发现
- 帐户
ChatGPT 查看了我在 Xcode 中打开的项目代码,并为我编写了一个代码建议。
以下是 ChatGPT 给出的建议:
import SwiftUI
import SwiftData
struct ContentView: View {
@Environment(\.modelContext) private var modelContext
@Query private var items: [Item]
var body: some View {
TabView {
// Tab 1: AI Tools
NavigationView {
List {
ForEach(items) { item in
NavigationLink {
Text("Item at \(item.timestamp, format: Date.FormatStyle(date: .numeric, time: .standard))")
} label: {
Text(item.timestamp, format: Date.FormatStyle(date: .numeric, time: .standard))
}
}
.onDelete(perform: deleteItems)
}
.toolbar {
ToolbarItem(placement: .navigationBarTrailing) {
EditButton()
}
ToolbarItem {
Button(action: addItem) {
Label("Add Item", systemImage: "plus")
}
}
}
}
.tabItem {
Label("AI Tools", systemImage: "wand.and.stars")
}
// Tab 2: Creations
NavigationView {
Text("Creations")
.font(.largeTitle)
.padding()
}
.tabItem {
Label("Creations", systemImage: "paintbrush")
}
// Tab 3: Discover
NavigationView {
Text("Discover")
.font(.largeTitle)
.padding()
}
.tabItem {
Label("Discover", systemImage: "magnifyingglass")
}
// Tab 4: Account
NavigationView {
Text("Account")
.font(.largeTitle)
.padding()
}
.tabItem {
Label("Account", systemImage: "person.circle")
}
}
}
private func addItem() {
withAnimation {
let newItem = Item(timestamp: Date())
modelContext.insert(newItem)
}
}
private func deleteItems(offsets: IndexSet) {
withAnimation {
for index in offsets {
modelContext.delete(items[index])
}
}
}
}
#Preview {
ContentView()
.modelContainer(for: Item.self, inMemory: true)
}
然后我需要将 ChatGPT 的代码复制并粘贴到 Xcode 中。如下所示:
值得注意的是,ChatGPT 不能直接修改 Xcode 中的代码。你需要手动复制粘贴,虽然不太理想,但足以完成工作。
尽管如此,我很喜欢它为我创建的图标和布局。我甚至可以点击每个标签页,它可以为我切换页面。相当酷。
接着,我让 ChatGPT 为用户账户页面创建一个仪表盘。我上传了一张示例页面的截图,并让 ChatGPT 模仿它。
提示: 在账户页面中,你能创建一个与附带图片相似的信息漂亮的仪表盘吗?
它生成了代码,甚至提供了一步一步的指南告诉我们放在哪些位置。对于一个不熟悉 Swift 的人来说,简直是救命稻草。
ChatGPT 给了我关于如何和在哪里添加代码的分步骤指南。
以下是仪表盘的外观:
虽然仪表盘并不完美,但已能正常使用。经过一些调整,它完全可以投产。
最后,将 ChatGPT 和终端配对,并让它提交代码更改并推送到存储库。
ChatGPT 会提供 git 命令,你只需在终端执行即可。
git add .
git commit -m "Implement sticky bottom navigation and account dashboard layout"
git push origin main
如果你想看看这个功能如何工作,我在下面的 X post中发布了一个 ChatGPT 新功能的演示。
它是如何工作的?
OpenAI 的 Work with Apps 充分利用了 macOS 的“辅助功能”API,这一直为 Apple 的 VoiceOver 屏幕阅读器提供支持。这让 ChatGPT 能读取应用程序中的文本并进行处理。
目前,屏幕阅读器仅能处理文本。它无法处理屏幕上的其它内容如图像、对象布局或视频。
以下是它如何处理代码的方式:
-
对某些应用,最后的 200 行代码会随着每个提示发送到 ChatGPT。
-
对于其他应用,ChatGPT 会使用你活动窗口中的所有代码。
-
你可以高亮特定部分来引导 ChatGPT,但它仍会包含周围的文本以提供上下文。
请注意,这个过程会使用大量的输入 Tokens。
下一代 AI 代理
根据几天前 Bloomberg 报告,AI 领域的创新速度正在放缓。
三大 AI 科技公司——OpenAI、Google 和 Anthropic——现在在构建更高级的人工智能系统方面,费用高昂却收益递减。
随着那些能访问我们电脑的 AI 工具的引入,它为我们创造了无数可能的使用场景。我甚至无法想象这些工具在用户电脑上可能导致的最坏和最好的情况。
我能想到的一些可能影响包括:
-
软件开发可能会从技能转向创意。
-
随着重复性工作的自动化,生产力可能会大幅提升。
-
自动化可能在某些行业减少工作岗位。
-
互联网将迎来大量 AI 生成的软件。
-
安全问题可能会比以往更加突出。
根据 Harvard Business Review 研究,生成式 AI 已经在劳动力市场产生了巨大影响。
我们发现,ChatGPT和图像生成工具的引入导致在线零工工人的帖子数量几乎立即减少,尤其是在易于被自动化的工作中。在ChatGPT推出之后,易自动化岗位的每周帖子数量相比于手工密集型工作减少了21%。写作类工作受影响最大(减少30.37%),其次是软件、应用和网络开发(减少20.62%)以及工程类工作(减少10.42%)。
鉴于这一趋势,我相信那些选择适应并学习使用AI工具的人会蓬勃发展,而那些抗拒的人则很可能会失去工作。
ChatGPT 比 Cursor AI 更好吗?
在使用ChatGPT的新功能几个小时后,我很清楚地看到ChatGPT落后于Cursor AI。
-
Cursor的Composer界面可以参考特定文件并进行有针对性的更改。
-
Cursor支持多种大语言模型,包括Anthropic的Claude、Meta的Llama和OpenAI的GPT。
-
在Cursor中,代码更改直接应用到你的文件中——不需要复制和粘贴。
例如,我想在我的数据库模式文件中添加一个名为“Article”的新模型。以下是完整的提示词:
提示词: 我有这个基本的prisma模式。我有一个名为AI文章生成器的功能,用户可以通过文本提示生成文章,AI将根据提示生成文章。我想保存文章和文本提示,以便用户查看历史记录时,文章及其提示可以从数据库中检索。你能更新模式以适应这个请求吗?
Cursor AI提出代码更改,你只需要决定是否接受。看到上面绿色高亮的代码了吗?那是数据库模式中新添加的代码块。
在ChatGPT中,你需要将代码更改从聊天机器人复制到IDE中,如果复制错误是很容易出错的。
最后的想法
老实说,ChatGPT能够控制Mac应用是我没想到这么快就实现的事情。
想象一下,ChatGPT在未来可以创建文件、编写代码、运行测试,甚至推送更改到GitHub,这真的让人兴奋。
每个人会喜欢吗?当然不是。单单安全性问题就会让很多人持怀疑态度。但作为开发者,我觉得这有很大的潜力。
它比Cursor AI好吗?并不是。
Cursor在功能上仍然领先,它甚至可以直接编辑代码。此外,Cursor每月提供500次免费提示,这对小型项目来说已经绰绰有余了。相比之下,ChatGPT的免费GPT-4消息额度显得非常有限。
到目前为止,尚不清楚OpenAI会如何扩展此功能到不支持苹果屏幕阅读器的应用程序。竞争者如Anthropic则选择通过分析截图来了解屏幕上的内容。