MochiuWiki : SUSE, EC, PCB
案内
メインページ
最近の更新
おまかせ表示
MediaWiki についてのヘルプ
ツール
リンク元
関連ページの更新状況
特別ページ
ページ情報
We ask for
Donations
検索
個人用ツール
ログイン
Toggle dark mode
名前空間
ページ
議論
表示
閲覧
ソースを閲覧
履歴を表示
インストール - OpenCodeのソースを表示
提供: MochiuWiki : SUSE, EC, PCB
←
インストール - OpenCode
あなたには「このページの編集」を行う権限がありません。理由は以下の通りです:
この操作は、次のグループのいずれかに属する利用者のみが実行できます:
管理者
、new-group。
このページのソースの閲覧やコピーができます。
== 概要 == OpenCodeは、オープンソースのAIコーディングエージェントである。<br> ターミナルベースのTUI (ターミナルユーザーインターフェース) を提供し、75以上のLLMプロバイダに対応している。<br> <br> 主要な特徴として、以下が挙げられる。<br> * Anthropic (Claude)、OpenAI (GPT)、Google (Gemini)、GitHub Copilot、Ollama等のモデルの主要プロバイダをサポート * 2026年1月にGitHub Copilotとの公式パートナーシップを発表 * プライバシー重視の設計 *: コードは送信されず、ローカルでの処理を優先 * CLI、TUI、Desktop アプリ、IDE拡張機能、Webインターフェースを提供 * MCP (Model Context Protocol) とLSP (Language Server Protocol) をサポート * 組み込みエージェント ** build (開発用) ** plan (読み取り専用分析) <br> OpenCodeは、Go言語でBubble Tea TUIフレームワークを使用して実装されている。<br> セッション管理、マルチセッション対応を備え、会話履歴の保存、復元、エクスポートが可能である。<br> <br> Desktop アプリはElectronベースのネイティブアプリケーションとして実装されており、TypeScriptで実装された内部CLI、SolidJS + Viteで構築されたフロントエンドを組み合わせている。<br> <br><br> == 主な機能 == OpenCodeは、多様な機能を提供する包括的なAIコーディングツールである。<br> <br> <center> {| class="wikitable" |+ 主要機能一覧 ! 機能 !! 説明 |- | TUI (Bubble Tea) || ターミナルベースの対話型インターフェース |- | マルチプロバイダ対応 || 75以上のLLMプロバイダをサポート |- | セッション管理 || 会話履歴の保存、復元、エクスポート |- | ツール統合 || ファイル操作、Bash実行、テスト実行等 |- | MCP (Model Context Protocol) || 外部ツールとの統合プロトコル |- | LSP (Language Server Protocol) || 25以上の組み込みLSPサーバーによる言語サーバーとの連携 |- | 組み込みエージェント || build (開発用)<br>plan (読み取り専用分析)<br>general (調査用)<br>explore (コード探索用) |- | Desktop アプリ || Electronベースのネイティブアプリ |- | IDE拡張機能 || VS Code、JetBrains等のIDE拡張 |- | カスタムコマンド || <u>.opencode/commands/</u> ディレクトリ内でユーザ定義コマンド作成 |- | Git統合 || <code>/undo</code>、<code>/redo</code> コマンドでGitバック付きの変更管理 |} </center> <br><br> == 対応AIプロバイダとモデル == OpenCodeは、75以上のLLMプロバイダに対応している。<br> <br> ==== 主要プロバイダ一覧 ==== <center> {| class="wikitable" |+ 主要プロバイダ一覧 ! プロバイダ !! 認証方法 !! 備考 |- | Anthropic || APIキー (<code>ANTHROPIC_API_KEY</code>) || Claude 4.x系をサポート |- | OpenAI || APIキー (<code>OPENAI_API_KEY</code>) || GPT-4o、o3等をサポート |- | Google || APIキー (<code>GOOGLE_API_KEY</code>) || Gemini 3等をサポート |- | GitHub Copilot || GitHub認証 (OAuth) || <code>/connect</code> コマンドで認証 |- | Z.AI || APIキー || GLM-5、GLM-4.7等をサポート<br>GLM Coding Plan対応 |- | AWS Bedrock || AWS認証情報 || Anthropicモデルのホスティング |- | Azure OpenAI || Azureエンドポイント || OpenAIモデルのホスティング |- | Ollama || ローカル実行 (認証不要) || ローカルモデルの実行 |- | OpenRouter || APIキー || 複数プロバイダのルーティング |- | Groq || APIキー || 高速推論 |- | Together AI || APIキー || オープンソースモデル |- | Fireworks AI || APIキー || 高速推論 |} </center> <br> ==== 推奨モデル ==== <center> {| class="wikitable" |+ 用途別推奨モデル ! 用途 !! 推奨モデル |- | 高精度コーディング || Claude Sonnet 4.5、GPT-4o |- | 高速処理 || Claude Haiku 4.5、Gemini 2.5 Flash |- | 複雑な推論 || Claude Opus 4.6、o3 |- | ローカル実行 || Qwen 2.5 Coder (Ollama) |- | コスト効率重視 || GLM-4.7、GLM-5 (Z.AI Coding Plan) |} </center> <br> ==== ローカルモデル (Ollama) ==== Ollamaを使用することで、ローカル環境でモデルを実行できる。<br> <br> ===== Ollamaのインストール ===== Ollamaの公式サイトからインストールスクリプトをダウンロードして実行する。<br> curl -fsSL https://ollama.com/install.sh | bash <br> ===== モデルのダウンロード ===== Ollamaでモデルをダウンロードする。<br> ollama pull qwen2.5-coder <br> ===== OpenCodeでの設定 ===== <code>opencode.json</code> でOllamaプロバイダを設定する。<br> <syntaxhighlight lang="json"> { "$schema": "https://opencode.ai/config.json", "model": "ollama/qwen2.5-coder" } </syntaxhighlight> <br><br> == 前提条件 == OpenCodeをインストールするには、以下の前提条件を満たす必要がある。<br> <br> ==== 標準インストール時の前提条件 ==== <center> {| class="wikitable" |+ 標準インストール時の前提条件 ! 要件 !! 詳細 |- | OS || Linux、MacOS、Windows |- | Node.js || npm経由のインストールに必要 (Node.js 18以上) |- | ネットワーク || AIプロバイダへの接続に必要 |- | AIプロバイダのAPIキー || 使用するプロバイダのAPIキーまたは認証情報 |} </center> <br><br> == インストール == OpenCodeのインストール方法を以下に示す。<br> <br> ==== クイックインストール (Linux) ==== 公式のインストールスクリプトを使用してインストールする。<br> curl -fsSL https://opencode.ai/install | bash <br><br> ==== Homebrew (MacOS) ==== Homebrewを使用してインストールできる。<br> brew install opencode <br><br> ==== npm (全プラットフォーム) ==== npmを使用してグローバルインストールする。<br> npm install -g opencode <br><br> ==== Windows (Scoop / Chocolatey) ==== Windowsでは、ScoopまたはChocolateyを使用してインストールできる。<br> <br> ===== Scoopでのインストール ===== scoop install opencode <br> ===== Chocolateyでのインストール ===== choco install opencode <br><br> ==== デスクトップアプリケーション ==== [https://opencode.ai/download OpenCodeの公式Webサイト]にアクセスして、デスクトップアプリケーションをダウンロードする。<br> <br> 対応プラットフォーム:<br> * Linux (deb、rpm) * MacOS (dmg) * Windows (exe) <br><br> ==== バージョン確認 ==== インストール後、バージョンを確認する。<br> opencode --version <br><br> == 初期設定 == OpenCodeの初期設定を以下に示す。<br> <br> ==== プロバイダの認証 ==== OpenCodeの初回起動時に、<code>/connect</code> コマンド または <code>opencode auth login</code> コマンドでAIプロバイダとの認証を設定する。<br> <br> ===== GitHub Copilotとの連携 ===== OpenCodeはGitHub Copilotの公式パートナーであり、<code>/connect</code> コマンドで認証を設定できる。<br> <br> OpenCodeを起動する。<br> opencode <br> 認証を設定する。<br> /connect <br> 例えば、GitHub Copilotを選択する。<br> Webブラウザが開き、GitHub認証ページが表示される。<br> <br> 認証を完了すると、OpenCodeでGitHub Copilotが使用可能になる。<br> <br><br> ===== APIキーによる認証 ===== 環境変数でAPIキーを設定する方法もある。<br> <syntaxhighlight lang="sh"> export ANTHROPIC_API_KEY="sk-..." export OPENAI_API_KEY="sk-..." export GOOGLE_API_KEY="..." </syntaxhighlight> <br> 環境変数を永続化する場合は、~/.profileファイル等に環境変数 <code>ANTHROPIC_API_KEY</code> を設定する。<br> <syntaxhighlight lang="sh"> export ANTHROPIC_API_KEY="sk-..." </syntaxhighlight> <br><br> ===== Z.AI (GLM) との連携 ===== Z.AIのGLMモデル (GLM-5、GLM-4.7等) をOpenCodeで使用するには、[https://z.ai/subscribe Z.AI GLM または GLM Coding Plan]のサブスクリプション契約およびAPIキーが必要である。<br> <br> ====== GLM / GLM Coding Planの概要 ====== GLM / GLM Coding Planは、Z.AIが提供するAIコーディング向けのサブスクリプションプランである。<br> <br> <center> {| class="wikitable" |+ GLM Coding Plan ! プラン !! 月額 !! GLM-5対応 !! 5時間あたりの目安 |- | Lite || $10 || 対応 || 約80プロンプト |- | Pro || $30 || 対応 || 約400プロンプト |- | Max || $120 || 対応 || 約1,600プロンプト |} </center> <br> 使用可能なモデルは以下の通りである。<br> * GLM-5 (ProプランおよびMaxプランのみ) * GLM-4.7 * GLM-4.6 * GLM-4.5 * GLM-4.5-Air <br> GLM-5はピーク時 (日本時間 15:00〜19:00) に3倍、オフピーク時に2倍のクォータを消費する。<br> 日常的なタスクにはGLM-4.7を使用し、複雑なタスクにのみGLM-5を使用することが推奨される。<br> <br> ====== 認証の設定手順 ====== Z.AIの[https://z.ai/manage-apikey/apikey-list APIコンソール]にアクセスして、APIキーを取得する。<br> <br> <code>opencode auth login</code> コマンドを実行して、プロバイダ選択で <u>Z.AI Coding Plan</u> を選択する。<br> <br> <syntaxhighlight lang="sh"> opencode auth login </syntaxhighlight> <br> ┌ Add credential │ ◆ Select provider │ ● Z.AI Coding Plan │ ... └ <br> Z.AIのAPIキーを入力する。<br> ┌ Add credential │ ◇ Select provider │ Z.AI Coding Plan │ ◇ Enter your API key │ <Z.AIのAPIキーを入力> └ <br> OpenCodeを起動して、<code>/models</code> コマンドでGLM-5 / GLM-4.7等のモデルを選択する。<br> opencode <br> /models <br><br> ====== トラブルシューティング : Insufficient balance ====== GLMモデルの使用時に、以下に示すエラーメッセージが表示される場合がある。<br> Insufficient balance or no resource package. Please recharge. <br> このエラーは、OpenCodeのプロバイダ設定がGLM Coding Plan専用のエンドポイントに接続されていない場合に発生する。<br> <br> GLM Coding Planでは、専用のAPIエンドポイント (https://api.z.ai/api/coding/paas/v4) を使用する必要がある。<br> プロバイダ選択で <u>Z.AI</u> (通常のAPI) を選択した場合、標準エンドポイント (https://api.z.ai/api/paas/v4) に接続されるため、Coding Planの残高が認識されず、上記のエラーが発生する。<br> <br> <center> {| class="wikitable" |+ Z.AI APIエンドポイントの違い ! エンドポイント !! URL !! 用途 |- | 標準 (通常API) || https://api.z.ai/api/paas/v4 || 従量課金のAPI利用 |- | Coding Plan専用 || https://api.z.ai/api/coding/paas/v4 || GLM Coding Planサブスクリプション利用 |} </center> <br> 対処方法として、一旦Z.AIの認証情報をログアウトしてから、<u>Z.AI Coding Plan</u> で再度ログインする。<br> <br> Z.AIの認証情報をログアウトする。<br> <syntaxhighlight lang="sh"> opencode auth logout </syntaxhighlight> <br> 再度ログインして、プロバイダ選択で <u>Z.AI Coding Plan</u> を選択する。<br> <syntaxhighlight lang="sh"> opencode auth login </syntaxhighlight> <br> ┌ Add credential │ ◆ Select provider │ ● Z.AI Coding Plan ← Z.AI ではなく、Z.AI Coding Planを選択すること │ ... └ <br> APIキーを入力して認証を完了した後、OpenCodeを起動して正常にGLMモデルが使用できることを確認する。<br> <br><br> ==== 設定ファイル ==== OpenCodeの設定ファイルは、<u>プロジェクトルート</u> または <u>ホームディレクトリ</u> に配置する。<br> <br> ===== 設定ファイルの場所 ===== 設定ファイルは以下の順序で検索される。<br> * プロジェクトルート *: <u>opencode.json</u> * ホームディレクトリ *: <u>~/.opencode/config.json</u> <br><br> ===== 設定ファイルの例 ===== <syntaxhighlight lang="json"> { "$schema": "https://opencode.ai/config.json", "model": "anthropic/claude-sonnet-4-5-20250929", "small_model": "anthropic/claude-haiku-4-5-20251001", "keybinds": { "leader": "ctrl+x" } } </syntaxhighlight> <br> 設定可能な項目を以下に示す。<br> * <code>model</code> *: 使用するモデル名 (プロバイダ/モデル名 形式) *: 例: <code>anthropic/claude-sonnet-4-5-20250929</code>、<code>openai/gpt-4o</code> * <code>small_model</code> *: 軽量タスク用のモデル (コスト削減に有効) *: 例: <code>anthropic/claude-haiku-4-5-20251001</code> * <code>keybinds.leader</code> *: リーダーキーの設定 *: デフォルト : <code>ctrl+x</code> <br><br> == CLIコマンド == OpenCodeは、CLIモードと対話モードの両方で使用できる。<br> <br> ==== 主要コマンド ==== <center> {| class="wikitable" |+ 主要コマンド一覧 ! コマンド !! 説明 |- | <code>opencode</code> || TUIを起動 |- | <code>opencode run "プロンプト"</code> || 非対話モードでプロンプトを実行 |- | <code>opencode --model プロバイダ/モデル名</code> || モデルを指定して起動 |- | <code>opencode --continue</code> || 前回のセッションを継続して起動 |- | <code>opencode auth login</code> || プロバイダの認証を設定 |- | <code>opencode auth logout</code> || 認証情報を削除 |- | <code>opencode models</code> || 使用可能なモデル一覧を表示 |- | <code>opencode mcp list</code> || MCPサーバ一覧を表示 |- | <code>opencode mcp add サーバー名</code> || MCPサーバを追加 |- | <code>opencode serve</code> || ヘッドレスバックエンドサーバを起動 |- | <code>opencode --version</code> || バージョンを表示 |- | <code>opencode --help</code> || ヘルプを表示 |} </center> <br> ==== 非対話モード ==== 非対話モードでは、プロンプトをコマンドライン引数として渡すことができる。<br> <br> ===== 使用例 ===== プロジェクトの概要を説明する。<br> opencode run "このプロジェクトの概要を説明して" <br> モデルを指定してテストを実行する。<br> opencode run "テストを実行して" --model anthropic/claude-sonnet-4-5-20250929 <br><br> == TUI (ターミナルユーザーインターフェース) == OpenCodeのTUIは、ターミナルベースの対話型インターフェースである。<br> <br> ==== スラッシュコマンド ==== TUI内でスラッシュコマンドを使用して、様々な操作を実行できる。<br> <br> <center> {| class="wikitable" |+ スラッシュコマンド一覧 ! コマンド !! 説明 |- | <code>/new</code> || 新しいセッションを開始 |- | <code>/init</code> || プロジェクト構造を分析 |- | <code>/undo</code> || 直前の変更を元に戻す (Git連携) |- | <code>/redo</code> || 元に戻した変更をやり直す |- | <code>/compact</code> || 会話を要約して圧縮 |- | <code>/share</code> || 会話の共有リンクを生成 |- | <code>/export</code> || 会話をMarkdownでエクスポート |- | <code>/sessions</code> || 過去のセッション一覧を表示 |- | <code>/models</code> || 使用可能なモデル一覧を表示 |- | <code>/agents</code> || エージェント一覧を表示 |- | <code>/connect</code> || プロバイダ認証を設定 |- | <code>/status</code> || 現在のステータスを表示 |- | <code>/mcp</code> || MCPサーバ一覧を表示 |- | <code>/theme</code> || テーマを変更 |- | <code>/editor</code> || 外部エディタで入力 |- | <code>/help</code> || ヘルプを表示 |- | <code>/commands</code> || コマンド一覧を表示 |- | <code>/exit</code> || OpenCodeを終了 |} </center> <br> ==== キーバインド ==== OpenCodeのリーダーキーのデフォルトは、[Ctrl] + [X]キーである。<br> リーダーキーを押した後に各キーを入力する。<br> <br> <center> {| class="wikitable" |+ キーバインド一覧 ! キー !! 説明 |- | [Ctrl] + [X] -> [N] || 新しいセッション |- | [Ctrl] + [X] -> [L] || セッション一覧 |- | [Ctrl] + [X] -> [T] || タイムライン |- | [Ctrl] + [X] -> [M] || モデル選択ダイアログ |- | [Ctrl] + [X] -> [C] || コンパクト表示 |- | [Ctrl] + [P] || コマンドパレット |- | [Tab] || Plan/Buildエージェント切替 |- | [Page Up] / [Page Down] || スクロール |- | [Shift] + [Enter] || 改行入力 |} </center> <br> ==== ファイル参照とBashコマンド ==== TUI内でファイル参照とBashコマンドの実行ができる。<br> <br> ===== ファイル参照 ===== <code>@</code> でファイルをファジー検索して参照を追加する。<br> @filename <br> ===== Bashコマンドの実行 ===== <code>!</code> をプレフィックスとしてBashコマンドを実行する。<br> !ls -la !git status <br><br> == CLIバイナリのビルド == ==== ビルドの前提条件 ==== <center> {| class="wikitable" |+ ビルドの前提条件 ! 項目 !! 要件 |- | Bun || 1.3.13以上<br>(リポジトリルートの <u>package.json</u> 内の <code>packageManager</code> フィールドで <code>bun@1.3.13</code> が指定されている) |- | git || 必須ではない。<br>(<u>packages/script/src/index.ts</u> 内で <code>git branch --show-current</code> が呼び出されるが、環境変数で回避可能) |- | ネットワーク || ビルド時に https://models.dev/api.json からモデル定義を取得 |- | ディスク空き容量 || 約3[GB]以上 (依存パッケージ + バイナリ約150[MB]) |} </center> <br> ===== 前提条件の確認コマンド ===== # Bunバージョン確認 (1.3.13以上が必要) bun --version # ネットワーク接続の確認 curl -s https://models.dev/api.json | head -c 100 <br> ==== ビルド方式の説明 ==== <center> {| class="wikitable" |+ ビルド方式の説明 ! 項目 !! 内容 |- | 言語 || TypeScript (Bunランタイム) |- | ビルド方式 || <code>Bun.build()</code> の <code>compile</code> オプションでスタンドアロン実行ファイルを生成 |- | ビルドスクリプト || <u>packages/opencode/script/build.ts</u> |- | 出力 || Bunランタイムを内蔵した単一バイナリ (<code>opencode</code>) |- | 出力先 || <u>packages/opencode/dist/opencode-linux-x64/bin/opencode</u> |- | バイナリサイズ || 約150MB (Bunランタイム、TypeScriptコード、Web UIアセットを含む) |} </center> <br> ネイティブモジュール (<code>@opentui/core</code>、<code>@parcel/watcher</code>) は、ビルドスクリプトが各プラットフォーム向けの <u>事前ビルド済みバイナリ</u> をダウンロードするため、<br> CLIビルドではC/C++のソースコードからのコンパイルは発生しない。<br> このため、CLIのビルドにおいては、デスクトップアプリビルドのようなGCC 10以降の要件はない。<br> <br> ==== ソースコードのダウンロード ==== [https://github.com/anomalyco/opencode/releases OpenCodeのGithub]にアクセスして、ソースコードをダウンロードする。<br> ダウンロードしたファイルを解凍する。<br> <br> tar xf opencode-<バージョン>.tar.gz cd opencode-<バージョン> <br> ==== ビルド手順 ==== ===== Step 1 : 環境変数の設定 ===== ソースディレクトリがGitリポジトリでない場合 (tarballから展開しただけの場合等) は、<u>packages/script/src/index.ts</u> 内で <code>git branch --show-current</code> が実行されて失敗するため、環境変数を設定する。<br> <syntaxhighlight lang="sh"> export OPENCODE_VERSION=<バージョン 例 : 1.14.41> export OPENCODE_CHANNEL=latest </syntaxhighlight> <br> 環境変数 <code>OPENCODE_VERSION</code> に <code>0.0.0-</code> で始まらない値を指定すると、<code>git</code> コマンドの呼び出しが回避される。<br> 環境変数 <code>OPENCODE_CHANNEL</code> はビルド成果物の <code>--version</code> 表示およびユーザエージェント文字列に使用される。<br> <br> ===== Step 2 : Bunのlinker設定 ===== デスクトップアプリビルドのセクションと同様に、リポジトリルートの <u>bunfig.toml</u> に <code>linker = "hoisted"</code> を追加する。<br> <br> vi /path/to/opencode-<バージョン>/bunfig.toml <br> <syntaxhighlight lang="toml"> [install] exact = true linker = "hoisted" [test] root = "./do-not-run-tests-from-root" </syntaxhighlight> <br> CLI単体のビルドではViteは使用されないため、isolated linkerでも動作する可能性がある。<br> <u>ただし、OpenCode Desktopのビルドと環境を共有する場合は、整合性を保つためhoistedモードを推奨する。</u><br> <br> ===== Step 3 : 依存パッケージのインストール ===== リポジトリルートで依存パッケージをインストールする。<br> このリポジトリはBunワークスペース構成のモノレポであるため、ルートでの <code>bun install</code> 実行で全パッケージの依存関係がインストールされる。<br> <br> isolated linkerからhoistedに切り替えた直後、または、過去のnode_modulesが残存している場合は、全てのnode_modulesディレクトリを削除してから再インストールする。<br> <br> cd /path/to/opencode-<バージョン> rm -rf node_modules packages/*/node_modules packages/*/*/node_modules bun install <br> <br> もし、bun installに失敗する場合は、node-gypをインストールする。<br> <br> bun add node-gyp -D # または npm install -g node-gyp <br> ===== Step 4 : ビルドの実行 ===== ビルドスクリプトを実行する。<br> <br> ./packages/opencode/script/build.ts --single <br> <code>--single</code> フラグは、現在のプラットフォームのみをビルドする。(例: <u>linux-x64</u>)<br> フラグなしで実行すると、全12プラットフォーム分のクロスコンパイルを試みる。<br> (<u>linux-x64</u>、<u>linux-arm64</u>、<u>darwin-x64</u>、<u>darwin-arm64</u>、<u>win32-x64</u>、<u>win32-arm64</u>、各baselineおよびmuslバリアント)<br> <br> ビルドスクリプトの処理内容を以下に示す。<br> <br> # <u>packages/opencode/script/generate.ts</u> が <code>https://models.dev/api.json</code> からモデルデータを取得して、<u>packages/opencode/src/provider/models.ts</u> 等のスナップショットを生成する。 # Web UI (<u>packages/app</u>) を <code>vite build</code> でビルドして、生成されたアセットを単一バイナリに埋め込む。 # <code>@opentui/core</code> および <code>@parcel/watcher</code> の全プラットフォーム向けプリビルドバイナリをインストールする。(<code>bun install --os="*" --cpu="*"</code>) # <code>Bun.build()</code> の <code>compile</code> オプションでTypeScriptをスタンドアロンバイナリにコンパイルして、<u>packages/opencode/dist/opencode-linux-x64/bin/opencode</u> に出力する。 # 自動Smoke testとして、生成されたバイナリの <code>--version</code> を実行して、出力を確認する。 <br> ==== 動作確認 ==== ビルドが完了した後、バイナリが生成されたかどうかを確認する。<br> ls -la packages/opencode/dist/opencode-linux-x64/bin/opencode <br> バージョンを表示する。<br> ./packages/opencode/dist/opencode-linux-x64/bin/opencode --version <br> ヘルプを表示する。<br> ./packages/opencode/dist/opencode-linux-x64/bin/opencode --help <br> TUIを起動する。<br> ./packages/opencode/dist/opencode-linux-x64/bin/opencode <br><br> ===== システムへのインストール ===== ビルドしたバイナリを <u>/usr/local/bin/</u> にコピーすると、システム全体で <code>opencode</code> コマンドとして使用できる。<br> <br> sudo cp packages/opencode/dist/opencode-linux-x64/bin/opencode /usr/local/bin/opencode sudo chmod +x /usr/local/bin/opencode <br> ユーザディレクトリにのみインストールする場合は、<u>~/.local/bin/</u> 等にコピーする。<br> mkdir -p ~/.local/bin cp packages/opencode/dist/opencode-linux-x64/bin/opencode ~/.local/bin/opencode chmod +x ~/.local/bin/opencode <br> ==== トラブルシューティング ==== <center> {| class="wikitable" |+ トラブルシューティング ! 問題 !! 原因 !! 対策 |- | <code>git branch --show-current</code> 失敗 || ソースがGitリポジトリではない || 環境変数を設定する。<br><br><code>export OPENCODE_VERSION=1.14.41</code><br><code>export OPENCODE_CHANNEL=latest</code> |- | <code>models.dev</code> に接続できない || ネットワーク制限またはプロキシ環境 || 事前に <u>api.json</u> をダウンロードしておき、環境変数 <code>MODELS_DEV_API_JSON=/path/to/api.json</code> で指定する。<br>詳細は、後述の[[#オフライン環境でのビルド|オフライン環境でのビルド]]を参照すること。 |- | <code>This script requires bun@^X.X.X, but you are using bun@X.X.X</code> || Bunのバージョンが古い || Bunをアップグレードする。<br><pre>bun upgrade</pre> |- | GLIBCバージョン不足 || GLIBCバージョンが古い || <code>--single</code> に加えて <code>--baseline</code> フラグを追加してビルドする。<br>または、muslビルドを検討する。 |- | <code>error: File not found ".../packages/sdk/js/node_modules/cross-spawn"</code> || isolated linker時代の壊れたシンボリックリンクが残存している || 全ての <u>node_modules</u> を削除して、再インストールする。<br>詳細は、Step 3を参照すること。 |- | Smoke testの失敗 || バイナリの実行可能パーミッションがない、またはGLIBCバージョン不足 || <code>chmod +x</code> でパーミッションを付与する。<br>GLIBCの場合は <code>--baseline</code> フラグを試行する。 |} </center> <br> ===== オフライン環境でのビルド ===== ネットワークに接続できない場合、モデルデータを事前にダウンロードしておく必要がある。<br> オンライン環境で事前にダウンロードする。<br> <br> curl -o api.json https://models.dev/api.json <br> ビルド時にローカルファイルを指定する。<br> <br> export MODELS_DEV_API_JSON=/path/to/api.json ./packages/opencode/script/build.ts --single <br ===== baselineビルド ===== CPUがAVX2命令セットをサポートしていない場合、<code>--baseline</code> フラグを追加する。<br> ./packages/opencode/script/build.ts --single --baseline <br> baselineビルドの出力先は <u>packages/opencode/dist/opencode-linux-x64-baseline/bin/opencode</u> となる。<br> <br> ===== 全プラットフォーム向けクロスコンパイル ===== <code>--single</code> フラグを外して実行すると、全12プラットフォーム向けのバイナリを生成する。<br> <br> ./packages/opencode/script/build.ts <br> ただし、Smoke testは現在のプラットフォーム向けのバイナリのみで実行される。<br> 他プラットフォーム向けのバイナリは、対象プラットフォーム上で別途動作確認する必要がある。<br> <br><br> == デスクトップアプリケーションのビルド == OpenCode Desktopは、Electronベースのデスクトップアプリケーションである。<br> <br> <u>バージョン 1.14.40以降、Tauri v2からElectronへ移行されており、Rustツールチェーンは不要となっている。</u><br> <br> ==== デスクトップアプリケーションの構成 ==== <center> {| class="wikitable" |+ Desktop アプリの構成 ! 項目 !! 内容 |- | フレームワーク || Electron 41.x + electron-vite + electron-builder |- | フロントエンド || SolidJS + Vite (TypeScript) |- | メインプロセス || Node.js (TypeScript、<u>packages/desktop/src/main/</u>) |- | サイドカー || OpenCode サーバの Node.js バンドル<br><u>packages/opencode/dist/node/</u> として生成され、<code>utilityProcess.fork</code> でメインプロセスから子プロセスとして起動される。 |- | パッケージング || electron-builder |- | 出力形式 (Linux) || AppImage、debパッケージ、rpmパッケージ |- | ソースディレクトリ || <u>packages/desktop/src/main/</u> (Electronメインプロセス)<br><u>packages/desktop/src/preload/</u> (preloadスクリプト)<br><u>packages/desktop/src/renderer/</u> (SolidJSフロントエンド) |- | 設定ファイル || <u>packages/desktop/electron.vite.config.ts</u> (electron-vite)<br><u>packages/desktop/electron-builder.config.ts</u> (electron-builder) |} </center> <br> 旧Tauri版とは異なり、<u>独立したCLIバイナリをサイドカーとしてバンドルしない</u>。<br> 代わりに、<u>packages/opencode/src/node.ts</u> から生成されるNode.jsバンドル (<u>packages/opencode/dist/node/</u>) がメインプロセスのutilityProcessとして起動される。<br> そのため、CLIバイナリのビルドセクションでビルドした <u>opencode</u> バイナリは、デスクトップアプリのビルドには使用されない。<br> <br> ==== ビルドの前提条件 ==== ===== Bun ランタイム ===== ビルドにはBun 1.3.13以上が必要である。<br> ルートの <u>package.json</u> 内 <code>packageManager</code> フィールドで <u>bun@1.3.13</u> が指定されている。<br> bun --version <br><br> ===== 依存ライブラリのインストール ===== Electron-builderがLinuxパッケージ (rpm / deb / AppImage) を生成するために、以下に示すツールが必要である。<br> <br> sudo zypper install -t pattern devel_basis sudo zypper install rpm-build dpkg fakeroot <br> * <u>rpm-build</u> *: rpmパッケージの生成に必要 * <u>dpkg</u>、<u>fakeroot</u> *: debパッケージの生成に必要 <br> electron-builderはAppImageを生成するために必要なツールを内部で自動取得するため、追加のインストールは不要である。<br> <br> Tauri版とは異なり、<u>Rustツールチェーン (rustc、cargo) およびwebkit2gtk3-develは不要</u> である。<br> <br> ===== ソースコードのダウンロード ===== [https://github.com/anomalyco/opencode/releases OpenCodeのGithub]にアクセスして、ソースコードをダウンロードする。<br> ダウンロードしたファイルを解凍する。<br> <br> tar xf opencode-<バージョン>.tar.gz cd opencode-<バージョン> <br> ==== ビルド ==== ===== Step 1 : 環境変数の設定 ===== ソースディレクトリがGitリポジトリでない場合、ビルド過程で <code>git branch --show-current</code> が実行されて失敗するため、環境変数を設定する。<br> <br> <syntaxhighlight lang="sh"> export OPENCODE_VERSION=<バージョン 例 : 1.14.41> export OPENCODE_CHANNEL=<prod / dev / beta のいずれかを指定> </syntaxhighlight> <br> 環境変数 <code>OPENCODE_VERSION</code> に <code>0.0.0-</code> で始まらない値を指定すると、Git呼び出しが回避される。<br> <br> 環境変数 <code>OPENCODE_CHANNEL</code> は <code>dev</code>、<code>beta</code>、<code>prod</code> のいずれかを指定する。<br> それ以外の値を指定した場合、<u>packages/desktop/electron-builder.config.ts</u> および <u>packages/desktop/electron.vite.config.ts</u> 内で <code>dev</code> として扱われる。<br> <br> <center> {| class="wikitable" |+ OPENCODE_CHANNELの値 ! 値 !! appId !! productName !! RPMパッケージ名 |- | dev || ai.opencode.desktop.dev || OpenCode Dev || opencode-dev |- | beta || ai.opencode.desktop.beta || OpenCode Beta || opencode-beta |- | prod || ai.opencode.desktop || OpenCode || opencode |} </center> <br> ===== Step 2 : Bunのlinker設定 ===== Bun 1.3のデフォルトのisolated linkerでは、各パッケージの依存関係が <u>node_modules/.bun/</u> 配下に隔離されたシンボリックリンク構造で配置される。<br> この構造では、Vite (electron-viteのレンダラビルド) のCommonJSリゾルバが、ワークスペース外の <code>shiki</code> 等のtransitive依存を解決できず、以下に示すエラーが発生する。<br> <br> [commonjs--resolver] Failed to resolve entry for package "shiki". The package may have incorrect main/module/exports specified in its package.json. <br> このエラーを回避するため、リポジトリルートの <u>bunfig.toml</u> を編集して、linkerをhoistedモード (npm互換のフラットなnode_modules構造) に切り替える。<br> <br> vi /path/to/opencode-<バージョン>/bunfig.toml <br> <u>bunfig.toml</u> ファイルの <code>[install]</code> セクションに <u>linker = "hoisted"</u> を追加する。<br> <br> <syntaxhighlight lang="toml"> [install] exact = true linker = "hoisted" [test] root = "./do-not-run-tests-from-root" </syntaxhighlight> <br> ===== Step 3 : 依存パッケージのインストール ===== プロジェクトルートで依存パッケージをインストールする。<br> このリポジトリはBunワークスペース構成のモノレポであり、ルートで <code>bun install</code> を実行することで全パッケージの依存関係がインストールされる。<br> <br> すでに過去にisolated linkerで <code>bun install</code> を実行している場合、各パッケージの <u>node_modules</u> 配下に古いシンボリックリンクが残っている。<br> hoistedモードで再構築する前に、すべての <u>node_modules</u> ディレクトリを削除する。<br> <br> cd /path/to/opencode-<バージョン> rm -rf node_modules packages/*/node_modules packages/*/*/node_modules <br> 削除しないまま <code>bun install</code> を実行した場合、isolated時代の壊れたシンボリックリンクが残存し、ビルド時に以下に示すエラーが発生する。<br> <br> error: File not found "/path/to/opencode-<バージョン>/packages/sdk/js/node_modules/cross-spawn" <br> クリーンアップ後、依存パッケージをインストールする。<br> <br> bun install <br> <code>postinstall</code> フックで <code>fix-node-pty</code> が自動実行される。<br> <br> もし、bun installに失敗する場合は、node-gypをインストールする。<br> <br> bun add node-gyp -D # または npm install -g node-gyp <br> ===== Step 4 : Electronビルドの実行 ===== Electronメインプロセス、preload、レンダラのビルドを実行する。<br> <br> bun run --cwd packages/desktop build <br> <u>build</u> スクリプト実行時、以下の処理が <code>prebuild</code> フックで自動実行される。<br> * <u>packages/desktop/scripts/copy-icons.ts</u> でチャンネル別のアイコンを <u>resources/icons/</u> にコピーする。 * <u>packages/opencode/script/build-node.ts</u> でNode.jsサイドカーバンドルを <u>packages/opencode/dist/node/</u> に出力する。 <br> その後、<code>electron-vite build</code> がメインプロセス (<u>out/main/</u>)、preload (<u>out/preload/</u>)、レンダラ (<u>out/renderer/</u>) の3つのバンドルを生成する。<br> <br> ネットワーク接続が必要である。<br> * <u>packages/opencode/script/generate.ts</u> が https://models.dev/api.json からモデル定義を取得する。 * SentryのPlugin等が外部リソースにアクセスする場合がある。 <br> ===== Step 5 : Linuxパッケージの生成 ===== electron-builderでAppImage、debパッケージ、rpmパッケージを生成する。<br> <br> electron-builderは、<code>@electron/rebuild</code> を内部で実行して、ネイティブモジュール (<u>msgpackr-extract</u> 等) を Electron向けに再コンパイルする。<br> <u>msgpackr-extract</u> のビルドには <code>-std=gnu++20</code> オプションが指定されるため、<u>C++20をサポートするGCC 10以降が必要</u>である。<br> <br> <u>※注意</u><br> <u>GCC 9以前では、以下に示すエラーが発生してビルドが失敗する。</u><br> <br> g++: error: unrecognized command line option '-std=gnu++20'; did you mean '-std=gnu++03'? make: *** [extract.target.mk:142: Release/obj.target/extract/src/extract.o] エラー 1 ⨯ node-gyp failed to rebuild '/path/to/opencode-<バージョン>/node_modules/msgpackr-extract' <br> electron-builderを実行する。<br> <br> bun run --cwd packages/desktop package:linux <br> このコマンドは、<code>electron-builder --linux --config electron-builder.config.ts</code> を実行する。<br> <u>packages/desktop/electron-builder.config.ts</u> 内の <code>linux.target</code> に AppImage、deb、rpmが指定されている。<br> <br> 特定の形式のみ生成する場合は、<code>--linux</code> の後に形式を指定する。<br> <br> # rpmのみ bun run --cwd packages/desktop package:linux -- rpm # debのみ bun run --cwd packages/desktop package:linux -- deb # AppImageのみ bun run --cwd packages/desktop package:linux -- AppImage <br> ===== 生成されたファイルの確認 ===== 出力先は <u>packages/desktop/dist/</u> である。<br> ファイル名のフォーマットは <u>packages/desktop/electron-builder.config.ts</u> 内の <code>artifactName</code> で指定される。<br> (デフォルト: <code>opencode-desktop-${os}-${arch}.${ext}</code>)<br> <br> # rpmパッケージ ls -la packages/desktop/dist/*.rpm # debパッケージ ls -la packages/desktop/dist/*.deb # AppImage ls -la packages/desktop/dist/*.AppImage <br> ==== 動作確認 ==== rpmパッケージをインストールして起動を確認する。<br> # rpmパッケージをインストール sudo zypper install ./packages/desktop/dist/opencode-desktop-linux-x64.rpm # OpenCodeデスクトップアプリを起動 # OPENCODE_CHANNEL=devでビルドした場合 opencode-dev <br> debパッケージで動作確認する場合は、以下に示すコマンドを実行する。<br> sudo dpkg -i ./packages/desktop/dist/opencode-desktop-linux-x64.deb <br> AppImageの場合、ダウンロードしたファイルに実行権限を付与してそのまま起動する。<br> chmod +x ./packages/desktop/dist/opencode-desktop-linux-x64.AppImage ./packages/desktop/dist/opencode-desktop-linux-x64.AppImage <br> ==== トラブルシューティング ==== <center> {| class="wikitable" |+ トラブルシューティング ! 問題 !! 原因 !! 対策 |- | <code>git branch --show-current</code> 失敗 || ソースがGitリポジトリではない || 環境変数を設定する。<br><br><code>export OPENCODE_VERSION=1.14.41</code><br><code>export OPENCODE_CHANNEL=dev</code> |- | <code>[commonjs--resolver] Failed to resolve entry for package "shiki"</code> || Bunのisolated linkerが原因で、ワークスペース外の transitive 依存をViteが解決できない || <u>bunfig.toml</u> ファイルの <code>[install]</code> セクションに <code>linker = "hoisted"</code> を設定して、<code>bun install</code> を再実行する。<br>詳細は、Step 2を参照すること。 |- | <code>error: File not found ".../packages/sdk/js/node_modules/cross-spawn"</code> || isolated linkerで作成された壊れたシンボリックリンクが残存している || 全ての <u>node_modules</u> を削除して、再インストールする。<br><br><pre>rm -rf node_modules \ packages/*/node_modules \ packages/*/*/node_modules bun install</pre> |- | <code>models.dev</code> に接続できない || ネットワーク制限 || 事前に <u>api.json</u> をダウンロードしておき、<code>MODELS_DEV_API_JSON=/path/to/api.json</code> を環境変数で指定する。 |- | rpmパッケージが生成されない || rpm-buildツール不足 || <code>sudo zypper install rpm-build</code> でrpmビルドツールをインストールする。 |- | debパッケージが生成されない || dpkg / fakeroot不足 || <code>sudo zypper install dpkg fakeroot</code> でdebビルドツールをインストールする。 |- | Wayland環境で画面が真っ白になる || ElectronのデフォルトがX11プロトコル || 起動時に <code>--ozone-platform=wayland</code> または <code>--ozone-platform-hint=auto</code> フラグを付与する。<br>例 : <code>opencode-dev --ozone-platform-hint=auto</code> |- | node-ptyのビルド失敗 || ネイティブモジュールのコンパイル環境不足 || ビルドツールをインストールする。<br><pre>sudo zypper install gcc gcc-c++ make python3</pre> |- | Electronのダウンロード失敗 || ネットワーク制限またはプロキシ環境 || プロキシ環境では <code>HTTPS_PROXY</code> 環境変数を設定する。<br>または <code>ELECTRON_MIRROR</code> 環境変数でミラーURLを指定する。 |} </center> <br> ===== デバッグビルド ===== 問題の調査が必要な場合、開発モードで起動できる。<br> bun run --cwd packages/desktop dev <br> このコマンドは <code>electron-vite dev</code> を実行し、HMR (Hot Module Replacement) 対応の開発サーバを起動する。<br> DevToolsが自動的に有効になり、レンダラプロセスを <u>[Ctrl] + [Shift] + [I]</u> で検証できる。<br> <br><br> == Oh my OpenAgents (Oh my OpenCode) == Oh my OpenAgentsは、OpenCode用のマルチエージェントオーケストレーションプラグインである。<br> フック、MCPサーバ、スキル、専門エージェントを活用してOpenCodeの機能を拡張する。<br> <br> * GitHubリポジトリ *: https://github.com/code-yeongyu/oh-my-opencode oh-my-opencode <br> ==== 主な機能 ==== Oh my OpenAgentsは以下に示す機能を提供する。<br> <br> <center> {| class="wikitable" |+ Oh my OpenAgents 機能一覧 ! 機能 !! 説明 |- | <u>ultrawork</u> || 複雑なタスクを専門エージェントに自動分割して並列処理するマジックワード |- | フック統合 || ツール実行前後に自動実行されるフック (コード品質チェック、テスト自動実行等) |- | MCP統合 || Context7 (ライブラリドキュメント取得)、Sequential Thinking (構造的推論) |- | LSP/AST解析 || Language Server ProtocolとAST解析による高精度なコード理解 |- | スキルシステム || 再利用可能なプロンプトテンプレート<br>例: <code>/ultra</code> |} </center> <br> ==== 専門エージェント ==== Oh my OpenAgentsは以下の専門エージェントを提供する。<br> <br> <center> {| class="wikitable" |+ 専門エージェント一覧 ! エージェント名 !! 役割 |- | Sisyphus || プランニングと実装を担当するメインエージェント<br>タスク分割、実装、テスト、反復改善を行う。 |- | Oracle || コードベース全体の調査・分析を担当<br>プロジェクト構造の把握、依存関係の追跡を行う。 |- | Frontend Engineer || フロントエンド開発を担当<br>React / Next.js等のUI実装、アクセシビリティ対応を行う。 |- | Librarian || ドキュメント管理を担当<br>README、API仕様書、変更履歴の作成・更新を行う。 |- | Explorer || 未知のコードベースの探索を担当<br>新しいプロジェクトの構造理解や技術スタックの調査を行う。 |} </center> <br> ==== インストール ==== インストールの前提条件は以下の通りである。<br> <br> * OpenCode v1.0.150以上 * Node.js または Bun <br> Oh my OpenAgentsをインストールする。<br> bunx oh-my-opencode@latest # または npx oh-my-opencode@latest <br> 非対話モードでインストールする場合は以下のコマンドを実行する。<br> bunx oh-my-opencode@latest --non-interactive <br> ==== 設定 ==== 設定ファイルは以下の場所に配置する。<br> <br> * プロジェクト単位 *: <u>.opencode/oh-my-opencode.json</u> * グローバル *: <u>~/.config/opencode/oh-my-opencode.json</u> <br> 設定ファイルはJSONC (コメント付きJSON) 形式で記述する。<br> 以下に設定ファイルの例を示す。<br> <br> <syntaxhighlight lang="json"> { "mcpServers": { "context7": true, "thinking": true }, "agents": { "sisyphus": true, "oracle": true, "frontend": true, "librarian": true, "explorer": true }, "hooks": { "afterEdit": true, "afterWrite": true }, "skills": { "ultra": true } } </syntaxhighlight> <br> 下表に、各設定項目の説明を示す。<br> <br> <center> {| class="wikitable" |+ 設定項目一覧 ! カテゴリ !! 設定項目 !! 説明 |- | rowspan="3" | mcpServers || - || MCPサーバの有効 / 無効を設定する。 |- | context7 || ライブラリドキュメント取得サーバ |- | thinking || 構造的推論サーバ |- | rowspan="6" | agents || - || 専門エージェントの有効/無効を設定する。 |- | sisyphus || 個別に制御可能 |- | oracle || 個別に制御可能 |- | frontend || 個別に制御可能 |- | librarian || 個別に制御可能 |- | explorer || 個別に制御可能 |- | rowspan="3" | hooks || - || フックの有効 / 無効を設定する。 |- | afterEdit || ファイル編集後に自動チェックを実行する。 |- | afterWrite || ファイル作成後に自動チェックを実行する。 |- | rowspan="2" | skills || - || スキルの有効 / 無効を設定する。 |- | ultra || ultraworkスキルを有効化する。 |} </center> <br> ==== 使用方法 ==== プロンプトに <u>ultrawork</u> というキーワードを含めるだけで、複雑なタスクを専門エージェントに自動分割して並列処理する。<br> <br> 使用例を以下に示す。<br> <br> * 大規模リファクタリング *: <pre>ultrawork このプロジェクトの認証システムをリファクタリングして</pre> * 新機能実装 *: <pre>ultrawork ユーザ管理機能を実装して</pre> * ドキュメント調査 *: <pre>ultrawork このコードベースを分析してドキュメントを作成して</pre> <br> ==== アンインストール ==== プロジェクト単位の設定ファイルを削除する。<br> rm -rf .opencode/agents \ .opencode/hooks \ .opencode/skills \ .opencode/mcp.json \ .opencode/oh-my-opencode.json <br> グローバル設定を削除する。<br> rm -rf ~/.config/opencode/oh-my-opencode.json <br> ==== 注意事項 ==== Oh my OpenAgentsを使用する際は以下の点に注意すること。<br> <br> * AnthropicモデルのOpenCode対応はコミュニティ主導の取り組みであり、Anthropicの公式サポート対象外である。 * フック機能により外部コマンドが自動実行されるため、設定内容を事前に確認すること。 * MCPサーバはネットワークアクセスを行う場合があるため、セキュリティポリシーに準じて使用すること。 <br><br> == 注意事項 == ==== プライバシーとデータ取り扱い ==== OpenCodeはオープンソースであり、コードの透明性を確保している。<br> * ローカルでの処理を優先、コードの送信は最小限に抑制する。 * 使用するAIプロバイダのプライバシーポリシーを確認すること。 * GitHubリポジトリで実装を検証可能 <br><br> ==== 生成コードの検証 ==== AIが生成したコードは必ずレビューして検証する。<br> * コードの動作を確認 * セキュリティ上の問題がないか確認 * ライセンス上の問題がないか確認 * コーディング規約に準拠しているか確認 <br><br> ==== セキュリティ ==== APIキーやパスワード等の機密情報をコードに含めないように注意する。<br> * APIキー、パスワード等の機密情報をコードに含めない。 * 環境変数や設定ファイルで管理する。 * <u>.gitignore</u> ファイルで機密情報を含むファイルを除外する。 <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__ [[カテゴリ:RHEL]][[カテゴリ:SUSE]]
インストール - OpenCode
に戻る。
案内
メインページ
最近の更新
おまかせ表示
MediaWiki についてのヘルプ
ツール
リンク元
関連ページの更新状況
特別ページ
ページ情報
We ask for
Donations
Collapse