330 lines
9.9 KiB
Plaintext
330 lines
9.9 KiB
Plaintext
---
|
||
title: モード
|
||
description: さまざまなユースケースに応じたさまざまなモード。
|
||
---
|
||
|
||
:::caution
|
||
モードは、OpenCode 設定の `agent` オプションを通じて設定されるようになりました。
|
||
`mode` オプションは非推奨になりました。 [詳細はこちら](/docs/agents)。
|
||
:::
|
||
モードを使用すると、さまざまなユースケースに合わせて動作、ツール、プロンプトをカスタマイズできます。
|
||
|
||
**Build** と **Plan** という 2 つの組み込みモードが付属しています。カスタマイズできます
|
||
これらを使用するか、OpenCode 設定を通じて独自の設定を行います。
|
||
|
||
セッション中にモードを切り替えることも、設定ファイルでモードを構成することもできます。
|
||
|
||
---
|
||
|
||
## 組み込み
|
||
|
||
OpenCode には 2 つの組み込みモードが付属しています。
|
||
|
||
---
|
||
|
||
### Build
|
||
|
||
Build は、すべてのツールが有効になっている **デフォルト** モードです。これは、ファイル操作やシステムコマンドへのフルアクセスが必要な開発作業の標準モードです。
|
||
|
||
---
|
||
|
||
### Plan
|
||
|
||
計画と分析のために設計された制限付きモード。Plan モードでは、次のツールはデフォルトで無効になっています。
|
||
|
||
- `write` - 新しいファイルを作成できません
|
||
- `edit` - 計画自体の詳細を示す `.opencode/plans/*.md` にあるファイルを除き、既存のファイルを変更できません
|
||
- `patch` - パッチを適用できません
|
||
- `bash` - シェルコマンドを実行できません
|
||
|
||
このモードは、コードベースに実際の変更を加えずに、AI にコードを分析させたり、変更を提案したり、計画を作成させたい場合に便利です。
|
||
|
||
---
|
||
|
||
## 切り替え
|
||
|
||
セッション中に _Tab_ キーを使用してモードを切り替えることができます。または、設定された `switch_mode` キーバインド。
|
||
|
||
参照: [コードのフォーマット設定については、Formatters](/docs/formatters)。
|
||
|
||
---
|
||
|
||
## 設定
|
||
|
||
組み込みモードをカスタマイズしたり、構成を通じて独自のモードを作成したりできます。モードは次の 2 つの方法で設定できます。
|
||
|
||
### JSON 設定
|
||
|
||
`opencode.json` 設定ファイルでモードを構成します。
|
||
|
||
```json title="opencode.json"
|
||
{
|
||
"$schema": "https://opencode.ai/config.json",
|
||
"mode": {
|
||
"build": {
|
||
"model": "anthropic/claude-sonnet-4-20250514",
|
||
"prompt": "{file:./prompts/build.txt}",
|
||
"tools": {
|
||
"write": true,
|
||
"edit": true,
|
||
"bash": true
|
||
}
|
||
},
|
||
"plan": {
|
||
"model": "anthropic/claude-haiku-4-20250514",
|
||
"tools": {
|
||
"write": false,
|
||
"edit": false,
|
||
"bash": false
|
||
}
|
||
}
|
||
}
|
||
}
|
||
```
|
||
|
||
### Markdown 設定
|
||
|
||
Markdown ファイルを使用してモードを定義することもできます。それらを次の場所に置きます。
|
||
|
||
- グローバル: `~/.config/opencode/modes/`
|
||
- プロジェクト: `.opencode/modes/`
|
||
|
||
```markdown title="~/.config/opencode/modes/review.md"
|
||
---
|
||
model: anthropic/claude-sonnet-4-20250514
|
||
temperature: 0.1
|
||
tools:
|
||
write: false
|
||
edit: false
|
||
bash: false
|
||
---
|
||
|
||
You are in code review mode. Focus on:
|
||
|
||
- Code quality and best practices
|
||
- Potential bugs and edge cases
|
||
- Performance implications
|
||
- Security considerations
|
||
|
||
Provide constructive feedback without making direct changes.
|
||
```
|
||
|
||
Markdown ファイル名はモード名になります (例: `review.md` は `review` モードを作成します)。
|
||
|
||
これらの設定オプションを詳しく見てみましょう。
|
||
|
||
---
|
||
|
||
### モデル
|
||
|
||
`model` 設定を使用して、このモードのデフォルトモデルをオーバーライドします。さまざまなタスクに最適化されたさまざまなモデルを使用する場合に役立ちます。たとえば、計画にはより高速なモデルを、実装にはより有能なモデルを使用します。
|
||
|
||
```json title="opencode.json"
|
||
{
|
||
"mode": {
|
||
"plan": {
|
||
"model": "anthropic/claude-haiku-4-20250514"
|
||
}
|
||
}
|
||
}
|
||
```
|
||
|
||
---
|
||
|
||
### 温度
|
||
|
||
`temperature` 設定を使用して、AI の応答のランダム性と創造性を制御します。値が低いほど、応答はより集中的かつ決定的になりますが、値が高いほど、創造性と変動性が高まります。
|
||
|
||
```json title="opencode.json"
|
||
{
|
||
"mode": {
|
||
"plan": {
|
||
"temperature": 0.1
|
||
},
|
||
"creative": {
|
||
"temperature": 0.8
|
||
}
|
||
}
|
||
}
|
||
```
|
||
|
||
通常、温度値の範囲は 0.0 ~ 1.0 です。
|
||
|
||
- **0.0-0.2**: 非常に焦点が絞られた決定的な応答。コード分析と計画に最適です。
|
||
- **0.3-0.5**: 創造性を備えたバランスの取れた応答。一般的な開発タスクに適しています。
|
||
- **0.6-1.0**: より創造的で多様な応答。ブレーンストーミングや探索に役立ちます。
|
||
|
||
```json title="opencode.json"
|
||
{
|
||
"mode": {
|
||
"analyze": {
|
||
"temperature": 0.1,
|
||
"prompt": "{file:./prompts/analysis.txt}"
|
||
},
|
||
"build": {
|
||
"temperature": 0.3
|
||
},
|
||
"brainstorm": {
|
||
"temperature": 0.7,
|
||
"prompt": "{file:./prompts/creative.txt}"
|
||
}
|
||
}
|
||
}
|
||
```
|
||
|
||
温度が指定されていない場合、OpenCode はモデル固有のデフォルトを使用します (通常、ほとんどのモデルでは 0、Qwen モデルでは 0.55)。
|
||
|
||
---
|
||
|
||
### プロンプト
|
||
|
||
`prompt` 設定を使用して、このモードのカスタムシステムプロンプトファイルを指定します。プロンプトファイルには、モードの目的に固有の指示が含まれている必要があります。
|
||
|
||
```json title="opencode.json"
|
||
{
|
||
"mode": {
|
||
"review": {
|
||
"prompt": "{file:./prompts/code-review.txt}"
|
||
}
|
||
}
|
||
}
|
||
```
|
||
|
||
このパスは、設定ファイルが配置されている場所に対する相対パスです。したがって、これはグローバルな OpenCode 設定とプロジェクト固有の設定の両方で機能します。
|
||
|
||
---
|
||
|
||
### ツール
|
||
|
||
`tools` 設定を使用して、このモードでどのツールを使用できるかを制御します。特定のツールを `true` または `false` に設定することで、有効または無効にすることができます。
|
||
|
||
```json
|
||
{
|
||
"mode": {
|
||
"readonly": {
|
||
"tools": {
|
||
"write": false,
|
||
"edit": false,
|
||
"bash": false,
|
||
"read": true,
|
||
"grep": true,
|
||
"glob": true
|
||
}
|
||
}
|
||
}
|
||
}
|
||
```
|
||
|
||
ツールが指定されていない場合は、すべてのツールがデフォルトで有効になります。
|
||
|
||
---
|
||
|
||
#### 利用可能なツール
|
||
|
||
ここでは、モード設定を通じて制御できるすべてのツールを示します。
|
||
|
||
| ツール | 説明 |
|
||
| ----------- | ------------------------------ |
|
||
| `bash` | シェルコマンドを実行する |
|
||
| `edit` | 既存のファイルを変更する |
|
||
| `write` | 新しいファイルを作成する |
|
||
| `read` | ファイルの内容を読み取る |
|
||
| `grep` | ファイルの内容を検索 |
|
||
| `glob` | パターンでファイルを検索 |
|
||
| `list` | ディレクトリの内容をリストする |
|
||
| `patch` | ファイルにパッチを適用する |
|
||
| `todowrite` | ToDo リストを管理する |
|
||
| `todoread` | ToDo リストを読む |
|
||
| `webfetch` | Web コンテンツを取得する |
|
||
|
||
---
|
||
|
||
## カスタムモード
|
||
|
||
構成に追加することで、独自のカスタムモードを作成できます。両方のアプローチを使用した例を次に示します。
|
||
|
||
### JSON 設定の使用
|
||
|
||
```json title="opencode.json" {4-14}
|
||
{
|
||
"$schema": "https://opencode.ai/config.json",
|
||
"mode": {
|
||
"docs": {
|
||
"prompt": "{file:./prompts/documentation.txt}",
|
||
"tools": {
|
||
"write": true,
|
||
"edit": true,
|
||
"bash": false,
|
||
"read": true,
|
||
"grep": true,
|
||
"glob": true
|
||
}
|
||
}
|
||
}
|
||
}
|
||
```
|
||
|
||
### Markdown ファイルの使用
|
||
|
||
モードファイルをプロジェクト固有モードの場合は `.opencode/modes/` に、グローバルモードの場合は `~/.config/opencode/modes/` に作成します。
|
||
|
||
```markdown title=".opencode/modes/debug.md"
|
||
---
|
||
temperature: 0.1
|
||
tools:
|
||
bash: true
|
||
read: true
|
||
grep: true
|
||
write: false
|
||
edit: false
|
||
---
|
||
|
||
You are in debug mode. Your primary goal is to help investigate and diagnose issues.
|
||
|
||
Focus on:
|
||
|
||
- Understanding the problem through careful analysis
|
||
- Using bash commands to inspect system state
|
||
- Reading relevant files and logs
|
||
- Searching for patterns and anomalies
|
||
- Providing clear explanations of findings
|
||
|
||
Do not make any changes to files. Only investigate and report.
|
||
```
|
||
|
||
```markdown title="~/.config/opencode/modes/refactor.md"
|
||
---
|
||
model: anthropic/claude-sonnet-4-20250514
|
||
temperature: 0.2
|
||
tools:
|
||
edit: true
|
||
read: true
|
||
grep: true
|
||
glob: true
|
||
---
|
||
|
||
You are in refactoring mode. Focus on improving code quality without changing functionality.
|
||
|
||
Priorities:
|
||
|
||
- Improve code readability and maintainability
|
||
- Apply consistent naming conventions
|
||
- Reduce code duplication
|
||
- Optimize performance where appropriate
|
||
- Ensure all tests continue to pass
|
||
```
|
||
|
||
---
|
||
|
||
### ユースケース
|
||
|
||
さまざまなモードの一般的な使用例をいくつか示します。
|
||
|
||
- **ビルドモード**: すべてのツールを有効にした完全な開発作業
|
||
- **計画モード**: 変更を加えずに分析および計画を立てる
|
||
- **レビューモード**: 読み取り専用アクセスとドキュメントツールによるコードレビュー
|
||
- **デバッグモード**: bash および読み取りツールを有効にして調査に重点を置きます
|
||
- **ドキュメントモード**: ファイル操作を使用してドキュメントを作成しますが、システムコマンドは使用しません
|
||
|
||
また、さまざまなユースケースにさまざまなモデルが適していることがわかるかもしれません。
|