Home
Login

Serenaは、大規模言語モデル(LLM)を、コードベース上で直接動作する、機能完備のエージェントに変えることができる、強力なコーディングエージェントツールキットです。

MITPython 1.2koraios Last Updated: 2025-06-13

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 は、以下のプログラミングタスクに使用できます。

  • コード分析
  • プロジェクト計画
  • 新しいコンポーネントの設計
  • 既存のコードのリファクタリング
  • 初期分析から実装、テスト、最終的なバージョン管理システムへのコミットまでの完全な自律プログラミングタスク

クイックスタート

基本的なインストール

  1. uv をインストールします(インストール手順は公式ドキュメントを参照してください)
  2. リポジトリを /path/to/serena にクローンします
  3. serena_config.template.ymlserena_config.yml としてコピーし、設定を調整します
  4. myproject.template.ymlmyproject.yml としてコピーし、プロジェクト固有の設定を調整します
  5. プロジェクトを動的に切り替える場合は、すべてのプロジェクトファイルを serena_config.ymlprojects リストに追加します

Claude Desktop との統合

  1. プロジェクト設定ファイル myproject.yml を作成します
  2. 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"]
        }
      }
    }
    
  3. 設定を保存し、Claude Desktop を再起動します

Goose CLI の使用

  1. goose をインストールします
  2. goose configure を使用して拡張機能を追加します
  3. "Command-line Extension" を選択し、"Serena" という名前を付けます
  4. コマンドを追加します:/abs/path/to/uv run --directory /abs/path/to/serena serena-mcp-server /optional/abs/path/to/project.yml
  5. デフォルトの developer 拡張機能を無効にします

Agno GUI の使用

  1. agent-ui コードをダウンロードします:npx create-agent-ui@latest
  2. Serena をインストールします:uv pip install --all-extras -r pyproject.toml -e .
  3. .env.example.env としてコピーし、API キーを入力します
  4. Agno エージェントを起動します:uv run python scripts/agno_agent.py
  5. 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 は比較的安価で、膨大なコンテキスト長を処理できます

ベストプラクティス

  1. バージョン管理: コード生成タスクは、クリーンな git 状態から開始するのが最適です
  2. Windows 設定: Windows で git config --global core.autocrlf true を設定します
  3. コード構造: 構造化され、モジュール化され、型アノテーションが付けられたコードを使用します
  4. テストとログ: 詳細なログ情報と意味のあるテストを含めます
  5. 計画優先: 複雑なタスクの場合は、最初に概念化と計画を行います
  6. コンテキスト管理: 長いタスクの場合は、概要を作成し、新しい会話で続行できます

完全なツールリスト

以下は、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 はプログラミング効率とコード品質を大幅に向上させることができます。