Opencode
目次
コーディングを OpenCode CLI に任せます(機能追加、PR レビュー)。
skill の情報
| 提供元 | 最初から入っています |
| パス | skills/autonomous-ai-agents/opencode |
| バージョン | 1.2.0 |
| 作者 | Hermes Agent |
| ライセンス | MIT |
| 対応プラットフォーム | linux, macos, windows |
| タグ | Coding-Agent, OpenCode, Autonomous, Refactoring, Code-Review |
| 関連 skill | claude-code, codex, hermes-agent |
参考: SKILL.md 全文
OpenCode CLI
OpenCode を、Hermes のターミナル系・プロセス系ツールから動かす自律的なコーディングの働き手として使います。OpenCode はプロバイダを選ばないオープンソースの AI コーディングエージェントで、TUI と CLI があります。
こんなときに使う
- 利用者が OpenCode を使うようはっきり求めているとき
- 外部のコーディングエージェントに実装・整理・レビューをさせたいとき
- 長く動かして途中経過を確かめながら進めるコーディングをしたいとき
- 作業ディレクトリや worktree を分けて、作業を並行して走らせたいとき
あらかじめ必要なもの
- OpenCode が入っていること:
npm i -g opencode-ai@latestまたはbrew install anomalyco/tap/opencode - 認証が済んでいること:
opencode auth login、またはプロバイダの環境変数(OPENROUTER_API_KEY など)を設定 - 確認:
opencode auth listにプロバイダが少なくとも 1 つ出ること - コードを扱う作業では git リポジトリがあること(推奨)
- 対話的な TUI セッションには
pty=true
バイナリの解決(重要)
シェルの環境によっては、別の OpenCode バイナリが選ばれることがあります。自分のターミナルと Hermes とで挙動が違うときは、次を確かめてください。
terminal(command="which -a opencode")
terminal(command="opencode --version")必要なら、バイナリのパスを直接指定します。
terminal(command="$HOME/.opencode/bin/opencode run '...'", workdir="~/project", pty=true)一回きりの作業
区切りのはっきりした、対話の要らない作業には opencode run を使います。
terminal(command="opencode run 'Add retry logic to API calls and update tests'", workdir="~/project")-f で参考にするファイルを添えられます。
terminal(command="opencode run 'Review this config for security issues' -f config.yaml -f .env.example", workdir="~/project")--thinking を付けると、モデルの思考の過程が表示されます。
terminal(command="opencode run 'Debug why tests fail in CI' --thinking", workdir="~/project")モデルを指定することもできます。
terminal(command="opencode run 'Refactor auth module' --model openrouter/anthropic/claude-sonnet-4", workdir="~/project")対話的なセッション(バックグラウンド)
何度もやり取りしながら進めたいときは、TUI をバックグラウンドで立ち上げます。
terminal(command="opencode", workdir="~/project", background=true, pty=true)
# Returns session_id
# Send a prompt
process(action="submit", session_id="<id>", data="Implement OAuth refresh flow and add tests")
# Monitor progress
process(action="poll", session_id="<id>")
process(action="log", session_id="<id>")
# Send follow-up input
process(action="submit", session_id="<id>", data="Now add error handling for token expiry")
# Exit cleanly — Ctrl+C
process(action="write", session_id="<id>", data="\x03")
# Or just kill the process
process(action="kill", session_id="<id>")重要: /exit は使わないでください。OpenCode のコマンドとしては存在せず、エージェントの選択ダイアログが開いてしまいます。終了するときは Ctrl+C(\x03)か process(action="kill") を使います。
TUI のキーバインド
| キー | 動作 |
|---|---|
Enter |
メッセージを送る(必要なら 2 回押す) |
Tab |
エージェントを切り替える(build / plan) |
Ctrl+P |
コマンドパレットを開く |
Ctrl+X L |
セッションを切り替える |
Ctrl+X M |
モデルを切り替える |
Ctrl+X N |
新しいセッションを始める |
Ctrl+X E |
エディタを開く |
Ctrl+C |
OpenCode を終了する |
セッションを再開する
終了すると、OpenCode はセッション ID を表示します。次のように再開できます。
terminal(command="opencode -c", workdir="~/project", background=true, pty=true) # Continue last session
terminal(command="opencode -s ses_abc123", workdir="~/project", background=true, pty=true) # Specific sessionよく使うフラグ
| フラグ | 用途 |
|---|---|
run 'prompt' |
一回だけ実行して終了する |
--continue / -c |
直前の OpenCode セッションを続ける |
--session <id> / -s |
特定のセッションを続ける |
--agent <name> |
OpenCode のエージェントを選ぶ(build か plan) |
--model provider/model |
モデルを指定する |
--format json |
機械で読める形式で出力・イベントを返す |
--file <path> / -f |
メッセージにファイルを添える |
--thinking |
モデルの思考の過程を表示する |
--variant <level> |
推論の深さ(high、max、minimal) |
--title <name> |
セッションに名前を付ける |
--attach <url> |
動いている opencode サーバーに接続する |
進め方
- ツールが使える状態か確かめる:
terminal(command="opencode --version")terminal(command="opencode auth list")
- 区切りのはっきりした作業なら
opencode run '...'を使う(pty は不要)。 - 何度もやり取りする作業なら、
background=true, pty=trueを付けてopencodeを起動する。 - 長い作業は
process(action="poll"|"log")で見守る。 - OpenCode が入力を求めてきたら、
process(action="submit", ...)で答える。 - 終了は
process(action="write", data="\x03")かprocess(action="kill")で行う。 - 変わったファイル、テストの結果、次にやることを利用者にまとめて伝える。
PR レビューの進め方
OpenCode には PR 用のコマンドが組み込まれています。
terminal(command="opencode pr 42", workdir="~/project", pty=true)作業を切り離したいときは、一時的なクローンの中でレビューすることもできます。
terminal(command="REVIEW=$(mktemp -d) && git clone https://github.com/user/repo.git $REVIEW && cd $REVIEW && opencode run 'Review this PR vs main. Report bugs, security risks, test gaps, and style issues.' -f $(git diff origin/main --name-only | head -20 | tr '\n' ' ')", pty=true)並行して進めるときの形
ぶつからないように、作業ディレクトリや worktree を分けます。
terminal(command="opencode run 'Fix issue #101 and commit'", workdir="/tmp/issue-101", background=true, pty=true)
terminal(command="opencode run 'Add parser regression tests and commit'", workdir="/tmp/issue-102", background=true, pty=true)
process(action="list")セッションと費用の管理
これまでのセッションを一覧します。
terminal(command="opencode session list")トークンの使用量と費用を確かめます。
terminal(command="opencode stats")
terminal(command="opencode stats --days 7 --models anthropic/claude-sonnet-4")つまずきやすいところ
- 対話的な
opencode(TUI)のセッションにはpty=trueが要ります。opencode runに pty は要りません。 /exitはコマンドとして存在せず、エージェントの選択画面が開きます。TUI を終了するには Ctrl+C を使います。- PATH の食い違いで、意図しない OpenCode のバイナリやモデル設定が選ばれることがあります。
- OpenCode が止まっているように見えるときは、終了させる前にログを見てください:
process(action="log", session_id="<id>")
- 並行して動く OpenCode のセッションで、1 つの作業ディレクトリを共有しないでください。
- TUI では、送信に Enter を 2 回押す必要があることがあります(1 回目で文章を確定し、2 回目で送信)。
動作確認
軽い確認は次のとおりです。
terminal(command="opencode run 'Respond with exactly: OPENCODE_SMOKE_OK'")うまくいっている条件:
- 出力に
OPENCODE_SMOKE_OKが含まれる - プロバイダやモデルのエラーなしにコマンドが終わる
- コードを扱う作業では、想定したファイルが変わり、テストが通る
決まりごと
- 一回きりの自動化には
opencode runを優先します。単純で、pty も要りません。 - 対話的なバックグラウンドのモードは、繰り返しやり取りする必要があるときだけ使います。
- OpenCode のセッションは、常に 1 つのリポジトリ・作業ディレクトリに限定します。
- 長い作業では、
processのログから途中経過を伝えます。 - 具体的な結果(変わったファイル、テスト、残っているリスク)を報告します。
- 対話的なセッションは Ctrl+C か kill で終了します。
/exitは使いません。