长周期编码
用隔离工作区和磁盘状态机,在轮询与重试之间把编码任务续住。
长周期编码
任务长于一轮对话时用这一套:要在轮询、停滞、重试之后还能续上,而不能把整段历史塞进一次提示。
短 SDK 调用走 AgentExecutor.run 即可,不必上 longrun 或 project_state。
编排器
agenticx/longrun/ 轮询任务源,给每个任务隔离工作区,处理停滞,并做续跑 / 失败退避。Token 按增量记账(TaskTokenAccountant),不是看一次 completion 估出来。
已有来源包括手动队列、cron、项目 feature。只有 longrun/sources/ 里接上的才算真源。
磁盘状态机
project_state 在磁盘上保存版本化 feature 状态(初始化 → 实现 → 校验 → 提交)。文件锁和原子写让崩溃后仍可审计。
隔离工作区
TaskWorkspace 把任务钉在自己的目录,拒绝路径逃逸(TaskWorkspaceSecurityError)。钩子可以失败即停(TaskWorkspaceHookError)。
实践案例:把功能钉在磁盘上
场景。 「加登录,带测试」要跑很多轮轮询。下一次重试不能覆盖上一份工作区。
- 从已接线的 longrun 源启动(
longrun/sources/里的手动队列 / cron / 项目 feature)。 - 编排器分配隔离的
TaskWorkspace。路径逃逸会抛TaskWorkspaceSecurityError。 - 看
project_state走 初始化 → 实现 → 校验 → 提交。停滞检测用退避重试,而不是把整段历史塞进一次提示。 - Token 按
TaskTokenAccountant增量记账。
你会看到。 进度卡写出当前阶段,不是静止沙漏。崩溃后同一功能目录和状态文件还在,可以审计。
