木曜日, 8月 7, 2025
木曜日, 8月 7, 2025
- Advertisment -
ホームニューステックニュース5分で Claude Code のトークン効率とパフォーマンスを上げる #Serena

5分で Claude Code のトークン効率とパフォーマンスを上げる #Serena



コーディングエージェントにとっての IDE とも言える MCPサーバー Serena のご紹介です。

Serena

Serena は Semantic Retrieval & Editing Noetic Agent を語源としていて、LSP と連携して動作するコーディングエージェント支援ツールです。
コーディングエージェントに代わって検索や編集を行うツール群を MCP として提供します。

OSSなので無料で使用可能です。

類似ツールとの比較

似たような MCP として DektopCommanderMCPcodemcp 等がありますが、Serena の最大の特徴は LSP と連携してコードをシンボルレベルで理解しながら検索・編集が可能な点です。
これにより特にコーディングにおいては、その他のテキストレベルで検索・編集を行うツールとは一線を画すレベルのパフォーマンスを発揮します。
ただし言語によっては未対応の言語もあります。

2025/08/05 時点の言語対応表 (最新情報は公式へ)

言語 サポート 備考
Python
TypeScript/JavaScript 動作不安定になることがあり、改善中
PHP
Go go と gopls のインストールが必要
Rust
C# dotnet のインストールが必要。言語サーバーを最近変更したため、問題があれば報告してください
Java 起動が遅い(特に初回起動)
macOS と Linux で問題が発生する可能性があり、改善中
Elixir NextLS と Elixir のインストールが必要
Windows はサポート外
Clojure
C/C++ 参照の検索で問題が発生する可能性があり、改善中
Ruby 未テスト
Kotlin 未テスト
Dart 未テスト

導入

Devcontainer を使っている方は専用のテンプレートを作ったので良かったらどうぞ。

必要なツールのインストール

Python のパッケージ・プロジェクト管理ツールである uv の導入が必須です。
curl で入るので Python 自体は無くても大丈夫です。

curl -LsSf https://astral.sh/uv/install.sh | sh

Windows を使用している方は以下を実行してください (公式の参照箇所)

git config --global core.autocrlf true

Serena MCP サーバー起動のテスト

uvx での直接実行が推奨されています。
コマンド実行後に Serena Logs が開けば大丈夫です。

uvx --from git+https://github.com/oraios/serena serena start-mcp-server

Claude Code が Serena MCP にアクセスできるようにする (公式の参照箇所)

claude mcp add serena -- uvx --from git+https://github.com/oraios/serena serena start-mcp-server --context ide-assistant --project $(pwd)

疎通確認

導入効果の検証

それなりに大きいプロジェクトの方が効果的に検証ができそうだったので Python の Webフレームワークである Streamlit をフォークして検証しています。

条件

検証内容としてはこの Good First IssueSerena無しSerena有り でそれぞれ修正した際の修正内容とトークン消費量で検証します。
期待する修正内容はちょうどこの Issue に対してメンテナーによる PR がオープンされているので、これと比較してみることにします。

モデルは Sonnet 4 でプロンプトは共通して以下を使用します。

https://github.com/streamlit/streamlit/issues/11795 このIssueに対応してください。 ultrathink

また、よりトークン消費量とパフォーマンスの違いを明確にするため /init は実行せず、CLAUDE.md は無い状態で実行します。

Serena無し

修正内容の評価

テストは実行していないので、コンポーネントの修正のみに焦点を当ててレビューします。

レビュー内容
  • 修正対象のコンポーネントファイルはおおむね正しい
    ArrowTable.tsx コンポーネントとその Python 定義である arrow.py が修正されている
    ただし、core/Block/ElementNodeRenderer.tsx を余計に修正しているのと Quiver.ts が修正されていない。

  • 修正の方向性はまぁまぁ正しい
    ArrowTable.tsx で参照している styled-components の各コンポーネント定義 (Table, Cell等) に対して showBorders prop を追加してそれを ArrowTable.tsx からコンポーネントや generate 関数に引数で渡して制御している。
    ただ、本家様は Quiver.ts に引数として border を追加してそれを ArrowTable.tsx に渡しているが、Claude の修正では interface に直接追加している。

総評としては、50点くらいでしょうか。
スタートとしては良さそうですが、このまま PR を出しても OK はもらえなさそうです。

消費トークン数: 2,813,993 トークン

$ bunx ccusage blocks

┌────────────────────────────────────────────────────────────────┬─────────────────┬────────────┬──────────────┬───────────┬───────────┐
│ Block Start                                                    │ Duration/Status │ Models     │       Tokens │         % │      Cost │
├────────────────────────────────────────────────────────────────┼─────────────────┼────────────┼──────────────┼───────────┼───────────┤
│ 2025-08-04, 1:00:00 a.m. (1h 10m)                              │                 │ - sonnet-4 │    2,813,993 │    100.0% │     $1.43 │
├────────────────────────────────────────────────────────────────┼─────────────────┼────────────┼──────────────┼───────────┼───────────┤

Serena有り

修正内容の評価

上と同様にテストは実行していないので、コンポーネントの修正のみに焦点を当ててレビューします。

レビュー内容
  • 修正対象のコンポーネントファイルはすべて正しい
    本家様と同様のファイルがすべて修正されていて、余計なファイルへの修正が入っていない。

  • 修正の方向性もほぼ正しい
    本家様と同様に Quiver.ts に border 表示有無の prop を追加して ArrowTable.tsx コンポーネントでは Quiver.ts を参照して引数を受け取る形になっている。

    コード構造を正確に理解できている感じがする。

    1つ差分としては、AIでは showBorders: bool を引数として追加したが、本家様では BorderMode という Enum を作って追加で horizontal にも対応させているくらい。
    ただこれは、Issue にそのような指示が無いため無視しても大丈夫そう。

個人的には 80~90点 くらい行っていると思います。
最初の PR としては十分なレベルで、あとは細かい指摘を対応していくだけで良さそうです。

消費トークン数: 3,433,537 トークン

トークン消費量は逆に 22% 増えてしまいました…

シンボル同士の関連が多く逆に大量のファイルを開いてしまったと推測します…

$ bunx ccusage blocks

┌────────────────────────────────────────────────────────────────┬─────────────────┬────────────┬──────────────┬───────────┬───────────┐
│ Block Start                                                    │ Duration/Status │ Models     │       Tokens │         % │      Cost │
├────────────────────────────────────────────────────────────────┼─────────────────┼────────────┼──────────────┼───────────┼───────────┤
│ 2025-08-04, 11:00:00 p.m. (0h 27m elapsed, 4h 33m remaining)   │ ACTIVE          │ - sonnet-4 │    3,433,537 │    122.0% │     $1.60 │
├────────────────────────────────────────────────────────────────┼─────────────────┼────────────┼──────────────┼───────────┼───────────┤

まとめ

Serena によってパフォーマンスは間違いなく向上しました。
ついでにトークン消費量も減りました!と言えたら良かったのですが、今回の検証では実現できませんでした。

ただ、22% のトークン消費量の差でコードの理解度が大幅に向上したので、無駄なトークン消費が抑えられて、より必要な情報のみにトークンが使用されるようになったと感じました。
これはトークン効率も上がったと言えるのでは無いでしょうか。無理矢理

良かったら試してみてください。

参考

https://blog.lai.so/serena/

https://azukiazusa.dev/blog/serena-coding-agent/



Source link

Views: 0

RELATED ARTICLES

返事を書く

あなたのコメントを入力してください。
ここにあなたの名前を入力してください

- Advertisment -