ChatGPT macOS 桌面应用让你的编程体验更上一层楼

embedded/2025/2/21 3:49:35/

高效开发必备:ChatGPT macOS 桌面应用亮点盘点

©作者|Ninja Geek

来源|神州问学

通过 macOS 版 ChatGPT 应用,已经能够更好的和你的生产力工具无缝配合工作。

大概在三四周之前,Anthropic 在 Claude 上推出了一项名为 Computer Use 的功能,该功能允许使用基于文本的命令来控制电脑桌面。在这之后不久,微软发布了名为 Omniparser 的项目,这是一款可以解析屏幕的 AI 代理工具 —— 该项目的推出可能预示着未来微软会利用 AI 能力来控制用户桌面的能力,其中最有可能的就是通过集成在 Windows 操作系统中的 Copilot 来实现。

在这个领域,似乎苹果和谷歌没有什么动静,但可以肯定的是,他们一定也在幕后着相关的工作。

就在今天,OpenAI 发布了 macOS 版的 ChatGPT 桌面应用的重磅功能 “Works With Apps”。该功能能够让 ChatGPT 控制 Xcode、vscode 等编码工具,甚至是 iTerm2 这样的终端应用。

对于像我这样的从业者,意义太重大了!

ChatGPT 新增“与应用协同工作”的功能

我必须要先澄清一点,该功能还不是一个 AI 代理。

然而,OpenAI 将其描述为创建代理系统的“关键构建块”。AI Agent 目前面临的主要挑战是如何学会解读整个计算机屏幕,而不仅仅是基于文本的提示或它们自己的输出内容。

ChatGPT macOS 桌面版的新功能主要有以下特性:

● 在 Xcode 或 vscode 中访问和理解代码。

●根据项目中现有的代码来编写代码。

●在终端应用程序中提交更改,例如 Terminal 或 iTerm2(我想这对于 iTerm2 中提供的 AI 插件是个重大打击)

●为您的项目调试并编写单元测试。

下面的截图表现了 Mac 版 ChatGPT 桌面应用的新功能。

新的桌面应用控制按钮位于互联网搜索切换按钮的旁边,单击它会显示您可以启用、禁用的应用程序列表。

在您使用新的桌面应用控制功能前请确保在“隐私与安全”中的辅助功能设置菜单中授予 ChatGPT 控制您计算机的权限。

一旦在该设置中启用了 ChatGPT,您应该会看到 Xcode 现在在 ChatGPT 的仪表板上启用。

为了帮助大家理解,我要求 ChatGPT 为我创建的文档型桌面应用创建一个菜单条。

让我们开始尝试让 ChatGPT 编写一些代码,在屏幕顶部显示一个文本编辑器的功能菜单条。

提示词:这是一个文档型的 macOS 桌面应用模板,我想利用这个模板开发一个标准功能的文本编辑器,在应用界面的顶部需要有一个功能菜单条,在菜单条中包含典型的功能,比如:文字加粗、斜体、下划线、左对齐、居中对齐、右对齐、有序列表、无序列表等等。

此时,ChatGPT 会查看我打开的 Xcode 项目中的代码并为我写出代码建议。

以下是 ChatGPT 给出的具体代码建议:

import SwiftUI@main
struct MyDocumentAppApp: App {@NSApplicationDelegateAdaptor(AppDelegate.self) var appDelegatevar body: some Scene {DocumentGroup(newDocument: MyDocumentAppDocument()) { file inContentView(document: file.$document)}}
}class AppDelegate: NSObject, NSApplicationDelegate {func applicationDidFinishLaunching(_ notification: Notification) {setupMenuBar()}func setupMenuBar() {guard let mainMenu = NSApp.mainMenu else { return }let editMenu = NSMenuItem()editMenu.title = "Edit"let editSubmenu = NSMenu()let boldMenuItem = NSMenuItem(title: "Bold", action: #selector(toggleBold), keyEquivalent: "b")boldMenuItem.target = selfeditSubmenu.addItem(boldMenuItem)let italicMenuItem = NSMenuItem(title: "Italic", action: #selector(toggleItalic), keyEquivalent: "i")italicMenuItem.target = selfeditSubmenu.addItem(italicMenuItem)let underlineMenuItem = NSMenuItem(title: "Underline", action: #selector(toggleUnderline), keyEquivalent: "u")underlineMenuItem.target = selfeditSubmenu.addItem(underlineMenuItem)let alignMenuItem = NSMenuItem(title: "Alignment", action: nil, keyEquivalent: "")let alignSubmenu = NSMenu()alignSubmenu.addItem(withTitle: "Left", action: #selector(alignLeft), keyEquivalent: "l")alignSubmenu.addItem(withTitle: "Center", action: #selector(alignCenter), keyEquivalent: "e")alignSubmenu.addItem(withTitle: "Right", action: #selector(alignRight), keyEquivalent: "r")alignMenuItem.submenu = alignSubmenueditSubmenu.addItem(alignMenuItem)mainMenu.addItem(editMenu)mainMenu.setSubmenu(editSubmenu, for: editMenu)}@objc func toggleBold() {// Implement toggle bold functionality}@objc func toggleItalic() {// Implement toggle italic functionality}@objc func toggleUnderline() {// Implement toggle underline functionality}@objc func alignLeft() {// Implement left alignment functionality}@objc func alignCenter() {// Implement center alignment functionality}@objc func alignRight() {// Implement right alignment functionality}
}
import SwiftUI
import AppKitstruct ContentView: NSViewRepresentable {@Binding var document: MyDocumentAppDocumentfunc makeNSView(context: Context) -> NSTextView {let textView = NSTextView()textView.isRichText = truetextView.isEditable = truetextView.isSelectable = truetextView.font = NSFont.systemFont(ofSize: 14)return textView}func updateNSView(_ nsView: NSTextView, context: Context) {nsView.string = document.text}
}
@objc func toggleBold() {guard let firstResponder = NSApp.keyWindow?.firstResponder as? NSTextView else { return }let currentFont = firstResponder.typingAttributes[.font] as? NSFont ?? NSFont.systemFont(ofSize: 14)let newFont = currentFont.isBold ? currentFont.unbold() : currentFont.bold()firstResponder.typingAttributes[.font] = newFont
}

指的注意的是,当前版本的 ChatGPT 应用还无法直接修改 Xcode 中的代码,需要手动复制和粘贴所有内容到代码编辑区,虽然这显得不太方便,但至少可以实现功能特性。

接下来,我要求 ChatGPT 为我创建一个用户账户的界面,这里,我将Notion 中我的账户设置界面截图提供给了 ChatGPT,并提示它按这个界面来实现。

我想要实现一个账户界面,请基于我提供给你的截图作为参考。

它生成了代码,甚至提供了将代码放置在哪里的具体步骤指南。对于不熟悉 Swift 的我来说,这真是太棒了!

ChatGPT 为我提供了有关如何以及在何处添加代码的分步指南。

最后,我将 ChatGPT 与终端应用配对,并要求其提交代码更改并推送到代码仓库中。

ChatGPT 将提供 git 命令,您所要做的就是在终端上执行它们。

git add . 
git commit -m “实现了文本编辑器顶部菜单条和账户设置界面”

它是如何工作的?

OpenAI 的 Work With Apps 很大程度上依赖 macOS 的辅助功能 API,该 API 一直为 Apple 的 VoiceOver 屏幕阅读器提供支持。这使得 ChatGPT 能够从应用程序中读取文本并对其进行处理。

目前,屏幕阅读器仅适用于文本。它无法处理屏幕上的其他内容,例如图像、对象布局或视频。

该功能处理代码的方式如下:

●对于某些应用程序,每次提示时,最后 200 行代码都会发送到 ChatGPT。

●对于其他的部分,ChatGPT 使用处于激活状态的窗口中的所有代码。

●您可以突出显示特定部分来指导 ChatGPT,但它仍将包含周围的文本作为上下文。

●请注意,该过程会使用大量输入 token。

下一代 AI Agent

根据彭博社前几天的报道,“人工智能领域的创新速度正在放缓”。

三大人工智能科技公司 —— OpenAI、谷歌和 Anthropic 为构建更先进的人工智能系统所付出的巨大努力,如今正面临回报递减的局面。

随着能够访问我们电脑的 AI 工具的推出,它开辟了大量可能的使用场景。我甚至无法想象这些工具在用户电脑中可能产生哪些影响。

根据我的理解,有以下几种可能的影响:

●软件开发领域可以将重点从实现转到创意。

●随着重复任务的自动化,生产力会大幅提升。

●自动化可能减少某些行业的就业岗位。

●预计互联网上将会出现大量由 AI 生成的软件。

●安全问题可能会成为比以往更大的问题。

根据《哈佛商业评论》的研究,生成式人工智能已经对劳动力市场产生了巨大的影响。

从这篇报道的原文可以体会到这种观点:

We find that the introduction of ChatGPT and image-generating tools led to nearly immediate decreases in posts for online gig workers across job types, but particularly for automation-prone jobs. After the introduction of ChatGPT, there was a 21% decrease in the weekly number of posts in automation-prone jobs compared to manual-intensive jobs. Writing jobs were affected the most (30.37% decrease), followed by software, app, and web development (20.62%) and engineering (10.42%).

从这一趋势来看,我相信那些选择适用并学习使用人工智能工具的人将会蓬勃发展,而那些抵制的人可能会失去工作。

它比 Cursor AI 更好吗?

在花了几个小时使用 ChatGPT 的新功能后,我发现 ChatGPT 落后于 Cursor AI。

●Cursor 的 Composer 界面可以引用特定的文件并进行有针对性的修改。

●Cursor 支持多种语言模型,包括 Anthropic 的 Claude、Meta 的 Llama 和 OpenAI 的 GPT。

●Cursor 中的代码更改直接应用于您的代码文件 - 不需要做繁琐的复制粘贴操作。

例如:我希望向我的数据库Schema 文件添加一个名为“Article”的新模型。以下是完整提示词:

提示词:我有一个基础的 Prisma Schema 文件。现在我想开发一个博客系统,在该系统中会有文章、标签、评论、作者、读者这些业务实体,请帮我基于给定的业务实体生成 Prisma 的 Schema 内容。

Cursor AI 会提出代码更改建议,您只需决定是否接受。看到上面绿色突出显示的代码了吗?这是数据库 Schema 中新添加的代码块。

在 ChatGPT 中,您必须将代码更改从聊天机器人复制到 IDE,如果复制方式错误,就很容易出错。

最后的想法

老实说,我没想到 ChatGPT 会这么快想到了用来控制 macOS 生产力应用的功能。

可以试想一下这项技术未来能走多远,真是令人兴奋。想象一下 ChatGPT 创建文件、编写代码、运行单元测试,甚至将更改推送到远程代码仓库,这些都太酷了!

每个人都会爱上这项新功能吗?我不这么看。单是安全方面的疑虑就足以让很多人持怀疑态度。但作为一名软件工程师,我认为这项功能有非常大的潜力。

它比 Cursor AI 更好吗?目前来说,并不比它好。

Cursor 的功能仍然领先,甚至可以直接编辑代码。此外,Cursor 每个月免费提供了 500 个提示词的额度。这对于一些小型项目来说已经完全足够了。

目前尚不清楚 OpenAI 将如何将此项功能扩展到不支持 Apple 屏幕阅读器的应用程序。竞争对手 Anthropic 则采取了不同的策略,通过分析屏幕截图来了解屏幕上的内容。


http://www.ppmy.cn/embedded/162337.html

相关文章

Baklib知识中台构建企业智能运营核心架构

内容概要 在数字化转型的浪潮中,企业对于知识的系统化管理需求日益迫切。Baklib作为新一代的知识中台,通过构建智能运营核心架构,为企业提供了一套从知识汇聚到场景化落地的完整解决方案。其核心价值在于将分散的知识资源整合为统一的资产池…

App UI自动化--Appium学习--第二篇

如果第一篇在运行代码的时候出现问题,建议参考我的上一篇文章解决。 1、APP界面信息获取 adb logcat|grep -i displayed代码含义是获取当前应用的包名和界面名。 根据日志信息修改代码当中的包名和界面名,就可以跳转对应的界面。 2、界面元素获取 所…

从概念到落地:DeepSeek携手蓝耘平台,解锁AI赋能生活的实践

欢迎来到ZyyOvO的博客✨,一个关于探索技术的角落,记录学习的点滴📖,分享实用的技巧🛠️,偶尔还有一些奇思妙想💡 本文由ZyyOvO原创✍️,感谢支持❤️!请尊重原创&#x1…

网络安全要学python 、爬虫吗

网络安全其实并不复杂,只是比普通开发岗位要学习的内容多一点。无论是有过编程基础还是零基础的都可以学习的。网络安全目前可就业的岗位从技术上可分为两部分:web安全和二进制逆向安全。web安全是网络安全的入门方向,内容简单,就…

数论补充 之 前后缀分解问题

文章目录 [0,i-1] 和 [i1,n-1] 共同作用3334,数组的最大因子得分 对于前缀分解问题,我愿把它分为几个大问题:[0,i] 或 [i,n-1] 或 [l,r],或 [0,i-1] 和 [i1,n-1] 共同作用的问题 [0,i-1] 和 [i1,n-1] 共同作用 3334,数组的最大因子得分 3334,数组的最大…

FFmpeg中时长的表示方式

ffmpeg命令中涉及到时长的表示,如下: 2.3 时长 有两种被接受的表达时长的语法。 [-][HH:]MM:SS[.m…] HH 表示小时数,MM 表示分钟数,最多为2位数字,SS 表示秒数,最多为2位数字。结尾的 m 表示 SS 的小…

【工业安全】-CVE-2022-35561- Tenda W6路由器 栈溢出漏洞

文章目录 1.漏洞描述 2.环境搭建 3.漏洞复现 4.漏洞分析 4.1:代码分析 4.2:流量分析 5.poc代码: 1.漏洞描述 漏洞编号:CVE-2022-35561 漏洞名称:Tenda W6 栈溢出漏洞 威胁等级:高危 漏洞详情&#xff1…

C# 中用于比较两个字符串的方法string.Compare

string.Compare 是 C# 中用于比较两个字符串的方法。它返回一个整数,表示两个字符串在字典顺序(lexicographical order)中的相对关系。这个方法非常有用,尤其是在排序、查找或比较字符串时。 string.Compare 的详细说明 方法签名…