Skip to content

アーキテクチャ概要

Triggerfishshは、1つのコアな不変条件を持つセキュアなマルチチャンネルAIエージェント プラットフォームです:

セキュリティ セキュリティは決定論的でLLMの下にあります。 すべての

セキュリティ決定は、LLMが回避・上書き・影響を与えることができない純粋なコードによって 行われます。LLMは権限ゼロです — アクションを要求するだけであり、ポリシーレイヤーが 決定します。 :::

このページではTriggerfishshがどのように機能するかの全体像を示します。各主要コンポーネント は専用の詳細ページにリンクしています。

システムアーキテクチャ

システムアーキテクチャ: チャンネルはチャンネルルーターを通じてGatewayに流れ、Gatewayはセッションマネージャーとポリシーエンジンとエージェントループを調整します

データフロー

すべてのメッセージはシステムを通じてこのパスを辿ります:

データフロー: インバウンドメッセージからポリシーhookを通じてアウトバウンド配信までの9ステップパイプライン

すべての適用ポイントで、決定は決定論的です — 同じ入力は常に同じ結果を生成します。 hookの中にLLM呼び出しはなく、ランダム性もなく、LLMが結果に影響を与える方法もありません。

主要コンポーネント

分類システム

データは4つの順序付けられたレベルを流れます: RESTRICTED > CONFIDENTIAL > INTERNAL > PUBLIC。コアルールはライトダウン禁止: データは等しいか高い分類にのみ流れます。CONFIDENTIALセッションはPUBLICチャンネルに データを送信できません。例外なし。LLMの上書きなし。

分類システムについて詳しく読む。

ポリシーエンジンとHook

8つの決定論的な適用hookがデータフローの重要なポイントですべてのアクションを インターセプトします。Hookは純粋な関数です:同期、ログ記録、偽造不可能。ポリシー エンジンは固定ルール(設定不可)、管理者調整可能ルール、エンタープライズ向けの 宣言的YAMLエスケープハッチをサポートしています。

ポリシーエンジンについて詳しく読む。

セッションとTaint

各会話は独立したtaint追跡を持つセッションです。セッションが分類されたデータに アクセスすると、そのtaintはそのレベルにエスカレートし、セッション内では決して 低下しません。完全なリセットでtaintと会話履歴が両方クリアされます。すべての データ要素は系譜追跡システムを通じてプロベナンスメタデータを持ちます。

セッションとTaintについて詳しく読む。

Gateway

GatewayはWebSocket JSON-RPCエンドポイントを通じてセッション、チャンネル、ツール、 イベント、エージェントプロセスを管理する中央制御プレーン — 長時間実行されるローカル サービスです。通知サービス、cronスケジューラー、webhookインジェスト、チャンネル ルーティングを調整します。

Gatewayについて詳しく読む。

ストレージ

すべてのステートフルデータは統一されたStorageProvider抽象化を通じて流れます。 名前空間付きキー(sessions:taint:lineage:audit:)は懸念を分離しながら、 ビジネスロジックに触れることなくバックエンドを交換できます。デフォルトは ~/.triggerfish/data/triggerfish.dbのSQLite WALです。

ストレージについて詳しく読む。

多層防御

セキュリティはチャンネル認証、権限対応データアクセス、セッションtaint、ポリシー hook、プラグインサンドボックス、ファイルシステムツールサンドボックス、監査ログを 含む13の独立したメカニズムに層状に実装されています。単独では1つの層で十分ではなく、 合わせて1つの層が侵害されても緩やかに低下する防御を形成します。

多層防御について詳しく読む。

設計原則

原則意味
決定論的適用ポリシーhookは純粋な関数を使用します。LLM呼び出しなし、ランダム性なし。同じ入力は常に同じ決定を生成します。
Taint伝播すべてのデータは分類メタデータを持ちます。セッションtaintはエスカレートのみ、低下しません。
ライトダウン禁止データは低い分類レベルに流れることができません。絶対に。
すべてを監査すべてのポリシー決定が完全なコンテキストでログ記録されます:タイムスタンプ、hookタイプ、セッションID、入力、結果、評価されたルール。
Hookは偽造不可能LLMはポリシーhookの決定を回避・変更・影響できません。HookはLLMレイヤーの下のコードで実行されます。
セッション分離各セッションは独立してtaintを追跡します。バックグラウンドセッションはPUBLIC taintで生成されます。エージェントワークスペースは完全に分離されています。
ストレージ抽象化どのモジュールも独自のストレージを作成しません。すべての永続化はStorageProviderを通じて流れます。

テクノロジースタック

コンポーネントテクノロジー
ランタイムDeno 2.x(TypeScript strict mode)
PythonプラグインPyodide(WASM)
テストDeno 組み込みテストランナー
チャンネルBaileys(WhatsApp)、grammY(Telegram)、Bolt(Slack)、discord.js(Discord)
ブラウザ自動化puppeteer-core(CDP)
音声Whisper(ローカルSTT)、ElevenLabs/OpenAI(TTS)
ストレージSQLite WAL(デフォルト)、エンタープライズバックエンド(Postgres、S3)
シークレットOSキーチェーン(個人)、vault統合(エンタープライズ)

Triggerfishshは外部ビルドツール、Docker、クラウド依存関係を必要としません。

ローカルで実行し、ローカルでデータを処理し、ユーザーにデータの完全な主権を与えます。 :::