许多重要的任务,并不是在有人积极处理时失败的。它们失败在空档里。
供应商还没回复。一份报告依赖明天才到的数字。一个浏览器会话开在一台电脑上,而能批准下一步的人在另一个时区。等依赖终于解除,最初的对话早已被淹没,没人记得工作到底停在了哪里。
常驻的私人智能体应该擅长处理这些空档。它不需要持续思考,也不需要让一台电脑全功率运转。它需要保住责任:它接下了什么结果、已经做了什么、在等什么、工作材料放在哪里,以及什么事件或决定能让任务继续。
这就是长对话和长期工作的区别。长对话存的是消息。长期工作需要一个持久的运行状态。
长期工作需要一个持久的 Task,而不是更长的对话
对话适合用来确立意图,却不适合作为承担责任的单位。
假设你让智能体在财务完成月结后准备一份董事会汇报。有用的状态不只是你最初的请求,还包括已经拼好的草稿、核对过的源文件、缺少的数字、预计提供这些数字的人或系统、会议的截止时间,以及最终汇报必须达到的标准。
在 Comma 里,需要的不只是一个快速回答的工作会变成一个 Task。根据 Comma Task 文档,Task 可以经历进行中的工作,在需要人来决定时停在 待审核,并在工作完成时进入 已完成。重要的不是标签本身,而是聊天关掉之后,这份责任依然存在。
一个持久的 Task 应该始终能回答六个问题:
没有这些答案,“我稍后继续”只是乐观。有了它们,这句话才成为计划。
等待是一种状态,而不是失败
大多数有用的工作都包含正当的等待。错误在于把每一次暂停都当成故障,或者当成无限轮询下去的理由。
智能体应该识别自己进入了哪一种等待,并附上清楚的退出条件:
这些区分很重要,因为每种等待需要不同的做法。等时间的 Task 可以睡到检查点。等事件的 Task 可以盯着一个定义得很窄的变化。等环境的 Task 应该说明是哪台设备或哪个工具不可用,而不是悄悄换个地方去做。等决定的 Task 应该把一个表述清楚的选择交还给拥有它的人。
暂停也应该有边界。如果预期的回复一直没来,智能体需要一个后备方案:提醒负责的人,问用户是否按假设继续,或者把 Task 以受阻状态关闭。否则,一项后台责任可能在技术上仍然开着,实际上却已被遗弃。
这也是为什么常驻不应该意味着一直打扰。哪些事件值得唤醒智能体,其中又有哪些值得打扰用户,这个单独的问题在常驻的私人智能体应该在什么时候醒来?里讨论。这里相关的原则更窄:每一次暂停都需要一个看得见的理由,以及一条明确的回到工作中的路径。
从检查点恢复,而不是从新的情况介绍开始
等待结束时,智能体不应该从零散的消息里重新拼凑任务,也不应该让用户再解释一遍。它应该从检查点恢复。
一个有用的检查点,是对工作现状的精简记录:
最初的结果和当前的完成标准;
最近一次有意义的行动及其结果;
已经创建或修改的产出物;
仍然有效的假设;
导致暂停的阻碍;
阻碍解除后打算采取的下一步行动;
这一行动必须在其中进行的环境。
这是工作状态,不是个人记忆。记忆可以帮助智能体在许多任务中记住一个人的偏好。检查点的存在,是为了让某一项具体的责任在闲置、重启或交接之后准确地继续下去。
这种区分能避免两种常见的失败。第一,智能体不应该把一段长对话里的每个细节都拖进今后的每一步。第二,它也不应该把 Task 压缩得太狠,以至于一个关键约束消失了。检查点是有选择的:它保留下一步行动所依赖的东西。
Comma 的底层系统在不止一个层面上体现了这种模式。Salix 的 Loop 可以为自己的状态设检查点,让一个有界的后台进程在重启后恢复。这套基础设施并不能替代一个定义清楚的 Task,但它体现的是同一条连续性规则:恢复应该从已知的状态开始,而不是从猜测开始。
让工作留在它真正需要的环境里
长期工作很少发生在一个抽象的“AI 工作区”里。它发生在邮件、文档、项目工具、浏览器、本地文件和专业软件里。因此,连续性也包括工作所在的位置。
Comma 可以在已连接的应用和文件、一个人自己的电脑或它自己的云电脑上工作。Salix 文档说明,云电脑的存储在两次使用之间会保留,即使虚拟机在空闲时可以休眠。文件和工具可以留在智能体离开时的位置,Task 需要时,电脑可以再次醒来。
有些工作必须留在某台特定的设备上。一个本地的设计文件、一个已登录的桌面应用或一个开发环境,可能只存在于一台连接的 Mac 或 Linux 电脑上。Comma 的智能体运行时文档对这个边界说得很明确:如果指定的外部设备离线,工作就会等待或失败;Salix 不会悄悄把它挪到另一台机器上。
这个限制是一种有用的信任特性。自动迁移看起来也许方便,但它可能改变可用的文件、权限、凭据和执行条件。可靠的智能体应该让这个边界看得见:
下一步需要名为 “Studio”的那台 Mac。它目前离线。Task 正在那里等待;没有任何工作被挪到云电脑上。
用户现在既知道进展为什么停下,也知道什么能让它恢复。智能体可以在设备回来时重试,或者问用户能否接受另一个环境。它不应该假装所有运行时都可以互换。
只交还属于这个人的决定
把工作交还给人,并不是自主的失败。这正是私人智能体保持“做事”和“承担后果”之间区别的方式。
属于这项任务范围内、例行且可逆的步骤,智能体应该继续做下去。当它遇到实质性的含糊、权限的边界、不可逆的外部行动,或者一个取决于用户偏好而非现有证据的选择时,就应该交还控制权。
交接本身应该很小。糟糕的交接会说:“我卡住了,我该怎么办?”有用的交接包含:
什么变了: 让原先计划失效的新信息或新条件。
什么已经完成: 智能体在提问之前已经做完的工作。
还剩什么决定: 一个明确的选择,而不是请用户重新管理整个 Task。
各个选项会改变什么: 每条路径有意义的后果。
这个选择什么时候要紧: 截止时间,或者等待会带来的影响。
接下来会发生什么: 得到答复后智能体会继续的行动。
例如:“场地只能把这个日期保留到周四。我核实了取消条款,并准备好了预订信息。现在批准就要付定金;等待能保留灵活性,但可能失去这个档期。要我提交预订吗?”
Comma 用 待审核 来承接需要这种人工决定的工作。Task 会围绕这个问题保持完整,所以一个答复就能放行下一步行动,而不必重新开始一轮规划。
“已完成”需要证据和收尾
一个长时间运行的 Task,并不会仅仅因为智能体停止了行动就算完成。它可能超时了,可能用尽了重试策略,可能产出了一份仍需审核的草稿,也可能走到了权限的尽头。
收尾时应该说明:
被要求的结果;
实际产出的结果;
创建或修改的产出物;
做过的检查;
任何尚未解决的限制、假设或后续事项;
外部行动是已经执行了,还是只准备好了。
这份记录让用户不必回放整段历史就能检查工作。它也避免了“Task 已不在运行”和“结果已经达成”之间一种危险的混淆。
已完成是一个工作流状态,不是真实性证书。 智能体可以核实一个文件已经创建、一条命令已经成功或一条消息已经发出。它无法靠改一个状态,把不确定的源材料变成确定的事实。结论仍然需要恰当的证据,有后果的工作也可能仍然值得人来审核。
一套适用于跨越数天工作的实用流程
把一项持续多天的责任交出去之前,你不需要先设计一套编排系统。一个好的请求,用几行话就能把基本约定立起来。
先说清楚结果,以及什么叫“足够好”。指出硬性截止时间和更早的决策窗口。说明哪些行动智能体可以不问就做,哪些需要批准。告诉它源材料和工作文件应该放在哪个环境里。
然后把等待说明白。告诉智能体预计会等哪一项依赖、什么时候再检查,以及如果它一直没来该怎么办。要求它在每次暂停前留一个检查点,只交还真正需要你做的决定。最后,要求一份收尾说明,包含产出、检查和剩下的不确定之处。
一份精简的委托可能像这样:
财务发布月结数字后,准备最终的董事会汇报。使用云电脑里现有的草稿和工作簿。你可以更新草稿、核对合计,但对外发送任何东西之前要先问我。如果到周二中午数字还没到,告诉我哪些部分受阻,并提出风险最小的后备方案。完成后,交回文档、核对过的来源以及仍然存在的假设。
价值并不来自把提示写得多复杂,而是来自给 Task 一组清楚的状态让它经历:已接受、进行中、等待中、待审核、已恢复和已关闭。
常见问题
长时间运行的 Task 在等待时,什么仍在起作用?
Task 保留着结果、已完成的工作、当前的依赖、检查点和恢复条件。执行环境可以休眠,也不需要任何模型持续推理。如果有一个范围很窄的 Loop 在盯着缺失的条件,它与持久的 Task 状态是分开的,后者告诉智能体条件到来后该做什么。
如果 Task 需要的电脑离线了,会怎样?
如果 Task 被指派给那台设备上的外部运行时,工作会等待或失败,直到设备可用。Salix 不会自动把它挪到另一台电脑上。Task 应该把受阻的环境和恢复条件说清楚。
Task 状态和智能体的记忆是一回事吗?
不是。Task 状态描述的是一项责任:它的结果、进度、产出物、阻碍和下一步行动。个人记忆可以跨越多项责任,可能包括长期的偏好。一个长时间运行的 Task,应该在不把每个工作细节都变成永久记忆的前提下就能恢复。
智能体应该怎样等待另一个人?
它应该记录请求了什么、向谁请求、什么时候算回复迟了,以及适用什么后备方案。如果某个事件可以被监视,它就应该盯着那个事件,而不是反复打扰用户。一个没有升级规则、无限期的等待,不是完整的计划。
什么应该放进待审核?
用于真正属于用户的决定或权限:有后果的取舍、含糊的意图、不可逆的外部行动、敏感的承诺或新的授权。智能体应该附上它已完成的工作,并请求能解锁进展的最小决定。
已完成意味着结果是正确的吗?
已完成意味着 Task 达到了它声明的完成条件。可信度仍然取决于它的来源、检查和审核的质量。一份有用的完成说明,会把核实过的事实、假设和未解决的风险分开。
连续性就是产品
使用常驻私人智能体最有力的理由,不是它能进行一场不间断的推理马拉松,而是它能带着一项责任穿过真实工作中那些平常的中断:休眠的电脑、迟到的回复、按计划到来的数据、变化的条件,以及必须由人来决定的时刻。
这种连续性建立在看得见的状态之上。Task 知道自己欠着什么,等待有理由,环境有名字,交接有边界,完成带着证据。当这些部分都能挺过空档,你就可以离开工作而不是抛下它,回来时也不必从头重建。


