用了一個月后發(fā)現(xiàn),Devin是真不好用
在 AI 編程領(lǐng)域,你可能聽說過 Devin,它是由初創(chuàng)公司 Cognition 發(fā)布的一項(xiàng)成果。Devin 就像一個超級智能助手,能幫助工程師更快更好地完成工作,發(fā)布之初,很多人都稱贊 Devin 是全球首位 AI 軟件工程師。它似乎具備從學(xué)習(xí)新技術(shù)、調(diào)試成熟代碼庫,到部署完整應(yīng)用程序,甚至訓(xùn)練 AI 模型的全方位能力。
然而,事實(shí)真的如此嗎?答案是:未必。近日,來自新型 AI 研發(fā)實(shí)驗(yàn)室 Answer.AI 的研究者就記錄了他們使用 Devin 翻車的情況。
他們還為此寫了一篇博客《與 Devin 共度一個月的感想》,文章詳細(xì)記錄了他們在給 Devin 超過 20 項(xiàng)任務(wù)之后獲得的感受。
博客鏈接:https://www.answer.ai/posts/2025-01-08-devin.html
以下是博客內(nèi)容:
簡單任務(wù)表現(xiàn)尚可
第一個任務(wù)很簡單但真實(shí):將數(shù)據(jù)從 Notion 數(shù)據(jù)庫拉取到 Google Sheet。Devin 以令人驚訝的能力完成了這項(xiàng)任務(wù)。它瀏覽了 Notion API 文檔,了解需要什么,并指導(dǎo)我在 Google Cloud Console 中設(shè)置必要的憑證。它沒有只是轉(zhuǎn)儲 API 說明,而是帶領(lǐng)我完成每個菜單和按鈕點(diǎn)擊 —— 這通常會節(jié)省繁瑣的文檔搜索時間。整個過程大約花了一個小時(但只有幾分鐘人工交互)。最后,Devin 分享了一個鏈接,鏈接到一個格式完美的 Google Sheet,其中包含我們的數(shù)據(jù)。
它生成的代碼有點(diǎn)冗長,但可以運(yùn)行。這感覺像是一個展望未來的場景 —— 一個可以處理消耗大量開發(fā)人員時間的「膠水代碼」任務(wù)的 AI。Johno 使用 Devin 創(chuàng)建了一個行星跟蹤器,用于揭穿有關(guān)木星和土星歷史位置的錯誤說法,也取得了類似的成功。令人印象深刻的是,他完全通過手機(jī)就做到了這一點(diǎn),Devin 處理了設(shè)置環(huán)境和編寫代碼的所有繁重工作。
致命問題:在不可能完成的任務(wù)上浪費(fèi)時間
在早期的成功基礎(chǔ)上,我們依賴 Devin 的異步能力。我們想象讓 Devin 在會議期間編寫文檔,或者在我們專注于設(shè)計(jì)工作時調(diào)試問題。但隨著我們擴(kuò)大測試范圍,問題出現(xiàn)了。看似簡單的任務(wù)往往需要幾天而不是幾個小時,Devin 會陷入技術(shù)死胡同或產(chǎn)生過于復(fù)雜、無法使用的解決方案。
更令人擔(dān)憂的是,Devin 傾向于推進(jìn)實(shí)際上不可能完成的任務(wù)。當(dāng)被要求將多個應(yīng)用程序部署到單個 Railway 部署中(Railway 不支持這一點(diǎn)時),Devin 沒有識別到這個限制,而是花了一天多的時間嘗試各種方法,并幻想不存在的功能。
最令人沮喪的不是失敗本身 —— 所有的工具都有局限性 —— 而是我們花了多少時間試圖挽救這些嘗試。
深入了解哪里出了問題
在探索過程中讓我們感到困惑的是,Devin 能夠熟練地處理 API 集成并構(gòu)建功能性的應(yīng)用程序,但卻在一些看似更簡單的任務(wù)上遇到了困難。
我們開始懷疑是自己的運(yùn)氣不好,還是使用方法有誤。為了回答這一問題,在接近一個月的時間里,我們系統(tǒng)地記錄了對以下幾類任務(wù)的嘗試:
- 從零開始創(chuàng)建新項(xiàng)目
- 執(zhí)行研究任務(wù)
- 分析和修改現(xiàn)有項(xiàng)目
結(jié)果令人震驚,在 20 項(xiàng)任務(wù)中,Devin 有 14 次失敗,3 次成功,3 次結(jié)果不確定。
更令人擔(dān)憂的是,我們無法找出任何規(guī)律來預(yù)測哪些任務(wù)會成功,甚至那些與早期成功案例相似的任務(wù),Devin 都會以意想不到的方式失敗。
下面是我們在幾類任務(wù)上的一些經(jīng)驗(yàn)總結(jié)。
從零開始創(chuàng)建新項(xiàng)目
從零開始創(chuàng)建新項(xiàng)目是 Devin 的強(qiáng)項(xiàng)。畢竟,Devin 最初的演示視頻就展示了其能自主完成 Upwork 任務(wù)的場景。然而,現(xiàn)實(shí)卻更加復(fù)雜。
這里,我們嘗試了一個可觀測性平臺集成的項(xiàng)目。任務(wù)很明確:生成合成數(shù)據(jù)并上傳。然而,Devin 并沒有提供一個簡潔的解決方案,而是生成了一堆代碼 soup—— 層層抽象使得簡單的操作變得不必要的復(fù)雜。
我們最終放棄了 Devin,轉(zhuǎn)而使用 Cursor 進(jìn)行逐步構(gòu)建集成,結(jié)果證明效率要比 Devin 高得多。
類似地,我們還進(jìn)行了其他嘗試,比如當(dāng)要求 Devin 在 AI 筆記工具和 Spiral.computer 之間創(chuàng)建集成時,Devin 生成的代碼被我們其中的一員形容為「意大利面條式的代碼,閱讀起來比從頭開始編寫更令人困惑。」。測試后我們發(fā)現(xiàn),盡管 Devin 可以訪問兩個系統(tǒng)的文檔,但它似乎讓集成的每個方面都變得過于復(fù)雜。
不過,最能說明問題的是讓 Devin 進(jìn)行網(wǎng)頁抓取。我們要求 Devin 跟蹤 Google Scholar 的鏈接并抓取某位作者最近的 25 篇論文 —— 這一任務(wù)使用 Playwright 等工具應(yīng)該是非常簡單的。
考慮到 Devin 具備瀏覽網(wǎng)頁和編寫代碼的能力,這應(yīng)該是特別容易實(shí)現(xiàn)的。然而,它卻陷入了一個無休止的 HTML 解析循環(huán)中,無法從自己的混亂中解脫出來。
研究任務(wù)
如果 Devin 在具體的編碼任務(wù)上表現(xiàn)不佳,或許它在研究任務(wù)上會表現(xiàn)得更好?
然而,結(jié)果充其量也只能說是喜憂參半。雖然它能夠處理基本的文檔查找,但對于更復(fù)雜的研究任務(wù)卻頗具挑戰(zhàn)性。
比如,當(dāng)我們要求 Devin 完成帶有準(zhǔn)確時間戳的轉(zhuǎn)錄摘要時 ——Devin 只是重復(fù)了一些與核心問題無關(guān)的信息,而沒有真正解決問題。具體而言,Devin 沒有探索潛在的解決方案或識別關(guān)鍵的技術(shù)挑戰(zhàn),而是提供了一些不涉及根本問題的通用代碼示例。
即使 Devin 看起來在取得進(jìn)展,結(jié)果往往也不盡如人意。例如,當(dāng)要求 Devin 創(chuàng)建一個最小化的 DaisyUI 主題時,它生成了一個看似可行的解決方案。然而,經(jīng)過仔細(xì)檢查,我們發(fā)現(xiàn)這個主題實(shí)際上并沒有起到任何作用 —— 我們所看到的顏色來自默認(rèn)主題,而不是我們的自定義設(shè)置。
分析和修改現(xiàn)有代碼
Devin 最令人擔(dān)憂的失敗可能出現(xiàn)在處理現(xiàn)有代碼庫時。這些任務(wù)需要理解上下文并與現(xiàn)有模式保持一致 —— 這些技能本應(yīng)是 AI 軟件工程師的核心能力。
我們嘗試讓 Devin 處理 nbdev 項(xiàng)目的經(jīng)歷尤其具有啟發(fā)性。當(dāng)要求將一個 Python 項(xiàng)目遷移到 nbdev 時,Devin 甚至無法掌握基本的 nbdev 設(shè)置,盡管我們?yōu)槠涮峁┝巳娴奈臋n訪問權(quán)限。更令人困惑的是它處理 notebook 的方式 —— 它沒有直接編輯 notebook,而是創(chuàng)建了 Python 腳本來修改它們,為簡單的任務(wù)增加了不必要的復(fù)雜性。雖然它偶爾會提供一些有用的注釋或想法,但它生成的代碼卻始終存在問題。
安全審查也暴露了類似的問題。當(dāng)我們要求 Devin 評估一個 GitHub 倉庫(不到 700 行代碼)的安全漏洞時,它反應(yīng)過度,標(biāo)記了大量誤報(bào),甚至虛構(gòu)了一些不存在的問題。這種分析可能更適合通過一次簡單的、有針對性的 LLM 調(diào)用來完成,而不是 Devin 這種更復(fù)雜的方式。
在調(diào)試任務(wù)中,這種模式依然存在。當(dāng)調(diào)查 SSH 密鑰轉(zhuǎn)發(fā)在設(shè)置腳本中為何不起作用時,Devin 只專注于腳本本身,從未考慮問題可能出在其他地方。類似地,當(dāng)要求添加用戶輸入與數(shù)據(jù)庫值之間的沖突檢查時,一位團(tuán)隊(duì)成員花了幾個小時研究 Devin 的嘗試,最終放棄,并在大約 90 分鐘內(nèi)自己完成了該功能的編寫。
團(tuán)隊(duì)感受:沒有什么場景讓人真正想用 Devin
經(jīng)過一個月的密集測試,我們的隊(duì)員說出了以下感受:
「它可以完成的任務(wù)是那些非常小且定義明確的任務(wù),我用自己的方式可能能更快完成。那些有望節(jié)省時間的復(fù)雜任務(wù),它又很有可能失敗。所以沒有什么特定場景讓我感覺真的想用它?!埂狫ohno Whitaker
「一開始,我對它如此接近我想要的樣子感到很興奮,因?yàn)槲腋杏X我只需要調(diào)整一些小地方。然后,隨著我不得不改動越來越多的地方,我逐漸變得沮喪,最終發(fā)現(xiàn)我還不如從頭開始,一步一步來得更妥當(dāng)。」——Isaac Flath
「Devin 在使用 AnswerAI 的關(guān)鍵內(nèi)部工具時遇到了困難,此外還有其他一些問題,使得這個工具很難使用。盡管我們?yōu)?Devin 提供了大量的文檔和示例,但它仍然遇到了這樣的問題。而在使用像 Cursor 這樣的工具時,我就沒有發(fā)現(xiàn)這種問題。在使用 Cursor 時,有更多機(jī)會可以逐步地、一點(diǎn)一點(diǎn)地引導(dǎo)事情朝著正確的方向發(fā)展。」——Hamel Husain
與 Devin 的情況相對比,我們發(fā)現(xiàn)那些更多由開發(fā)者主導(dǎo)的工作流程(比如像 Cursor 這樣的工具所采用的流程)能夠避開我們與 Devin 合作時所遇到的大部分問題。
結(jié)論
與 Devin 合作展示了自主 AI 開發(fā)渴望成為什么樣子。用戶體驗(yàn)很精致 —— 通過 Slack 聊天,觀察它異步工作,看到它設(shè)置環(huán)境和處理依賴關(guān)系。
但問題是,它很多時候并不好用。在我們嘗試的 20 個任務(wù)中,我們看到 14 次失敗,3 個結(jié)果不確定,只有 3 次成功。更令人擔(dān)憂的是,我們無法預(yù)測哪些任務(wù)會成功。即使是與我們早期成功案例相似的任務(wù)也會以復(fù)雜、耗時的方式失敗??此魄熬肮饷鞯淖灾餍猿蔀榱素?fù)擔(dān) ——Devin 會花幾天時間追求不可能的解決方案,而不是認(rèn)識到根本性的障礙。
這反映了我們在 AI 工具中反復(fù)觀察到的一種模式。社交媒體的興奮和公司估值與現(xiàn)實(shí)世界的實(shí)用性幾乎沒有關(guān)系。最可靠的信號來自用戶交付產(chǎn)品和服務(wù)的詳細(xì)故事。
One More Thing:新版本來了,能解決問題嗎?
Answer.AI 團(tuán)隊(duì)一篇洋洋灑灑的博客暴露了 Devin 遇到的問題。原博客最后的附錄還展示了幾位研究者與 Devin 合作的具體任務(wù)。
可能大家都在期待新版本的到來,或許這些問題就解決了呢。
遺憾的是,新版本是發(fā)布了,但只是一個小版本的更新。最新發(fā)布的 Devin 1.2 在存儲庫中根據(jù)上下文進(jìn)行推理的能力有了重大升級。
新版本更新可總結(jié)為以下幾點(diǎn):
1:更新后的 Devin 更有可能找到需要編輯的相關(guān)文件,重用現(xiàn)有的代碼和模式,并且整體上會生成更準(zhǔn)確的 Pull Request。這些改進(jìn)將逐步向所有用戶推出。
2:Devin 現(xiàn)在可以回應(yīng)音頻消息。試著口頭向 Devin 解釋你的任務(wù)和反饋,就能得到回復(fù)。
3:推出企業(yè)賬戶。企業(yè)賬戶的管理員可以:
- 管理所有組織的成員和訪問權(quán)限;
- 集中管理所有組織的賬單。
目前,企業(yè)賬戶功能僅對 Devin 企業(yè)客戶開放。
4:推出按使用量計(jì)費(fèi)。從本月開始,用戶可以按需付費(fèi),直至達(dá)到你設(shè)置的額外使用預(yù)算。
用戶可以在 「Settings > Plans > Manage Plan Limits 」或者「 Settings > Usage and Limits > Manage Additional Usage Budget」中設(shè)置自己的額外使用預(yù)算。
這么看下來,雖然 Devin 已經(jīng)進(jìn)化到 1.2 版本,但并不能覆蓋用戶在使用過程中遇到的各種問題,比如上文中 Answer.AI 遇到的一系列問題。