AgentState 代理状态详解

910 字
5 分钟
AgentState 代理状态详解

AgentState — 代理状态详解#

一个公共代理(Agent)的状态。它主要服务于类似 AI 对话系统(例如基于大语言模型的智能体),记录了代理运行所需的核心配置、对话历史以及实时状态。

AgentState(代理的状态)— “三块记忆法”#

把状态分成三块:配置对话运行中

1. 配置(怎么干活)#

  • systemPrompt — 系统提示词(角色设定)
  • model — 用哪个模型(GPT-4、Claude…)
  • thinkingLevel — 思考深度(off / low / high)

2. 对话内容(记着什么)#

  • tools — 可用工具列表(数组,有防护)
  • messages — 聊天记录(数组,有防护)

3. 运行中状态(正在干嘛)#

  • isStreaming — 是否正在输出(只读)
  • streamingMessage — 当前输出到一半的消息(只读)
  • pendingToolCalls — 正在执行的工具调用ID集合(只读)
  • errorMessage — 最近一次错误信息(只读)

记忆口诀:配置、对话、运行中,三块记住不头痛。


字段详解#

具体各个字段和特性的作用如下:

系统提示词:systemPrompt#

系统提示词,每次模型请求都会携带,用于设定代理的角色、行为规则等。

当前模型:model#

当前激活的模型(泛型 Model<any>),用于后续的对话轮次。

推理级别:thinkingLevel#

请求的推理级别(ThinkingLevel),控制模型在回答时的”思考深度”或精细程度。

工具列表:tools(访问器属性)#

代理可用的工具列表(AgentTool<any>[])。 通过 set 赋值时会复制数组的顶层(浅拷贝),避免外部直接修改原数组;get 返回当前内部数组。这样设计可以让实现者在存储之前对数组做防御性拷贝。

对话历史:messages(访问器属性)#

对话转录(AgentMessage[]),即完整的对话历史。同样通过 set 赋值时复制顶层数组,get 返回内部数组,保证状态的安全更新。

流式状态:isStreaming(只读)#

代理是否正在处理提示或继续生成内容(流式响应)。为 true 期间会等待所有 agent_end 监听器执行完毕后才变为 false

当前流式消息:streamingMessage(只读,可选)#

当前流式响应中部分构建中的助手消息,用于实时展示生成的内容。

待执行工具:pendingToolCalls(只读)#

当前正在执行中的工具调用 ID 合(ReadonlySet<string>),用于追踪哪些工具调用尚未完成。

错误信息:errorMessage(只读,可选)#

最近一次失败或中止的助手轮次所产生的错误信息,便于上层进行错误处理或展示。


设计特点#

整体上,这个接口描述了代理的配置快照 + 运行时状态,并且通过访问器属性对数组类型数据进行只读或拷贝控制,增强了状态管理的可控性和安全性。它通常会被某个具体的代理类(如 Agent 实现)所实现,供外部调用者获取或监听代理状态的变化。

数组防护机制#

访问器属性的设计让状态更新更加安全:

  • Setter:浅拷贝数组,防止外部修改
  • Getter:返回内部数组引用
  • 目的:状态封装 + 可控更新

与其他核心类型的关系#

概念关系说明
AgentTooltools 数组的元素每个工具对象定义代理的技能
AgentLoopConfig使用 State 的字段LoopConfig 在各钩子中读取/修改 State
AgentMessagemessages 数组的元素记录每条对话的历史

简单说:

  • State = 这一刻的”是什么”
  • Tool = 技能卡
  • LoopConfig = 工作流程规则书

支持与分享

如果这篇文章对你有帮助,欢迎分享给更多人或赞助支持!

赞助
AgentState 代理状态详解
https://firefly.cuteleaf.cn/posts/learn-pi/agent-core-types/09-AgentState详解/
作者
AltumSisy
发布于
2026-06-13
许可协议
CC BY-NC-SA 4.0
Profile Image of the Author
AltumSisy
Hello, I'm AltumSisy.
公告
欢迎来到我的博客!这是一则示例公告。
音乐
封面

音乐

暂未播放

0:00 0:00
暂无歌词
分类
标签
站点统计
文章
32
分类
3
标签
25
总字数
68,347
运行时长
0
最后活动
0 天前

文章目录