整理 | 褚杏娟
微軟某個(gè) VSCode 語(yǔ)言服務(wù)擴(kuò)展中,位于nativeStrings.json
文件第 485 行的一行代碼,打破了它與 Cursor 的兼容性。
該條款規(guī)定:“C/C++ 擴(kuò)展僅可與 Microsoft Visual Studio、Visual Studio for Mac、Visual Studio Code、Azure DevOps、Team Foundation Server 以及微軟后續(xù)推出的產(chǎn)品和服務(wù)一起使用,以開(kāi)發(fā)和測(cè)試您的應(yīng)用程序。”這些限制讓開(kāi)發(fā)者更傾向于使用微軟的官方發(fā)行版,而非其他版本。
"license_terms": "The C/C++ extension may be used only with Microsoft Visual Studio, Visual Studio for Mac, Visual Studio Code, Azure DevOps, Team Foundation Server, and successor Microsoft products and services to develop and test your applications."
隨后,就有開(kāi)發(fā)者抱怨道,微軟有一些閉源擴(kuò)展程序(遠(yuǎn)程訪問(wèn)、Pylance、C/C++、C#),這些擴(kuò)展程序的最新版本已無(wú)法在 Cursor 或其他非微軟編輯器中使用。其中,Cursor 1.17.62 版本可以正常使用,但 1.18.21 及更高版本無(wú)法正常工作。
Cursor 的文檔提供了如何從微軟商店安裝擴(kuò)展的說(shuō)明。該功能依賴于將擴(kuò)展下載為.vsix
文件;然而,該文件的下載鏈接現(xiàn)已不在擴(kuò)展市場(chǎng)的首頁(yè)中顯示。在很多情況下,如果該擴(kuò)展是開(kāi)源的,開(kāi)發(fā)者仍可從其代碼倉(cāng)庫(kù)(如 GitHub)中下載。
另外,還有開(kāi)發(fā)者稱 C# Dev Kit 也遇到了一樣的限制。
嘗試使用 Microsoft 的 Dev Kit 擴(kuò)展時(shí) Cursor 報(bào)告的錯(cuò)誤
對(duì)此,Cursor 社區(qū)中的開(kāi)發(fā)者 Alexander Schroeder 表示,“我們已經(jīng)發(fā)布了一個(gè)即時(shí)修復(fù)程序,并將很快發(fā)布一個(gè)長(zhǎng)期解決方案。”
另外,也有開(kāi)發(fā)者表示,最新版本的擴(kuò)展程序阻止了它的工作,但其通過(guò)降級(jí)并禁用自動(dòng)更新的方式解決了。“在擴(kuò)展程序頁(yè)面,‘卸載’旁邊的下拉菜單中有一個(gè)“安裝特定版本”。安裝版本 1.23.6”。
Cursor 的威脅
微軟發(fā)布的 Visual Studio Code 徹底改變了開(kāi)發(fā)者使用 IDE 的方式,開(kāi)發(fā)者可以用一個(gè)統(tǒng)一的工具來(lái)編寫幾乎所有語(yǔ)言和技術(shù)棧的代碼。
微軟不僅提供了 Visual Studio Code,還開(kāi)發(fā)了許多擴(kuò)展插件,比如 Python 調(diào)試器、C/C++ 語(yǔ)言服務(wù)、Jupyter、Pylance、Python 語(yǔ)言服務(wù)、Azure 工具、Data Wrangler、Jupyter 快捷鍵映射,甚至還有 JavaScript 和 TypeScript 的語(yǔ)言服務(wù)。這些還只是微軟所開(kāi)發(fā)的眾多擴(kuò)展中的一部分而已。此外,微軟還擁有 GitHub 和 npm,幾乎可以說(shuō)是掌控了整個(gè)軟件開(kāi)發(fā)工具生態(tài)。
這本來(lái)挺不錯(cuò)的,然而,微軟某些團(tuán)隊(duì)最近情況有點(diǎn)不太妙——四位麻省理工學(xué)院(MIT)的本科生利用 VSCode 的開(kāi)源模式,將其分叉(fork)并打造了一個(gè)競(jìng)爭(zhēng)產(chǎn)品 Cursor。當(dāng) VSCode 詢問(wèn)是否希望將 AI 建議合并進(jìn)你正在開(kāi)發(fā)的代碼時(shí),Cursor 卻是反過(guò)來(lái),詢問(wèn) AI 是否希望讓人類插手。
Cursor 本身并不是開(kāi)源的,這一做法雖然存在爭(zhēng)議,但在 VSCode 所采用的 MIT 許可證下是被允許的,所以我們無(wú)法查看其內(nèi)部實(shí)現(xiàn),也不知道它具體做了什么。
不過(guò),Cursor 在去年年中融資了大約 6000 萬(wàn)美元,而在差不多的時(shí)間,他們已經(jīng)擁有約 4 萬(wàn)名用戶。Cursor 提供了一個(gè)帶有限制的免費(fèi)政策,還有每月 20 美元和 40 美元(按用戶計(jì)費(fèi))的付費(fèi)計(jì)劃。
微軟的 C/C++ 語(yǔ)言服務(wù)擴(kuò)展突然停止支持 Cursor,讓所有人都大吃一驚。然而,這也不是新鮮事。有網(wǎng)友表示,微軟自己的語(yǔ)言擴(kuò)展一直聲明不能在 Visual Studio Code 之外使用它(并且 Code fork 不算數(shù)),這絕對(duì)不是一個(gè)新問(wèn)題,只是他們現(xiàn)在決定強(qiáng)制執(zhí)行對(duì) C++ 擴(kuò)展的限制。2018 年時(shí),微軟明確表示不允許在 Code forks 上使用 C# 擴(kuò)展。
微軟 vscode-cpp 工具 192 行長(zhǎng)的許可證文件顯示,它禁止在 VSCode 和微軟工具以外的環(huán)境中使用。
前端工程師 Tom Smykowski 發(fā)現(xiàn),新的限制規(guī)則是在 4 月 1 日被添加進(jìn)去的,還附有某位評(píng)論者的一句評(píng)論:
“Embrace, extend, extinguish(擁抱、擴(kuò)展、消滅)。”
這個(gè)短語(yǔ)不僅僅是對(duì)這次變更的嘲諷,實(shí)際上它來(lái)源于微軟本身:
“擁抱、擴(kuò)展、消滅”(EEE),也被稱為“擁抱、擴(kuò)展、根除”,是美國(guó)司法部曾經(jīng)發(fā)現(xiàn)的微軟內(nèi)部使用的一個(gè)策略短語(yǔ),用來(lái)描述其進(jìn)入某些采用廣泛開(kāi)放標(biāo)準(zhǔn)的產(chǎn)品領(lǐng)域的行為方式:先“擁抱”標(biāo)準(zhǔn),隨后在其基礎(chǔ)上加入專有功能進(jìn)行“擴(kuò)展”,最終通過(guò)這些差異將競(jìng)爭(zhēng)對(duì)手“消滅”。
這個(gè)策略曾在上世紀(jì)微軟多次反壟斷案件中被提及,如今再次被人提起,可見(jiàn)這一舉動(dòng)在開(kāi)發(fā)者社區(qū)中引起了不小的反感。
具體來(lái)看,這個(gè)策略的三個(gè)階段如下:
擁抱(Embrace):開(kāi)發(fā)與開(kāi)放標(biāo)準(zhǔn)高度兼容的軟件。
擴(kuò)展(Extend):添加開(kāi)放標(biāo)準(zhǔn)未支持的新功能,從而制造互操作性問(wèn)題。
消滅(Extinguish):當(dāng)這些擴(kuò)展因市場(chǎng)份額優(yōu)勢(shì)而成為事實(shí)標(biāo)準(zhǔn)后,邊緣化那些無(wú)法支持這些擴(kuò)展的競(jìng)爭(zhēng)對(duì)手。
當(dāng)然,微軟從未公開(kāi)承認(rèn)這就是他們的戰(zhàn)略。畢竟 VSCode 是在 MIT 許可證下開(kāi)源的,.NET 也同樣是開(kāi)源的,所以并不太像微軟還會(huì)執(zhí)行“EEE 戰(zhàn)略”。
不過(guò),在這次事件中,微軟確實(shí)利用了一個(gè)存在多年的許可證條款,并在此基礎(chǔ)上對(duì)擴(kuò)展加上了限制性封鎖。過(guò)去沒(méi)這么做,大概是因?yàn)闆](méi)人把 VSCode 拿去 fork 并試圖做成競(jìng)品。
有多少擴(kuò)展受到影響?
那么,到底有多少擴(kuò)展受到這種限制的影響?
Smykowski 調(diào)查后表示,還沒(méi)有發(fā)現(xiàn)其他擴(kuò)展也存在類似封鎖行為。不過(guò) Smykowski 還沒(méi)檢查完全部?jī)?nèi)容。全網(wǎng)搜索“extension may be used only with”這樣的短語(yǔ),在微軟開(kāi)源代碼庫(kù)里也沒(méi)找到更多類似描述。
然而問(wèn)題是,微軟可以隨時(shí)添加這樣的限制。事實(shí)上,只要你使用的擴(kuò)展中包含以下這段話:
“您可以在 Microsoft Visual Studio、Visual Studio for Mac、Visual Studio Code、Azure DevOps、Team Foundation Server 以及其后繼產(chǎn)品和服務(wù)中安裝和使用任意數(shù)量的副本,僅用于開(kāi)發(fā)和測(cè)試您的應(yīng)用程序。”
那它理論上就可能在未來(lái)被微軟加上訪問(wèn)限制。
顯然,這項(xiàng)限制是強(qiáng)制規(guī)定擴(kuò)展只能與微軟指定的工具一起使用,不能用于任何 fork(衍生版本)。
Smykowski 在查找“only with Microsoft”這種措辭時(shí),并沒(méi)有找到有力證據(jù)表明其他語(yǔ)言服務(wù)擴(kuò)展的許可證中也包含類似的限制條款。
所以 Smykowski 的結(jié)論是,目前其他語(yǔ)言服務(wù)擴(kuò)展中并沒(méi)有類似的封鎖行為,而且并非所有擴(kuò)展都使用了這種帶有限制的許可證。
Smykowski 建議,當(dāng)開(kāi)發(fā)者決定在 VSCode 的 fork 上使用某個(gè)擴(kuò)展之前,必須先檢查它的許可證,或者選擇使用其他真正開(kāi)源、許可證開(kāi)放的擴(kuò)展。“其實(shí),微軟的 VSCode 擴(kuò)展商店并不是唯一的來(lái)源 —— 比如你可以從 Open VSX 獲取擴(kuò)展,它由 Eclipse 基金會(huì)托管。”
“鎖定效應(yīng)”促使了 Open VSX 市場(chǎng)的誕生,其初衷是防止官方 VS Code 專屬市場(chǎng)“嚴(yán)重限制那些采用開(kāi)源開(kāi)發(fā)工具的組織的能力”。
盡管如此,Open VSX 市場(chǎng)中的擴(kuò)展數(shù)量和使用率仍遠(yuǎn)低于微軟的官方市場(chǎng)。不過(guò),Cursor 仍然在其 IDE 中提供對(duì) VS Code 市場(chǎng)擴(kuò)展的訪問(wèn),包括微軟的 C/C++ 擴(kuò)展和 C# DevKit,同時(shí)還提供一個(gè)設(shè)置選項(xiàng),可以從已安裝的 VS Code 中導(dǎo)入擴(kuò)展。
看起來(lái)微軟現(xiàn)在正在更嚴(yán)格地執(zhí)行其使用條款。DevClass 嘗試在 Cursor 中安裝微軟的 C/C++ 擴(kuò)展,雖然安裝成功,但在使用如“查找所有引用”等功能時(shí)卻無(wú)法正常工作,最終彈出提示窗口,提醒用戶該擴(kuò)展存在使用限制。
這種情況令人困惑,因?yàn)?Cursor 仍會(huì)在識(shí)別到合適的項(xiàng)目時(shí),推薦開(kāi)發(fā)者安裝微軟的 C++ 擴(kuò)展。開(kāi)發(fā)者可能會(huì)考慮使用替代方案,例如 clangd 擴(kuò)展,盡管它的安裝量?jī)H為 170 萬(wàn)次,而微軟的擴(kuò)展安裝量已達(dá) 8100 萬(wàn)次。
不過(guò)問(wèn)題在于:雖然微軟免費(fèi)提供了擴(kuò)展和 VSCode,但這并不代表開(kāi)發(fā)者可以隨意使用它們做任何事情。他們完全可以隨時(shí)更改許可協(xié)議,限制你的使用方式,甚至要求為使用付費(fèi)。“這就意味著,未來(lái)充滿不確定性,而當(dāng)一家公司擁有某個(gè)工具或平臺(tái)的控制權(quán)時(shí),它也就控制了規(guī)則。”Smykowski 評(píng)價(jià)道。
為了力挺自家 Agent 產(chǎn)品?
對(duì)于微軟的這一變化,有開(kāi)發(fā)者猜測(cè)可能是由于 VS Code 穩(wěn)定版中引入了“Agent Mode”這一 AI 功能,使 Cursor 成為了 VS Code 更直接的競(jìng)爭(zhēng)對(duì)手。
VS Code Stable 在 3 月的版本中推出了代理模式(Agent mode),該模式現(xiàn)已全面支持 MCP。
與傳統(tǒng)的聊天或多文件編輯功能不同,代理模式的核心在于:它不僅僅回答問(wèn)題,而是具備將開(kāi)發(fā)者的想法轉(zhuǎn)化為代碼的實(shí)際操作能力:自動(dòng)識(shí)別或生成所需文件,完成所有必要的子任務(wù),確保實(shí)現(xiàn)開(kāi)發(fā)者的主要目標(biāo);建議終端命令或工具調(diào)用,并請(qǐng)求開(kāi)發(fā)者執(zhí)行;具備運(yùn)行時(shí)錯(cuò)誤分析和自我修復(fù)能力等。
代理模式由 Claude 3.5 和 3.7 Sonnet、Google Gemini 2.0 Flash 以及 OpenAI GPT-4o 提供支持。目前,代理模式在基于 Claude 3.7 Sonnet 的 SWE-bench Verified 測(cè)試中的通過(guò)率為 56.0%。
微軟一直強(qiáng)調(diào),盡管 Code-OSS 的代碼是基于 MIT 許可協(xié)議的開(kāi)源項(xiàng)目,但 VS Code 是微軟基于 Code-OSS 倉(cāng)庫(kù)定制的發(fā)行版本,并采用了傳統(tǒng)的微軟產(chǎn)品許可協(xié)議發(fā)布。
有評(píng)論指出,在合規(guī)性方面,Cursor 可能并未直接鏈接至 VS Code 擴(kuò)展市場(chǎng),而是通過(guò)其自有服務(wù)發(fā)布已上線擴(kuò)展的鏈接。目前出現(xiàn)的問(wèn)題似乎僅限于微軟官方的擴(kuò)展,而非第三方擴(kuò)展。
https://github.com/microsoft/vscode-cpptools/blob/main/RuntimeLicenses/cpptools-LICENSE.txt
https://github.com/getcursor/cursor/issues/2976
https://tomaszs2.medium.com/microsoft-quietly-blocked-cursor-from-using-its-vscode-extension-heres-the-line-of-code-that-8d664caf0de5
https://devclass.com/2025/04/08/vs-code-extension-marketplace-wars-cursor-users-hit-roadblocks/
https://github.blog/news-insights/product-news/github-copilot-agent-mode-activated/
聲明:本文為 InfoQ 整理,不代表平臺(tái)觀點(diǎn),未經(jīng)許可禁止轉(zhuǎn)載。
特別聲明:以上內(nèi)容(如有圖片或視頻亦包括在內(nèi))為自媒體平臺(tái)“網(wǎng)易號(hào)”用戶上傳并發(fā)布,本平臺(tái)僅提供信息存儲(chǔ)服務(wù)。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.