tt-agent-bridge
TT Agent Bridge
外部 CLI agent(ZCode / Claude Code など)が MCP 経由で TauriTavern を直接操作できるようにする: 実行時データ(チャット / 変数 / ワールドブック発動 / ログ / LLM リクエスト原文 / iframe ステータスバーの実行時)の読み取り、操作の実行(STScript / メッセージ送信 / 変数書き込み / キャラクター切替 / ワールドブック項目ジャンプ)、およびメインドキュメントまたはメッセージ iframe 内で任意の JS を実行して Tavern カードを診断する。
アーキテクチャ
外部 Agent(ZCode / Claude Code) dev 脚本(tteval / ttdiag / regress)
↕ MCP over stdio ↕ agent 角色直连(ws + JSON)
bridge server(Node,仅监听 127.0.0.1,token 鉴权,支持常驻 daemon)
↕ WebSocket(扩展/agent 主动连出,多 agent 并存)
TauriTavern 扩展「TT Agent Bridge」
├─→ window.__TAURITAVERN__.api 检测:日志 / 世界书激活 / LLM 请求 / 聊天搜索 / console 捕获
└─→ SillyTavern.getContext() 操作:STScript / 变量 / 消息 / 事件プロトコル契約の単一情報源:
src/core/protocol.ts(bridge が直接 import する。コピーしないこと)。拡張機能は公開された境界のみを使用する(TT ホスト ABI + 上流の
getContext()公開メンバー)。内部モジュールには触れない。bind-or-attach: MCP server 起動時にポート上に同一 token の生存 hub(daemon)が既にある場合、自動的に agent としてマウントする——複数 MCP クライアントが同時にいてもポート衝突は発生しない。
Related MCP server: WebMCP
拡張機能のインストール(TauriTavern 内)
TauriTavern を開く → 上部の「拡張機能」ドロワー → 拡張機能の管理 → 拡張機能のインストール
本リポジトリの Git アドレスを入力する(TauriTavern は匿名 https Git remote のみ受け付ける)。例:
https://github.com/<你的用户名>/tt-agent-bridge.gitインストール後、右下隅に「Bridge」ステータスバッジが表示される(hello が受け付けられると緑色に変わる)。
手動でディレクトリを配置(
data/extensions/third-party/tt-agent-bridge/)してもよいが、今後の更新のしやすさから Git インストールを推奨する。 アップグレード注意: プロトコルバージョンはリポジトリとともに進化する(現在 v2)。拡張機能と bridge は同一リポジトリで同時リリースされる——新しいリポジトリを取得したら TT 内の拡張機能も同時に更新する必要がある(Git 更新、またはdist/+manifest.jsonを同期してページをリロード)。そうしないと拡張機能は 4003 で拒否される(バッジが赤くなり、周期的に再試行する)。
起動
推奨: 常駐 daemon(拡張機能が長接続を維持し、スクリプト / MCP は秒単位でマウントされる。毎回拡張機能の再接続を待つ必要がない):
cd bridge
npm install
npm run daemon -- --port 18789 --token <你的token> # 或 TTAB_PORT / TTAB_TOKEN 环境变量または MCP server を直接実行(daemon がない場合は自動的に bind、daemon がある場合は自動的に attach):
npm run start # 随机 token,打印在 stderr,并写入 .bridge-token
# 或固定 token:
npm run start -- --port 18789 --token <你的token>token のペアリング
TT の右下隅にある Bridge バッジをクリック → token を貼り付ける(server 起動ログ内の token: ...)→「再接続」をクリック → バッジが緑色になれば接続成功。token が拒否された場合(4001)は、拡張機能が 30 秒の低速再試行を継続し、token を修正すれば自己回復する。
agent への接続(ZCode / Claude Code)
stdio MCP 方式で登録する(コマンド例。お使いのクライアントの構文に合わせて調整):
zcode mcp add tt-agent-bridge -- npm run start --prefix <bridge目录绝对路径>MCP ツール一覧(21 個)
検出系(読み取り)
ツール | 用途 |
| キャパビリティ / 現在のキャラクター / チャット長 / chatMetadata のキー |
| フロアメッセージ(swipe 含む、オプションでフロア変数、そのフロアのステータスバー iframe 名) |
| チャットレベルまたは指定フロアの変数(MVU stat_data、swipe_id で解決) |
| キャラクターカード: summary / full / regexes / scripts / character_book をセクション単位で読み取り |
| 直近のワールドブック発動バッチ |
| AI リクエスト一覧 / プレビュー / 生ペイロード |
| フロントエンド(console キャプチャ含む)/ バックエンドログ |
| 全 iframe の一覧 + フロア→iframe マッピング(同一オリジン / スクリプト数 / Vue / 可視性) |
| MVU クイックリファレンス: 最新の stat_data / initvar フロア / 直近の |
| ホスト側のチャット全文検索 |
| 構造条件(キー名 / キャラクター)で最後に一致するメッセージを特定 |
操作系(書き込み)
ツール | 用途 |
| STScript を実行 |
| メッセージを送信(生成をトリガー可能) |
| chat / global 変数を書き込み |
| キャラクターを切り替え |
| ホスト内でワールドブック項目エディタを開く |
| AI ログ保持上限の読み取り / 設定(長時間のデバッグセッションでは大きめに) |
| ホストの全量 console キャプチャのオン / オフ(iframe のエラーを |
デバッグ系
ツール | 用途 |
| メインドキュメントまたは指定 iframe( |
bridge ローカル
ツール | 用途 |
| イベントストリームを取得(新規メッセージ / ワールドブック発動 / フロント・バックエンドエラー / LLM リクエスト完了 / 拡張機能ログ) |
| bridge の状態(owned / attached モード、拡張機能の接続、ツール一覧) |
典型的な debug シナリオ(Tavern カード)
ステータスバーが空白 / 変数を読み取れない:
tt_mvu_statで stat_data の有無を確認 →tt_iframesでステータスバーの frame を特定 →tt_eval frame=TH-message--0--2で iframe 内のgetAllVariables()と DOM を調査 →tt_console_capture {enabled:true}の後にtt_logs kind=frontendでエラーを確認する(SyntaxErrorは HTML エンティティの二重デコードによることが多い)。操作が反応しない(tab がクリックできない / ボタンが無反応):
tt_eval frame=...内でスクリプトのソースコードを読み、Vue のマウント(el.__vue_app__)を確認し、dispatchEventでクリックをシミュレートして対照実験を行う。ワールドブックが反映されない:
tt_worldinfo_lastで発動バッチを確認 →tt_llm_logsの raw で prompt に実際に何が組み込まれたかを確認 →tt_worldinfo_openで該当項目に直接ジャンプする。カード変更後の検証:
tt_exec_stscriptで/goリロードをトリガー →tt_read_messagesでレンダリング結果を確認する。カード構造のレビュー:
tt_get_character section=regexes|scripts|character_bookで埋め込みコンポーネントをセクション単位で読み取り、カード全体の MB 級 JSON でコンテキストを埋め尽くさないようにする。
dev スクリプト(bridge/scripts/)
スクリプト | 用途 |
| agent 直接接続クライアント(attach 優先、daemon がいない場合は spawn でフォールバック) |
| ファイル内容を |
| 内蔵診断シーケンス |
| 回帰テストスイート: daemon / attach / 21 ツール / 2 agent の同時実行 |
| WebView2 CDP(9222)経由で TT ページをリロード |
| キャラクターカード PNG の展開チェック / 全量ディスク書き出し |
| MCP stdio のエンドツーエンドスモークテスト |
セキュリティ境界
WS は
127.0.0.1のみをリッスンする。ハンドシェイクには token が必須(--token/TTAB_TOKEN、デフォルトはランダム生成)。任意のファイルシステム / コマンドのプロキシは行わない——ファイル操作は agent がローカルツールで行う。
書き込み系と
tt_evalは destructive と明記され、agent 側の確認ポリシーに依存する。token は拡張機能の localStorage と bridge の
.bridge-tokenに平文で保存される。いずれも本機のファイルである。
既知の制限
/sendのテキストはパイプ経由でエスケープして渡される。極端な文字を含む場合はtt_evalで context を直接操作してフォールバックする。set_variables scope=globalは/setvar scope=globalのオブジェクトシリアライズ動作に依存する。attached モードでは
tt_poll_eventsは attach 以降のイベントのみを含む(履歴イベントは daemon の ring buffer にあり、MCP attach 経路では再生されない)。tt_bridge_statusの extConnected は attach 時点のスナップショットである。TauriTavern の
context.characterIdは実測すると数字文字列(上流の ST は number)であり、bridge 内部では互換対応済み。daemon が死んだ場合、attached の MCP server 呼び出しは失敗する(エラーメッセージが daemon の再起動を明確に促す)。自動で bind にフォールバックしない。
開発
npm install && npm run build # 构建扩展(typecheck + vite -> dist/)
cd bridge && npm install # bridge 依赖
cd bridge && npm run typecheck # bridge 侧类型检查リポジトリのルートがそのまま拡張機能(manifest.json + dist/)になっており、dist のビルド成果物はリポジトリにコミットされるため、TT に Git インストールした後はそのまま読み込まれる。ソースを変更したら npm run build してコミットすれば、TT の拡張機能更新で取得できる。
Related MCP Connectors
Remote MCP server exposing your Node Command fleet (files, shell, processes, browser) to AI hosts.
Remote MCP server for AI.TV creators — delegate account operations to your AI agent over MCP.
Secure and manage MCP servers through the Speakeasy AI Control Plane from your agent.
Host any HTTP API as a standard MCP server; auto-distribute to 12+ mainstream agent platforms.
Related MCP Servers
- FlicenseNot gradedqualityAmaintenanceEnables MCP-compatible AI clients to invoke CLI-driven agent tools over Streamable HTTP, including shell execution, file operations, patching, image viewing, web search, and nested agent tasks, with permission modes and real-time progress streaming.-
- AlicenseNot gradedqualityBmaintenanceEnables browser-based AI chat interfaces to use local MCP tools by injecting a tool-call protocol into the page and executing approved filesystem, shell, and downstream MCP tool calls from a local daemon.465 npmMIT
- AlicenseBqualityCmaintenanceEnables AI agents to control SillyTavern through MCP tools for managing characters, chats, worldbooks, prompt assembly, extensions, plugins, snapshots, and runtime state.601MIT
- AlicenseAqualityAmaintenanceEnables external agents to list T3 environments and projects, start coding threads, monitor progress, send follow-up instructions, and interrupt running turns via MCP.71MIT