Devin 教你做 Agent:把 AI 當做需要指導的初級開發者

近期,Cognition團隊發佈了一份編程智能體實踐指南,總結了他們兩年來構建Devin(自主編程智能體)的經驗教訓。整份指南建立在一個簡單的心智模型之上:把AI當作需要明確指導的初級開發者,而不是魔法工具

基於大量客戶反饋,團隊發現資深工程師(Senior到Staff級別)採用智能體工具最快,原因在於他們天然理解如何"管理"初級開發者——這恰恰是有效使用編程智能體的關鍵。對於中大型任務(1-6小時工作量),這種方法能節省約80%的時間。

Cognition團隊強調,技術功底和對代碼庫的理解依然重要。真正的改變是工作方式:工程師要像工程經理一樣思考——同時管理多個"初級開發者"(智能體),把精力放在更重要的事情上。這份指南爲想要採用這種工作方式的團隊提供了實用建議。

本篇內容轉載自「錦秋集」。

超 8000 人的「AI 產品市集」社羣!不錯過每一款有價值的 AI 應用。

邀請從業者、開發人員和創業者,飛書掃碼加羣:

進羣后,你有機會得到:

最新、最值得關注的 AI 新品資訊;

不定期贈送熱門新品的邀請碼、會員碼;

最精準的AI產品曝光渠道

以下爲原文內容:

現在是 2025 年。編程Agent並非魔法,但它已是現實世界中最接近魔法的存在。我們發現,一部分工程師,特別是其中的資深專家,總能比其他人更快地掌握併成功運用這些工具。在這裡,我們希望分享一些來自我們客戶和自身實踐的、最寶貴的經驗。

關於本指南:

產品中立我們討論的技巧,旨在幫助您成功駕馭任何一款編程Agent。

戰術實用我們只提供那些最具可操作性的實戰建議。

技術導向儘管編程Agent對很多人都有價值,但本指南是爲工程師量身打造的。

開發者工具的進化速度驚人。回望過去:十年前,是能提示方法名、執行代碼重構的自動補全;四年前,是能幫你寫出後幾行代碼的Copilot;兩年前,是能輔助開發、生成完整文件的生成式聊天機器人。

而今天,我們迎來了自主Agent,它能根據一個初步想法,一路推進到交付最終的拉取請求(Pull Request),全程幾乎不需人爲介入。過去兩年,我們傾力打造 Devin,就是爲了實現這一願景。

如今,自主Agent正受到前所未有的關注,特別是隨着近期一系列同類產品的問世。這些Agent形態各異,可以是網頁應用、移動應用,也可以集成在 Slack、GitHub、Linear 和 Jira 這類你我日常使用的工具中。

儘管“人機協作”的上限遠高於獨立的 AI,但自主Agent端到端完成任務的能力,將多任務處理提升到了新的層次,讓每位工程師都能像工程經理一樣,同時駕馭多個項目。

要適應與這些 AI 新同事的高效協作,確實需要一點時間。有趣的是,我們觀察到,資深工程師往往能最快上手並精通這些工具。

我們相信,這些工具終將成爲所有級別工程師的標配。基於我們的經驗和客戶的反饋,我們提煉了以下關鍵洞見與心得,希望能幫助每個人順利地將這些強大的工具融入自己的工作流。

01入門篇:基礎與日常應用

提示詞的核心原則:與Agent高效溝通

掌握這些基本原則,是你在 2025 年高效驅動編程Agent的基石。就算只記住這幾點,也足以讓你受益匪淺。

指令要具體:不只說“做什麼”,更要說“怎麼做”

要把Agent看作一個經驗尚淺的初級程序員,它的判斷不一定總是靠譜。對於簡單任務,直接下達指令即可;但面對複雜任務,從一開始就清晰地規劃出你傾向的實現路徑至關重要。預先爲Agent設定好整體架構和核心邏輯,不僅能大大提高它一次成功的概率,也能讓你在審查代碼時更加輕鬆,因爲整個實現思路本就出自你手。

例如:與其籠統地說“加單元測試”,不如具體指明:要測試哪個功能、哪些邊界情況是重點、以及是否需要或如何進行模擬(mock)。

指明起點:告訴Agent從哪兒下手

設想一下,如果是你親自動手,你會從哪裡開始?即便你不清楚具體的文件或函數名,也應該告訴它相關的代碼庫、參考文檔或關鍵組件。明確這些起點,能最大程度地避免Agent做無用功,從而節省大量時間。

例如:“請爲我們的代碼庫增加對 Google 模型的支持。你可以先去閱讀最新的官方文檔 [鏈接],然後在model_groups目錄下創建一個新的實現文件。”

防禦性提示:預判Agent可能犯的錯

想象你正在給一位新實習生布置任務,他可能會在哪些地方感到困惑或出錯?你需要提前預見到這些可能出問題的地方,並在指令中主動澄清,消除所有可能的歧氣。

例如:“請修復搜索模塊的 C++ 綁定,確保新的單元測試能夠通過。注意,C++ 綁定這部分,很可能每次修改代碼後都需要重新編譯才能進行測試。”

提供反饋閉環:善用測試、類型檢查和代碼規範

Agent的強大之處,很大程度上在於它能根據錯誤信息不斷迭代、自我修正。因此,爲它提供一個強大的反饋閉環至關重要。類型檢查器(Type Checkers)、代碼規範工具(Linters)和單元測試,都是提升其表現的利器。

相比普通 Python,類型化的 Python 能提供更明確的反饋;同理,TypeScript 也優於 JavaScript。教會Agent如何運行常規的檢查和測試,並確保它擁有必要的環境和權限。如果任務涉及前端,清晰地告知它如何啓動和驗證開發環境。

例如:我們團隊已經將內部的 Python SDK 從基本無類型,全面遷移到了強類型。順便一提,這類遷移任務本身就非常適合交給編程Agent來完成。

發揮你的專家價值:監督與驗證

當你對自己的代碼庫瞭如指掌時,以上所有技巧都會變得事半功倍。即便任務再簡單,你的專業判斷對於驗證邏輯和結果的正確性都不可或缺。人類的監督是最後一道防線——你,最終要爲代碼的正確性負責。即使AI工具日益強大,代碼所有權和最終驗證的職責,仍是人類工程師不可或缺的核心價值。

將Agent融入日常工作流:提升個人效率

一旦掌握了與Agent溝通的要領,就該把它無縫地融入你的日常工作中了。以下是一些實用的場景:

即時處理新需求,告別工作打斷

當同事突然在羣裡說:“嘿,我們能快速搭個 X 嗎?”或者“Y 功能需要微調一下”,你無需再打斷自己手頭的深度工作。只需花幾秒鐘給自主Agent發個簡短的指令,讓它去調研或直接修改。

這讓你能持續專注於當前的主要任務。同樣,當你有了一個有趣的副業點子,或需要快速驗證一個原型、抓取一些數據時,都可以先把它交給Agent,自己稍後再來驗收成果。

例如:在我們的團隊裡,當討論到一些漏洞修復或小型功能迭代時,直接在 Slack 裡 @Devin 已經成爲一種習慣。

移動辦公,隨時解決緊急問題

想象一下,在通勤或出差途中,一個緊急的線上問題突然爆出,或者你猛然想起自己提交的代碼裡可能有個疏忽。別擔心,自主Agent通常支持移動端訪問,讓你能隨時隨地處理這些狀況。無論是通過 Slack 還是專用的手機 App,你都能在路上解決問題,哪怕網絡信號時好時壞。

例如:正是因爲有了這種靈活性,我們團隊在出差和通勤途中的工作效率才得以大大提升。

把繁瑣的雜事交給Agent

你是否曾被困在爲了定位一個老 bug 而反覆進行二分查找(bisecting),或者爲了一個新功能而更新沒完沒了的文檔?現在,你可以把這些重複、枯燥的任務統統交給Agent。這能幫你節省下寶貴的時間和精力,投入到更富創造性的工作中去。

例如:在我們團隊,一位工程師在發佈一項功能後,緊接着讓Agent去更新所有相關的技術文檔和用戶手冊,這已是常態。

告別選擇困難,讓Agent幫你做實驗

你在糾結一次重構是否真的能讓代碼更簡潔嗎?或者在兩種不同的架構方案間猶豫不決?讓Agent把兩種方案都實現出來。當具體的代碼擺在面前時,優劣一目瞭然,決策也就變得簡單直接。而且,當你放棄其中一個方案時,也完全不必顧慮面子問題。

例如:當初在爲文本框選型時,我們在 Lexical 和 Slate 之間猶豫,於是我們讓Agent分別實現了兩個版本。最終,Slate 憑藉更出色的成品效果勝出。

善用預覽部署,快速驗證成果

配置你的 CI/CD 流程,讓它爲每一個新的拉取請求自動創建一個可供預覽的部署環境,並生成一個實時訪問的 URL。這在審查由 AI Agent完成的前端任務時尤其有用,你可以直觀地看到最終效果。

例如:Vercel 這類部署平臺,讓實現預覽部署變得異常簡單。

當一個任務的複雜性超出了幾個文件的修改範圍時,想讓Agent一次性完美搞定就變得很有挑戰。然而,恰恰是掌握如何委派這類中大型任務(通常需要 1-6 小時工作量),才能真正發揮自主Agent的威力,幫你節省的將不再是幾分鐘,而是數小時的寶貴時間。

讓Agent爲你完成“第一版草稿”

對於一項大工程,讓自主Agent先生成一個 PR 初稿,可以極大地推動項目進展,並顯著減輕你的工作負擔。成功的關鍵在於,你必須在一開始就清晰地傳達你期望的實現思路。把自己想象成一位架構師,正在指導幾位初級開發人員。你給出的藍圖越清晰、指令越詳盡,就越能避免後續花費大量時間去糾正Agent在根本方向上的錯誤。

切記,大型任務(目前)還無法完全“放養”。你需要爲更復雜的任務預留出多輪反饋的時間,並準備好在最後階段親自動手進行一些精修。一個現實的期望是節省大約 80% 的時間,而非實現 100% 的自動化。你的專業知識,在驗證和確保最終交付質量上,依然無可替代。

與Agent共同制定實施方案

對於那些需求複雜或定義模糊的任務,與Agent合作,先共同制定一份詳盡的實施計劃(或產品需求文檔 PRD),會非常有效。一開始不清楚所有細節是很正常的。你可以先讓Agent幫你做一些探索性的工作,比如提問:“我們的認證系統是怎麼工作的?”或“這次改動可能會影響哪些服務?”你也可以讓它幫你找出相關的核心代碼,供你早期確認,確保方向正確。

某些Agent(如 Devin 和 Claude Code)提供了專門的“規劃模式”,專注於閱讀和理解現有代碼,而非立即動手修改。如果你希望在委派任務前做更充分的準備,也可以藉助像deepwiki.com或 Devin Search 這樣的專業代碼庫搜索工具,它們能幫你快速摸清代碼庫的底細。

爲複雜任務設立“檢查點”

對於多步驟、跨模塊、甚至跨代碼庫的複雜任務,一定要在流程中設置清晰的“檢查點”:

規劃 → 實現模塊A → 測試 → 修復 → 檢查點A審查 → 實現模塊B ...

在每個重要階段完成後,明確要求Agent暫停並等待你的確認。特別是對於那些橫跨數據庫、後端、前端等多層的複雜功能,利用這些檢查點來確保每一步的實現都符合你的預期,澄清疑問(例如:“向我解釋一下你實現的認證流程,並確認它是安全的”),並及早糾正偏差,避免問題滾雪球式地擴大。

例如:“我需要你實現一個功能,它會涉及數據庫、後端和多個前端界面。第一步,請先規劃好數據庫的表結構變更,完成後告訴我,我來執行數據庫遷移。” -> “很好。第二步,請實現後端的邏輯,並添加單元測試確保 XYZ 功能正常。完成後告訴我。” -> “最後,請在我們的 Web 和移動端界面上完成修改,調用新的後端接口。”

教會Agent如何自行驗證

在給出反饋時,不要只說“這個函數有問題”,而是要清晰地告訴它你是如何測試並發現這個問題的。這樣,Agent就能學會你的驗證方法,並在未來的任務中自行檢查。對於那些你會反覆用到的測試模式,最好將其固化到Agent的永久知識庫中(參見“擴展Agent的知識庫”)。

例如:在 Devin 中,我們會有意識地引導用戶將核心的測試流程保存到Agent的長期記憶裡,以簡化未來的交互。

在 AI 頻繁修改的代碼區域,用更全面的測試來“兜底”

目前,Agent還無法像人一樣,通過交互式操作來全面測試所有應用場景。因此,在那些主要由 AI 修改和維護的代碼區域,大幅提升單元測試和集成測試的覆蓋率,是你信心的保證。有了紮實的自動化測試作爲安全網,那些“看起來正確”的代碼才能被你放心地合併入庫。

例如:在讓我們團隊的 AI 將一段核心代碼從 Python 翻譯成 C++ 之前,我們首先花了些時間,極大地增強了那部分代碼的單元測試。

03高級篇:自動化與深度定製

打造自動化工作流:讓Agent主動工作

Agent響應事件的速度遠超人類,而且它們也遠比人類同事更樂於處理枯燥、重複的工作。

爲你最重複的工作創建自動化模板

每個工程團隊都免不了要處理一些重複性的常規任務,例如:

移除過期的功能開關(feature flag)

升級各類依賴庫

爲新功能的 PR 補充或修復測試

這些任務正是自動化Agent的完美用武之地。通常,可以由一位經驗豐富的工程師,爲這類場景創建一個健壯、可複用的提示詞模板(在 Devin 中,我們稱之爲“劇本”),之後便可一鍵觸發,反覆執行。

例如:我們的一位客戶,就設置了自動化流程:每當有新功能開發完成,系統會自動觸發三個獨立的Agent,分頭爲新代碼編寫單元測試。

實現智能化的代碼審查與規範執行

雖然市面上已有專門用於快速代碼審查的工具(如 Greptile 和 CodeRabbit [3]),但自主Agent可以提供一個更有趣的選項。由於它能深入理解代碼庫的功能,因此它提出的審查意見可能更加精準。

例如:在 Cognition 內部,我們維護了一個“常見代碼錯誤清單”,並將其保存在代碼庫中。我們沒有爲這些錯誤編寫傳統的 lint 規則(因爲很多場景難以用規則描述),而是配置了一個Agent,讓它在每個新的 PR 上運行,自動檢查是否存在這些常見錯誤。

接入告警與事件,實現自動響應

你還可以設置Agent,讓它在接收到特定事件(如線上告警)時自動觸發。例如,Devin 提供了便捷的 API,其他Agent也可以通過命令行(CLI)集成到你的自定義工作流中。這類設置如果與能夠接收第三方錯誤日誌的平臺結合,效果會特別好。

注意:在處理生產環境的線上問題時,當前 AI 的調試能力還比較有限。與其讓 AI 端到端地修復一個突發 bug,更實際的做法是讓它分析日誌和監控,然後給出一個“最可疑的根本原因列表”,由人類工程師來最終定奪。

定製化與性能提升:釋放Agent全部潛力

統一開發環境,確保流暢運行

一個不完整或不匹配的開發環境,是拖慢Agent效率的最大元兇。爲了讓Agent流暢工作,請確保它的運行環境與你團隊成員的開發環境完全一致,包括語言版本、包依賴、自動化檢查工具等。

例如,pre-commit這類工具應該預裝在Agent的環境中,而各類配置(如密鑰、語言版本、虛擬環境、瀏覽器登錄狀態)最好能通過.envrc或自定義.bashrc等方式自動加載。

例如:我們爲Agent的瀏覽器預設了已登錄的賬戶狀態,這不僅省去了每次手動登錄的麻煩,也讓端到端測試變得異常簡單。

構建自定義工具,爲Agent“賦能”

許多平臺都支持將Agent與外部工具連接(在 Devin 中,這類功能被稱爲 MCPs [4])。但很多人忽略了另一個簡單有效的方法:爲Agent編寫一些自定義的命令行(CLI)小工具。比如,你可以給它一個腳本,只需輸入工單 ID 就能拉取該工單的詳細信息。或者,爲它提供一個能一鍵重啓本地開發環境的工具,讓它在搞亂環境後能自行恢復。

例如:我們有個客戶的成功經驗值得借鑑:他們創建了一個 CLI 工具,這個工具在運行測試套件後,只顯示第一個失敗的測試用例及其詳細錯誤信息。這使得Agent能高度專注於解決當前這一個問題,極大地提升了它在處理長任務時的成功率和完成速度。

擴展Agent的知識庫,沉澱團隊規範

如果Agent反覆犯同樣的錯誤,這正是一個絕佳的機會,將你的反饋固化到它的永久知識庫中。在 Devin 裡,有專門的知識管理系統;其他產品也可能通過.rules或.md文件來讓Agent“學習”。不要只告訴它某個框架的使用方法,更要告訴它你項目的整體架構、不同類型任務的通用測試策略、常用命令的運行方式,以及你推薦使用的工具。

例如:我們爲Agent提供了一份詳細的“服務路由添加指南”,其中包含了在添加一條新路由時,需要在前端和後端哪些位置添加樣板代碼的全部信息。現在,這類任務已可以被輕鬆地委派給 AI。

04實踐考量:規避風險與擁抱未來

瞭解自主Agent的侷限性

調試能力有限

很多漏洞報告看起來簡單,但其根本原因的排查,往往需要深入數據庫、分析日誌,並具備比當前 AI 更強的推理能力。如果想用 AI 輔助調試,我們建議讓它分析信息後,提供一個“可能的根本原因列表”,而不是讓它嘗試自己端到端地解決問題。一旦人類專家確定了真正的原因,Agent在實現具體修復方案時依然能派上大用場。

精細的視覺還原能力較弱

總體而言,目前的模型還無法很好地處理精細的視覺任務,比如嚴格按照設計稿或 Figma 效果圖來還原 UI。它們更擅長處理那些可以用代碼來描述的視覺需求(例如,直接提供從 Figma 導出的代碼)。如果你希望Agent能遵循你的視覺風格,最好的辦法是建立一個包含可複用組件的、完善的設計系統。

存在知識截止日期

當你想讓Agent使用一個新發布的庫或框架時,必須明確地把最新的官方文檔鏈接扔給它。否則,受限於其預訓練模型的知識截止日期,它很可能會沿用舊的、已被棄用的 API 或模式。一個好的Agent能夠通過閱讀新文檔來克服這個問題,但你必須主動提醒它(記住,它自己並不知道那個庫已經發布了新版本)。

管理時間與及時止損

使用Agent並非總能成功。在 2025 年,Agent的輸出結果仍有相當大的不確定性。你的任務之一,就是學會在提高成功率的同時,如何避免在無效嘗試上浪費時間與金錢。

學會及早止損

新手使用Agent時最常犯的錯誤,就是過於執着,即使Agent的工作已經明顯偏離軌道,仍試圖通過不斷追加指令來“拯救”它。如果你發現自己開始產生“它根本不聽我的”或“這傢伙在原地兜圈子”這類想法時,果斷中止對話或手動接管纔是明智之舉。繼續發送消息,往往只說明任務本身的複雜度超出了Agent當前的能力,而非簡單的指令失誤。

多樣化嘗試,找到最佳應用場景

如果你剛開始使用Agent,我們建議你先廣泛地嘗試各種不同類型和複雜度的任務。一旦發現Agent在某類任務上表現得心應手,就加倍利用它;反之,如果某類任務它總是搞砸,就果斷放棄。不必強求Agent在每一次嘗試中都取得成功。

進展停滯不前?不如推倒重來

與和人類協作不同,對於Agent,“推倒重來”往往是更高效的選擇。如果你給Agent一個任務,它在處理你的反饋和修正方向時顯得非常吃力,那麼直接開啓一個全新的會話,把所有修正後的完整指令一次性給它,通常能更快地獲得成功。Agent從零開始生成正確代碼的能力,遠強於它修復一個已被自己搞得一團糟的環境的能力。

安全與權限管理

爲Agent創建專屬賬戶

爲Agent準備一個專用的、可隨時丟棄的郵箱,用於安全地測試各類網站註冊。如果Agent需要訪問雲資源,請爲其創建擁有最小必要權限的自定義 IAM 角色。

提供隔離的開發/預發佈環境

理想情況下,Agent應該使用與你團隊工程師完全一致的測試環境。我們強烈建議,不要給予Agent任何訪問生產環境的權限。如果使用遠程Agent服務,你可以在其遠程機器上運行一個完全隔離的測試環境。

使用只讀 API 密鑰

在任何可能的情況下,都只爲Agent提供只讀權限的 API 密鑰。我們發現,對於任何需要與外部服務進行寫操作的腳本,由人類來手動執行最後一步,仍然是更穩妥的做法。

擁抱未來的變革

我們堅信,軟件工程師的價值不會消失。即使編程Agent日益強大,深厚的技術功底和對業務代碼庫的透徹理解,依然是不可替代的核心競爭力。在今天,真正掌握你的項目、系統和代碼,比以往任何時候都更加重要。

我們團隊要求工程師能夠同時監督多個系統,並在此過程中保持深刻的洞察力與周全的判斷力。當自動化極大提升了你的工作效率時,同時處理多項任務將從一種選擇,變成一項必備技能。希望我們的經驗,能幫助你和你的團隊在這個持續變化的軟件開發新時代中,找準定位,不斷成長。

轉載原創文章請添加微信:founderparker