📢 Webサイト閉鎖と移転のお知らせ
このWebサイトは2026年9月に閉鎖いたします。
新しい記事は移転先で追加しております。(旧サイトでは記事を追加しておりません)
編集の要約なし |
|||
| 15行目: | 15行目: | ||
* Zedの公式Webサイト | * Zedの公式Webサイト | ||
*: https://zed.dev/ | *: https://zed.dev/ | ||
<br> | |||
Zedエディタは、複数のLLMプロバイダと連携可能なAI機能を備えており、LLMの利用方法は大きく以下の3つに分類される。<br> | |||
<br> | |||
* Zedホスト型モデル | |||
*: Zedのサブスクリプション (Pro等) を通じて提供されるモデル群 | |||
*: 認証とサブスクリプションが必要となる。 | |||
*: <br> | |||
* 自前のAPIキーによる接続 | |||
*: Anthropic、OpenAI、Google等の各プロバイダから直接APIキーを取得して、Zedに登録して使用する方式 | |||
*: サブスクリプションは不要 | |||
*: <br> | |||
* 外部エージェント (ACP) | |||
*: Claude Agent (Claude Code)、Gemini CLI、OpenCode等を、ACP (Agent Client Protocol) 経由でZedのAgent Panel内から直接実行する方式 | |||
<br> | |||
==== 前提条件 ==== | |||
* Zedエディタのバージョン | |||
*: 最新の安定版を推奨する。ACP機能 (Claude Agent連携等) はバージョン 0.202.7以降で利用可能である。 | |||
*: <br> | |||
* APIキーの取得 | |||
*: Claudeを利用する場合は [https://console.anthropic.com/ Anthropic Console] からAPIキーを取得する。 | |||
*: 例えば、GLMを利用する場合は、[https://z.ai/ Z.AI] (旧 bigmodel.cn) からAPIキーを取得する。 | |||
*: <br> | |||
* 設定ファイルの場所 | |||
*: Zedの <u>settings.jsonファイル</u> は、コマンドパレットから <code>zed: open settings</code> を実行することで開くことができる。 | |||
<br><br> | <br><br> | ||
== Zedのインストール == | == Zedのインストール == | ||
==== インストールスクリプトを使用してインストール (推奨) ==== | ==== インストールスクリプトを使用してインストール (推奨) ==== | ||
Zedをインストールする。<br> | |||
# 安定版 | # 安定版 | ||
curl -f https://zed.dev/install.sh | sh | curl -f https://zed.dev/install.sh | sh | ||
# プレビュー版 | # プレビュー版 | ||
# 安定版より約1週間早くアップデートが行われている | # 安定版より約1週間早くアップデートが行われている | ||
| 29行目: | 54行目: | ||
ただし、以下に示すLinuxディストリビューションおよびアーキテクチャは、ソースコードからビルドする必要がある。<br> | ただし、以下に示すLinuxディストリビューションおよびアーキテクチャは、ソースコードからビルドする必要がある。<br> | ||
* x64またはAarch64以外のアーキテクチャ (例: x86, RISC-V) | * x64またはAarch64以外のアーキテクチャ (例: x86, RISC-V) | ||
* 全てのアーキテクチャ上のRHEL 8.x系 (例: RHEL 8 | * 全てのアーキテクチャ上のRHEL 8.x系 (例: RHEL 8, Rocky Linux 8、AlmaLinux 8、Amazon Linux 2等) | ||
* | * AArch64上のRHEL 9.x系 (例: RHEL 9, Rocky Linux 9、AlmaLinux 9、Amazon Linux 2023等) | ||
<br> | <br> | ||
==== 手動でインストール ==== | ==== 手動でインストール ==== | ||
| 62行目: | 87行目: | ||
StartupNotify=true | StartupNotify=true | ||
Actions=NewWorkspace; | Actions=NewWorkspace; | ||
[Desktop Action NewWorkspace] | [Desktop Action NewWorkspace] | ||
Exec=/<Zedのインストールディレクトリ>/bin/zed --new %U | Exec=/<Zedのインストールディレクトリ>/bin/zed --new %U | ||
| 69行目: | 94行目: | ||
<br> | <br> | ||
Zedの起動時において、以下に示すようなエラーが出力される場合は、Zedをソースコードからインストールする。<br> | Zedの起動時において、以下に示すようなエラーが出力される場合は、Zedをソースコードからインストールする。<br> | ||
このエラーは、システムのGLIBCが古いことを意味する。<br> | |||
/lib64/libc.so.6: version 'GLIBC_2.29' not found | /lib64/libc.so.6: version 'GLIBC_2.29' not found | ||
<br> | <br> | ||
| 90行目: | 115行目: | ||
したがって、開発者はこのディレクトリを環境変数<code>PATH</code>に含めるのが一般的である。<br> | したがって、開発者はこのディレクトリを環境変数<code>PATH</code>に含めるのが一般的である。<br> | ||
<br> | <br> | ||
インストールした後、自動的に環境変数<code>PATH</code>の設定が行われるが、なんらかの理由により失敗することがある。<br> | インストールした後、自動的に環境変数 <code>PATH</code> の設定が行われるが、なんらかの理由により失敗することがある。<br> | ||
もし、手動で設定する場合は、~/.profileファイル等に環境変数<code>PATH</code>を設定する。<br> | もし、手動で設定する場合は、~/.profileファイル等に環境変数 <code>PATH</code> を設定する。<br> | ||
vi ~/.profile | vi ~/.profile | ||
<br> | <br> | ||
| 114行目: | 139行目: | ||
以下に示すいずれかの方法を選択して、Zedのビルドに必要な依存関係のライブラリをインストールする。<br> | 以下に示すいずれかの方法を選択して、Zedのビルドに必要な依存関係のライブラリをインストールする。<br> | ||
* スクリプトの使用 | * スクリプトの使用 | ||
*: script/linux | |||
<br> | *: <br> | ||
* パッケージ管理システムから手動でインストール | * パッケージ管理システムから手動でインストール | ||
# RHEL | # RHEL | ||
| 138行目: | 163行目: | ||
Zedは、X11およびWaylandの両方をサポートしている。<br> | Zedは、X11およびWaylandの両方をサポートしている。<br> | ||
デフォルトでは、実行時に検索に成功したものを選択する。<br> | デフォルトでは、実行時に検索に成功したものを選択する。<br> | ||
もし、Waylandを使用しており、X11モードで実行する場合は、環境変数<code>WAYLAND_DISPLAY</code>を<code>""</code>に設定する。<br> | <br> | ||
もし、Waylandを使用しており、X11モードで実行する場合は、環境変数 <code>WAYLAND_DISPLAY</code> を <code>""</code> に設定する。<br> | |||
export WAYLAND_DISPLAY="" | export WAYLAND_DISPLAY="" | ||
/<Zedのインストールディレクトリ>/bin/zed | /<Zedのインストールディレクトリ>/bin/zed | ||
| 157行目: | 183行目: | ||
Zedの設定とデータを手動で削除する場合は、以下に示すディレクトリを削除する。<br> | Zedの設定とデータを手動で削除する場合は、以下に示すディレクトリを削除する。<br> | ||
rm -r ~/.config/zed | rm -r ~/.config/zed | ||
<br><br> | |||
== Claudeの設定 == | |||
==== APIキーによる直接接続 ==== | |||
AnthropicのAPIキーを使い、Zedの[Agent Panel]から直接Claudeモデルを利用する方法である。<br> | |||
この方式では、Anthropicに対してAPI使用料が直接発生する。<br> | |||
<br> | |||
===== APIキーの登録 ===== | |||
APIキーの登録には、UIから行う方法と環境変数を使う方法の2通りがある。<br> | |||
<br> | |||
UI経由での登録を以下に示す。<br> | |||
# <u>[Cmd] + [?]キー</u> (MacOS) または <u>[Ctrl] + [?]キー</u> (Windows / Linux) で[Agent Panel]を開く。 | |||
# 右上のドロップダウンメニューから、[agent: open settings]を選択する。 | |||
# [LLM Providers]セクションの右にある[Add Provider]ボタンを押下する。 | |||
# プロバイダ一覧から <u>Anthropic</u> を選択して、APIキーを入力する。 | |||
<br> | |||
APIキーはOSのキーチェーン (MacOS) または シークレットストレージ (Linux) に保存され、<code>settings.jsonファイル</code> には書き込まれない。<br> | |||
<br> | |||
環境変数による登録を以下に示す。<br> | |||
~/.profileファイルや~/.zprofileファイル等にAPIキーを設定する方法でも認識される。<br> | |||
<br> | |||
<syntaxhighlight lang="sh"> | |||
export ANTHROPIC_API_KEY="sk-ant-xxxxxxxxxxxxxxxxxxxxx" | |||
</syntaxhighlight> | |||
<br> | |||
Zedは起動時にこの環境変数を自動的に読み取る。<br> | |||
<br> | |||
===== モデル定義 (Thinking付き) ===== | |||
Claude 4.6世代では、Adaptive Thinkingが推奨されている。<br> | |||
これはモデルが自動的に思考の必要性と深さを判断するモードであり、従来の手動設定 (<code>"type": "enabled"</code> + <code>budget_tokens</code>) よりも柔軟である。<br> | |||
<br> | |||
<center> | |||
{| class="wikitable" | |||
|+ 設定対象モデルの一覧 | |||
! モデル !! APIモデル文字列 !! Thinking !! 最大入力トークン !! 最大出力トークン | |||
|- | |||
| Claude Opus 4.6 || <code>claude-opus-4-6</code> || Adaptive Thinking対応 || 200,000 (1M Beta対応) || 128,000 | |||
|- | |||
| Claude Sonnet 4.6 || <code>claude-sonnet-4-6</code> || Adaptive Thinking対応 || 200,000 (1M Beta対応) || 64,000 | |||
|- | |||
| Claude Haiku 4.5 || <code>claude-haiku-4-5</code> || 非対応 || 200,000 || 8,192 | |||
|} | |||
</center> | |||
<br> | |||
<u>※注意</u><br> | |||
<u>Extended Thinkingは、Haiku 4.5には搭載されていないが、高速・低コストな推論モデルとして十分な利用価値がある。</u><br> | |||
<br> | |||
<code>settings.json</code> に以下を記述する。<br> | |||
<syntaxhighlight lang="javascript"> | |||
{ | |||
"language_models": { | |||
"anthropic": { | |||
"available_models": [ | |||
{ | |||
// Opus 4.6 - Adaptive Thinking (推奨モード) | |||
// モデルが自動的に思考の深さを判断する | |||
"name": "claude-opus-4-6", | |||
"display_name": "Claude Opus 4.6 (Thinking)", | |||
"max_tokens": 200000, | |||
"max_output_tokens": 128000, | |||
"mode": { | |||
"type": "adaptive" | |||
} | |||
}, | |||
{ | |||
// Sonnet 4.6 - Adaptive Thinking (推奨モード) | |||
// Opus級の性能をSonnet価格帯で実現 | |||
"name": "claude-sonnet-4-6", | |||
"display_name": "Claude Sonnet 4.6 (Thinking)", | |||
"max_tokens": 200000, | |||
"max_output_tokens": 64000, | |||
"mode": { | |||
"type": "adaptive" | |||
} | |||
}, | |||
{ | |||
// Haiku 4.5 - Thinkingなし (高速・低コスト用途) | |||
// コミットメッセージ生成やスレッド要約など軽量タスク向け | |||
"name": "claude-haiku-4-5", | |||
"display_name": "Claude Haiku 4.5", | |||
"max_tokens": 200000, | |||
"max_output_tokens": 8192 | |||
} | |||
] | |||
} | |||
} | |||
} | |||
</syntaxhighlight> | |||
<br> | |||
Adaptive Thinkingではなく、思考トークンのバジェットを手動で指定したい場合は、<code>"type": "thinking"</code> と <code>"budget_tokens"</code> を設定する。<br> | |||
ただし、Opus 4.6 / Sonnet 4.6ではAdaptive Thinkingが公式に推奨されている。<br> | |||
<br> | |||
<syntaxhighlight lang="javascript"> | |||
{ | |||
"name": "claude-sonnet-4-6", | |||
"display_name": "Claude Sonnet 4.6 (Manual Thinking)", | |||
"max_tokens": 200000, | |||
"max_output_tokens": 64000, | |||
"mode": { | |||
"type": "thinking", | |||
"budget_tokens": 8192 | |||
} | |||
} | |||
</syntaxhighlight> | |||
<br> | |||
==== Claude Agent (ACP経由) ==== | |||
この方法については、後述の[[#ACP (Agent Client Protocol) の設定|ACPの設定]]セクションで詳述する。<br> | |||
<br><br> | |||
== GLMの設定 == | |||
==== GLMのThinkingモードについて ==== | |||
GLM-4.7 および GLM-5 には Thinking (深層思考) モードが搭載されており、いずれもデフォルトで有効である。<br> | |||
GLM の Thinking は以下の3種類から構成される。<br> | |||
<br> | |||
<center> | |||
{| class="wikitable" | |||
|+ GLM Thinking モードの種類 | |||
! 種類 !! 導入バージョン !! 概要 | |||
|- | |||
| Interleaved Thinking || GLM-4.5 || ツールコールの前後および結果受信後に都度推論を挟む仕組み<br>複雑なマルチステップタスクにおいて、各段階の判断精度が向上する。 | |||
|- | |||
| Preserved Thinking || GLM-4.7 || 会話の各ターンで生成された思考ブロックをコンテキスト内に保持し続ける仕組み<br>通常のモデルはターンごとに推論をリセットするが、<br>この機能により長いコーディングセッション中の文脈整合性が大幅に向上する。<br>APIでは <code>"clear_thinking": false</code> で有効になる。 | |||
|- | |||
| Turn-level Thinking || GLM-4.7 || リクエスト単位で Thinking の有効/無効を切り替え可能にする機能<br>簡単な質問ではオフにして高速応答を得つつ、<br>複雑なデバッグではオンにして精度を上げるといった使い分けが同一セッション内で可能 | |||
|} | |||
</center> | |||
<br> | |||
ClaudeのThinkingとの比較を以下に示す。<br> | |||
<br> | |||
ClaudeのAdaptive Thinkingがモデルに思考量を「お任せ」する設計であるのに対し、<br> | |||
GLMは、より細粒度な制御 (ターンごとのオン / オフ、思考履歴の保持) を開発者に委ねる設計となっている。<br> | |||
<br> | |||
ただし、これらの細かい制御パラメータ (<code>clear_thinking</code> や <code>thinking.type</code>) は、Z.AIのAPIレベルで処理されるため、<br> | |||
Zedの <code>settings.jsonファイル</code> からは直接指定できないことに注意すること。<br> | |||
<br> | |||
==== APIキーの登録 ==== | |||
[https://z.ai/ Z.AI]にアクセスしてアカウントを作成し、APIキーを取得する。<br> | |||
GLMは、Zedのビルトインプロバイダとしては登録されていないため、OpenAI互換プロバイダ機能を利用して接続する。<br> | |||
<br> | |||
APIキーの設定は、[Agent Panel]の設定UI ([agent: open settings] -> [Add Provider] -> [OpenAI Compatible]) から行う、または、<u>settings.jsonファイル</u> に直接記述する。<br> | |||
<br> | |||
==== モデル定義 ==== | |||
<center> | |||
{| class="wikitable" | |||
|+ 設定対象モデルの一覧 | |||
! モデル !! APIモデル文字列 !! Thinking !! パラメータ規模 !! 最大入力トークン !! 最大出力トークン | |||
|- | |||
| GLM-5 || <code>glm-5</code> || デフォルト有効 || 744B (40B active, MoE) || 200,000 || 128,000 | |||
|- | |||
| GLM-4.7 || <code>glm-4.7</code> || デフォルト有効 || 357B (MoE) || 200,000 || 128,000 | |||
|} | |||
</center> | |||
<br> | |||
===== APIエンドポイントの選択 ===== | |||
Z.AIには用途別に異なるエンドポイントが用意されている。<br> | |||
<br> | |||
<center> | |||
{| class="wikitable" | |||
|+ Z.AI APIエンドポイント | |||
! 用途 !! エンドポイントURL | |||
|- | |||
| GLM Coding Plan (コーディング特化サブスクリプション) || https://api.z.ai/api/coding/paas/v4 | |||
|- | |||
| 汎用API || https://api.z.ai/api/paas/v4/ | |||
|} | |||
</center> | |||
<br> | |||
自身の契約プランに応じて適切な方を選択する。<br> | |||
<br> | |||
<u>settings.jsonファイル</u> に、以下に示す設定を記述する。<br> | |||
<br> | |||
<syntaxhighlight lang="javascript"> | |||
{ | |||
"language_models": { | |||
"openai_compatible": { | |||
"Z.ai": { | |||
// GLM Coding Plan 利用時のエンドポイント | |||
// 汎用APIの場合は https://api.z.ai/api/paas/v4/ を指定する | |||
"api_url": "https://api.z.ai/api/coding/paas/v4", | |||
"available_models": [ | |||
{ | |||
// GLM-5 - ThinkingはAPI側でデフォルト有効 | |||
// 744Bパラメータ (40B active)、複雑なシステム設計向け | |||
"name": "glm-5", | |||
"display_name": "GLM-5", | |||
"max_tokens": 200000, | |||
"max_output_tokens": 128000, | |||
"max_completion_tokens": 128000, | |||
"capabilities": { | |||
"tools": true, | |||
"images": false, | |||
"parallel_tool_calls": true, | |||
"prompt_cache_key": true | |||
} | |||
}, | |||
{ | |||
// GLM-4.7 - ThinkingはAPI側でデフォルト有効 | |||
// Preserved Thinking / Turn-level Thinkingを搭載 | |||
"name": "glm-4.7", | |||
"display_name": "GLM-4.7", | |||
"max_tokens": 200000, | |||
"max_output_tokens": 128000, | |||
"max_completion_tokens": 128000, | |||
"capabilities": { | |||
"tools": true, | |||
"images": false, | |||
"parallel_tool_calls": true, | |||
"prompt_cache_key": true | |||
} | |||
} | |||
] | |||
} | |||
} | |||
} | |||
} | |||
</syntaxhighlight> | |||
<br> | |||
==== OpenRouter経由での利用 ==== | |||
Z.AIの直接接続に加えて、[https://openrouter.ai/ OpenRouter]経由でもGLMを利用可能である。<br> | |||
OpenRouterはZedにビルトインサポートされているため、設定がやや簡便になるメリットがある。<br> | |||
<br> | |||
# [Agent Panel]設定 ([agent: open settings]) を開く。 | |||
# [LLM Providers]から <u>OpenRouter</u> を追加して、OpenRouterのAPIキーを入力する。 | |||
# モデルセレクタのドロップダウンにGLM系モデルが表示される。 | |||
<br> | |||
環境変数 <code>OPENROUTER_API_KEY</code> を設定しておくことでも認識される。<br> | |||
<br><br> | |||
== ACP (Agent Client Protocol) の設定 == | |||
ACP (Agent Client Protocol) は、Zedが策定したオープンスタンダードであり、任意の外部エージェントをZedの[Agent Panel]内でネイティブに実行するためのプロトコルである。<br> | |||
ターミナル上のCLIツールとは異なり、ファイル差分のチャンク単位での確認・承認、チェックポイント機能、Zed内蔵ツール (リンター、Language Server等) との統合といったメリットがある。<br> | |||
<br> | |||
現在、Zedでは以下に示す外部エージェントがサポートされている。<br> | |||
<br> | |||
<center> | |||
{| class="wikitable" | |||
|+ ACP対応外部エージェントの一覧 | |||
! エージェント !! 概要 !! 認証方式 | |||
|- | |||
| Claude Agent || Claude Code SDKベースのAnthropic製コーディングエージェント || Anthropic APIキー または Claude Pro/Maxサブスクリプション | |||
|- | |||
| Gemini CLI || Google製のACPリファレンス実装 || Googleアカウント | |||
|- | |||
| OpenCode || オープンソースのプロバイダ非依存コーディングエージェント || 各LLMプロバイダのAPIキー または OpenCode Zen | |||
|- | |||
| Codex || OpenAI製のコーディングエージェント || OpenAI APIキー | |||
|- | |||
| GitHub Copilot || GitHub / Microsoft製のAIコーディングアシスタント || GitHubアカウント | |||
|} | |||
</center> | |||
<br> | |||
<u>※注意</u><br> | |||
<u>Zedと外部エージェント間のやり取りはUIレベルのみであり、課金や利用規約は各エージェントプロバイダとの間で直接成立する。</u><br> | |||
<u>Zedは外部エージェントの利用に対して課金せず、Zedのゼロデータ保持契約やプライバシー保証はZedホスト型モデルにのみ適用される。</u><br> | |||
<br> | |||
==== Claude Agent (Claude Code連携) ==== | |||
Claude Agentは、Claude Code SDKをベースとしたACPアダプタを通じてZed内で動作する。<br> | |||
<br> | |||
Zedのファーストパーティエージェントと並行して利用でき、同一の[Agent Panel]内で切り替えながら使用可能である。<br> | |||
<br> | |||
===== セットアップ手順 ===== | |||
# <u>[Cmd] + [?]キー</u> (MacOS) または <u>[Ctrl] + [?]キー</u> (Windows / Linux) で[Agent Panel]を開く。 | |||
# 右上の[+]ボタンを押下する。 | |||
# 表示されるメニューから、[Claude Code]を選択する。 | |||
# 初回起動時には、<code>@zed-industries/claude-agent-acp</code> が自動的にインストールされる。<br>この管理版には、Claude Code CLIのベンダー版が含まれており、グローバルにインストール済みのClaude Codeがあっても、Zedはこの管理版を優先する。 | |||
<br> | |||
===== 認証の設定 ===== | |||
Zed 0.202.7以降、Claude Agentの認証は[Zed Agent Panel]のAPIキー設定とは完全に独立している。<br> | |||
つまり、[Agent Panel]の設定で登録したAnthropic APIキーは、Claude Agent側には使用されない。<br> | |||
<br> | |||
認証を行うには、Claude Agentのスレッドを開いた状態で以下のコマンドを実行する。<br> | |||
/login | |||
<br> | |||
このコマンドにより、以下に示す2つの認証方式から選択できる。<br> | |||
<br> | |||
* APIキー認証 | |||
*: AnthropicのAPIキーを直接入力する方式 | |||
*: API使用料が発生する。 | |||
*: <br> | |||
* Claude Pro / Maxサブスクリプションによるログイン | |||
*: [Log in with Claude Code]を選択すると、既存のClaude Pro / Maxサブスクリプションを利用してログインできる。 | |||
<br> | |||
===== キーボードショートカットの設定 ===== | |||
Claude Agent スレッドを素早く開くためのキーボードショートカットを設定できる。<br> | |||
コマンドパレットから <code>zed: open keymap file</code> を実行して、<code>keymap.jsonファイル</code> に設定を記述する。<br> | |||
<br> | |||
<syntaxhighlight lang="javascript"> | |||
[ | |||
{ | |||
"bindings": { | |||
// MacOS : [Cmd] + [Alt] + [C]キーでClaude Agentスレッドを新規作成 | |||
"cmd-alt-c": ["agent::NewExternalAgentThread", { "agent": "claude_code" }] | |||
} | |||
} | |||
] | |||
</syntaxhighlight> | |||
<br> | |||
===== Claude Code実行ファイルのオーバーライド ===== | |||
Zedが使用するClaude Codeの実行ファイルを、独自にインストールしたバージョンに差し替える場合は、<code>settings.jsonファイル</code> に設定を記述する。<br> | |||
<br> | |||
<syntaxhighlight lang="javascript"> | |||
{ | |||
"agent_servers": { | |||
"claude": { | |||
"env": { | |||
"CLAUDE_CODE_EXECUTABLE": "/path/to/alternate-claude-code-executable" | |||
} | |||
} | |||
} | |||
} | |||
</syntaxhighlight> | |||
<br> | |||
==== Gemini CLI連携 ==== | |||
ACPを通じて、Gemini CLIも同様にZed内で動作させることができる。<br> | |||
<br> | |||
# [Agent Panel]を開いて、[+]ボタンから[Gemini CLI]を選択する。 | |||
# 初回起動時に、Gemini CLIが自動的にセットアップされる。 | |||
<br> | |||
キーボードショートカットを設定する場合は、<code>keymap.jsonファイル</code> に設定する。<br> | |||
<br> | |||
<syntaxhighlight lang="javascript"> | |||
[ | |||
{ | |||
"bindings": { | |||
// MacOS : [Cmd] + [Alt] + [G]キーでGemini CLIスレッドを新規作成 | |||
"cmd-alt-g": ["agent::NewExternalAgentThread", { "agent": "gemini" }] | |||
} | |||
} | |||
] | |||
</syntaxhighlight> | |||
<br> | |||
==== OpenCode連携 ==== | |||
[https://opencode.ai/ OpenCode] は、オープンソースのAIコーディングエージェントであり、ACP に完全対応している。<br> | |||
特定のLLMプロバイダに依存せず、Claude、GPT、Gemini、GLM等、任意のモデルを切り替えて利用できる点が大きな特徴である。<br> | |||
<br> | |||
ターミナルネイティブな設計思想を持ちつつ、ACPを通じてZedの[Agent Panel]内でもネイティブに動作する。<br> | |||
<br> | |||
===== インストール ===== | |||
OpenCodeは事前にシステムへインストールしておく必要がある。<br> | |||
<br> | |||
# インストールスクリプト (全プラットフォーム共通) | |||
curl -fsSL https://opencode.ai/install | bash | |||
# npm (Linux) | |||
npm i -g opencode-ai@latest | |||
# Homebrew (MacOS) - anomalyco tap (推奨、常に最新) | |||
brew install anomalyco/tap/opencode | |||
# Homebrew (MacOS) - 公式 formula (更新頻度はやや低い) | |||
brew install opencode | |||
# Windows(Scoop) | |||
scoop install opencode | |||
# Windows(Chocolatey) | |||
choco install opencode | |||
<br> | |||
インストール後、以下のコマンドで正常にインストールされたことを確認する。<br> | |||
opencode --version | |||
<br> | |||
===== セットアップ手順 ===== | |||
OpenCodeのZedへの統合には、ACPレジストリ / Extension経由と手動設定の2つの方法がある。<br> | |||
<br> | |||
* ACPレジストリ / Extension 経由 (推奨) | |||
*: Zed 0.221.x以降では、ACPレジストリが外部エージェントのインストール方法として推奨されている。 | |||
*: この方法では、プラットフォームに応じたバイナリのダウンロードや起動設定が自動的に行われるため、手動設定は不要である。 | |||
*: <br> | |||
*# コマンドパレットから <code>zed: extensions</code> を実行して、[Extensions]パネルを開く。 | |||
*# 検索バーで <u>OpenCode</u> を検索する。フィルターで <u>Agent Servers</u> を選択すると見つけやすい。 | |||
*# OpenCodeのExtensionを見つけたら、[Install]ボタンを押下する。 | |||
*# インストール完了後、[Agent Panel]の[+]ボタンのメニューに <u>OpenCode</u> が追加される。 | |||
*: <br> | |||
*: この方法でインストールした場合、ZedがOpenCodeのバイナリ管理とバージョン更新を自動的に行う。 | |||
*: <u>これは、システムにグローバルインストールしたOpenCodeとは独立して動作する。</u> | |||
*: <br> | |||
* 手動設定 (settings.jsonファイル) | |||
*: システムにインストール済みのOpenCodeを直接利用する場合、または、Extensionが利用できない環境では、<code>settings.jsonファイル</code> に設定を記述して、 | |||
*: 手動でACPエージェントサーバとして登録する。 | |||
*: <syntaxhighlight lang="json"> | |||
{ | |||
"agent_servers": { | |||
"OpenCode": { | |||
"command": "opencode", | |||
"args": ["acp"] | |||
} | |||
} | |||
} | |||
</syntaxhighlight> | |||
<br> | |||
上記の設定により、<code>opencode acp</code> コマンドがACP互換のサブプロセスとして起動され、JSON-RPC over stdioでZedと通信する。<br> | |||
スレッドの開始は、コマンドパレットから <code>agent: new thread</code> を実行し、エージェント選択でOpenCodeを指定する。<br> | |||
<br> | |||
===== キーボードショートカットの設定 ===== | |||
OpenCodeスレッドを素早く開くためのキーボードショートカットを設定できる。<br> | |||
<br> | |||
<u>keymap.jsonファイル</u> に設定を記述する。<br> | |||
<br> | |||
<syntaxhighlight lang="javascript"> | |||
[ | |||
{ | |||
"bindings": { | |||
// MacOS : [Cmd] + [Alt] + [O]キーでOpenCodeスレッドを新規作成 | |||
"cmd-alt-o": [ | |||
"agent::NewExternalAgentThread", | |||
{ | |||
"agent": { | |||
"custom": { | |||
"name": "OpenCode", | |||
"command": { | |||
"command": "opencode", | |||
"args": ["acp"] | |||
} | |||
} | |||
} | |||
} | |||
] | |||
} | |||
} | |||
] | |||
</syntaxhighlight> | |||
<br> | |||
<u>※注意</u><br> | |||
<u>Extension経由でインストールした場合と手動設定の場合で、<u>keymap.jsonファイル</u> の記述形式が異なる場合がある。</u><br> | |||
<u>Extension経由の場合は、エージェント名をレジストリ登録名で指定する形式になることがある。</u><br> | |||
<br> | |||
===== 使用するモデルの設定 ===== | |||
OpenCode はプロバイダ非依存であり、使用するモデルはOpenCode側の設定ファイル (<u>~/.config/opencode/opencode.jsonファイル</u>) で管理する。<br> | |||
<br> | |||
<syntaxhighlight lang="javascript"> | |||
{ | |||
// Claudeを使用する場合 | |||
"model": "anthropic/claude-sonnet-4-6" | |||
// GLMを使用する場合 | |||
// "model": "z-ai/glm-4.7" | |||
} | |||
</syntaxhighlight> | |||
<br> | |||
OpenCodeのTUI上で <code>/connect</code> コマンドを実行してプロバイダの認証を行う、または、環境変数 (<code>ANTHROPIC_API_KEY</code> 等) を設定しておくことにより、各プロバイダのAPIが利用可能になる。<br> | |||
<br> | |||
OpenCode独自のOpenCode Zenサービスを利用する場合は、[https://opencode.ai/auth opencode.ai/auth]にアクセスして、APIキーを取得する。<br> | |||
<br> | |||
===== 対応機能 ===== | |||
OpenCodeは、ACP経由で以下に示す機能をサポートしている。<br> | |||
<br> | |||
* ビルトインツール (ファイル操作、ターミナルコマンド実行等) | |||
* カスタムツール および スラッシュコマンド | |||
* OpenCodeの設定ファイルで構成したMCPサーバ | |||
* プロジェクト固有のルール (<u>AGENTS.md</u>) | |||
* カスタムフォーマッタおよびリンター | |||
* エージェント機能とパーミッションシステム | |||
<br> | |||
<u>※注意</u><br> | |||
<u>一部のビルトインスラッシュコマンド (<code>/undo</code>、<code>/redo</code> 等) は、ACP経由では現時点で未サポートである。</u><br> | |||
<br> | |||
===== デバッグ ===== | |||
OpenCodeとZed間のACP通信に問題が発生した場合は、コマンドパレットから <code>dev: open acp logs</code> を実行することにより、送受信されているJSON-RPCメッセージを確認できる。<br> | |||
このログは、GitHub Issueへの報告時にも有用である。<br> | |||
<br> | |||
==== ACP利用時の制限事項 ==== | |||
外部エージェント (Claude Agent、Gemini CLI、OpenCode 等) は、Zedのファーストパーティエージェントと比較して、一部の機能が制限される場合がある。<br> | |||
<br> | |||
具体的には、以下に示す機能が外部エージェントでは利用できない可能性がある。<br> | |||
<br> | |||
* スレッド履歴からの復元 | |||
* チェックポイント機能 | |||
* トークン使用量の表示 | |||
* 過去メッセージの編集 | |||
* 一部のスラッシュコマンド (各エージェントの SDK / ACP 実装がまだ対応していないもの) | |||
<br> | |||
これらの機能の対応状況はエージェントごとに異なり、今後のアップデートで順次拡充される見込みである。<br> | |||
<br><br> | |||
== デフォルトモデルとお気に入りの設定 == | |||
日常的に複数のモデルを切り替えて使う場合は、デフォルトモデルの指定とお気に入り登録を行うと効率的である。<br> | |||
<br> | |||
[Agent Panel]のモデルセレクタは <u>[Cmd] + [Alt] + [/]キー</u> (MacOS) / <u>[Ctrl] + [Alt] + [/]キー</u> (Linux) で開くことができ、<br> | |||
お気に入りモデル間は <u>[Alt] + [Tab]キー</u> (MacOS) / <u>[Alt] + [L]キー</u> (Linux) で素早くサイクルできる。<br> | |||
<br> | |||
<syntaxhighlight lang="javascript"> | |||
{ | |||
"agent": { | |||
// デフォルトモデルの設定 | |||
// [Agent Panel]を開いた際に最初に選択されるモデル | |||
"default_model": { | |||
"provider": "anthropic", | |||
"model": "claude-sonnet-4-6" | |||
}, | |||
// お気に入りモデルの設定 | |||
// [Alt] + [Tab]キー (MacOS) / [Alt] + [L]キー (Linux) で素早く切り替え可能 | |||
"favorite_models": [ | |||
{ "provider": "anthropic", "model": "claude-opus-4-6" }, | |||
{ "provider": "anthropic", "model": "claude-sonnet-4-6" }, | |||
{ "provider": "anthropic", "model": "claude-haiku-4-5" }, | |||
{ "provider": "openai_compatible", "model": "glm-4.7" }, | |||
{ "provider": "openai_compatible", "model": "glm-5" } | |||
], | |||
// コミットメッセージ生成やスレッド要約には、Haikuを割り当て (低コスト) | |||
"inline_model": { | |||
"provider": "anthropic", | |||
"model": "claude-sonnet-4-6" | |||
}, | |||
"commit_message_model": { | |||
"provider": "anthropic", | |||
"model": "claude-haiku-4-5" | |||
} | |||
} | |||
} | |||
</syntaxhighlight> | |||
<br><br> | |||
== Agent Profile (ツールプロファイル) の活用 == | |||
Zedの[Agent Panel]には、タスクの性質に応じたプロファイルが用意されている。<br> | |||
<br> | |||
<u>[Shift] + [Tab]キー</u> でプロファイル間を素早く切り替えることができる。<br> | |||
<br> | |||
<center> | |||
{| class="wikitable" | |||
|+ 標準プロファイル | |||
! プロファイル名 !! 概要 !! 主な用途 | |||
|- | |||
| Write || ファイル書き込みおよびターミナルコマンド実行を含む全ツールが有効 || コード生成、リファクタリング、ファイル操作 | |||
|- | |||
| Ask || 読み取り専用ツールのみ有効 || コードベースに関する質問、コードレビュー (変更リスクなし) | |||
|- | |||
| Minimal || ツールなし || LLMとの一般的な会話 (コードベースの知識が不要な場合) | |||
|} | |||
</center> | |||
<br> | |||
カスタムプロファイルの作成は、コマンドパレットから <code>agent: manage profiles</code> を実行する、または、<br> | |||
<u>[Cmd] + [Alt] + [P]キー</u> (MacOS) / <u>[Ctrl] + [Alt] + [P]キー</u> (Linux) で開くプロファイル管理モーダルから行える。<br> | |||
<br><br> | |||
== settings.jsonの統合例 == | |||
上記の設定を全て統合した <u>settings.jsonファイル</u> の全体を以下に示す。<br> | |||
<br> | |||
<syntaxhighlight lang="javascript"> | |||
{ | |||
// ==================================================================== | |||
// LLM プロバイダ設定 | |||
// ==================================================================== | |||
"language_models": { | |||
// --- Anthropic(Claude)--- | |||
"anthropic": { | |||
"available_models": [ | |||
{ | |||
"name": "claude-opus-4-6", | |||
"display_name": "Claude Opus 4.6 (Thinking)", | |||
"max_tokens": 200000, | |||
"max_output_tokens": 128000, | |||
"mode": { | |||
"type": "adaptive" | |||
} | |||
}, | |||
{ | |||
"name": "claude-sonnet-4-6", | |||
"display_name": "Claude Sonnet 4.6 (Thinking)", | |||
"max_tokens": 200000, | |||
"max_output_tokens": 64000, | |||
"mode": { | |||
"type": "adaptive" | |||
} | |||
}, | |||
{ | |||
"name": "claude-haiku-4-5", | |||
"display_name": "Claude Haiku 4.5", | |||
"max_tokens": 200000, | |||
"max_output_tokens": 8192 | |||
} | |||
] | |||
}, | |||
// --- Z.AI(GLM)--- OpenAI互換プロバイダとして接続 | |||
"openai_compatible": { | |||
"Z.ai": { | |||
"api_url": "https://api.z.ai/api/coding/paas/v4", | |||
"available_models": [ | |||
{ | |||
"name": "glm-4.7", | |||
"display_name": "GLM-4.7", | |||
"max_tokens": 200000, | |||
"max_output_tokens": 128000, | |||
"max_completion_tokens": 128000, | |||
"capabilities": { | |||
"tools": true, | |||
"images": false, | |||
"parallel_tool_calls": true, | |||
"prompt_cache_key": true | |||
} | |||
}, | |||
{ | |||
"name": "glm-5", | |||
"display_name": "GLM-5", | |||
"max_tokens": 200000, | |||
"max_output_tokens": 128000, | |||
"max_completion_tokens": 128000, | |||
"capabilities": { | |||
"tools": true, | |||
"images": false, | |||
"parallel_tool_calls": true, | |||
"prompt_cache_key": true | |||
} | |||
} | |||
] | |||
} | |||
} | |||
}, | |||
// ==================================================================== | |||
// Agent Panel設定 | |||
// ==================================================================== | |||
"agent": { | |||
"default_model": { | |||
"provider": "anthropic", | |||
"model": "claude-sonnet-4-6" | |||
}, | |||
"favorite_models": [ | |||
{ "provider": "anthropic", "model": "claude-opus-4-6" }, | |||
{ "provider": "anthropic", "model": "claude-sonnet-4-6" }, | |||
{ "provider": "anthropic", "model": "claude-haiku-4-5" }, | |||
{ "provider": "openai_compatible", "model": "glm-4.7" }, | |||
{ "provider": "openai_compatible", "model": "glm-5" } | |||
], | |||
"commit_message_model": { | |||
"provider": "anthropic", | |||
"model": "claude-haiku-4-5" | |||
} | |||
}, | |||
// ==================================================================== | |||
// Claude Agent (ACP) の実行ファイルオーバーライド(任意) | |||
// ==================================================================== | |||
// "agent_servers": { | |||
// "claude": { | |||
// "env": { | |||
// "CLAUDE_CODE_EXECUTABLE": "/path/to/alternate-claude-code-executable" | |||
// } | |||
// } | |||
// } | |||
} | |||
</syntaxhighlight> | |||
<br><br> | |||
== キーボードショートカット一覧 == | |||
<center> | |||
{| class="wikitable" | |||
|+ 主要なキーボードショートカット | |||
! 操作 !! <acOS !! Windows / Linux | |||
|- | |||
| [Agent Panel]を開く || <code>[Cmd] + [?]キー</code> || <code>[Ctrl] + [?]キー</code> | |||
|- | |||
| モデルセレクタを開く || <code>[Cmd] + [Alt] + [/]キー</code> || <code>[Ctrl] + [Alt] + [/]キー</code> | |||
|- | |||
| お気に入りモデルのサイクル || <code>[Alt] + [Tab]キー</code> || <code>[Alt] + [L]キー</code> | |||
|- | |||
| Agent Profileの切り替え || <code>[Shift] + [Tab]キー</code> || <code>[Shift] + [Tab]キー</code> | |||
|- | |||
| Agent Profile管理モーダルを開く || <code>[Cmd] + [Alt] + [P]キー</code> || <code>[Alt] + [P]キー</code> | |||
|- | |||
| メッセージエディタの拡大 || <code>[Shift] + [Alt] + [Esc]キー</code> || <code>[Shift] + [Alt] + [Escape]キー</code> | |||
|- | |||
| Claude Agentスレッドを新規作成 (要keymap設定) || <code>[Cmd] + [Alt] + [C]キー</code> || (要keymap設定) | |||
|- | |||
| Gemini CLIスレッドを新規作成 (要keymap設定) || <code>[Cmd] + [Alt] + [G]キー</code> || (要keymap設定) | |||
|- | |||
| OpenCodeスレッドを新規作成 (要keymap設定) || <code>[Cmd] + [Alt] + [O]キー</code> || (要keymap設定) | |||
|} | |||
</center> | |||
<br><br> | <br><br> | ||
| 167行目: | 865行目: | ||
この場合は、RADVまたはMesaドライバを使用する。<br> | この場合は、RADVまたはMesaドライバを使用する。<br> | ||
<br> | <br> | ||
"Zed failed to open a window." | <u>"Zed failed to open a window."</u> エラーが出力される場合は、Vulkanが互換性のあるGPUを見つけられないことを意味する。<br> | ||
"NoSupportedDeviceFound"エラーが出力される場合は、Vulkanが互換性のあるGPUを見つけられないことを意味する。<br> | <u>"NoSupportedDeviceFound"</u> エラーが出力される場合は、Vulkanが互換性のあるGPUを見つけられないことを意味する。<br> | ||
vulkan-toolsパッケージをインストールすることにより、Vulkanのトラブルシューティングを開始できる。<br> | vulkan-toolsパッケージをインストールすることにより、Vulkanのトラブルシューティングを開始できる。<br> | ||
<br> | <br> | ||
<code>vkcube</code>コマンドを実行することにより、現在のグラフィック設定および回転するキューブが表示される。<br> | <code>vkcube</code> コマンドを実行することにより、現在のグラフィック設定および回転するキューブが表示される。<br> | ||
もし、表示されない場合は、Vulkan互換GPUドライバをインストールすることで解決できる。<br> | もし、表示されない場合は、Vulkan互換GPUドライバをインストールすることで解決できる。<br> | ||
ただし、例えば、ARMベースのMacOS上でLinuxを実行している場合は、Vulkanがサポートされていない場合もある。<br> | ただし、例えば、ARMベースのMacOS上でLinuxを実行している場合は、Vulkanがサポートされていない場合もある。<br> | ||
vkcube | vkcube | ||
<br> | <br> | ||
"ERROR_INITIALIZATION_FAILED"エラー、あるいは、"GPU Crashed、ERROR_SURFACE_LOST_KHR"エラーが表示される場合、<br> | <u>"ERROR_INITIALIZATION_FAILED"</u> エラー、あるいは、<u>"GPU Crashed、ERROR_SURFACE_LOST_KHR"</u> エラーが表示される場合、<br> | ||
GPUに別のドライバをインストールする、または、別のGPUを選択して実行することにより回避できる可能性がある。<br> | GPUに別のドライバをインストールする、または、別のGPUを選択して実行することにより回避できる可能性がある。<br> | ||
<br> | <br> | ||
ディスクリートGPUではなく統合GPUを選択してZedを起動する場合、Zedを実行する前に環境変数<code>DRI_PRIME</code>を<code>1</code> | ディスクリートGPUではなく統合GPUを選択してZedを起動する場合、Zedを実行する前に環境変数 <code>DRI_PRIME</code> を <code>1</code> に設定することにより変更できる。<br> | ||
<br> | |||
export DRI_PRIME=1 | export DRI_PRIME=1 | ||
cd /<Zedのインストールディレクトリ>/bin | cd /<Zedのインストールディレクトリ>/bin | ||
| 188行目: | 887行目: | ||
export MESA_VK_DEVICE_SELECT=list zed --foreground | export MESA_VK_DEVICE_SELECT=list zed --foreground | ||
<br> | <br> | ||
amdvlkを使用している場合、sudo $(which zed)コマンドで実行する時のみ、Zedが起動する場合がある。<br> | amdvlkを使用している場合、sudo $(which zed) コマンドで実行する時のみ、Zedが起動する場合がある。<br> | ||
これを修正するには、amdvlkとlib32-amdvlkパッケージをアンインストールして、mesa/vulkanをインストールする。<br> | これを修正するには、amdvlkとlib32-amdvlkパッケージをアンインストールして、mesa/vulkanをインストールする。<br> | ||
<br> | <br> | ||
==== OpenSSLエラー ==== | ==== OpenSSLエラー ==== | ||
システムがFIPSモードで動作している場合 (/proc/sys/crypto/fips_enabledが1に設定されている場合)、Zedが起動しない場合がある。<br> | システムがFIPSモードで動作している場合 (/proc/sys/crypto/fips_enabledが1に設定されている場合)、Zedが起動しない場合がある。<br> | ||
zed -- | <br> | ||
<code>zed --foreground</code> コマンドを実行する時、以下に示すようなエラーが出力される。<br> | |||
crypto/fips/fips.c:154: OpenSSL internal error: FATAL FIPS SELFTEST FAILURE | crypto/fips/fips.c:154: OpenSSL internal error: FATAL FIPS SELFTEST FAILURE | ||
<br> | <br> | ||
| 201行目: | 901行目: | ||
<br> | <br> | ||
これにより、Zedはシステムのlibsslとlibcryptoライブラリにフォールバックすることができる。<br> | これにより、Zedはシステムのlibsslとlibcryptoライブラリにフォールバックすることができる。<br> | ||
<br> | |||
==== APIキーが認識されない ==== | |||
環境変数で設定した APIキーが認識されない場合は、Zedを完全に終了してから再起動する。<br> | |||
<br> | |||
シェルの設定ファイルを変更した後は、新しいターミナルセッションを開いてからZedを起動する必要がある。<br> | |||
<br> | |||
==== GLMモデルがモデルセレクタに表示されない ==== | |||
<u>settings.jsonファイr</u> の <code>openai_compatible</code> セクションのJSON構文が正しいことを確認する。<br> | |||
特に、既存の <code>language_models</code> ブロック内に正しくネストされているかを確認する。<br> | |||
<br> | |||
設定ファイルを保存した後、[Agent Panel]の設定画面を1度閉じて再度開くと反映される場合がある。<br> | |||
<br> | |||
==== Claude Agentの認証エラー ==== | |||
Claude Agentの認証は、[Zed Agent Panel]のAnthropic APIキー設定とは独立している。<br> | |||
Claude Agentスレッド内で <code>/login</code> コマンドを再実行して、認証をやり直す。<br> | |||
<br> | |||
==== スレッドでエラーが発生した場合 ==== | |||
スレッドの内容をMarkdownとして開くことができる。<br> | |||
<br> | |||
コマンドパレットから <code>agent: open thread as markdown</code> を実行する、または、パネルのエディタにフォーカスした状態でファイルアイコンボタンを選択する。<br> | |||
<br> | |||
これを、GitHub Issueに添付して報告すると、問題の解決に役立つ。<br> | |||
<br><br> | |||
== 参考リンク == | |||
* [https://zed.dev/docs/ai/configuration Zed AI Configuration (公式ドキュメント)] | |||
* [https://zed.dev/docs/ai/llm-providers Zed LLM Providers (公式ドキュメント)] | |||
* [https://zed.dev/docs/ai/external-agents Zed External Agents (公式ドキュメント)] | |||
* [https://zed.dev/docs/ai/agent-panel Zed Agent Panel (公式ドキュメント)] | |||
* [https://zed.dev/docs/ai/agent-settings Zed Agent Settings (公式ドキュメント)] | |||
* [https://zed.dev/docs/ai/models Zed AI Models and Pricing] | |||
* [https://docs.z.ai/guides/capabilities/thinking-mode Z.AI Thinking Mode Documentation] | |||
* [https://docs.z.ai/guides/overview/migrate-to-glm-new Migrate to GLM-5 Guide] | |||
* [https://opencode.ai/docs/ OpenCode Documentation] | |||
* [https://opencode.ai/docs/acp/ OpenCode ACP Support] | |||
* [https://zed.dev/acp/agent/opencode OpenCode - ACP Agent (Zed公式)] | |||
* [https://zed.dev/acp Zed Agent Client Protocol (ACP) 概要] | |||
<br><br> | <br><br> | ||
{{#seo: | |||
|title={{PAGENAME}} : Exploring Electronics and SUSE Linux | MochiuWiki | |||
|keywords=MochiuWiki,Mochiu,Wiki,Mochiu Wiki,Electric Circuit,Electric,pcb,Mathematics,AVR,TI,STMicro,AVR,ATmega,MSP430,STM,Arduino,Xilinx,FPGA,Verilog,HDL,PinePhone,Pine Phone,Raspberry,Raspberry Pi,C,C++,C#,Qt,Qml,MFC,Shell,Bash,Zsh,Fish,SUSE,SLE,Suse Enterprise,Suse Linux,openSUSE,open SUSE,Leap,Linux,uCLnux,電気回路,電子回路,基板,プリント基板 | |||
|description={{PAGENAME}} - 電子回路とSUSE Linuxに関する情報 | This page is {{PAGENAME}} in our wiki about electronic circuits and SUSE Linux | |||
|image=/resources/assets/MochiuLogo_Single_Blue.png | |||
}} | |||
__FORCETOC__ | __FORCETOC__ | ||
[[カテゴリ:RHEL]][[カテゴリ:SUSE]][[カテゴリ:Raspberry_Pi]][[カテゴリ:PinePhone]] | [[カテゴリ:RHEL]][[カテゴリ:SUSE]][[カテゴリ:Raspberry_Pi]][[カテゴリ:PinePhone]] | ||