🎯 開發動機與解決痛點
在現代軟體開發中,程式碼庫的複雜度不斷增長,開發者經常面臨理解大型專案架構、快速上手新專案、以及進行有效程式碼審查的挑戰。Potpie AI 作為一個創新的開源平台,專門為這些痛點提供了系統性的解決方案。
核心痛點:
新進開發者難以快速理解複雜程式碼庫的架構和業務邏輯
缺乏智慧化的程式碼分析工具來輔助偵錯和測試
團隊協作中對程式碼變更影響範圍的評估困難
重複性的開發任務(如單元測試、整合測試)缺乏自動化支援
多程式語言專案的統一分析和知識管理挑戰
Potpie AI 透過建構完整的程式碼知識圖譜,結合專業的 AI 代理系統,為開發團隊提供了從程式碼理解、自動化測試到智慧偵錯的全方位解決方案。相較於傳統的程式碼分析工具,Potpie 能夠理解程式碼間的複雜關係,並透過對話式介面提供個人化的開發協助。
💡 應用情境
🚀 新人快速上手
當新進開發者加入團隊時,可透過 Codebase Q&A Agent 快速了解專案架構、設定開發環境、理解核心業務邏輯,大幅縮短學習曲線。系統能回答如「這個功能是如何實作的?」、「如何運行測試?」等具體問題。
🔍 智慧程式碼審查
Code Changes Agent 能自動分析程式碼變更的影響範圍,識別可能受影響的 API 和模組,提供功能性審查建議。特別適用於大型專案的 Pull Request 審查流程。
🧪 自動化測試生成
Unit Test Agent 和 Integration Test Agent 能根據程式碼結構自動生成測試計畫和測試程式碼,提升測試覆蓋率,確保程式碼品質。
🛠️ 低階設計協助
LLD Agent 能根據功能需求生成詳細的實作計畫,包括架構設計、模組劃分、介面定義等,為開發提供清晰的技術方向。
🐛 智慧除錯支援
Debugging Agent 能分析錯誤堆疊追蹤,結合程式碼知識圖譜提供具體的除錯步驟和解決建議,特別適合複雜的系統性問題。
🛠️ 技術框架與設計模式
🚀 FastAPI 後端框架
採用 FastAPI 0.115.6 作為核心後端框架,提供高效能的異步 API 服務,支援自動 API 文件生成和型別驗證。
🧠 Neo4j 知識圖譜
使用 Neo4j 圖形資料庫建構程式碼知識圖譜,能夠表達複雜的程式碼關係和依賴結構,支援高效的圖形查詢。
🤖 多 AI 提供者整合
透過 LiteLLM 整合多種 AI 提供者(OpenAI、Anthropic、Ollama 等),提供靈活的模型選擇和負載均衡。
🔧 Tree-sitter 解析器
使用 Tree-sitter 進行多程式語言的語法解析,支援 Python、JavaScript、TypeScript、Go、Rust 等主流程式語言。
⚡ Celery 任務佇列
採用 Celery 搭配 Redis 處理程式碼解析等耗時任務,確保 API 響應速度和系統穩定性。
🔄 CrewAI 代理框架
整合 CrewAI 框架構建專業化的 AI 代理系統,每個代理都有明確的角色定位和專業領域。
核心設計模式
🏭 Abstract Factory Pattern - 多提供者架構
在 LLM 提供者管理中使用抽象工廠模式,統一不同 AI 提供者的介面,支援動態切換和負載均衡。
🎯 Strategy Pattern - 代理選擇策略
SupervisorAgent 使用策略模式,根據使用者查詢類型自動選擇最適合的專業代理進行處理。
🔧 Factory Method Pattern - 代理實例化
每個系統代理都透過工廠方法模式進行建立,確保代理配置的一致性和可擴展性。
📡 Observer Pattern - 事件通知
在解析過程中使用觀察者模式,當解析狀態變更時通知相關元件更新界面和記錄日誌。
設計模式類別圖
Potpie AI 核心設計模式 - Abstract Factory + Strategy + Observer Pattern
<<abstract>>
ProviderService
+ get_llm(provider_type)
+ create_model(config)
OpenAIProvider
+ get_llm(OPENAI)
+ create_openai_model()
AnthropicProvider
+ get_llm(ANTHROPIC)
+ create_anthropic_model()
<<interface>>
ChatAgent
+ run(context: ChatContext)
QnAAgent
+ run(ctx: ChatContext)
DebugAgent
+ run(ctx: ChatContext)
SupervisorAgent
- agent_map: Dict[str, Agent]
+ select_agent(query: str)
uses
ParsingService
- observers: List
+ add_observer(obs)
+ notify_status_change()
ProjectService
+ update_status(status)
+ handle_completion()
notifies
UML 關係圖例
繼承 (Inheritance)
實作 (Implementation)
關聯 (Association)
聚合 (Aggregation)
此圖展示了 Potpie AI 中使用的核心設計模式,體現了可擴展性和模組化的架構設計
UML 類別圖展示了 Potpie AI 的三個核心設計模式:Abstract Factory 模式用於管理多種 LLM 提供者,Strategy 模式用於動態選擇專業代理,Observer 模式用於解析狀態的通知機制。
🔧 核心業務邏輯實作
class AgentsService :
def __init__ (
self,
db,
llm_provider: ProviderService,
prompt_provider: PromptService,
tools_provider: ToolService,
):
self.db = db
self.prompt_service = PromptService(db)
self.system_agents = self._system_agents(
llm_provider, prompt_provider, tools_provider
)
self.supervisor_agent = SupervisorAgent(llm_provider, self.system_agents)
self.custom_agent_service = CustomAgentService(self.db)
def _system_agents (self, llm_provider, prompt_provider, tools_provider):
return {
"codebase_qna_agent" : AgentWithInfo(
id="codebase_qna_agent" ,
name="Codebase Q&A Agent" ,
description="專門回答程式碼庫問題的代理" ,
agent=qna_agent.QnAAgent(llm_provider, tools_provider, prompt_provider),
),
}
這段程式碼展示了 Potpie AI 的核心代理服務架構,使用依賴注入模式和工廠方法模式來創建和管理各種專業化的 AI 代理。
🎨 策略模式應用
class SupervisorAgent (ChatAgent):
def __init__ (
self,
llm_provider: ProviderService,
agents: Dict[str, AgentWithInfo],
):
self.agent = AutoRouterAgent(llm_provider, agents=agents)
async def run (self, ctx: ChatContext) -> ChatAgentResponse:
return await self.agent.run(ctx)
async def run_stream (self, ctx: ChatContext):
async for chunk in self.agent.run_stream(ctx):
yield chunk
此處使用了策略模式,SupervisorAgent 作為上下文,AutoRouterAgent 負責根據不同的查詢類型選擇最適合的專業代理進行處理。
⚡ Abstract Factory 模式實作
class ProviderService :
def get_llm (self, provider_type: AgentProvider):
"""根據提供者類型返回對應的 LLM 實例"""
if provider_type == AgentProvider.CREWAI:
return self._create_crewai_llm()
elif provider_type == AgentProvider.LANGCHAIN:
return self._create_langchain_llm()
elif provider_type == AgentProvider.PYDANTIC_AI:
return self._create_pydantic_ai_model()
def _create_crewai_llm (self):
return LLM(
model=self.llm_config.model_name,
api_key=self.llm_config.api_key,
base_url=self.llm_config.base_url
)
這個實作透過抽象工廠模式統一了不同 AI 提供者的介面,實現了 CrewAI、LangChain、Pydantic AI 等多種框架的無縫整合。
🏗️ 軟體架構圖與流程圖
系統架構圖
React Frontend
FastAPI Backend
AI Agents
知識圖譜服務
Multi-LLM
Neo4j
PostgreSQL
Celery Worker
Tree-sitter
Redis
Potpie AI 系統架構
系統採用微服務架構,前端使用 React,後端使用 FastAPI,核心的 AI 代理系統整合多種 LLM 提供者,透過 Neo4j 建構程式碼知識圖譜,使用 Celery 處理耗時的解析任務。
使用流程序列圖
開發者
Web UI
API Gateway
AI Agents
知識圖譜
1. 提交程式碼分析請求
2. POST /api/v1/conversations/message
3. 路由至適當的 Agent
4. 查詢程式碼知識圖
5. 回傳相關程式碼上下文
LLM 推理
6. 回傳分析結果
7. 格式化回應訊息
8. 顯示分析結果
錯誤處理流程
錯誤:Agent 處理失敗
回傳錯誤訊息
顯示錯誤提示
流程說明
• 實線箭頭:同步呼叫
• 虛線箭頭:回傳結果
• 黃色方塊:處理過程
• 紅色線:錯誤情況
此圖展示了程式碼分析
請求的完整處理流程
序列圖展示了典型的程式碼分析請求流程:開發者透過 Web UI 提交請求,API Gateway 路由至適當的 AI Agent,Agent 查詢知識圖譜獲取程式碼上下文,經 LLM 推理後回傳分析結果。
❓ 常見問題 Q&A
❓ Potpie AI 與其他程式碼分析工具的差異在哪裡?
核心優勢
知識圖譜驅動: Potpie AI 使用 Neo4j 建構完整的程式碼知識圖譜,能理解程式碼間的複雜關係,而不僅僅是語法分析。
專業化 AI 代理: 每個代理都專精於特定任務(如偵錯、測試、程式碼審查),提供更精準的分析結果。
多 LLM 整合: 支援 OpenAI、Anthropic、Ollama 等多種 AI 提供者,可根據需求選擇最適合的模型。
🔧 如何在企業環境中部署 Potpie AI?
部署選項
本地部署: 使用 Docker Compose 可快速建立完整的開發環境,包含所有必要的服務(PostgreSQL、Neo4j、Redis)。
容器化部署: 提供完整的 Dockerfile 和 supervisord 配置,支援 Kubernetes 等容器編排平台。
安全考量: 生產環境建議啟用 Firebase 認證,配置適當的網路安全設定,並定期更新 API 密鑰。
⚡ 系統效能如何?支援多大的程式碼庫?
效能特性
異步處理: 使用 Celery 進行耗時的程式碼解析,不影響 API 回應速度。
快取策略: Redis 快取頻繁查詢的結果,提升查詢效能。
可擴展性: 支援水平擴展,可部署多個 Celery Worker 處理大型程式碼庫。
資源需求: 建議 Neo4j 至少 4GB 記憶體,大型專案可能需要更多資源用於知識圖譜儲存。
🛠️ 如何客製化和擴展 Potpie AI?
客製化選項
自訂代理: 可透過 API 建立客製化的 AI 代理,定義專屬的系統指令和任務流程。
工具擴展: 在 app/modules/intelligence/tools 目錄中新增客製化工具,擴展系統功能。
多語言支援: 透過新增 tree-sitter 查詢檔案,可支援更多程式語言的解析。
🔗 Potpie AI 是否可以與 GitHub 整合?如何與企業的 GitHub 環境配合使用?
完整的 GitHub 整合功能
原生 GitHub 支援: Potpie AI 已內建完整的 GitHub 整合功能,支援 GitHub OAuth 認證、GitHub App 權限管理,以及對私有和公開儲存庫的完整存取能力。
企業級部署: 透過 GitHub App 架構,企業可以安全地將 Potpie AI 整合到現有的 GitHub 工作流程中,支援組織層級的權限控制和存取管理。
AI 代理工具整合: 內建多項 GitHub 操作工具,包括分支建立、Pull Request 管理、程式碼審查、問題追蹤等,AI 代理可直接操作 GitHub 資源。
具體整合功能
儲存庫管理: 支援使用者和組織儲存庫列表、分支管理、檔案內容存取、專案結構分析等完整的儲存庫操作。
Pull Request 工作流程: AI 代理可以建立分支、更新檔案、提交 Pull Request、新增程式碼審查評論,以及管理 PR 的完整生命週期。
程式碼審查自動化: 透過專門的 GitHub 工具,AI 代理可以自動分析 PR 差異、提供程式碼建議、新增多行評論,並執行完整的程式碼審查流程。
雙重認證架構: 結合 GitHub App 和 OAuth 認證,確保企業級安全性和使用者權限管理的平衡。
企業部署建議
環境變數配置: 需要設定 GITHUB_APP_ID、GITHUB_PRIVATE_KEY、GH_TOKEN_LIST 等環境變數,建議使用 GitHub App 而非個人存取權杖以獲得更好的安全性。
擴展性支援: 架構支援 Token Pool 管理和速率限制處理,可處理大規模企業環境的 API 呼叫需求。
開發與生產模式: 支援本地開發模式(可處理本地儲存庫)和生產模式(完整 GitHub 整合),適合不同的部署需求。
🔮 未來展望
Potpie AI 作為開源專案,持續發展中。未來的發展方向將專注於提升 AI 代理的智慧程度、擴展支援的程式語言、以及增強企業級功能。
🌐 多語言擴展
計畫支援更多程式語言(如 C++、C#、PHP、Ruby),並優化對混合語言專案的分析能力。
🧠 智慧化升級
整合更先進的 AI 模型,提升程式碼理解和生成能力,支援更複雂的程式碼重構和優化建議。
🔗 IDE 深度整合
擴展 VSCode 擴展功能,支援更多主流 IDE(IntelliJ IDEA、Vim、Emacs),提供無縫的開發體驗。
📊 團隊協作功能
開發團隊儀表板、程式碼品質追蹤、知識共享平台等企業級協作功能。
🔒 安全性增強
加強程式碼隱私保護、企業級權限管理、審計日誌等安全功能。
⚡ 效能優化
優化知識圖譜建構速度、增強快取策略、支援增量解析等效能提升。