Skip to main content
Glama

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 内)

  1. TauriTavern を開く → 上部の「拡張機能」ドロワー → 拡張機能の管理 → 拡張機能のインストール

  2. 本リポジトリの Git アドレスを入力する(TauriTavern は匿名 https Git remote のみ受け付ける)。例: https://github.com/<你的用户名>/tt-agent-bridge.git

  3. インストール後、右下隅に「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 個)

検出系(読み取り)

ツール

用途

tt_status

キャパビリティ / 現在のキャラクター / チャット長 / chatMetadata のキー

tt_read_messages

フロアメッセージ(swipe 含む、オプションでフロア変数、そのフロアのステータスバー iframe 名)

tt_get_variables

チャットレベルまたは指定フロアの変数(MVU stat_data、swipe_id で解決)

tt_get_character

キャラクターカード: summary / full / regexes / scripts / character_book をセクション単位で読み取り

tt_worldinfo_last

直近のワールドブック発動バッチ

tt_llm_logs

AI リクエスト一覧 / プレビュー / 生ペイロード

tt_logs

フロントエンド(console キャプチャ含む)/ バックエンドログ

tt_iframes

全 iframe の一覧 + フロア→iframe マッピング(同一オリジン / スクリプト数 / Vue / 可視性)

tt_mvu_stat

MVU クイックリファレンス: 最新の stat_data / initvar フロア / 直近の <UpdateVariable> 原文

tt_search_chat

ホスト側のチャット全文検索

tt_find_message

構造条件(キー名 / キャラクター)で最後に一致するメッセージを特定

操作系(書き込み)

ツール

用途

tt_exec_stscript

STScript を実行

tt_send_message

メッセージを送信(生成をトリガー可能)

tt_set_variables

chat / global 変数を書き込み

tt_switch_character

キャラクターを切り替え

tt_worldinfo_open

ホスト内でワールドブック項目エディタを開く

tt_llm_keep

AI ログ保持上限の読み取り / 設定(長時間のデバッグセッションでは大きめに)

tt_console_capture

ホストの全量 console キャプチャのオン / オフ(iframe のエラーを tt_logs に取り込むための前提)

デバッグ系

ツール

用途

tt_eval

メインドキュメントまたは指定 iframe(frame= パラメータ)内で任意の JS を実行——getAllVariables / Mvu / eventOn はメッセージ iframe 内にのみ存在するため、ステータスバーの実行時データを読み取るには frame を指定する必要がある

bridge ローカル

ツール

用途

tt_poll_events

イベントストリームを取得(新規メッセージ / ワールドブック発動 / フロント・バックエンドエラー / LLM リクエスト完了 / 拡張機能ログ)

tt_bridge_status

bridge の状態(owned / attached モード、拡張機能の接続、ツール一覧)

典型的な debug シナリオ(Tavern カード)

  1. ステータスバーが空白 / 変数を読み取れない: 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 エンティティの二重デコードによることが多い)。

  2. 操作が反応しない(tab がクリックできない / ボタンが無反応): tt_eval frame=... 内でスクリプトのソースコードを読み、Vue のマウント(el.__vue_app__)を確認し、dispatchEvent でクリックをシミュレートして対照実験を行う。

  3. ワールドブックが反映されない: tt_worldinfo_last で発動バッチを確認 → tt_llm_logs の raw で prompt に実際に何が組み込まれたかを確認 → tt_worldinfo_open で該当項目に直接ジャンプする。

  4. カード変更後の検証: tt_exec_stscript で /go リロードをトリガー → tt_read_messages でレンダリング結果を確認する。

  5. カード構造のレビュー: tt_get_character section=regexes|scripts|character_book で埋め込みコンポーネントをセクション単位で読み取り、カード全体の MB 級 JSON でコンテキストを埋め尽くさないようにする。

dev スクリプト(bridge/scripts/)

スクリプト

用途

lib/agent.mjs

agent 直接接続クライアント(attach 優先、daemon がいない場合は spawn でフォールバック)

tteval.mjs <file.js>

ファイル内容を tt_eval のコード本体として実行(複数ファイル対応)

ttdiag.mjs inspect|switch

内蔵診断シーケンス

regress.mjs

回帰テストスイート: daemon / attach / 21 ツール / 2 agent の同時実行

cdp-reload.mjs

WebView2 CDP(9222)経由で TT ページをリロード

pngscan.cjs <png> [unpack <dir>]

キャラクターカード PNG の展開チェック / 全量ディスク書き出し

smoke.mjs

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

Related MCP Servers

  • F
    license
    Not graded
    quality
    A
    maintenance
    Enables 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.
    -
  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables 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 npm
    MIT
  • A
    license
    B
    quality
    C
    maintenance
    Enables AI agents to control SillyTavern through MCP tools for managing characters, chats, worldbooks, prompt assembly, extensions, plugins, snapshots, and runtime state.
    60
    1
    MIT
  • A
    license
    A
    quality
    A
    maintenance
    Enables external agents to list T3 environments and projects, start coding threads, monitor progress, send follow-up instructions, and interrupt running turns via MCP.
    7
    1
    MIT