传统的 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_subscription
  • delete_subscription
  • update_subscription
  • list_subscription

触发流程:

  1. 环境输入:Agent 观察到(Observe)某支股票现在不值得交易,但 48 小时后将公布关键数据。
  2. LLM 推理(Orient & Decide)
    • Thought: “基于当前市场平静和两天后的数据公布,我现在浪费算力去观察没有意义。我应该在数据公布后的半小时启动一次针对该股票的详细分析。”
    • Action: 调用 Schedule_Task 工具。
  3. 调度器执行(Scheduler Act)Scheduler.add('分析 XYZ 数据', '两天后 10:30', Priority=High)
  4. 时间到达:两天后 10:30,调度器将该任务推送到任务队列中,再次唤醒 LLM 进行处理。