What is Serena?
在處理複雜的程式碼庫時,往往需要應付錯綜複雜的結構和相依性。雖然 AI 程式碼輔助工具能提供協助,但許多工具都帶有高昂的訂閱費、API 費用,或是在不深入了解程式碼語義的情況下運作。Serena 提供了一種不同的方法:它是一個功能強大的程式碼代理,可與您偏好的大型語言模型 (LLM) 整合,直接且智能地在您的專案原始碼中工作,而且完全免費。
您可以將 Serena 視為 LLM 的推理能力與實際程式碼需求之間的重要橋樑。它為 Claude 或開放權重的替代模型配備了必要的工具,以進行語義程式碼檢索和精確編輯,使其功能更像是一位使用 IDE 進階功能的資深開發人員。
您會使用的主要功能
🆓 免費運作: 使用模型上下文協議 (MCP) 將 Serena 與 Claude Desktop 等客戶端(甚至免費層級)整合,或使用 Agno 框架連接到免費模型(透過 Ollama、Together 等),從而消除經常性的 API 費用或訂閱費。
🧠 利用語義程式碼智慧: Serena 使用語言伺服器協議 (LSP),這是為 IDE 提供支援的相同技術,以獲得對程式碼的符號理解。這表示它可以準確地:
尋找符號定義(函數、類別、變數)。
識別符號在整個專案中的引用位置。
根據含義(而不僅僅是文字匹配)導航複雜的程式碼結構。
✍️ 執行精確的程式碼編輯: 超越簡單的文字插入。Serena 使 LLM 能夠根據程式碼結構進行有針對性的變更:
在特定符號之前或之後插入程式碼。
準確地替換整個函數或方法的主體。
在需要時根據行號修改程式碼,並指示仔細檢查上下文。
🔌 與您選擇的 LLM 整合: 您不會被鎖定在特定的 AI 供應商。
MCP Server: 直接與 Anthropic 的 Claude Desktop 等支援的客戶端連接(預計支援 ChatGPT Desktop)。
Agno Framework: 透過 Agno 代理框架使用 Serena 的工具,開啟與 Google、OpenAI、DeepSeek 或本機/開放權重模型相容性。
🛠️ 執行 Shell 命令: 允許 Serena(在您透過 MCP 明確允許每次執行後)執行測試、linter、建置腳本或其他命令,從而實現自主錯誤檢查和更正循環。
📝 利用專案記憶: Serena 會執行初始載入以了解您的專案結構,並且可以建立/讀取「記憶」(簡單檔案)以在會話之間保留上下文,或用於複雜的多步驟任務。
Serena 如何為您工作:使用案例
實作新功能: 您需要將使用者身份驗證添加到您的 Python Web 應用程式。您可以指示您的 LLM 透過 Serena 分析現有程式碼庫,使用語義搜尋識別相關的檔案和函數(如使用者模型或請求處理程式),讀取必要的上下文,起草登入/註冊端點的實作,並將新程式碼插入到正確的類別或模組中。然後,您可以要求它執行
git diff以檢查變更。重構大型模組: 您的 TypeScript 專案中有一个單體式
utils.ts檔案需要分解。Serena 可以協助 LLM 識別檔案中的所有函數,找到程式碼庫中每個實用函數的匯入和使用位置,協助規劃新的模組化結構,然後根據其符號理解執行必要的編輯(建立新檔案、移動函數、更新匯入語句)。透過測試執行進行偵錯: 最近變更後,測試案例失敗,但錯誤訊息不明確。您可以要求 Serena 使用
execute_shell_command執行特定的測試檔案,分析輸出日誌 (read_file),使用find_symbol或find_referencing_symbols找出潛在問題的程式碼區段,建議修復,使用編輯工具套用它們,並重新執行測試以確認解決方案,所有這些都在聊天介面中完成。
為什麼選擇 Serena?
Serena 的突出之處在於提供複雜、具有語義意識的程式碼輔助,而沒有許多商業工具的相關成本。與純粹基於文字或基本 RAG 方法相比,它對 LSP 的依賴允許與您的程式碼庫進行更深入、更準確的互動,尤其是在大型專案中。LLM 選擇和整合方法(MCP 或 Agno)的靈活性讓您掌控一切。它是一個由開發人員為開發人員構建的開源工具,旨在讓所有人都能使用強大的 AI 程式碼功能。





