【AI】AI编程助手:Cursor、Codeium、GitHub Copilot、Roo Cline、Tabnine
文章目录
- 一、基本特性对比
- 二、收费标准
- 三、私有部署能力
- 1、Tabnine
- 2、Roo Code
- 三、代码补全与自然语言生成代码
- 四、安装
- 独立的IDE安装
- 插件安装
- 五、基本使用
- (一)Cursor
- (二)GitHub Copilot
- 1、获取代码建议
- 2.聊天
- 1)上下文
- 2)Chat participants
- 3)Slash Commands
- 4)切换AI模型
- 5)Inline Chat
- 6)Terminal Inline Chat
- 7)智能操作
- 3、Copilot Edits
- 4、自定义指令
- (三)Windsurf/Codeium
- 参考
一、基本特性对比

二、收费标准
Cursor:https://www.cursor.com/pricing
Windsurf/Codeium: https://codeium.com/pricing
GitHub Copilot: https://github.com/features/copilot/plans
Tabnine: https://www.tabnine.com/pricing/
三、私有部署能力
Tabnine与Roo Code均支持私有部署。
1、Tabnine
它仅支持企业客户,可以选择部署一个私有的、自托管版本的 Tabnine 集群。
部署选项
- 在 AWS、GCP 或 Azure 上的虚拟私有云(VPC)
- 在您自己的服务器上进行本地部署
私有安装可以部署在完全隔离的环境中。
官方文档:https://docs.tabnine.com/main/administering-tabnine/private-installation
2、Roo Code
它是通过Ollama 或 LM Studio实现的。
官方文档:https://docs.roocode.com/advanced-usage/local-models
三、代码补全与自然语言生成代码
除Tabnine外,其他均支持所有的主流语言,Tabnine仅完全支持JavaScript、TypeScript、Python、Java、C++、PHP,明细见https://docs.tabnine.com/main/welcome/readme/supported-languages
四、安装
独立的IDE安装
Cursor:https://www.cursor.com/
Windsurf/Codeium:https://codeium.com/windsurf/download_confirmation?code=ma
插件安装
GitHub Copilot:vscode://GitHub.copilot/
Tabnine:支持多个IDE
- vscode:vscode:extension/TabNine.tabnine-vscode
Roo Cline:vscode:extension/RooVeterinaryInc.roo-cline
五、基本使用
(一)Cursor
https://mp.weixin.qq.com/s/tCpW_Dt-Vy2CYjyUHeFL4g
(二)GitHub Copilot
官方文档:https://code.visualstudio.com/docs/copilot/overview
安装完VSCode插件后,可以在这里打开它:

1、获取代码建议
与Cursor类似,输入后Copilot会自动建议函数的剩余部分,如果接受,按Tab;如果拒绝,按Esc。

根据注释生成代码:

它也支持多个建议:

支持快捷键切换:

如果只想接收部分建议,可以使用快捷键⌘→。
2.聊天
安装完VSCode插件后,可以在这里打开聊天窗口,或使用快捷键Control+Command+i (Mac) / Ctrl+Alt+i (Windows/Linux):

1)上下文
默认上下文是你当前打开正在看的文件,或当前选中代码,如果你想更改上下文,有的几种方式:
- 拖拽文件进聊天窗口
- 点击链接的按钮(⌘/),然后从Quick Pick 菜单中选择一种上下文类型:

通过输入# 字符,也可以使用聊天变量(Chat Variables),并看到可用的变量列表。
- #codebase:将整个代码库作为上下文提供给 Copilot Chat,当希望 Copilot 参考整个项目结构、文件关系或全局逻辑时使用。
- #editor:将当前活动的编辑器内容作为上下文,当希望 Copilot 基于当前编辑器中的完整内容进行解释、修复或优化时使用。
- #file:从工作区中添加特定文件的内容或路径。
- #selection:将当前编辑器中选中的代码添加到聊天提示中。
- #sym:添加工作区中的某个符号(如函数名、类名或变量名)。
- #terminalLastCommand:将终端中最近运行的命令作为上下文提供给 Copilot Chat,当需要调试、优化或解释终端命令时使用。
- #terminalSelection:将终端中选中的文本作为上下文提供给 Copilot Chat,当需要详细分析选中的终端输出内容时使用,比如错误日志。
- #vscodeAPI:将 Visual Studio Code 提供的 API 作为上下文,用于帮助开发扩展或自动化工作流程,当需要了解 VS Code API 的功能或如何使用特定 API 时使用。

- 直接右击文件选择:

2)Chat participants
这个就像领域专家,可以在其专业领域提供帮助。使用时直接在聊天输入框中键入@会展示所有的:

@github:了解并具备处理 GitHub 仓库、问题(Issues)、拉取请求(PRs)等相关操作的技能;它额外还可以使用 Bing API 执行网络搜索。比如:
- 检查或管理 GitHub 仓库中的问题和 PR。
- 查询代码库相关的信息。
- 搜索与开发或代码相关的网络资源。
@terminal:了解集成终端(shell)及其内容。比如:
- 协助调试终端命令。
- 解释终端输出内容。
- 帮助优化或修复终端中的命令操作。
@vscode:了解 Visual Studio Code 的功能、设置及其 API。比如:
- 指导使用 VS Code 的特性或快捷键。
- 帮助调整 VS Code 设置。
- 提供与 VS Code API 相关的开发建议或示例代码。
@workspace:了解工作区中的代码。比如:
- 帮助导航代码库。
- 查找相关的类、函数或文件。
- 提供有关代码结构、交互或设计模式的建议。
你也可以从Visual Studio Code Marketplace或GitHub Marketplace安装其他的Chat participants。
- Visual Studio Code Marketplace:https://marketplace.visualstudio.com/search?term=tag%3Achat-participant&target=VSCode&category=All%20categories&sortBy=Relevance
- GitHub Marketplace:https://github.com/marketplace
3)Slash Commands
它提供了一种快捷方式,用于执行特定的指令,从而避免编写复杂的提示。只需输入/字符,然后输入命令即可,Chat participants也可以贡献自己的斜杠命令。

常用内置斜杠命令:
- /clear:开始一个新的聊天会话。
- /help:获取关于使用 GitHub Copilot 的帮助。
- @workspace /explain(或/explain):解释选定代码的功能。
- @workspace /fix(或/fix):提出修复选定代码问题的建议。
- @workspace /new(或/new):为新工作区或新文件生成代码框架。
- @vscode /runCommand:搜索或运行一个 VS Code 命令。
4)切换AI模型
可以在聊天窗口点击AI模型切换:

以下是当前Copilot Chat 使用的模型:
- GPT 4o: 这是 Copilot Chat 的默认模型,它是一个多功能的多模态模型,在文本和图像处理方面表现出色,旨在提供快速可靠的响应;它在非英语语言方面也有出色表现;该模型部署在 Azure 上。
- Claude 3.5 Sonnet: 该模型在整个软件开发生命周期的编码任务中表现出色,包括初始设计、bug修复、维护和优化;GitHub Copilot 使用部署在 Amazon Web Services 上的 Claude 3.5 Sonnet。
- Gemini 2.0 Flash: 该模型具有强大的编码、数学和推理能力,非常适合协助软件开发;该模型部署在 Google Cloud 上。o1: 该模型专注于高级推理和解决复杂问题,特别是在数学和科学领域;响应速度比 GPT 4o 模型慢;每天可向该模型发出 10 次请求;该模型部署在 Azure 上。o3-mini: 这是继 o1 和 o1-mini 之后的新一代推理模型;
- o3-mini 模型在编码基准测试上优于 o1,响应时间与 o1-mini 相当,以几乎相同的延迟提供更好的质量;最适合代码生成和小上下文操作;每 12 小时可向该模型发出 50 次请求;该模型部署在 Azure 上。
5)Inline Chat
支持在编辑器内直接提交prompt并获取代码建议,无需离开当前工作环境;要启动编辑器行内聊天,在任何文件中使用⌘I快捷键;或者打开文件后,从标题栏的Copilot菜单中选择编辑器行内聊天即可。

Copilot在编辑器中直接显示代码建议,你可以:
- 接受建议:⌘
- Enter丢弃建议:Esc
不满意时可以为相同的prompt生成新的代码建议

当然,你也可以在编辑器中选中某段代码进行询问,不过该行为将限定你的问题限定在该选区范围内(即添加聊天上下文)。
如果想对比行内聊天建议,可以配置 inlineChat.mode 设置为preview:

设置后效果:

6)Terminal Inline Chat
和Inline Chat类似,但它作用于命令行,使用的是@terminal聊天参与者,能访问集成终端的 shell 和内容上下文,在命令行中按 ⌘I 快捷键即可启动终端行内聊天:

若接受建议,可以采用以下快捷键:
- 执行:⌘Enter
- 插入:⌥Enter 插入命令到终端
7)智能操作
选中代码右击即可看到Explain、Fix、Review and Comment、Generate Docs、Generate Tests

上面的入口有点深,不过使用过程中若发现问题,它也会在行内提示:

当然,选中某些字符,这一行的前面也会出现一个快捷icon:

可点击展开快捷操作:

下面是我通过Review using Coplit的结构,若有建议,当前行将加入留言,可以点击展开,另外在命令行中的Comments也可以看到:

3、Copilot Edits
与Cursor的Composer类似,Copilot的Edits也是直接在多个文件中快速迭代代码,修改会直接应用在编辑器中。

可以直接点击右上角的tab切换,或使用快捷键⇧⌘I,还可以在标题上展开Copilot的菜单:

4、自定义指令
与Cursor的自定义指令类似,可以为Copilot提供团队工作流、工具和项目细节,无需在每次对话中重复,它包含四种指令类型:
- 代码生成 - 定义代码风格,如私有变量前缀规则
- 测试生成 - 指定测试框架等测试相关要求
- 代码审查 - 设置代码审查重点
- 提交信息生成 - 规范提交信息格式
官网文档讲解很详细,有需要可以直接看官网:https://code.visualstudio.com/docs/copilot/copilot-customization
(三)Windsurf/Codeium
参考
- AI编程助手
- 【AI】Cursor基本使用
相关文章:
【AI】AI编程助手:Cursor、Codeium、GitHub Copilot、Roo Cline、Tabnine
文章目录 一、基本特性对比二、收费标准三、私有部署能力1、Tabnine2、Roo Code 三、代码补全与自然语言生成代码四、安装独立的IDE安装插件安装 五、基本使用(一)Cursor(二)GitHub Copilot1、获取代码建议2.聊天1)上下…...
我的uniapp自定义模板
uniapp自定义模板 如有纰漏请谅解,以官方文档为准后面这段时间我会学习小程序开发的知识,会持续更新可以查看我的github,后续我会上传我的uniapp相关练习代码有兴趣的话可以浏览我的个人网站,我会在上面持续更新内容,…...
如何将MediaPipe编译成Android中Chaquopy插件可用的 .whl 文件
环境准备 操作系统:建议使用 Ubuntu 20.04 或者 macOS(这篇博客会以 Ubuntu 为例)。Python 版本:Python 3.7 或以上版本。Android Studio:配置好 Android Studio 和 Android NDK(Native Development Kit&a…...
华为OD机试-绘图机器-双指针(Java 2025 A卷 100分)
题目描述 绘图机器的绘图笔初始位置在原点 (0, 0)。机器启动后按照以下规则绘制直线: 尝试沿着横坐标正向绘制直线,直到给定的终点 E。期间可以通过指令在纵坐标轴方向进行偏移,offsetY 为正数表示正向偏移,为负数表示负向偏移。给定的横坐标终点值 E 以及若干条绘制指令,…...
【C++】动态规划从入门到精通
一、动态规划基础概念详解 什么是动态规划 动态规划(Dynamic Programming,DP)是一种通过将复杂问题分解为重叠子问题,并存储子问题解以避免重复计算的优化算法。它适用于具有以下两个关键性质的问题: 最优子结构&…...
OpenCV计算摄影学(23)艺术化风格化处理函数stylization()
操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 风格化的目的是生成不以照片写实为目标的多种多样数字图像效果。边缘感知滤波器是风格化处理的理想选择,因为它们能够弱化低对比度区…...
S32K144外设实验(三):ADC单通道连续采样(中断)
这次的实验比较简单,主要目的就是验证一下ADC的中断功能,思路是使用软件触发ADC的连续单通道采样,将采样值通过串口发送到上位机观察数是否正确。 其实官方并不推荐使用中断的方式,这种方式会占用大量的CPU资源,笔者安…...
LeetCode 第19~21题
LeetCode 第19题:删除链表的倒数第N个结点 题目描述 给你一个链表,删除链表的倒数第n个结点,并且返回链表的头结点。 难度:中等 题目链接:19. 删除链表的倒数第 N 个结点 - 力扣(LeetCode) 示例…...
Web3 时代数据保护的关键挑战与应对策略
Web3 时代数据保护的关键挑战与应对策略 随着互联网技术的飞速发展,我们正步入 Web3 时代,这是一个以去中心化、用户主权和数据隐私为核心的新时代。在这个时代,数据保护成为了一个至关重要的议题。本文将探讨 Web3 时代数据保护面临的主要挑…...
为什么labelme框选图片后闪退
Labelme 软件框选图片后闪退的解决方案 Labelme 是一种常用的图像标注工具,但在实际使用过程中可能会遇到一些问题,比如框选图片后程序突然闪退。以下是针对该问题的具体分析和解决方法: 可能原因及对应解决措施 标签文件异常 如果某些图片…...
C# I/O 核心用法
在 C# 中,输入输出(I/O)操作是处理文件、目录、流等数据交互的核心功能。本文将从基础到高级,系统讲解 C# 中文件 I/O 的实现方式、最佳实践及常见场景解决方案。 一、核心类与命名空间 1、System.IO 命名空间,…...
SpringBoot之如何集成SpringDoc最详细文档
文章目录 一、概念解释1、OpenAPI2、Swagger3、Springfox4、Springdoc5. 关系与区别 二、SpringDoc基本使用1、导包2、正常编写代码,不需要任何注解3、运行后访问下面的链接即可 三、SpringDoc进阶使用1、配置文档信息2、配置文档分组3、springdoc的配置参数**1. 基…...
Oracle 数据迁移至 GaussDB 注意事项
将数据从 Oracle 迁移到 GaussDB(华为分布式数据库)时,需充分考虑架构差异、语法兼容性、数据一致性等核心问题。以下是关键注意事项及操作建议: 一、迁移前的准备工作 兼容性评估 语法差异:Oracle 使用 PL/SQL&#x…...
【智能体】| 知识库、RAG概念区分以及智能体是什么
文章目录 前言简介大模型“幻觉”问题如何解决“幻觉”问题? RAG、智能体、RAG智能体概念什么是检索增强型生成(RAG)模拟简单的RAG场景 AI系统中的智能体是什么什么是Agentic RAG?Agentic RAG如何工作?Agentic RAG架构…...
二分查找的应用
什么时候用二分查找? 数据具有二段性的时候 第一题: 题解代码: class Solution { public:int search(vector<int>& nums, int target) {int left 0,right nums.size()-1;while(left<right){int mid left (right-left)/2;//中…...
Android Compose 框架基础按钮模块深度剖析(四)
Android Compose 框架基础按钮模块深度剖析 一、引言 在现代 Android 应用开发中,Android Compose 框架以其声明式编程范式和简洁高效的开发体验,逐渐成为开发者构建用户界面的首选。而注解在 Android Compose 框架中扮演着至关重要的角色,…...
redis搭建一主一从+keepalived(虚拟IP)实现高可用
redis搭建一主一从keepalived(虚拟IP)实现高可用 前提 有两台机器:如 10.50.3.141 10.50.3.142,虚拟ip如:10.50.3.170 安装redis(两台机器执行): # 启用Remi仓库(CentOS 7) sudo yum install…...
【Function】Azure Function通过托管身份或访问令牌连接Azure SQL数据库
【Function】Azure Function通过托管身份或访问令牌连接Azure SQL数据库 推荐超级课程: 本地离线DeepSeek AI方案部署实战教程【完全版】Docker快速入门到精通Kubernetes入门到大师通关课AWS云服务快速入门实战目录 【Function】Azure Function通过托管身份或访问令牌连接Azu…...
MySQL日志全解析:类型、用途与运维实践
引言 MySQL作为最流行的关系型数据库之一,其日志系统是运维人员理解数据库状态、排查问题、保证数据安全的核心工具。不同类型的日志记录了数据库活动、错误信息、数据变更等关键内容。本文将深入解析MySQL各类日志的作用、配置参数及运维注意事项,帮助…...
《算法笔记》9.2小节——数据结构专题(2)->二叉树的遍历 问题 A: 复原二叉树(同问题 C: 二叉树遍历)
题目描述 小明在做数据结构的作业,其中一题是给你一棵二叉树的前序遍历和中序遍历结果,要求你写出这棵二叉树的后序遍历结果。 输入 输入包含多组测试数据。每组输入包含两个字符串,分别表示二叉树的前序遍历和中序遍历结果。每个字符串由…...
小程序开发中的用户反馈收集与分析
我们在开发小程序的过程中根据开发过程中的代码及业务场景,以下是针对需求管理系统的用户反馈收集与分析方案设计: 需求管理系统用户反馈收集与分析方案 一、反馈数据模型设计 // 新增Feedback模型(app/admin/model/Feedback.php) namespace app\admin\model; use think\…...
Flink 通过 Chunjun Oracle LogMiner 实时读取 Oracle 变更日志并写入 Doris 的方案
文章目录 一、 技术背景二、 关键技术1、 Oracle LogMiner2、 Chunjun 的 LogMiner 关键流程3、修复 Chunjun Oracle LogMiner 问题 一、 技术背景 在大数据实时同步场景中,需要将 Oracle 数据库的变更数据(CDC) 采集并写入 Apache Doris&am…...
WordPress系统获取webshell的攻略
一.后台修改模板拿WebShell 1.进入Vulhub靶场并执⾏以下命令开启靶场;在浏览器中访问并安装好 #执⾏命令 cd /vulhub/wordpress/pwnscriptum docker-compose up -d 2. 修改其WP的模板,登陆WP后点击 【外 观】 --》 【编辑】 --》 404.php 3.插入一句话木…...
JMeter基本介绍
Apache JMeter 工具详解 一、JMeter 简介 JMeter 是 Apache 基金会开源的 Java 应用程序,主要用于 性能测试、负载测试 和 功能测试。它通过对服务器或网络资源模拟多种负载条件(如并发用户、持续压力),帮助评估系统性能指标&am…...
npm 安装 pnpm 的详细步骤及注意事项
一、安装步骤 1.全局安装 pnpm npm install -g pnpm2.验证安装 pnpm -v输出版本号即表示安装成功。 二、升级 pnpm 若已安装旧版本,可通过以下命令升级: npm install -g pnpmlatest三、配置镜像加速 设置淘宝镜像 pnpm config set registry http…...
蓝桥杯2023年第十四届省赛真题-子矩阵
题目来自DOTCPP: 暴力思路(两个测试点超时): 题目要求我们求出子矩阵的最大值和最小值的乘积,我们可以枚举矩阵中的所有点,以这个点为其子矩阵的左上顶点,然后判断一下能不能构成子矩阵。如果可…...
如何在 Node.js 中使用 .env 文件管理环境变量 ?
Node.js 应用程序通常依赖于环境变量来管理敏感信息或配置设置。.env 文件已经成为一种流行的本地管理这些变量的方法,而无需在代码存储库中公开它们。本文将探讨 .env 文件为什么重要,以及如何在 Node.js 应用程序中有效的使用它。 为什么使用 .env 文…...
Redis BitMap 用户签到
Redis Bitmap Bitmap(位图)是 Redis 提供的一种用于处理二进制位(bit)的特殊数据结构,它基于 String 类型,每个 bit 代表一个布尔值(0 或 1),可以用于存储大规模的二值状…...
未来办公与生活的新范式——智慧园区
在信息化与智能化技术飞速发展的今天,智慧园区作为一种新兴的城市发展形态,正逐步成为推动产业升级、提升城市管理效率、改善居民生活质量的重要力量。智慧园区不仅融合了先进的信息技术,还深刻体现了可持续发展的理念,为园区内的…...
Hugging Face预训练GPT微调ChatGPT(微调入门!新手友好!)
Hugging Face预训练GPT微调ChatGPT(微调入门!新手友好!) 在实战中,⼤多数情况下都不需要从0开始训练模型,⽽是使⽤“⼤⼚”或者其他研究者开源的已经训练好的⼤模型。 在各种⼤模型开源库中,最…...
