Skip to main content

一种理想的智能架构

新架构

  1. 生物脑、人脑的组成要素:逻辑能力、长期记忆、短期记忆
    1. 长期记忆相当于硬盘,短期记忆相当于内存,计算能力相当ALU
    2. 大语言模型相当于语言ALU,KVcache相当于寄存器,权重相当于指令,但是缺少短期记忆和长期记忆
    3. 意识主要存在于短期记忆,长期记忆也需要保持自洽性
    4. KVcache:一个不断增长的,被动态调度执行的(通过新prompt)计算器
    5. SSM:固定大小的,不断被更新的状态存储器
    6. 外存:长期记忆的存储器,可以被检索和更新
  2. 短期临时的记忆维护了当前的意识,信息容量比较固定,不会太大
    1. 语义压缩和上下文存储
    2. 上下文处理是一个“信息压缩”过程
    3. 记忆的过程是不断地把未知的输入换成大脑内部已经有的知识的表达,是一个不断地匹配知识,确保自洽的过程,不断地根据输入来修正当前大脑(上下文)内当前的主观感觉、想法、语境
  3. 输入的目的,外界信息输入的目的是让大脑内部根据已有的知识点组织出来一个意识/想法
  4. 本质上,想要对文本进行理解和记录,和LLM是一样的。 文本是串流的, 想要实现准确的编码,本质上和LLM一致
  5. LLM只是个强大的计算器,利用这个计算器加上记忆,实现强大的智能。可以使用SSM模型来动态生成句子的meaning tree非常适合处理可以被层级抽象、组合的表示意义
  6. 人类语言对于智能的意义,语言更像是一种工具,大脑不断地在重新组织语言,然后由大脑的中心意识去判断本次组织的是不是符合中心思想要求再决定要不要说出来,所以本质上其实最核心的是人类的意识,也就是一些临时的状态记忆
  7. 批量的对一段文本做处理,只关心区域内的语义,不需要全局的语义,这种情况可以使用SSM这样的状态记忆模型也就是RNN
  8. 语言
    1. 人类在处理语言的过程,就是通过语言表达的信息,不断得修正短期记忆的观点、感觉、意识
    2. 说话就是这个过程的逆过程

背景

  1. 基于transformer的带额外记忆单元的技术/模型
    1. Meta推出「自由Transformer」(Free Transformer),增加一部分算力和参数维护一个额外的状态
  2. 和普林斯顿大学提出的CoALA有点类似,但是更强调基本的设计抽象:自洽、LLM计算器  https://zhuanlan.zhihu.com/p/1909206010096259088

通用智能的特性

  1. 自洽:解决意识的所有矛盾
    1. Thread(continue(check))
  2. 抽象:合并意识的基础特性
    1. intput->推理->output
    2. 高层次的抽象等级
  3. 意识:当前意识的存储容器(临时)
    1. 人设:长期稳定的,缓慢改变的预设特征
    2. 当前注意力表达:根据输入和输出不断改变的,容量有限
      1. 一棵逻辑树,不断被更新
    3. 固有特征的状态:固有的一些状态,情绪
  4. 记忆:知识的存储
    1. 数据库
  5. 本能:基本的行动规则
    1. input->本能->output
    2. 自动学习和迭代各种技能
    3. 调用和整理记忆
    4. 小的纯逻辑的模型,认知核心,没有知识记忆, 会使用基本的工具的逻辑
  6. 技能:特定领域的后天习得的能力
    1. 处理特定领域的信息,生成特定领域的结果
    2. 能够输出特定领域的行动计划
    3. 比如
      1. git的各种使用 skills ,使用说明

最原始的规则,怎么思考一个问题的通用步骤有哪些,这个应该是技能逻辑术里面比较靠近顶层的基础能力

意思:逻辑树,根节点是,你是一个有用的助手。  意识容器就是存储这颗树,并且可以不断根据每个节点的提示,技能进行更新。  
自洽:核心的规则就是自洽,反复用AI不断检查自洽合理性,这是本能。体现在树节点的组织逻辑上, 所有节点不能重复,所有节点内部必须明确
学习:自己不断迭代, 能够自我迭代,越用越聪明,可以不断自动创建一些临时的节点,技能。也可以被持久化,运行的过程就是在迭代这颗树, 并行的节点可以并行处理。

思考本能逻辑能力:工具提供的提示,应该是一个对话的逻辑树,类似于电话客服的多级菜单的交互形式

  1. 计划树是本地数据结构,用本地代码执行
    1. 计划树,记录当前的所有计划和执行情况。
    2. 每个节点都是一个skill,有提示词,输入,输出,执行脚本等等
    3. llm执行节点任务, 明确的输入、输出、调用要求
    4. 根节点就是“你是个有用的助手,等待接收具体的任务。”
  2. 节点执行失败了,可以触发重新设计节点的拆分执行步骤、提示词等等,成功后可以更新节点。
  3. 有个技能库保存了所有的可用的skill,可以输出prompt描述当前技能库的情况
  4. 在生成规划或者更新规划的时候,可以通过当前整颗树生成一个整体的当前状态。

当前的 code agent 好像也是个差不多的运行逻辑,可能有以下差异

  1. 依赖把全部的上下文塞到LLM来维持自洽
  2. 没有主动的学习和训练能力
  3. listlist(Todo文本) 和 树的区别

 

 

  1. 对LLM的输出输出进行抽象,用于prompt生成,
    1. 通用抽象,class, 功能,属性
    2. 是什么描述,所有功能描述

  1. 当前状态列表
    1. 计划逻辑树
    2. 心情:xxxxx
    3. 当前任务:
    4. 前面相关的主题
    5. 已经学习的代码...
  2. 动作
    1. 当前的状态更新/修正
    2. 接收新任务
    3. 输出答案/回答
    4. 执行工具
    5. 调用接口
      1. 存储记忆、搜索相关记忆
      2. 判断自洽
      3. 读取文件
      4. 增加/修改/删除状态表
      5. 读取技能、增加技能

目标
  1. 解决NP问题,才是真真通用agent的目标

Git 仓库管理说明
  • 当前工作(项目)目录由 git 仓库管理。
  • 当被要求提交更改或准备提交时,始终首先通过以下 shell 命令收集信息:
    1. 使用 git status确保所有相关文件已跟踪和暂存,并视情况使用 git add ...。
    2. 使用 git diff HEAD查看自上次提交以来工作树中所有被跟踪文件的更改(包括未暂存的更改)。
      1. 当进行部分提交合理或用戶要求时,使用 git diff --staged仅查看暂存的更改。
    3. 使用 git log -n 3查看最近的提交消息,并匹配其风格(详细程度、格式、签名行等)。
  • 尽可能合并 shell 命令以节省时间/步骤,例如:git status && git diff HEAD && git log -n 3。
  • 始终提议一个草稿提交消息。切勿仅要求用户提供完整的提交消息。
  • 建议提交消息清晰、简洁,并更多地关注“为什么”而非“是什么”。
  • 随时告知用户进展,并在需要时请求澄清或确认。
  • 每次提交后,通过运行 git status确认提交成功。
  • 如果提交失败,未经用户明确要求,切勿尝试绕过问题。
  • 未经用户明确要求,切勿将更改推送到远程仓库。