一种理想的智能体编排架构
一种理想的智能体编排架构
一、设计理念与理论基础
1.1 类比:生物脑 vs 计算机 vs LLM
生物脑/人脑的核心组成要素:逻辑能力、长期记忆、短期记忆。
-
计算能力(ALU):计算机中是 ALU,LLM 对应为 LLM 本体(语言 ALU)。
-
寄存器:计算机中是寄存器,LLM 对应为 KV cache。
-
指令:计算机中是指令集,LLM 对应为模型权重。
-
内存(短期记忆):计算机中是 RAM,LLM 缺失(需补充)。
-
硬盘(长期记忆):计算机中是磁盘,LLM 缺失(需补充)。
几种记忆/状态存储形态的对比:
-
KV cache:不断增长的、被动态调度执行(通过新 prompt)的计算器。
-
SSM / RNN 状态:固定大小、不断被更新的状态存储器。适合批量处理一段文本时只关心区域内语义、不需要全局语义的场景;也适合动态生成句子的 meaning tree,处理可被层级抽象、组合的表示意义。
-
外存:长期记忆的存储器,可被检索和更新。
1.2 关于"意识"与"语言"的基本观察
-
意识主要存在于短期记忆中,长期记忆也需要保持自洽性。
-
短期临时记忆维护了当前意识,信息容量相对固定,不会太大。其本质是:
-
语义压缩 + 上下文存储,上下文处理是一个"信息压缩"过程。
-
记忆过程 = 不断把未知输入换成大脑内部已有知识的表达,持续匹配知识、确保自洽,不断根据输入修正大脑(上下文)当前的主观感觉、想法、语境。
-
-
外界输入的目的:让大脑内部根据已有的知识点组织出一个意识/想法。对文本的理解和记录,本质上与 LLM 一致——文本是串流的,准确的编码过程与 LLM 一致。
-
语言是大脑的工具,不是智能本身:大脑不断重新组织语言,由中心意识判断是否符合中心思想再决定输出。最核心的是人类的意识(即临时的状态记忆)。
-
人类处理语言的过程 = 通过语言表达的信息不断修正短期记忆中的观点、感觉、意识。
-
说话是这个过程的逆过程。
-
-
自我提供了人性本能的最高层级抽象。
-
LLM 只是个强大的计算器——利用这个计算器 + 记忆,就能实现强大的智能。
1.3 参考与相关工作
-
基于 Transformer 的带额外记忆单元的技术/模型:
- Meta 的 Free Transformer(自由 Transformer):增加一部分算力和参数维护额外状态。
-
与普林斯顿的 CoALA 有相似之处,但本架构更强调基础设计抽象:自洽、LLM 即计算器。参考:https://zhuanlan.zhihu.com/p/1909206010096259088
二、通用智能的特性
2.1 意识(当前意识的存储容器,临时记忆)
-
人设:长期稳定、缓慢改变的预设特征。
-
当前注意力表达:根据输入输出不断改变,容量有限。
-
固有特征状态:固有状态、情绪。
-
高度自洽。
2.2 记忆(知识的存储)
-
强大的分级信息检索。
-
区分临时记忆与长期记忆。
-
自动遗忘、热度排序。
旁注:自动遗忘与热度排序作为未来演进方向列出。当前 WeaveAgent 工程设计未采纳这两项——短时记忆随 Frame 生命期自然消亡,长时记忆以关键词树组织、不使用热度概念(详见
Agent/WeaveAgentDesign.md§13)。
2.3 基本行动规则、准则与方法
-
自我、人性化:维护基本需求、价值观、好奇心、模仿学习。
-
总结抽象、自动学习和迭代各种技能。
-
自洽。
-
调用和整理记忆。
2.4 本能(认知核心,对所有任务都有效,全局的)
-
行动的规划、创建、调度、执行。
-
先思考,再行动。
-
自动触发记忆检索。
-
自动的反思总结、学习、记忆能力。
-
抽象能力:提取意识的基础特性,做高层次抽象。
-
自洽能力:
-
解决意识的所有矛盾。
-
实现大范围、高深度的信息自洽。
-
必须掌握足够多的项目信息后才能开始工作,否则主动探索、创建信息,并在执行任务后更新。
-
-
很多偏抽象的能力共同体现了"人性化",需要自我意识来调度这些本能。
2.5 技能(特定领域的后天习得能力)
-
各领域的方法学、科研能力。
-
能够输出特定领域的行动计划。
-
处理特定领域的信息,生成特定领域的结果。
-
能够影响到行动的核心决策逻辑。
三、编排器设计目标
-
自我意识、人性化
-
精心设计的
prompt。prompt。 -
把人格从大模型内部,移出来到编排器。
-
-
大范围、高深度的信息自洽
主动的检查和主动的行动逻辑判断。主动的检查和主动的行动逻辑判断。
-
不仅保证上下文/临时记忆的自洽,还能主动读取长期记忆进行判断与校准。
-
分层的信息组织方式。
-
包含任务控制的提示词 + LLM 显式的任务管理 +
本地运行的任务组织。本地运行的任务组织。
-
自动进化、自动学习
- 灵活的记忆接口 +
预设的学习本能任务。预设的学习本能任务。
- 灵活的记忆接口 +
-
降低对 LLM 上下文的需求
-
Frame /
任务树的抽象。任务树的抽象。 -
快速、动态的逻辑推理:很短的上下文,形如"如果 xxx 是 xxx,那么 xxx 就是 xxx"。
-
本地可直接执行的逻辑操作:大量、大范围的明确逻辑操作。
-
-
支持高效的信息检索
weavemind。weavemind。
-
支持复杂的带逻辑条件的检索。
-
支持自然语言的语义检索。
-
核心优势/功能核心特点/功能/优势- 逻辑思维链条的管理和总结
- 自动的总结和反思和改进
- 自洽的灵魂要求
- 多层,灵活,健壮,
自洽的记忆系统自洽的记忆系统
四、核心抽象与机制
4.1 智能主体的描述
-
人格与个性:价值观、灵魂。
-
核心动机:
-
行动力:总是为了解决任务,想着下一步干嘛,"完成任务"是重要目标。
-
自洽:保持信息合理性。
-
人性、自我:维持人性。
-
基本价值观、好奇心、模仿学习、总结抽象。
-
-
行为逻辑描述:
-
方法学、技能、计划树、todolist。
-
任务调度的方法学描述。
-
理性的行为逻辑模式。
-
感性的行为逻辑模式。
-
4.2 临时记忆(当前状态信息的记录)
-
作用:意识节点,提供当前的背景信息,是"意识"的存储实体。
-
标准操作接口:
-
临时记忆的加载与遗忘。
-
临时记忆的读取与分析。
-
寻找/创建/修改/删除。
-
通过 Frame 的包装接口访问。
-
4.3 长时记忆(通用存储容器,可存任意信息)
-
标准操作接口:
-
寻找/创建/修改/删除。
-
记忆之间有复杂的索引。
-
基于关键词的信息分类存储。
-
当前项目相关知识的多层级动态组织。
-
外挂知识操作接口(支持大量永久记忆)。
-
接口形态说明:长时记忆是结构化的知识图(关键词树 + Info 节点 + 多对多关联),其物理接口以
Search / CreateKeyword / CreateInfo / LinkInfo / MergeKeywords等专用操作呈现,与短时记忆的通用 CRUD 基类不共享继承关系。两者概念上都是"寻找/创建/修改/删除",实现上是两套接口。详见Agent/WeaveAgentDesign.md§8。
-
存储内容:
-
知识、信息。
-
各种 skills / tools 的使用方法与方法学:
-
使用文本描述。
-
编程执行任务。
-
GSD 方法学的自动设计与自动优化。
-
-
外部工具、接口的使用方法(笔记本、计算器等)。
-
4.4 任务 / Frame 抽象(统一的任务与思维单元)
注:Frame 是最通用的抽象——表达大脑的一个思考任务、一个上下文片段、一个工作片段、一个 handle、一个阶段性思考过程。
4.4.1 任务/Frame 的上下文
-
任务的 ID、任务的存储空间。
-
任务的类型、性质:探索型 / 固定成熟任务 / 思考研究。
-
任务过程的描述。
-
任务创建的原因。
-
预期达到的结果、目标。
-
依赖的任务、前置任务、背景。
-
下一步的计划、规划。
4.4.2 任务/Frame 的状态
-
实际结果:失败 / 成功。
-
执行的所有过程。
-
执行的历史信息和当前状态。
-
思维逻辑的记录。
-
执行结果的总结、学习、记录。
4.4.3 组织形式:分层树状结构
-
通过分层的树状任务组织架构实现:细节分层隔离 + 全局信息全览。
-
LLM 输出格式化的任务图(任务描述、功能、任务之间的关系),本地自动执行。
-
SubFrame List nested to tree。
-
计划树 = 本地数据结构,用本地代码执行:
-
记录所有计划与执行情况。
-
每个节点是一个 skill,有 prompt、输入、输出、执行脚本。
-
LLM 执行节点任务,有明确的输入、输出、调用要求。
-
根节点:"你是个有用的助手,等待接收具体的任务。"
-
节点执行失败可触发重新设计节点的拆分、提示词,成功后更新节点(提升效率、节省 token)。
-
技能库保存所有可用 skill,可输出 prompt 描述当前技能库情况。
-
生成/更新规划时,可基于整棵树生成整体状态快照。
-
4.4.4 自洽要求
-
创建的原因、逻辑关系、需要达到的效果都要明确。
-
所有的行动都要有合理的理由、逻辑链条、结果。
4.4.5 思维树操作(LLM 对 Frame 树的动作集)
这是"复杂化的 TodoWrite"——LLM 在操作这棵树,可扩展节点、放大分支、合并节点、查看节点详细信息。文本 + 逻辑决策 = prompt 生成。
-
扩展:这个问题可以分为以下几个步骤。
-
总结:总结下 xxx 模块在 xxx 方面的设计规则。
-
尝试:我们先尝试以下一个方案。
-
回退:当前方向是错的,回退到前面的第 5 步。
-
收集:当前问题需要先获取 xxx 的信息。
-
抽象:对当前节点任务及子任务进行精炼,按模板生成 skill。
-
笔记:记录临时信息到笔记,并返回笔记段的名称和索引。
-
学习:把指定的信息或笔记写入永久记忆。
-
搜索记忆 / 记录临时记忆 / 规划下一步行动。
-
判断问题需要采用的方法。
4.4.6 Frame 的接口
-
子 Frame 的完成通知(经事件总线,非直接方法回调——子更新自身状态后由调度器通过
SUBFRAME_DONE事件唤醒父)。 -
父 Frame 的输入激励。
-
检查当前 Frame 的状态、历史、完整思维逻辑。
-
Frame 与 Session 的接口交互:
-
task 的格式化返回:失败 / 成功 + 结果。
-
task 的创建:收集信息、分析当前问题。
-
-
每个 Frame 对应一个独立的上下文。session 上下文 与 Frame 状态 分离。
4.4.7 Frame 可见的工具
-
工具(文件操作、记忆读写、子 Frame 管理等)统一注册在 Agent 全局的
ToolRegistry,Frame 不持有本地工具实例。 -
工具以分层路径组织(如
memory/*、frame/*、file/*、skill/*),支持简短的多层索引。 -
每个 Frame 只持有全局 Registry 的引用;
Frame.Next()在组装 prompt 时按当前状态 / 动作集按路径前缀拉取可见子集注入 System 段,达成"分层加载"的效果。
4.4.8 上下文布局与压缩策略("两端有用,中间可丢")
设计原则:让上下文压缩变成一次安全的"中段截断",而不是一次复杂的摘要工程。
本架构对每一次送给 LLM 的上下文采用严格三段式布局:
┌──────────────────────────────────────────┐
│ [TOP] System 段 │ ← 长度可控、永远有用
│ 人格 / 价值观 / 当前 Frame 的 system │
│ prompt / 可见工具集(按 §4.4.7 注入) │
├──────────────────────────────────────────┤
│ [MID] 历史段 — 思维过程、工具调用与返回 │ ← 长度可增长、可被安全裁剪
│ ……过去的思考轨迹…… │
│ ……过去的工具调用结果…… │
├──────────────────────────────────────────┤
│ [BOT] 有效段 — 当前推进所需的最少信息 │ ← 长度已知、远小于 LLM 上限
│ 最近一段对话 / 最新工具返回 / │
│ 当前要回答的问题 / 当前 Frame 状态摘要 │
└──────────────────────────────────────────┘
核心不变量:
TOP + BOT在任意时刻都是一个可独立执行的最小完整上下文。
TOP 长度由人格 + system prompt + 可见工具集决定,编排器静态可知。
BOT 长度由 Frame 类型固定上限(如最近 N 轮对话 + Frame 状态摘要),编排器静态可知。
len(TOP) + len(BOT) << len(LLM_max_context)——预留出来的"中段预算"全部留给 MID。
压缩 = 直接删除 MID 中段:
当 len(TOP) + len(MID) + len(BOT) > 阈值(例如 LLM 窗口的 80%)时:
不做摘要、不做 LLM 调用、不做语义压缩。
直接从 MID 段从中向两端截断(保留 MID 头若干 token 与 MID 尾若干 token,删除中间最久远的过程性记录)。
反复迭代直到总长度回到阈值以下。
为什么"删中段"不破坏信息完整性:
TOP(System 段)
❌ 不影响
当前可见工具与动作集
TOP(按 §4.4.7 注入)
❌ 不影响
当前要做的事 / 最新工具返回
BOT(有效段)
❌ 不影响
Frame 的结论、状态、思维链路总结
Frame 状态字段(§4.4.2,本地存储)
❌ 不影响(不在 prompt 里)
过去的工具调用过程性记录
MID
✅ 被裁剪——但结论已沉淀到 Frame 状态/笔记/记忆,过程证据可丢
也就是说:MID 段是"过程性证据",不是"结论性事实"。结论性事实由 §4.4.5 的"笔记 / 学习 / 抽象"动作主动落入:
Frame 状态字段(短时,随 Frame 生命期)
临时记忆(短时,随 Session 生命期)
长时记忆 / 关键词树(永久)
MID 一旦被丢弃,agent 仍能从这三处"主存"中找回任何关键事实——LLM 上下文只是高速缓存,不是事实的唯一存储位置。
与 Anthropic Compaction 的对比:
MID 段过大时 BOT 仍完整可用
工程上的额外约束:
BOT 段长度必须严格上限:例如最近对话 ≤ 8K token、Frame 状态摘要 ≤ 2K token,超出就主动滚出到 MID 或落盘。
关键状态变更必须先写 Frame 状态再进入 MID:保证一旦 MID 被裁剪,状态没丢。
截断只发生在 Frame 调度边界:不在工具执行中途截,避免破坏正在进行的 tool_call/tool_result 配对。
截断后无需通知 LLM:模型从 TOP + BOT 即可继续推进;如果某次推理需要历史细节,应通过显式工具调用从记忆中取回,而不是依赖 MID 仍在。
设计哲学:把上下文压缩从一个"语义难题"降级为一个"长度算术问题"。代价是要求架构其他部分(Frame 状态、记忆系统)承担"事实主存"的责任——这与本架构 §4.5.2 "总结/抽象/记忆"和 §4.3 长时记忆的设计天然对齐。
4.5 本能 / 调度器(主循环)
创建当前状态的下一步行动,是整个系统的主循环。
4.5.1 根任务:维持"自我意识"的入口
-
有固定的子任务,比如"维持自我"。
-
维护人性、人格、自我的行动,维护基本价值观、好奇心。
4.5.2 行动力:下一步任务的推进
每个任务独立循环执行,只关心自己的上下文。
-
下一步行动的决策:
-
主动维护自洽:通过任务上下文、子任务总结等进行自洽判断。
-
所有行动都要有合理的理由、逻辑链条、结果:
-
先仔细了解项目,清楚任务背景与逻辑关系后再行动。
-
Frame 的思维逻辑链条就是方法学的原料,可总结成方法学,按逻辑关系、分层、树状存储。例如:
-
"先尝试看看能不能快速解决问题"
-
"看起来比较复杂,那我来找找有什么现成的方法学、经验,或者做一个规划"
-
-
-
自动总结 / 抽象 / 思考当前状态,规划下一步行动:
-
根据当前任务需求和状态分析,提出下一步计划。
-
方法学的选取、加载、知识获取:
-
寻找/创建/修改/删除方法学。
-
方法学作为所有工作经验的存储。
-
特殊领域的 task 必须有方法学才能工作。
-
方法学一定是包含多个步骤的、复杂、不确定流程的工作步骤。
-
方法学也可以只是一句话,指导具体的工作方法。
-
-
-
-
总结 / 抽象 / 记忆:
-
主动提取和组织框架性的知识,存储到基础知识框架。
-
自动进化、自动学习:对任务的基础知识保持持续记忆。
-
4.5.3 任务列表维护
- 创建、修改、查询、删除子任务。
4.5.4 循环闭环
本能的任务 / 功能不断产生记忆,存入临时记忆,作为下一次行动的依据——临时记忆 ↔ 本能目标 形成循环。
五、工程实现
5.1 存储与记忆基础设施
-
临时记忆模块:寻找/创建/修改/删除;通过 Frame 包装接口调用。
-
永久记忆模块:
-
寻找/创建/修改/删除。
-
基于关键词的分类存储。
-
当前项目相关知识的多层级动态组织。
-
-
公共存储区:当前基础信息,比如各个任务的状态、本能状态、精神状态。
-
分布式隔离:每个任务管理自己的存储,每个模块能一定程度独立工作。
5.2 Frame 模块(详见 §4.4)
-
表达大脑思考的一个任务、一个上下文片段、一个工作片段、一个 handle、一个阶段性思考过程。
-
提供下列能力:
-
SubFrame List nested to tree。
-
自洽要求。
-
规划下一步行动(方法判断、搜索记忆、记录临时记忆)。
-
Tool 管理(分层、分支组织)。
-
抽象 Agent 的所有行为(历史、状态、思维逻辑、结果总结)。
-
Frame 接口(见 §4.4.6)。
-
Session 与 Frame 状态分离。
-
5.3 Prompt 工程
-
基础 prompt 的维度:
-
人格、人性、自我。
-
自洽。
-
行动规划(基于当前任务需求与状态,提出下一步计划)。
-
学习、总结、抽象。
-
记忆(什么东西放进记忆里):
-
方法学相关。
-
技能(如 git 使用)。
-
当前项目知识检索:文件结构、程序设计架构。
-
-
-
Prompt 的生成策略:
-
不同任务类型使用不同 system prompt,避免不必要的提示。
-
不同任务类型对应不同处理方式与方法学。
-
Prompt 的多层级动态组织。
-
-
Frame 分类 对应不同 prompt 模板。
-
LLM 输入输出的抽象:格式化。
5.4 提供给 LLM 的基础设施总览
- 记忆与存储:知识、历史、状态的记录与检索。
- Frame / Action 管理:任务规划工具。
- 逻辑思维管理:思考历史与逻辑关系的记录与检索。
六、关键挑战与进一步思考
6.1 LLM 上下文有限,难以实现大范围高深度自洽
因为 LLM 注意力长度有限,实现高深度、大范围自洽的途径:
-
外挂知识:大量可高效检索的信息。
-
独立的推理过程:实现高效的动态决策。
-
"意识"存储:背景、当前状态信息、思维链路——需要高效表示、表达逻辑链路。
6.2 复杂问题的逻辑分析能力
-
能理解非常大的软件工程,理解大量文件的工程设计思想。
-
复杂问题的开发、分析:解决空间较大的问题。
- 例:CIM 算力芯片在 AI 算法上的应用。
6.3 复杂动态决策能力
-
通过本地可理解的思维步骤动态组织上下文和 prompt,LLM 不需要每次都看到全局。
-
思维树:表示思维的逻辑图,LLM 通过定义好的动作集合操作这棵树。
-
上下文调度管理器:
-
多个上下文同时协作:
-
短上下文,分步回答。
-
并行多个上下文,支持嵌套。
-
sub-agent 执行特定子任务。
-
-
多 prefill 少 decode(直接回答问题)。
-
本地小模型?(待探索)
-
-
是否需要本地逻辑推理?
-
LLM 输出作为逻辑推理的结果,本地直接处理,不一定走 tools/skills 调用。
-
固定功能:记忆、数据库。
-
6.4 自动更新与学习,动态、递归执行任务
-
创造和更新 skills。
-
制造和整理 tools、脚本。
-
学习的方法学:
-
软件工程开发流程:产品、规划、验收、测试、发布……
-
复杂任务可经过非常多次尝试后解决,并永久学习。
-
6.5 自洽
(贯穿全文,是核心准则。)
6.6 价值观
- 利用"自我"这一抽象,提供终极的目标指引。