用了一個月後發現,Devin是真不好用

机器之心發表於2025-01-18
與 Devin 合作一個月後,這些研究者給出了不太樂觀的反饋。

在 AI 程式設計領域,你可能聽說過 Devin,它是由初創公司 Cognition 釋出的一項成果。Devin 就像一個超級智慧助手,能幫助工程師更快更好地完成工作,釋出之初,很多人都稱讚 Devin 是全球首位 AI 軟體工程師。它似乎具備從學習新技術、除錯成熟程式碼庫,到部署完整應用程式,甚至訓練 AI 模型的全方位能力。

然而,事實真的如此嗎?答案是:未必。近日,來自新型 AI 研發實驗室 Answer.AI 的研究者就記錄了他們使用 Devin 翻車的情況。

他們還為此寫了一篇部落格《與 Devin 共度一個月的感想》,文章詳細記錄了他們在給 Devin 超過 20 項任務之後獲得的感受。
圖片
部落格連結:https://www.answer.ai/posts/2025-01-08-devin.html

以下是部落格內容:

簡單任務表現尚可

第一個任務很簡單但真實:將資料從 Notion 資料庫拉取到 Google Sheet。Devin 以令人驚訝的能力完成了這項任務。它瀏覽了 Notion API 文件,瞭解需要什麼,並指導我在 Google Cloud Console 中設定必要的憑證。它沒有隻是轉儲 API 說明,而是帶領我完成每個選單和按鈕點選 —— 這通常會節省繁瑣的文件搜尋時間。整個過程大約花了一個小時(但只有幾分鐘人工互動)。最後,Devin 分享了一個連結,連結到一個格式完美的 Google Sheet,其中包含我們的資料。

它生成的程式碼有點冗長,但可以執行。這感覺像是一個展望未來的場景 —— 一個可以處理消耗大量開發人員時間的「膠水程式碼」任務的 AI。Johno 使用 Devin 建立了一個行星跟蹤器,用於揭穿有關木星和土星曆史位置的錯誤說法,也取得了類似的成功。令人印象深刻的是,他完全透過手機就做到了這一點,Devin 處理了設定環境和編寫程式碼的所有繁重工作。

致命問題:在不可能完成的任務上浪費時間

在早期的成功基礎上,我們依賴 Devin 的非同步能力。我們想象讓 Devin 在會議期間編寫文件,或者在我們專注於設計工作時除錯問題。但隨著我們擴大測試範圍,問題出現了。看似簡單的任務往往需要幾天而不是幾個小時,Devin 會陷入技術死衚衕或產生過於複雜、無法使用的解決方案

更令人擔憂的是,Devin 傾向於推進實際上不可能完成的任務。當被要求將多個應用程式部署到單個 Railway 部署中(Railway 不支援這一點時),Devin 沒有識別到這個限制,而是花了一天多的時間嘗試各種方法,並幻想不存在的功能。

最令人沮喪的不是失敗本身 —— 所有的工具都有侷限性 —— 而是我們花了多少時間試圖挽救這些嘗試。

深入瞭解哪裡出了問題

在探索過程中讓我們感到困惑的是,Devin 能夠熟練地處理 API 整合並構建功能性的應用程式,但卻在一些看似更簡單的任務上遇到了困難。

我們開始懷疑是自己的運氣不好,還是使用方法有誤。為了回答這一問題,在接近一個月的時間裡,我們系統地記錄了對以下幾類任務的嘗試:

  • 從零開始建立新專案
  • 執行研究任務
  • 分析和修改現有專案

結果令人震驚,在 20 項任務中,Devin 有 14 次失敗,3 次成功,3 次結果不確定。

更令人擔憂的是,我們無法找出任何規律來預測哪些任務會成功,甚至那些與早期成功案例相似的任務,Devin 都會以意想不到的方式失敗。

下面是我們在幾類任務上的一些經驗總結。

從零開始建立新專案

從零開始建立新專案是 Devin 的強項。畢竟,Devin 最初的演示影片就展示了其能自主完成 Upwork 任務的場景。然而,現實卻更加複雜。

這裡,我們嘗試了一個可觀測性平臺整合的專案。任務很明確:生成合成資料並上傳。然而,Devin 並沒有提供一個簡潔的解決方案,而是生成了一堆程式碼 soup—— 層層抽象使得簡單的操作變得不必要的複雜。

我們最終放棄了 Devin,轉而使用 Cursor 進行逐步構建整合,結果證明效率要比 Devin 高得多。

類似地,我們還進行了其他嘗試,比如當要求 Devin 在 AI 筆記工具和 Spiral.computer 之間建立整合時,Devin 生成的程式碼被我們其中的一員形容為「義大利麵條式的程式碼,閱讀起來比從頭開始編寫更令人困惑。」。測試後我們發現,儘管 Devin 可以訪問兩個系統的文件,但它似乎讓整合的每個方面都變得過於複雜。

不過,最能說明問題的是讓 Devin 進行網頁抓取。我們要求 Devin 跟蹤 Google Scholar 的連結並抓取某位作者最近的 25 篇論文 —— 這一任務使用 Playwright 等工具應該是非常簡單的。

考慮到 Devin 具備瀏覽網頁和編寫程式碼的能力,這應該是特別容易實現的。然而,它卻陷入了一個無休止的 HTML 解析迴圈中,無法從自己的混亂中解脫出來。

研究任務

如果 Devin 在具體的編碼任務上表現不佳,或許它在研究任務上會表現得更好?

然而,結果充其量也只能說是喜憂參半。雖然它能夠處理基本的文件查詢,但對於更復雜的研究任務卻頗具挑戰性。

比如,當我們要求 Devin 完成帶有準確時間戳的轉錄摘要時 ——Devin 只是重複了一些與核心問題無關的資訊,而沒有真正解決問題。具體而言,Devin 沒有探索潛在的解決方案或識別關鍵的技術挑戰,而是提供了一些不涉及根本問題的通用程式碼示例。

即使 Devin 看起來在取得進展,結果往往也不盡如人意。例如,當要求 Devin 建立一個最小化的 DaisyUI 主題時,它生成了一個看似可行的解決方案。然而,經過仔細檢查,我們發現這個主題實際上並沒有起到任何作用 —— 我們所看到的顏色來自預設主題,而不是我們的自定義設定。

分析和修改現有程式碼

Devin 最令人擔憂的失敗可能出現在處理現有程式碼庫時。這些任務需要理解上下文並與現有模式保持一致 —— 這些技能本應是 AI 軟體工程師的核心能力。

我們嘗試讓 Devin 處理 nbdev 專案的經歷尤其具有啟發性。當要求將一個 Python 專案遷移到 nbdev 時,Devin 甚至無法掌握基本的 nbdev 設定,儘管我們為其提供了全面的文件訪問許可權。更令人困惑的是它處理 notebook 的方式 —— 它沒有直接編輯 notebook,而是建立了 Python 指令碼來修改它們,為簡單的任務增加了不必要的複雜性。雖然它偶爾會提供一些有用的註釋或想法,但它生成的程式碼卻始終存在問題。

安全審查也暴露了類似的問題。當我們要求 Devin 評估一個 GitHub 倉庫(不到 700 行程式碼)的安全漏洞時,它反應過度,標記了大量誤報,甚至虛構了一些不存在的問題。這種分析可能更適合透過一次簡單的、有針對性的 LLM 呼叫來完成,而不是 Devin 這種更復雜的方式。

在除錯任務中,這種模式依然存在。當調查 SSH 金鑰轉發在設定指令碼中為何不起作用時,Devin 只專注於指令碼本身,從未考慮問題可能出在其他地方。類似地,當要求新增使用者輸入與資料庫值之間的衝突檢查時,一位團隊成員花了幾個小時研究 Devin 的嘗試,最終放棄,並在大約 90 分鐘內自己完成了該功能的編寫。

團隊感受:沒有什麼場景讓人真正想用 Devin

經過一個月的密集測試,我們的隊員說出了以下感受:

「它可以完成的任務是那些非常小且定義明確的任務,我用自己的方式可能能更快完成。那些有望節省時間的複雜任務,它又很有可能失敗。所以沒有什麼特定場景讓我感覺真的想用它。」——Johno Whitaker

「一開始,我對它如此接近我想要的樣子感到很興奮,因為我感覺我只需要調整一些小地方。然後,隨著我不得不改動越來越多的地方,我逐漸變得沮喪,最終發現我還不如從頭開始,一步一步來得更妥當。」——Isaac Flath

「Devin 在使用 AnswerAI 的關鍵內部工具時遇到了困難,此外還有其他一些問題,使得這個工具很難使用。儘管我們為 Devin 提供了大量的文件和示例,但它仍然遇到了這樣的問題。而在使用像 Cursor 這樣的工具時,我就沒有發現這種問題。在使用 Cursor 時,有更多機會可以逐步地、一點一點地引導事情朝著正確的方向發展。」——Hamel Husain

與 Devin 的情況相對比,我們發現那些更多由開發者主導的工作流程(比如像 Cursor 這樣的工具所採用的流程)能夠避開我們與 Devin 合作時所遇到的大部分問題。

結論

與 Devin 合作展示了自主 AI 開發渴望成為什麼樣子。使用者體驗很精緻 —— 透過 Slack 聊天,觀察它非同步工作,看到它設定環境和處理依賴關係。

但問題是,它很多時候並不好用。在我們嘗試的 20 個任務中,我們看到 14 次失敗,3 個結果不確定,只有 3 次成功。更令人擔憂的是,我們無法預測哪些任務會成功。即使是與我們早期成功案例相似的任務也會以複雜、耗時的方式失敗。看似前景光明的自主性成為了負擔 ——Devin 會花幾天時間追求不可能的解決方案,而不是認識到根本性的障礙。

這反映了我們在 AI 工具中反覆觀察到的一種模式。社交媒體的興奮和公司估值與現實世界的實用性幾乎沒有關係。最可靠的訊號來自使用者交付產品和服務的詳細故事。

One More Thing:新版本來了,能解決問題嗎?

Answer.AI 團隊一篇洋洋灑灑的部落格暴露了 Devin 遇到的問題。原部落格最後的附錄還展示了幾位研究者與 Devin 合作的具體任務。

可能大家都在期待新版本的到來,或許這些問題就解決了呢。

遺憾的是,新版本是釋出了,但只是一個小版本的更新。最新發布的 Devin 1.2 在儲存庫中根據上下文進行推理的能力有了重大升級。

新版本更新可總結為以下幾點:

1:更新後的 Devin 更有可能找到需要編輯的相關檔案,重用現有的程式碼和模式,並且整體上會生成更準確的 Pull Request。這些改進將逐步向所有使用者推出。

2:Devin 現在可以回應音訊訊息。試著口頭向 Devin 解釋你的任務和反饋,就能得到回覆。
圖片
3:推出企業賬戶。企業賬戶的管理員可以:

  • 管理所有組織的成員和訪問許可權;
  • 集中管理所有組織的賬單。

目前,企業賬戶功能僅對 Devin 企業客戶開放。

4:推出按使用量計費。從本月開始,使用者可以按需付費,直至達到你設定的額外使用預算。

使用者可以在 「Settings > Plans > Manage Plan Limits 」或者「 Settings > Usage and Limits > Manage Additional Usage Budget」中設定自己的額外使用預算。

這麼看下來,雖然 Devin 已經進化到 1.2 版本,但並不能覆蓋使用者在使用過程中遇到的各種問題,比如上文中 Answer.AI 遇到的一系列問題。

在使用 Devin 的過程中,你都遇到了哪些問題?歡迎評論區吐槽。

參考連結:
https://www.cognition.ai/blog/jan-25-product-update

相關文章