揭秘OpenAI新神器:Cursor源码深度解析与利用探索(cursor的openai key)
一、OpenAI Cursor简介和优势
OpenAI Cursor是一款强大的AI编程编辑器,旨在提供更智能和高效的代码编写体验。它利用OpenAI的强大自然语言处理能力,在编写代码时为程序员提供自动补全、毛病检查和代码提示等功能,极大地提高了编程效力和代码质量。
1.1 Cursor的作用和优势
OpenAI Cursor的优势在于其不要钱(现在也开始收费了)和对项目工程的理解能力,和快速抢占市场的欲望和挑战VSCode全部生态的潜力。
- 不要钱(现在也开始收费了)和理解项目工程的能力:OpenAI Cursor提供了不要钱的使用方式,同时具有理解项目工程的能力,可以帮助程序员更好地理解和编辑代码。
- 快速抢占市场的欲望:OpenAI Cursor希望能够迅速抢占市场份额,成为程序员们首选的编程编辑器。
- 挑战VSCode全部生态的潜力:OpenAI Cursor具有与VSCode竞争的潜力,具有更强大、智能和高效的编辑功能。
二、OpenAI Cursor的安装和设置
要使用OpenAI Cursor,首先需要进行安装和设置,下面是安装和设置的详细步骤。
2.1 安装步骤
安装OpenAI Cursor的步骤以下:
- 点击“Continue”按钮继续,跳转到登录页面。
- 选择登录账号或使用OpenAI的API Key。
2.2 API Key设置
设置OpenAI API Key的步骤以下:
- 打开设置文件,找到API Key的部份。
- 输入OpenAI API Key。
- 提交API Key。
三、OpenAI Cursor的常见问题解答
在使用OpenAI Cursor时,可能会遇到一些常见问题。下面是一些解决这些问题的方法。
3.1 Cursor无响应问题解决方法
如果OpenAI Cursor无响应,可以尝试以下解决方法:
- 确保OpenAI API Key正确输入。
- 检查系统和Cursor的版本兼容性。
3.2 OpenAI API Key无效问题解决方法
如果OpenAI API Key无效,可以尝试以下解决方法:
- 检查API Key会不会过期或毛病。
- 参考OpenAI的最好实践保护API Key。
四、OpenAI Cursor的使用示例
下面是一些OpenAI Cursor的使用示例。
4.1 自定义OpenAI API Key
OpenAI Cursor支持自定义API Key,可使用自定义API Key进行编辑器操作和代码需求。
4.2 典型使用处景
以下是一些典型使用处景:
- 编程和人工智能相关的编辑器功能:OpenAI Cursor可以帮助程序员在编写代码时提供相关的编辑器功能,例如自动补全和毛病检查。
- 自然语言处理和代码需求的结合:OpenAI Cursor可以结合自然语言处理的技术,通过分析代码需求来提供更智能的编辑功能。
五、OpenAI Cursor的源码深度解析与利用探索
以下是对OpenAI Cursor的源码深度解析和利用探索。
5.1 Cursor源码背景和设计目的
OpenAI Cursor是专为编程和人工智能而设计的编辑器,旨在提供更智能和高效的代码编写体验。它的功能结合了自然语言处理和代码实现技术。
5.2 Cursor的功能与利用探索
以下是对OpenAI Cursor功能和利用的探索:
- 查询和访问Store中的键值对:OpenAI Cursor可以查询和访问Store中的键值对,支持顺序和随机的访问和操作。
- 支持顺序和随机方式进行访问和操作:OpenAI Cursor可以以顺序和随机的方式进行访问和操作,根据区别的需求进行灵活处理。
六、结语
通过本文,我们详细介绍了OpenAI Cursor的优势和特点,和其API Key的使用方法。OpenAI Cursor对编程和人工智能领域具有重要性和实用性,展望其未来的发展潜力。
cursor的openai key的进一步展开说明
揭秘OpenAI新神器:Cursor源码深度解析与利用探索
## 背景
Cursor (github.com/getcursor/c…)是一款专为编程与人工智能而设计的编辑器。
虽然现在还处于初期阶段,但目前Cursor可以完成以下几个任务:
1. 写作:使用比 Copilot 更智能的AI生成10⑴00行代码;
2. 差异:要求AI编辑一段代码块,并只查看建议的更改;
3. 聊天:采取类ChatGPT界面,了解当前的文件;
4. 和更多:要求修复lint毛病,在悬停时生成测试/注释等。
Cursor背后的公司于 2023 年在旧金山成立,主要开发利用 LLM 从基层建立的 IDE。
开创团队目前2位,已取得 OpenAI 的投资:
1. Aman Sanger ,2023 年毕业于麻省理工学院数学与计算机科学专业,Abelian AI 联合开创人
2. Michael Truell ,2023 年毕业于麻省理工学院数学与计算机科学专业。
## Cursor源码架构
Cursor 目前开源的部份是基于 Electron + CodeMirror 搭建的,源码代码质量不高,我乃至都怀疑代码都是用AI写的…拼凑感很强,另外没有一条测试用例。不过从市场角度也能理解,毕竟要快速捉住市场为主,两位MIT的高材生也没有太多前端工程经验。
整体的架构可以画一张图来表示:
在 Electron 架构之上主要构建了6个模块:
1. LSP ,语言服务,内置了对TS、Python、C++等常见的语言支持;
2. Settings ,一系列设置,比如 OpenAI 的key,开启的语言服务等等;
3. Comment ,注释,生成注释用;
4. CodeMirror ,一些基于CodeMirror的补钉;
5. Chat ,核心模块,generation也在这里面,是与AI的交互部份,也是我们本文分析的重点模块;
6. Extensions ,扩大,比如编辑器相关的扩大,自动补全,等等,目前还没有开放插件能力。
## 特性分析
Cursor 至今的官网和代码仓库都十分简陋,没有详细的文档介绍。
在它的Github主页宣称比 Copilot 更智能,但目前只能从作者的Twitter上的一个视频(twitter.com/amanrsanger…)来评测它的功能,这个视频一共履行了五条指令:
1. Build the `SearchResult` component showing file icons, names, and paths Connect this component to redux How do I add a keyboard shortcut in electron? Where in the code are shortcuts and redux reducers to open file search Make cmd+p with label File Search open file search
目前 Cursor 支持的交互方式有两种,一个是 `cmd+k` 唤起指令模式,这个指令会调用AI进行生成代码,另外一种是 `cmd+l` 唤起的聊天模式,会返回 markdown 的文本显示在一个浮层上。
在上面的指令中,1、2、5应当是指令模式,3、4是聊天模式。
接下来,我们仿照这个视频的环境(它用的是 cursor 源码并且打开了一个fileSearch文件),深入探索下这些交互背后产生了甚么。
### 第一条指令,生成代码
基于命令生成代码应当是AI的基本操作,这里的逻辑位于源码文件的 `features/chat/chatThunks.ts` 中:
“`typescript
const thunkFactory = ( actionCreator: ActionCreatorWithoutPayload, name: string ) => createAsyncThunk ( `chat/ ${name} ` , async ( payload : null , { getState, dispatch }) => {
dispatch ( actionCreator ())
if ( ( getState () as FullState ). chatState . userMessages . at (- 1 ) ?. msgType == ‘chat_edit’ ) {
dispatch ( diffResponse ( ‘chat’ ))
} else {
dispatch ( streamResponse ({}))
} } )
“`
当我们输入回车的时候,就会触发 `submit` 的 action,而这里面的 `actionCreator` 都是经过 `thunkFactory` 包裹的,在这里面会看到,终究履行了 `streamResponse`。
由于 `streamResponse` 函数十分冗杂,我们截取一下要求部份:
“`typescript
const server = ` ${API_ROOT} /conversation` const response = await fetch (server, {
method : ‘POST’ ,
headers : {
‘Content-Type’ : ‘application/json’ ,
… getBearerTokenHeader (getState),
},
body : JSON . stringify (data),
})
“`
核心就是向 cursor 的服务器发送了一个 POST 要求,目前 cursor 的后台代码并未开源,所以对这块是黑盒,不过从命名可以看出这个是一个对话接口,后台的实现中肯定也包括了对AI的调用。 值得注意的是这其实不是一个普通的POST要求,它返回的是一个 text/event-stream 的MIME,可能大部份同学其实不熟习,实际上它用于实现服务器向客户端推送实时数据流。它是基于HTTP长轮询和服务器发送事件( SSE )的一种技术,能够实现服务器与客户端之间的双向通讯。
实际上 cursor 的 server 是将信息通过 token 的方式流式返回的,这样也保证了在界面中类似 chatGPT 那样的体验。
我们来看一下这个要求的入参:
编辑器传递给 server 有价值的信息包括:
– 当前的文件信息,包括文件的所有代码,文件名和路径
– 交互的类型和指令 message
– 上下文的 Code(源码中可以看到,是依照20行切分的字符串,猜想是提供给模型上下文的,同时避免超过最大token的限制)
基于这些信息,生成适合的 prompt ,AI就能够生成代码了。
### 第二条指令,AI续写内容
第二条指令与第一条指令区别,是选中了某段文本,然后要求改写,让我们来看看这次发起的要求:
会发现和上次要求的区别的地方在于 `selection` 和 `msgType` ,分外传入了选中的文本和 `edit` ,这样 server 应当就可以更准确地生成相应的 prompt。
在 `edit` 这个模式下,很容易会触发一个 `continue` 的要求,这是由于选中的文本,再加上AI返回的内容,很容易就会超过模型最大token的限制,所以 Cursor 这里还加了一个 `continue` 接口,用来接上之前不能一次性返回的内容。
可以看到 `continue` 接口多了一个 `botMessages` 字段,用来将上一次AI返回的信息再次传递过去,而接口应当也是根据这个上下文信息要求AI能够续写上之前的内容。
`continue` 的逻辑在源码中是有一个 `interrupted` 作为标识的,如果判断是 `edit` 模式并且由于token问题被中断了,就会触发 `continue` 的逻辑:
“`typescript
lastBotMessage = getLastBotMessage ( ( getState () as FullState ). chatState )!
if ( lastBotMessage. type == ‘edit’ && lastBotMessage. interrupted && lastBotMessage. hitTokenLimit ) {
await dispatch ( continueUntilEnd (lastBotMessage. conversationId ))
}
“`
### 第三条指令,聊天模式
这个是AI聊天的经典模式,向AI问了一个问题,我们看一下要求:
可以看到这次传参非常简单, `msgType` 变成了 `freeform` ,就是向AI提一个问题,不过这里或者一样,传递了当前文件的上下文和光标上下文。
### 第四条指令,AI理解工程
一样是聊天场景,但是这个问题 Cursor 可以从当前的工程中找到答案,会告知你在当前工程的哪些文件中有相关的实现,这就相比于纯洁的AI有了显著的进步,意味着可以联系工程上下文给出解决方案了。
其实它的要求并没有甚么特殊的,要实现工程上下文,我猜想 Cursor 在server端可能采取的方案:
1. 有自己的索引,根据索引找到问题关键词相关的工程上下文,提供给模型。
2. 实际上在源码中也有一点蛛丝马迹,在获得 Symbol 的时候, Cursor 查找了最近的10个文件,然后实现了一个自己的类似度计算函数,用来判断内容会不会匹配,这个方法是用来寻觅 Copilot 的 Snippet,但我估计后台也有类似的处理。
### 第五条指令,是个迷
第五条指令理论上可以自动让编辑器跳转到对应文件,然后修改代码,但我依照视频里面输入指令并没有触发,不过源码里面确切有对应实现,如果有人能够复现这个步骤欢迎告知我一下。
## 小结
本文深入分析了 Cursor 的内部实现,重点关注是如何结合AI做到代码生成和辅助我们写代码。惋惜的是, Cursor 最核心的后台实现并没有开源,这也算是他们目前的商业机密了。不过从客户真个代码中,我们也差不多斟酌了一二,大概能猜到它本身的实现思路。
我认为目前 Cursor 的核心优势是在于不要钱(现在也开始收费了)和理解项目工程的能力,相比来讲,它更想快速抢夺市场,但它的劣势在于挑战了VSCode全部生态。
依照作者的话说,他们畅享的许多能力都不能基于VSCode插件来实现,这点我能够理解,从目前的一些特性来看,比如直接关联工程文件,乃至跳转某个文件直接编辑和diff代码,都是非常灵活的交互,但我认为接下来 Cursor 面临的核心问题是:
cursor的openai key的常见问答Q&A
问题1:Cursor是甚么?
答案:Cursor是一款AI编程编辑器,专为编程与人工智能而设计。它可使用自然语言处理和OpenAI API来帮助开发人员编写代码。
- Cursor使用OpenAI API进行机器学习,以提供智能代码提示和自动完成功能。
- 它可以根据上下文和需求帮助用户生成代码段,并提供关于代码的实时文档和解释。
问题2:Cursor的优势和劣势是甚么?
答案:Cursor目前的优势在于不要钱(现在也开始收费了)和理解项目工程的能力。相比其他编辑器,它更寻求快速抢占市场。
- Cursor可以帮助开发人员快速编写代码,并提供更智能的代码提示和自动完成功能。
- 它可以理解开发项目的上下文,并根据需求生成相应的代码。
- 但是,Cursor的劣势在于它挑战了VSCode全部生态系统,可能没法提供与其他编辑器相同的广泛插件和扩大支持。
问题3:怎样设置OpenAI API Key?
答案:要设置OpenAI API Key,可以依照以下步骤进行:
- 打开Cursor编辑器。
- 点击编辑器右上角的设置图标。
- 在设置界面中找到API Key的部份。
- 输入或粘贴你的OpenAI API Key。
- 保存设置。
问题4:如何找到我的Secret API Key?
答案:要找到你的Secret API Key,可以依照以下步骤进行:
- 打开Cursor编辑器。
- 点击编辑器右上角的设置图标。
- 在设置界面中查找你的用户设置。
- 在用户设置中可以找到你的Secret API Key。