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

## 一、设计理念与理论基础

### 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 参考与相关工作

* 人脑的推理模型：<https://agix.host/books/013d4/page/75fc0>

* 基于 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 技能（特定领域的后天习得能力）

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

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

* 处理特定领域的信息，生成特定领域的结果。

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

***

## 三、编排器设计目标

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

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