传统的 LLM 应用,无论是 ChatGPT 还是 RAG 问答,本质都是响应式(Reactive)的:用户提出一个 Query,系统给出一个 Response。一旦交互结束,Agent 的记忆和生命周期也就终止了。
在更多时候,我们希望构建的 Agent 是 Proactive 的:Agent 可以持续地、在真实时间线上一直运行,它可以:
- 持续地监控环境,并做出相应的反应;
- 拥有持续的记忆,能够积累经验;
- 根据环境变化,主动决定下一步行动。
在这种逻辑下,Agent 就不再是按照 Request-Response 的方式被构建,而是需要一个基于循环和状态的 Agent 系统。
“触发”(Trigger),也可以认为是“定时”(Scheduler)成为了 Agent 重要的能力。
Agent 的自主性来自于它对这些不同类型触发器的监听和响应能力。
Trigger Types
Environmental Triggers
这类触发器直接来源于环境数据流的改变,Agent 必须具备“订阅”(Subscription)信息的能力。
| 子类型 | 描述 | 示例(股票市场预测 Agent) |
|---|---|---|
| 突发事件触发 (Event-Driven) | 重要的、无法预测的外部信息突然出现。此前的 User Query 就可以理解为一类特殊的 Event。 | 1. 突发新闻:某公司 CEO 辞职、央行降息公告。 2. 新任务发布:预测系统发布了一个新的预测挑战。 |
| 阈值/信号触发 (Threshold-Driven) | 监测到的数据指标超过了预设的临界值,表明市场可能发生变化。 | 1. 价格波动:某股票 5 分钟内价格波动超过 2%。 2. 情感极值:市场情绪指数(Sentiment Index)跌至极低水平。 |
| 数据到达触发 (Arrival-Driven) | 预定的、周期性的数据包到达,需要立即处理。 | 1. 财报发布:季度或年度财报文件到达。 2. 宏观数据:每月 CPI 或失业率报告发布。 |
Core State / System Triggers
这类触发器源于对 Agent 运行环境和核心组件的外部操作或状态变化,本质上是 Agent 必须立即处理的系统级事件(System Events)。
| 子类型 | 描述 | 示例(股票市场预测 Agent) |
|---|---|---|
| 配置修改触发 (Configuration Change) | 外部开发者或管理员修改了 Agent 的核心代码、工具集或 LLM 模型参数。 | 1. 代码库更新:外部更新了模型训练脚本 (model_train.py)。2. 工具集变更:新增了一个调用外部风控 API 的工具。 |
| 记忆完整性触发 (Memory Integrity) | 外部操作导致 Agent 的长期记忆库发生变化,或系统检测到记忆数据异常。 | 1. 外部写入:管理员手动向 Agent 的向量数据库中导入了一批新的历史数据。 2. 数据损坏:数据库报告关键记忆分区出现异常或写入失败。 |
Temporal/Scheduled Triggers
这类触发器基于时间,分为固定周期和 LLM 自主规划的周期。
| 子类型 | 描述 | 示例(股票市场预测 Agent) |
|---|---|---|
| 固定周期触发 (Cron Job) | 固定的、不可更改的维护和报告周期。 | 1. 日常维护:每日凌晨 3 点进行数据备份和日志清理。 2. 定期报告:每周五下午 4 点生成市场周报。 |
| LLM 自主调度 (Self-Scheduling) | Agent 结合当前环境和任务,给自己设置的临时或未来的提醒。 | 1. 延迟分析:Agent 决定:“我需要等待明天开盘后的 30 分钟市场稳定后再进行预测”,于是给自己设置一个 24 小时 30 分钟后的提醒。 2. 复盘提醒:Agent 决定:“这次预测的结果将在 3 天后揭晓,请在 3 天后触发一次反思任务。” |
Self-Scheduling & Subscription
“自主调度”是实现 Proactive Agent 的一种形式,它要求 Agent 不仅能对外界信息做出反应,还能根据推理安排未来的行动。
LLM 需要一些工具,使其能够像使用 Python 或 API 一样,自主创建任务/触发机制。
\[
\text{Schedule\_Task}(\text{Task\_ID}, \text{Description}, \text{Target\_Time}, \text{Priority})
\]
订阅则是允许 LLM 像 Agentic 操作 Memory 一样操作订阅信息:
add_subscriptiondelete_subscriptionupdate_subscriptionlist_subscription
触发流程:
- 环境输入:Agent 观察到(Observe)某支股票现在不值得交易,但 48 小时后将公布关键数据。
- LLM 推理(Orient & Decide):
- Thought: “基于当前市场平静和两天后的数据公布,我现在浪费算力去观察没有意义。我应该在数据公布后的半小时启动一次针对该股票的详细分析。”
- Action: 调用
Schedule_Task工具。
- 调度器执行(Scheduler Act):
Scheduler.add('分析 XYZ 数据', '两天后 10:30', Priority=High)。 - 时间到达:两天后 10:30,调度器将该任务推送到任务队列中,再次唤醒 LLM 进行处理。