Skip to content

架構概覽

Triggerfish 是一個安全的多通道 AI 代理平台,具有一個核心不變量:

安全性 安全性是確定性的,位於 LLM 層之下。 每一個安全決策都由純程式碼做出,LLM 無法繞過、覆蓋或影響。LLM 沒有任何權限——它請求操作;策略層做出決定。 :::

本頁提供 Triggerfish 運作方式的全貌。每個主要組件都連結到專門的深入頁面。

系統架構

系統架構:通道透過通道路由器流向 Gateway,Gateway 協調工作階段管理器、策略引擎和代理迴圈

資料流

每條訊息都經過系統中的以下路徑:

資料流:從入站訊息經過策略 hook 到出站傳遞的 9 步管線

在每個執行點,決策都是確定性的——相同的輸入始終產生相同的結果。hook 內沒有 LLM 呼叫,沒有隨機性,LLM 也無法影響結果。

主要組件

分類系統

資料在四個有序層級之間流動: RESTRICTED > CONFIDENTIAL > INTERNAL > PUBLIC。核心規則是禁止降級寫入:資料只能流向相同或更高分類等級。CONFIDENTIAL 的工作階段無法將資料傳送到 PUBLIC 通道。沒有例外。不能由 LLM 覆蓋。

深入了解分類系統。

策略引擎和 Hook

八個確定性執行 hook 在資料流的關鍵點攔截每個操作。Hook 是純函式:同步、記錄並且不可偽造。策略引擎支援固定規則(永不可配置)、管理員可調整規則,以及企業級的宣告式 YAML 逃生機制。

深入了解策略引擎。

工作階段和 Taint

每個對話都是具有獨立 taint 追蹤的工作階段。當工作階段存取分類資料時,其 taint 會提升到該等級,且在該工作階段內永遠不會降低。完全重設會清除 taint 和對話記錄。每個資料元素都透過血統追蹤系統攜帶來源中繼資料。

深入了解工作階段和 Taint。

Gateway

Gateway 是中央控制平面——一個長期執行的本機服務,透過 WebSocket JSON-RPC 端點管理工作階段、通道、工具、事件和代理程序。它協調通知服務、排程器、webhook 接收和通道路由。

深入了解 Gateway。

儲存

所有有狀態的資料都通過統一的 StorageProvider 抽象層。命名空間化的鍵(sessions:taint:lineage:audit:)保持關注點分離,同時允許在不觸及業務邏輯的情況下替換後端。預設為 ~/.triggerfish/data/triggerfish.db 的 SQLite WAL。

深入了解儲存。

縱深防禦

安全性透過 13 個獨立機制分層實現,從通道驗證和權限感知資料存取到工作階段 taint、策略 hook、plugin 沙盒、檔案系統工具沙盒和稽核日誌。沒有任何單一層足以獨立運作;它們共同形成的防禦能在即使一層被攻破時也能優雅降級。

深入了解縱深防禦。

設計原則

原則意義
確定性執行策略 hook 使用純函式。無 LLM 呼叫,無隨機性。相同輸入始終產生相同決策。
Taint 傳播所有資料攜帶分類中繼資料。工作階段 taint 只能提升,永不降低。
禁止降級寫入資料永遠無法流向更低的分類等級。
稽核一切所有策略決策都以完整上下文記錄:時間戳記、hook 類型、工作階段 ID、輸入、結果、評估的規則。
Hook 不可偽造LLM 無法繞過、修改或影響策略 hook 決策。Hook 在 LLM 層之下的程式碼中執行。
工作階段隔離每個工作階段獨立追蹤 taint。背景工作階段以全新的 PUBLIC taint 產生。代理工作區完全隔離。
儲存抽象沒有模組建立自己的儲存。所有持久化都通過 StorageProvider

技術堆疊

組件技術
執行環境Deno 2.x(TypeScript 嚴格模式)
Python pluginPyodide(WASM)
測試Deno 內建測試執行器
通道Baileys(WhatsApp)、grammY(Telegram)、Bolt(Slack)、discord.js(Discord)
瀏覽器自動化puppeteer-core(CDP)
語音Whisper(本地 STT)、ElevenLabs/OpenAI(TTS)
儲存SQLite WAL(預設)、企業後端(Postgres、S3)
密鑰作業系統金鑰鏈(個人版)、Vault 整合(企業版)

Triggerfish 不需要任何外部建置工具、Docker 或雲端依賴。它在本機執行,在本機處理資料,並賦予使用者對其資料的完全主權。 :::