
很多团队把 Harness 理解成「能调用工具的聊天框」。真正把 Agent 嵌进产品之后,最先暴露的缺口通常不是工具不够多,而是会话断了接不上:进程重启、终端关掉、审批弹窗超时、人切走十分钟,回来发现上下文没了,只能从头再跑。
Codex App Server 把 Thread 做成可持久化容器,能 start、resume、fork、archive;DeepSeek Harness 的 ACP 服务也把 session/load、session/resume、session/list 写成一等协议。这不是产品彩蛋,而是 Harness 相对框架和 MCP 真正该交付的能力。
把历史消息再喂一遍,看起来像 resume,其实经常已经偏了。缺的是三类状态:
少任何一类,恢复后的 Agent 都会用笃定语气继续,但脚下的世界已经变了。这就是长任务里最贵的一类故障:看起来在工作,其实在空转。
把一次任务看成 Thread,里面是若干 Turn。Turn 可以因审批、超时、用户打断而停住;Thread 本身还在,下次从边界接着跑。
fork 的价值在分叉而不是复制闲聊:同一个已完成的前置工作,可以派生出两条路径做对比,而不必把已付过的上下文成本再付一遍。archive 则是承认:有些会话该被冻结,而不是永远占着热路径。
跨进程恢复(session/load)还要求有一份只追加的事件日志。没有事件流,所谓恢复只能靠猜「当时大概说到哪」。
嵌产品时,更稳的做法通常不是 fork 一份 Core,而是固定一版经过验证的 App Server / ACP 进程,差异化放在界面、业务上下文、MCP 工具和审批规则里。
最小闭环也很朴素:
协议 Schema 至少要覆盖:初始化、恢复、派生、审批拒绝、工具超时、Turn 中断、历史迁移。这些测过,升级才不会把线上会话变成孤儿。
resume 只保证「还能说话」,不保证「还在正确的世界里」。文件检查点、幂等工具、独立验收,都是恢复的配套。
一个可用的自检是:关掉聊天窗口,只留日志、进度文件和验收结果,你能不能判断任务成败、该从哪一步接。如果不能,系统还停留在聊天,而不是交付。
没有前三步,fork 只会把混乱复制一份。
MCP 不负责记住你跑到哪,框架的 checkpointer 也不自动等于业务可恢复。Harness 的本职之一,就是让任务在中断之后仍然接得上:会话在、副作用可核对、审批可续上。能 resume、能 fork,生产才从「演示能跑」变成「无人值守也敢跑」。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。