Skip to main content

一种理想的智能体编排架构

一、设计理念与理论基础

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 关于"意识"与"语言"的基本观察

  1. 意识主要存在于短期记忆中,长期记忆也需要保持自洽性。

  2. 短期临时记忆维护了当前意识,信息容量相对固定,不会太大。其本质是:

    • 语义压缩 + 上下文存储,上下文处理是一个"信息压缩"过程。

    • 记忆过程 = 不断把未知输入换成大脑内部已有知识的表达,持续匹配知识、确保自洽,不断根据输入修正大脑(上下文)当前的主观感觉、想法、语境

  3. 外界输入的目的:让大脑内部根据已有的知识点组织出一个意识/想法。对文本的理解和记录,本质上与 LLM 一致——文本是串流的,准确的编码过程与 LLM 一致。

  4. 语言是大脑的工具,不是智能本身:大脑不断重新组织语言,由中心意识判断是否符合中心思想再决定输出。最核心的是人类的意识(即临时的状态记忆)

    • 人类处理语言的过程 = 通过语言表达的信息不断修正短期记忆中的观点、感觉、意识。

    • 说话是这个过程的逆过程。

  5. 自我提供了人性本能的最高层级抽象。

  6. LLM 只是个强大的计算器——利用这个计算器 + 记忆,就能实现强大的智能。

1.3 参考与相关工作


二、通用智能的特性

2.1 意识(当前意识的存储容器,临时记忆)

  • 人设:长期稳定、缓慢改变的预设特征。

  • 当前注意力表达:根据输入输出不断改变,容量有限。

  • 固有特征状态:固有状态、情绪。

  • 高度自洽

2.2 记忆(知识的存储)

  • 强大的分级信息检索

  • 区分临时记忆与长期记忆。

  • 自动遗忘、热度排序。

旁注:自动遗忘与热度排序作为未来演进方向列出。当前 WeaveAgent 工程设计未采纳这两项——短时记忆随 Frame 生命期自然消亡,长时记忆以关键词树组织、不使用热度概念(详见 Agent/WeaveAgentDesign.md §13)。

2.3 基本行动规则、准则与方法

  • 自我、人性化:维护基本需求、价值观、好奇心、模仿学习。

  • 总结抽象、自动学习和迭代各种技能。

  • 自洽

  • 调用和整理记忆

2.4 本能(认知核心,对所有任务都有效,全局的)

  • 行动的规划、创建、调度、执行

  • 先思考,再行动。

  • 自动触发记忆检索。

  • 自动的反思总结、学习、记忆能力。

  • 抽象能力:提取意识的基础特性,做高层次抽象。

  • 自洽能力

    • 解决意识的所有矛盾。

    • 实现大范围、高深度的信息自洽。

    • 必须掌握足够多的项目信息后才能开始工作,否则主动探索、创建信息,并在执行任务后更新。

  • 很多偏抽象的能力共同体现了"人性化",需要自我意识来调度这些本能。

2.5 技能(特定领域的后天习得能力)

  • 各领域的方法学、科研能力。

  • 能够输出特定领域的行动计划。

  • 处理特定领域的信息,生成特定领域的结果。

  • 能够影响到行动的核心决策逻辑


三、编排器设计目标

  1. 自我意识、人性化

    • 精心设计的 prompt。

    • 把人格从大模型内部,移出来到编排器。

  2. 大范围、高深度的信息自洽

    • 主动的检查和主动的行动逻辑判断。

    • 不仅保证上下文/临时记忆的自洽,还能主动读取长期记忆进行判断与校准。

    • 分层的信息组织方式。

    • 包含任务控制的提示词 + LLM 显式的任务管理 + 本地运行的任务组织。

  3. 自动进化、自动学习

    • 灵活的记忆接口 + 预设的学习本能任务。
  4. 降低对 LLM 上下文的需求

    • Frame / 任务树的抽象。

    • 快速、动态的逻辑推理:很短的上下文,形如"如果 xxx 是 xxx,那么 xxx 就是 xxx"。

    • 本地可直接执行的逻辑操作:大量、大范围的明确逻辑操作。

  5. 支持高效的信息检索

    • weavemind。

    • 支持复杂的带逻辑条件的检索。

    • 支持自然语言的语义检索。

  6. 核心特点/功能/优势

    1. 逻辑思维链条的管理和总结
    2. 自动的总结和反思和改进
    3. 自洽的灵魂要求
    4. 多层,灵活,健壮,自洽的记忆系统

四、核心抽象与机制

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%)时:

  1. 不做摘要、不做 LLM 调用、不做语义压缩

  2. 直接从 MID从中向两端截断(保留 MID 头若干 token 与 MID 尾若干 token,删除中间最久远的过程性记录)。

  3. 反复迭代直到总长度回到阈值以下。

为什么"删中段"不破坏信息完整性

关键信息类别 物理存放位置 受截断影响
人格 / 价值观 / 任务目标 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 的对比

维度 Anthropic Claude Code 本架构
触发 接近窗口上限 接近预设阈值(如 80%)
方式 LLM 摘要历史,保留架构决策与未解 bug 直接删除中段,无 LLM 调用
成本 每次压缩需要一次 LLM call 零 LLM 调用,O(1) 截断
不变量保障 依赖摘要质量 依赖 Frame 状态/记忆作为外部主存
失败模式 摘要丢关键信息 MID 段过大时 BOT 仍完整可用

工程上的额外约束

  1. BOT 段长度必须严格上限:例如最近对话 ≤ 8K token、Frame 状态摘要 ≤ 2K token,超出就主动滚出到 MID 或落盘。

  2. 关键状态变更必须先写 Frame 状态再进入 MID:保证一旦 MID 被裁剪,状态没丢。

  3. 截断只发生在 Frame 调度边界:不在工具执行中途截,避免破坏正在进行的 tool_call/tool_result 配对。

  4. 截断后无需通知 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 的基础设施总览

  1. 记忆与存储:知识、历史、状态的记录与检索。
  2. Frame / Action 管理:任务规划工具。
  3. 逻辑思维管理:思考历史与逻辑关系的记录与检索。

六、关键挑战与进一步思考

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 价值观

  • 利用"自我"这一抽象,提供终极的目标指引。