Agent Skills by ALSEL
Anthropic ClaudeLLM・AI開発⭐ リポ 5品質スコア 72/100

add-opencode

OpenCodeをエージェントプロバイダーとして使用できます(AGENT_PROVIDER=opencode)。OpenCodeの設定を通じて、OpenRouter、OpenAI、Google、DeepSeekなど複数のプロバイダーに対応します。Anthropic Agent SDKではなく、OpenCodeを経由してアクセスします。agent_providerパラメータでセッション単位またはグループ単位での設定が可能です。ホストはコンテナ起動時にOPENCODE_*とXDGマウントを渡します。

description の原文を見る

Use OpenCode as an agent provider (AGENT_PROVIDER=opencode). OpenRouter, OpenAI, Google, DeepSeek, etc. via OpenCode config — not the Anthropic Agent SDK. Per-session and per-group via agent_provider; host passes OPENCODE_* and XDG mount when spawning containers.

SKILL.md 本文

OpenCode エージェントプロバイダー

NanoClaw はコンテナ内の長時間実行されるポーリングループでエージェントを実行します。バックエンドは AGENT_PROVIDER (claude | opencode | mock) で選択されます。

Trunk には claude プロバイダーのみが組み込まれています。このスキルは providers ブランチから OpenCode プロバイダーファイルをコピーし、ホストとコンテナのバレルに配線して、依存関係をインストールし、イメージをリビルドします。

インストール

事前確認

以下のすべてが既に存在する場合は、設定にスキップしてください:

  • src/providers/opencode.ts
  • container/agent-runner/src/providers/opencode.ts
  • src/providers/index.ts 内の import './opencode.js';
  • container/agent-runner/src/providers/index.ts 内の import './opencode.js';
  • container/agent-runner/package.json 内の @opencode-ai/sdk
  • container/Dockerfile の pnpm グローバルインストールブロック内の opencode-ai@${OPENCODE_VERSION}

不足している部分がある場合は、以下を続行してください。すべてのステップは冪等です。再実行しても安全です。

1. providers ブランチをフェッチ

git fetch origin providers

2. OpenCode ソースファイルをコピー

完全コピー(このスキルが全体を管理 — ユーザーの編集は再実行時に保持されません。意図的な設計です):

git show origin/providers:src/providers/opencode.ts                                    > src/providers/opencode.ts
git show origin/providers:container/agent-runner/src/providers/opencode.ts             > container/agent-runner/src/providers/opencode.ts
git show origin/providers:container/agent-runner/src/providers/mcp-to-opencode.ts      > container/agent-runner/src/providers/mcp-to-opencode.ts
git show origin/providers:container/agent-runner/src/providers/mcp-to-opencode.test.ts > container/agent-runner/src/providers/mcp-to-opencode.test.ts
git show origin/providers:container/agent-runner/src/providers/opencode.factory.test.ts > container/agent-runner/src/providers/opencode.factory.test.ts

3. 自己登録インポートを追加

各バレルの末尾に 1 行追加します — 既に存在する場合はスキップしてください。

src/providers/index.ts:

import './opencode.js';

container/agent-runner/src/providers/index.ts:

import './opencode.js';

4. agent-runner 依存関係を追加

固定バージョンです。意図的にバンプしてください。bun update は使用しないでください。1.4.17 を使用してください — ステップ 5 で固定された opencode-ai CLI バージョンと一致する必要があります。1.14.x SDK は完全に異なる API を持ち、現在のプロバイダーコードと互換性がありません

cd container/agent-runner && bun add @opencode-ai/sdk@1.4.17 && cd -

5. コンテナ Dockerfile に opencode-ai を追加

container/Dockerfile への 2 つの編集。両方とも冪等です(既に存在する場合はスキップしてください):

(a) 「CLI バージョンを固定」ARG ブロック(18 行目付近)内の ARG VERCEL_VERSION=latest の後に追加:

ARG OPENCODE_VERSION=1.4.17

latest は使用しないでください — CLI と SDK は同じバージョンである必要があります。latest は CLI を 1.14.x にサイレントにアップグレードします。これは SDK 1.4.x と互換性がないセッション API の破壊的変更(UUID セッション ID → ses_ プレフィックス)を含みます。

(b) pnpm install -g ブロック(80 行目付近)内のリストに "opencode-ai@${OPENCODE_VERSION}" を追加:

    pnpm install -g \
        "@anthropic-ai/claude-code@${CLAUDE_CODE_VERSION}" \
        "agent-browser@${AGENT_BROWSER_VERSION}" \
        "vercel@${VERCEL_VERSION}" \
        "opencode-ai@${OPENCODE_VERSION}"

6. ビルド

pnpm run build                                         # host
pnpm exec tsc -p container/agent-runner/tsconfig.json --noEmit   # container typecheck
./container/build.sh                                   # agent image

ビルドキャッシュの落とし穴: コンテナ buildkit は COPY ステップを積極的にキャッシュします。プロバイダーファイルがビルドコンテキスト内に既に存在していた場合、新しいファイルがピックアップされないかもしれません。ビルド後に「Unknown provider: opencode」が表示される場合は、ビルダーをプルーンしてリビルドしてください:

docker builder prune -f && ./container/build.sh

7. 既存のグループごとのオーバーレイに伝播

各エージェントグループは data/v2-sessions/<group-id>/agent-runner-src/providers/ にライブソースオーバーレイを持ち、これは実行時にイメージをオーバーライドします。このオーバーレイはグループが最初に配線されるときに作成され、イメージのリビルドによって自動更新されません。このスキルが実行される前に既に存在していたグループは、新しいファイルを手動でコピーする必要があります。

for overlay in data/v2-sessions/*/agent-runner-src/providers/; do
  [ -d "$overlay" ] || continue
  cp container/agent-runner/src/providers/opencode.ts "$overlay"
  cp container/agent-runner/src/providers/mcp-to-opencode.ts "$overlay"
  cp container/agent-runner/src/providers/index.ts "$overlay"
  echo "Updated: $overlay"
done

設定

ホスト .env (典型的)

OpenCode が期待する形式でモデル/プロバイダー文字列を設定します(多くの場合 provider/model-id)。コメントは独立した行に置いてください — 値内の # はそのまま保持され、モデル ID を破壊します。

これらの変数はホスト上で読み込まれ、有効なプロバイダーが opencode の場合にのみコンテナに渡されます。プロバイダーを単体で切り替えません。DB は引き続き agent_provider を設定する必要があります(以下を参照)。

  • OPENCODE_PROVIDER — OpenCode プロバイダー ID。例: openrouteranthropicdeepseek
  • OPENCODE_MODELprovider/model 形式の完全なモデル ID。例: deepseek/deepseek-chat
  • OPENCODE_SMALL_MODEL — オプション。軽いタスク用の 2 番目のモデル。未設定の場合は OPENCODE_MODEL がデフォルトです。
  • ANTHROPIC_BASE_URLanthropic プロバイダーで必須。 opencode コンテナプロバイダーはこれを上流プロバイダー設定の baseURL として渡すため、リクエストは OneCLI の認証情報プロキシまたはプロバイダーの API に直接ルーティングされます。プロバイダーの API ベース URL に設定します(例: https://api.deepseek.com/v1https://openrouter.ai/api/v1)。

認証情報: OneCLI でマッチングする --host-pattern のプロバイダー API キーを登録します(例: api.deepseek.comopenrouter.ai)。OneCLI はコンテナ内で HTTPS_PROXY 経由でそれらを挿入します — キーは .env またはコンテナ環境内に存在しません。

シークレットを追加した後、エージェントにアクセスを付与します — selective モードのエージェントは明示的に割り当てられたシークレットのみを受け取ります:

# エージェント ID とシークレット ID を見つけてから:
onecli agents set-secrets --id <agent-id> --secret-ids <existing-ids>,<new-secret-id>

リストに既存のシークレット ID を常に含めてください — set-secrets は追加ではなく置き換えます。

例: DeepSeek

OPENCODE_PROVIDER=deepseek
OPENCODE_MODEL=deepseek/deepseek-chat
OPENCODE_SMALL_MODEL=deepseek/deepseek-chat
ANTHROPIC_BASE_URL=https://api.deepseek.com/v1

キーを登録:

onecli secrets create --name "DeepSeek" --type generic \
  --value YOUR_KEY --host-pattern "api.deepseek.com" \
  --header-name "Authorization" --value-format "Bearer {value}"

例: OpenRouter

OPENCODE_PROVIDER=openrouter
OPENCODE_MODEL=openrouter/anthropic/claude-sonnet-4
OPENCODE_SMALL_MODEL=openrouter/anthropic/claude-haiku-4.5
ANTHROPIC_BASE_URL=https://openrouter.ai/api/v1

キーを登録:

onecli secrets create --name "OpenRouter" --type generic \
  --value YOUR_KEY --host-pattern "openrouter.ai" \
  --header-name "Authorization" --value-format "Bearer {value}"

例: Anthropic (ANTHROPIC_BASE_URL 不要)

OPENCODE_PROVIDERanthropic の場合、OpenCode はコンテナ内で通常の Anthropic env を使用します — プロキシ + プレースホルダーキーパターンは変わらず、ANTHROPIC_BASE_URL は必須ではありません。

OPENCODE_PROVIDER=anthropic
OPENCODE_MODEL=anthropic/claude-sonnet-4-20250514
OPENCODE_SMALL_MODEL=anthropic/claude-haiku-4-5-20251001

OpenCode Zen (x-api-key, Bearer ではなく)

Zen の HTTP API(例: POST …/zen/v1/messages)は**x-api-key** ヘッダーのキーを期待します。OneCLI が**Authorization: Bearer …** のみを挿入する場合、ゲートウェイが機能していても Zen はしばしば 401 / "Missing API key" を返します。

命名: NanoClaw の AGENT_PROVIDER=opencode(DB agent_provider)は「OpenCode エージェントプロバイダーを実行」を意味します。一方、.envOPENCODE_PROVIDER=opencode は OpenCode 設定内の OpenCode の Zen プロバイダー ID です(Zen ドキュメントを参照)。

ホスト .env (典型的な Zen 形式):

OPENCODE_PROVIDER=opencode
OPENCODE_MODEL=opencode/big-pickle
OPENCODE_SMALL_MODEL=opencode/big-pickle
ANTHROPIC_BASE_URL=https://opencode.ai/zen/v1

ドキュメントから実際の Zen モデル ID を使用してください。big-pickle は一例です。

OneCLI: Zen キーを**x-api-key**(Bearer ではなく)で登録:

onecli secrets create --name "OpenCode Zen" --type generic \
  --value YOUR_ZEN_KEY --host-pattern opencode.ai \
  --header-name "x-api-key" --value-format "{value}"

グループごと / セッションごと

スキーマ: agent_groups.agent_providersessions.agent_provider。OpenCode を使用するグループまたはセッションに opencode を設定します。コンテナは解決された値から AGENT_PROVIDER を受け取ります(セッションがグループをオーバーライド)。

追加の MCP サーバーは引き続き NANOCLAW_MCP_SERVERS / ホストの container_config.mcpServers から来ます。ランナーはそれらを Claude と OpenCode プロバイダーの両方に渡される同じ mcpServers オブジェクトにマージします。

運用上の注意事項

  • OpenCode はローカルな opencode serve プロセスと SSE サブスクリプションを保持します。プロバイダーは stream.returnabort() / 共有ランタイムリセット時のサーバープロセスへの SIGKILL で破棄され、MCP/ゾンビハングを避けます。
  • セッション継続は UUID 形式を使用します(SDK 1.4.x / CLI 1.4.x)。古いセッションは OpenCode 固有のエラーパターンで isSessionInvalid によってクリアされます。CLI の意図しないアップグレード後に UUID 関連のエラーが表示される場合は、outbound.dbsession_state をクリアし、セッションフォルダ内の opencode-xdg ディレクトリをワイプしてください。
  • NO_PROXY(localhost 用)は、OpenCode クライアントが HTTP(S)_PROXY が設定されている(例: OneCLI)状況でコンテナ内から 127.0.0.1 と通信するときに重要です。

検証

grep -q "./opencode.js" container/agent-runner/src/providers/index.ts && echo "container barrel: OK"
grep -q "./opencode.js" src/providers/index.ts && echo "host barrel: OK"
grep -q "@opencode-ai/sdk" container/agent-runner/package.json && echo "agent-runner dep: OK"
grep -q "opencode-ai@" container/Dockerfile && echo "Dockerfile install: OK"
cd container/agent-runner && bun test src/providers/ && cd -

ライセンス: MIT(寛容ライセンスのため全文を引用しています) · 原本リポジトリ

詳細情報

作者
thmtz
リポジトリ
thmtz/nanoclaw-fleet
ライセンス
MIT
最終更新
2026/5/9

Source: https://github.com/thmtz/nanoclaw-fleet / ライセンス: MIT

本サイトは GitHub 上で公開されているオープンソースの SKILL.md ファイルをクロール・インデックス化したものです。 各スキルの著作権は原作者に帰属します。掲載に問題がある場合は info@alsel.co.jp または /takedown フォームよりご連絡ください。
原作者: thmtz · thmtz/nanoclaw-fleet · ライセンス: MIT