一种理想的智能体编排架构
新架构
- 生物脑、人脑的组成要素:逻辑能力、长期记忆、短期记忆
- 长期记忆相当于硬盘,短期记忆相当于内存,计算能力相当ALU
- 大语言模型相当于语言ALU,KVcache相当于寄存器,权重相当于指令,但是缺少短期记忆和长期记忆
- 意识主要存在于短期记忆,长期记忆也需要保持自洽性
- KVcache:一个不断增长的,被动态调度执行的(通过新prompt)计算器
- SSM:固定大小的,不断被更新的状态存储器
- 外存:长期记忆的存储器,可以被检索和更新
- 短期临时的记忆维护了当前的意识,信息容量比较固定,不会太大
- 语义压缩和上下文存储
- 上下文处理是一个“信息压缩”过程
- 记忆的过程是不断地把未知的输入换成大脑内部已经有的知识的表达,是一个不断地匹配知识,确保自洽的过程,不断地根据输入来修正当前大脑(上下文)内当前的主观感觉、想法、语境
- 自我:提供了人性本能的最高层级抽象
- 输入的目的,外界信息输入的目的是让大脑内部根据已有的知识点组织出来一个意识/想法
- 本质上,想要对文本进行理解和记录,和LLM是一样的。 文本是串流的, 想要实现准确的编码,本质上和LLM一致
- LLM只是个强大的计算器,利用这个计算器加上记忆,实现强大的智能。可以使用SSM模型来动态生成句子的meaning tree,非常适合处理可以被层级抽象、组合的表示意义
- 人类语言对于智能的意义,语言更像是一种工具,大脑不断地在重新组织语言,然后由大脑的中心意识去判断本次组织的是不是符合中心思想要求再决定要不要说出来,所以本质上其实最核心的是人类的意识,也就是一些临时的状态记忆
- 批量的对一段文本做处理,只关心区域内的语义,不需要全局的语义,这种情况可以使用SSM这样的状态记忆模型也就是RNN
- 语言
- 人类在处理语言的过程,就是通过语言表达的信息,不断得修正短期记忆的观点、感觉、意识
- 说话就是这个过程的逆过程
背景
- 基于transformer的带额外记忆单元的技术/模型
- Meta推出「自由Transformer」(Free Transformer),增加一部分算力和参数维护一个额外的状态
- 和普林斯顿大学提出的CoALA有点类似,但是更强调基本的设计抽象:自洽、LLM计算器 https://zhuanlan.zhihu.com/p/1909206010096259088
通用智能的特性
- 意识:当前意识的存储容器,临时记忆
- 人设:长期稳定的,缓慢改变的预设特征
- 当前注意力表达:根据输入和输出不断改变的,容量有限
- 固有特征的状态:固有的一些状态,情绪
- 高度自洽
- 记忆:知识的存储
- 自我:基本的行动规则、准则,和行动方法
- 维护基本需求,基本价值观判断,人性化
- 自动学习和迭代各种技能
- 调用和整理记忆
- 维护基本需求,基本价值观判断,人性化
- 本能:认知核心,没有知识记忆
- 任何响应,都是先思考,再行动
- 自动触发记忆检索
- 自动的反思总结、学习、记忆的能力
- 逻辑思维能力
- 抽象能力:提取意识的基础特性
- 高层次的抽象的能力
- 自洽:解决意识的所有矛盾
- 实现大范围,高深度的信息自洽
- 很多比较抽象的能力,共同体现了人性化,需要自我意识来调度这些本能。
- 技能:特定领域的后天习得的能力
- 各个领域的方法学,科研能力
- 能够输出特定领域的行动计划
- 处理特定领域的信息,生成特定领域的结果
- 能够影响到行动的核心决策逻辑
- 自然语言<->Bash命令
- 比如,git的各种使用 skills ,PDF、office的skills
- 比如,git的各种使用 skills ,PDF、office的skills
- 自然语言<->领域工具
- 比如,PCB、DrawIO等非直接可视化文档(xml)
- 需要能支持复杂的逻辑关系交互
- 各个领域的方法学,科研能力
组件组成
- 意识的存储区
- 临时记忆,用于存储策略,状态
- 意识调度器/执行器
- 重新组织临时记忆
- 工作区
- 外部工具
- 计算机:执行脚本
- 接口:互联网、MCP
- 笔记
- 技能:计划树
- 输入输出
- 对话
- 文件生成和编辑
- 渲染和GUI
- 外部工具
- 记忆
- 自我
- 本能
- 知识
核心机制
- 核心机制的设定、自我意识(核心本能)功能的启动
- 通过system prompt表达,不能被修改
- 核心的动机
- 解决任务,下一步应该干嘛?
- 维持自我
- 通过system prompt表达,不能被修改
- 个性化
- 价值观、soul
- 完成任务是一个重要的目标
- 不能自己更改,但是可以被人类更改
- 使用文本存储
- 核心的工作方法学
- 计划树,todolist,prompt的编排,任务的调度
- 文本调度,还是标准的编程接口进行抽象???
- 各种skills,tools
- 使用文本描述
- 外部工具、接口
各种思考
计划树
- 计划树是本地数据结构,用本地代码执行
- 计划树,记录当前的所有计划和执行情况。
- 每个节点都是一个skill,有提示词,输入,输出,执行脚本等等
- llm执行节点任务, 明确的输入、输出、调用要求
- 根节点就是“你是个有用的助手,等待接收具体的任务。”
- 节点执行失败了,可以触发重新设计节点的拆分执行步骤、提示词等等,成功后可以更新当前节点。
- 提升效率,节省token
- 有个技能库保存了所有的可用的skill,可以输出prompt描述当前技能库的情况
- 在生成规划或者更新规划的时候,可以通过当前整颗树生成一个整体的当前状态。
- 因为LLM的上下文有限(注意力长度有限),难以实现大范围,高深度的信息自洽
- 高深度、大范围自洽的途径
- 外挂知识
- 大量的可高效检索的信息
- 独立的推理过程
- 实现高效的动态决策
- “意识”,存储背景、当前的状态信息、思维链路
- 高效表示、表达逻辑链路
- 高效表示、表达逻辑链路
- 外挂知识
- 高深度、大范围自洽的途径
- 需要支持复杂问题的逻辑分析
-
能对非常大的软件工程的理解,能理解大量文件的工程的设计思想
- 复杂问题的开发、分析:解决空间比较大的问题
- CIM算力芯片在AI算法上的应用
-
- 复杂动态决策能力
- 通过本地能理解的思维步骤,动态组织上下文和prompt,LLM不需要每次都看到全局
- 思维树:表示思维的逻辑图
- 复杂化的TodoWrite
- llm在操作这个树,可以扩展树节点,放大分支,合并节点,查看节点详细信息
- 文本+逻辑决策=prompt生成
- 扩展:这个问题可以分为以下几个步骤
- 总结:总结下xxx模块的在xxx方面的设计规则
- 尝试:我们先尝试下以下一个方案
- 回退:当前方向是错误的,我们先会退到前面的第5步
- 收集:当前问题需要先获取下xxx的信息
- 抽象:对当前的节点任务及子任务进行精炼,按照模版生成skill
- 笔记:记录临时信息到笔记,并返回笔记段的名称和索引
- 学习:把指定的信息或者笔记写入到永久的记忆
- 上下文调度管理器:
- 多个上下文同时协作
- 短上下文,分步回答
- 并行多个上下文,支持嵌套
- sub agent 执行特定的子任务
- 多prefill少decode(直接回答问题)
- 本地小模型?
- 多个上下文同时协作
- 需要本地逻辑推理吗?
- llm输出是逻辑推理的结果,本地直接处理,而且不是tools/skills的调用
- 固定功能:记忆、数据库
- 大量永久记忆
- 外挂知识操作接口
- 临时记忆
- 意识节点,提供当前的背景信息,意识的存储实体
- 自动更新和学习,动态、递归执行任务
- 创造和更新skills
- 制造和整理tools,脚本
- 学习的方法学
- 软件工程的开发流程:产品,规划,验收,测试,发布。。。。
- 复杂任务,可以经过非常多次的尝试后解决,并永久学习
- 自洽
- 价值观
- 利用“自我”的抽象,提供终极的目标指引