使用文档

一直活着的 Agent

The One 的 Agent 不是调用完就消失的函数:每个 Agent 有自己一直运转的生命循环,睡着、出错、应用重启之后都还在。

The One 的 Agent 是活着的,不是被调用一次就结束的函数。每个能运行的 Agent 都有自己一条不停的生命循环,并且只通过自己的工具决定自己的状态。

醒着、睡着、出错

  • 醒着:一轮接一轮地推理和行动,见 ReAct 与回合。
  • 睡着:Agent 用 sleep_node 歇下,但它没有消失。它的循环每秒看一眼自己的状态,你的消息、别人交过来的工作、一个回答或一个后台结果,都会叫醒它。它的上下文一直都在,随时可以查看。
  • 出错:模型服务出错、连不上时,Agent 不会被放弃。它按越来越长的间隔重试,间隔最长 10 分钟,之后就按这个间隔一直试下去;服务商要它多等时(比如用量窗口用完了),就等得更久。如果是凭据被拒,你在设置里换了这个连接的凭据后,它会在几秒内再试一次;在对话里点现在就试也一样。

存下来的状态才是真的

一个 Agent 醒没醒、在做什么,以存下来的状态为准,而不是以某段内存为准。叫醒一个 Agent,就是把它的状态写成“醒着”;它的循环读到,就醒来。所以:

  • 你关掉应用、电脑重启,或者应用崩溃了,什么都不会丢。再打开时,每次运行都照存下的样子回来,只是先暂停着;正干到一半的 Agent 标着出错,让你看得出它被打断过。你恢复这次运行,或者给它发一条消息,原来在干活的 Agent 就接着干。触发器开的运行会自己接着做;Agent 自己要求的重启(restart_desktop_application)也一样,重启后原来在跑的运行自己接着跑。
  • 一个本该在跑的 Agent 万一丢了它的循环,宿主每分钟巡检一次,把它找回来。
  • 新消息和“这一轮结束”同时到时,新消息赢:Agent 醒着去回,不会出现消息存下了、Agent 却睡着没人回的情况。

暂停和打断

  • 暂停是协作式的:Agent 先做完手上这一步,在两轮之间停下。宿主自己只用这种暂停,比如用量到了你设的边界。
  • 打断和急停只有你能做,而且立刻生效。打断一个 Agent,它手上的这一步就停下;急停所有 Agent 中断所有 Agent,结束它们启动的命令,并暂停所有运行,直到你恢复。恢复以后,原来在干活的 Agent 接着干。见行动记录、撤回和急停。

为什么这样设计

一个要替你长期做事的助理,不能因为一次报错就放弃,也不能因为应用重启就忘了手上的活。每个 Agent 一直活着、以存下来的状态为准,它才能像一个靠得住的同事:歇下了,叫一声就回来;出错了,过一会儿自己再试;你不在的时候,事情照样往前走。