我喜歡分析我開始接手的程式碼庫,或者我擱置了幾個月的程式碼庫。我會讓我的程式碼助手(例如 Copilot CLI)執行這樣的指令:「分析以下程式碼庫,並向我報告改進之處和可能存在的 bug。」 這樣的指令足夠寬泛,既可能收到一些糟糕的回饋,也可能獲得一些有趣的見解。
我上週在一個程式碼庫上做了這個操作。 Copilot 傳回了一個包含十幾個專案的清單。我讓它為每個專案建立一個 GitHub issue,並加入相關的標籤,包括優先順序。
在三個不同的問題中,都提到某個函式庫或 GitHub Action 版本不存在。這完全是錯誤的。我使用的版本比訓練資料所用的版本更新。已關閉,不再修復。
下一步是分別獨立和使用 Copilot 對剩餘的每個專案進行分類。有些專案感覺有點可疑,有些則感覺很可靠。最終,我關閉了大約一半的專案,剩下四個。這四個專案都相當不錯。為了盡可能有效率地處理它們,我決定使用子代理程式。
新手如果決定使用子代理,很可能會浪費大量時間。由於子代理是自主運作的,你需要盡可能地向它們提供所有訊息,以便它們無需人工幹預就能選擇最佳行動方案。你必須獨立地評估每一個問題。雖然理論上你仍然可以在子代理執行時與其交互,但這會大大降低它們的價值。
然而,這項工作可以在先前的分類步驟中完成。如果您已掌握足夠的資料來接受或關閉該項,則很可能您已深入挖掘以獲取足夠的細節。有關更多詳細訊息,請參閱“如何使用 Claude Code” ,尤其是“註釋週期”部分。
這是我為觸發代理程式而編寫的提示訊息,格式是為你準備的,不是給代理程式的。歡迎你改進,也請隨時給我回饋。
針對每個問題 X、Y 和 Z,我希望你啟動一個子代理,該子代理執行以下操作:
>
使用
gh工具取得問題閱讀其描述
使用
git worktree指令建立一個專用分支實現該功能或修復該問題
如果該功能/問題需要,請圍繞它建立一個或多個測試案例。
所有測試必須通過才能繼續。
使用語意提交進行提交
將其推送到 GitHub 的獨立分支上。
使用下列命名模式,基於此分支建立一個 PR
兩點值得注意。
首先,Copilot 預設會連接到 GitHub MCP 伺服器,但僅以唯讀模式連線。如果您想要建立(或更新)問題,我的建議是使用gh 。在終端機中使用 gh 進行身份驗證,並在同一個終端中執行 Copilot CLI。這樣 Copilot 就能以所有權限與 GitHub 互動。
然後, git branch都在同一個資料夾下運作。這樣一來,每個分支都會互相干擾。 Git工作樹巧妙地解決了這個問題。簡而言之,該命令允許將分支映射到檔案系統上的一個專用資料夾:
一個 Git 倉庫可以支援多個工作樹,允許你同時檢出多個分支。使用
git worktree add一個新的工作樹會與倉庫關聯起來,同時也會加入一些元資料,用於區分該工作樹與同一倉庫中的其他工作樹。這個工作樹及其元資料被稱為「工作樹」。
有趣的是:我早就知道工作樹,但我從來沒有實際用過它們。
使用子代理程式最明顯的優勢在於並行處理。雖然你必須按順序搜尋每個專案,但子代理可以並行執行。然而,依我之見,其主要優勢在於上下文隔離。
子代理程式是一大優勢:每個子代理程式都從一個全新的上下文開始。這樣就不會用無關資料污染主上下文。
再次提醒,上下文是指代理人將採取行動的一切依據:
系統提示,例如:「您是一位擁有 20 多年經驗的資深 Java 開發人員和架構師」。
使用者提示,例如:“盡可能重構此類以使用不可變值”
RAG提供的附加資訊
之前的訊息,即對話
可用工具
工具的潛在輸出
ETC。
我們很容易把所有東西都放在上下文中。然而,上下文容量有限,以令牌(token)為單位。一個精心建構的上下文應該包含當前任務所需的所有資料,而且不多不少。身為工程師,我們追求的是效率,而不是完美。對於每一個不相關的任務,我們都應該建立一個新的上下文。有趣的是,Claude Code 最近開始在每次請求後提供上下文優化功能。是否啟用此功能取決於您自己。
我們現在管理的是一支代理團隊,而不是一支初級開發人員團隊。情況在某種程度上是類似的。你必須非常清楚自己想要什麼。你必須在前期進行詳細的設計。你委託給的人可能不會提出問題,最終可能會把事情搞砸。你需要仔細審查結果。
不過,主要有兩點不同。首先,幾分鐘就能看到成果,而不是幾天。其次,我們並不是在培養下一代開發者。
這在任何公司層面都說得通:既然人工智慧可以取代初級開發人員,為什麼還要培養他們?市場資料已經印證了這個趨勢。但資深開發人員並非天生,他們都是一步步從初級開發人員成長起來的。對我來說,這並不會改變什麼。從長遠來看,幾年後,當用戶公司意識到自己對供應商的依賴程度以及資深開發人員短缺的問題時,他們一定會為自己的短視而後悔不已。
更進一步:
原文發表於A Java Geek ,2026 年 4 月 5日。
原文出處:https://dev.to/nfrankel/experimenting-with-ai-subagents-pc7