Skip to content

架构概述

Triggerfish 是一个安全的多渠道 AI 智能体平台,具有一个核心不变量:

安全 安全是确定性的,位于 LLM 之下。 每个安全决策都由 LLM 无法绕过、覆盖或影响的纯代码做出。LLM 没有任何权限——它请求操作;策略层做出决策。 :::

本页提供 Triggerfish 工作原理的全局视图。每个主要组件都链接到专门的深入介绍页面。

系统架构

系统架构:渠道通过渠道路由器流向 Gateway,Gateway 协调会话管理器、策略引擎和智能体循环

数据流

每条消息都按以下路径流经系统:

数据流:从入站消息经过策略 hook 到出站投递的 9 步流水线

在每个执行点,决策都是确定性的——相同的输入始终产生相同的结果。hook 内部没有 LLM 调用、没有随机性,LLM 也无法影响结果。

主要组件

分类系统

数据流经四个有序级别: RESTRICTED > CONFIDENTIAL > INTERNAL > PUBLIC。核心规则是禁止降级写入(no write-down):数据只能流向相同或更高分类级别。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 插件Pyodide(WASM)
测试Deno 内置测试运行器
渠道Baileys(WhatsApp)、grammY(Telegram)、Bolt(Slack)、discord.js(Discord)
浏览器自动化puppeteer-core(CDP)
语音Whisper(本地 STT)、ElevenLabs/OpenAI(TTS)
存储SQLite WAL(默认)、企业后端(Postgres、S3)
密钥操作系统钥匙串(个人版)、保管库集成(企业版)

Triggerfish 不需要外部构建工具、不需要 Docker、不需要云依赖。它在本地运行,在本地处理数据,让用户对自己的数据拥有完全主权。 :::