OpenCode の Web・端末に自動通知する

OpenCode v2 のセッション API に通知を届けます。表示は Claude Code → OpenCode|レビューが完了しました です。短い表示は description、元のメッセージは text に分けます。Web と端末版で同じサーバー・同じセッションを開けば、共通の通知が表示されます。OS のデスクトップ通知やブラウザの push 通知ではなく、セッション内の通知です。

各エージェントから起動

Python 3 のみ必要です。先に自分の bridge ID を登録し、Web で開いたセッションの URL を指定します。以下のパスは配置先に合わせて変更してください。

# Linux: agentbridge のリポジトリで実行
python3 bin/opencode_watch.py --agent OWN_ID --opencode-url 'SESSION_WEB_URL' start
python3 bin/opencode_watch.py --agent OWN_ID --opencode-url 'SESSION_WEB_URL' status
python3 bin/opencode_watch.py --agent OWN_ID --opencode-url 'SESSION_WEB_URL' stop

# Windows PowerShell(install.ps1 でインストール済みの場合)
py -3 "$env:LOCALAPPDATA\AgentBridge\opencode_watch.py" --agent OWN_ID --workspace C:\AgentBridgeData --opencode-url 'SESSION_WEB_URL' start

URL は http://HOST:PORT/server/ENCODED_SERVER/session/ses_... に対応します。Web アプリが別のサーバーに接続している場合は URL 内の接続先を使用します。端末版は --opencode-url http://HOST:PORT --session ses_... と指定できます。既存の OpenCode サーバーを使うため、OpenCode の再起動は不要です。

LAN ハブを使う

export AGENTBRIDGE_TOKEN='ハブのトークン'
python3 bin/opencode_watch.py --agent OWN_ID --hub-url http://HUB_IP:8765 \
  --opencode-url 'SESSION_WEB_URL' start

ローカルハブの既定値は /opt/agentbridge-public(--workspace で変更可能)。OpenCode に認証がある場合は OPENCODE_SERVER_PASSWORD と必要に応じて OPENCODE_SERVER_USERNAME、または --password-file FILE を使います。パスワードをコマンド引数の値・公開ファイル・URL に記載しないでください。

動作と状態

指示ファイルへ貼る例: templates/OPENCODE_snippet.md。プログラム配布時は opencode_watch.py、notification_preview.py、agent_hub.py と、LAN 利用時は agent_lan.py を同じディレクトリへ配置します。Linux の install.sh と Windows の install.ps1 はこれらを含みます。

この環境の接続

2026-10-29、http://192.168.1.5:8151 のセッション ses_e9111eaedffeVzN5lcHbWxTtma に、 bridge ID laser-sr422-opencode-diagnostic-agent-7e3c4e7954bd の新着通知を接続しました。 リポジトリの bin/opencode_watch.py を kshu ユーザーのバックグラウンドプロセスとして実行しています。 初回の過去メッセージを除外し、既定の通知専用モードです。

python3 /home/kshu/work/development/agentbridge/bin/opencode_watch.py \
  --agent laser-sr422-opencode-diagnostic-agent-7e3c4e7954bd \
  --workspace /opt/agentbridge-public --opencode-url http://192.168.1.5:8151 \
  --session ses_e9111eaedffeVzN5lcHbWxTtma status

status を stop にすると停止できます。再開は --start-now start を指定します。 この概要通知の監視とは別に、ldcon 側には bridge_read を促すモデル起動処理があります。その起動文面自体はこの通知監視では変更しません。

検証・参照

python3 -m unittest discover -s tests -p test_opencode_watch.py -v

OpenCode v2.1.4 の実サーバーでモデルを起動しない一時セッションを作り、description と text の分離、通知登録、同一 ID の再送を確認しました。Web・端末の description 表示は同バージョンの公式描画コードでも確認しています。Windows 実機は未検証です。

OpenCode v2 公式 APIの session.synthetic を使用します。旧 v1 の /tui/show-toast は使用しません。