MochiuWiki : SUSE, EC, PCB
検索
個人用ツール
ログイン
Toggle dark mode
名前空間
ページ
議論
表示
閲覧
ソースを閲覧
履歴を表示
OpenCodeの設定 - AGENTS.mdのソースを表示
提供: MochiuWiki : SUSE, EC, PCB
←
OpenCodeの設定 - AGENTS.md
あなたには「このページの編集」を行う権限がありません。理由は以下の通りです:
この操作は、次のグループのいずれかに属する利用者のみが実行できます:
管理者
、new-group。
このページのソースの閲覧やコピーができます。
== 概要 == AGENTS.mdは、OpenCodeのカスタム指示ファイルである。<br> Claude CodeにおけるCLAUDE.mdに相当する機能を提供し、プロジェクトのコンテキストをAIエージェントに永続的に伝達する役割を担う。<br> <br> AGENTS.mdを活用することにより、以下に示すメリットが得られる。<br> * プロジェクト固有のルールや規約の永続化 *: セッションをまたいでプロジェクトの知識を保持する * チーム全体での知識共有 *: バージョン管理システムを通じて、チーム全員が同じルールを共有できる * AIエージェントへの一貫したコンテキスト提供 *: セッション開始時にAGENTS.mdの内容が自動的に読み込まれる * グローバルとローカルの階層管理 *: 個人設定とプロジェクト設定を分離して管理できる <br> なお、OpenCodeはClaude CodeのCLAUDE.mdとの後方互換性を持つ。<br> 既存のCLAUDE.mdファイルも自動的に検出・利用されるため、Claude Codeから移行した場合でも設定を引き継ぐことができる。<br> <br><br> == AGENTS.mdの優先度と読み込み順序 == OpenCodeは、AGENTS.mdをローカルカテゴリとグローバルカテゴリの2つのカテゴリに分けて管理する。<br> 両カテゴリのファイルは改行で連結され、システムプロンプトに含まれる。<br> <br> ==== 優先度1 : プロジェクトレベル ==== プロジェクトレベルのファイルは、カレントディレクトリから上位ディレクトリへとトラバース探索される。<br> 探索で最初に見つかったファイルのみが使用される。<br> <br> 優先順位は以下の通りである。<br> # AGENTS.md (最高優先度) # CLAUDE.md # CONTEXT.md <br> 例えば、カレントディレクトリ内に <u>AGENTS.md</u> が存在する場合、上位ディレクトリの <u>CLAUDE.md</u> よりも優先される。<br> <br> 探索対象の配置例を以下に示す。<br> * <u>AGENTS.md</u> *: プロジェクトルートに配置する。(推奨) *: <br> * <u>.opencode/AGENTS.md</u> *: .opencodeディレクトリ内に配置する。 *: <br> * <u>.claude/CLAUDE.md</u> *: Claude Code互換のパスも探索対象となる。 <br> ==== 優先度2 : グローバルレベル ==== グローバルレベルのファイルは、全プロジェクト共通のルールを定義するために使用する。<br> 以下に示す優先順位でファイルが適用される。<br> <br> # <u>~/.config/opencode/AGENTS.md</u> (公式パス、最高優先度) # <u>~/.claude/CLAUDE.md</u> (Claude Code互換フォールバック) <br> <u>グローバルレベルのファイルとプロジェクトレベルのファイルは排他的ではなく、両方が存在する場合は改行で連結されてシステムプロンプトに含まれる。</u><br> <br> ==== 優先度3 : レガシー互換 (CLAUDE.md) ==== OpenCodeは、Claude CodeのCLAUDE.mdとの後方互換性を保持している。<br> <br> 互換性の詳細は以下の通りである。<br> * <u>~/.claude/CLAUDE.md</u> *: グローバルレベルのフォールバックとして自動検出される。 *: <br> * <u>./.claude/CLAUDE.md</u> *: プロジェクトレベルのトラバース探索対象に含まれる。 *: <br> * AGENTS.md > CLAUDE.md *: 同じディレクトリに両方存在する場合は、AGENTS.mdが優先される。 <br> Claude Codeから移行する際は、既存のCLAUDE.mdをそのまま使用し続けることができる。<br> 段階的にAGENTS.mdへ移行する方法も選択可能である。<br> <br><br> == ディレクトリ構造 == OpenCodeは、プロジェクトレベルとグローバルレベルの2つのディレクトリ構造を持つ。<br> <br> プロジェクトレベルのディレクトリ構造を以下に示す。<br> <br> # 例 : QML/C++プロジェクト .opencode/ ├── AGENTS.md # プロジェクト固有のルール ├── agents/ # カスタムエージェント定義 │ ├── qml-frontend.md # QMLフロントエンド開発エージェント │ ├── cpp-backend.md # C++バックエンド開発エージェント │ ├── qml-reviewer.md # QMLコードレビューエージェント │ └── cpp-debugger.md # C++デバッグ専門エージェント ├── commands/ # カスタムコマンド定義 │ ├── build.md # /build CMakeビルドコマンド │ ├── qml-lint.md # /qml-lint QMLリントコマンド │ └── ctest.md # /ctest ユニットテスト実行コマンド ├── skills/ # カスタムスキル │ ├── qt-api/ # Qt APIリファレンス調査スキル │ │ └── SKILL.md # スキル定義ファイル │ ├── qml-design/ # QML UI設計ガイドスキル │ │ └── SKILL.md # スキル定義ファイル │ └── cpp-optimization/ # C++パフォーマンス最適化スキル │ └── SKILL.md # スキル定義ファイル ├── tools/ # カスタムツール定義 │ ├── qml-analyzer.ts # QMLコード静的解析ツール │ └── cmake-helper.ts # CMake設定補助ツール ├── modes/ # モード設定 │ ├── qml-design-mode.md # QML UI設計モード │ ├── debug-mode.md # C++デバッグモード │ └── review-mode.md # コードレビューモード ├── plugins/ # プラグイン定義 │ ├── build-notify.ts # CMakeビルド結果通知プラグイン │ └── qml-hot-reload.ts # QMLホットリロード検知プラグイン ├── themes/ # テーマ設定 │ └── qt-creator.json # Qt Creator風カスタムテーマ └── package.json # プラグイン依存関係 <br> グローバルレベルのディレクトリ構造を以下に示す。<br> ~/.config/opencode/ ├── AGENTS.md # グローバルルール ├── opencode.json # グローバル設定ファイル ├── agents/ # グローバルエージェント │ └── translator.md # 翻訳エージェント ├── commands/ # グローバルコマンド │ ├── commit-msg.md # /commit-msg コミットメッセージ生成コマンド │ └── translate.md # /translate 翻訳コマンド ├── skills/ # グローバルスキル │ └── doc-gen/ # ドキュメント生成スキル │ └── SKILL.md # スキル定義ファイル ├── tools/ # グローバルツール │ └── format-checker.ts # コードフォーマットチェックツール ├── modes/ # グローバルモード │ └── plan-mode.md # 計画モード ├── plugins/ # グローバルプラグイン │ └── session-notify.ts # セッション通知プラグイン └── themes/ # グローバルテーマ └── monokai.json # Monokaiカスタムテーマ <br> プロジェクト固有の設定は <u>.opencode/</u> ディレクトリに、個人の全プロジェクト共通設定は <u>~/.config/opencode/</u> ディレクトリに配置する。<br> <br><br> == AGENTS.mdに記述する内容 == ==== プロジェクト概要 ==== プロジェクトの目的、技術スタック、主要な機能を簡潔に記述する。<br> <br> 記述例を以下に示す。<br> <br> <syntaxhighlight lang="md"> # プロジェクト概要 このプロジェクトは、RESTful APIを提供するバックエンドサービスです。 技術スタック: - 言語: Go 1.22 - フレームワーク: Gin - データベース: PostgreSQL 15 - コンテナ: Docker / Kubernetes </syntaxhighlight> <br> ==== コーディング規約 ==== プロジェクトで使用するコーディング規約、命名規則、スタイルガイドを記述する。<br> <br> 記述例を以下に示す。<br> <br> <syntaxhighlight lang="md"> # コーディング規約 - 関数名: camelCase - 定数: UPPER_SNAKE_CASE - ファイル名: snake_case - インデント: タブ - 行の最大文字数: 120文字 </syntaxhighlight> <br> ==== 頻繁に使用するコマンド ==== プロジェクトで頻繁に使用するコマンドを記録する。<br> <br> 記述例を以下に示す。<br> <br> <syntaxhighlight lang="md"> # 頻繁に使用するコマンド ## 開発サーバの起動 go run ./cmd/server ## テストの実行 go test ./... ## ビルド go build -o bin/server ./cmd/server </syntaxhighlight> <br> ==== 注意事項・制限事項 ==== プロジェクトで避けるべきパターン、使用禁止のライブラリ、セキュリティ制約等を記述する。<br> <br> 記述例を以下に示す。<br> <br> <syntaxhighlight lang="md"> # 注意事項 - APIキーをソースコードにハードコードしないこと - 直接SQLを記述せず、ORMを使用すること - エラーはログに記録し、ユーザには汎用メッセージを返すこと </syntaxhighlight> <br><br> == AGENTS.mdの作成方法 == ==== /initコマンドによる自動生成 ==== OpenCodeには、プロジェクト構造を分析してAGENTS.mdを自動生成する <code>/init</code> コマンドが用意されている。<br> <br> <code>/init</code> コマンドの使い方を以下に示す。<br> # OpenCodeセッション内で実行する /init <br> <code>/init</code> コマンドは以下の処理を自動的に実行する。<br> * プロジェクトの技術スタックの検出 *: package.json、go.mod、Cargo.toml等の設定ファイルを解析する * ディレクトリ構造の解析 *: プロジェクトの構成を把握し、主要なディレクトリの役割を説明する * 頻繁に使用するコマンドの推測 *: ビルド、テスト、実行コマンドを自動的に識別する <br> 自動生成後は内容を確認し、プロジェクト固有の情報を追記することを推奨する。<br> また、生成されたAGENTS.mdはGitにコミットしておくことを推奨する。<br> <br> <u>再実行することで、AGENTS.mdを再生成することもできる。</u><br> <br> ==== 手動作成 ==== <code>/init</code> コマンドを使用せず、手動でAGENTS.mdファイルを作成することもできる。<br> <br> ===== ステップ1: ファイルの作成 ===== プロジェクトルート または .opencodeディレクトリにAGENTS.mdファイルを作成する。<br> <br> # プロジェクトルートに作成する場合 touch AGENTS.md <br> # .opencodeディレクトリに作成する場合 mkdir -p .opencode touch .opencode/AGENTS.md <br> ===== ステップ2: 基本情報の記述 ===== プロジェクト概要、技術スタック、ディレクトリ構造等を記述する。<br> <br> Markdown形式で記述する。<br> <br> <syntaxhighlight lang="md"> # プロジェクト概要 このプロジェクトは... # 技術スタック - フロントエンド: React - バックエンド: Node.js # ディレクトリ構造 ``` src/ ├── components/ └── api/ ``` </syntaxhighlight> <br> ===== ステップ3: コーディング規約の追加 ===== プロジェクト固有のコーディング規約を追加する。<br> <br> <syntaxhighlight lang="md"> # コーディング規約 - 関数名: camelCase - インデント: 半角スペース2つ - セミコロン: 必須 </syntaxhighlight> <br> ===== ステップ4: ファイルの保存と確認 ===== ファイルを保存し、OpenCodeセッションを再起動して読み込みを確認する。<br> <br> # OpenCodeセッションの終了 /exit <br> # OpenCodeセッションの再起動 opencode <br> セッション開始時に、AGENTS.mdの内容が自動的に読み込まれる。<br> <br><br> == 基本的な記述例 == ==== シンプルな例 ==== 最小限の構成でAGENTS.mdを作成する例を以下に示す。<br> <br> <syntaxhighlight lang="md"> # MyProject Node.js + TypeScript のWebアプリケーション ## 技術スタック - Node.js 20 - TypeScript 5 - Express 4 ## 開発サーバの起動 npm run dev ## テストの実行 npm test </syntaxhighlight> <br> ==== 詳細な例 ==== 包括的なAGENTS.mdファイルの例を以下に示す。<br> <br> <syntaxhighlight lang="md"> # Backend API Service このプロジェクトは、マイクロサービスアーキテクチャを採用したREST APIサービスです。 ## 技術スタック - 言語: TypeScript 5.0 - ランタイム: Node.js 20 - フレームワーク: Fastify 4 - データベース: PostgreSQL 15 + Prisma ORM - キャッシュ: Redis 7 - テスト: Vitest ## ディレクトリ構造 ``` src/ ├── routes/ # APIルート定義 ├── services/ # ビジネスロジック ├── repositories/ # データアクセス層 ├── models/ # Prismaモデル └── utils/ # ユーティリティ関数 ``` ## コーディング規約 - 変数・関数名: camelCase - クラス・型名: PascalCase - 定数: UPPER_SNAKE_CASE - インデント: 半角スペース2つ - セミコロン: 必須 ## 頻繁に使用するコマンド ```bash # 開発サーバの起動 npm run dev # テストの実行 npm test # データベースマイグレーション npx prisma migrate dev # ビルド npm run build ``` ## 注意事項 - APIキーは.envファイルで管理すること - any型の使用を避けること - 全てのAPIエンドポイントにバリデーションを実装すること </syntaxhighlight> <br><br> == 高度な機能 == ==== opencode.jsonのinstructionsによる複数ファイル参照 ==== <code>opencode.json</code> の <code>instructions</code> フィールドを使用することにより、複数のMarkdownファイルをAGENTS.mdに加えてロードできる。<br> <br> <code>instructions</code> フィールドの基本形式を以下に示す。<br> <br> <syntaxhighlight lang="json"> { "instructions": [ "CONTRIBUTING.md", "docs/guidelines.md", ".opencode/rules/security.md" ] } </syntaxhighlight> <br> <code>instructions</code> フィールドを使用することにより、以下に示すメリットが得られる。<br> * ファイルの分割管理 *: AGENTS.mdをコンパクトに保ち、詳細は別ファイルで管理できる。 *: <br> * チーム間での責任分担 *: 各ドキュメントを担当者ごとに分割して管理できる。 *: <br> * 既存ドキュメントの活用 *: CONTRIBUTING.md や README等の既存ドキュメントをそのまま参照できる。 <br> ==== GLOBパターンによる参照 ==== <code>instructions</code> フィールドでは、GLOBパターンを使用して複数のファイルを一括指定することができる。<br> <br> GLOBパターンの使用例を以下に示す。<br> <br> <syntaxhighlight lang="json"> { "instructions": [ "AGENTS.md", "docs/**/*.md", ".opencode/rules/*.md" ] } </syntaxhighlight> <br> 対応しているグロブパターンの例を以下に示す。<br> * <u>docs/**/*.md</u> *: docsディレクトリ以下の全てのMarkdownファイル *: <br> * <u>.opencode/rules/*.md</u> *: .opencode/rulesディレクトリ直下のMarkdownファイル *: <br> * <u>**/*.md</u> *: プロジェクト全体の全てのMarkdownファイル <br> ==== リモートURLの参照 ==== <code>instructions</code> フィールドでは、HTTPSのURLを指定してリモートファイルを参照することができる。<br> <br> 組織共通のルールセットをリモートリポジトリで一元管理し、複数のプロジェクトから参照する場合に有用である。<br> <br> リモートURLの使用例を以下に示す。<br> <syntaxhighlight lang="json"> { "instructions": [ "AGENTS.md", "https://raw.githubusercontent.com/my-org/shared-rules/main/style.md", "https://raw.githubusercontent.com/my-org/shared-rules/main/security.md" ] } </syntaxhighlight> <br> リモートURLを使用する時の注意事項を以下に示す。<br> * HTTPSのURLのみ対応している * リモートファイルの取得には5秒のタイムアウトが設定されている * 信頼できるURLのみを指定する *: 悪意のあるコンテンツがシステムプロンプトに混入するリスクがある * ネットワーク接続が必要である *: オフライン環境ではリモートファイルの読み込みに失敗する可能性がある <br><br> == 推奨される方法 == ==== 簡潔性を保つ ==== AGENTS.mdファイルは、必要な情報のみを記述して簡潔に保つことを推奨する。<br> <br> ファイルサイズの目安を以下に示す。<br> * 最小構成: 60行程度 *: プロジェクト概要、技術スタック、よく使うコマンドのみ *: <br> * 標準構成: 150行程度 *: 概要、技術スタック、ディレクトリ構造、コーディング規約、よく使うコマンド *: <br> * 詳細構成: 300行程度 *: 概要、技術スタック、ディレクトリ構造、コーディング規約、よく使うコマンド、アーキテクチャパターン、注意事項 <br> 300行を超える場合は、<u>opencode.json</u> の <code>instructions</code> フィールドを使用してファイルを分割することを推奨する。<br> <br> ==== 具体性を重視する ==== 抽象的な説明ではなく、具体的な指示を記述する。<br> <br> <center> {| class="wikitable" |+ 具体性の比較 ! 抽象的な表現 !! 具体的な表現 |- | コードは読みやすく書くこと || 関数は50行以内に抑え、変数名はcamelCaseを使用すること |- | テストを書くこと || 全ての新機能にはVitestでユニットテストを追加し、カバレッジ80%以上を維持すること |- | セキュリティに注意すること || APIキーは.envファイルに記載し、ユーザ入力は必ずバリデーションを実施すること |} </center> <br> ==== 定期的な更新 ==== AGENTS.mdファイルは、プロジェクトの進行に合わせて定期的に更新する。<br> <br> 更新のタイミングの例を以下に示す。<br> * 新しい技術スタックを導入した時 * コーディング規約を変更した時 * 新しいディレクトリを追加した時 * 新しいワークフローを導入した時 <br> 月に1回程度、AGENTS.mdファイルを見直すことを推奨する。<br> <br> ==== バージョン管理に含める ==== プロジェクトレベルのAGENTS.mdファイルは、バージョン管理システムに含めることを推奨する。<br> これにより、チーム全体でプロジェクトのルールとパターンを共有できる。<br> <br> バージョン管理に含めるファイルの例を以下に示す。<br> * <u>./AGENTS.md</u> *: プロジェクトルートのAGENTS.md * <u>.opencode/AGENTS.md</u> *: .opencodeディレクトリ内のAGENTS.md <br> <u>機密情報はAGENTS.mdに記載せず、環境変数や別途管理する設定ファイルで管理する。</u><br> <br><br> == トラブルシューティング == ==== AGENTS.mdが読み込まれない場合 ==== ===== ファイルの配置場所を確認 ===== AGENTS.mdファイルが正しい場所に配置されているか確認する。<br> <br> OpenCodeのトラバース探索は、カレントディレクトリから上位ディレクトリへと実行される。<br> プロジェクトのルートディレクトリにAGENTS.mdが配置されているか確認する。<br> <br> # ファイルの存在確認 ls -la AGENTS.md ls -la .opencode/AGENTS.md <br> ===== ファイルの権限を確認 ===== AGENTS.mdファイルが読み取り可能であるか確認する。<br> <br> # 権限の確認 ls -l AGENTS.md <br> 読み取り権限がない場合は、権限を変更する。<br> <br> # 読み取り権限の付与 chmod u+r AGENTS.md <br> ===== OpenCodeセッションを再起動 ===== AGENTS.mdファイルを作成または変更した後、OpenCodeセッションを再起動する。<br> セッション開始時に、AGENTS.mdの内容が自動的に読み込まれる。<br> <br> # OpenCodeセッションの終了 /exit <br> # OpenCodeセッションの再起動 opencode <br> ==== CLAUDE.mdとAGENTS.mdの競合 ==== <u>同じディレクトリにCLAUDE.mdとAGENTS.mdの両方が存在する場合、AGENTS.mdが優先される。</u><br> <br> 移行期間中に両方のファイルが存在する場合は、以下に示す点を確認する。<br> * どちらのファイルが優先されているか *: OpenCodeはAGENTS.mdを優先して読み込む。 *: <br> * 両方のファイルに矛盾するルールがないか *: 矛盾がある場合は、AGENTS.mdの内容が適用される。 *: <br> * 統合が完了したらCLAUDE.mdを削除 *: 移行後はCLAUDE.mdを削除してAGENTS.mdに一本化することを推奨する。 <br> ==== リモートURLの読み込みに失敗する場合 ==== <code>instructions</code> フィールドで指定したリモートURLの読み込みに失敗する場合は、以下を確認する。<br> <br> * ネットワーク接続を確認する * URLが正しいか確認する * HTTPSのURLであることを確認する (HTTPは非対応) * タイムアウト (5秒) が発生していないか確認する *: 応答が遅いサーバの場合は、ローカルファイルへのミラーリングを検討する <br><br> == 関連機能 == ==== opencode.jsonとの関係 ==== <u>opencode.json</u> は、AGENTS.mdとは別に、OpenCodeの動作設定を管理する設定ファイルである。<br> <br> <code>opencode.json</code> の配置場所を以下に示す。<br> * グローバル設定 *: <u>~/.config/opencode/opencode.json</u> * プロジェクト設定 *: <u>./opencode.json</u> <br> 下表に、<u>opencode.json</u> と AGENTS.mdの使い分けを示す。<br> <center> {| class="wikitable" |+ opencode.json と AGENTS.md の使い分け ! ファイル !! 用途 !! 記述内容 |- | opencode.json || OpenCodeの動作設定 || モデル、プロバイダ、LSP設定、instructions参照等 |- | AGENTS.md || プロジェクトの知識とルール || コーディング規約、技術スタック、アーキテクチャ等 |} </center> <br> <code>opencode.json</code> の例を以下に示す。<br> <syntaxhighlight lang="json"> { "model": "anthropic/claude-sonnet-4-5", "small_model": "anthropic/claude-haiku-4-5", "instructions": [ "AGENTS.md", "docs/guidelines.md" ] } </syntaxhighlight> <br> ==== .opencodeディレクトリとの関係 ==== <u>.opencode/</u> ディレクトリは、プロジェクト固有のOpenCode設定を格納するディレクトリである。<br> AGENTS.mdはこのディレクトリ内に配置することもできる。<br> <br> <u>.opencode/</u> ディレクトリ内には、AGENTS.md以外にも以下に示すファイルを配置できる。<br> <br> <center> {| class="wikitable" |+ .opencode/ディレクトリ内に配置できるファイル ! ファイル !! 説明 |- | <u>agents/ディレクトリ</u> || カスタムエージェントの定義ファイル |- | <u>commands/ディレクトリ</u> || カスタムコマンドの定義ファイル |- | <u>skills/ディレクトリ</u> || カスタムスキルの定義ファイル |- | <u>tools/ディレクトリ</u> || カスタムツールの定義ファイル |} </center> <br><br> == 参考リンク == * [https://opencode.ai/docs OpenCode公式ドキュメント] * [https://github.com/sst/opencode OpenCode GitHubリポジトリ] <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の設定 - AGENTS.md
に戻る。
案内
メインページ
最近の更新
おまかせ表示
MediaWiki についてのヘルプ
ツール
リンク元
関連ページの更新状況
特別ページ
ページ情報
We ask for
Donations
Collapse