Github Copilot 靠什么反擊 Cursor?
Github Copilot 在 AI 編程輔助工具方面處于一定的領先地位,截止目前還仍是用戶量最多的 AI 編程輔助工具產品,在這個賽道上商業化做的還是很成功的,以下是來自最新的 2024 JavaScript 現狀調查結果的數據統計,展示了 AI 工具上的用戶使用排名。
圖片
此前 Github Copilot 在商業化上是成功的,但是發展似乎有點緩慢,之前的體驗感不是特別的好(因為用了 Cursor 之后的對比吧)。
Github Copilot 主要是以插件的方式提供使用,但 Cursor 選了另一條路,直接魔改 VS Code,打造了自己的 AI IDE,用戶偏好和 VS Code 還是保持一致,無論從體驗上還是代碼的生成都給人一種很驚艷的感覺,特別是下半年到現在吧,很明顯感覺 Cursor 的勢頭很猛,身邊有些同事也開始從 Github Copilot 切換到 Cursor。
也許是 Cursor 給的壓力太大,以至于Github Copilot 近期還特意宣布推出免費版本,無需試用,無需訂閱,無需信用卡,即可直接使用。但每月有一定的額度限制,這一步也是逼不得已,再不來點大動作,用戶真的要流失了...
單靠這個肯定是不行的,有網友也說了這點免費額度根本不夠用,其實就是設計好了讓你不夠用的,哈哈,主要目的還是通過免費試用來吸引你升級到付費產品。
近期,Github Copilot 也更新了一些新功能,有些還是很不錯,下面給大家做個分享。
支持跨文件修改和應用
Github Copilot Edits模式支持跨多文件進行修改,生成的代碼可以直接應用,是真正能給你帶來體驗的改進。雖然和 Copilot Chat 都使用對話式界面,但有明顯區別,以下參考筆者另一篇文章尤大親自轉發點贊!Github Copilot Edits 有何魔力?
圖片
這里簡單給大家在總結下:
1. 新的 Copilot Edits 聊天窗口
在 Copilot Edits 聊天窗口可跨文件提出修改內容,并自動創建新文件。
圖片
2. 將聊天會話轉移到 Copilot Edits
Copilot Chat 非常適合提出問題和探索一些想法,如果您準備好將這些建議應用到代碼時,可以快捷的將聊天會話轉移到 Copilot Edits,這樣你就可以在整個項目中應用所有更改,而不必從單個視圖中應用每個代碼塊
圖片
OpenAI 全新 o1 模型支持
Copilot Chat 的 Copilot Pro、Business 和 Enterprise 用戶,現在可以使用 OpenAI 的全新 o1 模型。
這個是 2024 年 12 月 20 日 剛支持。
圖片
除了最新的 o1 模型,還支持 Claude 或 GPT-4o 切換。
終端支持 Copilot Chat
這個功能很實用的,終端命令太多記不住,我想這個問題,大多數開發者應該都有此困惑。
現在 VS Code 終端支持 Github Copilot Chat 模式(command/ctrl + i 快捷鍵打開),在終端直接輸入自然語言進行提問,例如 “commit 修復組件樣式”,如下所示,直接把完整的 git 命令都很給你寫好了。
圖片
@workspace 感知整個項目上下文
使用 @workspace 可以讓 Github Copilot 理解整個項目的代碼,通過上下文的分析,給的建議也相對更準確。
圖片
內置語音插件
Github Copilot Chat 模式還支持語音哦,不想打字了,直接語音對話。
語音對話第一次使用會默認安裝擴展VS Code Speech。
圖片
內置 copilot-debug 命令,讓調試更簡單
在 VS Code 終端現在提供了 copilot-debug 命令,該命令會根據你的項目自動生成調試需要的配置,讓調試更簡單了,開發者只需要專注于代碼和設置調試斷點。
如下所示,輕松實現調試 Node.js 代碼
圖片
自定義消息指令
例如,你的項目有一些屬于自己的規范,你期望 Github Copilot 能按照你的規范來生成代碼,這個功能就很實用,只需要在統一的地方定義一次,Copilot 就可以將這些指令應用于聊天,生成代碼時就會按照我們自定義的規范走。
一種方式是可以在項目的.github/copilot-instructions.md 文件中定義要生成的代碼規范,如下所示:
總是使用 React 函數式組件,一個文件內的主要導出組件,使用格式 export function Component() {}
當我們輸入提示詞后,得到的輸出結果如下所示
圖片
面對 Cursor 給的壓力,Github Copilot 也在奮力反擊,看完上述功能,你感覺 Github Copilot 這波能頂住 Cursor 給的壓力嗎?