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 则采取了不同的策略,通过分析屏幕截图来了解屏幕上的内容。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/968731.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

DeepSeek之Api的使用(将DeepSeek的api集成到程序中)

一、DeepSeek API 的收费模式 前言:使用DeepSeek的api是收费的 免费版: 可能提供有限的免费额度(如每月一定次数的 API 调用),适合个人开发者或小规模项目。 付费版: 超出免费额度后,可能需要按…

蓝桥杯(B组)-每日一题

题目: 思路: 首先将所有牛分类 1.a第一头母牛-每年年初生一头小母牛 2.不能生小牛的牛: b1-一岁小母牛 b2-二岁小母牛 b3-三岁小母牛 超过4岁就会再生一头小牛 因此计算每年生的小牛是第一头生的a再加上4岁后的生的 代码实现&#xff1…

deepseek+ollama+anythingLLM搭建本地知识库AI的笔记

所有内容都安装在docker里,安装完ollama后,在其bash里: ollama run deepseek-r1:1.5b 于是就安装好了deepseek, 再安装anythingLLM有点坑: export STORAGE_LOCATION$HOME/anythingllm && \ mkdir -p $STORAGE_LOCATIO…

Python中的json文件操作

1.1 基础知识 什么是JSON:(JavaScript Object Notation)是一种简洁、易读的数据语言,广泛用于数据交换、文档储存和web开发;适合数据量大,不要求保留原有的数据类型。导入:import json&#xf…

使用JavaScript设计一款简单的数字时钟

本文目录 使用 JavaScript 设计一款带日期显示的数字时钟效果预览1. 项目概述2. HTML 结构代码说明 3. CSS 样式代码说明 4. JavaScript 逻辑代码说明 5. 运行效果 使用 JavaScript 设计一款带日期显示的数字时钟 本文将详细介绍如何使用 HTML、CSS 和 JavaScript 设计一款带日…

PPDock:复旦大学团队研发的蛋白质-配体“盲对接“技术

PPDock: Pocket Prediction-Based Protein−Ligand Blind Docking 发表于Journal of Chemical Information and Modeling,第一作者为 Jie Du,通讯作者为 Manning Wang,研究团队来自复旦大学。该研究提出一种新的基于口袋预测的蛋白质 - 配体盲…

VSCode C/C++ 开发环境完整配置及常见问题(自用)

这里主要记录了一些与配置相关的内容。由于网上教程众多,部分解决方法并不能完全契合我遇到的问题,因此我选择以自己偏好的方式,对 VSCode 进行完整的配置,并记录在使用过程中遇到的问题及解决方案。后续内容也会持续更新和完善。…

系统漏洞扫描服务:安全风险识别与防护指南

系统安全的关键在于漏洞扫描服务,此服务能迅速发现潜在的安全风险。借助专业的扫描工具和技术,它确保系统稳定运作。以下将简要介绍这一服务的主要特点。 扫描原理 系统漏洞扫描服务依赖两种主要手段:一是通过漏洞数据库进行匹配&#xff0…

MVC(Model-View-Controller)framework using Python ,Tkinter and SQLite

1.项目结构 sql: CREATE TABLE IF NOT EXISTS School (SchoolId TEXT not null, SchoolName TEXT NOT NULL,SchoolTelNo TEXT NOT NULL) 整体思路 Model:负责与 SQLite 数据库进行交互,包括创建表、插入、删除、更新和查询数据等操作。View&#xff1…

Xcode证书密钥导入

证书干嘛用 渠道定期会给xcode证书,用来给ios打包用,证书里面有记录哪些设备可以打包进去。 怎么换证书 先更新密钥 在钥匙串访问中,选择系统。(选登录也行,反正两个都要导入就是了)。 mac中双击所有 .p12 后缀的密钥&#xff…

【学习笔记】计算机网络(三)

第3章 数据链路层 文章目录 第3章 数据链路层3.1数据链路层的几个共同问题3.1.1 数据链路和帧3.1.2 三个基本功能3.1.3 其他功能 - 滑动窗口机制 3.2 点对点协议PPP(Point-to-Point Protocol)3.2.1 PPP 协议的特点3.2.2 PPP协议的帧格式3.2.3 PPP 协议的工作状态 3.3 使用广播信…

最新版Edge浏览器集成ActiveX控件之金山WpsDocFrame控件

背景 WpsDocFrame控件‌是由金山公司开发的ActiveX控件,主要用于OA系统中,支持在浏览器中嵌入WPS文档的查看和编辑功能。 allWebPlugin中间件是一款为用户提供安全、可靠、便捷的浏览器插件服务的中间件产品,致力于将浏览器插件重新应用到所有…

计算机网络结课设计:通过思科Cisco进行中小型校园网搭建

上学期计算机网络课程的结课设计是使用思科模拟器搭建一个中小型校园网,当时花了几天时间查阅相关博客总算是做出来了,在验收后一直没管,在寒假想起来了简单分享一下,希望可以给有需求的小伙伴一些帮助 目录 一、设计要求 二、…

mars3d接入到uniapp的时候ios上所有地图的瓦片都无法加载解决方案

用的是【Mars3d】官网的uniapp的仓库,安卓没有问题,但是ios的不行 相关链接 mars3d-uni-app: uni-app技术栈下的Mars3D项目模板 解决方案:感觉所有图片请求全被拦截了 uniapp的ios内核不允许跨域,需要先把瓦片下载后转base64&…

springboot019高校心理教育辅导

版权声明 所有作品均为本人原创,提供参考学习使用,如需要源码数据库配套文档请移步 www.taobysj.com 搜索获取 技术实现 开发语言:Javavue。 框架:后端spingboot前端vue。 模式:B/S。 数据库:mysql。 开…

基于java手机销售网站设计和实现(LW+源码+讲解)

专注于大学生项目实战开发,讲解,毕业答疑辅导,欢迎高校老师/同行前辈交流合作✌。 技术范围:SpringBoot、Vue、SSM、HLMT、小程序、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容:…

基于 GEE 计算研究区年均地表温度数据

目录 1 代码解析 2 完整代码 3 运行结果 1 代码解析 (1)定义研究区: // 研究区的范围需要自己提前上传 var dataset table;// 将研究区显示在中心,后面的数字为缩放等级,范围从1 - 24 Map.centerObject(dataset,…

VMware Windows_10_x64 安装 VM Tools 后无法将本机文件复制到虚拟机

有一种情况,安装VM Tools死活安装不上去。这时不要急不要慌,重启本机就好了(本人情况就是如此)。 windows键 R 输入 service.msc 打开服务管理器 找到Virtual Disk服务,选择属性设置为自动,应用后启用服…

python知识和项目经验

一些功能的实现 从.py文件中获取函数对象和参数 的字典 在给定的Python脚本中,通过模块导入和反射机制,如何动态获取包含模型函数的模块中的函数及其默认参数,并构建一个字典以便后续使用? 解决方案 test.py # test.py impor…

Unity下ML-Agents第一个示例

本文写于2025年2月12日,需要提前安装好Anaconda。按文中步骤测试了两次都可正常运行。 一、准备Python端 1.下载并解压 ML-Agents Release 22(使用git clone大概率会失败) 解压路径为 C:\Users\Administrator(Administrator为电…