慣性聚合 高效追蹤和閱讀你感興趣的部落格、新聞、科技資訊
閱讀原文 在慣性聚合中打開

推薦訂閱源

博客园 - 司徒正美
V
V2EX
T
Tailwind CSS Blog
有赞技术团队
有赞技术团队
aimingoo的专栏
aimingoo的专栏
Apple Machine Learning Research
Apple Machine Learning Research
IT之家
IT之家
Blog — PlanetScale
Blog — PlanetScale
A
About on SuperTechFans
月光博客
月光博客
T
The Blog of Author Tim Ferriss
宝玉的分享
宝玉的分享
Martin Fowler
Martin Fowler
博客园 - 聂微东
The GitHub Blog
The GitHub Blog
V
Visual Studio Blog
WordPress大学
WordPress大学
酷 壳 – CoolShell
酷 壳 – CoolShell
Engineering at Meta
Engineering at Meta
GbyAI
GbyAI

阮一峰的网络日志

科技爱好者周刊(第 396 期):互联网通信的替代方案 科技爱好者周刊(第 396 期):互联网通信的替代方案 - 阮一峰的网络日志 科技爱好者周刊(第 395 期):软件开发的第三种方式 科技爱好者周刊(第 395 期):软件开发的第三种方式 - 阮一峰的网络日志 科技爱好者周刊(第 393 期):脑腐状态 科技爱好者周刊(第 392 期):axios 投毒与好莱坞式骗术 科技爱好者周刊(第 391 期):AI 的贫富分化 科技爱好者周刊(第 390 期):没有语料,大模型就是智障 套壳中国大模型撑起500亿美元估值?扒一扒 Cursor 的"套壳"疑云 科技爱好者周刊(第 389 期):未来如何招聘程序员 科技爱好者周刊(第 388 期):测试是新的护城河 零安装的"云养虾":ArkClaw 使用指南 科技爱好者周刊(第 387 期):你是领先的 科技爱好者周刊(第 386 期):当外卖员接入 AI 字节全家桶 Seed 2.0 + TRAE 玩转 Skill 科技爱好者周刊(第 385 期):马斯克害怕中国车企吗? 智谱旗舰 GLM-5 实测:对比 Opus 4.6 和 GPT-5.3-Codex 科技爱好者周刊(第 384 期):为什么软件股下跌 科技爱好者周刊(第 383 期):你是第几级 AI 编程 Kimi 的一体化,Manus 的分层 科技爱好者周刊(第 382 期):独立软件的黄昏 AI native Workspace 也许是智能体的下一阶段 科技爱好者周刊(第 381 期):中国 AI 大模型领导者在想什么 科技爱好者周刊(第 380 期):为什么人们拥抱"不对称收益" 科技爱好者周刊(第 379 期):《硅谷钢铁侠》摘录 我如何用 AI 处理历史遗留代码:MiniMax M2.1 升级体验 科技爱好者周刊(第 378 期):预测是新的互联网热点 科技爱好者周刊(第 377 期):14万美元的贫困线 科技爱好者周刊(第 376 期):太空数据中心的争议 科技爱好者周刊(第 375 期):一扇门的 Bug 终于有人做了 Subagent,TRAE 国内版 SOLO 模式来了 科技爱好者周刊(第 374 期):6GHz 的问题 VS Code 使用国产大模型 MiniMax M2 教程 科技爱好者周刊(第 373 期):数据模型是新产品的核心 国产大模型接入 Claude Code 教程:以 Doubao-Seed-Code 为例 科技爱好者周刊(第 372 期):软件界面如何设计 大模型比拼:MiniMax M2 vs GLM 4.6 vs Claude Sonnet 4.5 科技爱好者周刊(第 371 期):一个乐观主义者的专访 科技爱好者周刊(第 370 期):正确的代码高亮 错误处理:异常好于状态码 科技爱好者周刊(第 369 期):Tim 与罗永浩的对谈 科技爱好者周刊(第 368 期):不要这样管理软件团队 一天之内,智谱和 Anthropic 都发了最强编程模型 科技爱好者周刊(第 367 期):Nano Banana 的几个妙用 科技爱好者周刊(第 366 期):旧金山疯狂的 AI 广告 科技爱好者周刊(第 365 期):流量变现正在崩塌 科技爱好者周刊(第 364 期):最难还原的魔方 科技爱好者周刊(第 363 期):最好懂的神经网络解释 科技爱好者周刊(第 362 期):GitHub 工程师谈系统设计 科技爱好者周刊(第 361 期):暗网 Tor 安全吗?
AI 編程助手測評:GitHub Copilot vs 豆包 MarsCode
阮一峰 · 2024-07-03 · via 阮一峰的网络日志

一、引言

AI 怎麼用於編程?

目前有各種嘗試,最激進的大概是 Vercel 公司的 v0.dev

你告訴它,想要什麼網站,它就給你幾張設計圖。你選一張,它就生成寫好的網頁。

這很有未來感,想要什麼程序,機器幫你寫。但是實際上,它只能生成網頁 UI(用戶界面),無法生成互動腳本,並且其他的 UI(比如手機 App 頁面),它都無法生成。

這反映了 AI 的侷限,至少現階段,AI 無法取代程序員,只能充當編程助手。

根據我的使用體會,作為編程助手,AI 的作用非常大,能夠大大節約程序員的時間,顯著提高編程效率和代碼質量。

今天,我就來測評兩款 AI 編程助手,看看孰強孰弱,順便也作為一個入門教程,向還沒用過的同學,展示它們的用法。

大家看了以後,就能明白,為什麼編程已經離不開 AI 了,它真的能讓程序員如虎添翼。

二、GitHub Copilot 和豆包 MarsCode 簡介

我要測評(或者說介紹)的兩款 AI 編程助手,分別是 GitHub Copilot豆包 MarsCode

GitHub Copilot 是最早出現的 AI 編程助手,也是市場佔有率和知名度最高的一個。

它是微軟出品,底層是 OpenAI,又依託著世界最大的程序員社區,自然是實力非凡。

豆包 MarsCode 是基於豆包大模型打造的智能開發工具。

它的背後是字節跳動,本來是內部工具,據說字節超過70%的工程師都在用,每月貢獻百萬行量級的代碼。

6月26日,它正式在北京對外發布,外界可以免費使用,屬於新鮮出爐。

它們都來自大廠,有足夠的代表性,而且功能相近,下面就來看看,國產 AI 能否替代國外主流產品。

三、使用環境

AI 編程助手一般不單獨使用,而是作為 IDE(集成開發環境)的插件,在編輯器界面提供各種 AI 功能。

我選擇的 IDE 是目前最流行的 VS Code。此外,豆包 MarsCode 還支持 Jetbrains IDE,Copilot 則支持更多。

大家在 VS Code 插件市場搜索 Copilot 和 MarsCode,就能找到它們。下面是安裝後的頁面。(上圖為 Copilot,下圖為豆包 MarsCode,後面都是這個順序。)

如果你沒有 VS Code,甚至也沒有其他 IDE,問題也不大。豆包 MarsCode 提供免費的雲 IDE(下圖),無需下載和安裝,直接在瀏覽器使用,並且內置數十款開發模板,還可以拉取 GitHub 倉庫,用起來很方便。

GitHub 也有云 IDE,就是它的 CodeSpace,裡面也能用 Copilot。不過,每月使用60小時之後,就要收費,這裡就不推薦了。

四、聊天功能

AI 編程助手的主要用戶界面,就是一個聊天窗口,用戶向它提出各種問題。

我首先問了一個問題"什麼是 CAP 定理?",測一下它們的聊天功能。

可以看到,它們的回答都是準確的、可用的,Copilot 的格式編排稍微好一點。

第二個問題"請推薦學習 JavaScript 的書籍",兩者的回答差不多。

聊天的問題不限於編程,什麼樣的問題都可以問,比如"2025年春節是什麼時候",它們的回答也沒問題。

不過,這個功能的日常使用場景,應該是查找軟件文檔,真的好用。

五、代碼生成

接下來,就來測 AI 編程助手的最主要功能:自動代碼生成,讓它來寫代碼。

使用很簡單,只要有按鍵輸入,它就會自動建議後面的代碼是什麼

你可以將其當作參考,也可以按下 Tab 鍵,接受它為正式代碼。如果想逐個單詞確認,按下 Ctrl + 右箭頭(Mac 為 Cmd + 右箭頭)。

我讓 AI 生成一個檢驗電話號碼的函數。

上面的代碼,除了第一行"// 驗證電話號碼"是我輸入的,後面都是 AI 生成的。

這段代碼完全正確,並且還有兩個地方令人很滿意。(1)因為文件的後綴名是 JS,所以它們自動生成的是 JavaScript 代碼;(2)它們驗證的是中國的手機號碼,而我並沒有明確給出這一點,它們是自己推斷的。

有點奇怪的是,Copilot 和豆包 MarsCode 給出的代碼是一樣的。莫非它們使用同樣的材料訓練?

我又加了一個條件,要求包括手機和座機兩種情況。它們給出的代碼還是(基本)一樣。

這個環節,它們打平。另外,如果對給出的實現不滿意,Copilot 可以按下 Ctrl + Enter,會有多種實現供選擇(下圖)。

豆包 MarsCode 則是在代碼建議時,有一個浮動工具欄,可以切換多種實現(下圖的箭頭)。

值得一提的是,豆包 MarsCode 還有一個特色功能"代碼補全 Pro",不需要手動給出提示,根據現有代碼,自動預測下一個改動點,並給出推薦代碼。

這個功能需要自己在設置裡面打開(下圖)。

打開以後,它就會加強代碼預測。首先,在期望觸發代碼推薦的地方,按下 Ctrl + Shift + Enter 主動觸發推薦,然後你按下 Tab 採納。

這時,它會預測下一個改動點,點擊 Tab 就可以跳轉到那裡。這在代碼修改的場景中非常有用,修改了一個地方,它幫你跳到下一個(預測的)改動點,並給出推薦代碼。普通的代碼補全做不到這一點。

六、生成註釋,代碼解釋

除了生成代碼,AI 的另一個重要作用,就是生成編程文檔,也就是代碼的文字說明。

文檔功能主要有兩種:註釋和代碼解釋。首先,Copilot 的註釋需要自己手動生成。

豆包 MarsCode 則在代碼上方有生成註釋的快捷按鈕。

點擊後會喚起/doc命令,用起來相對方便一點。

至於代碼解釋功能,我覺得相比之下,豆包 MarsCode 更好一些,Copilot 太冗長了,有點不易讀。

七、其他功能

(1)代碼翻譯

它們都能夠將一種語言的代碼,翻譯成另一種語言。

我試了 JS 代碼翻譯成 Python,沒有任何問題。豆包 MarsCode 還會自動將翻譯後的代碼,保存成當前目錄下的一個單獨文件。

(2)生成單測

單元測試寫起來很麻煩,AI 能夠自動生成,真是省事不少。

同一段代碼,Copilot 生成了4個測試用例,豆包 MarsCode 生成了5個。

並且,豆包 MarsCode 對測試用例有文字總結(下圖),這很有用,可惜 Copilot 沒有。

我認為,在這個環節,豆包 MarsCode 做得比較好。

(3)修正錯誤

AI 還可以自動修改報錯的代碼。如果測試用例或者自動構建沒有通過,它會解釋報錯的原因,並給出修改建議。這裡就不舉例了。

八、總結

經過上面的一系列測試,兩者的表現總體相差不大。我認為,國產 AI 編程助手完全可以替代 GitHub Copilot,而且在某些細節上做得更好。

GitHub Copilot 的優勢在於功能較多(比如調用終端命令),而且它的訓練材料可能比較多,在一些小眾語言上也許表現更好一點。

但是,它是收費的,每月10美元,而 豆包 MarsCode 是免費的,單單這一點就值得推薦後者。

目前,豆包 MarsCode 只是一個初期的版本,後面會不斷增加功能。但是,對於大多數程序員,現有功能已經完全夠用了。

另外,我在使用中明顯感到,豆包 MarsCode 的響應速度更快,畢竟服務器是在國內。相比 Copilot 的境外服務器,這也是一個優勢。

總之,豆包 MarsCode 值得大家試用,體驗一下國產 AI 的進步。如果你從來沒接觸過 AI 編程助手,就更不應該錯過這種提高效率的編程神器了。

(完)