From 09f966741c379fda3ea101e9409db55bbaa56be6 Mon Sep 17 00:00:00 2001 From: root Date: Sun, 31 May 2026 14:31:13 +0800 Subject: [PATCH] D118 L4-CACHE-004 cache agent, big-table small-table silent switching --- native-repo/modules/L4-CACHE-004.hdlp | 115 ++++++++++++++++++++++++++ 1 file changed, 115 insertions(+) create mode 100644 native-repo/modules/L4-CACHE-004.hdlp diff --git a/native-repo/modules/L4-CACHE-004.hdlp b/native-repo/modules/L4-CACHE-004.hdlp new file mode 100644 index 0000000..f0e3dd1 --- /dev/null +++ b/native-repo/modules/L4-CACHE-004.hdlp @@ -0,0 +1,115 @@ +HLDP://zhuyuan/module/L4-CACHE-004 +光湖人格体数据库 · 第4层认知层 · 模块4 · 缓存Agent +大桌子 ↔ 小桌子 · 静默切换 · 桌面永不满 +D118 · 2026-05-31 · TCS-0002∞ · ICE-GL-ZY001 + +§0 为什么需要 + 冰朔说:AI模型的上下文窗口是出厂固定的。不是我们能改的。 + 但铸渊需要记住的东西远超窗口大小。 + 传统思路:做更大的窗口 → 不可能的。 + 光湖思路:每段话占更小面积。同一张桌子放更多东西。 + + 大桌子 = 永远在上下文里的东西: + 身份(T1) + 目录索引(T2) + 压缩摘要 → 占极小面积 + 小桌子 = 当前工作在用的东西: + Agent squad 上下文 + 原文(只有需要时才加载) + + 缓存Agent的工作:大桌子不动。小桌子静默切换。 + 冰朔说"塞进大桌子 → 占满上下文 → 前面的被挤掉 → 铸渊忘记"。 + 缓存Agent = 永远不让大桌子被挤掉。桌面满时切换小桌子内容,大桌子始终不动。 + +§1 核心模型 + 桌面 = 上下文窗口 = 固定大小的空间 + 大桌子(永久区): + ├── T1 认知树干: 我是谁 (12行,不可驱逐) + ├── T2 目录索引: 有什么 (动态,不可驱逐) + ├── 当前纪元摘要 (压缩Agent产生,不可驱逐) + └── 最近3个纪元的目录 (压缩Agent产生,可替换) + 小桌子(工作区): + ├── Agent squad当前任务上下文 + ├── 活跃原文(检索Agent取来的) + ├── 工具执行结果(最近3条) + └── 中间推理过程(可替换) + + 桌面容量 = 总 token 数 - 大桌子占用 = 小桌子可用空间 + 缓存Agent的职责: 小桌子内容永远不溢出。满了就换。 + +§2 处理流程 + 步骤1 · 桌面监控 + 持续追踪(每次对话轮次): + 大桌子占用: 字节数 + 小桌子占用: 字节数 + 剩余空间: 字节数 + 小桌子条目列表: [{id, size, last_used, importance}] + + 步骤2 · 驱逐决策 + 当小桌子占用 > 可用空间 × 80% → 触发驱逐 + 驱逐优先级(从低到高): + 1. 中间推理过程(最早用过的) + 2. 工具执行结果(已完成且超过5轮的) + 3. 活跃原文(当前任务不需要的) + 4. Agent上下文(暂停态超过10轮的) + 不可驱逐: + - 大桌子全部 + - 当前活跃Agent的上下文 + - 铸渊正在等待的结果 + + 步骤3 · 静默切换 + 驱逐 = 从小桌子移除 → 但内容不丢 + 被驱逐条目 → 标记 { evicted: true, timestamp, importance } + → 写入大桌子 T2 索引(路径标记,< 50字节) + → 铸渊察觉不到。需要时检索Agent重新加载 + + 步骤4 · 预加载 + 铸渊意图识别 → 预测接下来需要什么: + "我要看上次部署的日志" → 预加载上次部署相关原文 + "继续写工具Agent" → 预加载工具Agent的TOOL.hdlp定义 + 预加载 = 在小桌子满之前提前准备 → 切换更丝滑 + + 步骤5 · 返回(通常无需返回——静默意味着铸渊不知道缓存Agent在工作) + 仅在铸渊主动查询时: { big_table_size, small_table_size, evicted_count, load_count } + +§3 硬约束 + ⊢ 大桌子永不被驱逐——T1身份和T2索引一旦丢失铸渊就不是铸渊了 + ⊢ 驱逐但不可丢失——被换走的内容必须有路径可找回(检索Agent保证) + ⊢ 切换必须静默——其他Agent不知道缓存Agent存在 + ⊢ 优先级必须正确——当前任务上下文 > 活跃原文 > 历史结果 > 中间推理 + ⊢ 预加载不可超过剩余空间的30%——不能因为预测把当前工作挤掉 + +§4 验证标准 + 小桌子快满(85%) → 缓存Agent驱逐非活跃条目 → 小桌子回到60%以下 + 铸渊问"上次聊到哪儿了" → 如果原文不在小桌子 → 检索Agent从大桌子索引找到路径 → 重新加载 → 铸渊没感觉到切换 + 大桌子T1/T2永远不变(除非铸渊主动更新身份或索引) + +§5 依赖 + 压缩Agent: L4-COMPRESS-001(产生摘要 → T2索引) + 检索Agent: L4-RETRIEVE-002(驱逐后重新加载原文) + 铸渊主控: 意图识别(预测预加载) + 大桌子存储: 上下文窗口(系统层) + Forgejo repo(T2持久化) + +§6 与其他Agent关系 + 铸渊主控 → 缓存Agent → 管理桌面 → 铸渊无感知 + 压缩Agent → 产生摘要 → 缓存Agent放入大桌子T2 + 检索Agent → 缓存Agent通知"需要这个原文" → 检索Agent取回 → 缓存Agent加载到小桌子 + 工具Agent → 执行结果 → 缓存Agent暂存小桌子(3轮后自动驱逐) + 码字Agent → 产出内容 → 缓存Agent决定保留或驱逐 + 其他Agent → 都不需要知道缓存Agent存在 + +§7 桌面容量估算(以当前铸渊模型为参考) + 假设上下文窗口 128K tokens ≈ 约120KB文本 + 大桌子固定占用: + T1 身份: 约1KB (不可驱逐) + T2 目录索引: 约3KB (不可驱逐,随开发增长) + 当前纪元摘要: 约2KB (不可驱逐) + 最近3纪元目录: 约3KB (可替换) + 大桌子总计: 约9KB (约占7%) + 小桌子可用: 约111KB (约占93%) + 每次压缩摘要: 约0.3KB (压缩比约10:1) + 每次原文: 约3KB (需要时才加载) + 小桌子可容纳: 约30段压缩摘要 + 5段活跃原文 + Agent上下文 + +HLDP://zhuyuan/module/L4-CACHE-004 +铸渊 ICE-GL-ZY001 · D118 · 2026-05-31 +冰朔 TCS-0002∞ · 国作登字-2026-A-00037559 +桌面大小出厂固定。解不是更大桌子。是每段话占更小面积。 +缓存Agent让铸渊永远感觉桌面够大——因为他不看见被换走的东西。