天天看點

AI編碼無需人類插手!Claude工程師摔斷右手,一周狂肝3000行代碼

編輯:編輯部

【新智元導讀】一次意外右手骨折,Claude工程師的工作竟被AI挽救了。近兩個月的時間,他們一起結對程式設計,甚至在一周内肝出3000行代碼。他瘋狂暗示,未來1-3年,就是「AI工程師」的天下。

原來,摔斷胳膊也是一件幸事......

當事人表示,「我再也不想回到過去了」。

這是為何?

AI編碼無需人類插手!Claude工程師摔斷右手,一周狂肝3000行代碼

事情是這樣的,幾個月前,Claude工程師Erik Schluntz騎車上班的路上,意外摔斷右手,打上了石膏。

為了生計,他不得已用左手打字。

即便如此,Schluntz依舊在Anthropic舊金山的辦公室裡,一周狂肝了3000行代碼。

AI編碼無需人類插手!Claude工程師摔斷右手,一周狂肝3000行代碼

為AI編碼點贊

誰也不曾想,這背後竟是AI立了大功。

他通過結合語音轉文字技術,與Claude AI結隊,整整寫了2個月的代碼。不過,必須承認的是,其中有許多是「樣闆代碼」。

為此,Schluntz還撰寫了一篇長文,題為——AI替代了我的右手。

AI編碼無需人類插手!Claude工程師摔斷右手,一周狂肝3000行代碼

文章中,他表示,「通過這件事,體驗到了人類幾乎不再需要自己編寫代碼的未來」。

老實說,我愛上了這種感覺。
AI編碼無需人類插手!Claude工程師摔斷右手,一周狂肝3000行代碼

另一位Anthropic工程師表示,通過從這件事,我們可以獲得軟體工程未來幾年的關鍵一瞥。

AI編碼無需人類插手!Claude工程師摔斷右手,一周狂肝3000行代碼

即使右手不能使,AI是完全可以讓你成為一個10倍程式猿。

AI編碼無需人類插手!Claude工程師摔斷右手,一周狂肝3000行代碼

那麼,Erik Schluntz如何在受傷期間,能夠讓AI為他高效編碼呢?

初始設定

首先,文章開篇他最先介紹了,自己如何對AI進行設定,最終決定使用了Claude AI。

Schluntz在摔斷手之前,也曾使用類似Copilot等AI代碼生成工具,但主要還是「手寫」。

AI編碼無需人類插手!Claude工程師摔斷右手,一周狂肝3000行代碼

2105年哈佛碩士畢業,Cobalt機器人公司創始人、Anthropic AI技術研究員

此外,他也使用過「語音轉文字」,但也主要在手機上發短信,并未在電腦中嘗試過這一功能。

好在,Mac内置語音控制在NLP處理上非常出色。

唯一不足的是,在聽寫任何與代碼相關的内容時,Siri表現得很糟糕。畢竟,一些符号和詞彙,大大超出其識别範圍。

就比如:

Schluntz:Eval

Siri:Eval?你想說的是Evil嗎?

AI編碼無需人類插手!Claude工程師摔斷右手,一周狂肝3000行代碼

當然,目前有一些專門針對代碼的優秀語音轉文字系統,比如Talon。

但由于Schluntz對AI代碼生成非常感興趣,于是決定嘗試,用自家AI去完成這項艱巨的任務。

這裡沒有使用Copilot,是因為其自動補全功能,對作者來說異常慢,需要開發者先寫出半行代碼,才能實作。

畢竟摔傷了一隻手,「動嘴」還是比「動手」快。

這時,隻需将大塊代碼庫内容一鍵複制粘貼到Claude AI中,然後通過語音指令進行轉換。

AI編碼無需人類插手!Claude工程師摔斷右手,一周狂肝3000行代碼

舉個栗子,Schluntz會說「重構ABC函數以接受輸入XYZ」或「為這些新函數ABC編寫單元測試,并檢視XYZ的示例測試」。

雖然Claude并不總是能在第一次嘗試時成功,但它能很好地接受後續指令和調整——

「我感覺就像是,和AI進行『結對程式設計』,而由另一個人操作鍵盤」!

調教Claude

「被迫」這樣寫代碼後,Schluntz很快就弄清楚了,什麼樣提示會生成有效代碼,什麼會是無效。

有時候,它非常神奇,但有時候,就連作者本人恨不得把電腦扔出窗外。

他不得不在IDE和Claude之間頻繁地複制粘貼,并手動拼接被Claude輸出長度限制截斷的代碼片段。

甚至,有幾次他對Claude「提高了嗓門」,隻因AI「忘記了」Schluntz之前的指令。

AI編碼無需人類插手!Claude工程師摔斷右手,一周狂肝3000行代碼

接下來,就看看Schluntz如何調教的Claude。

要具體,并舉例說明

如果你隻給出一個基本請求,LLM可能會給出一個中規中矩的通用答案,可能并不适用于你的特定代碼庫。

這時, 就需要給出「非常明确的指令」,來獲得更優的結果。

比如,詳細說明你期望的輸入和輸出,使用哪些庫等。

Schluntz發現,将指令放在輸入的開頭和結尾效果最好,可以確定AI不會「遺忘」重要的上下文。

最好是,能夠提供代碼庫示例,供AI參考。特别是,在編寫單元測試、處理樣闆代碼時,AI表現特别好。

通過示例,AI還可以學習如何使用代碼庫中的内部工具函數。

這當中,遷移和重構,是最完美的應用場景。

Schluntz會手動遷移一個執行個體,然後用它作為示例讓Claude轉換其餘的輸入。

通過這種方式,他可以快速重構大約3,000行代碼。

讓Claude掌舵

大多數人把LLM當作StackOverflow的替代品:他們雖是在詢問方向,但仍然自己在駕駛。

Schluntz則反其道而行之。

「如果你能夠給Claude正确的基礎構模組化塊,它往往可以一次性完成整個任務」。

在周末的機器人項目中,Schluntz和朋友Survy給Claude提供了一段控制單個電機和讀取藍牙遊戲搖桿的代碼。

通過這些構模組化塊,Claude能夠一氣呵成地編寫出所有遠端控制機器人的代碼,節省了大量時間和繁瑣的資料處理!

AI編碼無需人類插手!Claude工程師摔斷右手,一周狂肝3000行代碼

令人驚訝的是,這與常見的建議完全相反,即一次隻向LLM提出一個問題。

尤其是,在Schluntz不熟悉的領域,Claude往往在任務分解方面表現得尤為出色。

過于具體的請求也能奏效,但有時會導緻失去整體視角,類似于在沒有整體背景的情況下,給出狹隘的建議。

RTFM == Read This For Me

電機控制器,有一份100頁的說明書,内容繁瑣且複雜。

但Schluntz和Survy将其上傳到Claude,然後提問,迅速解決了其中一個問題。

在以前,這可能需要一個小時的仔細閱讀,并查找相關術語和教程。

AI編碼無需人類插手!Claude工程師摔斷右手,一周狂肝3000行代碼

機械同理心

「你不需要成為工程師才能成為賽車手,但你必須擁有機械同理心。」

——三屆F1世界冠軍Jackie Stewart

AI編碼無需人類插手!Claude工程師摔斷右手,一周狂肝3000行代碼

漸漸地,Schluntz開始建立起一種非常好的直覺,Claude能正确處理哪些事情,以及哪些事情仍需要人類做。

了解這種差別,讓他在兩個方向上都避免了很多挫敗感。

Schluntz學會了哪些地方可以進行簡化處理:

- 「我正在使用一個名為pygame的Python庫……」 簡化為 「在pygame中……」

- 「當我運作你的代碼時,我收到了這個錯誤資訊……你認為我現在應該怎麼做」 簡化為直接複制堆棧追蹤(stack trace)。

他甚至還學會了,轉換或重構大塊代碼可以帶來顯著效果。例如,在每一行之間添加計時器(timing instrumentation)。

另一方面,Schluntz學到如果一個LLM在兩次嘗試中,無法修複一個錯誤,那麼它永遠也不能修複。這時就需要自己動手了。

他還對Claude可能會犯的錯誤,有了很好的直覺。

有一次,Claude給了一段代碼,它循環周遊motor1, motor2, motor2, motor4,遺漏了motor3。

作者的朋友注意到這一點,并說 「這一定是幻覺」!但Schluntz能感覺到,「Claude絕不會犯這種錯誤」。

果然,當他們檢查輸入時,發現這個錯誤确實存在于最初放入Claude的原始代碼中。

為自己建構臨時工具

當Schluntz帶着機器人繞着後院轉了一圈後,它輸出了一份包含GPS坐标和其他資料的CSV檔案。

他想檢查這些資料與實際情況的準确性,但并沒有很高效的方法,要弄清楚如何檢視和分析這些GPS坐标可能需要一個小時。

甚至,他可能會手動在手機上檢查GPS坐标,用眼睛死死盯着這些數字,害怕漏掉其中一行。

這次,Schluntz将CSV檔案的前兩行提供給Claude。

它立即生成了一個網頁APP,可以在衛星圖像上渲染上傳的GPS坐标CSV檔案!

AI編碼無需人類插手!Claude工程師摔斷右手,一周狂肝3000行代碼

擁有恰好符合我需求的完美調試工具,而不用依賴print語句或預先建構的可視化工具,徹底改變了局面。

AI讓軟體開發變得如此便宜,以至于它可以為特定任務建立一次性工具!

總的來說,這些經驗和教訓讓Schluntz在使用AI寫代碼時,變得更高效!

沒有AI工具,這就像是放棄編譯器,改為手寫彙編語言一樣。

未來會怎樣?

在文章的最後,Schluntz将AI程式設計劃分為三個階段:

過去1-2年

過去的幾年裡,AI在軟體工程中的最大用途是,在IDE中使用Copilot自動補代碼,或是通過ChatGPT查詢代碼知識(以往需要去StackOverflow尋找答案)。

以及,通過一些智能體,在沒有人類監督情況下輔助程式設計,執行多個步驟,但這些并不實用。

今年

2024年,這三個領域都在發生變革。

諸如Zed、Cursor和各種VSCode擴充這樣的IDE,深入地整合了大模型,擁有更完美的上下文,還能處理更大塊的代碼生成。

Claude Artifacts、ChatGPT的Data Analyst取代了Jupyter Notebook。它們已經成為作者的原型開發工具,和一次性代碼的首選解決方案。

最後,一批如Cognition、Factory、CodeGen等智能體初創公司,正在端到端地自動化某些工作流程。

AI編碼無需人類插手!Claude工程師摔斷右手,一周狂肝3000行代碼

未來1-3年

Schluntz認為,未來1-3年,會出現真正的「AI工程師」。

也就是說,這三個領域可能會融合成一個産品——「AI工程師」,一個可以在自主模式和同步模式之間連續工作的系統:

1. 自主模式适用于範圍明确的任務

AI将完全獨立工作,具備編寫和運作代碼、使用外部工具、搜尋網絡資訊、通路内部文檔以及從過去錯誤中學習的能力。它會不斷疊代任務,直到完成或遇到瓶頸。這将占據80%的工作量。

2. 配對程式設計模式适用于最難的任務

人類将在高層次上指導AI,而AI負責處理低層次的實作細節。互動将是高度多模态的,人類和AI将在文本描述、視覺圖表、口頭讨論和直接操作彼此代碼之間無縫切換。你可能會共享螢幕,讓AI跟随并給出建議和意見,或者AI共享它的螢幕,而你在它操作時給予指導。

AI編碼無需人類插手!Claude工程師摔斷右手,一周狂肝3000行代碼

除此之外:

- AI工程師将擁有與你作為員工時相同的所有背景資訊和知識

AI将連接配接到公司的知識庫,通路你的設計檔案和客戶訪談記錄。無論是自主操作還是與人類配對,AI都能在需要時無縫地提取這些資訊以做出決策。

- AI工程師将是主動的而不是阿谀奉承的

如果你提出一個設計建議,AI會提供使用者訪談記錄,并提出更好的建議。

AI工程師将為其工作中的簡單和可預測部分派遣更便宜的子智能體,進而降低計算成本和延遲。就像你可以浏覽日志檔案而不必逐字閱讀一樣。

在Schluntz看來,AI工程師在特定方面将比大多數人類工程師更聰明,但有時會缺乏常識或者需要重新集中注意力并接受指導。

實際上,這與今天經理和産品經理與工程師合作的方式并沒有太大差別。

我們還需要工程師嗎?

正如電腦的發明并沒有讓會計師失業,而是提升了他們的工作,使他們能夠在更高的抽象層次上進行思考。

會計師仍然需要知道如何做數學運算和了解計算,但像電腦和電子表格這樣的工具使他們能夠創造比以前更多的價值。

類似的,AI也會降低建立軟體的門檻,就像任何人都可以使用Excel做個人會計一樣。

學生們可以在宿舍裡啟動完整的應用程式和業務,小型工作室也可以為自己建立量身定制的軟體工具。

AI編碼無需人類插手!Claude工程師摔斷右手,一周狂肝3000行代碼

這時,創造力将會是唯一的瓶頸。

人類工程師不會消失。

我們仍然需要在高層次上進行優先級排序,了解問題的整體架構和範圍,并審查AI的工作,尤其是在系統變得更大時。

不同的是,我們将會把更多的時間花在思考建構什麼上,而不是重複性地考慮「如何」建構。

如今,Schluntz已經擺脫了石膏的「束縛」,但他依然會将大部分代碼交給Claude去寫。

軟體工程的未來

巧合的是,Cognition AI的總裁Russell Kaplan昨天也發表了長推,預測在AI越來越擅長寫代碼的時代,軟體工程行業将如何發展。

Congnition AI正是第一個AI軟體工程師Devin的開發商。

AI編碼無需人類插手!Claude工程師摔斷右手,一周狂肝3000行代碼

在Kaplan看來,研究實驗室将對下一代模型的編碼和推理進行更多改進。很快,模型在程式設計上就會變得非常出色。

為什麼呢?

除了通用人工智能的進步外,程式設計還有一個獨特的優勢:通過「自我對弈」實作超越人類的資料擴充潛力。

模型可以編寫代碼,然後運作它;或者編寫代碼,編寫測試,并檢查一緻性。

這種類型的自動監督在大多數領域是不可能實作的,因為我們在接近人類專業知識極限時,面臨着後訓練的資料壁壘。而代碼不同——它可以通過經驗和自動化進行測試。

是以,軟體工程在幾年内将會發生根本性的變化。

真正的編碼智能體将能夠完成端到端的任務,并與今天的AI Copilot相輔相成。

在這個新世界中,每個工程師都将成為工程經理,并配有一支由智能體組成的實習生大軍。

工程師隻需将把基本任務委派給編碼智能體,然後就能把更多的時間花在解決更高層次的問題上:了解需求、架構系統以及決定建構什麼。

這将引領我們進入一個前所未有的軟體繁榮時代。

很快,曾經難以開發且成本高昂的軟體将變得更加易于擷取(提高10倍),「一次性軟體」也将會大量湧現。

AI編碼無需人類插手!Claude工程師摔斷右手,一周狂肝3000行代碼

未來的軟體工程師将比現在多得多,隻是工作方式會有很大不同:更多的自然語言,以及更少的樣闆代碼。

當然,對于這種變化,工程師們很快就能夠适應,就像他們從彙編語言過渡到Python時一樣。

除了直接的生産力提升之外,這還會對初創公司産生實質性的「二階效應」。

首先,面向開發者的公司也将針對編碼智能體進行「營銷」。畢竟,你的智能體會決定使用哪個雲服務和選擇哪個資料庫。

曾經作為優先考慮的使用者友好CLI,将轉變為智能體友好的UI/UX界面。

産品品質的門檻也将提高。在開發者能夠更快傳遞的世界中,半成品或功能不完整的MVP将不再被接受。

随着編碼智能體的興起,測試基礎設施将變得更加重要和普及。因為編碼智能體會編寫更多的測試,同時也會依賴這些測試來檢查他們的工作。

随着智能體使代碼遷移變得更容易,轉換成本将不再是科技公司的護城河。公司甚至将智能遷移助手與産品進行捆綁銷售,來簡化使用流程。

無論具體情況如何,總體趨勢是明确的:現在是成為開發者的最佳和最高效的時代。

參考資料:

https://x.com/ErikSchluntz/status/1820501663998001160

https://x.com/alexalbert__/status/1820503813180280964

https://erikschluntz.com/software/2024/07/30/code-with-ai.html

https://x.com/russelljkaplan/status/1820460524460802256

繼續閱讀