(agentid_and_lifecycle)= # Agent身份标识与生命周期 Agent运行时负责管理agents的身份标识和生命周期。应用程序并不直接创建agents,而是通过注册agent类型及其对应的工厂函数来生成agent实例。本节将解释运行时如何标识和创建agents。 ## Agent ID Agent ID在agent运行时(包括分布式运行时)内唯一标识一个agent实例,是agent实例接收消息的"地址"。它由两个组成部分构成:agent类型和agent键。 ```{note} Agent ID = (Agent类型, Agent键) ``` Agent类型并非agent类,而是将agent与特定的工厂函数相关联,该工厂函数用于生成相同agent类型的实例。例如,不同的工厂函数可以生成相同的agent类但使用不同的构造参数。Agent键则是给定agent类型的实例标识符。 Agent ID可与字符串相互转换,其字符串格式为: ```{note} Agent类型/Agent键 ``` 当类型和键仅包含字母(a-z)、数字(0-9)或下划线(_)时被视为有效标识符。有效标识符不能以数字开头,也不能包含任何空格。 在多agent应用程序中,agent类型通常由应用程序直接定义(即在应用代码中定义),而agent键则通常根据传递给agents的消息生成(即由应用数据定义)。 例如,运行时注册了agent类型`"code_reviewer"`,其工厂函数生成的agent实例执行代码审查任务。每个代码审查请求都有唯一的`review_request_id`来标识专属会话。这种情况下,每个请求都可以由具有Agent ID `("code_reviewer", review_request_id)`的新实例处理。 ## Agent 生命周期 当运行时(runtime)根据ID向某个agent实例传递消息时,它会先获取该实例,如果实例不存在则创建新实例。 ![Agent生命周期](../assets/agent-lifecycle.svg) 运行时还负责对agent实例进行"换入"或"换出"操作,以节省资源并在多台机器间平衡负载。该功能目前尚未实现。