
Obsidianの「Agent Client」プラグインとは?Claude CodeをVaultで動かす仕組みをソースから検証した
- #Obsidian
- #ACP
- #Claude Code
ObsidianのノートをAIエージェントに読み書きさせるプラグインとしては、以前この記事でClaudian(https://github.com/YishenTu/claudian )を検証しました。もう一つ、同じ方向性だが仕組みが違うプラグインがあります。「Agent Client」(https://github.com/RAIT-09/obsidian-agent-client )です。Claudianが各エージェントのSDKを自前でバンドルするのに対し、Agent ClientはZed発のAgent Client Protocol(ACP)に乗ることで、Claude CodeやCodexなど複数のエージェントを同じ仕組みで扱います。
この記事は公式リポジトリのREADME・`manifest.json`・`package.json`・ソースコードを一次情報としつつ、実際にリポジトリをクローンして`npm install`から`npm run build`までをこの検証環境で試した記録です。GUIを持つObsidianプラグインのため画面操作そのものは検証していませんが、ビルドが通るか、README記載の仕様がコードと一致しているかは実際に手を動かして確認しました。
- この記事でわかること:Agent Clientが何をするプラグインで、ACPとどう関係しているか。
- 対応する9種類のプリセットエージェントと、それぞれの起動コマンド。
- Claude Code連携が`claude`コマンド単体ではなく、別パッケージ`claude-agent-acp`のインストールを前提にしていること。
- 実際にビルドすると`main.js`が約819KB(839,009バイト)で、SDKを同梱する方式のプラグインより小さくなる理由。
- Obsidian公式のコミュニティプラグイン一覧に、このプラグインがどう登録されているか。
Agent Clientとは
`manifest.json`の説明によれば、Agent Clientは「Agent Client Protocolを介してAIエージェントとVault内から直接チャットする」プラグインです。開発者はRAIT-09氏、ライセンスはApache License 2.0、確認時点のバージョンは0.13.0でした。READMEは「Claude Code、Codex、Gemini CLI、その他あらゆるACPエージェントとObsidian内でチャットできる。`@`でノートを言及すればエージェントがVault内のファイルを読み書きできる」と説明しています。
Obsidian公式のプラグイン一覧データ(`obsidianmd/obsidian-releases`リポジトリの`community-plugins.json`)にも`id: "agent-client"`、リポジトリ`RAIT-09/obsidian-agent-client`として登録されているのを確認しました。同ファイルには「このプラグインはObsidianスタッフによる手動レビューをまだ受けていない」という注記も付いており、コミュニティプラグインとして配布はされているものの、公式の精査はこれからという段階だと分かります。
ベースにしているAgent Client Protocol(ACP)は、Zed Industriesが2025年8月に発表したオープンな規格で、エディタとAIコーディングエージェントの通信をJSON-RPCで標準化するものです(詳細は当ブログのACP解説記事を参照)。Agent Clientは、このACPのTypeScript SDK(`@agentclientprotocol/sdk`)を使い、Obsidianを「ACPクライアント」として実装しています。
対応エージェントとClaude Codeの前提条件
ソースコード`src/services/preset-agents.ts`を読むと、プリセットとして9種類のエージェントが定義されていました。Claude Code、Codex、Gemini CLI、Mistral Vibe、OpenCode、Kiro、Hermes Agent、Pi、Grok Buildです。それぞれ既定の起動コマンドが決まっており、例えばOpenCodeは`opencode acp`、Gemini CLIは`gemini --experimental-acp`、Grok Buildは`grok agent stdio`という具合に、エージェントごとに微妙に異なる引数でACPモードを起こしています。
ここで一つ見落としやすい前提があります。Claude Codeの欄は起動コマンドが`claude`ではなく`claude-agent-acp`でした。公式セットアップガイド(`docs/agent-setup/claude-code.md`)を確認すると、これは別パッケージで、`npm install -g @agentclientprotocol/claude-agent-acp`を個別にインストールする必要があると明記されています。すでに`claude`コマンド(Claude Code CLI本体)を使っていても、このアダプタを追加で入れないとAgent Clientからは接続できません。Codexも同様に`codex-acp`という別パッケージが必要です。
認証方法はAPIキーとアカウントログインの2通りが用意されています。アカウントログインを使う場合でも、ガイドは「これはClaude Code CLI本体を別途インストールし、ログインセッションを作る必要がある」「Claude Desktopアプリを起動していても認証にはならず、CLI経由のログインが必要」と注意書きを添えていました。APIキー運用の場合はObsidianのKeychainに保存され、平文では保存されません。
- Claude Code: `claude-agent-acp`(別パッケージ、`npm install -g @agentclientprotocol/claude-agent-acp`が必要)
- Codex: `codex-acp`(同じく別パッケージ)
- Gemini CLI: `gemini --experimental-acp`
- OpenCode: `opencode acp`
- Kiro: `kiro-cli acp`
- Pi: `pi-acp`
- Grok Build: `grok agent stdio`
実際にソースを取得してビルドしてみる
検証環境(Node.js v22.22.2、npm 10.9.7)でリポジトリをクローンし、`npm install`を実行したところ489パッケージが追加され、特別なNode.jsバージョン指定なしに完了しました。Claudianの検証では`node:sqlite`の都合でNode.js 24以降が必須でしたが、Agent Clientの`package.json`に`engines`によるバージョン固定は見当たらず、手元のNode.js 22でも問題なくインストールできました(`npm audit`は4件のmoderateと6件のhighの脆弱性を報告しており、これは依存パッケージ側の既知の指摘なので導入前に自分でも確認しておく価値はあります)。
続けて`npm run build`(内部では`tsc -noEmit -skipLibCheck && node esbuild.config.mjs production`)を実行すると、型エラーなく`main.js`が生成されました。ファイルサイズは839,009バイト(約819KB)です。Claudianのビルド成果物が約5.3MBだったのと比べると、6分の1程度に収まっています。
理由はコードを見れば明快です。Claudianは`@anthropic-ai/claude-agent-sdk`のようなエージェント側のSDKをプラグイン本体にバンドルしていましたが、Agent Clientが依存に持つのはACPのJSON-RPCクライアント(`@agentclientprotocol/sdk`)とCodeMirror・React・diffといったUI側のライブラリだけです。エージェント本体(Claude CodeやCodexなど)はあくまで外部にインストールされた別プロセスとして子プロセス起動され、ACPの標準入出力でやり取りする設計なので、プラグイン側に重いSDKを抱え込む必要がありません。「エージェントをアプリに埋め込む」方式と「標準プロトコルで外部プロセスに接続する」方式の違いが、ビルドサイズという分かりやすい数字に表れていました。
主な機能
READMEに列挙されている機能のうち、実務で使うときに関わりそうなものを挙げます。`@`によるノートのファジー検索メンション、選択範囲の自動参照、Vault内の`[[wikilink]]`をエージェントに渡すコンテキスト連携、エージェント側のMCPサーバーやスキルをそのまま使えること、`/`スラッシュコマンドの引数ヒント表示、画像・ファイルのペースト&ドラッグ&ドロップ対応、セッション中のモデル・モード切り替え、編集内容を単語単位のdiffで表示する機能、アクションごとの許可プロンプト(自動許可はデフォルトでオフ)、会話のローカル保存・再開・フォーク、Markdownへのチャットエクスポート、ターミナル統合、位置とサイズを記憶するフローティングチャットウィンドウ、Windows向けのWSLモードです。
サイドバー・エディタタブ・浮動ウィンドウのいずれでも複数エージェントを同時に走らせられ、開いている全セッションを一覧できるセッションマネージャーが用意されている点もREADMEで強調されていました。
セキュリティと権限まわりの前提
READMEの「Security & Permissions」の章は率直です。「Agent Clientはデスクトップ専用プラグインで、ローカルにインストールされたエージェントを子プロセスとして起動し、ターミナルコマンドを実行させる。それがこのプラグインの核心部分だ」と明記されています。ファイルシステムへの直接アクセスは「Auto-detect」ボタンによる読み取り専用の探索にとどまり、ノートの読み書き自体はObsidianのVault APIを経由するとのことでした。
重要な注意書きとして「エージェント自体は、ターミナルで使うときと同じフルのシステムアクセス権を持つ」とあります。プラグインはエージェントからのアクション要求をすべて可視化し、承認・拒否できるようにしていますが、「Auto-allow permissions」(初期値はオフ)を有効にするとこのプロンプトを全てスキップするため、有効化は影響を理解した上で、という書き方がされていました。
まとめ
Agent Clientは、ObsidianのVaultをAIコーディングエージェントのフロントエンドにするという狙いでは同じ「Claudian」と、実現方法が対照的でした。Claudianが各エージェントのSDKをアプリに取り込むのに対し、Agent ClientはACPという標準プロトコルの上に立ち、エージェント本体は外部の別プロセスとして扱います。そのぶんビルドは軽量ですが、Claude CodeとCodexについては専用のACPアダプタパッケージを別途インストールする必要があり、単に`claude`コマンドが動く環境を持っているだけでは足りない、という点は導入前に押さえておくべき落とし穴でした。
複数のCLIエージェントをVault内で切り替えながら使いたい、Claude Code以外にGemini CLIやOpenCodeも試したいという場合の選択肢になりますが、エージェントにターミナルと同等のシステムアクセスを渡す設計である以上、まずは許可プロンプトを有効にしたまま、どのエージェントにどこまでの操作をさせるかを見極めてから運用するのが安全です。Obsidian公式の一覧データ上ではまだ「スタッフによる手動レビュー前」の扱いなので、その点も踏まえて導入を判断してください。
参考リンク
- Agent Client 公式リポジトリ(README・ライセンス・ソースコード)
- https://github.com/RAIT-09/obsidian-agent-client
- 公式ドキュメント(セットアップガイド一式)
- https://rait-09.github.io/obsidian-agent-client/
- Claude Codeセットアップガイド(claude-agent-acpの導入手順)
- https://rait-09.github.io/obsidian-agent-client/agent-setup/claude-code.html
- manifest.json(バージョン・対応Obsidianバージョン)
- https://github.com/RAIT-09/obsidian-agent-client/blob/master/manifest.json
- プリセットエージェント定義(preset-agents.ts)
- https://github.com/RAIT-09/obsidian-agent-client/blob/master/src/services/preset-agents.ts
- Obsidian公式コミュニティプラグイン一覧(登録エントリ)
- https://github.com/obsidianmd/obsidian-releases/blob/master/community-plugins.json
- Agent Client Protocol(ACP)公式サイト
- https://agentclientprotocol.com
