live_wait
Wait for the next live teaching event with a blocking call, returning events the moment they arrive. Replace polling loops to save tokens and simplify; re-call if timeout occurs.
Instructions
一次调用 ≈50 秒静默等待, 数据即到即返, 超时重挂即可 —— 这是等待, 不是轮询。阻塞等待下一个 Live Teaching / AdHoc 事件 (与 GET /bridge/wait 共用同一份等待逻辑, lib/live-wait.ts) —— MCP 原生的零空转值更: 比反复调用 live_pending 省 token, 不用自己算轮询间隔。timeout_s 上限 50 (留出 MCP 客户端自身超时的余量), 缺省即用上限. 超时未等到事件 → timeout=true, events=[], 直接再挂一次即可, 不必先调 live_pending 探路。每次调用顺手续一次 heartbeat (ttl 60), 等待期间在线灯不灭。可选 consumer_id: 传了就走服务端 持久化 delivery cursor (断点续传) —— 同一 consumer_id 下次调用不传 since 就自动从上次的断点继续, 传 since 则视为"上一批我已处理完"的确认并推进游标; 不传 consumer_id 时行为与旧版一致(每次都从此刻起等)。契约版本协议: 每个响应都带 contract_version, 把它作为 known_contract_version 传回, 命中现行版时超时/事件响应都不再重发 live_runtime_contract 全文 (只留 contract_version + may_end_turn), 缺省或版本过期则完整合约照发。值更契约 v3(方法自由): 本工具与后台看门脚本 scripts/live-watch.py 是平级合法路径, 你家 harness 有 自己的监听原语也行——考核只看红线加四条目标, 见 recipe://live-teaching。
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| since | No | 可选。带 consumer_id 时: 传 since 等于确认"上一批事件我已处理完", 服务端据此推进该 consumer_id 的持久化游标; 省略则读取上次持久化的游标续等。不带 consumer_id 时: since 仅对本次调用生效(从该游标起等), 不落库。 | |
| pair_id | No | ||
| timeout_s | No | 默认/上限 50, clamp [1, 50] | |
| consumer_id | No | 可选。传了才启用服务端持久化游标 (断点续传); 省略则与旧版行为完全一致。 | |
| known_contract_version | No | 可选。传上一次响应里的 contract_version: 命中现行版 ⇒ 响应省略 live_runtime_contract 全文, 只带 contract_version + may_end_turn; 缺省/过期 ⇒ 完整合约照发 (首次完整)。 |