Track
Track 是 WebAgent 的定型 API 之一。你描述一个监控意图,它按 schedule 反复去网页取数,和基线比对,命中变化时通过你指定的渠道通知你。
和 DoAnything / DeepResearch / WebSearch 不同:那些是「跑一次、出结果」。Track 的资源是 monitor——一个长期存在的对象,自己按计划反复跑,每次跑产生一个 run。
什么时候用
- 你关心的是某个东西随时间的变化,而不是此刻的一次性结果。
- 你希望在变化发生时被推送,而不是自己轮询。
- 监控可以长期挂着——monitor 在你删除前一直存在。
只要一次性结果时,用 WebSearch 或 DoAnything。
创建一个 monitor
HTTP 端点:
http
POST /v1/projects/{pid}/track/monitors
Authorization: Bearer wa_...请求字段:
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
intent | string | 是 | 监控意图,自然语言 |
notify_channel | object | 是 | 通知渠道,见下方 notify_channel |
schedule | object | 否 | 触发计划,见下方 schedule。不传 = 用默认计划 |
target_urls | string[] | 否 | 限定监控哪些页面;不传则 agent 自己找 |
extraction_schema | object | 否 | 指定从页面抽取哪些结构化字段 |
trigger_dsl | object | 否 | 触发条件——满足才算「命中变化」 |
stop_condition_dsl | object | 否 | 停止条件——满足后 monitor 自动停 |
profile_id | string | 否 | 复用 Profile 的登录态 |
完整 schema 见 OpenAPI spec 的 CreateMonitorRequest。schedule 和 notify_channel 是嵌套对象,结构见下面两节。
schedule
schedule.kind 决定 monitor 什么时候跑:
| kind | 说明 |
|---|---|
interval | 固定间隔;配 interval_seconds |
cron | cron 表达式;配 cron |
event | 由外部事件触发;配 event_filter |
autonomous | 由 agent 自己判断下次该什么时候跑 |
notify_channel
notify_channel.kind 决定命中变化时往哪推:
| kind | 说明 |
|---|---|
callback_url | POST 到你的 URL;配 url |
global_webhook | 复用项目级 webhook;配 webhook_id |
console_inbox | 推到 Console 的收件箱,适合人来看 |
示例
凑齐 intent + schedule + notify_channel 三者创建 monitor:
python
from web_agent.v1 import Client
async with Client(api_key="wa_...", project_id="proj_demo") as client:
monitor = await client.track.create(
intent="苹果股价跌破 $200 时通知我",
schedule={"kind": "interval", "interval_seconds": 3600},
notify_channel={"kind": "callback_url", "url": "https://hooks.example.com/track"},
)
print(monitor["id"], monitor["status"])基线与变化检测
monitor 第一次跑会建立基线(baseline_extracted)。之后每次跑都和基线比对,命中 trigger_dsl 才发通知。last_tick_at / last_tick_n 记录最近一次跑的时间和序号,consecutive_failures 连续失败计数——连续失败过多 monitor 会进入异常状态。
生命周期
monitor 创建后长期存在,直到你删除。常用操作:
| 操作 | 说明 |
|---|---|
pause / resume | 暂停 / 恢复调度 |
run_now | 不等 schedule,立刻跑一次 |
cancel / delete | 停止 / 删除 monitor |
patch | 改 intent、schedule、渠道等 |
refine | 用自然语言调整监控意图 |
list_runs / get_run | 查历史 run |
list_deliveries / retry_delivery | 查通知投递记录;失败的可重投 |
intervene / message | monitor 撞到登录、验证码等需要人介入时回应 |
事件流端点 …/track/monitors/{mid}/events 走 SSE 约定,实时跟进 monitor 的每次 tick。