Eai. ResultCollector
(eai v1.0.6)
Copy Markdown
增量状态机流式收集器。
三阶段状态机 + 增量扫描,将复杂度从 O(N²/n) 降至 O(N): :searching_start → 只在新 chunk + tail 中找 @left :collecting_core → 只在新 chunk + tail 中找 @right,核心内容用 IO list O(1) 追加 :complete → 停止接收
ANSI 清洗延迟到最终提取时一次性完成。
状态由 PTY.Session GenServer 持有(不在 Cache 中逐 chunk 读写), 仅在任务完成时将结果写入 Cache 供 get/1 查询。
同时提供超时提醒窗口(深度计数器)和中断标记(Cache)机制。
Summary
Functions
检查并清除中断标记,返回 true/false
检查当前超时窗口深度。如果 >0,消耗一层并返回提醒消息;否则清除并返回 nil。
增量收集一个 PTY 数据块。
超时时强制取出已收集的数据,尽力提取有效内容后标记完成。
接收收集器状态,返回 {:ok, output}。
初始化收集器状态(供 GenServer 持有)。
初始化 Cache 中的任务状态(供 get/1 查询)。
设置强制中断标记
任务完成时将结果写入 Cache(供 get/1 查询)。
触发超时提醒窗口:在 Cache 中写入超时深度。 每次模型调用 get_task_result 时会消耗一层深度并返回提醒消息。
Functions
检查并清除中断标记,返回 true/false
检查当前超时窗口深度。如果 >0,消耗一层并返回提醒消息;否则清除并返回 nil。
增量收集一个 PTY 数据块。
返回 {new_state, :collecting | {:complete, output}}。
超时时强制取出已收集的数据,尽力提取有效内容后标记完成。
接收收集器状态,返回 {:ok, output}。
初始化收集器状态(供 GenServer 持有)。
初始化 Cache 中的任务状态(供 get/1 查询)。
设置强制中断标记
任务完成时将结果写入 Cache(供 get/1 查询)。
触发超时提醒窗口:在 Cache 中写入超时深度。 每次模型调用 get_task_result 时会消耗一层深度并返回提醒消息。