Flowness / 设计解释

让工作拥有会话之外的地址

Flowness 的 Work 设计,把接手所需的目标、依据与剩余动作,组织成可以重新查询的当前状态。

纸与玻璃结构相连的编辑概念插画
编辑概念插画 · AI 生成

一项调度器修改,在交接时可能留下这样的记录:

目标:暂停接收新任务,让正在执行的数据导入完成。
产物:核心补丁已保存;命令行入口尚未接通。
冲突:当前补丁会取消运行中的任务,测试也验证了这个旧行为。
下一步:修正暂停语义,再继续接线。
执行者:暂无。

没有 Agent 正在运行,工作仍然有明确状态。接手者甚至可以在读完上一场对话之前,就发现眼前最重要的缺陷:核心代码与当前目标不一致,直接接线会把错误行为送到用户面前。

这张记录是教学示例。它展示的是 Flowness 在公开提交 c9d6abe 中提出的 Work 设计;该版本仍将完整的跨 Agent 延续路径列为设计状态,本文不将例子当成已经完成的运行。设计与证据状态

地址背后,需要能连回依据

Work 为持续工作提供稳定的查询入口。但一个编号只能帮助找到工作,不能保证打开以后看到的是当前事实。

Flowness 将 Work 设计为底层记录的投影。代码留在仓库,测试结果指向对应版本,判断和变化留在事件记录;工作视图把这些事实汇集起来。核心补丁换了版本,视图应当能指出测试究竟检查了哪一个版本,而不只是显示一个绿色的“通过”。

视图还带有时间位置。例如,as_of_seq 表示已经汇总到哪一个事件。假如当前视图停在事件 147,而负责人在事件 148 改变了暂停要求,系统就有依据识别这份视图尚未包含新决定。WorkView 的设计

这样的入口,可以比一份交接摘要更可靠地支持后续行动。摘要解释当时怎样思考;当前视图还需要知道,哪些解释后来已经改变。

执行者中断时,第一件工作是核对留下了什么:原执行是否确实停止,补丁是否已提交,哪些文件仍在临时工作区,哪些结果已经检查。恢复过程由实际状态决定,不能沿用上一个 Agent 关于“快做完了”的估计。

随后,为下一次动作准备上下文。Flowness 把这份材料称为 Context Capsule:从一个明确的事实截点,选入当前目标、相关版本、有效约束、产物和待解决问题。在调度器例子中,接手者先要解决暂停语义冲突;此时给它完整的历史聊天,可能反而淹没决定下一步的几份材料。运行状态核对与上下文编译

新 Agent 开始自己的执行,推进同一个 Work。它产生的结果经检查后,成为下一次查询的依据。

前提变了,完成记录也要重新解释

暂停需求最初可能被理解为“停止所有任务”。负责人随后确认,运行中的导入必须完成。这项变化影响的不只是任务说明。

旧测试虽然通过,验证的却是取消任务。核心代码、测试断言和命令行帮助,都可能依赖同一个旧前提。与暂停无关的日志格式,则未必需要重做。

要进行这种判断,系统需要保留两种依赖:任务在执行顺序上怎样相接,以及产物建立在哪一版解释之上。只有前一种,系统知道接线在测试之后;有了后一种,才能发现测试所依据的要求已经过时。

Flowness 将改变后续工作的观察称为 Finding,再由 Reflow 定位受影响的前提和依赖,组织后续工作。这里的观察可以直接写成:“核心实现取消了运行中的导入,与当前要求冲突。”随后,计划先回到核心行为,再检查在途任务确实继续完成,最后接通命令入口。Finding 与 Reflow 的设计关系

已有产物仍然保留,变化的是它们还能支持什么判断。旧测试结果可以解释历史,不能继续支撑新要求已经满足的结论。

局部返工能否省力,取决于依赖记录是否准确。缺失的关系需要调查;影响范围不清时,扩大验证可能比精细分类更便宜。因此,这套设计仍需要在真实修改任务中检验:它帮助接手者少走了多少错路,又增加了多少记录成本。

持久化执行本身已有成熟工具。Temporal 可以通过事件历史恢复工作流状态,并接收 Signal、Update 等新输入;LangGraph 可以用检查点和持久化存储保存图状态与跨线程数据。Temporal 工作流、消息传递、LangGraph 持久化

Work 模型关注的是存下来的状态应怎样解释:目标的版本、被替代的判断、受影响的产物,以及接手者现在应该取得的材料。这些规则可以建立在现有执行引擎上。如果工单、仓库和工作流已经把关系保存完整,再造一份平行数据库只会增加同步负担。

“完成”以后,地址仍然有用

修好核心逻辑,并不代表后续工作都消失了。Flowness 区分四种状态,它们对应不同的接续动作:

状态 调度器例子中的含义
做成(built) 已有可检查的暂停功能产物。
接入(integrated) 命令入口与实际调用路径已经接通。
实际启用(activated) 目标环境中的自然使用确实调用了这项能力。
接受(accepted) 负责验收的人确认结果满足需要。

实际启用的定义排除了测试、演示、演练和仅完成部署。负责人的接受也应有明确对象,能够指出认领的是哪一版结果。启用与接受的定义

这让等待变得具体。功能可能已经接入,但还没遇到实际暂停需求;也可能真实使用过,负责人尚未验收。此时不需要让 Agent 一直运行,只需要保留等待的事件、负责的人,以及重新检查的条件。

等条件满足,再打开同一个 Work,核对当前版本,开始下一次动作。公开的接手演示规格准备检验的也是这条路径:执行者中断后,新执行者能否依据持久状态继续,而不依赖旧 Agent 的临时记忆。接手演示规格

对维护者而言,那个地址最终应当回答一件实际的事:今天再来处理调度器,应该从哪里动手。能持续回答它,工作才有机会跨过会话结束、人员更替和需求变化。

下一步

如果你的团队正在把 agent 放进真实业务,想了解 Flowness,或想聊企业 AI 落地怎么做,请在“联系我们”页写下行业和想解决的问题,我们按这些内容回复。 联系我们