1 ポイント 投稿者 GN⁺ 2025-10-14 | 1件のコメント | WhatsAppで共有
  • agent-shell は、Emacs で AI エージェントを直接制御できる comint-mode ベースのネイティブシェル
  • ACP(Agent Client Protocol) を使用し、特定のエージェントに依存せず、さまざまなエージェントと通信できる 柔軟性 がある
  • リアルタイムの トラフィック解析機能フェイク(fak)エージェントのリプレイ 機能により、テストと開発の効率が向上
  • まだ プロトコルの全機能は未実装 だが、素早く実用可能なレベルの実装を示している
  • agent-shellacp.el はどちらも GitHub で公開されており、追加機能やバグに関するユーザーフィードバックを歓迎している

紹介

  • 最近、Emacs Lisp で実装された acp.el により、Zed と Google が共同開発した Agent Client Protocol(ACP) との連携が可能になった
  • 従来は chatgpt-shell など LLM との基本的な連携しか提供されておらず、AI エージェントの本格活用はゆっくりとしたものだった
  • ACP の導入により、Emacs 環境内でのエージェント連携ニーズが高まり、Emacs ネイティブの agent-shell の開発を始めることになった

agent-shell 概要

  • agent-shellcomint-mode をベースとしており、Emacs の使い慣れた バッファシステム の中で動作する
  • 文字モードや行モードへの切り替えなしに、通常の Emacs シェルと同じように使える環境が提供される

Agent-agnostic(エージェント非依存)

  • ACP のおかげで、1 つのプロトコルでさまざまなエージェントと通信できる 一貫したユーザー体験 を実現できる
  • 設定例を通じて、Gemini CLI や Claude Code などのさまざまなエージェントを 簡単なコード変更だけで適用 できる
    • 例示コード: 各エージェント向けの認証、コマンド、環境変数の設定方法を説明
  • 他のエージェントも同じ方法で簡単に連携できる

トラフィック表示機能

  • ACP プロトコルの利用にまだ慣れておらず、通信トラフィックをリアルタイムで解析 する必要があった
  • agent-shell では専用の トラフィックビューワーバッファ を提供し、M-x agent-shell-view-traffic コマンドで JSON ベースのトラフィックを視覚的に確認できる

Fake agents(フェイクエージェントとリプレイ)

  • 実際の有料エージェントを使った開発では、コストと時間の非効率が問題になるため、フェイクエージェントのリプレイ 機能を導入した
  • トラフィックバッファ経由で保存した通信データを再生(replay)することで、何度でも高速にテストできるようになった
  • 一部に制約や限界はあるものの、デバッグと開発プロセスの効率は大きく向上する

今後の計画と現在の状態

  • Agent Client Protocol Schema の一部しか実装されておらず、未完成の部分が残っている
  • n/p キーを使った クイック(diff)バッファ や permission dialog など、革新的な UX の実験を進めている
  • プロトコル機能全体を把握しつつ、追加実装を進める予定

GitHub 公開と活用案内

  • agent-shellacp.el はどちらも GitHub で公開されている
    • agent-shell: エージェント利用者向けパッケージ
    • acp.el: エージェント関連の連携パッケージを作りたい開発者向けライブラリ
  • どちらのプロジェクトも非常に初期のベータ段階にあり、バグ報告や機能要望の提出が推奨される
  • クラウド LLM サービスの利用には追加コストが発生し、オープンソース開発そのものにも費用と労力がかかる
  • プロジェクトが有用であれば、サポート(支援)への参加を勧めている

1件のコメント

 
GN⁺ 2025-10-14
Hacker Newsのコメント
  • XenodiumはEmacsで素晴らしいことをいろいろやっている。Emacsに興味があるなら、ぜひ Xenodiumのブログ をチェックしてほしい。他のEmacsユーザーの勧めで初めて買ったiOSアプリがJournellyだった。このアプリはリンクやノートを手軽に保存してorgファイルとしてエクスポートできるポータブルな場所で、今後はmarkdownもサポート予定とのこと。Xenodiumとは何の関係もないが、今年Emacsを掘り下げながら彼の貢献を見るのはとても楽しい
    • 本当にありがとう。こういうフィードバックは一日を幸せにしてくれる。Journellyのファンだというのも嬉しい。購入してくれてありがとう。ニッチなアプリを継続して開発するのは大きな挑戦だ
  • agent-shellは、ACP (Agent Client Protocol) で動くさまざまなAIエージェントをEmacsから直接使えるネイティブな体験を提供する。現在はClaude Code、Gemini CLI、Codex、Gooseと連携できるが、技術的にはACPをサポートするエージェントなら誰でも使える。持続可能な開発のために、さらにスポンサーが必要。github sponsors で支援できる
    • とても興味深い。claude-code-ideを使っていたが、comint-modeを使わないので不便な点が多かった。agent-shellはぜひ試してみたい。質問なのだが、ACPの仕様は「ide」関連の機能もカバーしているのだろうか(たとえばClaude code ideでサポートされているカーソル位置やdiff連携のようなもの)。それとも本当に基本的な機能だけに焦点を当てているのだろうか
  • Agent shellは自分がずっと欲しかったものだった。いろいろなClaude code連携パッケージを使ってみたが、ターミナルエミュレータで動かさなければならない煩わしさがあった。agent shellはずっと自然で統合された感じだ。設定をファイルから読み込む機能には特に期待している。agent-shell-sidebarが実際にどう動くのか見られるスクリーンショットがあればいいのにと思う
  • XenodiumはEmacsコミュニティのために素晴らしい仕事をしてくれている。今agent-shellを使っているが、バッファ上部に追加されるヘッダーが気に入らない。欲しい情報はすでに下部に全部ある。下部の行を選択的に無効化できるようにすると、ミニマリストには良さそうだ
    • ヘッダーが気に入らないなら、feature requestを出してほしい。グラフィカルなヘッダーを任意でオン・オフできるようにするのはよさそうだ
  • agent-shellを何度か使ってみたが、リリース初期のパッケージにもかかわらず非常にスムーズな体験を提供している
  • ACPというものを初めて聞いた。AG-UIと比べてどう違うのか気になる。もちろんACPはコーディング特化で、AG-UIはずっと汎用的だという違いは分かるが、それ以外にどんな違いがあるのか知りたい
    • LSPと同じ論理だが、それをAIエージェントに適用したものだ。claude、codex、gemini、aiderなどについて、各エディタ向けのwrapperを毎回新しく実装するのはつらい。だからZedチームがプロトコルの標準化を始めた
  • ECAというプロジェクトもある。ECA GitHub。ECAは複数のfront-endとeditor向けのLSPスタイルのコーディングエージェントプロトコルだ。さまざまなモデルを直接サポートしている。一方でagent protocolは、Gemini CLI、Claude Codeなど複数のエージェントを、それぞれのプロトコル対応状況に応じてさまざまなfront-endで使えるようにするもののようだ。いろいろなコーディングエージェントがECAプロトコルを採用することもありそうだ
    • その通り。ECAプロジェクトにはEmacsパッケージもある。最近使っている。EmacsのissueをデバッグしながらECAプロトコルとACPのドキュメントをざっと見たが、両者はかなり似ていて、どちらもよく文書化されている。意図しない重複発明だ
    • 両方使ってみたが、上の説明で合っている。MCPsを再設定しなければならないし、ECAは独自のサーバーがバックグラウンドで動く。そういう点もあってagent-shellのほうが気に入った。エージェントごとにconfigの形式や場所が違い、プロジェクトレベルとユーザーレベルのconfigの違いまであるので、agent-shellのシンプルさは大きな利点だ。あとでconfig標準もできたら本当にいいと思う
  • なぜClaude Codeを直接使わず、わざわざagent-shellを使う必要があるのか気になる
    • テキストエディタに完全統合された、統一されたネイティブUI体験が得られるからだ。Claude Codeだけでなく、Gemini CLI、Codex、GooseなどACPをサポートする複数のエージェントを同じやり方で使える
    • これこそがEmacs流だ。Emacsは世界を飲み込む存在だ
  • 誰かがこれをNeovim向けに作ってくれるのを待っている。名も知らぬ英雄が早く現れてほしい。specを作ってくれたZedチームとGoogleにも感謝
    • Emacs側においで。vimバインドも全部サポートしている
    • Code Companion for neovimは、すでにかなり前からACPをサポートしている。追加情報はこちら