当前位置: 首页 > article >正文

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

高效开发必备: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 appDelegate

    var body: some Scene {
        DocumentGroup(newDocument: MyDocumentAppDocument()) { file in
            ContentView(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 = self
        editSubmenu.addItem(boldMenuItem)
        
        let italicMenuItem = NSMenuItem(title: "Italic", action: #selector(toggleItalic), keyEquivalent: "i")
        italicMenuItem.target = self
        editSubmenu.addItem(italicMenuItem)
        
        let underlineMenuItem = NSMenuItem(title: "Underline", action: #selector(toggleUnderline), keyEquivalent: "u")
        underlineMenuItem.target = self
        editSubmenu.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 = alignSubmenu
        editSubmenu.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 AppKit

struct ContentView: NSViewRepresentable {
    @Binding var document: MyDocumentAppDocument

    func makeNSView(context: Context) -> NSTextView {
        let textView = NSTextView()
        textView.isRichText = true
        textView.isEditable = true
        textView.isSelectable = true
        textView.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.kler.cn/a/544395.html

相关文章:

  • cv2.Sobel
  • 项目场景拷打
  • 小结:OSPF的网络类型,LSA
  • AI前端开发:赋能开发者,提升解决实际问题的能力
  • Django REST Framework:如何获取序列化后的ID
  • 【工业安全】-CVE-2022-35555- Tenda W6路由器 命令注入漏洞
  • 全面解析鸿蒙(HarmonyOS)开发:从入门到实战,构建万物互联新时代
  • Cables Finance 构建集成LST与外汇RWA永续合约的综合性DEX
  • 如何启用 Apache Rewrite 重写模块 ?
  • 在ArcGIS JS API中使用WebGL实现波纹扩散特效
  • 先进制造aps专题二十九 基于ai智能体的生产排程和工厂生产仿真引擎的设计
  • 【分布式理论10】分布式互斥算法最佳实现:分布式锁的原理与实现
  • 【GitHub】装修个人主页
  • Golang常见面试题
  • hadoop之MapReduce:片和块
  • 分发饼干(力扣455)
  • Spring Cloud Gateway:构建高效微服务网关的利器
  • 3.Excel:销售主管大华-前两季度-销售情况❗(16)
  • 排序函数集合:冒泡排序、选择排序、插入排序、快速排序、归并排序、桶排序
  • 如何使用 CSS 隐藏元素
  • 【MySQL例题】我在广州学Mysql 系列——有关数据备份与还原的示例
  • excel 日期转换
  • 比亚迪“璇玑架构”全面接入DeepSeek
  • 《只狼》运行时提示“mfc140u.dll文件缺失”是什么原因?要怎么解决?
  • git客户端版本下载
  • 01docker run