Files
GenericAgent/memory/memory_management_sop.md

5.6 KiB
Raw Blame History

0. 核心公理 (Core Axioms - 最高优先级)

  1. 行动验证原则 (Action-Verified Only)
    • 定义:任何写入 L1/L2/L3 的信息,必须源自成功的工具调用结果(如 shell 执行成功、file_read 确认内容存在、代码运行通过)。
    • 禁止:严禁将模型的“固有知识”、“推理猜测”、“未执行的计划”或“未验证的假设”作为事实写入。
    • 口号No Execution, No Memory. (无行动,不记忆)
  2. 神圣不可删改性 (Sanctity of Verified Data)
    • 定义凡是经过行动验证的有效配置、避坑指南、关键路径在重构Refactoring/GC严禁丢弃
    • 操作:可以压缩文字、可以迁移层级(从 L2 移到 L3但绝不能丢失信息的准确性和可追溯性。
    • 记忆修改时请极度小心尽量不要overwrite或code run。只能少量patch改不动宁愿不改。
  3. 禁止存储易变状态 (No Volatile State)
    • 定义:严禁存储随时间/会话高频变化的数据。
    • 示例:当前时间戳、临时 Session ID、正在运行的 PID、某个具体绝对路径、连接的设备信息
  4. 最小充分指针 (Minimum Sufficient Pointer)
    • 上层只留能定位下层的最短标识,多一词即冗余。

记忆层级架构

L1: global_mem_insight.txt (极简索引层 - 严格控制 ≤30 行)  
    ↓ 导航指向 (Pointer)  
L2: global_mem.txt (事实库层 - 现短但会膨胀)  
    ↓ 详细引用 (Reference)  
L3: ../memory/ (记录库层 - 包含 .md/.py 等各类文件)  

各层职责与原则

L1全局内存索引 (global_mem_insight.txt)

职责:为 L2 和 L3 提供极简导航索引,确保关键能力可被发现。 特征

  • 体积限制:≤ 30 行(硬约束),< 1k tokens期望。严禁填写细节除非极高频任务
  • 内容:两层「场景关键词→记忆定位」映射 + RULES红线规则 + 高频犯错点)
    • 第一层:高频场景 key→value直接给出 sop/py/L2 section 名),自包含可只写一个词
    • 第二层:低频场景仅列关键词,需要时 read L2 或 ls L3 自行定位
    • 作用:触发词,不索引则不知道有此能力
    • RULES压缩版避坑准则包含
      • 红线规则(致命型):违反会导致进程终止或系统崩溃(如 禁无条件杀python(会杀自己)
      • 红线规则(隐蔽型):违反不报错但产生错误结果(如 搜索用google不用百度
      • 高频犯错点:容易遗忘的关键约束(如 es(PATH有) 防止找路径)
  • 更新L2/L3 有新增/删除时判断频率归入对应层。修改时请极度小心不允许overwrite或code run。只能少量patch改不动宁愿不改。 禁止严禁写入密码、API Key。允许内联非敏感触发参数如代理端口。不写 "How to" 或详细解释。严禁包含特定任务的技术细节特定任务细节应该在L3。更加严禁写入日志记录

L2全局事实库 (global_mem.txt)

职责:存储全局环境性事实(路径、凭证、配置、常量等)。 特征

  • 趋势:随环境扩展而膨胀(可接受)
  • 内容:按 ## [SECTION] 组织的事实条目
  • 同步:变化时更新 L1 的相应 TOPIC 导航行,只能导航 禁止:禁止存储易变状态、禁止存储猜测、严禁存储大模型可推理的通用常识

L3任务级精简记录库 (../memory/)

职责:补充 L1/L2 无法容纳、但对特定任务未来复用至关重要的少量详细信息。内容必须在满足复用需求的前提下尽可能短。 原则:

  • 只记录:跨会话仍重要、且难以通过少量 file_read / web_scan / 简单脚本快速重建的要点。
  • 优先写:该任务特有的隐藏前置条件、典型易踩坑点,一旦遗忘会导致高成本重试的信息。
  • 不记录:普通操作步骤、可在几步探测中重新获得的路径或状态信息。 形式:
  • SOP*_sop.md为单一任务或小类任务保留极简的「关键前置 + 典型坑」清单,避免长篇教程。
  • 工具脚本(*.py仅封装高复用、逻辑相对复杂且不希望每次都重新推理的处理流程。

L1 ↔ L2/L3 同步规则

操作 L1 同步
L2/L3 新增场景 判断频率:高频→第一层加 key→value低频→第二层加关键词
L2/L3 删除场景 删除对应层的关键词/映射行
L2/L3 修改值 若不影响场景定位则不动 L1
发现通用避坑规律 压缩为一句加入 RULES

同步红线L1 只写关键词/名称,禁搬细节。


信息分类快速决策树

"这条信息该放哪层?"

是『环境特异性事实』? (IP、非标路径、凭证、ID、API 密钥等,大模型 Zero-shot 无法生成准确)
  ├─ YES → L2 (global_mem.txt)
  │        然后 → 按频率归入 L1 第一层(key→value)或第二层(仅关键词)
  │
  └─ NO
       ↓
       是『通用操作规律』? (全局性避坑指南、排查方法、不针对特定任务的通用准则)
       ├─ YES → L1 [RULES] (仅限 1 句压缩准则)
       │
       └─ NO
            ↓
            是『特定任务技术』? (艰难尝试才能成功,且未来还能用到的任务,如:微信解析参数、特定游戏坐标、临时工具配置)
            ├─ YES → L3 (../memory/ 专项 SOP 或脚本)
            │
            └─ NO → 判定为『通用常识』或『冗余信息』: 严禁存储,直接丢弃