wip(docs): i18n (#12681)

This commit is contained in:
Adam
2026-02-09 11:34:35 -06:00
committed by GitHub
parent f74c0339cc
commit dc53086c1e
642 changed files with 192745 additions and 509 deletions

View File

@@ -0,0 +1,67 @@
---
title: 1.0 への移行
description: OpenCode 1.0 の新機能。
---
OpenCode 1.0 は TUI を完全に書き直したものです。
私たちは、パフォーマンスと機能に問題があった go+bubbletea ベースの TUI から、zig+solidjs で書かれた社内フレームワーク (OpenTUI) に移行しました。
新しい TUI は、同じオープンコード サーバーに接続するため、古い TUI と同様に機能します。
---
## アップグレード中
現在以前のバージョンを使用している場合は、1.0 に自動アップグレードしないでください。
バージョン。ただし、OpenCode の一部の古いバージョンは常に最新のものを取得します。
手動でアップグレードするには、次を実行します
```bash
$ opencode upgrade 1.0.0
```
0.x にダウングレードするには、次を実行します。
```bash
$ opencode upgrade 0.15.31
```
---
## UXの変更
セッション履歴はより圧縮されており、編集および bash ツールの完全な詳細のみが表示されます。
ほぼすべての操作が実行できるコマンド バーを追加しました。 Ctrl+P を押すと、任意のコンテキストでそれが表示され、実行できるすべてのことが表示されます。
役立つ情報を含むセッション サイドバー (切り替え可能) を追加しました。
実際に誰も使用しているかどうかわからないいくつかの機能を削除しました。重要な点が欠けている場合は、問題を開いてください。すぐに追加します。
---
## 重大な変更
### キーバインドの名前が変更されました
- メッセージを元に戻す -> メッセージを元に戻す
- スイッチエージェント -> エージェントサイクル
- スイッチ_エージェント_リバース -> エージェント_サイクル_リバース
- スイッチモード -> エージェントサイクル
- スイッチモードリバース -> エージェントサイクルリバース
### キーバインドが削除されました
- メッセージ_レイアウト_トグル
- メッセージ_次
- メッセージ_前
- file_diff_toggle
- ファイル検索
- ファイル_閉じる
- ファイルリスト
- アプリヘルプ
- プロジェクト初期化
- ツールの詳細
- 思考ブロック

View File

@@ -0,0 +1,156 @@
---
title: ACPのサポート
description: ACP 互換エディターで OpenCode を使用します。
---
OpenCode は [Agent Client Protocol](https://agentclientprotocol.com) または (ACP) をサポートしているため、互換性のあるエディターや IDE で直接使用できます。
:::ヒント
ACP をサポートするエディターとツールのリストについては、[ACP progress report](https://zed.dev/blog/acp-progress-report#available-now).
:::
ACP は、コード エディターと AI コーディング エージェント間の通信を標準化するオープン プロトコルです。
---
## 設定する
ACP 経由で OpenCode を使用するには、`opencode acp` コマンドを実行するようにエディタを設定します。
このコマンドは、stdio 経由で JSON-RPC 経由でエディターと通信する ACP 互換のサブプロセスとして OpenCode を開始します。
以下は、ACP をサポートする一般的なエディタの例です。
---
### ゼッド
[Zed](https://zed.dev) 構成 (`~/.config/zed/settings.json`) に追加します。
```json title="~/.config/zed/settings.json"
{
"agent_servers": {
"OpenCode": {
"command": "opencode",
"args": ["acp"]
}
}
}
```
これを開くには、**コマンド パレット**の `agent: new thread` アクションを使用します。
`keymap.json` を編集してキーボード ショートカットをバインドすることもできます。
```json title="keymap.json"
[
{
"bindings": {
"cmd-alt-o": [
"agent::NewExternalAgentThread",
{
"agent": {
"custom": {
"name": "OpenCode",
"command": {
"command": "opencode",
"args": ["acp"]
}
}
}
}
]
}
}
]
```
---
### JetBrains IDE
[documentation](https://www.jetbrains.com/help/ai-assistant/acp.html):] に従って、[JetBrains IDE](https://www.jetbrains.com/) acp.json] に追加します。
```json title="acp.json"
{
"agent_servers": {
"OpenCode": {
"command": "/absolute/path/bin/opencode",
"args": ["acp"]
}
}
}
```
これを開くには、AI Chat エージェント セレクターで新しい「OpenCode」エージェントを使用します。
---
### アバンテ.nvim
[Avante.nvim](https://github.com/yetone/avante.nvim) 設定に追加:
```lua
{
acp_providers = {
["opencode"] = {
command = "opencode",
args = { "acp" }
}
}
}
```
環境変数を渡す必要がある場合:
```lua {6-8}
{
acp_providers = {
["opencode"] = {
command = "opencode",
args = { "acp" },
env = {
OPENCODE_API_KEY = os.getenv("OPENCODE_API_KEY")
}
}
}
}
```
---
### CodeCompanion.nvim
[CodeCompanion.nvim](https://github.com/olimorris/codecompanion.nvim) で OpenCode を ACP エージェントとして使用するには、以下を Neovim 構成に追加します。
```lua
require("codecompanion").setup({
interactions = {
chat = {
adapter = {
name = "opencode",
model = "claude-sonnet-4",
},
},
},
})
```
この構成は、OpenCode をチャットの ACP エージェントとして使用するように CodeCompanion をセットアップします。
環境変数 (`OPENCODE_API_KEY` など) を渡す必要がある場合、詳細については、CodeCompanion.nvim ドキュメントの「アダプターの構成: 環境変数 ](https://codecompanion.olimorris.dev/getting-started#setting-an-api-key)」を参照してください。
## サポート
OpenCode は、ACP 経由でもターミナル内で動作するのと同じように動作します。すべての機能がサポートされています。
:::注記
`/undo` や `/redo` などの一部の組み込みスラッシュ コマンドは現在サポートされていません。
:::
- 組み込みツール (ファイル操作、ターミナルコマンドなど)
- カスタムツールとスラッシュコマンド
- OpenCode 構成で構成された MCP サーバー
- `AGENTS.md` のプロジェクト固有のルール
- カスタムフォーマッタとリンター
- エージェントと権限システム

View File

@@ -0,0 +1,747 @@
---
title: エージェント
description: 特殊なエージェントを構成して使用します。
---
エージェントは、特定のタスクやワークフロー向けに構成できる特殊な AI アシスタントです。これらを使用すると、カスタム プロンプト、モデル、ツール アクセスを備えた焦点を絞ったツールを作成できます。
:::ヒント
プラン エージェントを使用すると、コードを変更せずにコードを分析し、提案を確認できます。
:::
セッション中にエージェントを切り替えることも、`@` メンションを使用してエージェントを呼び出すこともできます。
---
## 種類
OpenCode には 2 種類のエージェントがあります。プライマリエージェントとサブエージェント。
---
### 主要エージェント
プライマリ エージェントは、直接対話する主要なアシスタントです。 **Tab** キー、または設定した `switch_agent` キーバインドを使用して、それらを切り替えることができます。これらのエージェントが主な会話を処理します。ツールへのアクセスは権限によって構成されます。たとえば、Build ではすべてのツールが有効になっていますが、Plan は制限されています。
:::ヒント
**Tab** キーを使用して、セッション中にプライマリ エージェントを切り替えることができます。
:::
OpenCode には、**Build** と **Plan** という 2 つの組み込みプライマリ エージェントが付属しています。良い
以下を見てください。
---
### サブエージェント
サブエージェントは、プライマリ エージェントが特定のタスクのために呼び出すことができる特殊なアシスタントです。メッセージ内で **@ メンション**することで、手動で呼び出すこともできます。
OpenCode には、**General** と **Explore** という 2 つの組み込みサブエージェントが付属しています。これについては以下で見ていきます。
---
## 内蔵
OpenCode には、2 つの組み込みプライマリ エージェントと 2 つの組み込みサブエージェントが付属しています。
---
### ビルドを使用する
_モード_: `primary`
ビルドは、すべてのツールが有効になっている **デフォルト** プライマリ エージェントです。これは、ファイル操作やシステム コマンドへの完全なアクセスが必要な開発作業用の標準エージェントです。
---
### 利用プラン
_モード_: `primary`
計画と分析のために設計された制限付きエージェント。より詳細な制御を提供し、意図しない変更を防ぐために、許可システムを使用しています。
デフォルトでは、次のすべてが `ask` に設定されます。
- `file edits`: すべての書き込み、パッチ、および編集
- `bash`: すべての bash コマンド
このエージェントは、コードベースに実際の変更を加えずに LLM にコードの分析、変更の提案、または計画の作成を行わせたい場合に役立ちます。
---
### 一般的な使用
_モード_: `primary`
複雑な質問を調査し、複数ステップのタスクを実行するための汎用エージェント。完全なツール アクセス権 (todo を除く) があるため、必要に応じてファイルを変更できます。これを使用して、複数の作業単位を並行して実行します。
---
### 探索を使用する
_モード_: `primary`
コードベースを探索するための高速な読み取り専用エージェント。ファイルを変更できません。これは、パターンでファイルをすばやく検索したり、コードでキーワードを検索したり、コードベースに関する質問に答えたりする必要がある場合に使用します。
---
### 圧縮を使用する
_モード_: `primary`
長いコンテキストを小さな要約に圧縮する隠しシステム エージェント。これは必要に応じて自動的に実行され、UI では選択できません。
---
### タイトルを使用する
_モード_: `primary`
短いセッション タイトルを生成する非表示のシステム エージェント。これは自動的に実行され、UI では選択できません。
---
### 使用概要
_モード_: `primary`
セッション概要を作成する非表示のシステム エージェント。これは自動的に実行され、UI では選択できません。
---
## 使用法
1. プライマリ エージェントの場合は、セッション中に **Tab** キーを使用してエージェントを切り替えます。設定した `switch_agent` キーバインドを使用することもできます。
2. サブエージェントは次のように呼び出すことができます。
- プライマリ エージェントによって、説明に基づいて特殊なタスクを **自動的に** 実行されます。
- メッセージ内でサブエージェントを **@ メンション**することで手動で実行できます。例えば。
```txt frame="none"
@general help me search for this function
```
3. **セッション間のナビゲーション**: サブエージェントが独自の子セッションを作成する場合、以下を使用して親セッションとすべての子セッションの間を移動できます。
- **\<Leader>+Right** (または設定した `session_child_cycle` キーバインド) で、親 → 子 1 → 子 2 → ... → 親と順に循環します。
- **\<Leader>+Left** (または設定した `session_child_cycle_reverse` キーバインド) で、親 ← 子 1 ← 子 2 ← ... ← 親を逆方向に循環します。
これにより、メインの会話と専門的なサブエージェントの作業をシームレスに切り替えることができます。
---
## 設定する
組み込みエージェントをカスタマイズしたり、構成を通じて独自のエージェントを作成したりできます。エージェントは次の 2 つの方法で構成できます。
---
### JSON
`opencode.json` 構成ファイルでエージェントを構成します。
```json title="opencode.json"
{
"$schema": "https://opencode.ai/config.json",
"agent": {
"build": {
"mode": "primary",
"model": "anthropic/claude-sonnet-4-20250514",
"prompt": "{file:./prompts/build.txt}",
"tools": {
"write": true,
"edit": true,
"bash": true
}
},
"plan": {
"mode": "primary",
"model": "anthropic/claude-haiku-4-20250514",
"tools": {
"write": false,
"edit": false,
"bash": false
}
},
"code-reviewer": {
"description": "Reviews code for best practices and potential issues",
"mode": "subagent",
"model": "anthropic/claude-sonnet-4-20250514",
"prompt": "You are a code reviewer. Focus on security, performance, and maintainability.",
"tools": {
"write": false,
"edit": false
}
}
}
}
```
---
### マークダウン
マークダウン ファイルを使用してエージェントを定義することもできます。それらを次の場所に置きます。
- グローバル: `~/.config/opencode/agents/`
- プロジェクトごと: `.opencode/agents/`
```markdown title="~/.config/opencode/agents/review.md"
---
description: Reviews code for quality and best practices
mode: subagent
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.
```
マークダウンファイル名がエージェント名になります。たとえば、`review.md` は `review` エージェントを作成します。
---
## オプション
これらの構成オプションを詳しく見てみましょう。
---
### 説明
`description` オプションを使用して、エージェントの機能とそれをいつ使用するかについての簡単な説明を提供します。
```json title="opencode.json"
{
"agent": {
"review": {
"description": "Reviews code for best practices and potential issues"
}
}
}
```
これは**必須**の構成オプションです。
---
### 温度
`temperature` 設定を使用して、LLM の応答のランダム性と創造性を制御します。
値が低いほど、応答はより集中的かつ決定的になりますが、値が高いほど、創造性と変動性が高まります。
```json title="opencode.json"
{
"agent": {
"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"
{
"agent": {
"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 です。
---
### 最大ステップ数
エージェントが強制的にテキストのみで応答するまでに実行できるエージェントの反復の最大数を制御します。これにより、コストを管理したいユーザーは、エージェントのアクションに制限を設定できます。
これが設定されていない場合、エージェントは、モデルが停止を選択するか、ユーザーがセッションを中断するまで反復を続けます。
```json title="opencode.json"
{
"agent": {
"quick-thinker": {
"description": "Fast reasoning with limited iterations",
"prompt": "You are a quick thinker. Solve problems with minimal steps.",
"steps": 5
}
}
}
```
制限に達すると、エージェントは、作業の概要と推奨される残りのタスクを応答するように指示する特別なシステム プロンプトを受け取ります。
:::注意
従来の `maxSteps` フィールドは非推奨になりました。代わりに `steps` を使用してください。
:::
---
### 無効にする
エージェントを無効にするには、`true` に設定します。
```json title="opencode.json"
{
"agent": {
"review": {
"disable": true
}
}
}
```
---
### プロンプト
`prompt` 構成を使用して、このエージェントのカスタム システム プロンプト ファイルを指定します。プロンプト ファイルには、エージェントの目的に固有の指示が含まれている必要があります。
```json title="opencode.json"
{
"agent": {
"review": {
"prompt": "{file:./prompts/code-review.txt}"
}
}
}
```
このパスは、構成ファイルが配置されている場所に対する相対パスです。したがって、これはグローバルな OpenCode 構成とプロジェクト固有の構成の両方で機能します。
---
### モデル
`model` 構成を使用して、このエージェントのモデルをオーバーライドします。さまざまなタスクに最適化されたさまざまなモデルを使用する場合に役立ちます。たとえば、計画にはより高速なモデルを、実装にはより有能なモデルを使用します。
:::ヒント
モデルを指定しない場合、プライマリ エージェントは [グローバルに設定されたモデル ](/docs/config#models) を使用し、サブエージェントはサブエージェントを呼び出したプライマリ エージェントのモデルを使用します。
:::
```json title="opencode.json"
{
"agent": {
"plan": {
"model": "anthropic/claude-haiku-4-20250514"
}
}
}
```
OpenCode 構成内のモデル ID は、`provider/model-id` という形式を使用します。たとえば、[OpenCode Zen](/docs/zen) を使用している場合、GPT 5.1 Codex には `opencode/gpt-5.1-codex` を使用します。
---
### ツール
`tools` 構成を使用して、このエージェントで使用できるツールを制御します。特定のツールを `true` または `false` に設定することで、有効または無効にすることができます。
```json title="opencode.json" {3-6,9-12}
{
"$schema": "https://opencode.ai/config.json",
"tools": {
"write": true,
"bash": true
},
"agent": {
"plan": {
"tools": {
"write": false,
"bash": false
}
}
}
}
```
:::注記
エージェント固有の設定はグローバル設定をオーバーライドします。
:::
ワイルドカードを使用して複数のツールを一度に制御することもできます。たとえば、MCP サーバーからすべてのツールを無効にするには、次のようにします。
```json title="opencode.json"
{
"$schema": "https://opencode.ai/config.json",
"agent": {
"readonly": {
"tools": {
"mymcp_*": false,
"write": false,
"edit": false
}
}
}
}
```
[tools](/docs/tools) について詳しくはこちらをご覧ください。
---
### 権限
権限を設定して、エージェントが実行できるアクションを管理できます。現在、`edit`、`bash`、および `webfetch` ツールの権限は次のように構成できます。
- `"ask"` — ツールを実行する前に承認を求めるプロンプトを表示する
- `"allow"` — 承認なしですべての操作を許可する
- `"deny"` — ツールを無効にする
```json title="opencode.json"
{
"$schema": "https://opencode.ai/config.json",
"permission": {
"edit": "deny"
}
}
```
これらの権限はエージェントごとにオーバーライドできます。
```json title="opencode.json" {3-5,8-10}
{
"$schema": "https://opencode.ai/config.json",
"permission": {
"edit": "deny"
},
"agent": {
"build": {
"permission": {
"edit": "ask"
}
}
}
}
```
Markdown エージェントで権限を設定することもできます。
```markdown title="~/.config/opencode/agents/review.md"
---
description: Code review without edits
mode: subagent
permission:
edit: deny
bash:
"*": ask
"git diff": allow
"git log*": allow
"grep *": allow
webfetch: deny
---
Only analyze code and suggest changes.
```
特定の bash コマンドに対するアクセス許可を設定できます。
```json title="opencode.json" {7}
{
"$schema": "https://opencode.ai/config.json",
"agent": {
"build": {
"permission": {
"bash": {
"git push": "ask",
"grep *": "allow"
}
}
}
}
}
```
これにはグロブ パターンを使用できます。
```json title="opencode.json" {7}
{
"$schema": "https://opencode.ai/config.json",
"agent": {
"build": {
"permission": {
"bash": {
"git *": "ask"
}
}
}
}
}
```
また、`*` ワイルドカードを使用して、すべてのコマンドの権限を管理することもできます。
最後に一致したルールが優先されるため、`*` ワイルドカードを最初に置き、特定のルールを後に置きます。
```json title="opencode.json" {8}
{
"$schema": "https://opencode.ai/config.json",
"agent": {
"build": {
"permission": {
"bash": {
"*": "ask",
"git status *": "allow"
}
}
}
}
}
```
[権限](/docs/permissions)について詳しくはこちらをご覧ください。
---
### モード
`mode` 設定を使用してエージェントのモードを制御します。 `mode` オプションは、エージェントの使用方法を決定するために使用されます。
```json title="opencode.json"
{
"agent": {
"review": {
"mode": "subagent"
}
}
}
```
`mode` オプションは、`primary`、`subagent`、または `all` に設定できます。 `mode` が指定されていない場合、デフォルトは `all` になります。
---
### 隠れた
`hidden: true` を使用して、`@` オートコンプリート メニューからサブエージェントを非表示にします。他のエージェントによってタスク ツールを介してプログラム的にのみ呼び出す必要がある内部サブエージェントに役立ちます。
```json title="opencode.json"
{
"agent": {
"internal-helper": {
"mode": "subagent",
"hidden": true
}
}
}
```
これは、オートコンプリート メニューでのユーザーの表示にのみ影響します。権限が許可されていれば、非表示のエージェントをタスク ツール経由でモデルから呼び出すことができます。
:::注記
`mode: subagent` エージェントにのみ適用されます。
:::
---
### タスクの権限
`permission.task` を使用して、エージェントがタスク ツール経由でどのサブエージェントを呼び出すことができるかを制御します。柔軟なマッチングのためにグロブ パターンを使用します。
```json title="opencode.json"
{
"agent": {
"orchestrator": {
"mode": "primary",
"permission": {
"task": {
"*": "deny",
"orchestrator-*": "allow",
"code-reviewer": "ask"
}
}
}
}
}
```
`deny` に設定すると、サブエージェントはタスク ツールの説明から完全に削除されるため、モデルはそれを呼び出そうとしません。
:::ヒント
ルールは順番に評価され、**最後に一致したルールが優先されます**。上記の例では、`orchestrator-planner` は `*` (拒否) と `orchestrator-*` (許可) の両方に一致しますが、`orchestrator-*` は `*` の後に来るため、結果は `allow` になります。
:::
:::ヒント
ユーザーは、エージェントのタスク権限が拒否する場合でも、`@` オートコンプリート メニューを介して、いつでもサブエージェントを直接呼び出すことができます。
:::
---
### 色
`color` オプションを使用して、UI でのエージェントの外観をカスタマイズします。これは、インターフェイスでのエージェントの表示方法に影響します。
有効な 16 進カラー (例: `#FF5733`) またはテーマカラー: `primary`、`secondary`、`accent`、`success`、`warning`、`error`、`info` を使用します。
```json title="opencode.json"
{
"agent": {
"creative": {
"color": "#ff6b6b"
},
"code-reviewer": {
"color": "accent"
}
}
}
```
---
### トップP
`top_p` オプションで応答の多様性を制御します。ランダム性を制御するための温度の代替手段。
```json title="opencode.json"
{
"agent": {
"brainstorm": {
"top_p": 0.9
}
}
}
```
値の範囲は 0.0 1.0 です。値が低いほど集中力が高まり、値が高いほど多様性が高まります。
---
### 追加
エージェント設定で指定したその他のオプションはすべて、モデル オプションとしてプロバイダーに**直接渡されます**。これにより、プロバイダー固有の機能とパラメーターを使用できるようになります。
たとえば、OpenAI の推論モデルを使用すると、推論の労力を制御できます。
```json title="opencode.json" {6,7}
{
"agent": {
"deep-thinker": {
"description": "Agent that uses high reasoning effort for complex problems",
"model": "openai/gpt-5",
"reasoningEffort": "high",
"textVerbosity": "low"
}
}
}
```
これらの追加オプションはモデルとプロバイダーに固有です。使用可能なパラメータについては、プロバイダのドキュメントを確認してください。
:::ヒント
`opencode models` を実行して、利用可能なモデルのリストを表示します。
:::
---
## エージェントの作成
次のコマンドを使用して、新しいエージェントを作成できます。
```bash
opencode agent create
```
この対話型コマンドは次のことを行います。
1. エージェントを保存する場所を尋ねます。グローバルまたはプロジェクト固有。
2. エージェントが行うべきことの説明。
3. 適切なシステム プロンプトと識別子を生成します。
4. エージェントがアクセスできるツールを選択できます。
5. 最後に、エージェント構成を含むマークダウン ファイルを作成します。
---
## ユースケース
さまざまなエージェントの一般的な使用例をいくつか示します。
- **ビルド エージェント**: すべてのツールを有効にした完全な開発作業
- **計画エージェント**: 変更を加えずに分析および計画を立てる
- **レビュー エージェント**: 読み取り専用アクセスとドキュメント ツールを備えたコード レビュー
- **デバッグ エージェント**: bash および読み取りツールを有効にして調査に重点を置きます
- **ドキュメント エージェント**: ファイル操作を使用してドキュメントを作成しますが、システム コマンドは使用しません
---
## 例
以下に、役立つと思われるエージェントの例をいくつか示します。
:::ヒント
共有したいエージェントはいますか? [PR](https://github.com/anomalyco/opencode) を送信します。
:::
---
### 文書作成エージェント
```markdown title="~/.config/opencode/agents/docs-writer.md"
---
description: Writes and maintains project documentation
mode: subagent
tools:
bash: false
---
You are a technical writer. Create clear, comprehensive documentation.
Focus on:
- Clear explanations
- Proper structure
- Code examples
- User-friendly language
```
---
### セキュリティ監査人
```markdown title="~/.config/opencode/agents/security-auditor.md"
---
description: Performs security audits and identifies vulnerabilities
mode: subagent
tools:
write: false
edit: false
---
You are a security expert. Focus on identifying potential security issues.
Look for:
- Input validation vulnerabilities
- Authentication and authorization flaws
- Data exposure risks
- Dependency vulnerabilities
- Configuration security issues
```

View File

@@ -0,0 +1,601 @@
---
title: CLI
description: OpenCode CLI のオプションとコマンド。
---
import { Tabs, TabItem } from "@astrojs/starlight/components"
OpenCode CLI は、引数なしで実行すると、デフォルトで [TUI](/docs/tui) を開始します。
```bash
opencode
```
ただし、このページに記載されているようにコマンドも受け入れます。これにより、OpenCode をプログラム的に操作できるようになります。
```bash
opencode run "Explain how closures work in JavaScript"
```
---
### トゥイ
OpenCode ターミナル ユーザー インターフェイスを開始します。
```bash
opencode [project]
```
#### フラグ
|旗 |ショート |説明 |
| ------------ | ----- | ------------------------------------------ |
| `--continue` | `-c` |最後のセッションを続行 |
| `--session` | `-s` |続行するセッション ID |
| `--prompt` | |使用のプロンプト |
| `--model` | `-m` |プロバイダー/モデルの形式で使用するモデル |
| `--agent` | |使用するエージェント |
| `--port` | |リッスンするポート |
| `--hostname` | |リッスンするホスト名 |
---
## コマンド
OpenCode CLI には次のコマンドもあります。
---
### エージェント
OpenCode のエージェントを管理します。
```bash
opencode agent [command]
```
---
### 付ける
`serve` または `web` コマンドを使用して起動された、すでに実行中の OpenCode バックエンド サーバーにターミナルを接続します。
```bash
opencode attach [url]
```
これにより、リモート OpenCode バックエンドで TUI を使用できるようになります。例えば:
```bash
# Start the backend server for web/mobile access
opencode web --port 4096 --hostname 0.0.0.0
# In another terminal, attach the TUI to the running backend
opencode attach http://10.20.30.40:4096
```
#### フラグ
|旗 |ショート |説明 |
| ----------- | ----- | --------------------------------- |
| `--dir` | | TUI を開始する作業ディレクトリ |
| `--session` | `-s` |続行するセッション ID |
---
#### 作成する
カスタム構成で新しいエージェントを作成します。
```bash
opencode agent create
```
このコマンドは、カスタム システム プロンプトとツール構成を使用して新しいエージェントを作成する手順を示します。
---
#### リスト
利用可能なエージェントをすべてリストします。
```bash
opencode agent list
```
---
### 認証
プロバイダーの資格情報とログインを管理するコマンド。
```bash
opencode auth [command]
```
---
#### ログイン
OpenCode は [Models.dev](https://models.dev) のプロバイダー リストを利用しているため、`opencode auth login` を使用して、使用したいプロバイダーの API キーを構成できます。これは`~/.local/share/opencode/auth.json`に保存されます。
```bash
opencode auth login
```
OpenCode が起動すると、認証情報ファイルからプロバイダーがロードされます。また、環境またはプロジェクト内の `.env` ファイルで定義されたキーがあるかどうかも確認します。
---
#### リスト
認証情報ファイルに保存されているすべての認証されたプロバイダーをリストします。
```bash
opencode auth list
```
またはショートバージョン。
```bash
opencode auth ls
```
---
#### ログアウト
資格情報ファイルからプロバイダーをクリアすることで、プロバイダーからログアウトします。
```bash
opencode auth logout
```
---
### ギットハブ
リポジトリ自動化のための GitHub エージェントを管理します。
```bash
opencode github [command]
```
---
#### インストール
GitHub エージェントをリポジトリにインストールします。
```bash
opencode github install
```
これにより、必要な GitHub Actions ワークフローが設定され、構成プロセスがガイドされます。 [詳細はこちら](/docs/github)。
---
#### 走る
GitHub エージェントを実行します。これは通常、GitHub Actions で使用されます。
```bash
opencode github run
```
##### フラグ
|旗 |説明 |
| --------- | -------------------------------------- |
| `--event` |エージェントを実行するための GitHub モック イベント |
| `--token` | GitHub個人アクセストークン |
---
### mcp
モデル コンテキスト プロトコル サーバーを管理します。
```bash
opencode mcp [command]
```
---
#### 追加
MCP サーバーを構成に追加します。
```bash
opencode mcp add
```
このコマンドは、ローカルまたはリモートの MCP サーバーを追加する手順を示します。
---
#### リスト
構成されているすべての MCP サーバーとその接続ステータスをリストします。
```bash
opencode mcp list
```
または、短いバージョンを使用してください。
```bash
opencode mcp ls
```
---
#### 認証
OAuth 対応の MCP サーバーで認証します。
```bash
opencode mcp auth [name]
```
サーバー名を指定しない場合は、利用可能な OAuth 対応サーバーから選択するように求められます。
OAuth 対応サーバーとその認証ステータスを一覧表示することもできます。
```bash
opencode mcp auth list
```
または、短いバージョンを使用してください。
```bash
opencode mcp auth ls
```
---
#### ログアウト
MCP サーバーの OAuth 資格情報を削除します。
```bash
opencode mcp logout [name]
```
---
#### デバッグ
MCP サーバーの OAuth 接続の問題をデバッグします。
```bash
opencode mcp debug <name>
```
---
### モデル
構成されたプロバイダーから利用可能なすべてのモデルをリストします。
```bash
opencode models [provider]
```
このコマンドは、構成されたプロバイダー全体で利用可能なすべてのモデルを `provider/model` の形式で表示します。
これは、config](/docs/config/) で使用する正確なモデル名を把握するのに役立ちます。
オプションでプロバイダー ID を渡して、そのプロバイダーによってモデルをフィルターできます。
```bash
opencode models anthropic
```
#### フラグ
|旗 |説明 |
| ----------- | ------------------------------------------------------------ |
| `--refresh` | models.dev からモデル キャッシュを更新します。
| `--verbose` |より詳細なモデル出力を使用します (コストなどのメタデータを含む) |
`--refresh` フラグを使用して、キャッシュされたモデル リストを更新します。これは、新しいモデルがプロバイダーに追加され、それを OpenCode で確認したい場合に便利です。
```bash
opencode models --refresh
```
---
### 走る
プロンプトを直接渡して、非対話モードでオープンコードを実行します。
```bash
opencode run [message..]
```
これは、スクリプト作成、自動化、または完全な TUI を起動せずに迅速な回答が必要な場合に便利です。例えば。
```bash "opencode run"
opencode run Explain the use of context in Go
```
実行中の `opencode serve` インスタンスにアタッチして、実行ごとの MCP サーバーのコールド ブート時間を回避することもできます。
```bash
# Start a headless server in one terminal
opencode serve
# In another terminal, run commands that attach to it
opencode run --attach http://localhost:4096 "Explain async/await in JavaScript"
```
#### フラグ
|旗 |ショート |説明 |
| ------------ | ----- | ------------------------------------------------------------------ |
| `--command` | |実行するコマンド。引数には message を使用します。
| `--continue` | `-c` |最後のセッションを続行 |
| `--session` | `-s` |続行するセッション ID |
| `--share` | |セッションを共有する |
| `--model` | `-m` |プロバイダー/モデルの形式で使用するモデル |
| `--agent` | |使用するエージェント |
| `--file` | `-f` |メッセージに添付するファイル |
| `--format` | |形式: デフォルト (フォーマット済み) または json (生の JSON イベント) |
| `--title` | |セッションのタイトル (値が指定されていない場合は、切り詰められたプロンプトが使用されます) |
| `--attach` | |実行中のオープンコードサーバー (http://localhost:4096 など) に接続します。
| `--port` | |ローカルサーバーのポート (デフォルトはランダムポート) |
---
### 仕える
API アクセスのためにヘッドレス OpenCode サーバーを起動します。完全な HTTP インターフェイスについては、[server docs](/docs/server) を確認してください。
```bash
opencode serve
```
これにより、TUI インターフェイスを使用せずにオープンコード機能への API アクセスを提供する HTTP サーバーが起動します。 `OPENCODE_SERVER_PASSWORD` を設定して HTTP 基本認証を有効にします (ユーザー名のデフォルトは `opencode`)。
#### フラグ
|旗 |説明 |
| ------------ | ------------------------------------------ |
| `--port` |リッスンするポート |
| `--hostname` |リッスンするホスト名 |
| `--mdns` | mDNS 検出を有効にする |
| `--cors` | CORS を許可する追加のブラウザーオリジン |
---
### セッション
OpenCode セッションを管理します。
```bash
opencode session [command]
```
---
#### リスト
すべての OpenCode セッションをリストします。
```bash
opencode session list
```
##### フラグ
|旗 |ショート |説明 |
| ------------- | ----- | ------------------------------------ |
| `--max-count` | `-n` |最新のセッションを N 個に制限 |
| `--format` | |出力形式: テーブルまたは json (テーブル) |
---
### 統計
OpenCode セッションのトークンの使用状況とコストの統計を表示します。
```bash
opencode stats
```
#### フラグ
|旗 |説明 |
| ----------- | --------------------------------------------------------------------------- |
| `--days` |過去 N 日間の統計を表示 (すべての時間) |
| `--tools` |表示するツールの数 (すべて) |
| `--models` |モデルの使用状況の内訳を表示します (デフォルトでは非表示)。上位 N | を表示するには、数値を渡します。
| `--project` |プロジェクトによるフィルター (すべてのプロジェクト、空の文字列: 現在のプロジェクト) |
---
### 輸出
セッションデータをJSONとしてエクスポートします。
```bash
opencode export [sessionID]
```
セッション ID を指定しない場合は、利用可能なセッションから選択するように求められます。
---
### 輸入
JSON ファイルまたは OpenCode 共有 URL からセッション データをインポートします。
```bash
opencode import <file>
```
ローカル ファイルまたは OpenCode 共有 URL からインポートできます。
```bash
opencode import session.json
opencode import https://opncd.ai/s/abc123
```
---
### ウェブ
Web インターフェイスを使用してヘッドレス OpenCode サーバーを起動します。
```bash
opencode web
```
これにより、HTTP サーバーが起動し、Web ブラウザが開き、Web インターフェイスを通じて OpenCode にアクセスします。 `OPENCODE_SERVER_PASSWORD` を設定して HTTP 基本認証を有効にします (ユーザー名のデフォルトは `opencode`)。
#### フラグ
|旗 |説明 |
| ------------ | ------------------------------------------ |
| `--port` |リッスンするポート |
| `--hostname` |リッスンするホスト名 |
| `--mdns` | mDNS 検出を有効にする |
| `--cors` | CORS を許可する追加のブラウザーオリジン |
---
### acp
ACP (エージェント クライアント プロトコル) サーバーを起動します。
```bash
opencode acp
```
このコマンドは、nd-JSON を使用して stdin/stdout 経由で通信する ACP サーバーを起動します。
#### フラグ
|旗 |説明 |
| ------------ | --------------------- |
| `--cwd` |作業ディレクトリ |
| `--port` |リッスンするポート |
| `--hostname` |リッスンするホスト名 |
---
### アンインストールする
OpenCode をアンインストールし、関連ファイルをすべて削除します。
```bash
opencode uninstall
```
#### フラグ
|旗 |ショート |説明 |
| --------------- | ----- | ------------------------------------------- |
| `--keep-config` | `-c` |設定ファイルを保持する |
| `--keep-data` | `-d` |セッション データとスナップショットを保持する |
| `--dry-run` | | | を削除せずに削除されるものを表示します。
| `--force` | `-f` |確認プロンプトをスキップする |
---
### アップグレード
オープンコードを最新バージョンまたは特定のバージョンに更新します。
```bash
opencode upgrade [target]
```
最新バージョンにアップグレードするには。
```bash
opencode upgrade
```
特定のバージョンにアップグレードするには。
```bash
opencode upgrade v0.1.48
```
#### フラグ
|旗 |ショート |説明 |
| ---------- | ----- | ----------------------------------------------------------------- |
| `--method` | `-m` |使用されたインストール方法。カール、npm、pnpm、バン、醸造 |
---
## グローバルフラグ
opencode CLI は次のグローバル フラグを受け取ります。
|旗 |ショート |説明 |
| -------------- | ----- | ------------------------------------ |
| `--help` | `-h` |ヘルプを表示 |
| `--version` | `-v` |バージョン番号を出力 |
| `--print-logs` | |ログを標準エラー出力に出力 |
| `--log-level` | |ログ レベル (DEBUG、INFO、WARN、ERROR) |
---
## 環境変数
OpenCode は環境変数を使用して構成できます。
|変数 |タイプ |説明 |
| ------------------------------------- | ------- | ------------------------------------------------- |
| `OPENCODE_AUTO_SHARE` |ブール値 |セッションを自動的に共有する |
| `OPENCODE_GIT_BASH_PATH` |文字列 | Windows 上で実行可能な Git Bash へのパス |
| `OPENCODE_CONFIG` |文字列 |構成ファイルへのパス |
| `OPENCODE_CONFIG_DIR` |文字列 | config ディレクトリへのパス |
| `OPENCODE_CONFIG_CONTENT` |文字列 |インライン JSON 構成コンテンツ |
| `OPENCODE_DISABLE_AUTOUPDATE` |ブール値 |自動更新チェックを無効にする |
| `OPENCODE_DISABLE_PRUNE` |ブール値 |古いデータのプルーニングを無効にする |
| `OPENCODE_DISABLE_TERMINAL_TITLE` |ブール値 |端末タイトルの自動更新を無効にする |
| `OPENCODE_PERMISSION` |文字列 |インライン化された json 権限設定 |
| `OPENCODE_DISABLE_DEFAULT_PLUGINS` |ブール値 |デフォルトのプラグインを無効にする |
| `OPENCODE_DISABLE_LSP_DOWNLOAD` |ブール値 | LSP サーバーの自動ダウンロードを無効にする |
| `OPENCODE_ENABLE_EXPERIMENTAL_MODELS` |ブール値 |実験モデルを有効にする |
| `OPENCODE_DISABLE_AUTOCOMPACT` |ブール値 |自動コンテキスト圧縮を無効にする |
| `OPENCODE_DISABLE_CLAUDE_CODE` |ブール値 | `.claude` からの読み取りを無効にする (プロンプト + スキル) |
| `OPENCODE_DISABLE_CLAUDE_CODE_PROMPT` |ブール値 | `~/.claude/CLAUDE.md` の読み取りを無効にする |
| `OPENCODE_DISABLE_CLAUDE_CODE_SKILLS` |ブール値 | `.claude/skills` のロードを無効にする |
| `OPENCODE_DISABLE_MODELS_FETCH` |ブール値 |リモート ソースからのモデルの取得を無効にする |
| `OPENCODE_FAKE_VCS` |文字列 |テスト目的の偽の VCS プロバイダー |
| `OPENCODE_DISABLE_FILETIME_CHECK` |ブール値 |最適化のためにファイル時間チェックを無効にする |
| `OPENCODE_CLIENT` |文字列 |クライアント識別子 (デフォルトは `cli`) |
| `OPENCODE_ENABLE_EXA` |ブール値 | Exa Web 検索ツールを有効にする |
| `OPENCODE_SERVER_PASSWORD` |文字列 | `serve`/`web` の基本認証を有効にする |
| `OPENCODE_SERVER_USERNAME` |文字列 |基本認証ユーザー名 (デフォルト `opencode`) をオーバーライドします。
| `OPENCODE_MODELS_URL` |文字列 |モデル設定を取得するためのカスタム URL |
---
### 実験的
これらの環境変数により、変更または削除される可能性のある実験的な機能が有効になります。
|変数 |タイプ |説明 |
| ----------------------------------------------- | ------- | --------------------------------------- |
| `OPENCODE_EXPERIMENTAL` |ブール値 |すべての実験的機能を有効にする |
| `OPENCODE_EXPERIMENTAL_ICON_DISCOVERY` |ブール値 |アイコン検出を有効にする |
| `OPENCODE_EXPERIMENTAL_DISABLE_COPY_ON_SELECT` |ブール値 | TUI で選択時のコピーを無効にする |
| `OPENCODE_EXPERIMENTAL_BASH_DEFAULT_TIMEOUT_MS` |番号 | bash コマンドのデフォルトのタイムアウト (ミリ秒) |
| `OPENCODE_EXPERIMENTAL_OUTPUT_TOKEN_MAX` |番号 | LLM 応答の最大出力トークン |
| `OPENCODE_EXPERIMENTAL_FILEWATCHER` |ブール値 |ディレクトリ全体のファイル監視を有効にする |
| `OPENCODE_EXPERIMENTAL_OXFMT` |ブール値 | oxfmt フォーマッタを有効にする |
| `OPENCODE_EXPERIMENTAL_LSP_TOOL` |ブール値 |実験的な LSP ツールを有効にする |
| `OPENCODE_EXPERIMENTAL_DISABLE_FILEWATCHER` |ブール値 |ファイルウォッチャーを無効にする |
| `OPENCODE_EXPERIMENTAL_EXA` |ブール値 |実験的な Exa 機能を有効にする |
| `OPENCODE_EXPERIMENTAL_LSP_TY` |ブール値 |実験的な LSP タイプ チェックを有効にする |
| `OPENCODE_EXPERIMENTAL_MARKDOWN` |ブール値 |試験的なマークダウン機能を有効にする |
| `OPENCODE_EXPERIMENTAL_PLAN_MODE` |ブール値 |プランモードを有効にする |

View File

@@ -0,0 +1,323 @@
---
title: コマンド
description: 反復的なタスク用のカスタム コマンドを作成します。
---
カスタム コマンドを使用すると、TUI でコマンドを実行するときに実行するプロンプトを指定できます。
```bash frame="none"
/my-command
```
カスタム コマンドは、`/init`、`/undo`、`/redo`、`/share`、`/help` などの組み込みコマンドに追加されます。 [詳細はこちら](/docs/tui#commands)。
---
## コマンドファイルの作成
カスタム コマンドを定義するには、`commands/` ディレクトリにマークダウン ファイルを作成します。
`.opencode/commands/test.md` を作成します。
```md title=".opencode/commands/test.md"
---
description: Run tests with coverage
agent: build
model: anthropic/claude-3-5-sonnet-20241022
---
Run the full test suite with coverage report and show any failures.
Focus on the failing tests and suggest fixes.
```
フロントマターはコマンドのプロパティを定義します。内容がテンプレートとなります。
`/` に続けてコマンド名を入力して、コマンドを使用します。
```bash frame="none"
"/test"
```
---
## 設定する
カスタム コマンドは、OpenCode 構成を通じて、または `commands/` ディレクトリにマークダウン ファイルを作成することによって追加できます。
---
### JSON
OpenCode で `command` オプションを使用します [config](/docs/config):
```json title="opencode.jsonc" {4-12}
{
"$schema": "https://opencode.ai/config.json",
"command": {
// This becomes the name of the command
"test": {
// This is the prompt that will be sent to the LLM
"template": "Run the full test suite with coverage report and show any failures.\nFocus on the failing tests and suggest fixes.",
// This is shown as the description in the TUI
"description": "Run tests with coverage",
"agent": "build",
"model": "anthropic/claude-3-5-sonnet-20241022"
}
}
}
```
これで、TUI で次のコマンドを実行できるようになります。
```bash frame="none"
/test
```
---
### マークダウン
マークダウン ファイルを使用してコマンドを定義することもできます。それらを次の場所に置きます。
- グローバル: `~/.config/opencode/agents/`
- プロジェクトごと: `.opencode/agents/`
```markdown title="~/.config/opencode/commands/test.md"
---
description: Run tests with coverage
agent: build
model: anthropic/claude-3-5-sonnet-20241022
---
Run the full test suite with coverage report and show any failures.
Focus on the failing tests and suggest fixes.
```
マークダウンファイル名がコマンド名になります。たとえば、`test.md` を使用すると、
あなたは実行します:
```bash frame="none"
/test
```
---
## プロンプト構成
カスタム コマンドのプロンプトは、いくつかの特別なプレースホルダーと構文をサポートしています。
---
### 引数
`$ARGUMENTS` プレースホルダーを使用してコマンドに引数を渡します。
```md title=".opencode/commands/component.md"
---
description: Create a new component
---
Create a new React component named $ARGUMENTS with TypeScript support.
Include proper typing and basic structure.
```
引数を指定してコマンドを実行します。
```bash frame="none"
/component Button
```
そして、`$ARGUMENTS` は `Button` に置き換えられます。
位置パラメータを使用して個々の引数にアクセスすることもできます。
- `$1` - 最初の引数
- `$2` - 2 番目の引数
- `$3` - 3 番目の引数
- 等々...
例えば:
```md title=".opencode/commands/create-file.md"
---
description: Create a new file with content
---
Create a file named $1 in the directory $2
with the following content: $3
```
次のコマンドを実行します。
```bash frame="none"
/create-file config.json src "{ \"key\": \"value\" }"
```
これは以下を置き換えます。
- `$1` と `config.json`
- `$1` と `config.json`
- `$1` と `config.json`
---
### シェル出力
_!`command`_ を使用して、[bash command](/docs/tui#bash-commands) の出力をプロンプトに挿入します。
たとえば、テスト カバレッジを分析するカスタム コマンドを作成するには、次のようにします。
```md title=".opencode/commands/analyze-coverage.md"
---
description: Analyze test coverage
---
Here are the current test results:
!`npm test`
Based on these results, suggest improvements to increase coverage.
```
または、最近の変更を確認するには:
```md title=".opencode/commands/review-changes.md"
---
description: Review recent changes
---
Recent git commits:
!`git log --oneline -10`
Review these changes and suggest any improvements.
```
コマンドはプロジェクトのルート ディレクトリで実行され、その出力はプロンプトの一部になります。
---
### ファイル参照
`@` の後にファイル名を指定して、コマンドにファイルを含めます。
```md title=".opencode/commands/review-component.md"
---
description: Review component
---
Review the component in @src/components/Button.tsx.
Check for performance issues and suggest improvements.
```
ファイルの内容はプロンプトに自動的に含まれます。
---
## オプション
構成オプションを詳しく見てみましょう。
---
### テンプレート
`template` オプションは、コマンドの実行時に LLM に送信されるプロンプトを定義します。
```json title="opencode.json"
{
"command": {
"test": {
"template": "Run the full test suite with coverage report and show any failures.\nFocus on the failing tests and suggest fixes."
}
}
}
```
これは**必須**の構成オプションです。
---
### 説明
`description` オプションを使用して、コマンドの動作の簡単な説明を入力します。
```json title="opencode.json"
{
"command": {
"test": {
"description": "Run tests with coverage"
}
}
}
```
これは、コマンドを入力すると TUI に説明として表示されます。
---
### エージェント
オプションで、`agent` 設定を使用して、このコマンドを実行する [agent](/docs/agents) を指定します。
これが [subagent](/docs/agents/#subagents) の場合、コマンドはデフォルトでサブエージェントの呼び出しをトリガーします。
この動作を無効にするには、`subtask` を `false` に設定します。
```json title="opencode.json"
{
"command": {
"review": {
"agent": "plan"
}
}
}
```
これは**オプション**の構成オプションです。指定しない場合、デフォルトで現在のエージェントが使用されます。
---
### サブタスク
`subtask` ブール値を使用して、コマンドが [subagent](/docs/agents/#subagents) 呼び出しを強制的にトリガーします。
これは、コマンドがプライマリ コンテキストを汚染せず、エージェントがサブエージェントとして動作するように**強制**する場合に便利です。
[agent](/docs/agents) 設定で `mode` が `primary` に設定されている場合でも。
```json title="opencode.json"
{
"command": {
"analyze": {
"subtask": true
}
}
}
```
これは**オプション**の構成オプションです。
---
### モデル
`model` 設定を使用して、このコマンドのデフォルト モデルをオーバーライドします。
```json title="opencode.json"
{
"command": {
"analyze": {
"model": "anthropic/claude-3-5-sonnet-20241022"
}
}
}
```
これは**オプション**の構成オプションです。
---
## 内蔵
opencode には、`/init`、`/undo`、`/redo`、`/share`、`/help` などのいくつかの組み込みコマンドが含まれています。 [詳細はこちら](/docs/tui#commands)。
:::注記
カスタム コマンドは組み込みコマンドをオーバーライドできます。
:::
同じ名前のカスタム コマンドを定義すると、組み込みコマンドがオーバーライドされます。

View File

@@ -0,0 +1,685 @@
---
title: 構成
description: OpenCode JSON 構成を使用します。
---
JSON 構成ファイルを使用して OpenCode を構成できます。
---
## 形式
OpenCode は、**JSON** と **JSONC** (コメント付きの JSON) 形式の両方をサポートしています。
```jsonc title="opencode.jsonc"
{
"$schema": "https://opencode.ai/config.json",
// Theme configuration
"theme": "opencode",
"model": "anthropic/claude-sonnet-4-5",
"autoupdate": true,
}
```
---
## 所在地
構成をいくつかの異なる場所に配置できます。
優先順位が違う。
:::注記
構成ファイルは置き換えられるのではなく、**マージ**されます。
:::
構成ファイルは置き換えられるのではなく、マージされます。次の構成場所の設定が結合されます。後の構成は、キーが競合する場合にのみ、以前の構成をオーバーライドします。すべての構成からの競合しない設定は保持されます。
たとえば、グローバル設定で `theme: "opencode"` と `autoupdate: true` が設定され、プロジェクト設定で `model: "anthropic/claude-sonnet-4-5"` が設定されている場合、最終的な設定には 3 つの設定がすべて含まれます。
---
### 優先順位
構成ソースは次の順序でロードされます (後のソースは前のソースをオーバーライドします)。
1. **リモート設定** (`.well-known/opencode` から) - 組織のデフォルト
2. **グローバル設定** (`~/.config/opencode/opencode.json`) - ユーザー設定
3. **カスタム構成** (`OPENCODE_CONFIG` 環境変数) - カスタム オーバーライド
4. **プロジェクト構成** (プロジェクト内の`opencode.json`) - プロジェクト固有の設定
5. **`.opencode` ディレクトリ** - エージェント、コマンド、プラグイン
6. **インライン構成** (`OPENCODE_CONFIG_CONTENT` 環境変数) - ランタイムオーバーライド
つまり、プロジェクト構成はグローバルのデフォルトをオーバーライドでき、グローバル構成はリモート組織のデフォルトをオーバーライドできます。
:::注記
`.opencode` および `~/.config/opencode` ディレクトリでは、サブディレクトリに **複数名** が使用されています: `agents/`、`commands/`、`modes/`、`plugins/`、`skills/`、`tools/`、および `themes/`。下位互換性のために、単数形の名前 (`agent/` など) もサポートされています。
:::
---
### リモート
組織は、`.well-known/opencode` エンドポイント経由でデフォルト構成を提供できます。これは、それをサポートするプロバイダーで認証するときに自動的に取得されます。
リモート設定が最初にロードされ、基本層として機能します。他のすべての構成ソース (グローバル、プロジェクト) は、これらのデフォルトをオーバーライドできます。
たとえば、組織がデフォルトで無効になっている MCP サーバーを提供している場合:
```json title="Remote config from .well-known/opencode"
{
"mcp": {
"jira": {
"type": "remote",
"url": "https://jira.example.com/mcp",
"enabled": false
}
}
}
```
ローカル設定で特定のサーバーを有効にすることができます。
```json title="opencode.json"
{
"mcp": {
"jira": {
"type": "remote",
"url": "https://jira.example.com/mcp",
"enabled": true
}
}
}
```
---
### グローバル
グローバル OpenCode 構成を `~/.config/opencode/opencode.json` に配置します。テーマ、プロバイダー、キーバインドなどのユーザー全体の設定にはグローバル設定を使用します。
グローバル設定はリモート組織のデフォルトをオーバーライドします。
---
### プロジェクトごと
プロジェクトのルートに `opencode.json` を追加します。プロジェクト構成は、標準構成ファイルの中で最も高い優先順位を持ち、グローバル構成とリモート構成の両方をオーバーライドします。
:::ヒント
プロジェクト固有の構成をプロジェクトのルートに配置します。
:::
OpenCode が起動すると、現在のディレクトリで構成ファイルを検索するか、最も近い Git ディレクトリまで移動します。
これは Git に安全にチェックインでき、グローバル スキーマと同じスキーマを使用します。
---
### カスタムパス
`OPENCODE_CONFIG` 環境変数を使用してカスタム構成ファイルのパスを指定します。
```bash
export OPENCODE_CONFIG=/path/to/my/custom-config.json
opencode run "Hello world"
```
カスタム構成は、優先順位でグローバル構成とプロジェクト構成の間にロードされます。
---
### カスタムディレクトリ
`OPENCODE_CONFIG_DIR` を使用してカスタム構成ディレクトリを指定します。
環境変数。このディレクトリでは、エージェント、コマンド、
モードとプラグインは標準の `.opencode` ディレクトリと同様であり、次のようにする必要があります。
同じ構造に従います。
```bash
export OPENCODE_CONFIG_DIR=/path/to/my/config-directory
opencode run "Hello world"
```
カスタム ディレクトリはグローバル config ディレクトリと `.opencode` ディレクトリの後にロードされるため、それらの設定を**オーバーライド**できます。
---
## スキーマ
構成ファイルには、[**`opencode.ai/config.json`**](https://opencode.ai/config.json).
エディターはスキーマに基づいて検証し、オートコンプリートできる必要があります。
---
### トゥイ
`tui` オプションを使用して TUI 固有の設定を構成できます。
```json title="opencode.json"
{
"$schema": "https://opencode.ai/config.json",
"tui": {
"scroll_speed": 3,
"scroll_acceleration": {
"enabled": true
},
"diff_style": "auto"
}
}
```
利用可能なオプション:
- `scroll_acceleration.enabled` - macOS スタイルのスクロール アクセラレーションを有効にします。 **`scroll_speed` よりも優先されます。**
- `scroll_speed` - カスタムのスクロール速度乗数 (デフォルト: `3`、最小: `1`)。 `scroll_acceleration.enabled` が `true` の場合は無視されます。
- `diff_style` - 差分レンダリングを制御します。 `"auto"` は端末の幅に適応し、`"stacked"` は常に 1 列を表示します。
[TUI の使用方法の詳細については、こちら](/docs/tui) をご覧ください。
---
### サーバ
`server` オプションを使用して、`opencode serve` および `opencode web` コマンドのサーバー設定を構成できます。
```json title="opencode.json"
{
"$schema": "https://opencode.ai/config.json",
"server": {
"port": 4096,
"hostname": "0.0.0.0",
"mdns": true,
"mdnsDomain": "myproject.local",
"cors": ["http://localhost:5173"]
}
}
```
利用可能なオプション:
- `port` - リッスンするポート。
- `hostname` - リッスンするホスト名。 `mdns` が有効でホスト名が設定されていない場合、デフォルトは `0.0.0.0` になります。
- `mdns` - mDNS サービス検出を有効にします。これにより、ネットワーク上の他のデバイスが OpenCode サーバーを検出できるようになります。
- `mdnsDomain` - mDNS サービスのカスタム ドメイン名。デフォルトは `opencode.local` です。同じネットワーク上で複数のインスタンスを実行する場合に便利です。
- `cors` - ブラウザベースのクライアントから HTTP サーバーを使用するときに CORS を許可する追加のオリジン。値は完全なオリジン (スキーム + ホスト + オプションのポート) である必要があります (例: `https://app.example.com`)。
[サーバーの詳細については、こちら](/docs/server)をご覧ください。
---
### ツール
LLM が使用できるツールは、`tools` オプションを通じて管理できます。
```json title="opencode.json"
{
"$schema": "https://opencode.ai/config.json",
"tools": {
"write": false,
"bash": false
}
}
```
[ツールの詳細については、こちらをご覧ください](/docs/tools)。
---
### モデル
`provider`、`model`、および `small_model` オプションを使用して、OpenCode 構成で使用するプロバイダーとモデルを構成できます。
```json title="opencode.json"
{
"$schema": "https://opencode.ai/config.json",
"provider": {},
"model": "anthropic/claude-sonnet-4-5",
"small_model": "anthropic/claude-haiku-4-5"
}
```
`small_model` オプションは、タイトル生成などの軽量タスク用に別のモデルを構成します。デフォルトでは、OpenCode は、プロバイダーから安価なモデルが入手可能な場合は、より安価なモデルを使用しようとします。そうでない場合は、メイン モデルにフォールバックします。
プロバイダー オプションには、`timeout` および `setCacheKey` を含めることができます。
```json title="opencode.json"
{
"$schema": "https://opencode.ai/config.json",
"provider": {
"anthropic": {
"options": {
"timeout": 600000,
"setCacheKey": true
}
}
}
}
```
- `timeout` - リクエストのタイムアウト (ミリ秒単位) (デフォルト: 300000)。無効にするには、`false` に設定します。
- `setCacheKey` - 指定されたプロバイダーに対してキャッシュ キーが常に設定されていることを確認します。
[ローカルモデル](/docs/models#local). [詳細はこちら](/docs/models)。
---
#### プロバイダー固有のオプション
一部のプロバイダーは、一般的な `timeout` および `apiKey` 設定を超える追加の構成オプションをサポートしています。
##### アマゾンの岩盤
Amazon Bedrock は、AWS 固有の構成をサポートしています。
```json title="opencode.json"
{
"$schema": "https://opencode.ai/config.json",
"provider": {
"amazon-bedrock": {
"options": {
"region": "us-east-1",
"profile": "my-aws-profile",
"endpoint": "https://bedrock-runtime.us-east-1.vpce-xxxxx.amazonaws.com"
}
}
}
}
```
- `region` - Bedrock の AWS リージョン (デフォルトは `AWS_REGION` 環境変数または `us-east-1`)
- `profile` - `~/.aws/credentials` からの AWS 名前付きプロファイル (デフォルトは `AWS_PROFILE` 環境変数)
- `endpoint` - VPC エンドポイントのカスタム エンドポイント URL。これは、AWS 固有の用語を使用した汎用 `baseURL` オプションのエイリアスです。両方を指定した場合は、`endpoint` が優先されます。
:::注記
ベアラー トークン (`AWS_BEARER_TOKEN_BEDROCK` または `/connect`) は、プロファイルベースの認証より優先されます。詳細については、「認証優先順位](/docs/providers#authentication-precedence)」を参照してください。
:::
[Amazon Bedrock 構成 ](/docs/providers#amazon-bedrock) の詳細をご覧ください。
---
### テーマ
`theme` オプションを使用して、OpenCode 構成で使用するテーマを構成できます。
```json title="opencode.json"
{
"$schema": "https://opencode.ai/config.json",
"theme": ""
}
```
[詳細はこちら](/docs/themes)。
---
### エージェント
`agent` オプションを使用して、特定のタスクに特化したエージェントを構成できます。
```jsonc title="opencode.jsonc"
{
"$schema": "https://opencode.ai/config.json",
"agent": {
"code-reviewer": {
"description": "Reviews code for best practices and potential issues",
"model": "anthropic/claude-sonnet-4-5",
"prompt": "You are a code reviewer. Focus on security, performance, and maintainability.",
"tools": {
// Disable file modification tools for review-only agent
"write": false,
"edit": false,
},
},
},
}
```
`~/.config/opencode/agents/` または `.opencode/agents/` のマークダウン ファイルを使用してエージェントを定義することもできます。 [詳細はこちら](/docs/agents)。
---
### デフォルトエージェント
`default_agent` オプションを使用してデフォルトのエージェントを設定できます。これにより、明示的に何も指定されていない場合にどのエージェントが使用されるかが決まります。
```json title="opencode.json"
{
"$schema": "https://opencode.ai/config.json",
"default_agent": "plan"
}
```
デフォルトのエージェントはプライマリ エージェントである必要があります (サブエージェントではありません)。これは、`"build"` や `"plan"` のような組み込みエージェント、または定義したカスタム Agent](/docs/agents) にすることができます。指定されたエージェントが存在しないか、サブエージェントである場合、OpenCode は警告とともに `"build"` にフォールバックします。
この設定は、TUI、CLI (`opencode run`)、デスクトップ アプリ、および GitHub Action のすべてのインターフェイスに適用されます。
---
### 共有
`share` オプションを使用して [share](/docs/share) 機能を設定できます。
```json title="opencode.json"
{
"$schema": "https://opencode.ai/config.json",
"share": "manual"
}
```
これには以下が必要です:
- `"manual"` - コマンドによる手動共有を許可します (デフォルト)
- `"auto"` - 新しい会話を自動的に共有します
- `"disabled"` - 共有を完全に無効にする
デフォルトでは、共有は手動モードに設定されており、`/share` コマンドを使用して会話を明示的に共有する必要があります。
---
### コマンド
`command` オプションを使用して、反復タスク用のカスタム コマンドを構成できます。
```jsonc title="opencode.jsonc"
{
"$schema": "https://opencode.ai/config.json",
"command": {
"test": {
"template": "Run the full test suite with coverage report and show any failures.\nFocus on the failing tests and suggest fixes.",
"description": "Run tests with coverage",
"agent": "build",
"model": "anthropic/claude-haiku-4-5",
},
"component": {
"template": "Create a new React component named $ARGUMENTS with TypeScript support.\nInclude proper typing and basic structure.",
"description": "Create a new component",
},
},
}
```
`~/.config/opencode/commands/` または `.opencode/commands/` のマークダウン ファイルを使用してコマンドを定義することもできます。 [詳細はこちら](/docs/commands)。
---
### キーバインド
`keybinds` オプションを使用してキーバインドをカスタマイズできます。
```json title="opencode.json"
{
"$schema": "https://opencode.ai/config.json",
"keybinds": {}
}
```
[詳細はこちら](/docs/themes)。
---
### 自動更新
OpenCode は起動時に新しいアップデートを自動的にダウンロードします。 `autoupdate` オプションを使用してこれを無効にできます。
```json title="opencode.json"
{
"$schema": "https://opencode.ai/config.json",
"autoupdate": false
}
```
更新は必要ないが、新しいバージョンが利用可能になったときに通知を受け取りたい場合は、`autoupdate` を `"notify"` に設定します。
これは、Homebrew などのパッケージ マネージャーを使用してインストールされていない場合にのみ機能することに注意してください。
---
### フォーマッタ
`formatter` オプションを使用してコード フォーマッタを設定できます。
```json title="opencode.json"
{
"$schema": "https://opencode.ai/config.json",
"formatter": {
"prettier": {
"disabled": true
},
"custom-prettier": {
"command": ["npx", "prettier", "--write", "$FILE"],
"environment": {
"NODE_ENV": "development"
},
"extensions": [".js", ".ts", ".jsx", ".tsx"]
}
}
}
```
[フォーマッタの詳細については、こちら](/docs/formatters) をご覧ください。
---
### 権限
デフォルトでは、opencode は明示的な承認を必要とせずに **すべての操作を許可**します。これは、`permission` オプションを使用して変更できます。
たとえば、`edit` ツールと `bash` ツールにユーザーの承認が必要であることを確認するには、次のようにします。
```json title="opencode.json"
{
"$schema": "https://opencode.ai/config.json",
"permission": {
"edit": "ask",
"bash": "ask"
}
}
```
[権限の詳細については、こちら](/docs/permissions)をご覧ください。
---
### 圧縮
`compaction` オプションを使用してコンテキストの圧縮動作を制御できます。
```json title="opencode.json"
{
"$schema": "https://opencode.ai/config.json",
"compaction": {
"auto": true,
"prune": true
}
}
```
- `auto` - コンテキストがいっぱいのときにセッションを自動的に圧縮します (デフォルト: `true`)。
- `prune` - 古いツールの出力を削除してトークンを保存します (デフォルト: `true`)。
---
### ウォッチャー
`watcher` オプションを使用して、ファイル ウォッチャーの無視パターンを構成できます。
```json title="opencode.json"
{
"$schema": "https://opencode.ai/config.json",
"watcher": {
"ignore": ["node_modules/**", "dist/**", ".git/**"]
}
}
```
パターンは glob 構文に従います。これを使用して、ノイズの多いディレクトリをファイル監視から除外します。
---
### MCPサーバー
`mcp` オプションを使用して、使用する MCP サーバーを構成できます。
```json title="opencode.json"
{
"$schema": "https://opencode.ai/config.json",
"mcp": {}
}
```
[詳細はこちら](/docs/themes)。
---
### プラグイン
[Plugins](/docs/plugins) は、カスタム ツール、フック、統合を使用して OpenCode を拡張します。
プラグインファイルを`.opencode/plugins/`または`~/.config/opencode/plugins/`に配置します。 `plugin` オプションを使用して npm からプラグインをロードすることもできます。
```json title="opencode.json"
{
"$schema": "https://opencode.ai/config.json",
"plugin": ["opencode-helicone-session", "@my-org/custom-plugin"]
}
```
[詳細はこちら](/docs/themes)。
---
### 説明書
`instructions` オプションを使用して、使用しているモデルの命令を構成できます。
```json title="opencode.json"
{
"$schema": "https://opencode.ai/config.json",
"instructions": ["CONTRIBUTING.md", "docs/guidelines.md", ".cursor/rules/*.md"]
}
```
これは、命令ファイルへのパスとグロブ パターンの配列を受け取ります。 [もっと詳しく知る
ルールについてはこちら](/docs/rules)。
---
### 無効なプロバイダー
`disabled_providers` オプションを使用して、自動的にロードされるプロバイダーを無効にすることができます。これは、認証情報が利用可能な場合でも、特定のプロバイダーが読み込まれないようにしたい場合に便利です。
```json title="opencode.json"
{
"$schema": "https://opencode.ai/config.json",
"disabled_providers": ["openai", "gemini"]
}
```
:::注記
`disabled_providers` は `enabled_providers` よりも優先されます。
:::
`disabled_providers` オプションは、プロバイダー ID の配列を受け入れます。プロバイダーが無効になっている場合:
- 環境変数を設定してもロードされません。
- `/connect` コマンドで API キーを設定してもロードされません。
- プロバイダーのモデルはモデル選択リストに表示されません。
---
### 有効なプロバイダー
`enabled_providers` オプションを使用してプロバイダーの許可リストを指定できます。設定すると、指定されたプロバイダーのみが有効になり、その他はすべて無視されます。
```json title="opencode.json"
{
"$schema": "https://opencode.ai/config.json",
"enabled_providers": ["anthropic", "openai"]
}
```
これは、OpenCode を 1 つずつ無効にするのではなく、特定のプロバイダーのみを使用するように制限したい場合に便利です。
:::注記
`disabled_providers` は `enabled_providers` よりも優先されます。
:::
プロバイダーが `enabled_providers` と `disabled_providers` の両方に表示される場合、下位互換性のために `disabled_providers` が優先されます。
---
### 実験的
`experimental` キーには、現在開発中のオプションが含まれています。
```json title="opencode.json"
{
"$schema": "https://opencode.ai/config.json",
"experimental": {}
}
```
:::注意
実験的なオプションは安定していません。予告なく変更または削除される場合があります。
:::
---
## 変数
構成ファイル内で変数置換を使用して、環境変数とファイルの内容を参照できます。
---
### 環境変数
`{env:VARIABLE_NAME}` を使用して環境変数を置き換えます。
```json title="opencode.json"
{
"$schema": "https://opencode.ai/config.json",
"model": "{env:OPENCODE_MODEL}",
"provider": {
"anthropic": {
"models": {},
"options": {
"apiKey": "{env:ANTHROPIC_API_KEY}"
}
}
}
}
```
環境変数が設定されていない場合は、空の文字列に置き換えられます。
---
### ファイル
`{file:path/to/file}` を使用してファイルの内容を置き換えます。
```json title="opencode.json"
{
"$schema": "https://opencode.ai/config.json",
"instructions": ["./custom-instructions.md"],
"provider": {
"openai": {
"options": {
"apiKey": "{file:~/.secrets/openai-key}"
}
}
}
}
```
ファイル パスは次のとおりです。
- 設定ファイルのディレクトリからの相対パス
- または、`/` または `~` で始まる絶対パス
これらは次の場合に役立ちます。
- API キーなどの機密データを別のファイルに保存します。
- 構成を乱雑にすることなく、大きな命令ファイルを含めることができます。
- 複数の構成ファイル間で共通の構成スニペットを共有します。

View File

@@ -0,0 +1,170 @@
---
title: カスタムツール
description: LLM がオープンコードで呼び出すことができるツールを作成します。
---
カスタム ツールは、会話中に LLM が呼び出すことができる作成した関数です。これらは、opencode の組み込みツール ](/docs/tools) (`read`、`write`、`bash` など) と連携して動作します。
---
## ツールの作成
ツールは **TypeScript** または **JavaScript** ファイルとして定義されます。ただし、ツール定義では**任意の言語**で記述されたスクリプトを呼び出すことができます。TypeScript または JavaScript はツール定義自体にのみ使用されます。
---
### 位置
それらは次のように定義できます。
- ローカルでは、プロジェクトの `.opencode/tools/` ディレクトリに配置します。
- または、グローバルに、それらを `~/.config/opencode/tools/` に配置します。
---
### 構造
ツールを作成する最も簡単な方法は、タイプ セーフティと検証を提供する `tool()` ヘルパーを使用することです。
```ts title=".opencode/tools/database.ts" {1}
import { tool } from "@opencode-ai/plugin"
export default tool({
description: "Query the project database",
args: {
query: tool.schema.string().describe("SQL query to execute"),
},
async execute(args) {
// Your database logic here
return `Executed query: ${args.query}`
},
})
```
**ファイル名**は**ツール名**になります。上記により `database` ツールが作成されます。
---
#### ファイルごとに複数のツール
単一のファイルから複数のツールをエクスポートすることもできます。各エクスポートは **`<filename>_<exportname>`** という名前の **別のツール** になります。
```ts title=".opencode/tools/math.ts"
import { tool } from "@opencode-ai/plugin"
export const add = tool({
description: "Add two numbers",
args: {
a: tool.schema.number().describe("First number"),
b: tool.schema.number().describe("Second number"),
},
async execute(args) {
return args.a + args.b
},
})
export const multiply = tool({
description: "Multiply two numbers",
args: {
a: tool.schema.number().describe("First number"),
b: tool.schema.number().describe("Second number"),
},
async execute(args) {
return args.a * args.b
},
})
```
これにより、`math_add` と `math_multiply` という 2 つのツールが作成されます。
---
### 引数
引数の型を定義するには、`tool.schema` (つまり [Zod](https://zod.dev)) を使用できます。
```ts "tool.schema"
args: {
query: tool.schema.string().describe("SQL query to execute")
}
```
[Zod](https://zod.dev) を直接インポートしてプレーン オブジェクトを返すこともできます。
```ts {6}
import { z } from "zod"
export default {
description: "Tool description",
args: {
param: z.string().describe("Parameter description"),
},
async execute(args, context) {
// Tool implementation
return "result"
},
}
```
---
### コンテクスト
ツールは現在のセッションに関するコンテキストを受け取ります。
```ts title=".opencode/tools/project.ts" {8}
import { tool } from "@opencode-ai/plugin"
export default tool({
description: "Get project information",
args: {},
async execute(args, context) {
// Access context information
const { agent, sessionID, messageID, directory, worktree } = context
return `Agent: ${agent}, Session: ${sessionID}, Message: ${messageID}, Directory: ${directory}, Worktree: ${worktree}`
},
})
```
セッション作業ディレクトリには `context.directory` を使用します。
git ワークツリー ルートには `context.worktree` を使用します。
---
## 例
### Python でツールを作成する
ツールは任意の言語で作成できます。以下は、Python を使用して 2 つの数値を加算する例です。
まず、ツールを Python スクリプトとして作成します。
```python title=".opencode/tools/add.py"
import sys
a = int(sys.argv[1])
b = int(sys.argv[2])
print(a + b)
```
次に、それを呼び出すツール定義を作成します。
```ts title=".opencode/tools/python-add.ts" {10}
import { tool } from "@opencode-ai/plugin"
import path from "path"
export default tool({
description: "Add two numbers using Python",
args: {
a: tool.schema.number().describe("First number"),
b: tool.schema.number().describe("Second number"),
},
async execute(args, context) {
const script = path.join(context.worktree, ".opencode/tools/add.py")
const result = await Bun.$`python3 ${script} ${args.a} ${args.b}`.text()
return result.trim()
},
})
```
ここでは、[`Bun.$`](https://bun.com/docs/runtime/shell) ユーティリティを使用して Python スクリプトを実行しています。

View File

@@ -0,0 +1,76 @@
---
title: 生態系
description: OpenCode で構築されたプロジェクトと統合。
---
OpenCode に基づいて構築されたコミュニティ プロジェクトのコレクション。
:::注記
OpenCode 関連プロジェクトをこのリストに追加したいですか? PRを送信してください。
:::
エコシステムとコミュニティを集約したコミュニティ [awesome-opencode](https://github.com/awesome-opencode/awesome-opencode) および [opencode.cafe](https://opencode.cafe) もチェックしてください。
---
## プラグイン
|名前 |説明 |
| --------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------- |
| [opencode-daytona](https://github.com/jamesmurdza/daytona/blob/main/guides/typescript/opencode/README.md) | git sync とライブ プレビューを使用して、隔離された Daytona サンドボックスで OpenCode セッションを自動的に実行します。
| [opencode-helicone-session](https://github.com/H2Shami/opencode-helicone-session) |リクエストのグループ化のために Helicone セッション ヘッダーを自動的に挿入する |
| [opencode-type-inject](https://github.com/nick-vi/opencode-type-inject) |ルックアップ ツールを使用して TypeScript/Svelte 型をファイル読み取りに自動挿入する |
| [opencode-openai-codex-auth](https://github.com/numman-ali/opencode-openai-codex-auth) | API クレジットの代わりに ChatGPT Plus/Pro サブスクリプションを使用する |
| [opencode-gemini-auth](https://github.com/jenslys/opencode-gemini-auth) | API 課金の代わりに既存の Gemini プランを使用する |
| [opencode-antigravity-auth](https://github.com/NoeFabris/opencode-antigravity-auth) | API 課金の代わりに Antigravity の無料モデルを使用する |
| [opencode-devcontainers](https://github.com/athal7/opencode-devcontainers) |浅いクローンと自動割り当てポートを使用したマルチブランチ devcontainer の分離 |
| [opencode-google-antigravity-auth](https://github.com/shekohex/opencode-google-antigravity-auth) | Google Antigravity OAuth プラグイン、Google 検索のサポート、およびより堅牢な API 処理 |
| [opencode-dynamic-context-pruning](https://github.com/Tarquinen/opencode-dynamic-context-pruning) |古いツールの出力を削除してトークンの使用を最適化する |
| [opencode-websearch-cited](https://github.com/ghoulr/opencode-websearch-cited.git) | Google ベースのスタイルでサポートされているプロバイダーにネイティブ Web 検索サポートを追加 |
| [オープンコード-pty](https://github.com/shekohex/opencode-pty.git) | AI エージェントが PTY でバックグラウンド プロセスを実行し、インタラクティブな入力を送信できるようにします。 |
| [opencode-shell-strategy](https://github.com/JRedeker/opencode-shell-strategy) |非対話型シェル コマンドの手順 - TTY に依存する操作によるハングの防止 |
| [opencode-wakatime](https://github.com/angristan/opencode-wakatime) | wakatime で OpenCode の使用状況を追跡する |
| [opencode-md-table-formatter](https://github.com/franlol/opencode-md-table-formatter/tree/main) | LLM によって生成されたマークダウン テーブルをクリーンアップする |
| [opencode-morph-fast-apply](https://github.com/JRedeker/opencode-morph-fast-apply) | Morph Fast apply API と遅延編集マーカーにより 10 倍高速なコード編集 |
| [オーマイオープンコード](https://github.com/code-yeongyu/oh-my-opencode) |バックグラウンド エージェント、事前構築された LSP/AST/MCP ツール、厳選されたエージェント、Claude Code 互換 |
| [opencode-notificator](https://github.com/panta82/opencode-notificator) | OpenCode セッションのデスクトップ通知とサウンド アラート |
| [opencode-notifier](https://github.com/mohak34/opencode-notifier) |許可、完了、エラー イベントのデスクトップ通知とサウンド アラート |
| [opencode-zellij-namer](https://github.com/24601/opencode-zellij-namer) | OpenCode コンテキストに基づいた AI による自動 Zellij セッション命名 |
| [オープンコードスキル](https://github.com/zenobi-us/opencode-skillful) | OpenCode エージェントがスキルの検出と挿入を使用してオンデマンドでプロンプトを遅延ロードできるようにする |
| [opencode-supermemory](https://github.com/supermemoryai/opencode-supermemory) |スーパーメモリを使用したセッション間での永続メモリ |
| [@plannotator/opencode](https://github.com/backnotprop/plannotator/tree/main/apps/opencode-plugin) |視覚的な注釈とプライベート/オフライン共有による対話型の計画レビュー |
| [@openspoon/subtask2](https://github.com/spoons-and-mirrors/subtask2) |オープンコード/コマンドをきめ細かいフロー制御を備えた強力なオーケストレーション システムに拡張 |
| [opencode-scheduler](https://github.com/different-ai/opencode-scheduler) | launchd (Mac) または systemd (Linux) を cron 構文で使用して、定期的なジョブをスケジュールする |
| [ミコード](https://github.com/vtemian/micode) |構造化されたブレインストーミング → 計画 → セッション継続性のあるワークフローの実装 |
| [octto](https://github.com/vtemian/octto) |複数の質問フォームを使用した AI ブレインストーミング用のインタラクティブなブラウザ UI |
| [opencode-background-agents](https://github.com/kdcokenny/opencode-background-agents) |非同期委任とコンテキスト永続性を備えた Claude Code スタイルのバックグラウンド エージェント |
| [opencode-notify](https://github.com/kdcokenny/opencode-notify) | OpenCode のネイティブ OS 通知 タスクがいつ完了したかを知る |
| [opencode-workspace](https://github.com/kdcokenny/opencode-workspace) |バンドルされたマルチエージェント オーケストレーション ハーネス 16 コンポーネント、1 回のインストール |
| [opencode-worktree](https://github.com/kdcokenny/opencode-worktree) | OpenCode 用のゼロフリクション Git ワークツリー |
---
## プロジェクト
|名前 |説明 |
| ------------------------------------------------------------------------------------------ | ---------------------------------------------------------------- |
| [kimaki](https://github.com/remorses/kimaki) | SDK 上に構築された OpenCode セッションを制御する Discord ボット |
| [opencode.nvim](https://github.com/NickvanDyke/opencode.nvim) | API に基づいて構築された、エディター対応プロンプト用の Neovim プラグイン |
| [ポータル](https://github.com/hosenur/portal) | Tailscale/VPN 上の OpenCode 向けモバイルファースト Web UI |
| [opencode プラグイン テンプレート ](https://github.com/zenobi-us/opencode-plugin-template/) | OpenCode プラグインを構築するためのテンプレート |
| [opencode.nvim](https://github.com/sudo-tee/opencode.nvim) | Neovim オープンコード用フロントエンド - ターミナルベースの AI コーディング エージェント |
| [ai-sdk-provider-opencode-sdk](https://github.com/ben-vargas/ai-sdk-provider-opencode-sdk) | @opencode-ai/sdk 経由で OpenCode を使用するための Vercel AI SDK プロバイダー |
| [OpenChamber](https://github.com/btriapitsyn/openchamber) | OpenCode 用の Web/デスクトップ アプリと VS Code 拡張機能 |
| [OpenCode-Obsidian](https://github.com/mtymek/opencode-obsidian) | Obsidian の UI に OpenCode を埋め込む Obsidian プラグイン |
| [OpenWork](https://github.com/different-ai/openwork) | OpenCode を利用した、Claude Cowork に代わるオープンソース |
| [ocx](https://github.com/kdcokenny/ocx) |移植可能な独立したプロファイルを備えた OpenCode 拡張機能マネージャー。 |
| [CodeNomad](https://github.com/NeuralNomadsAI/CodeNomad) | OpenCode 用のデスクトップ、Web、モバイル、およびリモート クライアント アプリ |
---
## エージェント
|名前 |説明 |
| ----------------------------------------------------------------- | ------------------------------------------------------------ |
| [Agentic](https://github.com/Cluster444/agentic) |構造化開発のためのモジュール型 AI エージェントとコマンド |
| [opencode-agents](https://github.com/darrenhinde/opencode-agents) |強化されたワークフローのための構成、プロンプト、エージェント、およびプラグイン |

View File

@@ -0,0 +1,170 @@
---
title: 企業
description: 組織内で OpenCode を安全に使用します。
---
import config from "../../../../config.mjs"
export const email = `mailto:${config.email}`
OpenCode Enterprise は、コードとデータがインフラストラクチャから決して流出しないようにしたい組織を対象としています。これは、SSO および内部 AI ゲートウェイと統合された一元化された構成を使用することで実現できます。
:::注記
OpenCode は、コードやコンテキスト データを一切保存しません。
:::
OpenCode Enterprise を始めるには:
1. チーム内でトライアルを実施してください。
2. 価格や実装オプションについては、**<a href={email}>お問い合わせ</a>**ください。
---
## トライアル
OpenCode はオープン ソースであり、コードやコンテキスト データは一切保存されないため、開発者は簡単に [開始してトライアルを実行できます。
---
### データの取り扱い
**OpenCode はコードやコンテキスト データを保存しません。** すべての処理はローカルで、または AI プロバイダーへの直接 API 呼び出しを通じて行われます。
つまり、信頼できるプロバイダー、または内部プロバイダーを使用している限り、
AIゲートウェイならOpenCodeを安全に利用できます。
ここでの唯一の注意点は、オプションの `/share` 機能です。
---
#### 会話を共有する
ユーザーが `/share` 機能を有効にすると、会話とそれに関連付けられたデータが、opencode.ai でこれらの共有ページをホストするために使用されるサービスに送信されます。
現在、データは CDN のエッジ ネットワークを通じて提供され、ユーザーの近くのエッジにキャッシュされます。
試用版ではこれを無効にすることをお勧めします。
```json title="opencode.json"
{
"$schema": "https://opencode.ai/config.json",
"share": "disabled"
}
```
[sharing](/docs/share) について詳しくはこちらをご覧ください。
---
### コードの所有権
**OpenCode によって生成されたすべてのコードはお客様が所有します。** ライセンスの制限や所有権の主張はありません。
---
## 価格設定
OpenCode Enterprise ではシートごとのモデルを使用します。独自の LLM ゲートウェイをお持ちの場合、使用されたトークンに対して料金はかかりません。価格と実装オプションの詳細については、**<a href={email}>お問い合わせください</a>**。
---
## 導入
トライアルが完了し、OpenCode を使用する準備が整ったら、
貴組織の場合は、**<a href={email}>お問い合わせ</a>**してご相談ください。
価格設定と実装オプション。
---
### 中央構成
組織全体で単一の中央構成を使用するように OpenCode をセットアップできます。
この一元化された構成は SSO プロバイダーと統合でき、すべてのユーザーが内部 AI ゲートウェイのみにアクセスできるようにします。
---
### SSOの統合
中央の構成を通じて、OpenCode は認証のために組織の SSO プロバイダーと統合できます。
これにより、OpenCode は既存の ID 管理システムを通じて内部 AI ゲートウェイの認証情報を取得できるようになります。
---
### 社内AIゲートウェイ
中央構成を使用すると、内部 AI ゲートウェイのみを使用するように OpenCode を構成することもできます。
他のすべての AI プロバイダーを無効にして、すべてのリクエストが組織の承認されたインフラストラクチャを通過するようにすることもできます。
---
### セルフホスティング
データが流出しないように共有ページを無効にすることをお勧めします
貴社のインフラストラクチャ上でセルフホストすることもお手伝いします。
これは現在ロードマップに載っています。ご興味がございましたら、**<a href={email}>お知らせください</a>**。
---
## よくある質問
<details>
<summary>What is OpenCode Enterprise?</summary>
OpenCode Enterprise は、コードとデータがインフラストラクチャから決して流出しないようにしたい組織を対象としています。これは、SSO および内部 AI ゲートウェイと統合された一元化された構成を使用することで実現できます。
</details>
<details>
<summary>How do I get started with OpenCode Enterprise?</summary>
まずはチームの内部トライアルから始めてください。 OpenCode はデフォルトでコードやコンテキスト データを保存しないため、簡単に開始できます。
その後、**<a href={email}>お問い合わせ</a>**いただき、価格や実装オプションについてご相談ください。
</details>
<details>
<summary>How does enterprise pricing work?</summary>
エンタープライズ価格はシートごとに提供されます。独自の LLM ゲートウェイをお持ちの場合、使用されたトークンに対して料金はかかりません。詳細については、組織のニーズに基づいたカスタム見積もりをご希望の場合は、**<a href={email}>お問い合わせください</a>**。
</details>
<details>
<summary>Is my data secure with OpenCode Enterprise?</summary>
はい。 OpenCode はコードやコンテキスト データを保存しません。すべての処理はローカルで、または AI プロバイダーへの直接 API 呼び出しを通じて行われます。一元的な構成と SSO の統合により、データは組織のインフラストラクチャ内で安全に保たれます。
</details>
<details>
<summary>Can we use our own private NPM registry?</summary>
OpenCode は、Bun のネイティブ `.npmrc` ファイル サポートを通じてプライベート npm レジストリをサポートします。組織が JFrog Artifactory、Nexus などのプライベート レジストリを使用している場合は、OpenCode を実行する前に開発者が認証されていることを確認してください。
プライベート レジストリを使用して認証を設定するには、次の手順を実行します。
```bash
npm login --registry=https://your-company.jfrog.io/api/npm/npm-virtual/
```
これにより、認証の詳細を含む `~/.npmrc` が作成されます。 OpenCode は自動的に
これを拾ってください。
:::注意
OpenCode を実行する前に、プライベート レジストリにログインする必要があります。
:::
あるいは、`.npmrc` ファイルを手動で構成することもできます。
```bash title="~/.npmrc"
registry=https://your-company.jfrog.io/api/npm/npm-virtual/
//your-company.jfrog.io/api/npm/npm-virtual/:_authToken=${NPM_AUTH_TOKEN}
```
開発者は、エンタープライズ レジストリからパッケージを確実にインストールできるように、OpenCode を実行する前にプライベート レジストリにログインする必要があります。
</details>

View File

@@ -0,0 +1,130 @@
---
title: フォーマッタ
description: OpenCode は言語固有のフォーマッタを使用します。
---
OpenCode は、言語固有のフォーマッタを使用してファイルを作成または編集した後、ファイルを自動的にフォーマットします。これにより、生成されるコードがプロジェクトのコード スタイルに従っていることが保証されます。
---
## 内蔵
OpenCode には、一般的な言語およびフレームワーク用のいくつかの組み込みフォーマッタが付属しています。以下は、フォーマッタ、サポートされているファイル拡張子、および必要なコマンドまたは構成オプションのリストです。
|フォーマッタ |拡張機能 |要件 |
| -------------------- | -------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------- |
|ゴーフムト | .go | `gofmt` コマンドが利用可能 |
|ミックス | .ex、.exs、.eex、.heex、.leex、.neex、.sface | `mix` コマンドが利用可能 |
|よりきれい | .js、.jsx、.ts、.tsx、.html、.css、.md、.json、.yaml、および [more](https://prettier.io/docs/en/index.html) | `package.json` における `prettier` の依存関係 |
|バイオーム | .js、.jsx、.ts、.tsx、.html、.css、.md、.json、.yaml、および [more](https://biomejs.dev/) | `biome.json(c)` 設定ファイル |
|ジグ | .zig、.zon | `zig` コマンドが利用可能 |
|クラン形式 | .c、.cpp、.h、.hpp、.ino、および [more](https://clang.llvm.org/docs/ClangFormat.html) | `.clang-format` 設定ファイル |
|クトリント | .kt、.kts | `ktlint` コマンドが利用可能 |
|ラフ | .py、.pyi | `ruff` コマンドは config | で使用可能です。
|さびと.rs | `rustfmt` コマンドが利用可能 |
|カーゴフムト | .rs | `cargo fmt` コマンドが利用可能 |
|紫外線 | .py、.pyi | `uv` コマンドが利用可能 |
|ロボコップ | .rb、.rake、.gemspec、.ru | `rubocop` コマンドが利用可能 |
|標準RB | .rb、.rake、.gemspec、.ru | `standardrb` コマンドが利用可能 |
| htmlビューティー | .erb、.html.erb | `htmlbeautifier` コマンドが利用可能 |
|空気 | .R | `air` コマンドが利用可能 |
|ダーツ | .ダーツ | `dart` コマンドが利用可能 |
| ocaml形式 | .ml、.mli |利用可能な `ocamlformat` コマンドと `.ocamlformat` 設定ファイル |
|テラフォーム | .tf、.tfvars | `terraform` コマンドが利用可能 |
|輝く.gleam | `gleam` コマンドが利用可能 |
|ニクスフムト | .nix | `nixfmt` コマンドが利用可能 |
|シュフムト | .sh、.bash | `shfmt` コマンドが利用可能 |
|パイント | .php | `composer.json` における `laravel/pint` の依存関係 |
| oxfmt (実験的) | .js、.jsx、.ts、.tsx | `package.json` の `oxfmt` 依存関係と [実験用環境変数 flag](/docs/cli/#experimental) |
|オルモル | .hs | `ormolu` コマンドが利用可能 |
したがって、プロジェクトの `package.json` に `prettier` が含まれている場合、OpenCode は自動的にそれを使用します。
---
## 仕組み
OpenCode がファイルを書き込んだり編集したりすると、次のことが行われます。
1. 有効なすべてのフォーマッタに対してファイル拡張子をチェックします。
2. ファイルに対して適切なフォーマッタ コマンドを実行します。
3. 書式の変更を自動的に適用します。
このプロセスはバックグラウンドで実行されるため、手動の手順を行わなくてもコード スタイルが維持されます。
---
## 設定する
OpenCode 構成の `formatter` セクションを通じてフォーマッタをカスタマイズできます。
```json title="opencode.json"
{
"$schema": "https://opencode.ai/config.json",
"formatter": {}
}
```
各フォーマッタ設定は以下をサポートします。
|プロパティ |タイプ |説明 |
| ------------- | -------- | ------------------------------------------------------- |
| `disabled` |ブール値 |フォーマッタを無効にするには、これを `true` に設定します。
| `command` |文字列[] |フォーマットのために実行するコマンド |
| `environment` |オブジェクト |フォーマッタの実行時に設定する環境変数 |
| `extensions` |文字列[] |このフォーマッタが処理するファイル拡張子 |
いくつかの例を見てみましょう。
---
### フォーマッタの無効化
**すべて**のフォーマッタをグローバルに無効にするには、`formatter` を `false` に設定します。
```json title="opencode.json" {3}
{
"$schema": "https://opencode.ai/config.json",
"formatter": false
}
```
**特定**のフォーマッタを無効にするには、`disabled` を `true` に設定します。
```json title="opencode.json" {5}
{
"$schema": "https://opencode.ai/config.json",
"formatter": {
"prettier": {
"disabled": true
}
}
}
```
---
### カスタムフォーマッタ
コマンド、環境変数、ファイル拡張子を指定することで、組み込みフォーマッタをオーバーライドしたり、新しいフォーマッタを追加したりできます。
```json title="opencode.json" {4-14}
{
"$schema": "https://opencode.ai/config.json",
"formatter": {
"prettier": {
"command": ["npx", "prettier", "--write", "$FILE"],
"environment": {
"NODE_ENV": "development"
},
"extensions": [".js", ".ts", ".jsx", ".tsx"]
},
"custom-markdown-formatter": {
"command": ["deno", "fmt", "$FILE"],
"extensions": [".md"]
}
}
}
```
コマンド内の **`$FILE` プレースホルダー** は、フォーマットされるファイルへのパスに置き換えられます。

View File

@@ -0,0 +1,321 @@
---
title: GitHub
description: GitHub の問題とプルリクエストで OpenCode を使用します。
---
OpenCode は GitHub ワークフローと統合します。コメントで `/opencode` または `/oc` に言及すると、OpenCode が GitHub Actions ランナー内でタスクを実行します。
---
## 特徴
- **問題のトリアージ**: OpenCode に問題を調べて説明してもらいます。
- **修正と実装**: OpenCode に問題の修正または機能の実装を依頼します。そして、新しいブランチで動作し、すべての変更を含む PR を送信します。
- **安全**: OpenCode は GitHub のランナー内で実行されます。
---
## インストール
GitHub リポジトリにあるプロジェクトで次のコマンドを実行します。
```bash
opencode github install
```
ここでは、GitHub アプリのインストール、ワークフローの作成、シークレットの設定について説明します。
---
### 手動セットアップ
または、手動で設定することもできます。
1. **GitHub アプリをインストールします**
[**github.com/apps/opencode-agent**](https://github.com/apps/opencode-agent) にアクセスしてください。ターゲット リポジトリにインストールされていることを確認してください。
2. **ワークフローを追加**
次のワークフロー ファイルをリポジトリの `.github/workflows/opencode.yml` に追加します。適切な `model` と必要な API キーを `env` に設定してください。
```yml title=".github/workflows/opencode.yml" {24,26}
name: opencode
on:
issue_comment:
types: [created]
pull_request_review_comment:
types: [created]
jobs:
opencode:
if: |
contains(github.event.comment.body, '/oc') ||
contains(github.event.comment.body, '/opencode')
runs-on: ubuntu-latest
permissions:
id-token: write
steps:
- name: Checkout repository
uses: actions/checkout@v6
with:
fetch-depth: 1
persist-credentials: false
- name: Run OpenCode
uses: anomalyco/opencode/github@latest
env:
ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }}
with:
model: anthropic/claude-sonnet-4-20250514
# share: true
# github_token: xxxx
```
3. **API キーをシークレットに保存します**
組織またはプロジェクトの**設定**で、左側の**シークレットと変数**を展開し、**アクション**を選択します。そして、必要な API キーを追加します。
---
## 構成
- `model`: OpenCode で使用するモデル。 `provider/model` の形式をとります。これは**必須**です。
- `agent`: 使用するエージェント。プライマリ エージェントである必要があります。見つからない場合は、設定から `default_agent` にフォールバックするか、`"build"` にフォールバックします。
- `share`: OpenCode セッションを共有するかどうか。パブリック リポジトリのデフォルトは **true** です。
- `prompt`: デフォルトの動作をオーバーライドするためのオプションのカスタム プロンプト。これを使用して、OpenCode がリクエストを処理する方法をカスタマイズします。
- `token`: コメントの作成、変更のコミット、プル リクエストのオープンなどの操作を実行するためのオプションの GitHub アクセス トークン。デフォルトでは、OpenCode は OpenCode GitHub アプリからのインストール アクセス トークンを使用するため、コミット、コメント、プル リクエストはアプリからのものとして表示されます。
あるいは、OpenCode GitHub アプリをインストールせずに、GitHub Action ランナーの [組み込み `GITHUB_TOKEN`](https://docs.github.com/en/actions/tutorials/authenticate-with-github_token) を使用することもできます。ワークフローで必要な権限を必ず付与してください。
```yaml
permissions:
id-token: write
contents: write
pull-requests: write
issues: write
```
必要に応じて、[パーソナル アクセス トークン](https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/managing-your-personal-access-tokens)(PAT) を使用することもできます。
---
## サポートされているイベント
OpenCode は、次の GitHub イベントによってトリガーできます。
|イベントの種類 |きっかけ |詳細 |
| ----------------------------- | -------------------------------------- | ----------------------------------------------------------------------------------------------------------------- |
| `issue_comment` |問題または PR についてコメントする |コメントで `/opencode` または `/oc` について言及してください。 OpenCode はコンテキストを読み取り、ブランチを作成したり、PR を開いたり、返信したりできます。 |
| `pull_request_review_comment` | PR 内の特定のコード行にコメントする |コードをレビューするときに、`/opencode` または `/oc` について言及します。 OpenCode は、ファイル パス、行番号、および diff コンテキストを受け取ります。 |
| `issues` |問題がオープンまたは編集されました |問題が作成または変更されると、OpenCode が自動的にトリガーされます。 `prompt` 入力が必要です。 |
| `pull_request` | PR がオープンまたは更新されました | PR が開かれる、同期される、または再度開かれるときに、OpenCode を自動的にトリガーします。自動レビューに役立ちます。 |
| `schedule` | Cron ベースのスケジュール |スケジュールに従って OpenCode を実行します。 `prompt` 入力が必要です。出力はログと PR に送られます (コメントする問題はありません)。 |
| `workflow_dispatch` | GitHub UI からの手動トリガー | [アクション] タブから OpenCode をオンデマンドでトリガーします。 `prompt` 入力が必要です。出力はログと PR に送られます。 |
### スケジュール例
スケジュールに従って OpenCode を実行し、自動化されたタスクを実行します。
```yaml title=".github/workflows/opencode-scheduled.yml"
name: Scheduled OpenCode Task
on:
schedule:
- cron: "0 9 * * 1" # Every Monday at 9am UTC
jobs:
opencode:
runs-on: ubuntu-latest
permissions:
id-token: write
contents: write
pull-requests: write
issues: write
steps:
- name: Checkout repository
uses: actions/checkout@v6
with:
persist-credentials: false
- name: Run OpenCode
uses: anomalyco/opencode/github@latest
env:
ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }}
with:
model: anthropic/claude-sonnet-4-20250514
prompt: |
Review the codebase for any TODO comments and create a summary.
If you find issues worth addressing, open an issue to track them.
```
スケジュールされたイベントの場合、指示を抽出するためのコメントがないため、`prompt` 入力は **必須** です。スケジュールされたワークフローは、権限チェックのためのユーザー コンテキストなしで実行されるため、OpenCode がブランチまたは PR を作成することが予想される場合、ワークフローは `contents: write` および `pull-requests: write` を付与する必要があります。
---
### プルリクエストの例
PR が開かれるか更新されるときに、PR を自動的にレビューします。
```yaml title=".github/workflows/opencode-review.yml"
name: opencode-review
on:
pull_request:
types: [opened, synchronize, reopened, ready_for_review]
jobs:
review:
runs-on: ubuntu-latest
permissions:
id-token: write
contents: read
pull-requests: read
issues: read
steps:
- uses: actions/checkout@v6
with:
persist-credentials: false
- uses: anomalyco/opencode/github@latest
env:
ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }}
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
model: anthropic/claude-sonnet-4-20250514
use_github_token: true
prompt: |
Review this pull request:
- Check for code quality issues
- Look for potential bugs
- Suggest improvements
```
`pull_request` イベントの場合、`prompt` が指定されていない場合、OpenCode はデフォルトでプル リクエストをレビューします。
---
### 問題のトリアージの例
新しい問題を自動的に優先順位付けします。この例では、スパムを減らすために 30 日より古いアカウントにフィルターを適用します。
```yaml title=".github/workflows/opencode-triage.yml"
name: Issue Triage
on:
issues:
types: [opened]
jobs:
triage:
runs-on: ubuntu-latest
permissions:
id-token: write
contents: write
pull-requests: write
issues: write
steps:
- name: Check account age
id: check
uses: actions/github-script@v7
with:
script: |
const user = await github.rest.users.getByUsername({
username: context.payload.issue.user.login
});
const created = new Date(user.data.created_at);
const days = (Date.now() - created) / (1000 * 60 * 60 * 24);
return days >= 30;
result-encoding: string
- uses: actions/checkout@v6
if: steps.check.outputs.result == 'true'
with:
persist-credentials: false
- uses: anomalyco/opencode/github@latest
if: steps.check.outputs.result == 'true'
env:
ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }}
with:
model: anthropic/claude-sonnet-4-20250514
prompt: |
Review this issue. If there's a clear fix or relevant docs:
- Provide documentation links
- Add error handling guidance for code examples
Otherwise, do not comment.
```
`issues` イベントの場合、指示を抽出するためのコメントがないため、`prompt` 入力は **必須** です。
---
## カスタムプロンプト
デフォルトのプロンプトをオーバーライドして、ワークフローに合わせて OpenCode の動作をカスタマイズします。
```yaml title=".github/workflows/opencode.yml"
- uses: anomalyco/opencode/github@latest
with:
model: anthropic/claude-sonnet-4-5
prompt: |
Review this pull request:
- Check for code quality issues
- Look for potential bugs
- Suggest improvements
```
これは、プロジェクトに関連する特定のレビュー基準、コーディング標準、または重点分野を強制するのに役立ちます。
---
## 例
GitHub で OpenCode を使用する方法の例をいくつか示します。
- **問題の説明**
このコメントを GitHub の問題に追加します。
```
/opencode explain this issue
```
OpenCode は、すべてのコメントを含むスレッド全体を読み取り、明確な説明を返信します。
- **問題を修正**
GitHub の問題で次のように言います。
```
/opencode fix this
```
そして、OpenCode は新しいブランチを作成し、変更を実装し、変更を含む PR を開きます。
- **PR を確認して変更を加える**
GitHub PR に次のコメントを残してください。
```
Delete the attachment from S3 when the note is removed /oc
```
OpenCode は要求された変更を実装し、同じ PR にコミットします。
- **特定のコード行を確認してください**
PR の「ファイル」タブのコード行に直接コメントを残します。 OpenCode は、ファイル、行番号、および diff コンテキストを自動的に検出して、正確な応答を提供します。
```
[Comment on specific lines in Files tab]
/oc add error handling here
```
特定の行にコメントすると、OpenCode は以下を受け取ります。
- レビューされている正確なファイル
- コードの特定の行
- 周囲の差分コンテキスト
- 行番号情報
これにより、ファイル パスや行番号を手動で指定する必要がなく、よりターゲットを絞ったリクエストが可能になります。

View File

@@ -0,0 +1,195 @@
---
title: GitLab
description: GitLab の問題とマージリクエストで OpenCode を使用します。
---
OpenCode は、GitLab CI/CD パイプラインまたは GitLab Duo を通じて GitLab ワークフローと統合します。
どちらの場合も、OpenCode は GitLab ランナー上で実行されます。
---
## GitLab CI
OpenCode は通常の GitLab パイプラインで動作します。 [CI コンポーネント](https://docs.gitlab.com/ee/ci/components/) としてパイプラインに組み込むことができます。
ここでは、コミュニティが作成した OpenCode 用の CI/CD コンポーネント — [nagyv/gitlab-opencode](https://gitlab.com/nagyv/gitlab-opencode).
---
### 特徴
- **ジョブごとにカスタム構成を使用する**: カスタム構成ディレクトリ (`./config/#custom-directory` など) を使用して OpenCode を構成し、OpenCode の呼び出しごとに機能を有効または無効にします。
- **最小限のセットアップ**: CI コンポーネントはバックグラウンドで OpenCode をセットアップします。必要なのは、OpenCode 構成と初期プロンプトを作成することだけです。
- **柔軟性**: CI コンポーネントは、動作をカスタマイズするための複数の入力をサポートしています。
---
### 設定
1. OpenCode 認証 JSON をファイル タイプ CI 環境変数として [**設定**] > [**CI/CD**] > [**変数**] に保存します。必ず「マスクして非表示」としてマークしてください。
2. 以下を `.gitlab-ci.yml` ファイルに追加します。
```yaml title=".gitlab-ci.yml"
include:
- component: $CI_SERVER_FQDN/nagyv/gitlab-opencode/opencode@2
inputs:
config_dir: ${CI_PROJECT_DIR}/opencode-config
auth_json: $OPENCODE_AUTH_JSON # The variable name for your OpenCode authentication JSON
command: optional-custom-command
message: "Your prompt here"
```
さらに多くの入力と使用例については、このコンポーネントの docs](https://gitlab.com/explore/catalog/nagyv/gitlab-opencode) をチェックしてください。
---
## GitLab デュオ
OpenCode は GitLab ワークフローと統合します。
コメントで `@opencode` に言及すると、OpenCode が GitLab CI パイプライン内でタスクを実行します。
---
### 特徴
- **問題のトリアージ**: OpenCode に問題を調べて説明してもらいます。
- **修正と実装**: OpenCode に問題の修正または機能の実装を依頼します。
新しいブランチを作成し、変更を加えたマージリクエストを発行します。
- **安全**: OpenCode は GitLab ランナー上で実行されます。
---
### 設定
OpenCode は GitLab CI/CD パイプラインで実行されます。セットアップするには次のものが必要です。
:::ヒント
最新の手順については、[**GitLab ドキュメント**](https://docs.gitlab.com/user/duo_agent_platform/agent_assistant/) を参照してください。
:::
1. GitLab 環境を構成する
2. CI/CD のセットアップ
3. AI モデル プロバイダー API キーを取得する
4. サービスアカウントを作成する
5. CI/CD変数を構成する
6. フロー構成ファイルを作成します。例を次に示します。
<details>
<summary>Flow configuration</summary>
```yaml
image: node:22-slim
commands:
- echo "Installing opencode"
- npm install --global opencode-ai
- echo "Installing glab"
- export GITLAB_TOKEN=$GITLAB_TOKEN_OPENCODE
- apt-get update --quiet && apt-get install --yes curl wget gpg git && rm --recursive --force /var/lib/apt/lists/*
- curl --silent --show-error --location "https://raw.githubusercontent.com/upciti/wakemeops/main/assets/install_repository" | bash
- apt-get install --yes glab
- echo "Configuring glab"
- echo $GITLAB_HOST
- echo "Creating OpenCode auth configuration"
- mkdir --parents ~/.local/share/opencode
- |
cat > ~/.local/share/opencode/auth.json << EOF
{
"anthropic": {
"type": "api",
"key": "$ANTHROPIC_API_KEY"
}
}
EOF
- echo "Configuring git"
- git config --global user.email "opencode@gitlab.com"
- git config --global user.name "OpenCode"
- echo "Testing glab"
- glab issue list
- echo "Running OpenCode"
- |
opencode run "
You are an AI assistant helping with GitLab operations.
Context: $AI_FLOW_CONTEXT
Task: $AI_FLOW_INPUT
Event: $AI_FLOW_EVENT
Please execute the requested task using the available GitLab tools.
Be thorough in your analysis and provide clear explanations.
<important>
Please use the glab CLI to access data from GitLab. The glab CLI has already been authenticated. You can run the corresponding commands.
If you are asked to summarize an MR or issue or asked to provide more information then please post back a note to the MR/Issue so that the user can see it.
You don't need to commit or push up changes, those will be done automatically based on the file changes you make.
</important>
"
- git checkout --branch $CI_WORKLOAD_REF origin/$CI_WORKLOAD_REF
- echo "Checking for git changes and pushing if any exist"
- |
if ! git diff --quiet || ! git diff --cached --quiet || [ --not --zero "$(git ls-files --others --exclude-standard)" ]; then
echo "Git changes detected, adding and pushing..."
git add .
if git diff --cached --quiet; then
echo "No staged changes to commit"
else
echo "Committing changes to branch: $CI_WORKLOAD_REF"
git commit --message "Codex changes"
echo "Pushing changes up to $CI_WORKLOAD_REF"
git push https://gitlab-ci-token:$GITLAB_TOKEN@$GITLAB_HOST/gl-demo-ultimate-dev-ai-epic-17570/test-java-project.git $CI_WORKLOAD_REF
echo "Changes successfully pushed"
fi
else
echo "No git changes detected, skipping push"
fi
variables:
- ANTHROPIC_API_KEY
- GITLAB_TOKEN_OPENCODE
- GITLAB_HOST
```
</details>
詳細な手順については、「GitLab CLI エージェント docs](https://docs.gitlab.com/user/duo_agent_platform/agent_assistant/)」を参照してください。
---
### 例
GitLab で OpenCode を使用する方法の例をいくつか示します。
:::ヒント
`@opencode` とは異なるトリガー フレーズを使用するように設定できます。
:::
- **問題の説明**
このコメントを GitLab の問題に追加します。
```
@opencode explain this issue
```
OpenCode は問題を読み、明確な説明を返信します。
- **問題を修正**
GitLab の問題では、次のように言います。
```
@opencode fix this
```
OpenCode は新しいブランチを作成し、変更を実装し、変更を含むマージ リクエストを開きます。
- **マージリクエストを確認する**
GitLab マージ リクエストに次のコメントを残してください。
```
@opencode review this merge request
```
OpenCode はマージ リクエストをレビューし、フィードバックを提供します。

View File

@@ -0,0 +1,48 @@
---
title: IDE
description: VS Code、Cursor、およびその他の IDE 用の OpenCode 拡張機能
---
OpenCode は、VS Code、Cursor、またはターミナルをサポートする任意の IDE と統合します。開始するには、ターミナルで `opencode` を実行するだけです。
---
## 使用法
- **クイック起動**: `Cmd+Esc` (Mac) または `Ctrl+Esc` (Windows/Linux) を使用して、分割ターミナル ビューで OpenCode を開くか、既存のターミナル セッションが既に実行されている場合はそれにフォーカスします。
- **新しいセッション**: すでに開いている場合でも、`Cmd+Shift+Esc` (Mac) または `Ctrl+Shift+Esc` (Windows/Linux) を使用して、新しい OpenCode ターミナル セッションを開始します。 UI の [OpenCode] ボタンをクリックすることもできます。
- **コンテキスト認識**: 現在の選択またはタブを OpenCode と自動的に共有します。
- **ファイル参照のショートカット**: ファイル参照を挿入するには、`Cmd+Option+K` (Mac) または `Alt+Ctrl+K` (Linux/Windows) を使用します。たとえば、`@File#L37-42`。
---
## インストール
OpenCode を VS Code および Cursor、Windsurf、VSCodium などの一般的なフォークにインストールするには:
1. VS コードを開く
2. 統合ターミナルを開きます
3. `opencode` を実行します - 拡張機能は自動的にインストールされます
一方、TUI から `/editor` または `/export` を実行するときに独自の IDE を使用したい場合は、`export EDITOR="code --wait"` を設定する必要があります。 [詳細はこちら](/docs/tui/#editor-setup)。
---
### 手動インストール
Extension Marketplace で **OpenCode** を検索し、**インストール** をクリックします。
---
### トラブルシューティング
拡張機能が自動的にインストールされない場合:
- 統合ターミナルで `opencode` を実行していることを確認してください。
- IDE の CLI がインストールされていることを確認します。
- VS コードの場合: `code` コマンド
- カーソルの場合: `cursor` コマンド
- ウィンドサーフィンの場合: `windsurf` コマンド
- VSCodium の場合: `codium` コマンド
- そうでない場合は、`Cmd+Shift+P` (Mac) または `Ctrl+Shift+P` (Windows/Linux) を実行し、「Shell Command: Install 'code' command in PATH」(または IDE の同等のコマンド) を検索します。
- VS Code に拡張機能をインストールする権限があることを確認してください

View File

@@ -0,0 +1,359 @@
---
title: イントロ
description: OpenCode を始めましょう。
---
import { Tabs, TabItem } from "@astrojs/starlight/components"
import config from "../../../../config.mjs"
export const console = config.console
[**OpenCode**](/) は、オープンソースの AI コーディング エージェントです。これは、ターミナルベースのインターフェイス、デスクトップ アプリ、または IDE 拡張機能として利用できます。
![オープンコードテーマ](../../../assets/lander/screenshot.png)を使用したOpenCode TUI
始めましょう。
---
#### 前提条件
ターミナルで OpenCode を使用するには、次のものが必要です。
1. 次のような最新のターミナル エミュレータ:
- [WezTerm](https://wezterm.org)、クロスプラットフォーム
- [Alacritty](https://alacritty.org)、クロスプラットフォーム
- [Ghostty](https://ghostty.org)、Linux および macOS
- [Kitty](https://sw.kovidgoyal.net/kitty/)、Linux および macOS
2. 使用する LLM プロバイダーの API キー。
---
## インストール
OpenCode をインストールする最も簡単な方法は、インストール スクリプトを使用することです。
```bash
curl -fsSL https://opencode.ai/install | bash
```
次のコマンドを使用してインストールすることもできます。
- **Node.js の使用**
<Tabs>
<TabItem label="npm">
```bash
npm install -g opencode-ai
```
</TabItem>
<TabItem label="Bun">
```bash
bun install -g opencode-ai
```
</TabItem>
<TabItem label="pnpm">
```bash
pnpm install -g opencode-ai
```
</TabItem>
<TabItem label="Yarn">
```bash
yarn global add opencode-ai
```
</TabItem>
</Tabs>
- **macOS および Linux での Homebrew の使用**
```bash
brew install anomalyco/tap/opencode
```
> 最新のリリースには OpenCode タップを使用することをお勧めします。公式の `brew install opencode` 式は Homebrew チームによって維持されており、更新頻度は低くなります。
- **Arch Linux での Paru の使用**
```bash
paru -S opencode-bin
```
#### 窓
:::tip[推奨: WSL を使用する]
Windows で最高のエクスペリエンスを得るには、[Windows Subsystem for Linux (WSL)](/docs/windows-wsl) を使用することをお勧めします。これにより、パフォーマンスが向上し、OpenCode の機能との完全な互換性が提供されます。
:::
- **Chocolatey の使用**
```bash
choco install opencode
```
- **スクープの使用**
```bash
scoop install opencode
```
- **NPM の使用**
```bash
npm install -g opencode-ai
```
- **ミセの使い方**
```bash
mise use -g github:anomalyco/opencode
```
- **Docker の使用**
```bash
docker run -it --rm ghcr.io/anomalyco/opencode
```
Bun を使用して Windows に OpenCode をインストールするためのサポートは現在進行中です。
[Releases](https://github.com/anomalyco/opencode/releases).
---
## 設定する
OpenCode を使用すると、API キーを構成することで任意の LLM プロバイダーを使用できます。
LLM プロバイダーを初めて使用する場合は、[OpenCode Zen](/docs/zen).
これは、OpenCode によってテストおよび検証されたモデルの厳選されたリストです。
team.
1. TUI で `/connect` コマンドを実行し、opencode を選択して、[opencode.ai/auth](https://opencode.ai/auth).
```txt
/connect
```
2. サインインし、お支払いの詳細を追加し、API キーをコピーします。
3. API キーを貼り付けます。
```txt
┌ API key
└ enter
```
あるいは、他のプロバイダーのいずれかを選択することもできます。 [詳細はこちら](/docs/providers#directory)。
---
## 初期化する
プロバイダーを構成したので、次のプロジェクトに移動できます。
取り組みたいと考えています。
```bash
cd /path/to/project
```
そしてOpenCodeを実行します。
```bash
opencode
```
次に、次のコマンドを実行して、プロジェクトの OpenCode を初期化します。
```bash frame="none"
/init
```
これにより、OpenCode がプロジェクトを分析し、`AGENTS.md` ファイルを作成します。
プロジェクトのルート。
:::ヒント
プロジェクトの `AGENTS.md` ファイルを Git にコミットする必要があります。
:::
これは、OpenCode がプロジェクトの構造とコーディング パターンを理解するのに役立ちます。
used.
---
## 使用法
これで、OpenCode を使用してプロジェクトに取り組む準備が整いました。お気軽にお尋ねください
何でも!
AI コーディング エージェントを初めて使用する場合は、次の例を参考にしてください。
help.
---
### 質問する
OpenCode にコードベースの説明を依頼できます。
:::ヒント
プロジェクト内のファイルをあいまい検索するには、`@` キーを使用します。
:::
```txt frame="none" "@packages/functions/src/api/index.ts"
How is authentication handled in @packages/functions/src/api/index.ts
```
これは、コードベースに作業していない部分がある場合に役立ちます。
---
### 機能を追加する
OpenCode に新しい機能をプロジェクトに追加するよう依頼できます。ただし、最初は計画の作成を依頼することをお勧めします。
1. **計画を作成する**
OpenCode には、変更を加える機能を無効にする _Plan モード_ があり、
代わりに、その機能を_どのように_実装するかを提案してください。
**Tab** キーを使用してそれに切り替えます。右下隅にこれを示すインジケーターが表示されます。
```bash frame="none" title="Switch to Plan mode"
<TAB>
```
では、何をしたいのかを説明しましょう。
```txt frame="none"
When a user deletes a note, we'd like to flag it as deleted in the database.
Then create a screen that shows all the recently deleted notes.
From this screen, the user can undelete a note or permanently delete it.
```
自分が何を望んでいるのかを理解するために、OpenCode に十分な詳細を提供したいと考えています。役に立ちます
チームの若手開発者と話しているように話すことができます。
:::ヒント
OpenCode に多くのコンテキストと例を提供して、意図する内容を理解できるようにします。
want.
:::
2. **計画を反復する**
計画が示されたら、フィードバックを送信したり、詳細を追加したりできます。
```txt frame="none"
We'd like to design this new screen using a design I've used before.
[Image #1] Take a look at this image and use it as a reference.
```
:::ヒント
画像をターミナルにドラッグ アンド ドロップして、プロンプトに追加します。
:::
OpenCode は、指定された画像をスキャンしてプロンプトに追加できます。あなたはできる
これを行うには、画像をターミナルにドラッグ アンド ドロップします。
3. **機能を構築する**
計画に慣れたら、_Build モード_に戻ります。
**Tab** キーをもう一度押します。
```bash frame="none"
<TAB>
```
そして変更を加えるように依頼します。
```bash frame="none"
Sounds good! Go ahead and make the changes.
```
---
### 変更を加える
より単純な変更については、OpenCode に直接ビルドするよう依頼できます。
最初に計画を見直す必要はありません。
```txt frame="none" "@packages/functions/src/settings.ts" "@packages/functions/src/notes.ts"
We need to add authentication to the /settings route. Take a look at how this is
handled in the /notes route in @packages/functions/src/notes.ts and implement
the same logic in @packages/functions/src/settings.ts
```
OpenCode が適切な情報を提供できるように、十分な量の詳細を確実に提供する必要があります。
changes.
---
### 変更を元に戻す
OpenCode にいくつかの変更を依頼するとします。
```txt frame="none" "@packages/functions/src/api/index.ts"
Can you refactor the function in @packages/functions/src/api/index.ts?
```
しかし、それは自分が望んでいたものではないことに気づきます。変更は **元に戻すことができます**
`/undo` コマンドを使用します。
```bash frame="none"
/undo
```
OpenCode は加えた変更を元に戻し、元のメッセージを表示します。
again.
```txt frame="none" "@packages/functions/src/api/index.ts"
Can you refactor the function in @packages/functions/src/api/index.ts?
```
ここからプロンプトを調整し、OpenCode に再試行を依頼できます。
:::ヒント
`/undo` を複数回実行すると、複数の変更を元に戻すことができます。
:::
または、`/redo` コマンドを使用して変更を**やり直す**こともできます。
```bash frame="none"
/redo
```
---
## 共有
OpenCode との会話は [他のユーザーと共有できます]
チーム](/docs/share)。
```bash frame="none"
/share
```
これにより、現在の会話へのリンクが作成され、クリップボードにコピーされます。
:::注記
会話はデフォルトでは共有されません。
:::
これは [OpenCode を使用した会話 ](https://opencode.ai/s/4XP1fce5) の例です。
---
## カスタマイズ
それで終わりです!これであなたは OpenCode の使い方のプロになりました。
独自のものにするには、[テーマ](/docs/themes) を選択する、[キーバインドをカスタマイズする ](/docs/keybinds)、[コード フォーマッタ ](/docs/formatters) を設定する、[カスタム コマンド ](/docs/commands) を作成する]、または [OpenCode config](/docs/config) を試してみる] ことをお勧めします。

View File

@@ -0,0 +1,192 @@
---
title: キーバインド
description: キーバインドをカスタマイズします。
---
OpenCode には、OpenCode 設定を通じてカスタマイズできるキーバインドのリストがあります。
```json title="opencode.json"
{
"$schema": "https://opencode.ai/config.json",
"keybinds": {
"leader": "ctrl+x",
"app_exit": "ctrl+c,ctrl+d,<leader>q",
"editor_open": "<leader>e",
"theme_list": "<leader>t",
"sidebar_toggle": "<leader>b",
"scrollbar_toggle": "none",
"username_toggle": "none",
"status_view": "<leader>s",
"tool_details": "none",
"session_export": "<leader>x",
"session_new": "<leader>n",
"session_list": "<leader>l",
"session_timeline": "<leader>g",
"session_fork": "none",
"session_rename": "none",
"session_share": "none",
"session_unshare": "none",
"session_interrupt": "escape",
"session_compact": "<leader>c",
"session_child_cycle": "<leader>right",
"session_child_cycle_reverse": "<leader>left",
"session_parent": "<leader>up",
"messages_page_up": "pageup,ctrl+alt+b",
"messages_page_down": "pagedown,ctrl+alt+f",
"messages_line_up": "ctrl+alt+y",
"messages_line_down": "ctrl+alt+e",
"messages_half_page_up": "ctrl+alt+u",
"messages_half_page_down": "ctrl+alt+d",
"messages_first": "ctrl+g,home",
"messages_last": "ctrl+alt+g,end",
"messages_next": "none",
"messages_previous": "none",
"messages_copy": "<leader>y",
"messages_undo": "<leader>u",
"messages_redo": "<leader>r",
"messages_last_user": "none",
"messages_toggle_conceal": "<leader>h",
"model_list": "<leader>m",
"model_cycle_recent": "f2",
"model_cycle_recent_reverse": "shift+f2",
"model_cycle_favorite": "none",
"model_cycle_favorite_reverse": "none",
"variant_cycle": "ctrl+t",
"command_list": "ctrl+p",
"agent_list": "<leader>a",
"agent_cycle": "tab",
"agent_cycle_reverse": "shift+tab",
"input_clear": "ctrl+c",
"input_paste": "ctrl+v",
"input_submit": "return",
"input_newline": "shift+return,ctrl+return,alt+return,ctrl+j",
"input_move_left": "left,ctrl+b",
"input_move_right": "right,ctrl+f",
"input_move_up": "up",
"input_move_down": "down",
"input_select_left": "shift+left",
"input_select_right": "shift+right",
"input_select_up": "shift+up",
"input_select_down": "shift+down",
"input_line_home": "ctrl+a",
"input_line_end": "ctrl+e",
"input_select_line_home": "ctrl+shift+a",
"input_select_line_end": "ctrl+shift+e",
"input_visual_line_home": "alt+a",
"input_visual_line_end": "alt+e",
"input_select_visual_line_home": "alt+shift+a",
"input_select_visual_line_end": "alt+shift+e",
"input_buffer_home": "home",
"input_buffer_end": "end",
"input_select_buffer_home": "shift+home",
"input_select_buffer_end": "shift+end",
"input_delete_line": "ctrl+shift+d",
"input_delete_to_line_end": "ctrl+k",
"input_delete_to_line_start": "ctrl+u",
"input_backspace": "backspace,shift+backspace",
"input_delete": "ctrl+d,delete,shift+delete",
"input_undo": "ctrl+-,super+z",
"input_redo": "ctrl+.,super+shift+z",
"input_word_forward": "alt+f,alt+right,ctrl+right",
"input_word_backward": "alt+b,alt+left,ctrl+left",
"input_select_word_forward": "alt+shift+f,alt+shift+right",
"input_select_word_backward": "alt+shift+b,alt+shift+left",
"input_delete_word_forward": "alt+d,alt+delete,ctrl+delete",
"input_delete_word_backward": "ctrl+w,ctrl+backspace,alt+backspace",
"history_previous": "up",
"history_next": "down",
"terminal_suspend": "ctrl+z",
"terminal_title_toggle": "none",
"tips_toggle": "<leader>h",
"display_thinking": "none"
}
}
```
---
## リーダーキー
OpenCode は、ほとんどのキーバインドに `leader` キーを使用します。これにより、端末での競合が回避されます。
デフォルトでは、`ctrl+x` がリーダー キーであり、ほとんどの操作では、最初にリーダー キーを押してからショートカットを押す必要があります。たとえば、新しいセッションを開始するには、まず `ctrl+x` を押してから、`n` を押します。
キーバインドにリーダー キーを使用する必要はありませんが、そうすることをお勧めします。
---
## キーバインドを無効にする
キーバインドを無効にするには、値「none」を指定してキーを構成に追加します。
```json title="opencode.json"
{
"$schema": "https://opencode.ai/config.json",
"keybinds": {
"session_compact": "none"
}
}
```
---
## デスクトッププロンプトのショートカット
OpenCode デスクトップ アプリのプロンプト入力は、テキストを編集するための一般的な Readline/Emacs スタイルのショートカットをサポートしています。これらは組み込みであり、現在 `opencode.json` を介して構成することはできません。
|ショートカット |アクション |
| -------- | ---------------------------------------- |
| `ctrl+a` |現在の行の先頭に移動 |
| `ctrl+e` |現在の行の末尾に移動 |
| `ctrl+b` |カーソルを 1 文字前に移動 |
| `ctrl+f` |カーソルを 1 文字前に移動 |
| `alt+b` |カーソルを 1 単語前に移動 |
| `alt+f` |カーソルを 1 単語前に移動 |
| `ctrl+d` |カーソル下の文字を削除 |
| `ctrl+k` |行末まで強制終了 |
| `ctrl+u` |行の先頭までキル |
| `ctrl+w` |前の単語を削除 |
| `alt+d` |次の単語を削除 |
| `ctrl+t` |文字を入れ替える |
| `ctrl+g` |ポップオーバーをキャンセル/実行中の応答を中止する |
---
## Shift+Enter
一部の端末では、デフォルトでは Enter キーを使用して修飾キーを送信しません。エスケープ シーケンスとして `Shift+Enter` を送信するように端末を設定する必要がある場合があります。
### Windowsターミナル
次の場所で `settings.json` を開きます。
```
%LOCALAPPDATA%\Packages\Microsoft.WindowsTerminal_8wekyb3d8bbwe\LocalState\settings.json
```
これをルートレベルの `actions` 配列に追加します。
```json
"actions": [
{
"command": {
"action": "sendInput",
"input": "\u001b[13;2u"
},
"id": "User.sendInput.ShiftEnterCustom"
}
]
```
これをルートレベルの `actions` 配列に追加します。
```json
"keybindings": [
{
"keys": "shift+enter",
"id": "User.sendInput.ShiftEnterCustom"
}
]
```
ファイルを保存し、Windows ターミナルを再起動するか、新しいタブを開きます。

View File

@@ -0,0 +1,188 @@
---
title: LSPサーバー
description: OpenCode は LSP サーバーと統合します。
---
OpenCode は言語サーバー プロトコル (LSP) と統合して、LLM がコードベースと対話できるようにします。診断を使用して LLM にフィードバックを提供します。
---
## 内蔵
OpenCode には、一般的な言語用のいくつかの組み込み LSP サーバーが付属しています。
| LSPサーバー |拡張機能 |要件 |
| ------------------ | ------------------------------------------------------------------- | ------------------------------------------------------------ |
|アストロ | .astro | Astro プロジェクトの自動インストール |
|バッシュ | .sh、.bash、.zsh、.ksh | bash-lang-server を自動インストールします。
|クランド | .c、.cpp、.cc、.cxx、.c++、.h、.hpp、.hh、.hxx、.h++ | C/C++ プロジェクトの自動インストール |
|シーシャープ | .cs | `.NET SDK` がインストールされました |
| clojure-lsp | .clj、.cljs、.cljc、.edn | `clojure-lsp` コマンドが利用可能 |
|ダーツ | .ダーツ | `dart` コマンドが利用可能 |
|デノ | .ts、.tsx、.js、.jsx、.mjs | `deno` コマンドが利用可能 (deno.json/deno.jsonc を自動検出) |
|エリクサーLS | .ex、.exs | `elixir` コマンドが利用可能 |
|エスリント | .ts、.tsx、.js、.jsx、.mjs、.cjs、.mts、.cts、.vue |プロジェクト内の `eslint` 依存関係 |
|フシャープ | .fs、.fsi、.fsx、.fsscript | `.NET SDK` がインストールされました |
|輝く.gleam | `gleam` コマンドが利用可能 |
|ゴップル | .go | `go` コマンドが利用可能 |
| HLS | .hs、.lhs | `haskell-language-server-wrapper` コマンドが利用可能 |
| jdtls | .java | `Java SDK (version 21+)` がインストールされました |
| kotlin-ls | .kt、.kts | Kotlin プロジェクトの自動インストール |
|ルアール | .lua | Lua プロジェクトの自動インストール |
|ニクスド | .nix | `nixd` コマンドが利用可能 |
| ocaml-lsp | .ml、.mli | `ocamllsp` コマンドが利用可能 |
|オックスリント | .ts、.tsx、.js、.jsx、.mjs、.cjs、.mts、.cts、.vue、.astro、.svelte |プロジェクト内の `oxlint` 依存関係 |
| php インテルフェンス | .php | PHP プロジェクトの自動インストール |
|プリズマ | .プリズム | `prisma` コマンドが利用可能 |
|著作権 | .py、.pyi | `pyright` 依存関係がインストールされました |
| Ruby-LSP (ルボコップ) | .rb、.rake、.gemspec、.ru | `ruby` および `gem` コマンドが利用可能 |
|さび | .rs | `rust-analyzer` コマンドが利用可能 |
|ソースキット-lsp | .swift、.objc、.objcpp | `swift` がインストールされています (macOS では `xcode`)。
|細い | .svelte | Svelte プロジェクトの自動インストール |
|テラフォーム | .tf、.tfvars | GitHub リリースからの自動インストール |
|タイニーミスト | .typ、.typc | GitHub リリースからの自動インストール |
|タイプスクリプト | .ts、.tsx、.js、.jsx、.mjs、.cjs、.mts、.cts |プロジェクト内の `typescript` 依存関係 |
|ビュー | .vue | Vue プロジェクトの自動インストール |
| yaml-ls | .yaml、.yml | Red Hat yaml-lang-server を自動インストールします。
| zls | .zig、.zon | `zig` コマンドが利用可能 |
上記のファイル拡張子のいずれかが検出され、要件が満たされると、LSP サーバーは自動的に有効になります。
:::注記
`OPENCODE_DISABLE_LSP_DOWNLOAD` 環境変数を `true` に設定すると、LSP サーバーの自動ダウンロードを無効にできます。
:::
---
## 仕組み
opencode がファイルを開くと、次のようになります。
1. 有効なすべての LSP サーバーに対してファイル拡張子をチェックします。
2. 適切な LSP サーバーがまだ実行されていない場合は開始します。
---
## 設定する
Opencode 構成の `lsp` セクションを通じて LSP サーバーをカスタマイズできます。
```json title="opencode.json"
{
"$schema": "https://opencode.ai/config.json",
"lsp": {}
}
```
各 LSP サーバーは以下をサポートします。
|プロパティ |タイプ |説明 |
| ---------------- | -------- | ------------------------------------------------- |
| `disabled` |ブール値 | LSP サーバーを無効にするには、これを `true` に設定します。
| `command` |文字列[] | LSP サーバーを起動するコマンド |
| `extensions` |文字列[] |この LSP サーバーが処理するファイル拡張子 |
| `env` |オブジェクト |サーバーの起動時に設定する環境変数 |
| `initialization` |オブジェクト | LSP サーバーに送信する初期化オプション |
いくつかの例を見てみましょう。
---
### 環境変数
LSP サーバーの起動時に `env` プロパティを使用して環境変数を設定します。
```json title="opencode.json" {5-7}
{
"$schema": "https://opencode.ai/config.json",
"lsp": {
"rust": {
"env": {
"RUST_LOG": "debug"
}
}
}
}
```
---
### 初期化オプション
`initialization` プロパティを使用して、初期化オプションを LSP サーバーに渡します。これらは、LSP `initialize` リクエスト中に送信されるサーバー固有の設定です。
```json title="opencode.json" {5-9}
{
"$schema": "https://opencode.ai/config.json",
"lsp": {
"typescript": {
"initialization": {
"preferences": {
"importModuleSpecifierPreference": "relative"
}
}
}
}
}
```
:::注記
初期化オプションは LSP サーバーによって異なります。利用可能なオプションについては、LSP サーバーのドキュメントを確認してください。
:::
---
### LSPサーバーの無効化
**すべて** LSP サーバーをグローバルに無効にするには、`lsp` を `false` に設定します。
```json title="opencode.json" {3}
{
"$schema": "https://opencode.ai/config.json",
"lsp": false
}
```
**特定** LSP サーバーを無効にするには、`disabled` を `true` に設定します。
```json title="opencode.json" {5}
{
"$schema": "https://opencode.ai/config.json",
"lsp": {
"typescript": {
"disabled": true
}
}
}
```
---
### カスタムLSPサーバー
コマンドとファイル拡張子を指定して、カスタム LSP サーバーを追加できます。
```json title="opencode.json" {4-7}
{
"$schema": "https://opencode.ai/config.json",
"lsp": {
"custom-lsp": {
"command": ["custom-lsp-server", "--stdio"],
"extensions": [".custom"]
}
}
}
```
---
## 追加情報
### PHP インテリフェンス
PHP Intelephense は、ライセンス キーを通じてプレミアム機能を提供します。ライセンス キーを指定するには、次の場所にあるテキスト ファイルにキー (のみ) を配置します。
- macOS/Linux の場合: `$HOME/intelephense/licence.txt`
- Windows の場合: `%USERPROFILE%/intelephense/licence.txt`
ファイルにはライセンス キーのみが含まれており、追加のコンテンツは含まれていません。

View File

@@ -0,0 +1,511 @@
---
title: MCPサーバー
description: ローカルおよびリモートの MCP ツールを追加します。
---
_Model Context Protocol_ (MCP) を使用して、OpenCode に外部ツールを追加できます。 OpenCode は、ローカル サーバーとリモート サーバーの両方をサポートします。
MCP ツールを追加すると、組み込みツールとともに LLM で自動的に使用できるようになります。
---
#### 注意事項
MCP サーバーを使用すると、コンテキストが追加されます。多くのツールがある場合、これはすぐに増加する可能性があります。したがって、使用する MCP サーバーには注意することをお勧めします。
:::ヒント
MCP サーバーはコンテキストに追加されるため、どのサーバーを有効にするかには注意してください。
:::
GitHub MCP サーバーなどの特定の MCP サーバーは、大量のトークンを追加する傾向があり、コンテキスト制限を簡単に超える可能性があります。
---
## 有効にする
MCP サーバーは、`mcp` の下の [OpenCode Config](https://opencode.ai/docs/config/) で定義できます。各 MCP を一意の名前で追加します。 LLM にプロンプ​​トを表示するときに、その MCP を名前で参照できます。
```jsonc title="opencode.jsonc" {6}
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"name-of-mcp-server": {
// ...
"enabled": true,
},
"name-of-other-mcp-server": {
// ...
},
},
}
```
`enabled` を `false` に設定してサーバーを無効にすることもできます。これは、サーバーを構成から削除せずに一時的に無効にする場合に便利です。
---
### リモートのデフォルトを上書きする
組織は、`.well-known/opencode` エンドポイント経由でデフォルトの MCP サーバーを提供できます。これらのサーバーはデフォルトで無効になっている場合があり、ユーザーは必要なサーバーにオプトインできます。
組織のリモート構成から特定のサーバーを有効にするには、`enabled: true` を使用してローカル構成に追加します。
```json title="opencode.json"
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"jira": {
"type": "remote",
"url": "https://jira.example.com/mcp",
"enabled": true
}
}
}
```
ローカルの設定値はリモートのデフォルト値をオーバーライドします。詳細については、「config precedence](/docs/config#precedence-order)」を参照してください。
---
## 地元
MCP オブジェクト内の `type` から `"local"` を使用してローカル MCP サーバーを追加します。
```jsonc title="opencode.jsonc" {15}
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"my-local-mcp-server": {
"type": "local",
// Or ["bun", "x", "my-mcp-command"]
"command": ["npx", "-y", "my-mcp-command"],
"enabled": true,
"environment": {
"MY_ENV_VAR": "my_env_var_value",
},
},
},
}
```
このコマンドは、ローカル MCP サーバーの起動方法を示します。環境変数のリストを渡すこともできます。
たとえば、テスト [`@modelcontextprotocol/server-everything`](https://www.npmjs.com/package/@modelcontextprotocol/server-everything) MCP サーバー] を追加する方法は次のとおりです。
```jsonc title="opencode.jsonc"
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"mcp_everything": {
"type": "local",
"command": ["npx", "-y", "@modelcontextprotocol/server-everything"],
},
},
}
```
これを使用するには、プロンプトに `use the mcp_everything tool` を追加します。
```txt "mcp_everything"
use the mcp_everything tool to add the number 3 and 4
```
---
#### オプション
ここでは、ローカル MCP サーバーを構成するためのすべてのオプションを示します。
|オプション |タイプ |必須 |説明 |
| ------------- | ------- | -------- | ----------------------------------------------------------------------------------- |
| `type` |文字列 |や | MCP サーバー接続のタイプは、`"local"` である必要があります。 |
| `command` |配列 |や | MCP サーバーを実行するためのコマンドと引数。 |
| `environment` |オブジェクト | |サーバーの実行時に設定する環境変数。 |
| `enabled` |ブール値 | |起動時に MCP サーバーを有効または無効にします。 |
| `timeout` |番号 | | MCP サーバーからツールを取得する際のタイムアウト (ミリ秒)。デフォルトは 5000 (5 秒) です。 |
---
## リモート
`type` を `"remote"` に設定して、リモート MCP サーバーを追加します。
```json title="opencode.json"
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"my-remote-mcp": {
"type": "remote",
"url": "https://my-mcp-server.com",
"enabled": true,
"headers": {
"Authorization": "Bearer MY_API_KEY"
}
}
}
}
```
`url` はリモート MCP サーバーの URL で、`headers` オプションを使用するとヘッダーのリストを渡すことができます。
---
#### オプション
|オプション |タイプ |必須 |説明 |
| --------- | ------- | -------- | ----------------------------------------------------------------------------------- |
| `type` |文字列 |や | MCP サーバー接続のタイプは、`"remote"` である必要があります。 |
| `url` |文字列 |や |リモート MCP サーバーの URL。 |
| `enabled` |ブール値 | |起動時に MCP サーバーを有効または無効にします。 |
| `headers` |オブジェクト | |リクエストとともに送信するヘッダー。 |
| `oauth` |オブジェクト | | OAuth認証構成。以下の「OAuth](#oauth)」セクションを参照してください。 |
| `timeout` |番号 | | MCP サーバーからツールを取得する際のタイムアウト (ミリ秒)。デフォルトは 5000 (5 秒) です。 |
---
## OAuth
OpenCode は、リモート MCP サーバーの OAuth 認証を自動的に処理します。サーバーが認証を必要とする場合、OpenCode は次のことを行います。
1. 401 応答を検出し、OAuth フローを開始します。
2. サーバーでサポートされている場合は **動的クライアント登録 (RFC 7591)** を使用します
3. 今後のリクエストに備えてトークンを安全に保管する
---
### 自動
ほとんどの OAuth 対応 MCP サーバーでは、特別な構成は必要ありません。リモートサーバーを設定するだけです。
```json title="opencode.json"
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"my-oauth-server": {
"type": "remote",
"url": "https://mcp.example.com/mcp"
}
}
}
```
サーバーが認証を必要とする場合、OpenCode を初めて使用しようとすると、認証を求めるプロンプトが表示されます。そうでない場合は、`opencode mcp auth <server-name>` を使用して flow](#authenticating) を手動でトリガーできます。
---
### 事前登録済み
MCP サーバープロバイダーからクライアント認証情報を取得している場合は、それらを構成できます。
```json title="opencode.json" {7-11}
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"my-oauth-server": {
"type": "remote",
"url": "https://mcp.example.com/mcp",
"oauth": {
"clientId": "{env:MY_MCP_CLIENT_ID}",
"clientSecret": "{env:MY_MCP_CLIENT_SECRET}",
"scope": "tools:read tools:execute"
}
}
}
}
```
---
### 認証中
手動で認証をトリガーしたり、資格情報を管理したりできます。
特定の MCP サーバーで認証します。
```bash
opencode mcp auth my-oauth-server
```
すべての MCP サーバーとその認証ステータスをリストします。
```bash
opencode mcp list
```
保存されている認証情報を削除します。
```bash
opencode mcp logout my-oauth-server
```
`mcp auth` コマンドは、認証のためにブラウザを開きます。承認後、OpenCode はトークンを `~/.local/share/opencode/mcp-auth.json` に安全に保存します。
---
#### OAuthの無効化
サーバー (代わりに API キーを使用するサーバーなど) の自動 OAuth を無効にする場合は、`oauth` を `false` に設定します。
```json title="opencode.json" {7}
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"my-api-key-server": {
"type": "remote",
"url": "https://mcp.example.com/mcp",
"oauth": false,
"headers": {
"Authorization": "Bearer {env:MY_API_KEY}"
}
}
}
}
```
---
#### OAuth オプション
|オプション |タイプ |説明 |
| -------------- | --------------- | -------------------------------------------------------------------------------- |
| `oauth` |オブジェクト \|偽 | OAuth 構成オブジェクト、または `false` を使用して OAuth 自動検出を無効にします。 |
| `clientId` |文字列 | OAuth クライアント ID。指定しない場合は、動的クライアント登録が試行されます。 |
| `clientSecret` |文字列 | OAuth クライアント シークレット (認可サーバーで必要な場合)。 |
| `scope` |文字列 |認可中にリクエストする OAuth スコープ。 |
#### デバッグ
リモート MCP サーバーが認証に失敗した場合は、次の方法で問題を診断できます。
```bash
# View auth status for all OAuth-capable servers
opencode mcp auth list
# Debug connection and OAuth flow for a specific server
opencode mcp debug my-oauth-server
```
`mcp debug` コマンドは、現在の認証ステータスを表示し、HTTP 接続をテストし、OAuth 検出フローを試行します。
---
## 管理
MCP は、組み込みツールと並んで、OpenCode のツールとして利用できます。したがって、他のツールと同様に、OpenCode config を通じてそれらを管理できます。
---
### グローバル
これは、それらをグローバルに有効または無効にできることを意味します。
```json title="opencode.json" {14}
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"my-mcp-foo": {
"type": "local",
"command": ["bun", "x", "my-mcp-command-foo"]
},
"my-mcp-bar": {
"type": "local",
"command": ["bun", "x", "my-mcp-command-bar"]
}
},
"tools": {
"my-mcp-foo": false
}
}
```
グロブ パターンを使用して、一致するすべての MCP を無効にすることもできます。
```json title="opencode.json" {14}
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"my-mcp-foo": {
"type": "local",
"command": ["bun", "x", "my-mcp-command-foo"]
},
"my-mcp-bar": {
"type": "local",
"command": ["bun", "x", "my-mcp-command-bar"]
}
},
"tools": {
"my-mcp*": false
}
}
```
ここでは、グロブ パターン `my-mcp*` を使用して、すべての MCP を無効にしています。
---
### エージェントごと
多数の MCP サーバーがある場合は、エージェントごとにのみ有効にし、グローバルに無効にすることができます。これを行うには:
1. ツールとしてグローバルに無効にします。
2. [エージェント config](/docs/agents#tools) で、MCP サーバーをツールとして有効にします。
```json title="opencode.json" {11, 14-18}
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"my-mcp": {
"type": "local",
"command": ["bun", "x", "my-mcp-command"],
"enabled": true
}
},
"tools": {
"my-mcp*": false
},
"agent": {
"my-agent": {
"tools": {
"my-mcp*": true
}
}
}
}
```
---
#### グロブパターン
グロブ パターンでは、単純な正規表現のグロブ パターンを使用します。
- `*` は 0 個以上の任意の文字に一致します (例: `"my-mcp*"` は `my-mcp_search`、`my-mcp_list` などに一致します)。
- `?` は 1 つの文字に正確に一致します
- 他のすべての文字は文字通り一致します
:::注記
MCP サーバー ツールはサーバー名をプレフィックスとして登録されているため、サーバーのすべてのツールを無効にするには、次のコマンドを使用するだけです。
```
"mymcpservername_*": false
```
:::
---
## 例
以下に、一般的な MCP サーバーの例をいくつか示します。他のサーバーを文書化したい場合は、PR を送信できます。
---
### セントリー
[Sentry MCP サーバー ](https://mcp.sentry.dev) を追加して、Sentry プロジェクトや問題と対話します。
```json title="opencode.json" {4-8}
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"sentry": {
"type": "remote",
"url": "https://mcp.sentry.dev/mcp",
"oauth": {}
}
}
}
```
構成を追加した後、Sentry で認証します。
```bash
opencode mcp auth sentry
```
これにより、ブラウザ ウィンドウが開き、OAuth フローが完了し、OpenCode が Sentry アカウントに接続されます。
認証が完了すると、プロンプトで Sentry ツールを使用して、問題、プロジェクト、エラー データをクエリできるようになります。
```txt "use sentry"
Show me the latest unresolved issues in my project. use sentry
```
---
### コンテキスト7
ドキュメントを検索するために [Context7 MCP server](https://github.com/upstash/context7) を追加します。
```json title="opencode.json" {4-7}
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"context7": {
"type": "remote",
"url": "https://mcp.context7.com/mcp"
}
}
}
```
無料アカウントにサインアップしている場合は、API キーを使用して、より高いレート制限を取得できます。
```json title="opencode.json" {7-9}
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"context7": {
"type": "remote",
"url": "https://mcp.context7.com/mcp",
"headers": {
"CONTEXT7_API_KEY": "{env:CONTEXT7_API_KEY}"
}
}
}
}
```
ここでは、`CONTEXT7_API_KEY` 環境変数が設定されていることを前提としています。
Context7 MCP サーバーを使用するには、プロンプトに `use context7` を追加します。
```txt "use context7"
Configure a Cloudflare Worker script to cache JSON API responses for five minutes. use context7
```
あるいは、次のようなものを [AGENTS.md](/docs/rules/).
```md title="AGENTS.md"
When you need to search docs, use `context7` tools.
```
---
### Vercel による Grep
GitHub 上のコード スニペットを検索するには、[Grep by Vercel](https://grep.app) MCP サーバーを追加します。
```json title="opencode.json" {4-7}
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"gh_grep": {
"type": "remote",
"url": "https://mcp.grep.app"
}
}
}
```
MCP サーバーに `gh_grep` という名前を付けたので、プロンプトに `use the gh_grep tool` を追加して、エージェントにそれを使用させることができます。
```txt "use the gh_grep tool"
What's the right way to set a custom domain in an SST Astro component? use the gh_grep tool
```
あるいは、次のようなものを [AGENTS.md](/docs/rules/).
```md title="AGENTS.md"
If you are unsure how to do something, use `gh_grep` to search code examples from GitHub.
```

View File

@@ -0,0 +1,223 @@
---
title: モデル
description: LLM プロバイダーとモデルを構成します。
---
OpenCode は [AI SDK](https://ai-sdk.dev/) および [Models.dev](https://models.dev) を使用して **75 以上の LLM プロバイダー** をサポートし、ローカル モデルの実行をサポートします。
---
## プロバイダー
最も一般的なプロバイダーはデフォルトでプリロードされています。 `/connect` コマンドを使用してプロバイダーの資格情報を追加した場合は、OpenCode を開始するときにそれらの資格情報を使用できるようになります。
[プロバイダー](/docs/providers).
---
## モデルを選択してください
プロバイダーを構成したら、次のように入力して必要なモデルを選択できます。
```bash frame="none"
/models
```
---
## 推奨機種
たくさんのモデルがあり、毎週のように新しいモデルが登場します。
:::ヒント
当社が推奨するモデルのいずれかの使用を検討してください。
:::
ただし、コードの生成とツールの呼び出しの両方に優れているものはほんのわずかです。
ここでは、OpenCode で適切に動作するいくつかのモデルを順不同で示します。 (これは完全なリストではなく、必ずしも最新であるとは限りません):
- GPT5.2
- GPT 5.1 コーデックス
- クロード 作品4.5
- クロード・ソネット 4.5
- ミニマックス M2.1
- ジェミニ 3 プロ
---
## デフォルトを設定する
これらのいずれかをデフォルトのモデルとして設定するには、`model` キーを
OpenCodeの設定。
```json title="opencode.json" {3}
{
"$schema": "https://opencode.ai/config.json",
"model": "lmstudio/google/gemma-3n-e4b"
}
```
ここでの完全な ID は `provider_id/model_id` です。たとえば、[OpenCode Zen](/docs/zen) を使用している場合、GPT 5.1 Codex には `opencode/gpt-5.1-codex` を使用します。
[カスタムプロバイダー](/docs/providers#custom) を構成している場合、`provider_id` は構成の `provider` 部分のキーであり、`model_id` は `provider.models` のキーです。
---
## モデルの構成
config を通じてモデルのオプションをグローバルに設定できます。
```jsonc title="opencode.jsonc" {7-12,19-24}
{
"$schema": "https://opencode.ai/config.json",
"provider": {
"openai": {
"models": {
"gpt-5": {
"options": {
"reasoningEffort": "high",
"textVerbosity": "low",
"reasoningSummary": "auto",
"include": ["reasoning.encrypted_content"],
},
},
},
},
"anthropic": {
"models": {
"claude-sonnet-4-5-20250929": {
"options": {
"thinking": {
"type": "enabled",
"budgetTokens": 16000,
},
},
},
},
},
},
}
```
ここでは、2 つの組み込みモデル (`openai` プロバイダー経由でアクセスする場合は `gpt-5`、`anthropic` プロバイダー経由でアクセスする場合は `claude-sonnet-4-20250514`) のグローバル設定を構成しています。
組み込みプロバイダーとモデル名は、[Models.dev](https://models.dev).
使用しているエージェントに対してこれらのオプションを構成することもできます。ここでエージェント設定はグローバル オプションをオーバーライドします。 [詳細はこちら](/docs/agents/#additional)。
組み込みバリアントを拡張するカスタム バリアントを定義することもできます。バリアントを使用すると、重複したエントリを作成せずに、同じモデルに対して異なる設定を構成できます。
```jsonc title="opencode.jsonc" {6-21}
{
"$schema": "https://opencode.ai/config.json",
"provider": {
"opencode": {
"models": {
"gpt-5": {
"variants": {
"high": {
"reasoningEffort": "high",
"textVerbosity": "low",
"reasoningSummary": "auto",
},
"low": {
"reasoningEffort": "low",
"textVerbosity": "low",
"reasoningSummary": "auto",
},
},
},
},
},
},
}
```
---
## バリエーション
多くのモデルは、異なる構成の複数のバリアントをサポートしています。 OpenCode には、一般的なプロバイダーのデフォルトのバリアントが組み込まれています。
### 組み込みバリアント
OpenCode には、多くのプロバイダーのデフォルトのバリアントが付属しています。
**人間的**:
- `high` - 高度な思考予算 (デフォルト)
- `max` - 最大の思考予算
**OpenAI**:
モデルによって異なりますが、おおよそ次のとおりです。
- `none` - 理由はありません
- `minimal` - 最小限の推論努力
- `low` - 推論の労力が少ない
- `medium` - 中程度の推論努力
- `high` - 高い推論努力
- `xhigh` - 非常に高い推論努力
**グーグル**
- `low` - 労力/トークン予算の削減
- `high` - より高い労力/トークン予算
:::ヒント
このリストは包括的なものではありません。他の多くのプロバイダーにもデフォルトが組み込まれています。
:::
### カスタムバリアント
既存のバリアントをオーバーライドすることも、独自のバリアントを追加することもできます。
```jsonc title="opencode.jsonc" {7-18}
{
"$schema": "https://opencode.ai/config.json",
"provider": {
"openai": {
"models": {
"gpt-5": {
"variants": {
"thinking": {
"reasoningEffort": "high",
"textVerbosity": "low",
},
"fast": {
"disabled": true,
},
},
},
},
},
},
}
```
### サイクルのバリエーション
キーバインド `variant_cycle` を使用すると、バリアントをすばやく切り替えることができます。 [詳細はこちら](/docs/keybinds)。
---
## モデルのロード
OpenCode が起動すると、次の優先順位でモデルがチェックされます。
1. `--model` または `-m` コマンド ライン フラグ。形式は構成ファイルと同じです: `provider_id/model_id`。
2. OpenCode 構成内のモデルのリスト。
```json title="opencode.json"
{
"$schema": "https://opencode.ai/config.json",
"model": "anthropic/claude-sonnet-4-20250514"
}
```
ここでの形式は `provider/model` です。
3. 最後に使用されたモデル。
4. 内部優先を使用した最初のモデル。

View File

@@ -0,0 +1,331 @@
---
title: モード
description: さまざまなユースケースに応じたさまざまなモード。
---
:::注意
モードは、opencode config の `agent` オプションを通じて設定されるようになりました。の
`mode` オプションは非推奨になりました。 [詳細はこちら](/docs/agents)。
:::
opencode のモードを使用すると、さまざまなユースケースに合わせて動作、ツール、プロンプトをカスタマイズできます。
**ビルド** と **プラン** という 2 つの組み込みモードが付属しています。カスタマイズできます
これらを使用するか、opencode config を通じて独自の設定を行います。
セッション中にモードを切り替えることも、構成ファイルでモードを構成することもできます。
---
## 内蔵
opencode には 2 つの組み込みモードが付属しています。
---
### 建てる
ビルドは、すべてのツールが有効になっている **デフォルト** モードです。これは、ファイル操作やシステム コマンドへのフル アクセスが必要な開発作業の標準モードです。
---
### プラン
計画と分析のために設計された制限付きモード。プラン モードでは、次のツールはデフォルトで無効になっています。
- `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
}
}
}
}
```
### マークダウン構成
マークダウン ファイルを使用してモードを定義することもできます。それらを次の場所に置きます。
- グローバル: `~/.config/opencode/agents/`
- プロジェクト: `.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.
```
マークダウン ファイル名はモード名になります (例: `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}"
}
}
}
```
このパスは、構成ファイルが配置されている場所に対する相対パスです。したがって、これは次の場合に機能します
グローバルなオープンコード構成とプロジェクト固有の構成の両方。
---
### ツール
`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
}
}
}
}
```
### マークダウンファイルの使用
モード ファイルをプロジェクト固有モードの場合は `.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 および読み取りツールを有効にして調査に重点を置きます
- **ドキュメント モード**: ファイル操作を使用してドキュメントを作成しますが、システム コマンドは使用しません
また、さまざまなユースケースにさまざまなモデルが適していることがわかるかもしれません。

View File

@@ -0,0 +1,57 @@
---
title: ネットワーク
description: プロキシとカスタム証明書を構成します。
---
OpenCode は、エンタープライズ ネットワーク環境の標準プロキシ環境変数とカスタム証明書をサポートしています。
---
## プロキシ
OpenCode は標準のプロキシ環境変数を尊重します。
```bash
# HTTPS proxy (recommended)
export HTTPS_PROXY=https://proxy.example.com:8080
# HTTP proxy (if HTTPS not available)
export HTTP_PROXY=http://proxy.example.com:8080
# Bypass proxy for local server (required)
export NO_PROXY=localhost,127.0.0.1
```
:::注意
TUI はローカル HTTP サーバーと通信します。ルーティング ループを防ぐには、この接続のプロキシをバイパスする必要があります。
:::
サーバーのポートとホスト名は、[CLI flags](/docs/cli#run).
---
### 認証する
プロキシで基本認証が必要な場合は、URL に資格情報を含めます。
```bash
export HTTPS_PROXY=http://username:password@proxy.example.com:8080
```
:::注意
パスワードのハードコーディングは避けてください。環境変数または安全な認証情報ストレージを使用します。
:::
NTLM や Kerberos などの高度な認証を必要とするプロキシの場合は、認証方法をサポートする LLM ゲートウェイの使用を検討してください。
---
## カスタム証明書
企業が HTTPS 接続にカスタム CA を使用している場合は、それらを信頼するように OpenCode を構成します。
```bash
export NODE_EXTRA_CA_CERTS=/path/to/ca-cert.pem
```
これは、プロキシ接続と直接 API アクセスの両方で機能します。

View File

@@ -0,0 +1,237 @@
---
title: 権限
description: どのアクションの実行に承認が必要かを制御します。
---
OpenCode は `permission` 構成を使用して、特定のアクションを自動的に実行するか、プロンプトを表示するか、ブロックするかを決定します。
`v1.1.1` の時点で、従来の `tools` ブール値設定は非推奨となり、`permission` にマージされました。古い `tools` 構成は、下位互換性のために引き続きサポートされています。
---
## アクション
各権限ルールは次のいずれかに解決されます。
- `"allow"` — 承認なしで実行します
- `"ask"` — 承認を求めるプロンプト
- `"deny"` — アクションをブロックする
---
## 構成
権限をグローバルに (`*` を使用して) 設定し、特定のツールをオーバーライドできます。
```json title="opencode.json"
{
"$schema": "https://opencode.ai/config.json",
"permission": {
"*": "ask",
"bash": "allow",
"edit": "deny"
}
}
```
すべての権限を一度に設定することもできます。
```json title="opencode.json"
{
"$schema": "https://opencode.ai/config.json",
"permission": "allow"
}
```
---
## 詳細なルール (オブジェクト構文)
ほとんどの権限では、オブジェクトを使用して、ツール入力に基づいてさまざまなアクションを適用できます。
```json title="opencode.json"
{
"$schema": "https://opencode.ai/config.json",
"permission": {
"bash": {
"*": "ask",
"git *": "allow",
"npm *": "allow",
"rm *": "deny",
"grep *": "allow"
},
"edit": {
"*": "deny",
"packages/web/src/content/docs/*.mdx": "allow"
}
}
}
```
ルールはパターン マッチによって評価され、**最後に一致したルールが優先されます**。一般的なパターンは、キャッチオール `"*"` ルールを最初に置き、その後により具体的なルールを置くことです。
### ワイルドカード
許可パターンでは、単純なワイルドカード マッチングを使用します。
- `*` は 0 個以上の任意の文字と一致します
- `?` は 1 つの文字に正確に一致します
- 他のすべての文字は文字通り一致します
### ホームディレクトリの拡張
パターンの先頭で `~` または `$HOME` を使用して、ホーム ディレクトリを参照できます。これは、[`external_directory`](#external-directories) ルールに特に役立ちます。
- `~/projects/*` -> `/Users/username/projects/*`
- `~/projects/*` -> `/Users/username/projects/*`
- `~/projects/*` -> `/Users/username/projects/*`
### 外部ディレクトリ
`external_directory` を使用して、OpenCode が開始された作業ディレクトリの外部のパスに触れるツール呼び出しを許可します。これは、パスを入力として受け取るすべてのツール (`read`、`edit`、`list`、`glob`、`grep`、および多くの `bash` コマンドなど) に適用されます。
ホーム拡張 (`~/...` など) は、パターンの記述方法にのみ影響します。外部パスは現在のワークスペースの一部にはならないため、作業ディレクトリの外部のパスも `external_directory` 経由で許可する必要があります。
たとえば、これにより、`~/projects/personal/` の下にあるすべてのものへのアクセスが許可されます。
```json title="opencode.json"
{
"$schema": "https://opencode.ai/config.json",
"permission": {
"external_directory": {
"~/projects/personal/**": "allow"
}
}
}
```
ここで許可されるディレクトリはすべて、現在のワークスペースと同じデフォルトを継承します。 [`read` のデフォルトは `allow`](#defaults) であるため、オーバーライドされない限り、`external_directory` の下のエントリの読み取りも許可されます。読み取りを保持しながら編集をブロックするなど、ツールをこれらのパスで制限する必要がある場合は、明示的なルールを追加します。
```json title="opencode.json"
{
"$schema": "https://opencode.ai/config.json",
"permission": {
"external_directory": {
"~/projects/personal/**": "allow"
},
"edit": {
"~/projects/personal/**": "deny"
}
}
}
```
信頼できるパスに重点を置いたリストを維持し、他のツール (`bash` など) の必要に応じて追加の許可または拒否ルールを追加します。
---
## 利用可能な権限
OpenCode のアクセス許可は、ツール名に加えて、いくつかの安全対策によってキー化されます。
- `read` — ファイルの読み取り (ファイルパスと一致)
- `edit` — すべてのファイル変更 (`edit`、`write`、`patch`、`multiedit` をカバー)
- `glob` — ファイルのグロビング (グロブパターンと一致)
- `grep` — コンテンツ検索 (正規表現パターンと一致)
- `list` — ディレクトリ内のファイルのリスト (ディレクトリ パスと一致)
- `bash` — シェルコマンドの実行 (`git status --porcelain` などの解析されたコマンドと一致します)
- `task` — サブエージェントの起動 (サブエージェントのタイプと一致)
- `skill` — スキルをロードしています(スキル名と一致します)
- `lsp` — LSP クエリの実行 (現在は非細分性)
- `todoread`、`todowrite` — ToDo リストの読み取り/更新
- `webfetch` — URL を取得します (URL と一致します)
- `websearch`、`codesearch` — Web/コード検索 (クエリと一致)
- `external_directory` — ツールがプロジェクトの作業ディレクトリ外のパスにアクセスするとトリガーされます。
- `doom_loop` — 同じ入力で同じツール呼び出しが 3 回繰り返されたときにトリガーされます。
---
## デフォルト
何も指定しない場合、OpenCode は許容的なデフォルトから開始します。
- ほとんどの権限はデフォルトで `"allow"` に設定されます。
- `doom_loop` と `external_directory` のデフォルトは `"ask"` です。
- `read` は `"allow"` ですが、`.env` ファイルはデフォルトで拒否されます。
```json title="opencode.json"
{
"permission": {
"read": {
"*": "allow",
"*.env": "deny",
"*.env.*": "deny",
"*.env.example": "allow"
}
}
}
```
---
## 「尋ねる」ということ
OpenCode が承認を求めるプロンプトを表示すると、UI は 3 つの結果を提供します。
- `once` — このリクエストのみを承認します
- `always` — 提案されたパターンに一致する今後のリクエストを承認します(現在の OpenCode セッションの残りの部分)
- `reject` — リクエストを拒否します
`always` が承認するパターンのセットは、ツールによって提供されます (たとえば、bash の承認では通常、`git status*` のような安全なコマンド プレフィックスがホワイトリストに登録されます)。
---
## エージェント
エージェントごとに権限をオーバーライドできます。エージェントの権限はグローバル設定とマージされ、エージェント ルールが優先されます。 [エージェントの権限について詳しくは、](/docs/agents#permissions) をご覧ください。
:::注記
パターン マッチングの詳細な例については、上記の「粒度ルール (オブジェクト構文)](#granular-rules-object-syntax)」セクションを参照してください。
:::
```json title="opencode.json"
{
"$schema": "https://opencode.ai/config.json",
"permission": {
"bash": {
"*": "ask",
"git *": "allow",
"git commit *": "deny",
"git push *": "deny",
"grep *": "allow"
}
},
"agent": {
"build": {
"permission": {
"bash": {
"*": "ask",
"git *": "allow",
"git commit *": "ask",
"git push *": "deny",
"grep *": "allow"
}
}
}
}
}
```
マークダウンでエージェントの権限を構成することもできます。
```markdown title="~/.config/opencode/agents/review.md"
---
description: Code review without edits
mode: subagent
permission:
edit: deny
bash: ask
webfetch: deny
---
Only analyze code and suggest changes.
```
:::ヒント
引数のあるコマンドにはパターン マッチングを使用します。 `"grep *"` は `grep pattern file.txt` を許可しますが、`"grep"` だけではブロックされます。 `git status` のようなコマンドはデフォルトの動作で機能しますが、引数を渡すときに明示的な許可 (`"git status *"` など) が必要です。
:::

View File

@@ -0,0 +1,385 @@
---
title: プラグイン
description: OpenCode を拡張する独自のプラグインを作成します。
---
プラグインを使用すると、さまざまなイベントにフックして動作をカスタマイズすることで OpenCode を拡張できます。プラグインを作成して、新しい機能を追加したり、外部サービスと統合したり、OpenCode のデフォルトの動作を変更したりできます。
たとえば、コミュニティによって作成された [plugins](/docs/ecosystem#plugins) をチェックしてください。
---
## プラグインを使用する
プラグインをロードするには 2 つの方法があります。
---
### ローカルファイルから
JavaScript または TypeScript ファイルをプラグイン ディレクトリに配置します。
- `.opencode/plugins/` - プロジェクトレベルのプラグイン
- `~/.config/opencode/plugins/` - グローバルプラグイン
これらのディレクトリ内のファイルは起動時に自動的にロードされます。
---
### npmから
構成ファイルで npm パッケージを指定します。
```json title="opencode.json"
{
"$schema": "https://opencode.ai/config.json",
"plugin": ["opencode-helicone-session", "opencode-wakatime", "@my-org/custom-plugin"]
}
```
通常の npm パッケージとスコープ指定された npm パッケージの両方がサポートされています。
[ecosystem](/docs/ecosystem#plugins).
---
### プラグインのインストール方法
**npm プラグイン** は、起動時に Bun を使用して自動的にインストールされます。パッケージとその依存関係は `~/.cache/opencode/node_modules/` にキャッシュされます。
**ローカル プラグイン**は、プラグイン ディレクトリから直接ロードされます。外部パッケージを使用するには、config ディレクトリ内に `package.json` を作成するか ([Dependency](#dependencies) を参照)、プラグインを npm に公開して [config](/docs/config#plugins) に追加する] 必要があります。
---
### ロード順序
プラグインはすべてのソースからロードされ、すべてのフックが順番に実行されます。ロード順序は次のとおりです。
1. グローバル構成 (`~/.config/opencode/opencode.json`)
2. プロジェクト構成 (`opencode.json`)
3. グローバルプラグインディレクトリ (`~/.config/opencode/plugins/`)
4. プロジェクトプラグインディレクトリ (`.opencode/plugins/`)
同じ名前とバージョンを持つ重複した npm パッケージは 1 回ロードされます。ただし、似た名前のローカル プラグインと npm プラグインは両方とも別々にロードされます。
---
## プラグインを作成する
プラグインは、1 つ以上のプラグインをエクスポートする **JavaScript/TypeScript モジュール**です
機能。各関数はコンテキスト オブジェクトを受け取り、フック オブジェクトを返します。
---
### 依存関係
ローカル プラグインとカスタム ツールは外部の npm パッケージを使用できます。必要な依存関係を含む `package.json` を config ディレクトリに追加します。
```json title=".opencode/package.json"
{
"dependencies": {
"shescape": "^2.1.0"
}
}
```
OpenCode は起動時に `bun install` を実行してこれらをインストールします。プラグインとツールはそれらをインポートできるようになります。
```ts title=".opencode/plugins/my-plugin.ts"
import { escape } from "shescape"
export const MyPlugin = async (ctx) => {
return {
"tool.execute.before": async (input, output) => {
if (input.tool === "bash") {
output.args.command = escape(output.args.command)
}
},
}
}
```
---
### 基本構造
```js title=".opencode/plugins/example.js"
export const MyPlugin = async ({ project, client, $, directory, worktree }) => {
console.log("Plugin initialized!")
return {
// Hook implementations go here
}
}
```
プラグイン関数は以下を受け取ります。
- `project`: 現在のプロジェクト情報。
- `directory`: 現在の作業ディレクトリ。
- `worktree`: git ワークツリーのパス。
- `client`: AI と対話するためのオープンコード SDK クライアント。
- `$`: Bun の [コマンドを実行するためのシェル API](https://bun.com/docs/runtime/shell)。
---
### TypeScript のサポート
TypeScript プラグインの場合、プラグイン パッケージから型をインポートできます。
```ts title="my-plugin.ts" {1}
import type { Plugin } from "@opencode-ai/plugin"
export const MyPlugin: Plugin = async ({ project, client, $, directory, worktree }) => {
return {
// Type-safe hook implementations
}
}
```
---
### イベント
以下の「例」セクションに示すように、プラグインはイベントをサブスクライブできます。利用可能なさまざまなイベントのリストは次のとおりです。
#### コマンドイベント
- `command.executed`
#### ファイルイベント
- `command.executed`
- `command.executed`
#### インストールイベント
- `command.executed`
#### LSPイベント
- `command.executed`
- `command.executed`
#### メッセージイベント
- `command.executed`
- `command.executed`
- `command.executed`
- `command.executed`
#### 許可イベント
- `command.executed`
- `command.executed`
#### サーバーイベント
- `command.executed`
#### セッションイベント
- `command.executed`
- `command.executed`
- `command.executed`
- `command.executed`
- `command.executed`
- `command.executed`
- `command.executed`
- `command.executed`
#### Todoイベント
- `command.executed`
#### シェルイベント
- `command.executed`
#### ツールイベント
- `command.executed`
- `command.executed`
#### TUIイベント
- `command.executed`
- `command.executed`
- `command.executed`
---
## 例
ここでは、オープンコードを拡張するために使用できるプラグインの例をいくつか示します。
---
### 通知を送信する
特定のイベントが発生したときに通知を送信します。
```js title=".opencode/plugins/notification.js"
export const NotificationPlugin = async ({ project, client, $, directory, worktree }) => {
return {
event: async ({ event }) => {
// Send notification on session completion
if (event.type === "session.idle") {
await $`osascript -e 'display notification "Session completed!" with title "opencode"'`
}
},
}
}
```
macOS 上で AppleScript を実行するために `osascript` を使用しています。ここでは通知を送信するために使用しています。
:::注記
OpenCode デスクトップ アプリを使用している場合は、応答の準備ができたとき、またはセッション エラーが発生したときにシステム通知を自動的に送信できます。
:::
---
### .env 保護
opencode が `.env` ファイルを読み取らないようにします。
```javascript title=".opencode/plugins/env-protection.js"
export const EnvProtection = async ({ project, client, $, directory, worktree }) => {
return {
"tool.execute.before": async (input, output) => {
if (input.tool === "read" && output.args.filePath.includes(".env")) {
throw new Error("Do not read .env files")
}
},
}
}
```
---
### 環境変数を挿入する
すべてのシェル実行 (AI ツールとユーザー端末) に環境変数を挿入します。
```javascript title=".opencode/plugins/inject-env.js"
export const InjectEnvPlugin = async () => {
return {
"shell.env": async (input, output) => {
output.env.MY_API_KEY = "secret"
output.env.PROJECT_ROOT = input.cwd
},
}
}
```
---
### カスタムツール
プラグインはオープンコードにカスタム ツールを追加することもできます。
```ts title=".opencode/plugins/custom-tools.ts"
import { type Plugin, tool } from "@opencode-ai/plugin"
export const CustomToolsPlugin: Plugin = async (ctx) => {
return {
tool: {
mytool: tool({
description: "This is a custom tool",
args: {
foo: tool.schema.string(),
},
async execute(args, context) {
const { directory, worktree } = context
return `Hello ${args.foo} from ${directory} (worktree: ${worktree})`
},
}),
},
}
}
```
`tool` ヘルパーは、opencode が呼び出すことができるカスタム ツールを作成します。 Zod スキーマ関数を受け取り、次のようなツール定義を返します。
- `description`: ツールの機能
- `args`: ツールの引数の Zod スキーマ
- `execute`: ツールが呼び出されたときに実行される関数
カスタム ツールは、組み込みツールと並行してオープンコードに使用できます。
---
### ロギング
構造化ログには `console.log` の代わりに `client.app.log()` を使用します。
```ts title=".opencode/plugins/my-plugin.ts"
export const MyPlugin = async ({ client }) => {
await client.app.log({
body: {
service: "my-plugin",
level: "info",
message: "Plugin initialized",
extra: { foo: "bar" },
},
})
}
```
レベル: `debug`、`info`、`warn`、`error`。詳細については、[SDK ドキュメント](https://opencode.ai/docs/sdk) を参照してください。
---
### 圧縮フック
セッションが圧縮されたときに含まれるコンテキストをカスタマイズします。
```ts title=".opencode/plugins/compaction.ts"
import type { Plugin } from "@opencode-ai/plugin"
export const CompactionPlugin: Plugin = async (ctx) => {
return {
"experimental.session.compacting": async (input, output) => {
// Inject additional context into the compaction prompt
output.context.push(`
## Custom Context
Include any state that should persist across compaction:
- Current task status
- Important decisions made
- Files being actively worked on
`)
},
}
}
```
`experimental.session.compacting` フックは、LLM が継続概要を生成する前に起動します。これを使用して、デフォルトの圧縮プロンプトでは見逃されるドメイン固有のコンテキストを挿入します。
`output.prompt` を設定することで、圧縮プロンプトを完全に置き換えることもできます。
```ts title=".opencode/plugins/custom-compaction.ts"
import type { Plugin } from "@opencode-ai/plugin"
export const CustomCompactionPlugin: Plugin = async (ctx) => {
return {
"experimental.session.compacting": async (input, output) => {
// Replace the entire compaction prompt
output.prompt = `
You are generating a continuation prompt for a multi-agent swarm session.
Summarize:
1. The current task and its status
2. Which files are being modified and by whom
3. Any blockers or dependencies between agents
4. The next steps to complete the work
Format as a structured prompt that a new agent can use to resume work.
`
},
}
}
```
`output.prompt` を設定すると、デフォルトの圧縮プロンプトが完全に置き換えられます。この場合、`output.context` 配列は無視されます。

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,180 @@
---
title: ルール
description: オープンコードのカスタム命令を設定します。
---
`AGENTS.md` ファイルを作成することで、opencode にカスタム命令を提供できます。これは Cursor のルールと似ています。これには、特定のプロジェクトに合わせて LLM の動作をカスタマイズするために LLM のコンテキストに含まれる命令が含まれています。
---
## 初期化する
新しい `AGENTS.md` ファイルを作成するには、opencode で `/init` コマンドを実行します。
:::ヒント
プロジェクトの `AGENTS.md` ファイルを Git にコミットする必要があります。
:::
これにより、プロジェクトとそのすべてのコンテンツがスキャンされ、プロジェクトの内容が理解され、それを含む `AGENTS.md` ファイルが生成されます。これは、opencode がプロジェクトをより適切にナビゲートするのに役立ちます。
既存の `AGENTS.md` ファイルがある場合、これはそれに追加しようとします。
---
## 例
このファイルを手動で作成することもできます。以下は、`AGENTS.md` ファイルに含めることができるいくつかの例です。
```markdown title="AGENTS.md"
# SST v3 Monorepo Project
This is an SST v3 monorepo with TypeScript. The project uses bun workspaces for package management.
## Project Structure
- `packages/` - Contains all workspace packages (functions, core, web, etc.)
- `infra/` - Infrastructure definitions split by service (storage.ts, api.ts, web.ts)
- `sst.config.ts` - Main SST configuration with dynamic imports
## Code Standards
- Use TypeScript with strict mode enabled
- Shared code goes in `packages/core/` with proper exports configuration
- Functions go in `packages/functions/`
- Infrastructure should be split into logical files in `infra/`
## Monorepo Conventions
- Import shared modules using workspace names: `@my-app/core/example`
```
ここにプロジェクト固有の手順を追加します。これはチーム全体で共有されます。
---
## 種類
opencode は、複数の場所からの `AGENTS.md` ファイルの読み取りもサポートしています。そして、これはさまざまな目的に役立ちます。
### プロジェクト
プロジェクト固有のルールのために、プロジェクト ルートに `AGENTS.md` を配置します。これらは、このディレクトリまたはそのサブディレクトリで作業している場合にのみ適用されます。
### グローバル
`~/.config/opencode/AGENTS.md` ファイルにグローバル ルールを含めることもできます。これは、すべてのオープンコード セッションに適用されます。
これは Git にコミットされておらず、チームと共有されていないため、LLM が従うべき個人ルールを指定するためにこれを使用することをお勧めします。
### クロードコードの互換性
Claude Code から移行するユーザーのために、OpenCode はフォールバックとして Claude Code のファイル規則をサポートしています。
- **プロジェクト ルール**: プロジェクト ディレクトリ内の `CLAUDE.md` (`AGENTS.md` が存在しない場合に使用されます)
- **グローバル ルール**: `~/.claude/CLAUDE.md` (`~/.config/opencode/AGENTS.md` が存在しない場合に使用)
- **スキル**: `~/.claude/skills/` — 詳細については、[エージェント スキル ](/docs/skills/) を参照してください。
クロード コードの互換性を無効にするには、次の環境変数のいずれかを設定します。
```bash
export OPENCODE_DISABLE_CLAUDE_CODE=1 # Disable all .claude support
export OPENCODE_DISABLE_CLAUDE_CODE_PROMPT=1 # Disable only ~/.claude/CLAUDE.md
export OPENCODE_DISABLE_CLAUDE_CODE_SKILLS=1 # Disable only .claude/skills
```
---
## 優先順位
opencode が開始されると、次の順序でルール ファイルが検索されます。
1. **ローカル ファイル** (現在のディレクトリから上に移動) (`AGENTS.md`、`CLAUDE.md`)
2. **グローバル ファイル** (`~/.config/opencode/AGENTS.md`)
3. **クロード コード ファイル** (`~/.claude/CLAUDE.md` にあります) (無効になっていない限り)
最初に一致したファイルが各カテゴリで優勝します。たとえば、`AGENTS.md` と `CLAUDE.md` の両方がある場合、`AGENTS.md` のみが使用されます。同様に、`~/.config/opencode/AGENTS.md` は `~/.claude/CLAUDE.md` よりも優先されます。
---
## カスタム指示
`opencode.json` またはグローバル `~/.config/opencode/opencode.json` でカスタム命令ファイルを指定できます。これにより、あなたとあなたのチームは、既存のルールを AGENTS.md に複製するのではなく、再利用することができます。
例:
```json title="opencode.json"
{
"$schema": "https://opencode.ai/config.json",
"instructions": ["CONTRIBUTING.md", "docs/guidelines.md", ".cursor/rules/*.md"]
}
```
リモート URL を使用して Web から命令をロードすることもできます。
```json title="opencode.json"
{
"$schema": "https://opencode.ai/config.json",
"instructions": ["https://raw.githubusercontent.com/my-org/shared-rules/main/style.md"]
}
```
リモート命令は 5 秒のタイムアウトでフェッチされます。
すべての命令ファイルは `AGENTS.md` ファイルと結合されます。
---
## 外部ファイルの参照
opencode は `AGENTS.md` のファイル参照を自動的に解析しませんが、次の 2 つの方法で同様の機能を実現できます。
### opencode.json の使用
推奨されるアプローチは、`opencode.json` の `instructions` フィールドを使用することです。
```json title="opencode.json"
{
"$schema": "https://opencode.ai/config.json",
"instructions": ["docs/development-standards.md", "test/testing-guidelines.md", "packages/*/AGENTS.md"]
}
```
### AGENTS.md のマニュアル手順
`AGENTS.md` で明示的な命令を指定することで、オープンコードに外部ファイルを読み取るように教えることができます。実際の例を次に示します。
```markdown title="AGENTS.md"
# TypeScript Project Rules
## External File Loading
CRITICAL: When you encounter a file reference (e.g., @rules/general.md), use your Read tool to load it on a need-to-know basis. They're relevant to the SPECIFIC task at hand.
Instructions:
- Do NOT preemptively load all references - use lazy loading based on actual need
- When loaded, treat content as mandatory instructions that override defaults
- Follow references recursively when needed
## Development Guidelines
For TypeScript code style and best practices: @docs/typescript-guidelines.md
For React component architecture and hooks patterns: @docs/react-patterns.md
For REST API design and error handling: @docs/api-standards.md
For testing strategies and coverage requirements: @test/testing-guidelines.md
## General Guidelines
Read the following file immediately as it's relevant to all workflows: @rules/general-guidelines.md.
```
このアプローチにより、次のことが可能になります。
- モジュール式の再利用可能なルール ファイルを作成する
- シンボリックリンクまたは git サブモジュールを介してプロジェクト間でルールを共有する
- 詳細なガイドラインを参照しながら、AGENTS.md を簡潔に保ちます
- opencode が特定のタスクに必要な場合にのみファイルをロードするようにする
:::ヒント
モノリポジトリまたは共有標準を使用するプロジェクトの場合、グロブ パターン (`packages/*/AGENTS.md` など) で `opencode.json` を使用する方が、手動で指示するよりも保守しやすくなります。
:::

View File

@@ -0,0 +1,391 @@
---
title: SDK
description: オープンコードサーバー用のタイプセーフな JS クライアント。
---
import config from "../../../../config.mjs"
export const typesUrl = `${config.github}/blob/dev/packages/sdk/js/src/gen/types.gen.ts`
opencode JS/TS SDK は、サーバーと対話するためのタイプセーフなクライアントを提供します。
これを使用して、統合を構築し、オープンコードをプログラムで制御します。
[サーバーの仕組みについて詳しくは、](/docs/server) をご覧ください。たとえば、コミュニティによって構築された [projects](/docs/ecosystem#projects) をチェックしてください。
---
## インストール
npm から SDK をインストールします。
```bash
npm install @opencode-ai/sdk
```
---
## クライアントの作成
オープンコードのインスタンスを作成します。
```javascript
import { createOpencode } from "@opencode-ai/sdk"
const { client } = await createOpencode()
```
これにより、サーバーとクライアントの両方が起動します
#### オプション
|オプション |タイプ |説明 |デフォルト |
| ---------- | ------------- | ------------------------------ | ----------- |
| `hostname` | `string` |サーバーのホスト名 |うーん
| `port` | `number` |サーバーポート |うーん
| `signal` | `AbortSignal` |キャンセルのためのアボート信号 |うーん
| `timeout` | `number` |サーバー起動のタイムアウト (ミリ秒) |うーん
| `config` | `Config` |構成オブジェクト |うーん
---
## 構成
構成オブジェクトを渡して動作をカスタマイズできます。インスタンスは引き続き `opencode.json` を取得しますが、設定をインラインでオーバーライドまたは追加することができます。
```javascript
import { createOpencode } from "@opencode-ai/sdk"
const opencode = await createOpencode({
hostname: "127.0.0.1",
port: 4096,
config: {
model: "anthropic/claude-3-5-sonnet-20241022",
},
})
console.log(`Server running at ${opencode.server.url}`)
opencode.server.close()
```
## クライアントのみ
すでに実行中のオープンコードのインスタンスがある場合は、それに接続するためのクライアント インスタンスを作成できます。
```javascript
import { createOpencodeClient } from "@opencode-ai/sdk"
const client = createOpencodeClient({
baseUrl: "http://localhost:4096",
})
```
#### オプション
|オプション |タイプ |説明 |デフォルト |
| --------------- | ---------- | -------------------------------- | ----------------------- |
| `baseUrl` | `string` |サーバーの URL |うーん
| `fetch` | `function` |カスタムフェッチの実装 |うーん
| `parseAs` | `string` |応答解析方法 |うーん
| `responseStyle` | `string` |戻り値のスタイル: `data` または `fields` |認証済み
| `throwOnError` | `boolean` | | を返す代わりにエラーをスローします。うーん
---
## 種類
SDK には、すべての API タイプの TypeScript 定義が含まれています。それらを直接インポートします。
```typescript
import type { Session, Message, Part } from "@opencode-ai/sdk"
```
すべてのタイプはサーバーの OpenAPI 仕様から生成され、<a href={typesUrl}>タイプ ファイル</a> で使用できます。
---
## エラー
SDK は、キャッチして処理できるエラーをスローできます。
```typescript
try {
await client.session.get({ path: { id: "invalid-id" } })
} catch (error) {
console.error("Failed to get session:", (error as Error).message)
}
```
---
## API
SDK は、タイプセーフなクライアントを通じてすべてのサーバー API を公開します。
---
### グローバル
|方法 |説明 |応答 |
| ----------------- | ------------------------------- | ------------------------------------ |
| `global.health()` |サーバーの健全性とバージョンを確認する | `{ healthy: true, version: string }` |
---
#### 例
```javascript
const health = await client.global.health()
console.log(health.data.version)
```
---
### アプリ
|方法 |説明 |応答 |
| -------------- | ------------------------- | ------------------------------------------- |
| `app.log()` |ログエントリを書き込む | `boolean` |
| `app.agents()` |利用可能なすべてのエージェントをリストする | <a href={typesUrl}><code>エージェント[]</code></a> |
---
#### 例
```javascript
// Write a log entry
await client.app.log({
body: {
service: "my-app",
level: "info",
message: "Operation completed",
},
})
// List available agents
const agents = await client.app.agents()
```
---
### プロジェクト
|方法 |説明 |応答 |
| ------------------- | ------------------- | --------------------------------------------- |
| `project.list()` |すべてのプロジェクトをリストする | <a href={typesUrl}><code>プロジェクト[]</code></a> |
| `project.current()` |現在のプロジェクトを取得 | <a href={typesUrl}><code>プロジェクト</code></a> |
---
#### 例
```javascript
// List all projects
const projects = await client.project.list()
// Get current project
const currentProject = await client.project.current()
```
---
### パス
|方法 |説明 |応答 |
| ------------ | ---------------- | ---------------------------------------- |
| `path.get()` |現在のパスを取得 | <a href={typesUrl}><code>パス</code></a> |
---
#### 例
```javascript
// Get current path information
const pathInfo = await client.path.get()
```
---
### 構成
|方法 |説明 |応答 |
| -------------------- | --------------------------------- | ----------------------------------------------------------------------------------------------------- |
| `config.get()` |構成情報を取得する | <a href={typesUrl}><code>構成</code></a> |
| `config.providers()` |プロバイダーとデフォルトのモデルをリストする | `{ providers: `<a href={typesUrl}><code>プロバイダ[]</code></a>`, default: { [key: string]: string } }` |
---
#### 例
```javascript
const config = await client.config.get()
const { providers, default: defaults } = await client.config.providers()
```
---
### セッション
|方法 |説明 |メモ |
| ---------------------------------------------------------- | ---------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------- |
| `session.list()` |セッションをリストする |戻り値 <a href={typesUrl}><code>セッション[]</code></a> |
| `session.get({ path })` |セッションを取得 |戻り値 <a href={typesUrl}><code>セッション</code></a> |
| `session.children({ path })` |子セッションをリストする |戻り値 <a href={typesUrl}><code>セッション[]</code></a> |
| `session.create({ body })` |セッションの作成 |戻り値 <a href={typesUrl}><code>セッション</code></a> |
| `session.delete({ path })` |セッションを削除 |戻り値 `boolean` |
| `session.update({ path, body })` |セッションのプロパティを更新する |戻り値 <a href={typesUrl}><code>セッション</code></a> |
| `session.init({ path, body })` |アプリを分析して `AGENTS.md` を作成する |戻り値 `boolean` |
| `session.abort({ path })` |実行中のセッションを中止する |戻り値 `boolean` |
| `session.share({ path })` |セッションを共有する |戻り値 <a href={typesUrl}><code>セッション</code></a> |
| `session.unshare({ path })` |セッションの共有を解除 |戻り値 <a href={typesUrl}><code>セッション</code></a> |
| `session.summarize({ path, body })` |セッションを要約する |戻り値 `boolean` |
| `session.messages({ path })` |セッション内のメッセージをリストする |戻り値 `{ info: `<a href={typesUrl}><code>メッセージ</code></a>`, parts: `<a href={typesUrl}><code>Part[]</code></a>`}[]` |
| `session.message({ path })` |メッセージの詳細を取得する |戻り値 `{ info: `<a href={typesUrl}><code>メッセージ</code></a>`, parts: `<a href={typesUrl}><code>Part[]</code></a>`}` |
| `session.prompt({ path, body })` |プロンプトメッセージを送信する | `body.noReply: true` は UserMessage (コンテキストのみ) を返します。デフォルトでは、AI 応答を含む <a href={typesUrl}><code>AssistantMessage</code></a> を返します。
| `session.command({ path, body })` |コマンドをセッションに送信 |戻り値 `{ info: `<a href={typesUrl}><code>AssistantMessage</code></a>`, parts: `<a href={typesUrl}><code>Part[]</code></a>`}` |
| `session.shell({ path, body })` |シェルコマンドを実行する |戻り値 <a href={typesUrl}><code>AssistantMessage</code></a> |
| `session.revert({ path, body })` |メッセージを元に戻す |戻り値 <a href={typesUrl}><code>セッション</code></a> |
| `session.unrevert({ path })` |元に戻したメッセージを復元する |戻り値 <a href={typesUrl}><code>セッション</code></a> |
| `postSessionByIdPermissionsByPermissionId({ path, body })` |許可リクエストに応答する |戻り値 `boolean` |
---
#### 例
```javascript
// Create and manage sessions
const session = await client.session.create({
body: { title: "My session" },
})
const sessions = await client.session.list()
// Send a prompt message
const result = await client.session.prompt({
path: { id: session.id },
body: {
model: { providerID: "anthropic", modelID: "claude-3-5-sonnet-20241022" },
parts: [{ type: "text", text: "Hello!" }],
},
})
// Inject context without triggering AI response (useful for plugins)
await client.session.prompt({
path: { id: session.id },
body: {
noReply: true,
parts: [{ type: "text", text: "You are a helpful assistant." }],
},
})
```
---
### ファイル
|方法 |説明 |応答 |
| ------------------------- | ---------------------------------- | ------------------------------------------------------------------------------------------- |
| `find.text({ query })` |ファイル内のテキストを検索 | `path`、`lines`、`line_number`、`absolute_offset`、`submatches` の一致オブジェクトの配列 |
| `find.files({ query })` |ファイルとディレクトリを名前で検索する | `string[]` (パス) |
| `find.symbols({ query })` |ワークスペースのシンボルを検索する | <a href={typesUrl}><code>シンボル[]</code></a> |
| `file.read({ query })` |ファイルを読む | `{ type: "raw" \| "patch", content: string }` |
| `file.status({ query? })` |追跡されたファイルのステータスを取得する | <a href={typesUrl}><code>ファイル[]</code></a> |
`find.files` は、いくつかのオプションのクエリ フィールドをサポートしています。
- `type`: `"file"` または `"directory"`
- `directory`: 検索用のプロジェクト ルートをオーバーライドします。
- `limit`: 最大結果 (1 200)
---
#### 例
```javascript
// Search and read files
const textResults = await client.find.text({
query: { pattern: "function.*opencode" },
})
const files = await client.find.files({
query: { query: "*.ts", type: "file" },
})
const directories = await client.find.files({
query: { query: "packages", type: "directory", limit: 20 },
})
const content = await client.file.read({
query: { path: "src/index.ts" },
})
```
---
### トゥイ
|方法 |説明 |応答 |
| ------------------------------ | ------------------------- | --------- |
| `tui.appendPrompt({ body })` |プロンプトにテキストを追加します | `boolean` |
| `tui.openHelp()` |ヘルプダイアログを開く | `boolean` |
| `tui.openSessions()` |セッションセレクターを開く | `boolean` |
| `tui.openThemes()` |テーマセレクターを開く | `boolean` |
| `tui.openModels()` |モデルセレクターを開く | `boolean` |
| `tui.submitPrompt()` |現在のプロンプトを送信します | `boolean` |
| `tui.clearPrompt()` |プロンプトをクリア | `boolean` |
| `tui.executeCommand({ body })` |コマンドを実行する | `boolean` |
| `tui.showToast({ body })` |トースト通知を表示 | `boolean` |
---
#### 例
```javascript
// Control TUI interface
await client.tui.appendPrompt({
body: { text: "Add this to prompt" },
})
await client.tui.showToast({
body: { message: "Task completed", variant: "success" },
})
```
---
### 認証
|方法 |説明 |応答 |
| ------------------- | ------------------------------ | --------- |
| `auth.set({ ... })` |認証資格情報を設定する | `boolean` |
---
#### 例
```javascript
await client.auth.set({
path: { id: "anthropic" },
body: { type: "api", key: "your-api-key" },
})
```
---
### イベント
|方法 |説明 |応答 |
| ------------------- | ------------------------- | ------------------------- |
| `event.subscribe()` |サーバー送信イベント ストリーム |サーバー送信イベント ストリーム |
---
#### 例
```javascript
// Listen to real-time events
const events = await client.event.subscribe()
for await (const event of events.stream) {
console.log("Event:", event.type, event.properties)
}
```

View File

@@ -0,0 +1,287 @@
---
title: サーバ
description: HTTP 経由でオープンコード サーバーと通信します。
---
import config from "../../../../config.mjs"
export const typesUrl = `${config.github}/blob/dev/packages/sdk/js/src/gen/types.gen.ts`
`opencode serve` コマンドは、オープンコード クライアントが使用できる OpenAPI エンドポイントを公開するヘッドレス HTTP サーバーを実行します。
---
### 使用法
```bash
opencode serve [--port <number>] [--hostname <string>] [--cors <origin>]
```
#### オプション
|旗 |説明 |デフォルト |
| --------------- | ----------------------------------- | ---------------- |
| `--port` |リッスンするポート | `4096` |
| `--hostname` |リッスンするホスト名 | `127.0.0.1` |
| `--mdns` | mDNS 検出を有効にする | `false` |
| `--mdns-domain` | mDNS サービスのカスタム ドメイン名 | `opencode.local` |
| `--cors` |許可する追加のブラウザーオリジン | `[]` |
`--cors` は複数回渡すことができます。
```bash
opencode serve --cors http://localhost:5173 --cors https://app.example.com
```
---
### 認証
HTTP 基本認証でサーバーを保護するには、`OPENCODE_SERVER_PASSWORD` を設定します。ユーザー名はデフォルトで `opencode` になるか、`OPENCODE_SERVER_USERNAME` を設定してオーバーライドします。これは、`opencode serve` と `opencode web` の両方に当てはまります。
```bash
OPENCODE_SERVER_PASSWORD=your-password opencode serve
```
---
### 仕組み
`opencode` を実行すると、TUI とサーバーが起動します。 TUI の場所
サーバーと通信するクライアント。サーバーは OpenAPI 3.1 仕様を公開します
終点。このエンドポイントは、[SDK](/docs/sdk).
:::ヒント
opencode サーバーを使用して、プログラムで opencode と対話します。
:::
このアーキテクチャにより、オープンコードで複数のクライアントをサポートできるようになり、プログラムでオープンコードと対話できるようになります。
`opencode serve` を実行してスタンドアロン サーバーを起動できます。持っている場合は、
opencode TUI を実行すると、`opencode serve` が新しいサーバーを起動します。
---
#### 既存のサーバーに接続する
TUI を起動すると、ポートとホスト名がランダムに割り当てられます。代わりに、`--hostname` と `--port` [flags](/docs/cli).次に、これを使用してサーバーに接続します。
[`/tui`](#tui) エンドポイントは、サーバー経由で TUI を駆動するために使用できます。たとえば、プロンプトを事前入力したり、実行したりできます。この設定は、OpenCode [IDE](/docs/ide) プラグイン] によって使用されます。
---
## スペック
サーバーは、次の場所で閲覧できる OpenAPI 3.1 仕様を公開しています。
```
http://<hostname>:<port>/doc
```
たとえば、`http://localhost:4096/doc`。この仕様を使用して、クライアントを生成したり、要求と応答のタイプを検査したりできます。または、Swagger エクスプローラーで表示します。
---
## API
opencode サーバーは次の API を公開します。
---
### グローバル
|方法 |パス |説明 |応答 |
| ------ | ---------------- | ------------------------------ | ------------------------------------ |
| `GET` | `/global/health` |サーバーの健全性とバージョンを取得する |うーん
| `GET` | `/global/event` |グローバル イベントの取得 (SSE ストリーム) |イベントストリーム |
---
### プロジェクト
|方法 |パス |説明 |応答 |
| ------ | ------------------ | ----------------------- | --------------------------------------------- |
| `GET` | `/project` |すべてのプロジェクトをリストする | <a href={typesUrl}><code>プロジェクト[]</code></a> |
| `GET` | `/project/current` |現在のプロジェクトを取得 | <a href={typesUrl}><code>プロジェクト</code></a> |
---
### パスと VCS
|方法 |パス |説明 |応答 |
| ------ | ------- | ------------------------------------ | ------------------------------------------- |
| `GET` | `/path` |現在のパスを取得する | <a href={typesUrl}><code>パス</code></a> |
| `GET` | `/vcs` |現在のプロジェクトの VCS 情報を取得する | <a href={typesUrl}><code>VcsInfo</code></a> |
---
### 実例
|方法 |パス |説明 |応答 |
| ------ | ------------------- | ---------------------------- | --------- |
| `POST` | `/instance/dispose` |現在のインスタンスを破棄する |うーん
---
### 構成
|方法 |パス |説明 |応答 |
| ------- | ------------------- | --------------------------------- | ---------------------------------------------------------------------------------------- |
| `GET` | `/config` |構成情報を取得する | <a href={typesUrl}><code>構成</code></a> |
| `PATCH` | `/config` |構成を更新する | <a href={typesUrl}><code>構成</code></a> |
| `GET` | `/config/providers` |プロバイダーとデフォルトのモデルをリストする | `{ providers: `<a href={typesUrl}>プロバイダ[]</a>`, default: { [key: string]: string } }` |
---
### プロバイダー
|方法 |パス |説明 |応答 |
| ------ | -------------------------------- | ------------------------------------ | ----------------------------------------------------------------------------------- |
| `GET` | `/provider` |すべてのプロバイダーをリストする | `{ all: `<a href={typesUrl}>プロバイダ[]</a>`, default: {...}, connected: string[] }` |
| `GET` | `/provider/auth` |プロバイダーの認証方法を取得する | `{ [providerID: string]: `<a href={typesUrl}>ProviderAuthMethod[]</a>` }` |
| `POST` | `/provider/{id}/oauth/authorize` | OAuth を使用してプロバイダーを認証する | <a href={typesUrl}><code>ProviderAuthAuthorization</code></a> |
| `POST` | `/provider/{id}/oauth/callback` |プロバイダーの OAuth コールバックを処理する |うーん
---
### セッション
|方法 |パス |説明 |メモ |
| -------- | ---------------------------------------- | ------------------------------------- | ---------------------------------------------------------------------------------- |
| `GET` | `/session` |すべてのセッションをリストする |戻り値 <a href={typesUrl}><code>セッション[]</code></a> |
| `POST` | `/session` |新しいセッションを作成する |本文: `{ parentID?, title? }`、<a href={typesUrl}><code>セッション</code></a> を返します。
| `GET` | `/session/status` |すべてのセッションのセッション ステータスを取得する |戻り値 `{ [sessionID: string]: `<a href={typesUrl}>SessionStatus</a>` }` |
| `GET` | `/session/:id` |セッションの詳細を取得する |戻り値 <a href={typesUrl}><code>セッション</code></a> |
| `DELETE` | `/session/:id` |セッションとそのすべてのデータを削除する |戻り値 `boolean` |
| `PATCH` | `/session/:id` |セッションのプロパティを更新する |本文: `{ title? }`、<a href={typesUrl}><code>セッション</code></a> を返します。
| `GET` | `/session/:id/children` |セッションの子セッションを取得する |戻り値 <a href={typesUrl}><code>セッション[]</code></a> |
| `GET` | `/session/:id/todo` |セッションの ToDo リストを取得する |戻り値 <a href={typesUrl}><code>Todo[]</code></a> |
| `POST` | `/session/:id/init` |アプリを分析して `AGENTS.md` を作成する |本文: `{ messageID, providerID, modelID }`、`boolean` を返します。
| `POST` | `/session/:id/fork` |メッセージで既存のセッションをフォークする |本文: `{ messageID? }`、<a href={typesUrl}><code>セッション</code></a> を返します。
| `POST` | `/session/:id/abort` |実行中のセッションを中止する |戻り値 `boolean` |
| `POST` | `/session/:id/share` |セッションを共有する |戻り値 <a href={typesUrl}><code>セッション</code></a> |
| `DELETE` | `/session/:id/share` |セッションの共有を解除する |戻り値 <a href={typesUrl}><code>セッション</code></a> |
| `GET` | `/session/:id/diff` |このセッションの差分を取得する |クエリ: `messageID?`、<a href={typesUrl}><code>FileDiff[]</code></a> を返します。
| `POST` | `/session/:id/summarize` |セッションを要約する |本文: `{ providerID, modelID }`、`boolean` を返します。
| `POST` | `/session/:id/revert` |メッセージを元に戻す |本文: `{ messageID, partID? }`、`boolean` を返します。
| `POST` | `/session/:id/unrevert` |元に戻したすべてのメッセージを復元する |戻り値 `boolean` |
| `POST` | `/session/:id/permissions/:permissionID` |許可リクエストに応答する |本文: `{ response, remember? }`、`boolean` を返します。
---
### メッセージ
|方法 |パス |説明 |メモ |
| ------ | --------------------------------- | --------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `GET` | `/session/:id/message` |セッション内のメッセージをリストする |クエリ: `limit?`、`{ info: `<a href={typesUrl}>メッセージ</a>を返します。`, parts: `<a href={typesUrl}>Part[]</a>`}[]` |
| `POST` | `/session/:id/message` |メッセージを送信して応答を待ちます |本文: `{ messageID?, model?, agent?, noReply?, system?, tools?, parts }`、`{ info: `<a href={typesUrl}>メッセージ</a>を返します`, parts: `<a href={typesUrl}>Part[]</a>`}` |
| `GET` | `/session/:id/message/:messageID` |メッセージの詳細を取得する |戻り値 `{ info: `<a href={typesUrl}>メッセージ</a>`, parts: `<a href={typesUrl}>Part[]</a>`}` |
| `POST` | `/session/:id/prompt_async` |メッセージを非同期に送信する (待機なし) | body: `/session/:id/message` と同じ、`204 No Content` を返します。
| `POST` | `/session/:id/command` |スラッシュコマンドを実行します |本文: `{ messageID?, agent?, model?, command, arguments }`、`{ info: `<a href={typesUrl}>メッセージ</a>を返します`, parts: `<a href={typesUrl}>Part[]</a>`}` |
| `POST` | `/session/:id/shell` |シェルコマンドを実行する |本文: `{ agent, model?, command }`、`{ info: `<a href={typesUrl}>メッセージ</a>を返します`, parts: `<a href={typesUrl}>Part[]</a>`}` |
---
### コマンド
|方法 |パス |説明 |応答 |
| ------ | ---------- | ----------------- | --------------------------------------------- |
| `GET` | `/command` |すべてのコマンドをリストする | <a href={typesUrl}><code>コマンド[]</code></a> |
---
### ファイル
|方法 |パス |説明 |応答 |
| ------ | ------------------------ | ---------------------------------- | ------------------------------------------------------------------------------------------- |
| `GET` | `/find?pattern=<pat>` |ファイル内のテキストを検索 | `path`、`lines`、`line_number`、`absolute_offset`、`submatches` と一致するオブジェクトの配列 |
| `GET` | `/find/file?query=<q>` |ファイルとディレクトリを名前で検索する | `string[]` (パス) |
| `GET` | `/find/symbol?query=<q>` |ワークスペースのシンボルを検索する | <a href={typesUrl}><code>シンボル[]</code></a> |
| `GET` | `/file?path=<path>` |ファイルとディレクトリをリストする | <a href={typesUrl}><code>FileNode[]</code></a> |
| `GET` | `/file/content?path=<p>` |ファイルを読む | <a href={typesUrl}><code>ファイルコンテンツ</code></a> |
| `GET` | `/file/status` |追跡されたファイルのステータスを取得する | <a href={typesUrl}><code>ファイル[]</code></a> |
#### `/find/file` クエリパラメータ
- `query` (必須) — 検索文字列 (あいまい一致)
- `type` (オプション) — 結果を `"file"` または `"directory"` に制限します
- `directory` (オプション) — 検索用のプロジェクト ルートをオーバーライドします。
- `limit` (オプション) — 最大結果 (1 200)
- `dirs` (オプション) — 従来のフラグ (`"false"` はファイルのみを返します)
---
### ツール (実験的)
|方法 |パス |説明 |応答 |
| ------ | ------------------------------------------- | ---------------------------------------- | -------------------------------------------- |
| `GET` | `/experimental/tool/ids` |すべてのツール ID をリストする | <a href={typesUrl}><code>ツール ID</code></a> |
| `GET` | `/experimental/tool?provider=<p>&model=<m>` |モデルの JSON スキーマを含むツールをリストする | <a href={typesUrl}><code>ツールリスト</code></a> |
---
### LSP、フォーマッタ、MCP
|方法 |パス |説明 |応答 |
| ------ | ------------ | -------------------------- | -------------------------------------------------------- |
| `GET` | `/lsp` | LSP サーバーのステータスを取得 | <a href={typesUrl}><code>LSPStatus[]</code></a> |
| `GET` | `/formatter` |フォーマッタのステータスを取得する | <a href={typesUrl}><code>FormatterStatus[]</code></a> |
| `GET` | `/mcp` | MCP サーバーのステータスを取得する | `{ [name: string]: `<a href={typesUrl}>MCPStatus</a>` }` |
| `POST` | `/mcp` | MCP サーバーを動的に追加する |本文: `{ name, config }`、MCP ステータス オブジェクトを返します。
---
### エージェント
|方法 |パス |説明 |応答 |
| ------ | -------- | ------------------------- | ------------------------------------------- |
| `GET` | `/agent` |利用可能なすべてのエージェントをリストする | <a href={typesUrl}><code>エージェント[]</code></a> |
---
### ロギング
|方法 |パス |説明 |応答 |
| ------ | ------ | ------------------------------------------------------------ | --------- |
| `POST` | `/log` |ログエントリを書き込みます。本体:`{ service, level, message, extra? }` |うーん
---
### トゥイ
|方法 |パス |説明 |応答 |
| ------ | ----------------------- | ------------------------------------------- | ---------------------- |
| `POST` | `/tui/append-prompt` |プロンプトにテキストを追加します |うーん
| `POST` | `/tui/open-help` |ヘルプダイアログを開く |うーん
| `POST` | `/tui/open-sessions` |セッションセレクターを開く |うーん
| `POST` | `/tui/open-themes` |テーマセレクターを開く |うーん
| `POST` | `/tui/open-models` |モデルセレクターを開く |うーん
| `POST` | `/tui/submit-prompt` |現在のプロンプトを送信します |うーん
| `POST` | `/tui/clear-prompt` |プロンプトをクリア |うーん
| `POST` | `/tui/execute-command` |コマンドを実行する (`{ command }`) |うーん
| `POST` | `/tui/show-toast` |トーストを表示 (`{ title?, message, variant }`) |うーん
| `GET` | `/tui/control/next` |次の制御リクエストを待ちます |コントロールリクエストオブジェクト |
| `POST` | `/tui/control/response` |制御リクエストに応答する (`{ body }`) |うーん
---
### 認証
|方法 |パス |説明 |応答 |
| ------ | ----------- | --------------------------------------------------------------- | --------- |
| `PUT` | `/auth/:id` |認証資格情報を設定します。本文はプロバイダーのスキーマと一致する必要があります |うーん
---
### イベント
|方法 |パス |説明 |応答 |
| ------ | -------- | ----------------------------------------------------------------------------- | ------------------------- |
| `GET` | `/event` |サーバーから送信されたイベント ストリーム。最初のイベントは `server.connected` で、次にバス イベントです。サーバー送信イベント ストリーム |
---
### ドキュメント
|方法 |パス |説明 |応答 |
| ------ | ------ | ------------------------- | --------------------------- |
| `GET` | `/doc` | OpenAPI 3.1 仕様 | OpenAPI 仕様を備えた HTML ページ |

View File

@@ -0,0 +1,128 @@
---
title: 共有
description: OpenCode での会話を共有します。
---
OpenCode の共有機能を使用すると、OpenCode の会話への公開リンクを作成できるため、チームメイトと共同作業したり、他の人から助けを得ることができます。
:::注記
共有された会話は、リンクを知っている人なら誰でも公開してアクセスできます。
:::
---
## 仕組み
会話を共有するとき、OpenCode は次のことを行います。
1. セッション用の一意のパブリック URL を作成します
2. 会話履歴をサーバーに同期します
3. 共有可能なリンク — `opncd.ai/s/<share-id>` を介して会話にアクセスできるようにします
---
## 共有
OpenCode は、会話の共有方法を制御する 3 つの共有モードをサポートしています。
---
### 手動(デフォルト)
デフォルトでは、OpenCode は手動共有モードを使用します。セッションは自動的には共有されませんが、`/share` コマンドを使用して手動で共有できます。
```
/share
```
これにより、クリップボードにコピーされる一意の URL が生成されます。
[config file](/docs/config):] で手動モードを明示的に設定するには:
```json title="opencode.json"
{
"$schema": "https://opncd.ai/config.json",
"share": "manual"
}
```
---
### 自動共有
[config file](/docs/config):] で `share` オプションを `"auto"` に設定することで、すべての新しい会話の自動共有を有効にできます。
```json title="opencode.json"
{
"$schema": "https://opncd.ai/config.json",
"share": "auto"
}
```
自動共有を有効にすると、すべての新しい会話が自動的に共有され、リンクが生成されます。
---
### 無効
[config file](/docs/config):] で `share` オプションを `"disabled"` に設定することで、共有を完全に無効にすることができます。
```json title="opencode.json"
{
"$schema": "https://opncd.ai/config.json",
"share": "disabled"
}
```
これを特定のプロジェクトのチーム全体に強制するには、それをプロジェクトの `opencode.json` に追加し、Git にチェックインします。
---
## 共有を解除する
会話の共有を停止し、パブリック アクセスから削除するには:
```
/unshare
```
これにより、共有リンクが削除され、会話に関連するデータが削除されます。
---
## プライバシー
会話を共有する際には、留意すべき点がいくつかあります。
---
### データの保持
共有された会話は、明示的に共有を解除するまでアクセス可能なままになります。これ
以下が含まれます:
- 完全な会話履歴
- すべてのメッセージと応答
- セッションメタデータ
---
### 推奨事項
- 機密情報を含まない会話のみを共有してください。
- 共有する前に会話の内容を確認してください。
- コラボレーションが完了したら、会話の共有を解除します。
- 独自のコードや機密データを含む会話を共有することは避けてください。
- 機密性の高いプロジェクトの場合は、共有を完全に無効にします。
---
## 企業向け
エンタープライズ展開の場合、共有機能は次のようになります。
- **セキュリティコンプライアンスのため完全に無効**
- **SSO を通じて認証されたユーザーのみに制限**
- 独自のインフラストラクチャで **セルフホスト**
[組織内でのオープンコードの使用について詳しくは、](/docs/enterprise) をご覧ください。

View File

@@ -0,0 +1,222 @@
---
title: 「エージェントスキル」
description: 「SKILL.md定義による再利用可能な動作の定義」
---
エージェント スキルにより、OpenCode はリポジトリまたはホーム ディレクトリから再利用可能な命令を検出できます。
スキルはネイティブの `skill` ツールを介してオンデマンドでロードされます。エージェントは利用可能なスキルを確認し、必要に応じて完全なコンテンツをロードできます。
---
## ファイルを配置する
スキル名ごとにフォルダーを 1 つ作成し、その中に `SKILL.md` を置きます。
OpenCode は次の場所を検索します。
- プロジェクト構成: `.opencode/skills/<name>/SKILL.md`
- グローバル構成: `~/.config/opencode/skills/<name>/SKILL.md`
- Project Claude互換: `.claude/skills/<name>/SKILL.md`
- グローバルクロード互換: `~/.claude/skills/<name>/SKILL.md`
- プロジェクトエージェント互換: `.agents/skills/<name>/SKILL.md`
- グローバルエージェント互換: `~/.agents/skills/<name>/SKILL.md`
---
## 発見を理解する
プロジェクトのローカル パスの場合、OpenCode は現在の作業ディレクトリから git ワークツリーに到達するまで進みます。
途中で、一致する `skills/*/SKILL.md` を `.opencode/` に読み込み、一致する `.claude/skills/*/SKILL.md` または `.agents/skills/*/SKILL.md` を読み込みます。
グローバル定義は、`~/.config/opencode/skills/*/SKILL.md`、`~/.claude/skills/*/SKILL.md`、および `~/.agents/skills/*/SKILL.md` からもロードされます。
---
## 前付を書く
各 `SKILL.md` は YAML フロントマターで始まる必要があります。
次のフィールドのみが認識されます。
- `name` (必須)
- `name` (必須)
- `license` (オプション)
- `license` (オプション)
- `metadata` (オプション、文字列間のマップ)
不明なフロントマターフィールドは無視されます。
---
## 名前を検証する
`name` は次のことを行う必要があります。
- 1 64 文字であること
- 単一のハイフンで区切られた小文字の英数字であること
- `-` で開始または終了しない
- 連続した `--` を含まない
- `SKILL.md` を含むディレクトリ名と一致する
同等の正規表現:
```text
^[a-z0-9]+(-[a-z0-9]+)*$
```
---
## 長さのルールに従ってください
`description` は 1 1024 文字である必要があります。
エージェントが正しく選択できるように、十分具体的な内容にしてください。
---
## 例を使用する
次のように `.opencode/skills/git-release/SKILL.md` を作成します。
```markdown
---
name: git-release
description: Create consistent releases and changelogs
license: MIT
compatibility: opencode
metadata:
audience: maintainers
workflow: github
---
## What I do
- Draft release notes from merged PRs
- Propose a version bump
- Provide a copy-pasteable `gh release create` command
## When to use me
Use this when you are preparing a tagged release.
Ask clarifying questions if the target versioning scheme is unclear.
```
---
## ツールの説明を認識する
OpenCode では、`skill` ツールの説明に利用可能なスキルがリストされています。
各エントリにはスキル名と説明が含まれます。
```xml
<available_skills>
<skill>
<name>git-release</name>
<description>Create consistent releases and changelogs</description>
</skill>
</available_skills>
```
エージェントはツールを呼び出してスキルをロードします。
```
skill({ name: "git-release" })
```
---
## 権限の構成
`opencode.json` のパターンベースの権限を使用して、エージェントがアクセスできるスキルを制御します。
```json
{
"permission": {
"skill": {
"*": "allow",
"pr-review": "allow",
"internal-*": "deny",
"experimental-*": "ask"
}
}
}
```
|許可 |行動 |
| ---------- | ----------------------------------------- |
| `allow` |スキルはすぐにロードされます |
| `deny` |スキルはエージェントから隠蔽され、アクセスは拒否されました |
| `ask` |ロードする前にユーザーに承認を求めるメッセージが表示される |
パターンはワイルドカードをサポートしています: `internal-*` は `internal-docs`、`internal-tools` などに一致します。
---
## エージェントごとに上書きする
特定のエージェントにグローバルのデフォルトとは異なる権限を与えます。
**カスタム エージェントの場合** (エージェント フロントマター内):
```yaml
---
permission:
skill:
"documents-*": "allow"
---
```
**組み込みエージェントの場合** (`opencode.json` 内):
```json
{
"agent": {
"plan": {
"permission": {
"skill": {
"internal-*": "allow"
}
}
}
}
}
```
---
## スキルツールを無効にする
スキルを使用すべきではないエージェントのスキルを完全に無効にします。
**カスタム エージェントの場合**:
```yaml
---
tools:
skill: false
---
```
**組み込みエージェントの場合**:
```json
{
"agent": {
"plan": {
"tools": {
"skill": false
}
}
}
}
```
無効にすると、`<available_skills>` セクションが完全に省略されます。
---
## 読み込みのトラブルシューティング
スキルが表示されない場合:
1. `SKILL.md` のスペルがすべて大文字であることを確認してください
2. フロントマターに `name` と `description` が含まれていることを確認します
3. スキル名がすべての場所で一意であることを確認する
4. 権限を確認してください - `deny` のスキルはエージェントから非表示になります

View File

@@ -0,0 +1,369 @@
---
title: テーマ
description: 組み込みのテーマを選択するか、独自のテーマを定義します。
---
OpenCode を使用すると、いくつかの組み込みテーマから 1 つを選択したり、端末のテーマに適合するテーマを使用したり、独自のカスタム テーマを定義したりできます。
デフォルトでは、OpenCode は独自の `opencode` テーマを使用します。
---
## 端末要件
テーマをフルカラー パレットで正しく表示するには、端末が **truecolor** (24 ビット カラー) をサポートしている必要があります。最新の端末のほとんどはデフォルトでこれをサポートしていますが、有効にする必要がある場合があります。
- **サポートを確認してください**: `echo $COLORTERM` を実行します - `truecolor` または `24bit` が出力されるはずです
- **トゥルーカラーを有効にする**: シェル プロファイルで環境変数 `COLORTERM=truecolor` を設定します。
- **ターミナルの互換性**: ターミナル エミュレータが 24 ビット カラーをサポートしていることを確認してください (iTerm2、Alacritty、Kitty、Windows ターミナル、および GNOME ターミナルの最新バージョンなどのほとんどの最新のターミナルはサポートしています)。
トゥルーカラーのサポートがないと、テーマの色の精度が低下したり、最も近い 256 色の近似値に戻ったりする可能性があります。
---
## 組み込みのテーマ
OpenCode にはいくつかの組み込みテーマが付属しています。
|名前 |説明 |
| ---------------------- | ---------------------------------------------------------------------------- |
| `system` |端末の背景色に適応します |
| `tokyonight` | 【Tokyonight](https://github.com/folke/tokyonight.nvim)テーマ |
| `everforest` | [Everforest](https://github.com/sainnhe/everforest) テーマ |
| `ayu` | [Ayu](https://github.com/ayu-theme) ダークテーマ | ベース]
| `catppuccin` | [Catppuccin](https://github.com/catppuccin) テーマ |
| `catppuccin-macchiato` | [Catppuccin](https://github.com/catppuccin) テーマ |
| `gruvbox` | [Gruvbox](https://github.com/morhetz/gruvbox) テーマ |
| `kanagawa` | 【神奈川](https://github.com/rebelot/kanagawa.nvim)テーマ |
| `nord` | [Nord](https://github.com/nordtheme/nord) テーマ |
| `matrix` |ハッカースタイルの黒地に緑のテーマ |
| `one-dark` | [Atom One](https://github.com/Th3Whit3Wolf/one-nvim) Dark テーマ | Atom One](https://github.com/Th3Whit3Wolf/one-nvim) Dark テーマ |
さらに、新しいテーマも常に追加されています。
---
## システムテーマ
`system` テーマは、端末のカラースキームに自動的に適応するように設計されています。固定色を使用する従来のテーマとは異なり、_system_ テーマは次のようになります。
- **グレー スケールを生成**: 端末の背景色に基づいてカスタム グレー スケールを作成し、最適なコントラストを確保します。
- **ANSI カラーを使用**: 構文の強調表示と UI 要素に標準の ANSI カラー (0 15) を利用し、端末のカラー パレットを尊重します。
- **端末のデフォルトを維持**: テキストと背景の色に `none` を使用して、端末のネイティブの外観を維持します。
システム テーマは、次のようなユーザーを対象としています。
- OpenCode を端末の外観と一致させたい
- カスタム端末のカラースキームを使用する
- すべての端末アプリケーションにわたって一貫した外観を好む
---
## テーマの使用
テーマを選択するには、`/theme` コマンドでテーマ選択を表示します。または、[config](/docs/config).
```json title="opencode.json" {3}
{
"$schema": "https://opencode.ai/config.json",
"theme": "tokyonight"
}
```
---
## カスタムテーマ
OpenCode は、ユーザーがテーマを簡単に作成およびカスタマイズできる柔軟な JSON ベースのテーマ システムをサポートしています。
---
### 階層
テーマは複数のディレクトリから次の順序でロードされ、後のディレクトリが前のディレクトリをオーバーライドします。
1. **組み込みテーマ** - これらはバイナリに埋め込まれています
2. **ユーザー設定ディレクトリ** - `~/.config/opencode/themes/*.json` または `$XDG_CONFIG_HOME/opencode/themes/*.json` で定義されます
3. **プロジェクトのルート ディレクトリ** - `<project-root>/.opencode/themes/*.json` で定義されます。
4. **現在の作業ディレクトリ** - `./.opencode/themes/*.json` で定義
複数のディレクトリに同じ名前のテーマが含まれている場合は、優先度の高いディレクトリのテーマが使用されます。
---
### テーマの作成
カスタム テーマを作成するには、テーマ ディレクトリの 1 つに JSON ファイルを作成します。
ユーザー全体のテーマの場合:
```bash no-frame
mkdir -p ~/.config/opencode/themes
vim ~/.config/opencode/themes/my-theme.json
```
そしてプロジェクト固有のテーマについても。
```bash no-frame
mkdir -p .opencode/themes
vim .opencode/themes/my-theme.json
```
---
### JSON形式
テーマは、以下をサポートする柔軟な JSON 形式を使用します。
- **16 進数の色**: `"#ffffff"`
- **ANSI カラー**: `3` (0-255)
- **色の参照**: `"primary"` またはカスタム定義
- **ダーク/ライトのバリエーション**: `{"dark": "#000", "light": "#fff"}`
- **色なし**: `"none"` - 端末のデフォルトの色または透明を使用します。
---
### 色の定義
`defs` セクションはオプションであり、テーマ内で参照できる再利用可能な色を定義できます。
---
### 端末のデフォルト
特別な値 `"none"` を任意の色に使用して、端末のデフォルトの色を継承できます。これは、端末の配色とシームレスに融合するテーマを作成する場合に特に便利です。
- `"text": "none"` - 端末のデフォルトの前景色を使用します
- `"background": "none"` - 端末のデフォルトの背景色を使用します
---
### 例
カスタム テーマの例を次に示します。
```json title="my-theme.json"
{
"$schema": "https://opencode.ai/theme.json",
"defs": {
"nord0": "#2E3440",
"nord1": "#3B4252",
"nord2": "#434C5E",
"nord3": "#4C566A",
"nord4": "#D8DEE9",
"nord5": "#E5E9F0",
"nord6": "#ECEFF4",
"nord7": "#8FBCBB",
"nord8": "#88C0D0",
"nord9": "#81A1C1",
"nord10": "#5E81AC",
"nord11": "#BF616A",
"nord12": "#D08770",
"nord13": "#EBCB8B",
"nord14": "#A3BE8C",
"nord15": "#B48EAD"
},
"theme": {
"primary": {
"dark": "nord8",
"light": "nord10"
},
"secondary": {
"dark": "nord9",
"light": "nord9"
},
"accent": {
"dark": "nord7",
"light": "nord7"
},
"error": {
"dark": "nord11",
"light": "nord11"
},
"warning": {
"dark": "nord12",
"light": "nord12"
},
"success": {
"dark": "nord14",
"light": "nord14"
},
"info": {
"dark": "nord8",
"light": "nord10"
},
"text": {
"dark": "nord4",
"light": "nord0"
},
"textMuted": {
"dark": "nord3",
"light": "nord1"
},
"background": {
"dark": "nord0",
"light": "nord6"
},
"backgroundPanel": {
"dark": "nord1",
"light": "nord5"
},
"backgroundElement": {
"dark": "nord1",
"light": "nord4"
},
"border": {
"dark": "nord2",
"light": "nord3"
},
"borderActive": {
"dark": "nord3",
"light": "nord2"
},
"borderSubtle": {
"dark": "nord2",
"light": "nord3"
},
"diffAdded": {
"dark": "nord14",
"light": "nord14"
},
"diffRemoved": {
"dark": "nord11",
"light": "nord11"
},
"diffContext": {
"dark": "nord3",
"light": "nord3"
},
"diffHunkHeader": {
"dark": "nord3",
"light": "nord3"
},
"diffHighlightAdded": {
"dark": "nord14",
"light": "nord14"
},
"diffHighlightRemoved": {
"dark": "nord11",
"light": "nord11"
},
"diffAddedBg": {
"dark": "#3B4252",
"light": "#E5E9F0"
},
"diffRemovedBg": {
"dark": "#3B4252",
"light": "#E5E9F0"
},
"diffContextBg": {
"dark": "nord1",
"light": "nord5"
},
"diffLineNumber": {
"dark": "nord2",
"light": "nord4"
},
"diffAddedLineNumberBg": {
"dark": "#3B4252",
"light": "#E5E9F0"
},
"diffRemovedLineNumberBg": {
"dark": "#3B4252",
"light": "#E5E9F0"
},
"markdownText": {
"dark": "nord4",
"light": "nord0"
},
"markdownHeading": {
"dark": "nord8",
"light": "nord10"
},
"markdownLink": {
"dark": "nord9",
"light": "nord9"
},
"markdownLinkText": {
"dark": "nord7",
"light": "nord7"
},
"markdownCode": {
"dark": "nord14",
"light": "nord14"
},
"markdownBlockQuote": {
"dark": "nord3",
"light": "nord3"
},
"markdownEmph": {
"dark": "nord12",
"light": "nord12"
},
"markdownStrong": {
"dark": "nord13",
"light": "nord13"
},
"markdownHorizontalRule": {
"dark": "nord3",
"light": "nord3"
},
"markdownListItem": {
"dark": "nord8",
"light": "nord10"
},
"markdownListEnumeration": {
"dark": "nord7",
"light": "nord7"
},
"markdownImage": {
"dark": "nord9",
"light": "nord9"
},
"markdownImageText": {
"dark": "nord7",
"light": "nord7"
},
"markdownCodeBlock": {
"dark": "nord4",
"light": "nord0"
},
"syntaxComment": {
"dark": "nord3",
"light": "nord3"
},
"syntaxKeyword": {
"dark": "nord9",
"light": "nord9"
},
"syntaxFunction": {
"dark": "nord8",
"light": "nord8"
},
"syntaxVariable": {
"dark": "nord7",
"light": "nord7"
},
"syntaxString": {
"dark": "nord14",
"light": "nord14"
},
"syntaxNumber": {
"dark": "nord15",
"light": "nord15"
},
"syntaxType": {
"dark": "nord7",
"light": "nord7"
},
"syntaxOperator": {
"dark": "nord9",
"light": "nord9"
},
"syntaxPunctuation": {
"dark": "nord4",
"light": "nord0"
}
}
}
```

View File

@@ -0,0 +1,379 @@
---
title: ツール
description: LLM が使用できるツールを管理します。
---
ツールを使用すると、LLM がコードベースでアクションを実行できるようになります。 OpenCode には一連の組み込みツールが付属していますが、[カスタム ツール](/docs/custom-tools) または [MCP サーバー](/docs/mcp-servers).
デフォルトでは、すべてのツールは**有効**になっており、実行するための権限は必要ありません。 [permissions](/docs/permissions).
---
## 設定する
`permission` フィールドを使用してツールの動作を制御します。各ツールを許可、拒否、または承認を要求することができます。
```json title="opencode.json"
{
"$schema": "https://opencode.ai/config.json",
"permission": {
"edit": "deny",
"bash": "ask",
"webfetch": "allow"
}
}
```
ワイルドカードを使用して複数のツールを一度に制御することもできます。たとえば、MCP サーバーからのすべてのツールの承認を要求するには、次のようにします。
```json title="opencode.json"
{
"$schema": "https://opencode.ai/config.json",
"permission": {
"mymcp_*": "ask"
}
}
```
[アクセス許可の構成について詳しくは、](/docs/permissions) をご覧ください。
---
## 内蔵
OpenCode で利用可能なすべての組み込みツールを次に示します。
---
### バッシュ
プロジェクト環境でシェル コマンドを実行します。
```json title="opencode.json" {4}
{
"$schema": "https://opencode.ai/config.json",
"permission": {
"bash": "allow"
}
}
```
このツールを使用すると、LLM は `npm install`、`git status`、またはその他のシェル コマンドなどの端末コマンドを実行できます。
---
### 編集
正確な文字列置換を使用して既存のファイルを変更します。
```json title="opencode.json" {4}
{
"$schema": "https://opencode.ai/config.json",
"permission": {
"edit": "allow"
}
}
```
このツールは、完全に一致するテキストを置き換えることにより、ファイルを正確に編集します。これは、LLM がコードを変更する主な方法です。
---
### 書く
新しいファイルを作成するか、既存のファイルを上書きします。
```json title="opencode.json" {4}
{
"$schema": "https://opencode.ai/config.json",
"permission": {
"edit": "allow"
}
}
```
これを使用して、LLM が新しいファイルを作成できるようにします。既存のファイルがすでに存在する場合は上書きされます。
:::注記
`write` ツールは、すべてのファイル変更 (`edit`、`write`、`patch`、`multiedit`) をカバーする `edit` 権限によって制御されます。
:::
---
### 読む
コードベースからファイルの内容を読み取ります。
```json title="opencode.json" {4}
{
"$schema": "https://opencode.ai/config.json",
"permission": {
"read": "allow"
}
}
```
このツールはファイルを読み取り、その内容を返します。大きなファイルの特定の行範囲の読み取りをサポートします。
---
### grep
正規表現を使用してファイルの内容を検索します。
```json title="opencode.json" {4}
{
"$schema": "https://opencode.ai/config.json",
"permission": {
"grep": "allow"
}
}
```
コードベース全体での高速コンテンツ検索。完全な正規表現構文とファイル パターン フィルタリングをサポートします。
---
### グロブ
パターンマッチングによりファイルを検索します。
```json title="opencode.json" {4}
{
"$schema": "https://opencode.ai/config.json",
"permission": {
"glob": "allow"
}
}
```
`**/*.js` や `src/**/*.ts` などの glob パターンを使用してファイルを検索します。一致するファイル パスを変更時間順に並べて返します。
---
### リスト
指定されたパス内のファイルとディレクトリを一覧表示します。
```json title="opencode.json" {4}
{
"$schema": "https://opencode.ai/config.json",
"permission": {
"list": "allow"
}
}
```
このツールはディレクトリの内容を一覧表示します。結果をフィルタリングするための glob パターンを受け入れます。
---
### lsp (実験的)
構成された LSP サーバーと対話して、定義、参照、ホバー情報、呼び出し階層などのコード インテリジェンス機能を取得します。
:::注記
このツールは、`OPENCODE_EXPERIMENTAL_LSP_TOOL=true` (または `OPENCODE_EXPERIMENTAL=true`) の場合にのみ使用できます。
:::
```json title="opencode.json" {4}
{
"$schema": "https://opencode.ai/config.json",
"permission": {
"lsp": "allow"
}
}
```
サポートされている操作には、`goToDefinition`、`findReferences`、`hover`、`documentSymbol`、`workspaceSymbol`、`goToImplementation`、`prepareCallHierarchy`、`incomingCalls`、および `outgoingCalls` が含まれます。
プロジェクトで使用できる LSP サーバーを構成するには、「LSP Servers](/docs/lsp).
---
### パッチ
ファイルにパッチを適用します。
```json title="opencode.json" {4}
{
"$schema": "https://opencode.ai/config.json",
"permission": {
"edit": "allow"
}
}
```
このツールは、コードベースにパッチ ファイルを適用します。さまざまなソースからの差分やパッチを適用するのに役立ちます。
:::注記
`write` ツールは、すべてのファイル変更 (`edit`、`write`、`patch`、`multiedit`) をカバーする `edit` 権限によって制御されます。
:::
---
### スキル
[skill](/docs/skills) (`SKILL.md` ファイル) をロードし、会話でその内容を返します。
```json title="opencode.json" {4}
{
"$schema": "https://opencode.ai/config.json",
"permission": {
"skill": "allow"
}
}
```
---
### todowrite
コーディング セッション中に ToDo リストを管理します。
```json title="opencode.json" {4}
{
"$schema": "https://opencode.ai/config.json",
"permission": {
"todowrite": "allow"
}
}
```
タスク リストを作成および更新して、複雑な操作中の進行状況を追跡します。 LLM はこれを使用して、複数ステップのタスクを整理します。
:::注記
このツールはデフォルトではサブエージェントに対して無効になっていますが、手動で有効にすることができます。 [詳細はこちら](/docs/agents/#permissions)
:::
---
### トドリード
既存の ToDo リストを読み取ります。
```json title="opencode.json" {4}
{
"$schema": "https://opencode.ai/config.json",
"permission": {
"todoread": "allow"
}
}
```
現在の Todo リストの状態を読み取ります。どのタスクが保留中または完了しているかを追跡するために LLM によって使用されます。
:::注記
このツールはデフォルトではサブエージェントに対して無効になっていますが、手動で有効にすることができます。 [詳細はこちら](/docs/agents/#permissions)
:::
---
### ウェブフェッチ
Web コンテンツを取得します。
```json title="opencode.json" {4}
{
"$schema": "https://opencode.ai/config.json",
"permission": {
"webfetch": "allow"
}
}
```
LLM が Web ページをフェッチして読み取ることを許可します。ドキュメントの検索やオンライン リソースの調査に役立ちます。
---
### ウェブ検索
ウェブで情報を検索してください。
:::注記
このツールは、OpenCode プロバイダーを使用している場合、または `OPENCODE_ENABLE_EXA` 環境変数が真実の値 (`true` または `1` など) に設定されている場合にのみ使用できます。
OpenCode の起動時に有効にするには:
```bash
OPENCODE_ENABLE_EXA=1 opencode
```
:::
```json title="opencode.json" {4}
{
"$schema": "https://opencode.ai/config.json",
"permission": {
"websearch": "allow"
}
}
```
Exa AI を使用して Web 検索を実行し、オンラインで関連情報を見つけます。トピックの調査、最新のイベントの検索、またはトレーニング データのカットオフを超えた情報の収集に役立ちます。
API キーは必要ありません。ツールは認証なしで Exa AI のホストされた MCP サービスに直接接続します。
:::ヒント
情報を見つける必要がある場合 (検出)、`websearch` を使用し、特定の URL からコンテンツを取得する必要がある場合 (取得) は `webfetch` を使用します。
:::
---
### 質問
実行中にユーザーに質問します。
```json title="opencode.json" {4}
{
"$schema": "https://opencode.ai/config.json",
"permission": {
"question": "allow"
}
}
```
このツールを使用すると、LLM はタスク中にユーザーに質問できるようになります。これは次の場合に役立ちます。
- ユーザーの好みや要件を収集する
- 曖昧な指示を明確にする
- 実装の選択肢について決定を下す
- どの方向に進むべきかについての選択肢を提供する
各質問には、ヘッダー、質問テキスト、およびオプションのリストが含まれます。ユーザーは、提供されたオプションから選択するか、カスタムの回答を入力できます。複数の質問がある場合、ユーザーはすべての回答を送信する前に質問間を移動できます。
---
## カスタムツール
カスタム ツールを使用すると、LLM が呼び出すことができる独自の関数を定義できます。これらは構成ファイルで定義されており、任意のコードを実行できます。
[カスタム ツールの作成について詳しくは、](/docs/custom-tools) をご覧ください。
---
## MCPサーバー
MCP (Model Context Protocol) サーバーを使用すると、外部ツールとサービスを統合できます。これには、データベース アクセス、API 統合、サードパーティ サービスが含まれます。
[MCP サーバーの構成について詳しくは、](/docs/mcp-servers) をご覧ください。
---
## 内部構造
内部的には、`grep`、`glob`、`list` などのツールは内部で [ripgrep](https://github.com/BurntSushi/ripgrep) を使用します。デフォルトでは、ripgrep は `.gitignore` パターンを尊重します。つまり、`.gitignore` にリストされているファイルとディレクトリは検索とリストから除外されます。
---
### パターンを無視する
通常は無視されるファイルを含めるには、プロジェクトのルートに `.ignore` ファイルを作成します。このファイルでは、特定のパスを明示的に許可できます。
```text title=".ignore"
!node_modules/
!dist/
!build/
```
たとえば、この `.ignore` ファイルを使用すると、ripgrep は、`.gitignore` にリストされている場合でも、`node_modules/`、`dist/`、および `build/` ディレクトリ内を検索できます。

View File

@@ -0,0 +1,300 @@
---
title: トラブルシューティング
description: よくある問題とその解決方法。
---
OpenCode の問題をデバッグするには、まず、ディスク上に保存されているログとローカル データを確認します。
---
## ログ
ログ ファイルは次の場所に書き込まれます。
- **macOS/Linux**: `~/.local/share/opencode/log/`
- **Windows**: `WIN+R` を押して `%USERPROFILE%\.local\share\opencode\log` を貼り付けます
ログ ファイルにはタイムスタンプ付きの名前が付けられ (例: `2025-01-09T123456.log`)、最新の 10 個のログ ファイルが保存されます。
`--log-level` コマンドライン オプションを使用してログ レベルを設定すると、より詳細なデバッグ情報を取得できます。たとえば、`opencode --log-level DEBUG`。
---
## ストレージ
opencode は、セッション データとその他のアプリケーション データをディスク上の次の場所に保存します。
- **macOS/Linux**: `~/.local/share/opencode/log/`
- **Windows**: `WIN+R` を押して `%USERPROFILE%\.local\share\opencode\log` を貼り付けます
このディレクトリには次のものが含まれます。
- `auth.json` - API キー、OAuth トークンなどの認証データ
- `log/` - アプリケーションログ
- `project/` - セッション データやメッセージ データなどのプロジェクト固有のデータ
- プロジェクトが Git リポジトリ内にある場合は、`./<project-slug>/storage/` に保存されます
- Git リポジトリではない場合は、`./global/storage/` に保存されます
---
## デスクトップアプリ
OpenCode Desktop は、ローカル OpenCode サーバー (`opencode-cli` サイドカー) をバックグラウンドで実行します。ほとんどの問題は、誤動作するプラグイン、破損したキャッシュ、または不正なサーバー設定によって発生します。
### クイックチェック
- アプリを完全に終了して再起動します。
- アプリにエラー画面が表示された場合は、**再起動** をクリックしてエラーの詳細をコピーします。
- macOS のみ: `OpenCode` メニュー -> **Webview を再ロード** (UI が空白またはフリーズしている場合に役立ちます)。
---
### プラグインを無効にする
デスクトップ アプリが起動時にクラッシュしたり、ハングしたり、異常な動作をしたりする場合は、まずプラグインを無効にしてください。
#### グローバル設定を確認してください
グローバル設定ファイルを開き、`plugin` キーを探します。
- **macOS/Linux**: `~/.config/opencode/opencode.jsonc` (または `~/.config/opencode/opencode.json`)
- **macOS/Linux** (古いインストール): `~/.local/share/opencode/opencode.jsonc`
- **Windows**: `WIN+R` を押して `%USERPROFILE%\.local\share\opencode\log` を貼り付けます
プラグインを構成している場合は、キーを削除するか空の配列に設定して、プラグインを一時的に無効にします。
```jsonc
{
"$schema": "https://opencode.ai/config.json",
"plugin": [],
}
```
#### プラグインのディレクトリを確認する
OpenCode はディスクからローカル プラグインをロードすることもできます。これらを一時的に邪魔にならない場所に移動し (またはフォルダーの名前を変更し)、デスクトップ アプリを再起動します。
- **グローバル プラグイン**
- **macOS/Linux**: `~/.local/share/opencode/log/`
- **Windows**: `WIN+R` を押して `%USERPROFILE%\.local\share\opencode\log` を貼り付けます
- **プロジェクト プラグイン** (プロジェクトごとの構成を使用する場合のみ)
- `command.executed`
アプリが再び動作し始めた場合は、プラグインを 1 つずつ再度有効にして、問題の原因となっているプラ​​グインを特定します。
---
### キャッシュをクリアする
プラグインを無効にしても解決しない場合 (またはプラグインのインストールが停止した場合)、OpenCode がキャッシュを再構築できるようにキャッシュをクリアします。
1. OpenCode Desktop を完全に終了します。
2. キャッシュ ディレクトリを削除します。
- **macOS**: Finder -> `Cmd+Shift+G` -> `~/.cache/opencode` を貼り付け
- **Linux**: `~/.cache/opencode` を削除します (または `rm -rf ~/.cache/opencode` を実行します)。
- **Windows**: `WIN+R` を押して `%USERPROFILE%\.local\share\opencode\log` を貼り付けます
3. OpenCode デスクトップを再起動します。
---
### サーバー接続の問題を修正する
OpenCode Desktop は、独自のローカル サーバー (デフォルト) を起動することも、構成したサーバー URL に接続することもできます。
**「接続に失敗しました」** ダイアログが表示された場合 (またはアプリがスプラッシュ画面を通過できない場合)、カスタム サーバー URL を確認してください。
#### デスクトップのデフォルトのサーバー URL をクリアします
ホーム画面でサーバー名 (ステータス ドット付き) をクリックしてサーバー ピッカーを開きます。 [**デフォルト サーバー**] セクションで、[**クリア**] をクリックします。
#### 設定から `server.port` / `server.hostname` を削除します
`opencode.json(c)` に `server` セクションが含まれている場合は、それを一時的に削除し、デスクトップ アプリを再起動します。
#### 環境変数を確認する
環境に `OPENCODE_PORT` が設定されている場合、デスクトップ アプリはローカル サーバーにそのポートを使用しようとします。
- `OPENCODE_PORT` の設定を解除して (または空きポートを選択して)、再起動します。
---
### Linux: Wayland / X11 の問題
Linux では、一部の Wayland セットアップにより、空白のウィンドウやコンポジター エラーが発生する可能性があります。
- Wayland を使用していて、アプリが空白またはクラッシュしている場合は、`OC_ALLOW_WAYLAND=1` で起動してみてください。
- これにより状況が悪化する場合は、それを削除し、代わりに X11 セッションで起動してみてください。
---
### Windows: WebView2 ランタイム
Windows では、OpenCode Desktop には Microsoft Edge **WebView2 ランタイム**が必要です。アプリが空白のウィンドウで開くか、起動しない場合は、WebView2 をインストールまたは更新して、もう一度試してください。
---
### Windows: 一般的なパフォーマンスの問題
Windows でパフォーマンスの低下、ファイル アクセスの問題、またはターミナルの問題が発生している場合は、[WSL (Windows Subsystem for Linux)](/docs/windows-wsl) を使用してみてください。 WSL は、OpenCode の機能とよりシームレスに連携する Linux 環境を提供します。
---
### 通知が表示されない
OpenCode Desktop では、次の場合にのみシステム通知が表示されます。
- OS 設定で OpenCode の通知が有効になっており、
- アプリウィンドウにフォーカスがありません。
---
### デスクトップ アプリのストレージをリセットする (最後の手段)
アプリが起動せず、UI 内から設定をクリアできない場合は、デスクトップ アプリの保存された状態をリセットします。
1. OpenCode デスクトップを終了します。
2. これらのファイルを見つけて削除します (これらのファイルは OpenCode デスクトップ アプリのデータ ディレクトリにあります)。
- `opencode.settings.dat` (デスクトップのデフォルトサーバー URL)
- `opencode.global.dat` および `opencode.workspace.*.dat` (最近のサーバー/プロジェクトなどの UI 状態)
ディレクトリをすばやく見つけるには:
- **macOS**: Finder -> `Cmd+Shift+G` -> `~/Library/Application Support` (その後、上記のファイル名を検索します)
- **Linux**: 上記のファイル名を `~/.local/share` で検索します。
- **Windows**: `WIN+R` -> `%APPDATA%` を押します (その後、上記のファイル名を検索します)。
---
## 助けを求める
OpenCode で問題が発生している場合:
1. **GitHub で問題を報告してください**
バグを報告したり、機能をリクエストしたりする最良の方法は、GitHub リポジトリを使用することです。
[**github.com/anomalyco/opencode/issues**](https://github.com/anomalyco/opencode/issues)
新しい問題を作成する前に、既存の問題を検索して、問題がすでに報告されているかどうかを確認してください。
2. **Discord に参加してください**
リアルタイムのヘルプやコミュニティのディスカッションについては、Discord サーバーに参加してください。
[**opencode.ai/discord**](https://opencode.ai/discord)
---
## よくある問題
ここでは、いくつかの一般的な問題とその解決方法を示します。
---
### OpenCodeが起動しない
1. ログでエラー メッセージを確認する
2. `--print-logs` で実行して、ターミナルに出力を確認してください。
3. `opencode upgrade` を含む最新バージョンを使用していることを確認してください
---
### 認証の問題
1. TUI で `/connect` コマンドを使用して再認証を試みます
2. API キーが有効であることを確認してください
3. ネットワークでプロバイダーの API への接続が許可されていることを確認してください
---
### モデルがありません
1. プロバイダーで認証されていることを確認してください
2. 構成内のモデル名が正しいことを確認してください
3. 一部のモデルでは、特定のアクセスまたはサブスクリプションが必要な場合があります
`ProviderModelNotFoundError` が表示された場合は、間違いがある可能性が高くなります。
どこかのモデルを参照しています。
モデルは次のように参照する必要があります: `<providerId>/<modelId>`
例:
- `command.executed`
- `command.executed`
- `command.executed`
どのモデルにアクセスできるかを確認するには、`opencode models` を実行します。
---
### ProviderInitError
ProviderInitError が発生した場合は、構成が無効または破損している可能性があります。
これを解決するには:
1. まず、[プロバイダー ガイド](/docs/providers) に従って、プロバイダーが正しく設定されていることを確認します。
2. 問題が解決しない場合は、保存されている構成をクリアしてみてください。
```bash
rm -rf ~/.local/share/opencode
```
Windows では、`WIN+R` を押して、`%USERPROFILE%\.local\share\opencode` を削除します。
3. TUI の `/connect` コマンドを使用して、プロバイダーで再認証します。
---
### AI_APICallError とプロバイダー パッケージの問題
API 呼び出しエラーが発生した場合は、プロバイダー パッケージが古いことが原因である可能性があります。 opencode は、必要に応じてプロバイダー パッケージ (OpenAI、Anthropic、Google など) を動的にインストールし、ローカルにキャッシュします。
プロバイダー パッケージの問題を解決するには:
1. プロバイダー パッケージのキャッシュをクリアします。
```bash
rm -rf ~/.cache/opencode
```
Windows では、`WIN+R` を押して、`%USERPROFILE%\.local\share\opencode` を削除します。
2. オープンコードを再起動して最新のプロバイダー パッケージを再インストールします
これにより、オープンコードはプロバイダー パッケージの最新バージョンを強制的にダウンロードすることになり、多くの場合、モデル パラメーターや API の変更に関する互換性の問題が解決されます。
---
### Linux ではコピー/ペーストが機能しない
Linux ユーザーがコピー/ペースト機能を動作させるには、次のクリップボード ユーティリティのいずれかがインストールされている必要があります。
**X11 システムの場合:**
```bash
apt install -y xclip
# or
apt install -y xsel
```
**Wayland システムの場合:**
```bash
apt install -y wl-clipboard
```
**ヘッドレス環境の場合:**
```bash
apt install -y xvfb
# and run:
Xvfb :99 -screen 0 1024x768x24 > /dev/null 2>&1 &
export DISPLAY=:99.0
```
opencode は、Wayland を使用していて `wl-clipboard` を優先しているかどうかを検出します。そうでない場合は、`xclip` および `xsel` の順序でクリップボード ツールを検索しようとします。

View File

@@ -0,0 +1,390 @@
---
title: トゥイ
description: OpenCode ターミナル ユーザー インターフェイスの使用。
---
import { Tabs, TabItem } from "@astrojs/starlight/components"
OpenCode は、LLM を使用してプロジェクトを作業するための対話型ターミナル インターフェイスまたは TUI を提供します。
OpenCode を実行すると、現在のディレクトリの TUI が開始されます。
```bash
opencode
```
または、特定の作業ディレクトリに対して起動することもできます。
```bash
opencode /path/to/project
```
TUI に入ったら、メッセージを表示することができます。
```text
Give me a quick summary of the codebase.
```
---
## ファイル参照
`@` を使用してメッセージ内のファイルを参照できます。これにより、現在の作業ディレクトリ内であいまいなファイル検索が行われます。
:::ヒント
`@` を使用してメッセージ内のファイルを参照することもできます。
:::
```text "@packages/functions/src/api/index.ts"
How is auth handled in @packages/functions/src/api/index.ts?
```
ファイルの内容は会話に自動的に追加されます。
---
## Bash コマンド
メッセージを `!` で開始して、シェル コマンドを実行します。
```bash frame="none"
!ls -la
```
コマンドの出力は、ツールの結果として会話に追加されます。
---
## コマンド
OpenCode TUI を使用する場合、「`/`」に続いてコマンド名を入力すると、アクションをすばやく実行できます。例えば:
```bash frame="none"
/help
```
ほとんどのコマンドには、`ctrl+x` をリーダー キーとして使用するキーバインドもあります。`ctrl+x` がデフォルトのリーダー キーです。 [詳細はこちら](/docs/keybinds)。
利用可能なすべてのスラッシュ コマンドは次のとおりです。
---
### 接続する
OpenCode にプロバイダーを追加します。利用可能なプロバイダーから選択し、その API キーを追加できます。
```bash frame="none"
/connect
```
---
### コンパクト
現在のセッションを圧縮します。 _別名_: `/summarize`
```bash frame="none"
/compact
```
**キーバインド:** `ctrl+x c`
---
### 詳細
ツール実行の詳細を切り替えます。
```bash frame="none"
/details
```
**キーバインド:** `ctrl+x c`
---
### エディタ
メッセージを作成するために外部エディタを開きます。 `EDITOR` 環境変数に設定されたエディタを使用します。 [詳細はこちら](#editor-setup)。
```bash frame="none"
/editor
```
**キーバインド:** `ctrl+x c`
---
### 出口
OpenCodeを終了します。 _エイリアス_: `/quit`、`/q`
```bash frame="none"
/exit
```
**キーバインド:** `ctrl+x c`
---
### 輸出
現在の会話を Markdown にエクスポートし、デフォルトのエディターで開きます。 `EDITOR` 環境変数に設定されたエディタを使用します。 [詳細はこちら](#editor-setup)。
```bash frame="none"
/export
```
**キーバインド:** `ctrl+x c`
---
### ヘルプ
ヘルプダイアログを表示します。
```bash frame="none"
/help
```
**キーバインド:** `ctrl+x c`
---
### 初期化
`AGENTS.md` ファイルを作成または更新します。 [詳細はこちら](/docs/rules)。
```bash frame="none"
/init
```
**キーバインド:** `ctrl+x c`
---
### モデル
利用可能なモデルをリストします。
```bash frame="none"
/models
```
**キーバインド:** `ctrl+x c`
---
### 新しい
新しいセッションを開始します。 _別名_: `/clear`
```bash frame="none"
/new
```
**キーバインド:** `ctrl+x c`
---
### やり直し
以前に取り消したメッセージをやり直します。 `/undo` を使用した後にのみ使用できます。
:::ヒント
ファイルの変更も復元されます。
:::
内部的には、Git を使用してファイルの変更を管理します。したがって、あなたのプロジェクトは ** する必要があります
Git リポジトリ** であること。
```bash frame="none"
/redo
```
**キーバインド:** `ctrl+x c`
---
### セッション
セッションを一覧表示して切り替えます。 _エイリアス_: `/resume`、`/continue`
```bash frame="none"
/sessions
```
**キーバインド:** `ctrl+x c`
---
### 共有
現在のセッションを共有します。 [詳細はこちら](/docs/share)。
```bash frame="none"
/share
```
**キーバインド:** `ctrl+x c`
---
### テーマ
利用可能なテーマをリストします。
```bash frame="none"
/theme
```
**キーバインド:** `ctrl+x c`
---
### 考え
会話内の思考/推論ブロックの表示を切り替えます。有効にすると、拡張思考をサポートするモデルの推論プロセスを確認できます。
:::注記
このコマンドは、思考ブロックを**表示**するかどうかのみを制御します。モデルの推論機能を有効または無効にすることはありません。実際の推論機能を切り替えるには、`ctrl+t` を使用してモデル バリアントを循環させます。
:::
```bash frame="none"
/thinking
```
---
### 元に戻す
会話の最後のメッセージを元に戻します。最新のユーザー メッセージ、その後のすべての応答、およびファイルの変更を削除します。
:::ヒント
加えられたファイルの変更も元に戻されます。
:::
内部的には、Git を使用してファイルの変更を管理します。したがって、あなたのプロジェクトは ** する必要があります
Git リポジトリ** であること。
```bash frame="none"
/undo
```
**キーバインド:** `ctrl+x c`
---
### 共有を解除する
現在のセッションの共有を解除します。 [詳細はこちら](/docs/share#un-sharing)。
```bash frame="none"
/unshare
```
---
## エディターのセットアップ
`/editor` および `/export` コマンドはどちらも、`EDITOR` 環境変数で指定されたエディターを使用します。
<Tabs>
<TabItem label="Linux/macOS">
```bash
# Example for nano or vim
export EDITOR=nano
export EDITOR=vim
# For GUI editors, VS Code, Cursor, VSCodium, Windsurf, Zed, etc.
# include --wait
export EDITOR="code --wait"
```
これを永続的にするには、これをシェル プロファイルに追加します。
`~/.bashrc`、`~/.zshrc`など
</TabItem>
<TabItem label="Windows (CMD)">
```bash
set EDITOR=notepad
# For GUI editors, VS Code, Cursor, VSCodium, Windsurf, Zed, etc.
# include --wait
set EDITOR=code --wait
```
これを永続的にするには、**システム プロパティ** > **環境を使用します。
変数**。
</TabItem>
<TabItem label="Windows (PowerShell)">
```powershell
$env:EDITOR = "notepad"
# For GUI editors, VS Code, Cursor, VSCodium, Windsurf, Zed, etc.
# include --wait
$env:EDITOR = "code --wait"
```
これを永続的にするには、これを PowerShell プロファイルに追加します。
</TabItem>
</Tabs>
一般的なエディター オプションには次のものがあります。
- `code` - Visual Studio コード
- `cursor` - カーソル
- `windsurf` - ウィンドサーフィン
- `nvim` - Neovim エディター
- `vim` - Vim エディター
- `nano` - ナノエディター
- `notepad` - Windows メモ帳
- `subl` - 崇高なテキスト
:::注記
VS Code などの一部のエディターは、`--wait` フラグを使用して起動する必要があります。
:::
一部のエディターは、ブロッキング モードで実行するためにコマンドライン引数が必要です。 `--wait` フラグにより​​、エディターは閉じられるまでプロセスをブロックします。
---
## 設定する
OpenCode 構成ファイルを通じて TUI の動作をカスタマイズできます。
```json title="opencode.json"
{
"$schema": "https://opencode.ai/config.json",
"tui": {
"scroll_speed": 3,
"scroll_acceleration": {
"enabled": true
}
}
}
```
### オプション
- `scroll_acceleration` - macOS スタイルのスクロール アクセラレーションを有効にして、スムーズで自然なスクロールを実現します。有効にすると、高速スクロール ジェスチャではスクロール速度が向上し、ゆっくりとした動きでは正確なままになります。 **この設定は `scroll_speed` よりも優先され、有効になっている場合は上書きされます。**
- `scroll_speed` - スクロール コマンドを使用するときに TUI がスクロールする速度を制御します (最小: `1`)。デフォルトは `3` です。 **注: `scroll_acceleration.enabled` が `true` に設定されている場合、これは無視されます。**
---
## カスタマイズ
コマンド パレット (`ctrl+x h` または `/help`) を使用して、TUI ビューのさまざまな側面をカスタマイズできます。これらの設定は再起動後も維持されます。
---
#### ユーザー名の表示
チャット メッセージにユーザー名を表示するかどうかを切り替えます。これには次の方法でアクセスします。
- コマンドパレット:「ユーザー名」または「ユーザー名を隠す」を検索します。
- 設定は自動的に保持され、TUI セッション全体で記憶されます。

View File

@@ -0,0 +1,142 @@
---
title: ウェブ
description: ブラウザで OpenCode を使用する。
---
OpenCode はブラウザーで Web アプリケーションとして実行でき、ターミナルを必要とせずに同じ強力な AI コーディング エクスペリエンスを提供します。
![OpenCode Web - 新しいセッション](../../../assets/web/web-homepage-new-session.png)
## はじめる
以下を実行して Web インターフェースを開始します。
```bash
opencode web
```
これにより、利用可能なランダムなポートを使用して `127.0.0.1` でローカル サーバーが起動され、デフォルトのブラウザで OpenCode が自動的に開きます。
:::注意
`OPENCODE_SERVER_PASSWORD` が設定されていない場合、サーバーは保護されません。これはローカルで使用する場合には問題ありませんが、ネットワーク アクセス用に設定する必要があります。
:::
:::tip[Windows ユーザー]
最高のエクスペリエンスを得るには、PowerShell ではなく [WSL](/docs/windows-wsl) から `opencode web` を実行します。これにより、ファイル システムへの適切なアクセスと端末の統合が保証されます。
:::
---
## 構成
コマンド ライン フラグを使用するか、[config file](/docs/config).config ファイル] で Web サーバーを設定できます。
### ポート
デフォルトでは、OpenCode は使用可能なポートを選択します。ポートを指定できます。
```bash
opencode web --port 4096
```
### ホスト名
デフォルトでは、サーバーは `127.0.0.1` (localhost のみ) にバインドされます。ネットワーク上で OpenCode にアクセスできるようにするには:
```bash
opencode web --hostname 0.0.0.0
```
`0.0.0.0` を使用すると、OpenCode はローカル アドレスとネットワーク アドレスの両方を表示します。
```
Local access: http://localhost:4096
Network access: http://192.168.1.100:4096
```
### mDNS ディスカバリー
mDNS を有効にして、ローカル ネットワーク上でサーバーを検出できるようにします。
```bash
opencode web --mdns
```
これにより、ホスト名が自動的に `0.0.0.0` に設定され、サーバーが `opencode.local` としてアドバタイズされます。
mDNS ドメイン名をカスタマイズして、同じネットワーク上で複数のインスタンスを実行できます。
```bash
opencode web --mdns --mdns-domain myproject.local
```
### コルス
CORS の追加ドメインを許可するには (カスタム フロントエンドに便利):
```bash
opencode web --cors https://example.com
```
### 認証
アクセスを保護するには、`OPENCODE_SERVER_PASSWORD` 環境変数を使用してパスワードを設定します。
```bash
OPENCODE_SERVER_PASSWORD=secret opencode web
```
ユーザー名のデフォルトは `opencode` ですが、`OPENCODE_SERVER_USERNAME` で変更できます。
---
## Web インターフェースの使用
開始すると、Web インターフェイスから OpenCode セッションにアクセスできるようになります。
### セッション
ホームページからセッションを表示および管理します。アクティブなセッションを確認したり、新しいセッションを開始したりできます。
![OpenCode Web - アクティブなセッション](../../../assets/web/web-homepage-active-session.png)
### サーバーステータス
「サーバーを表示」をクリックすると、接続されているサーバーとそのステータスが表示されます。
![OpenCode Web - Servers](../../../assets/web/web-homepage-see-servers.png) を参照
---
## 端子の取り付け
実行中の Web サーバーにターミナル TUI を接続できます。
```bash
# Start the web server
opencode web --port 4096
# In another terminal, attach the TUI
opencode attach http://localhost:4096
```
これにより、Web インターフェイスとターミナルの両方を同時に使用し、同じセッションと状態を共有できるようになります。
---
## 設定ファイル
`opencode.json` 構成ファイルでサーバー設定を構成することもできます。
```json
{
"server": {
"port": 4096,
"hostname": "0.0.0.0",
"mdns": true,
"cors": ["https://example.com"]
}
}
```
コマンド ライン フラグは、構成ファイルの設定よりも優先されます。

View File

@@ -0,0 +1,119 @@
---
title: Windows (WSL)
description: WSL を使って Windows で OpenCode を使う。
---
import { Steps } from "@astrojs/starlight/components"
OpenCode は Windows で直接実行できますが、より快適に使うには [Windows Subsystem for Linux (WSL)](https://learn.microsoft.com/en-us/windows/wsl/install) の利用をおすすめします。WSL は OpenCode の機能とスムーズに連携する Linux 環境を提供します。
:::tip[WSL を使う理由]
WSL を使うと、ファイルシステム性能、端末サポート、OpenCode が依存する開発ツールとの互換性が向上します。
:::
---
## セットアップ
<Steps>
1. **WSL をインストールする**
まだの場合は、Microsoft 公式ガイドを使って [WSL をインストール](https://learn.microsoft.com/en-us/windows/wsl/install) します。
2. **WSL で OpenCode をインストールする**
WSL の準備ができたら WSL のターミナルを開き、[インストール方法](/docs/) のいずれかで OpenCode をインストールします。
```bash
curl -fsSL https://opencode.ai/install | bash
```
3. **WSL から OpenCode を使う**
プロジェクトディレクトリに移動しWindows ファイルは `/mnt/c/` や `/mnt/d/` などからアクセス、OpenCode を実行します。
```bash
cd /mnt/c/Users/YourName/project
opencode
```
</Steps>
---
## デスクトップアプリ + WSL サーバー
OpenCode Desktop アプリを使いつつ、サーバーは WSL で動かしたい場合は次の手順です。
1. **WSL でサーバーを起動する**
外部接続を許可するため、`--hostname 0.0.0.0` を付けて起動します。
```bash
opencode serve --hostname 0.0.0.0 --port 4096
```
2. **Desktop アプリを接続する**
`http://localhost:4096` に接続します。
:::note
環境によって `localhost` が使えない場合は、WSL 側で `hostname -I` を実行して IP アドレスを確認し、`http://<wsl-ip>:4096` に接続してください。
:::
:::caution
`--hostname 0.0.0.0` を使う場合は、`OPENCODE_SERVER_PASSWORD` を設定してサーバーを保護してください。
```bash
OPENCODE_SERVER_PASSWORD=your-password opencode serve --hostname 0.0.0.0
```
:::
---
## Web クライアント + WSL
Windows で Web 利用を快適にするには:
1. **PowerShell ではなく WSL ターミナルで `opencode web` を実行する**
```bash
opencode web --hostname 0.0.0.0
```
2. **Windows のブラウザーからアクセスする**
`http://localhost:<port>` にアクセスしますURL は OpenCode が表示します)。
WSL から `opencode web` を実行すると、適切なファイルシステムアクセスとターミナル統合を維持したまま、Windows ブラウザーから利用できます。
---
## Windows ファイルへのアクセス
WSL からは `/mnt/` ディレクトリ経由で Windows ファイルにアクセスできます。
- `C:` drive → `/mnt/c/`
- `D:` drive → `/mnt/d/`
- そのほかのドライブも同様です
例:
```bash
cd /mnt/c/Users/YourName/Documents/project
opencode
```
:::tip
よりスムーズに使うには、リポジトリを WSL のファイルシステム(例: `~/code/`)にクローンまたはコピーして、そこで OpenCode を実行することをおすすめします。
:::
---
## ヒント
- Windows ドライブ上のプロジェクトでも、OpenCode は WSL で実行するとファイルアクセスがスムーズです
- OpenCode と一緒に VS Code の [WSL 拡張](https://code.visualstudio.com/docs/remote/wsl) を使うと統合的な開発フローを構築できます
- OpenCode の設定とセッションは WSL 環境内の `~/.local/share/opencode/` に保存されます

View File

@@ -0,0 +1,254 @@
---
title: 禅
description: OpenCode によって提供されるモデルの厳選されたリスト。
---
import config from "../../../../config.mjs"
export const console = config.console
export const email = `mailto:${config.email}`
OpenCode Zen は、OpenCode チームによって提供される、テストおよび検証されたモデルのリストです。
:::注記
OpenCode Zen は現在ベータ版です。
:::
Zen は OpenCode の他のプロバイダーと同様に機能します。 OpenCode Zen にログインすると、
API キー。これは **完全にオプション** であり、使用するために使用する必要はありません。
OpenCode.
---
## 背景
モデルはたくさんありますが、そのうちのほんの一部です
これらのモデルはコーディング エージェントとしてうまく機能します。さらに、ほとんどのプロバイダーは、
構成が大きく異なります。したがって、まったく異なるパフォーマンスと品質が得られます。
:::ヒント
私たちは、OpenCode で適切に動作するモデルとプロバイダーの選択されたグループをテストしました。
:::
したがって、OpenRouter などを通じてモデルを使用している場合は、決してそうすることはできません。
必要なモデルの最高のバージョンを入手しているかどうかを確認してください。
これを修正するために、いくつかのことを行いました。
1. 私たちは選択したモデルのグループをテストし、その方法についてチームと話し合いました。
それらを実行するのが最善です。
2. その後、いくつかのプロバイダーと協力して、これらが確実に提供されるようにしました。
correctly.
3. 最後に、モデルとプロバイダーの組み合わせをベンチマークし、次の結果を導き出しました。
私たちが自信を持ってお勧めするリストをご紹介します。
OpenCode Zen は、これらのモデルへのアクセスを可能にする AI ゲートウェイです。
---
## 仕組み
OpenCode Zen は、OpenCode の他のプロバイダーと同様に機能します。
1. **<a href={console}>OpenCode Zen</a>** にログインし、請求内容を追加します
詳細を確認し、API キーをコピーします。
2. TUI で `/connect` コマンドを実行し、OpenCode Zen を選択して API キーを貼り付けます。
3. TUI で `/models` を実行すると、推奨されるモデルのリストが表示されます。
リクエストごとに料金が請求され、アカウントにクレジットを追加できます。
---
## エンドポイント
次の API エンドポイントを通じてモデルにアクセスすることもできます。
|モデル |モデルID |エンドポイント | AI SDK パッケージ |
| ------------------ | ------------------ | -------------------------------------------------- | --------------------------- |
| GPT5.2 | gpt-5.2 | `https://opencode.ai/zen/v1/responses` | `@ai-sdk/openai` |
| GPT 5.2 コーデックス | gpt-5.2-コーデックス | `https://opencode.ai/zen/v1/responses` | `@ai-sdk/openai` |
| GPT5.1 | gpt-5.1 | `https://opencode.ai/zen/v1/responses` | `@ai-sdk/openai` |
| GPT 5.1 コーデックス | gpt-5.1-コーデックス | `https://opencode.ai/zen/v1/responses` | `@ai-sdk/openai` |
| GPT 5.1 コーデックス マックス | gpt-5.1-codex-max | `https://opencode.ai/zen/v1/responses` | `@ai-sdk/openai` |
| GPT 5.1 コーデックス ミニ | gpt-5.1-codex-mini | `https://opencode.ai/zen/v1/responses` | `@ai-sdk/openai` |
| GPT5 | gpt-5 | `https://opencode.ai/zen/v1/responses` | `@ai-sdk/openai` |
| GPT 5 コーデックス | gpt-5-コーデックス | `https://opencode.ai/zen/v1/responses` | `@ai-sdk/openai` |
| GPT5ナ | gpt-5-nano | `https://opencode.ai/zen/v1/responses` | `@ai-sdk/openai` |
|クロード・ソネット 4.5 |クロード・ソネット-4-5 | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` |
|クロード・ソネット 4 |クロード・ソネット4 | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` |
|クロード俳句 4.5 |クロード俳句-4-5 | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` |
|クロード俳句 3.5 |クロード-3-5-俳句 | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` |
|クロード作品4.6 |クロード作品4-6 | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` |
|クロード作品4.5 |クロード作品4-5 | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` |
|クロード作品4.1 |クロード-作品-4-1 | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` |
|ジェミニ 3 プロ |ジェミニ-3-プロ | `https://opencode.ai/zen/v1/models/gemini-3-pro` | `@ai-sdk/google` |
|ジェミニ 3 フラッシュ |ジェミニ-3-フラッシュ | `https://opencode.ai/zen/v1/models/gemini-3-flash` | `@ai-sdk/google` |
|ミニマックス M2.1 |ミニマックス-m2.1 | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` |
| MiniMax M2.1 無料 |ミニマックス-m2.1-無料 | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` |
| GLM 4.7 | glm-4.7 | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` |
| GLM 4.7 無料 | glm-4.7-無料 | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` |
| GLM 4.6 | glm-4.6 | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` |
|キミK2.5 |きみk2.5 | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` |
|キミ K2.5 無料 | kimi-k2.5-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` |
|キミ K2 思考 | kimi-k2-思考 | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` |
|キミ K2 |きみk2 | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` |
| Qwen3 コーダー 480B | qwen3 コーダー | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` |
|ビッグピクルス |ビッグピクルス | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` |
OpenCode 設定の [model id](/docs/config/#models)
`opencode/<model-id>` 形式を使用します。たとえば、GPT 5.2 Codex の場合は、次のようになります。
設定で `opencode/gpt-5.2-codex` を使用してください。
---
### モデル
利用可能なモデルとそのメタデータの完全なリストは、次から取得できます。
```
https://opencode.ai/zen/v1/models
```
---
## 価格設定
当社は従量課金制モデルをサポートしています。以下は **100 万トークンあたりの価格**です。
|モデル |入力 |出力 |キャッシュされた読み取り |キャッシュされた書き込み |
| --------------------------------- | ------ | ------ | ----------- | ------------ |
|ビッグピクルス |無料 |無料 |無料 | - |
| MiniMax M2.1 無料 |無料 |無料 |無料 | - |
|ミニマックス M2.1 | $0.30 | $1.20 | $0.10 | - |
| GLM 4.7 無料 |無料 |無料 |無料 | - |
| GLM 4.7 | $0.60 | $2.20 | $0.10 | - |
| GLM 4.6 | $0.60 | $2.20 | $0.10 | - |
|キミ K2.5 無料 |無料 |無料 |無料 | - |
|キミK2.5 | $0.60 | $3.00 | $0.08 | - |
|キミ K2 思考 | $0.40 | $2.50 | - | - |
|キミK2 | $0.40 | $2.50 | - | - |
| Qwen3 コーダー 480B | $0.45 | $1.50 | - | - |
|クロード・ソネット 4.5 (≤ 200K トークン) | $3.00 | $15.00 | $0.30 | $3.75 |
|クロード・ソネット 4.5 (> 200K トークン) | $6.00 | $22.50 | $0.60 | $7.50 |
|クロード・ソネット 4 (≤ 200K トークン) | $3.00 | $15.00 | $0.30 | $3.75 |
|クロード・ソネット 4 (> 200K トークン) | $6.00 | $22.50 | $0.60 | $7.50 |
|クロード俳句 4.5 | $1.00 | $5.00 | $0.10 | $1.25 |
|クロード俳句 3.5 | $0.80 | $4.00 | $0.08 | $1.00 |
|クロード オーパス 4.6 (≤ 200K トークン) | $5.00 | $25.00 | $0.50 | $6.25 |
|クロード オーパス 4.6 (> 200K トークン) | $10.00 | $37.50 | $1.00 | $12.50 |
|クロード作品4.5 | $5.00 | $25.00 | $0.50 | $6.25 |
|クロード作品4.1 | $15.00 | $75.00 | $1.50 | $18.75 |
| Gemini 3 Pro (≤ 200K トークン) | $2.00 | $12.00 | $0.20 | - |
| Gemini 3 Pro (> 200K トークン) | $4.00 | $18.00 | $0.40 | - |
|ジェミニ 3 フラッシュ | $0.50 | $3.00 | $0.05 | - |
| GPT5.2 | $1.75 | $14.00 | $0.175 | - |
| GPT 5.2 コーデックス | $1.75 | $14.00 | $0.175 | - |
| GPT5.1 | $1.07 | $8.50 | $0.107 | - |
| GPT 5.1 コーデックス | $1.07 | $8.50 | $0.107 | - |
| GPT 5.1 コーデックス マックス | $1.25 | $10.00 | $0.125 | - |
| GPT 5.1 コーデックス ミニ | $0.25 | $2.00 | $0.025 | - |
| GPT5 | $1.07 | $8.50 | $0.107 | - |
| GPT 5 コーデックス | $1.07 | $8.50 | $0.107 | - |
| GPT5ナ |無料 |無料 |無料 | - |
使用履歴に _Claude Haiku 3.5_ が表示されるかもしれません。これは [セッションのタイトルを生成するために使用される低コスト モデル ](/docs/config/#models) です。
:::注記
クレジット カード手数料は実費で引き継がれます (4.4% + 取引ごとに 0.30 ドル)。それ以上の料金はかかりません。
:::
無料モデル:
- GLM 4.7 Free は期間限定で OpenCode で入手できます。チームはこの時間を利用してフィードバックを収集し、モデルを改善します。
- Kim K2.5 Free は OpenCode で期間限定で利用可能です。チームはこの時間を利用してフィードバックを収集し、モデルを改善します。
- MiniMax M2.1 Free は期間限定で OpenCode で入手できます。チームはこの時間を利用してフィードバックを収集し、モデルを改善します。
- Big Pickle は、期間限定で OpenCode で無料で利用できるステルス モデルです。チームはこの時間を利用してフィードバックを収集し、モデルを改善します。
ご質問がございましたら、<a href={email}>お問い合わせ</a>ください。
---
### 自動リロード
残高が 5 ドルを下回ると、Zen は自動的に 20 ドルをリロードします。
自動リロード量を変更できます。自動リロードを完全に無効にすることもできます。
---
### 月ごとの制限
ワークスペース全体およびワークスペースごとに月ごとの使用制限を設定することもできます。
あなたのチームのメンバー。
たとえば、毎月の使用制限を 20 ドルに設定したとします。Zen は使用しません。
月に20ドル以上。ただし、自動リロードを有効にしている場合、Zen が終了する可能性があります。
残高が 5 ドルを下回ると、20 ドル以上の請求が行われます。
---
## プライバシー
すべてのモデルは米国でホストされています。当社のプロバイダーはゼロ保持ポリシーに従い、次の例外を除いて、モデルのトレーニングにデータを使用しません。
- Big Pickle: 無料期間中に、収集されたデータはモデルの改善に使用される場合があります。
- GLM 4.7 無料: 無料期間中、収集されたデータはモデルを改善するために使用される場合があります。
- Kimi K2.5 Free: 無料期間中、収集されたデータはモデルの改善に使用される場合があります。
- MiniMax M2.1 無料: 無料期間中、収集されたデータはモデルを改善するために使用される場合があります。
- OpenAI API: リクエストは [OpenAI のデータ ポリシー ](https://platform.openai.com/docs/guides/your-data).
- Anthropic API: リクエストは、[Anthropic のデータ ポリシー ](https://docs.anthropic.com/en/docs/claude-code/data-usage).
---
## チーム向け
Zen はチームにも効果的です。チームメイトを招待し、役割を割り当て、キュレートすることができます
チームが使用するモデルなど。
:::注記
ワークスペースは現在、ベータ版の一部としてチームに無料で提供されています。
:::
現在、チームはベータ版の一部としてワークスペースの管理を無料で行うことができます。私たちはそうなります
価格の詳細については近日中にお知らせします。
---
### 役割
チームメイトをワークスペースに招待し、役割を割り当てることができます。
- **管理者**: モデル、メンバー、API キー、請求を管理します。
- **メンバー**: 自分の API キーのみを管理します
管理者は、コストを管理するために各メンバーの毎月の支出制限を設定することもできます。
---
### モデルアクセス
管理者は、ワークスペースの特定のモデルを有効または無効にすることができます。無効なモデルに対してリクエストを行うと、エラーが返されます。
これは、モデルの使用を無効にしたい場合に便利です。
データを収集します。
---
### 自分の鍵を持参してください
Zen の他のモデルにアクセスしながら、独自の OpenAI または Anthropic API キーを使用できます。
独自のキーを使用する場合、トークンは Zen ではなくプロバイダーによって直接請求されます。
たとえば、組織はすでに OpenAI または Anthropic のキーを持っている可能性があります。
Zen が提供するものの代わりにそれを使用したいとします。
---
## 目標
私たちは次の目的で OpenCode Zen を作成しました。
1. **ベンチマーク** コーディング エージェントに最適なモデル/プロバイダー。
2. **最高品質**のオプションにアクセスでき、パフォーマンスをダウングレードしたり、より安価なプロバイダーにルートしたりする必要はありません。
3. 原価で販売することで**価格下落**を転嫁します。したがって、唯一のマークアップは処理手数料をカバーすることです。
4. 他のコーディング エージェントとの併用を許可することで、**ロックイン**がなくなります。また、常に OpenCode で他のプロバイダーも使用できるようにします。