> For the complete documentation index, see [llms.txt](https://tinyhumans.gitbook.io/openhuman/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://tinyhumans.gitbook.io/openhuman/zh/gong-neng/integrations/triggers.md).

# 触发器

来自已连接应用的实时事件（新的 Gmail 消息、Notion 编辑、Stripe 扣款）会作为触发器到达，经由分诊代理排序，并可自动启动代理动作。

一个已连接的集成不仅仅是智能体可按需读取的地方，它也是实时事件的来源。当有人给你发邮件、编辑 Notion 页面、在你的仓库里打开 GitHub issue、在 Stripe 上扣款，或在 Slack 上给你发私信时，OpenHuman 会在瞬间接收到该事件，并决定是否对此采取行动。

本页介绍触发器如何到达、如何被分类，以及如何在你无需输入任何内容的情况下将其转化为完整的智能体动作。

## 什么是触发器

触发器是由你已连接的集成发布的外部事件。示例如下：

| 集成       | 示例触发器                                                       |
| -------- | ----------------------------------------------------------- |
| Gmail    | `GMAIL_NEW_GMAIL_MESSAGE`，收件箱中的新邮件                          |
| Slack    | `SLACK_NEW_MESSAGE`，提及你的频道或私信消息                             |
| Notion   | `NOTION_PAGE_UPDATED`，被跟踪的页面已更改                             |
| GitHub   | `GITHUB_ISSUE_OPENED`, `GITHUB_PULL_REQUEST_OPENED` ，在你的仓库中 |
| Stripe   | `STRIPE_CHARGE_SUCCEEDED`，你的账户上的一笔成功扣款                      |
| Calendar | `GOOGLE_CALENDAR_EVENT_CREATED`，日历中的新事件                     |

完整的集合来自 [Composio](https://composio.dev) 其背后的连接器层 [第三方集成](/openhuman/zh/gong-neng/integrations.md)。当连接处于活动状态时，将为你设置匹配的触发器订阅。

### Gmail OAuth 作用域

Gmail 触发器需要已连接 Google 账户的邮件读取权限。新的 Gmail 授权会请求 `https://www.googleapis.com/auth/gmail.readonly`，因此 `GMAIL_NEW_GMAIL_MESSAGE` 可以启用，原生 Gmail 同步也可以读取新消息元数据。如果你在请求此作用域之前就已连接 Gmail，请在启用 Gmail 触发器之前，从“设置”中重新连接它。

## 触发器如何到达智能体

```
┌────────────────────┐
│ 第三方 API    │ Gmail / Slack / Notion / GitHub / ...
└─────────┬──────────┘
          │ webhook
          ▼
┌────────────────────┐
│ OpenHuman 后端  │ 验证 webhook 签名，清理载荷
└─────────┬──────────┘
          │ Socket.IO 事件（"composio:trigger"）
          ▼
┌────────────────────┐
│ Rust 核心          │ 发布一个已收到触发器的事件
│（你的电脑）    │ 在进程内事件总线上
└─────────┬──────────┘
          │
          ▼
┌────────────────────┐
│ 触发器分流     │ 丢弃 / 确认 / 响应 / 升级
└─────────┬──────────┘
          │
          ▼
┌────────────────────┐
│ 以下之一：            │
│ - 什么都不做      │ ← 丢弃
│ - 记忆备注      │ ← 确认
│ - 触发器响应器  │ ← 响应（1-2 次工具调用）
│ - 编排器     │ ← 升级（完整的多步骤规划）
└────────────────────┘
```

原始 webhook 永远不会到达你的机器。后端持有 OAuth 令牌，并接收来自第三方的 webhook。它会验证 HMAC 签名，清理载荷，并通过现有的已认证 socket 将其转发到你的核心。你的电脑只会看到已验证的事件。

## 分流步骤

在任何操作运行之前， `trigger_triage` 智能体会查看每一个触发器。它唯一的工作就是决定接下来会发生什么。它会精确地从四种操作中选一种：

| Action | 发生什么                                  | 何时使用                                            |
| ------ | ------------------------------------- | ----------------------------------------------- |
| `丢弃`   | 什么都不做。触发器会被记录并丢弃。                     | 垃圾信息、重复项和噪音。对于你不关心的内容，这是默认选项。                   |
| `确认`   | 会保存一条简短的记忆备注。不运行任何智能体。                | 值得记住的被动通知，例如“archive 中创建了新页面”。                  |
| `响应`   | 该 `trigger_reactor` 智能体会通过一到两次工具调用运行。 | 一个小的单步效果：存储一条记忆记录、快速发送确认、将线程标记为已读。              |
| `升级`   | 完整的编排智能体接手并进行规划。                      | 任何需要推理或多个步骤的事情：起草回复、更新多篇 Notion 页面、决定如何处理传入的问题。 |

分流智能体拥有与其余智能体相同的记忆和工作区上下文。它可以判断触发器是否与你正在处理的内容相关、涉及哪些人，以及你是否曾要求 OpenHuman 针对此类事情采取行动。

## 当触发器变成智能体动作时

这就是“OpenHuman 有一个 Gmail 集成”和“OpenHuman 为你的收件箱待命”之间的区别。

**响应** 是低成本路径。触发器响应器是一个专门化很窄的专家，工具调用次数有严格上限，只有两次左右。它适合写一条单行记忆备注（“看到一笔新的 Stripe 扣款，金额 $84，客户 X”）、因为这又是你本周已经分流过两次的同一自动化提醒而将一条 Slack 消息标记为已处理，或者存储一条你之后可能会查找的事件结构化记录。

**升级** 是重路径。当分流决定某个触发器需要真正的工作时，它会把一个自包含的任务描述交给编排器。编排器拥有你全部的技能、工具和记忆。它可能会：

* 起草一封重要邮件的回复，并将其排队等待你的批准。
* 提取与传入问题相关的 Notion、Linear 或 Drive 上下文，并写一条结构化评论。
* 根据一个事件更新三个已连接的系统，例如客户在 Stripe 中的套餐变更，这会更新 HubSpot、在 #revenue 中发帖，并在他们的 Notion 文件中添加备注。

无论哪种情况，该动作都会在你的机器上运行，针对你配置的记忆引擎，使用与其他智能体相同的模型路由和工具。

## 为什么要有分流

你可以把每个触发器直接送入编排器。但这样做会有两个问题。

1. 大多数触发器都是噪音。一个已连接的 Gmail 账户每小时会触发数十次事件，而你只关心其中很少一部分。对每一个都运行编排器会消耗预算，并产生持续不断的后台活动流。
2. 触发器值得使用不同的预算。自动化的 Stripe 收据和个人 Slack 私信不应消耗相同数量的 token。分流让低成本路径继续低成本，并把编排器留给真正值得它的事件。

分流运行在快速模型层级上（参见 [模型路由](/openhuman/zh/gong-neng/model-routing.md)），因此

## 配置与退出

* **默认开启。** 一旦集成已连接，其触发器就会自动进入该流程。
* **退出。** 设置 `OPENHUMAN_TRIGGER_TRIAGE_DISABLED` 环境变量为 `1`, `true` 或 `是`。智能体分类将关闭，触发器只会被记录。集成仍保持连接。只有自动操作会停止。
* **按触发器设置。** 选择哪些集成和事件类型会在 **设置**下被评估。RPC 方法是 `get_composio_trigger_settings` 和 `update_composio_trigger_settings`.
* **审计日志。** 无论决定如何，每个触发器都会写入触发器历史记录，因此你可以看到收到了什么、分流做了什么决定以及运行了什么。决定和升级也会作为 `TriggerEvaluated` 和 `TriggerEscalated` 事件发布到进程内总线上，因此核心内部的任何组件都可以订阅。

## 隐私边界

触发器遵循与产品其余部分相同的边界（参见 [隐私与安全](/openhuman/zh/gong-neng/privacy-and-security.md)):

* 第三方令牌保存在后端，绝不会存放在你的电脑上。
* 在任何内容到达你的机器之前，后端都会验证 webhook 签名。
* 你的本地核心会处理载荷。分类和任何响应都会在你的机器上运行，并针对你配置的记忆引擎。
* 当记忆功能开启时，确认、响应和升级路径写入的备注会作为学习内容存储到你的记忆引擎中。

## 另请参阅

* [第三方集成](/openhuman/zh/gong-neng/integrations.md)：触发器所来自的服务目录。
* [记忆来源](/openhuman/zh/gong-neng/memory.md)：轮询对应项，会按计划将源数据拉取到记忆中。
