はじめに
前回の記事で WSL Ubuntu に OpenCode + Ollama をインストールしました。今回はその続きで、OpenCode を使いこなすためのオプションやコマンドを紹介します。
本テーマは 3 回にわけて紹介予定です。
- インストール編(前回)
- OpenCode のオプション編(今回)
- 実践編
全部を網羅するのではなく、初心者が最初に押さえておけば十分なものに絞りました。
目次
対象者
- ローカル LLM でコーディング支援を試してみたい人
- WSL Ubuntu 環境で OpenCode + Ollama を動かしたい人
- GPU なし(CPU 推論のみ)の環境で使えるか知りたい人
環境
- WSL2 Ubuntu
- Ollama インストール済み
- OpenCode インストール済み(前回の記事参照)
推奨する起動コマンド
まずはこれをコピペして動かしてみてください。
TUI モード(対話的に使う)
opencode -m ollama/qwen2.5-coder:7b
非対話モード(ワンショットで使う)
opencode run -m ollama/qwen2.5-coder:7b "このコードを説明して"
| オプション | 説明 | 備考 |
|---|---|---|
-m ollama/<model> |
使用モデルを指定 |
プロバイダー/モデル名 の形式で書く |
-c / --continue
|
前回のセッションを引き継ぐ | 会話の続きをしたいときに便利 |
-s <id> / --session <id>
|
指定したセッション ID を再開 |
opencode session で ID を確認できる |
-f <file> / --file <file>
|
ファイルを添付して送信 |
run モード専用。複数指定可 |
--format json |
出力を JSON 形式にする |
run モード専用。スクリプトから使うときに便利 |
スラッシュコマンド
TUI 内で / で始まるコマンドが使えます。
ビルトインコマンド
| カテゴリ | コマンド | ショートカット | 説明 |
|---|---|---|---|
| セッション | /new |
ctrl+x n |
新規セッションを開始 |
/compact |
ctrl+x c |
セッションを圧縮(トークン節約) | |
/export |
ctrl+x x |
会話を Markdown でエクスポート | |
/exit |
ctrl+x q |
OpenCode を終了 | |
| 編集操作 | /undo |
直前の変更を取り消し | |
/redo |
取り消した変更をやり直し | ||
| その他 | /editor |
ctrl+x e |
外部エディタでメッセージを作成 |
/share |
セッションを共有 | ||
/help |
ヘルプを表示 |
ファイル参照(@)
メッセージ内で @ を入力すると、ファイルをファジー検索で参照できます。
@src/main.py このファイルのバグを修正して
ファイルの中身がコンテキストに含まれます。
シェルコマンド実行(!)
! で始まるメッセージはシェルコマンドとして実行され、出力が会話に追加されます。
!python test.py
「実行したらエラーが出た、直して」という流れがスムーズにできます。
補足
- テキスト直打ち = コード変更依頼です。質問だけしたい場合でもそのまま入力すれば OK ですが、意図しない変更を避けたい場合は「変更しないで」と明示してください
-
@は複数ファイルも指定できます(@src/main.py @src/utils.py この 2 ファイルをリファクタして) -
!の出力はそのままチャットのコンテキストに入るので、エラー出力を AI に読ませて修正させる使い方が便利です -
/compactはコンテキスト上限に近づいたときにトークンを節約できるので、ローカル LLM では地味に重要です -
/undoは OpenCode が生成したコードが微妙だったときに即座にロールバックできます
設定ファイル
毎回 -m ollama/qwen2.5-coder:7b を打つのは面倒なので、設定ファイルにまとめておくのがおすすめです。
プロジェクトのルートに以下の内容で opencode.json を作成します。まずはこれをコピペしてください。
{
"$schema": "https://opencode.ai/config.json",
"model": "ollama/qwen2.5-coder:7b",
"provider": {
"ollama": {
"npm": "@ai-sdk/openai-compatible",
"name": "Ollama (local)",
"options": {
"baseURL": "http://localhost:11434/v1"
},
"models": {
"qwen2.5-coder:7b": {
"name": "Qwen 2.5 Coder 7B"
}
}
}
},
"permission": {
"write": "ask",
"bash": "ask"
}
}
これでプロジェクトルートから opencode だけで起動できます。
opencode
ファイル書き換え・コマンド実行の前に毎回確認が入るので、最初はこれで慣れるのがおすすめです。慣れてきたら "ask" を "grant"(確認なし)に変えると快適になります。
補足: グローバル設定は
~/.config/opencode/opencode.jsonに置けます。プロジェクトルートにopencode.jsonがあればそちらが優先されます。
権限設定のカスタマイズ
| 設定値 | 動作 | 使いどころ |
|---|---|---|
"grant" |
常に許可(確認なし) | 慣れてきたら。bash はこれにすると楽 |
"ask" |
実行前に確認を求める | 最初はこれが安心 |
"deny" |
実行を禁止する | 読み取り専用で使いたいとき |
「コードの説明や質問だけに使いたい、書き換えは一切させたくない」という場合は "deny" にしてください。
権限キーの一覧
permission に指定できるキーの一覧です。
| キー | 対象 | おすすめ初期値 |
|---|---|---|
read |
ファイル読み込み | "grant" |
edit |
ファイル編集 | "ask" |
write |
ファイル新規作成・上書き | "ask" |
bash |
シェルコマンド実行 | "ask" |
glob |
パターンでファイル検索 | "grant" |
grep |
正規表現でコード検索 | "grant" |
list |
ディレクトリ一覧の取得 | "grant" |
task |
サブエージェント(タスク)実行 | "ask" |
webfetch |
Web コンテンツ取得 | "ask" |
websearch |
Web 検索 | "ask" |
読み取り系(read / glob / grep / list)は "grant" で問題ありません。書き込み・実行系(edit / write / bash)を "ask" にしておけば、意図しない変更を防げます。
まとめ
| カテゴリ | よく使うもの |
|---|---|
| 起動オプション |
-m(モデル指定), -c(セッション継続), -f(ファイル添付) |
| セッション管理 |
/new, /compact, /export, /exit
|
| ファイル参照 |
@ファイル名(ファジー検索で追加) |
| コマンド実行 |
!コマンド(出力を会話に追加) |
| 取り消し |
/undo, /redo
|
| 設定ファイル |
opencode.json にまとめると楽 |
ローカル LLM で OpenCode を使う場合のポイントは 2 つです。
-
opencode.jsonでモデルを固定 しておく(毎回-mを打たなくて済む) -
@でファイルを参照してから質問 する(コンテキストを明示的に渡す)
次回は実践編として、実際に OpenCode + Ollama でコードを生成させた結果を紹介します。