MochiuWiki : SUSE, EC, PCB
案内
メインページ
最近の更新
おまかせ表示
MediaWiki についてのヘルプ
ツール
リンク元
関連ページの更新状況
特別ページ
ページ情報
We ask for
Donations
検索
個人用ツール
ログイン
Toggle dark mode
名前空間
ページ
議論
表示
閲覧
ソースを閲覧
履歴を表示
OpenCodeの設定 - カスタムコマンドのソースを表示
提供: MochiuWiki : SUSE, EC, PCB
←
OpenCodeの設定 - カスタムコマンド
あなたには「このページの編集」を行う権限がありません。理由は以下の通りです:
この操作は、次のグループのいずれかに属する利用者のみが実行できます:
管理者
、new-group。
このページのソースの閲覧やコピーができます。
== 概要 == OpenCodeは、様々なLLMプロバイダに対応したオープンソースのターミナルAIコーディングアシスタントである。<br> 75以上のプロバイダと200以上のモデルをサポートし、カスタムコマンド機能によりよく使うプロンプトをコマンドとして登録・再利用できる。<br> <br> カスタムコマンドは、繰り返し実行するタスクを定義済みプロンプトとして保存する機能である。<br> <br> <center> {| class="wikitable" |+ カスタムコマンドの特徴 ! 特徴 !! 説明 |- | 再利用性 || 同じプロンプトを何度も入力する手間を省き、コマンド名1つで呼び出せる。 |- | プロジェクト固有・グローバルの使い分け || プロジェクト専用のコマンドと、全プロジェクトで使用するグローバルコマンドを別々に管理できる。 |- | プレースホルダーによる柔軟な引数渡し || 呼び出し時に引数を渡して動的なプロンプトを生成できる。 |- | ファイル参照・シェルコマンドの埋め込み || ファイルの内容やシェルコマンドの実行結果をプロンプトに含められる。 |} </center> <br><br> == カスタムコマンドの基本構造 == カスタムコマンドは、Markdownファイル または <u>opencode.json</u> の2通りの方法で定義できる。<br> <br> Markdownファイルで定義する場合、フロントマターにメタデータを記述し、本文にプロンプト内容を記述する。<br> <br> 基本的なファイル構造を以下に示す。<br> <br> <syntaxhighlight lang="md"> --- description: コマンドの説明 agent: 実行するエージェント名 model: プロバイダ名/モデルID --- <プロンプト内容をここに記述する> <$ARGUMENTS で呼び出し時の引数を受け取る> </syntaxhighlight> <br> 下表に、フロントマターの各フィールドを示す。<br> <br> {| class="wikitable" ! フィールド !! 説明 |- | <code>description</code> || コマンドパレットやヘルプに表示される説明文 (省略可能) |- | <code>agent</code> || このコマンドを実行するエージェント名<br>省略した場合はデフォルトエージェントが使用される。 |- | <code>model</code> || 使用するLLMモデル<br><code><プロバイダ名>/<モデルID></code> の形式で指定する。<br>省略した場合は現在の設定が使用される。 |} <br><br> == ディレクトリ構造 == カスタムコマンドの定義ファイルは、プロジェクト固有 または グローバルの2か所に配置できる。<br> <br> <center> {| class="wikitable" |+ カスタムコマンドの配置ディレクトリ ! スコープ !! ディレクトリパス !! 説明 |- | プロジェクト固有 || <u>.opencode/commands/</u> || 現在のプロジェクトのみで使用可能 |- | グローバル || <u>~/.config/opencode/commands/</u> || 全プロジェクトで使用可能 |} </center> <br> ディレクトリ構造の例を以下に示す。<br> <br> # プロジェクト固有 (例: QML/C++プロジェクト) .opencode/ commands/ build.md # /build CMakeビルドコマンド qml-lint.md # /qml-lint QMLリントコマンド ctest.md # /ctest ユニットテスト実行コマンド # グローバル ~/.config/opencode/ commands/ commit-msg.md # /commit-msg コミットメッセージ生成コマンド translate.md # /translate 翻訳コマンド <br> ファイル名がコマンドIDになる。<br> 例えば、<u>review.md</u> は <code>/review</code> コマンドとして呼び出される。<br> <br> 同名のコマンドが両方に存在する場合、プロジェクト固有のコマンドが優先される。<br> <br><br> == カスタムコマンドの作成方法 == ==== Markdownファイルによる定義 ==== <u>.opencode/commands/</u> または <u>~/.config/opencode/commands/</u> にMarkdownファイルを作成する。<br> <br> コードレビューコマンドの例を以下に示す。<br> <br> <syntaxhighlight lang="md"> --- description: コードレビューを実行する --- 以下のコードをレビューして、問題点と改善案を日本語で報告してください。 $ARGUMENTS </syntaxhighlight> <br> 特定のファイルを参照するコマンドの例を以下に示す。<br> <code>@<ファイルパス></code> の記法でファイルの内容をプロンプトに含めることができる。<br> <br> <syntaxhighlight lang="md"> --- description: プロジェクトの規約に従いコードを修正する --- @.opencode/CONVENTIONS.md の規約に従い、以下のコードを修正してください。 $ARGUMENTS </syntaxhighlight> <br> シェルコマンドの実行結果を埋め込む例を以下に示す。<br> <code>!`<シェルコマンド>`</code> の記法でシェルコマンドの実行結果をプロンプトに挿入できる。<br> <br> <syntaxhighlight lang="md"> --- description: 現在のGitの差分をレビューする --- 以下のGit差分をレビューして、問題点と改善案を報告してください。 !`git diff HEAD` </syntaxhighlight> <br> 位置引数を使用する例を以下に示す。<br> <code>$1</code>、<code>$2</code>、<code>$3</code> で個別の引数にアクセスできる。<br> <br> <syntaxhighlight lang="md"> --- description: 指定した言語に翻訳する --- 以下のテキストを $1 に翻訳してください。 $2 </syntaxhighlight> <br> 名前付き引数を使用する例を以下に示す。<br> <code>$NAME</code> の形式で名前付き引数を使用できる。<br> <br> <syntaxhighlight lang="md"> --- description: テストを生成する --- $FUNCTION 関数のユニットテストを $FRAMEWORK フレームワークで生成してください。 </syntaxhighlight> <br> ==== opencode.jsonによる定義 ==== <u>opencode.json</u> の <u>commands</u> フィールドにコマンドを定義することもできる。<br> <br> <syntaxhighlight lang="json"> { "commands": { "review": { "template": "以下のコードをレビューして、問題点と改善案を日本語で報告してください。\n\n$ARGUMENTS", "description": "コードレビューを実行する", "agent": "default", "model": "anthropic/claude-sonnet-4-5" }, "translate": { "template": "以下のテキストを $1 に翻訳してください。\n\n$2", "description": "指定した言語に翻訳する" }, "test-gen": { "template": "$FUNCTION 関数のユニットテストを生成してください。", "description": "テストを生成する", "model": "openai/gpt-4o" } } } </syntaxhighlight> <br> <code>opencode.json</code> による定義では、以下のフィールドを設定できる。<br> <br> {| class="wikitable" ! フィールド !! 説明 |- | <code>template</code> || プロンプトのテンプレート文字列<br>必須 |- | <code>description</code> || コマンドの説明<br>コマンドパレットに表示される。 |- | <code>agent</code> || 使用するエージェント名 |- | <code>model</code> || 使用するLLMモデル<br><code><プロバイダ名>/<モデルID></code> の形式で指定する。 |} <br><br> == カスタムコマンドの呼び出し方法 == ==== スラッシュコマンド形式 ==== チャット入力欄に <code>/コマンド名</code> と入力することで呼び出せる。<br> <br> # 引数無しで呼び出す場合 /review # 引数を渡して呼び出す場合 /translate 日本語 This is a sample text. # ファイル参照と組み合わせる場合 /review @src/main.go <br> スラッシュコマンドは入力途中でフィルタリングされ、候補が一覧表示される。<br> <code>/re</code> と入力すると、名前が "re" で始まるコマンドが候補として表示される。<br> <br> ==== コマンドパレット ([Ctrl] + [K]キー) ==== [Ctrl] + [K]キーを押下してでコマンドパレットを開いて、コマンドを検索して実行できる。<br> <br> コマンドパレットでは以下の操作が可能である。<br> * コマンド名や説明でのインクリメンタル検索 * 上下矢印キーでの選択 * [Enter]キーでの実行 * [Esc]キーでのキャンセル <br><br> == ビルトインスラッシュコマンド一覧 == OpenCodeには以下のビルトインスラッシュコマンドが用意されている。<br> カスタムコマンドで同名のコマンドを定義することにより、ビルトインコマンドを上書きできる。<br> <br> <center> {| class="wikitable" |+ ビルトインスラッシュコマンド一覧 ! コマンド !! 説明 |- | /init || プロジェクトを初期化して設定ファイルを生成する。 |- | /undo || 直前の操作を取り消す。 |- | /redo || 取り消した操作をやり直す。 |- | /share || 現在のセッションを共有する。 |- | /help || 利用可能なコマンドの一覧とヘルプを表示する。 |} </center> <br> <u>ビルトインコマンドを上書きする場合は、同名のMarkdownファイルをコマンドディレクトリに配置する。</u><br> <u>例えば、<code>/help</code> コマンドを上書きするには、<u>.opencode/commands/help.md</u> を作成する。</u><br> <br><br> == キーボードショートカット == ==== リーダーキーシステム ==== OpenCodeのキーボードショートカットは、リーダーキーシステムを採用している。<br> デフォルトのリーダーキーは、[Ctrl] + [X]キーである。<br> <br> 操作方法は以下の通りである。<br> # [Ctrl] + [X]キー (リーダーキー) を押下する。 # 続けてアクションキーを押下する。 <br> 例えばセッション管理画面を開く場合は、[Ctrl] + [X]キーをを押下した後に[L]キーを押下する。<br> <br> ==== デフォルトショートカット一覧 ==== <center> {| class="wikitable" |+ セッション管理ショートカット ! ショートカット !! 説明 |- | [Ctrl] + [X]キー -> [N]キー || 新規セッションを作成する。 |- | [Ctrl] + [X]キー -> [L]キー || セッション一覧を表示する。 |- | [Ctrl] + [X]キー -> [Shift] + [S]キー || 現在のセッションを共有する。 |} </center> <br> <center> {| class="wikitable" |+ 表示切り替えショートカット ! ショートカット !! 説明 |- | [Ctrl] + [X]キー -> [T]キー || テーマを変更する。 |- | [Ctrl] + [X]キー -> [B]キー || サイドバーの表示・非表示を切り替える。 |- | [Ctrl] + [X]キー -> [E]キー || エディタの表示・非表示を切り替える。 |} </center> <br> <center> {| class="wikitable" |+ モデル・コマンド操作ショートカット ! ショートカット !! 説明 |- | [F2]キー || 最近使用したモデルを順に切り替える。 |- | [Ctrl] + [P]キー || コマンドパレットを開く。 |- | [Ctrl] + [K]キー || コマンドパレットを開く。([Ctrl] + [P]キーと同じ) |} </center> <br> <center> {| class="wikitable" |+ テキスト編集ショートカット (Emacs / Readline形式) ! ショートカット !! 説明 |- | [Ctrl] + [A]キー || 行頭に移動する。 |- | [Ctrl] + [E]キー || 行末に移動する。 |- | [Alt] + [B]キー || 1単語前に移動する。 |- | [Alt] + [F]キー || 1単語後に移動する。 |} </center> <br> ==== カスタムキーバインド設定 ==== <u>opencode.json</u> の <code>keybinds</code> フィールドでキーバインドをカスタマイズできる。<br> <br> リーダーキーを変更する場合は、<code>leader</code> フィールドで指定する。<br> <br> <syntaxhighlight lang="json"> { "keybinds": { "leader": "ctrl+a", "session:new": "ctrl+a n", "session:list": "ctrl+a l" } } </syntaxhighlight> <br> 特定のショートカットを無効化するには、値に <u>"none"</u> を指定する。<br> <br> <syntaxhighlight lang="json"> { "keybinds": { "session:share": "none" } } </syntaxhighlight> <br><br> == CLIコマンド == ==== 基本コマンド ==== <center> {| class="wikitable" |+ OpenCode 基本コマンド一覧 ! コマンド !! 説明 !! 例 |- | opencode || TUI (ターミナルユーザインターフェース) を起動する。 || opencode |- | opencode run "プロンプト" || プロンプトをCLIから直接実行して結果を出力する。 || opencode run "このコードを説明して" |- | opencode session list || セッションの一覧を表示する。 || opencode session list |- | opencode export [sessionID] || セッションをファイルにエクスポートする。 || opencode export abc123 |- | opencode import <ファイル> || セッションをファイルからインポートする。 || opencode import session.json |- | opencode models || 利用可能なモデルの一覧を表示する。 || opencode models |- | opencode models [provider] || 指定したプロバイダのモデル一覧を表示する。 || opencode models anthropic |- | opencode auth login || 認証情報を設定する。 || opencode auth login |- | opencode auth list || 設定済みの認証情報一覧を表示する。 || opencode auth list |- | opencode serve || ヘッドレスサーバーとして起動する。 || opencode serve |- | opencode web || Webインターフェースを起動する。 || opencode web |- | opencode attach [url] || リモートのOpenCodeインスタンスに接続する。 || opencode attach http://localhost:4200 |- | opencode mcp add || MCPサーバを追加する。 || opencode mcp add |- | opencode mcp list || MCPサーバの一覧を表示する。 || opencode mcp list |- | opencode mcp auth <name> || MCPサーバの認証を実行する。 || opencode mcp auth my-server |- | opencode github install || GitHub Agentをインストールする。 || opencode github install |- | opencode github run || GitHub Agentを実行する。 || opencode github run |} </center> <br> ==== グローバルフラグ ==== 全てのコマンドで使用できるグローバルフラグを以下に示す。<br> <br> <center> {| class="wikitable" |+ グローバルフラグ一覧 ! フラグ !! 省略形 !! 説明 |- | --help || -h || コマンドのヘルプを表示する。 |- | --version || -v || OpenCodeのバージョンを表示する。 |- | --log-level || - || ログレベルを設定する。 (debug, info, warn, error) |} </center> <br> ==== 非対話モード ==== <code>opencode run</code> コマンドを使用すると、TUIを起動せずにプロンプトをCLIから直接実行できる。<br> パイプやスクリプトとの連携に適している。<br> <br> 使用例を以下に示す。<br> <br> # プロンプトを直接実行 opencode run "src/main.go のコードを説明して" # パイプでファイルの内容を渡す cat src/main.go | opencode run "このコードをレビューして" # 結果をファイルに保存 opencode run "README.mdのドラフトを作成して" > README.md <br><br> == 実用例 == ==== コードレビューコマンド ==== <syntaxhighlight lang="md"> --- description: 差分をレビューして改善点を報告する --- 以下のGit差分をレビューして、以下の観点から評価してください。 - セキュリティ上の問題 - パフォーマンスへの影響 - コードの可読性 - テストの必要性 !`git diff HEAD` </syntaxhighlight> <br> ==== テスト生成コマンド ==== <syntaxhighlight lang="md"> --- description: 指定したファイルのユニットテストを生成する --- 以下のコードのユニットテストを生成してください。 エッジケースも含めて網羅的にテストしてください。 @$1 </syntaxhighlight> <br> ==== コミットメッセージ生成コマンド ==== <syntaxhighlight lang="md"> --- description: ステージング済みの変更からコミットメッセージを生成する --- 以下のGitステージング済みの変更に基づいて、Conventional Commits形式のコミットメッセージを生成してください。 !`git diff --staged` </syntaxhighlight> <br><br> == トラブルシューティング == ==== コマンドが認識されない ==== コマンドが <code>/</code> コマンドとして認識されない場合は、以下に示す事柄を確認する。<br> <br> * ファイルの配置場所を確認する。 *: <u>.opencode/commands/</u> または <u>~/.config/opencode/commands/</u> に配置されているか確認する。 *: <br> * ファイル名を確認する。 *: ファイル名に使用できるのは英数字、ハイフン、アンダースコアのみである。 *: <br> * ファイルの拡張子を確認する。 *: 拡張子は <code>.md</code> である必要がある。 *: <br> * OpenCodeを再起動する。 *: コマンドを追加した後、OpenCodeを再起動することで反映される場合がある。 <br> ==== プレースホルダーが展開されない ==== 引数が正しく渡されない場合は、以下に示す事柄を確認する。<br> <br> * プレースホルダーの記述を確認する。 *: <code>$ARGUMENTS</code> (全引数)、<code>$1</code>/<code>$2</code>/<code>$3</code> (位置引数)、<code>$NAME</code> (名前付き引数) の形式を確認する。 *: <br> * 引数の形式を確認する。 *: 名前付き引数の場合は、<u><NAME>=<値></u> の形式で渡す必要がある。 <br> ==== シェルコマンドが実行されない ==== <code>!`シェルコマンド`</code> の記法でシェルコマンドが実行されない場合は、以下に示す事柄を確認する。<br> <br> * 記法を確認する。 *: バッククォート (<code>`</code>) で囲まれているか確認する。 *: <br> * コマンドのパスを確認する。 *: 絶対パスを使用する、または、コマンドが <code>PATH</code> に含まれているか確認する。 *: <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__ [[カテゴリ:設定]]
OpenCodeの設定 - カスタムコマンド
に戻る。
案内
メインページ
最近の更新
おまかせ表示
MediaWiki についてのヘルプ
ツール
リンク元
関連ページの更新状況
特別ページ
ページ情報
We ask for
Donations
Collapse