返回资讯中心
外部精选
软件工程
#开发者实时流

开发者探讨如何设计常驻型AI Agent

来源标题:Designing an Always-On Agent

一篇技术文章讨论了如何设计始终在线的Agent(类似钢铁侠中的Jarvis),而非当前需要用户主动触发才响应的聊天机器人。作者认为,人们对于是否已实现AGI的分歧更多源于产品形态而非模型能力,并提出常驻型Agent应能主动感知环境、统一处理各类任务。文章还分析了当前模型在实现这一形态上的局限。

Hacker News 最新handfuloflight2026/11/8 · 5 天前24 分钟阅读

以下正文由 AI 翻译自 Hacker News 最新(原文版权归原站所有),可能存在偏差,重要内容请以原文为准。

在ChatGPT发布之前,我常常想象AI会像《钢铁侠》里的Jarvis那样。我想象它始终在运行,有个性,并且对我周围环境的感知和我一样。

但如今的聊天机器人和agent并非如此。我们为了完成任务和项目而启动它们,但如果不给它们发消息,就什么也不会发生。它们干巴巴的、机械刻板,只知道我们给它们的上下文。

我有个直觉:人们之所以对“我们是否已实现AGI”意见不一,更多是因为产品形态,而非模型能力。

(过度)简化地说,我会把这种always-on、Jarvis式的形态定义为:

聊天机器人与always-on agent

这篇文章里,我们聊聊我们如何为always-on agent设计架构,以及当今模型的哪些局限让这件事变得困难。

与其管理一堆不同的对话线程、为每个线程配置好工作所需的正确上下文,我们只想跟一个“AI”对话——它了解我们,替我们处理一切。

假设我们一觉醒来病了。我们希望一个agent就能取消会议、点汤、查症状,必要时还能预约医生。

乍一听这很简单:把所有东西统一到一个线程里,称之为单线程agent就行了。难的是上下文窗口管理,因为把所有东西都塞进一个agent,很快就会把它的上下文窗口填满。

我们还常常想同时做几件事。预约医生或点餐可能要花些时间,因为它们是比较重的浏览器操作任务,而我们希望一边继续聊症状,一边不必等其它事情全部做完。

Compaction是管理上下文窗口的事实标准,但我们发现,compaction会让agent的势头被“切除脑叶”,尤其是当它由第三方进程执行时。

更合理的做法是给agent提供compact的工具,并让它感知自己上下文窗口有多满,然后由它自己管理token,这样它既能保持势头,又能避免溢出。

在实践中,我们的agent倾向于等到一个间隙——比如任务结束时——再执行compact。然后它们把不会再需要的推理过程和工具调用折叠收起,保留一切仍在进行中的内容。

一个agent折叠并丢弃自己的上下文

Dispatch

即便有良好的compaction,如果agent把所有重活都放在一个线程里做,这个线程也会很快被填满。所以我们还给主agent配备了可以派发工作的sub-agent。

这是一石二鸟:既释放了主线程,让它容纳更多关于全局的、更高层的上下文,又让agent能在更深层的工作上多任务并行——比如点餐和预约医生——同时还能继续跟你对话。

点汤在附近找汤鸡肉面,14美元结账中下午12:40送达 预约医生查询保险今天有3个空位预约下午3:15已预约下午3:15

一个线程里的病假一天,配两个sub-agent

Proactive

Proactive agent无需被提示就能做事,也能主动发消息。比如,agent知道你周三要飞Austin,它可以找到你Airbnb的入住信息,规划出从机场到那里的最佳路线,并在你落地时把这些一并发给你。

要在架构上解锁这种行为,我们首先得摆脱agent基于请求的本质。典型的系统运作起来很像同步函数:我们发一个请求,然后等agent返回。

要实现proactivity,agent需要在它想醒着的时候醒着,并且无论我们有没有给它发请求,都能给我们发消息。

我们给agent一个heartbeat。heartbeat就是一条简单的消息“heartbeat”,我们把它推入聊天历史。如果agent在休眠,它会把agent唤醒。

我们可以按固定节奏运行heartbeat(比如每小时一次),也可以让agent通过安排自己的heartbeat来管理自己的清醒状态。

我们还给agent一个向用户发消息的工具。在普通聊天中,agent在一轮中的最后一条消息就是对我们的回复。而在这里,只有当它调用这个工具时,消息才会到达我们,所以它可以醒来、做点事,然后判断没什么值得说的。它的最后一条消息会留在该线程里,作为它自己关于发生了什么事的备注。

在Austin那个例子里,agent在一次例行heartbeat中醒来,发现了航班。它派一个sub-agent去汇总路线和入住信息,然后安排在航班落地前后再来一次heartbeat,好在合适的时机给你发消息。

我们正在从用AI构建产品中学到的东西。每月两封简短邮件。

Situational awareness

Proactivity的前提是知道自己正在做什么、什么时候做。我们希望agent能够根据我们不完整的信息采取行动,并且像Austin例子那样,甚至能根据来自外部世界的触发因素开始工作,而不仅仅是我们直接下达的指令。

在基础层面上,我们可以通过广泛的访问权限来实现situational awareness:给agent对我们邮箱、浏览器和文件系统的完全访问权,让它能发现我们预订的航班和住宿、搜索过往订单,并从我们的行为中发现模式,从而浮现出我们的偏好。

这里的一个简单诀窍就是给agent提供computer use工具,并让它访问我们的电脑。coding agent靠一个在我们电脑上运行终端命令的简单工具就变得很强大,通用agent用computer use也能做到同样的事。

但agent不知道自己不知道什么,而在技术上具备发现上下文的能力,往往不足以实时理解正在发生什么。

所以我们给agent一个通知系统,信息一可用就被注入agent的上下文窗口。通过订阅世界中的事件,agent可以更早发现重要上下文,并在需要时介入。

(原文较长,此处译出前 6000 字,完整内容请点「打开原文」。)

正文由 探How 从来源站点 RSS 同步,内容未经改写;遇到排版缺失或需要图片、视频时请以原文为准。

打开原文
去社区讨论 →