🤖 SWE-Agent
AI 驅動的軟體工程多智能體系統介紹
🎯 開發動機與解決痛點
在現代軟體開發中,開發者經常面臨以下挑戰:
核心痛點:
- 程式碼理解困難:面對大型專案時,理解現有程式碼架構和邏輯關係耗時費力
- 實作計畫不完整:從需求到程式碼實作之間缺乏結構化的規劃流程
- 重複性任務:大量時間花費在程式碼重構、除錯和文件生成等重複工作
- 協作效率低下:多人開發時缺乏智慧化的程式碼分析和建議工具
- 假設驗證困難:缺乏系統性的方法來驗證實作假設和技術決策
SWE-Agent 透過假設驅動的研究方法和原子性任務執行解決這些問題。系統採用兩階段工作流程:架構師智能體負責假設生成、驗證和計畫制定,開發者智能體負責精確的程式碼實作,確保每個修改都是可追蹤和可驗證的。
🛠️ 技術框架與設計模式
🔗 LangGraph
多智能體工作流程編排,提供可靠的狀態管理和任務協調機制
🧠 Anthropic Claude
Claude Sonnet 4 提供強大的程式碼理解和生成能力
🌳 Tree-sitter
強健的程式碼解析和語法分析,支援多程式語言
📝 Pydantic
型別安全的資料驗證和序列化,確保資料一致性
核心設計模式
1. Strategy Pattern(策略模式)
不同的智能體採用不同的解決策略,架構師智能體專注於研究和規劃,開發者智能體專注於程式碼實作。
不同的智能體採用不同的解決策略,架構師智能體專注於研究和規劃,開發者智能體專注於程式碼實作。
2. State Machine Pattern(狀態機模式)
透過 Pydantic 模型管理複雜的工作流程狀態,確保狀態轉換的可靠性。
透過 Pydantic 模型管理複雜的工作流程狀態,確保狀態轉換的可靠性。
3. Observer Pattern(觀察者模式)
透過 LangGraph 的訊息機制實作智能體間的狀態同步和事件通知。
透過 LangGraph 的訊息機制實作智能體間的狀態同步和事件通知。
4. Template Method Pattern(範本方法模式)
提示詞系統採用範本方法模式,支援 Markdown 格式的結構化提示詞定義。
提示詞系統採用範本方法模式,支援 Markdown 格式的結構化提示詞定義。
# 頂層工作流程狀態管理
class AgentState(BaseModel):
implementation_research_scratchpad: Annotated[
list[AnyMessage],
add_messages
]
implementation_plan: Optional[ImplementationPlan] = Field(
None,
description="待執行的實作計畫"
)
# 架構師智能體狀態管理
class SoftwareArchitectState(BaseModel):
research_next_step: Optional[str] = Field(
None,
description="下一步研究方向"
)
implementation_plan: Optional[ImplementationPlan] = Field(
None,
description="產生的實作計畫"
)
implementation_research_scratchpad: Annotated[
list[AnyMessage],
add_messages
] = Field([], description="研究過程記錄")
is_valid_research_step: Optional[bool] = Field(
None,
description="研究步驟是否有效"
)
# 開發者智能體狀態管理
class SoftwareDeveloperState(BaseModel):
implementation_plan: Optional[ImplementationPlan] = Field(
None,
description="從架構師接收的實作計畫"
)
current_task_idx: Optional[int] = Field(
0,
description="目前執行的任務索引"
)
current_atomic_task_idx: Optional[int] = Field(
0,
description="目前執行的原子任務索引"
)
diffs: Optional[Diffs] = Field(
None,
description="產生的程式碼差異"
)
atomic_implementation_research: Annotated[
list[AnyMessage],
add_messages_with_clear
]
codebase_structure: Optional[str] = Field(
None,
description="程式碼庫結構快照"
)
current_file_content: Optional[str] = Field(
None,
description="目前編輯檔案的內容"
)
# 原子性任務定義
class AtomicTask(BaseModel):
atomic_task: str = Field(
description="具體的程式碼修改指令"
)
additional_context: str = Field(
"",
description="研究背景與額外上下文"
)
# 實作任務定義
class ImplementationTask(BaseModel):
file_path: str = Field(
description="目標檔案路徑"
)
logical_task: str = Field(
description="邏輯任務描述"
)
atomic_tasks: List[AtomicTask] = Field(
description="細分的原子任務列表"
)
💡 應用情境
🚀 功能開發
根據高層次需求自動分析現有程式碼架構,生成詳細實作計畫並執行程式碼變更。適合快速原型開發和新功能實作。
🐛 除錯修復
智慧分析問題根因,自動定位相關程式碼區塊,生成修復方案並應用變更。大幅縮短除錯時間。
♻️ 程式碼重構
分析程式碼結構和模式,提出重構建議並自動執行。在保持功能不變的前提下改善程式碼品質。
📚 文件生成
自動分析程式碼邏輯和 API 介面,生成高品質的技術文件和程式碼註解。
🧪 測試開發
根據現有程式碼自動生成單元測試、整合測試和功能測試,提高程式碼覆蓋率。
🏗️ 軟體架構圖
系統採用兩階段工作流程:架構師智能體負責研究和規劃,開發者智能體負責執行和實作,透過結構化狀態管理確保資料一致性。
❓ 常見問題 Q&A
Q: SWE-Agent 目前可以使用哪些 LLM 供應商?
🎯 目前主要支援
Anthropic Claude(專門最佳化)
• Claude Sonnet 4:SWE-Agent 的預設和主要模型
• 所有核心組件都使用:
• 需要設定
• Claude Sonnet 4:SWE-Agent 的預設和主要模型
• 所有核心組件都使用:
claude-sonnet-4-20250514
• 需要設定
ANTHROPIC_API_KEY
環境變數
🔧 理論上支援(透過 LangGraph/LangChain)
由於 SWE-Agent 建立在 LangGraph 之上,理論上可以支援所有 LangGraph 相容的供應商:
OpenAI
GPT-4, GPT-4 Turbo, GPT-3.5
Google Gemini
Gemini Pro, Gemini Ultra
Microsoft Azure
Azure OpenAI 部署模型
AWS Bedrock
Claude 及其他 Bedrock 模型
其他供應商
Mistral, Cohere, Fireworks, Together, Groq
⚠️ 重要限制
工具呼叫支援需求:
• SWE-Agent 大量使用工具呼叫(Tool Calling)功能
• 只有支援工具呼叫的模型才能完整運作
• 包括:程式碼搜尋、檔案操作、程式碼分析等工具
目前實際設定:
• 原始碼硬編碼使用 Claude Sonnet 4
• 要更換其他 LLM 需要修改原始碼
• SWE-Agent 大量使用工具呼叫(Tool Calling)功能
• 只有支援工具呼叫的模型才能完整運作
• 包括:程式碼搜尋、檔案操作、程式碼分析等工具
目前實際設定:
• 原始碼硬編碼使用 Claude Sonnet 4
• 要更換其他 LLM 需要修改原始碼
🔄 如何更換 LLM
# 在 agent/architect/graph.py 和 agent/developer/graph.py 中
# 將這行:
ChatAnthropic(model="claude-sonnet-4-20250514")
# 改為其他模型,例如:
init_chat_model("openai:gpt-4")
# 或
init_chat_model("anthropic:claude-3-5-sonnet-latest")
💡 建議
- 目前最佳選擇:繼續使用 Claude Sonnet 4,因為系統專為此模型最佳化
- 實驗性使用:可以嘗試 GPT-4 或 Claude 3.5 Sonnet
- 未來發展:專案可能會加入更靈活的模型配置選項
Q: 如何開始使用 SWE-Agent?
📋 前置需求
• Python 3.12+
• uv(Python 套件管理器)
• Anthropic API 金鑰(Claude Sonnet 4)
• uv(Python 套件管理器)
• Anthropic API 金鑰(Claude Sonnet 4)
🚀 快速開始步驟
# 1. 複製儲存庫
git clone https://github.com/langtalks/swe-agent.git
cd swe-agent
# 2. 設定環境
uv sync
cp .env.example .env
# 在 .env 中添加您的 Anthropic API 金鑰
# 3. 啟動系統
source .venv/bin/activate
langgraph dev
🏗️ 專案結構
agent/
├── architect/ # 規劃與研究智能體
│ ├── graph.py # 主要架構師工作流程
│ ├── state.py # 狀態定義
│ └── prompts/ # 提示詞範本
├── developer/ # 實作智能體
│ ├── graph.py # 主要開發者工作流程
│ ├── state.py # 狀態定義
│ └── prompts/ # 提示詞範本
├── common/ # 共享實體與狀態
│ └── entities.py # Pydantic 模型
└── tools/ # 檔案操作與搜尋工具
├── search.py # 程式碼搜尋工具
├── codemap.py # 程式碼分析工具
└── write.py # 檔案操作工具
workspace_repo/ # 目標程式碼庫(用於修改)
Q: SWE-Agent 與最近推出的 AWS Kiro 有什麼差別?
🏢 基本定位差異
SWE-Agent:
• 開發商:LangTalks 開源社群
• 定位:研究導向的多智能體系統
• 狀態:Alpha 開源專案
• 授權:MIT 開源授權
Kiro:
• 開發商:AWS 官方產品
• 定位:產品化的 AI IDE
• 狀態:AWS 官方產品預覽
• 授權:AWS 商業產品
• 開發商:LangTalks 開源社群
• 定位:研究導向的多智能體系統
• 狀態:Alpha 開源專案
• 授權:MIT 開源授權
Kiro:
• 開發商:AWS 官方產品
• 定位:產品化的 AI IDE
• 狀態:AWS 官方產品預覽
• 授權:AWS 商業產品
🏗️ 核心架構差異
SWE-Agent(雙智能體)
🧠 架構師智能體:假設驗證研究
⚡ 開發者智能體:原子性實作
🔄 假設驅動研究方法
📝 最小化可追蹤修改
🧠 架構師智能體:假設驗證研究
⚡ 開發者智能體:原子性實作
🔄 假設驅動研究方法
📝 最小化可追蹤修改
Kiro(規格驅動)
📋 三核心文件:requirements、design、tasks
🎯 Agent Hooks:事件驅動自動化
🔧 Agent Steering:行為指導
🎨 Multimodal Chat:多種輸入
📋 三核心文件:requirements、design、tasks
🎯 Agent Hooks:事件驅動自動化
🔧 Agent Steering:行為指導
🎨 Multimodal Chat:多種輸入
💻 使用體驗差異
SWE-Agent:
• 命令列啟動:
• 需要技術背景
• API 或命令列互動
Kiro:
• 完整 IDE 體驗(類似 VS Code)
• 圖形化介面,支援滑鼠操作
• 內建聊天介面和視覺化工作流程
• 命令列啟動:
langgraph dev
• 需要技術背景
• API 或命令列互動
Kiro:
• 完整 IDE 體驗(類似 VS Code)
• 圖形化介面,支援滑鼠操作
• 內建聊天介面和視覺化工作流程
💰 商業模式差異
SWE-Agent
✅ 完全免費開源
✅ MIT 授權,可商用
❌ 需要自行維護和支援
✅ 完全免費開源
✅ MIT 授權,可商用
❌ 需要自行維護和支援
Kiro
🆓 預覽期間免費
💰 未來定價:免費版 50 次/月
💰 Pro 版 $19/月 1000 次
💰 Pro+ 版 $39/月 3000 次
✅ AWS 官方支援
🆓 預覽期間免費
💰 未來定價:免費版 50 次/月
💰 Pro 版 $19/月 1000 次
💰 Pro+ 版 $39/月 3000 次
✅ AWS 官方支援
🎯 適用場景建議
選擇 SWE-Agent 如果您:
🔬 研究和實驗性專案
🛠️ 需要深度客製化
📚 學習 AI 智能體架構
🔧 想要完全控制工作流程
🔬 研究和實驗性專案
🛠️ 需要深度客製化
📚 學習 AI 智能體架構
🔧 想要完全控制工作流程
選擇 Kiro 如果您:
🏢 企業級開發團隊
🚀 快速原型到產品
👥 需要團隊協作標準化
💼 偏好商業支援和穩定性
🏢 企業級開發團隊
🚀 快速原型到產品
👥 需要團隊協作標準化
💼 偏好商業支援和穩定性
🔍 核心哲學差異
SWE-Agent:
🧠 研究導向:強調假設驗證和科學方法
🔬 透明性:每個決策都有完整研究記錄
⚗️ 實驗性:鼓勵探索和創新
Kiro:
📋 產品導向:強調從原型到產品的完整流程
🎯 效率性:優化開發者體驗和生產力
🏢 企業級:注重穩定性和可維護性
🧠 研究導向:強調假設驗證和科學方法
🔬 透明性:每個決策都有完整研究記錄
⚗️ 實驗性:鼓勵探索和創新
Kiro:
📋 產品導向:強調從原型到產品的完整流程
🎯 效率性:優化開發者體驗和生產力
🏢 企業級:注重穩定性和可維護性
🔮 未來展望
SWE-Agent 目前處於 Alpha 階段,團隊正積極開發以下功能:
🧪 測試智能體
專門負責單元測試、功能測試和測試案例生成的 AI 智能體
🔧 錯誤修復智能體
專業偵測、分析和修復程式碼錯誤的智能體系統
📊 產品經理智能體
高層次規劃和需求分析的 AI 智能體
🌍 多語言支援
擴展至 JavaScript、TypeScript、Java、Go 等程式語言