oraios/serenaView GitHub Homepage for Latest Official Releases
Serenaは、大規模言語モデル(LLM)を、コードベース上で直接動作する、機能完備のエージェントに変えることができる、強力なコーディングエージェントツールキットです。
MITPythonserenaoraios 7.7k Last Updated: August 07, 2025
Serena プロジェクト詳細
プロジェクト概要
Serena は、大規模言語モデル(LLM)を、コードベース上で直接動作するフル機能のプログラミングエージェントに変換できる、強力なプログラミングインテリジェントエージェントツールキットです。このプロジェクトは Oraios AI によって開発され、開発者コミュニティにオープンソースとして貢献されています。
主要な特徴
🚀 コア機能
- セマンティックコード検索および編集機能: IDE のような機能を提供し、シンボルレベルでコードエンティティを抽出し、関係構造を活用します。
- 完全オープンソースで無料: 既存の LLM の能力を、追加費用なしで強化します。
- 多様な統合方法: MCP サーバー、Agno フレームワーク、およびカスタムエージェントフレームワークとの統合をサポートします。
🔧 技術的な利点
- 言語サーバープロトコル(LSP)ベース: 広く実装されている LSP を通じて、多様なコードクエリおよび編集機能を提供します。
- シンボルレベルの理解: コードのシンボル理解に基づいて発見と編集を行い、まるで経験豊富な開発者が IDE を使用するかのようです。
- 高効率かつ高精度: 大規模で複雑なプロジェクトでも、正しいコンテキストを効率的に見つけ、正しい操作を実行します。
サポートされているプログラミング言語
直接サポート(すぐに使用可能)
- Python
- Java(注意:起動が遅く、初回起動時は特に顕著です)
- TypeScript
これらの言語は、Serena の基盤で使用されている multilspy 言語サーバーライブラリによってサポートされています。
統合方法
1. モデルコンテキストプロトコル(MCP)
Serena は MCP サーバーを提供し、以下のクライアントと統合できます。
- Claude Desktop
- IDE(VSCode、Cursor、IntelliJ など)
- 拡張機能(Cline、Roo Code など)
- Goose(優れた CLI エクスペリエンスを提供)
- その他多くのクライアント(ChatGPT アプリのサポートも近日予定)
2. Agno フレームワーク
Agno(モデルに依存しないエージェントフレームワーク)を通じて、Serena はほぼすべての LLM をプログラミングエージェントに変換できます。以下をサポートします。
- Google、OpenAI、Anthropic が提供する有料 API モデル
- Ollama、Together、Anyscale が提供する無料モデル
3. カスタムエージェントフレームワーク
Serena のツール実装はフレームワーク固有のコードから分離されており、あらゆるエージェントフレームワークに簡単に適応できます。
使用シーン
Serena は、以下のプログラミングタスクに使用できます。
- コード分析
- プロジェクト計画
- 新しいコンポーネントの設計
- 既存のコードのリファクタリング
- 初期分析から実装、テスト、最終的なバージョン管理システムへのコミットまでの完全な自律プログラミングタスク
クイックスタート
基本的なインストール
uv
をインストールします(インストール手順は公式ドキュメントを参照してください)- リポジトリを
/path/to/serena
にクローンします serena_config.template.yml
をserena_config.yml
としてコピーし、設定を調整しますmyproject.template.yml
をmyproject.yml
としてコピーし、プロジェクト固有の設定を調整します- プロジェクトを動的に切り替える場合は、すべてのプロジェクトファイルを
serena_config.yml
のprojects
リストに追加します
Claude Desktop との統合
- プロジェクト設定ファイル
myproject.yml
を作成します - Claude Desktop で MCP サーバーを設定します。
- File / Settings / Developer / MCP Servers / Edit Config を開きます
claude_desktop_config.json
に以下を追加します。
{ "mcpServers": { "serena": { "command": "/abs/path/to/uv", "args": ["run", "--directory", "/abs/path/to/serena", "serena-mcp-server", "--project-file", "/abs/path/to/myproject.yml"] } } }
- 設定を保存し、Claude Desktop を再起動します
Goose CLI の使用
- goose をインストールします
goose configure
を使用して拡張機能を追加します- "Command-line Extension" を選択し、"Serena" という名前を付けます
- コマンドを追加します:
/abs/path/to/uv run --directory /abs/path/to/serena serena-mcp-server /optional/abs/path/to/project.yml
- デフォルトの
developer
拡張機能を無効にします
Agno GUI の使用
- agent-ui コードをダウンロードします:
npx create-agent-ui@latest
- Serena をインストールします:
uv pip install --all-extras -r pyproject.toml -e .
.env.example
を.env
としてコピーし、API キーを入力します- Agno エージェントを起動します:
uv run python scripts/agno_agent.py
- UI を起動します:
cd agent-ui && pnpm dev
ツールと設定
主要なツールカテゴリ
- セマンティックコード検索ツール: シンボル、参照、コードスニペットを検索します
- コード編集ツール: コードの挿入、置換、削除を行います
- ファイルシステム操作: ファイルとディレクトリの読み取り、作成、リスト表示を行います
- シェル実行: シェルコマンドを実行します
- プロジェクト管理: プロジェクトのアクティブ化、入門ガイド、メモリ管理を行います
安全性に関する考慮事項
- すべてのツールの使用は、最大限の価値を提供するために通常推奨されます
execute_shell_command
ツールは任意のコード実行を許可するため、慎重に使用する必要があります- プロジェクト設定ファイルで特定のコマンドを無効にできます
- 読み取り専用モード(
read_only: true
)をサポートし、分析と提案のみを許可し、コードベースを変更しません
他のプログラミングエージェントとの比較
サブスクリプションベースのエージェント(Windsurf、Cursor、VSCode)と比較して
利点:
- サブスクリプション料金は不要です
- 特定の IDE に縛られません
- 特定の大規模言語モデルまたは API に縛られません
- 言語サーバーを使用してシンボルレベルのコード理解を行います
- オープンソースでコードベースが小さく、拡張と変更が容易です
短所:
- IDE に直接統合されていないため、新しいコードのチェックは IDE 内蔵ツールほどシームレスではありません
API ベースのエージェント(Claude Code、Cline、Aider)と比較して
利点:
- MCP サーバーとして使用でき、API キーは不要で、API 料金を回避できます
- これは Serena のユニークな機能です
類似点:
- API ベースのエージェントとして使用できます
- どちらも強力ですが、主な欠点は潜在的に高い API 料金です
他の MCP サーバーと比較して
- 知られている限り、他のプログラミング関連の MCP サーバー(DesktopCommander、codemcp など)はセマンティックコード検索および編集ツールを提供していません
- それらは純粋なテキストベースの分析に依存しています
- Serena の言語サーバーと MCP の統合により、大規模なコードベースの困難なプログラミングタスクを処理する際に、ユニークで強力になります
入門ガイドと記憶システム
入門ガイド
- デフォルトでは、Serena はプロジェクトを初めて起動する際に入門ガイドプロセスを実行します
- 目標は、Serena がプロジェクトに慣れ、将来のインタラクションのために記憶を保存することです
記憶システム
- 記憶ファイルは、プロジェクトディレクトリの
.serena/memories/
に保存されます - エージェントはこれらのファイルを読み取ることができます
- ユーザーは必要に応じて記憶ファイルを読み取り、調整したり、新しい記憶ファイルを手動で追加したりできます
- 記憶システムは、ユーザーが Serena を使用するエクスペリエンスを大幅に改善します
使用に関する推奨事項
モデルの選択
- 思考バージョンではない Claude 3.7 は、思考バージョンよりも効果が高いようです
- Gemini は初期実験で良好な結果を示していますが、MCP はまだサポートされていません
- Gemini は比較的安価で、膨大なコンテキスト長を処理できます
ベストプラクティス
- バージョン管理: コード生成タスクは、クリーンな git 状態から開始するのが最適です
- Windows 設定: Windows で
git config --global core.autocrlf true
を設定します - コード構造: 構造化され、モジュール化され、型アノテーションが付けられたコードを使用します
- テストとログ: 詳細なログ情報と意味のあるテストを含めます
- 計画優先: 複雑なタスクの場合は、最初に概念化と計画を行います
- コンテキスト管理: 長いタスクの場合は、概要を作成し、新しい会話で続行できます
完全なツールリスト
以下は、Serena のすべてのツールの完全なリストです。
activate_project
: 名前でプロジェクトをアクティブ化しますcheck_onboarding_performed
: 入門ガイドが実行されたかどうかを確認しますcreate_text_file
: プロジェクトディレクトリにファイルを作成/上書きしますdelete_lines
: ファイルから行範囲を削除しますdelete_memory
: Serena のプロジェクト固有のメモリストレージから記憶を削除しますexecute_shell_command
: シェルコマンドを実行しますfind_referencing_code_snippets
: 指定された位置のシンボルを参照するコードスニペットを検索しますfind_referencing_symbols
: 指定された位置のシンボルを参照するシンボルを検索しますfind_symbol
: グローバル(またはローカル)シンボル検索を実行しますget_active_project
: 現在アクティブなプロジェクト名を取得しますget_symbols_overview
: ファイルまたはディレクトリ内のトップレベルシンボルの概要を取得しますinsert_after_symbol
: シンボル定義の終了後にコンテンツを挿入しますinsert_at_line
: ファイルの指定された行にコンテンツを挿入しますinsert_before_symbol
: シンボル定義の開始前にコンテンツを挿入しますlist_dir
: ディレクトリ内のファイルとディレクトリをリスト表示しますlist_memories
: メモリストレージ内の記憶をリスト表示しますonboarding
: 入門ガイドを実行しますprepare_for_new_conversation
: 新しい会話の準備をしますread_file
: プロジェクトディレクトリ内のファイルを読み取りますread_memory
: 指定された名前の記憶を読み取りますreplace_lines
: ファイル内の行範囲を新しいコンテンツで置き換えますreplace_symbol_body
: シンボルの完全な定義を置き換えますrestart_language_server
: 言語サーバーを再起動しますsearch_for_pattern
: プロジェクト内でパターンを検索しますsummarize_changes
: コードベースの変更の概要説明を提供しますthink_about_collected_information
: 収集された情報の完全性を考慮するための思考ツールthink_about_task_adherence
: エージェントが現在のタスクの正しい軌道に乗っているかどうかを判断するための思考ツールthink_about_whether_you_are_done
: タスクが本当に完了したかどうかを判断するための思考ツールwrite_memory
: 将来の参照のために、名前付きの記憶をメモリストレージに書き込みます
まとめ
Serena は、セマンティックコード理解と多様な統合方法を通じて、開発者に無料かつ強力な AI プログラミングアシスタントソリューションを提供する、機能豊富で完全にオープンソースのプログラミングインテリジェントエージェントツールキットです。 MCP サーバーを介して Claude Desktop と統合する場合でも、Agno フレームワークを介してさまざまな LLM を使用する場合でも、Serena はプログラミング効率とコード品質を大幅に向上させることができます。