OpenViking 实战:给 AI Agent 装上字节跳动的记忆架构

作者: Jason Zuo (@xxx111god)
来源: https://x.com/i/status/2023838143045136557
整理时间: 2026-02-18


📝 文章概述

作者分享如何将字节跳动开源的 OpenViking Agent 记忆管理框架接入自己的 AI Agent,实现 10 倍以上的 token 节省,同时保持甚至提升输出准确性。


🎯 核心问题:记忆膨胀与检索低效

原有架构的问题

作者之前已经跑了一个月的记忆管理系统:

memory/
├── MEMORY.md          # 长期记忆(手动维护)
├── 2026-02-15.md      # 每日日志
├── 2026-02-16.md
└── insights/
    └── 2026-02.md     # 月度洞察

已解决的问题

  • ✅ 每天自动记录重要对话到日志
  • ✅ 定期 compound(压缩提炼)→ insights
  • ✅ P0/P1/P2 生命周期系统(P0永不过期,P1 90天,P2 30天)
  • ✅ 过期记忆自动归档

未解决的问题

  • ❌ 即使没过期,文件也越来越大(MEMORY.md 已 8000+ tokens)
  • ❌ Bot 每次启动都要读全文
  • ❌ 大部分时候用不到那么多信息(问天气交易不需要知道报税进度)
  • ❌ Bot 不知道”哪些该读哪些不该读”

💡 OpenViking 的核心洞察

把 Memory 当「文件系统」管理,不是当「文档」读

关键创新:.abstract 索引机制

给每个目录加一个 .abstract 文件,作为”目录索引”。

之前:insights/ 目录,bot 要读就得读整个月度文件

之后

  1. 先读 100 tokens 的索引
  2. 知道”这个月记录了 weather trading 策略、Reflex 调试经验、Mac Mini 迁移”
  3. 只有问到相关问题才去读具体内容

类比:你不会打开电脑就把所有文件内容读一遍吧?先看文件夹结构,再打开需要的文件。


🏗️ L0/L1/L2 分层架构 + P0/P1/P2 生命周期

两套系统互补

维度 L0/L1/L2 分层 P0/P1/P2 生命周期
解决什么问题 怎么取(检索效率) 记什么(存储效率)
L0 根目录 .abstract 索引 -
L1 章节/月度概述文件 -
L2 完整原始日志 -
P0 - 永不过期(核心身份、偏好、铁律)
P1 - 90天 TTL(活跃项目、工作上下文)
P2 - 30天 TTL(临时信息)

新架构文件结构

memory/
├── .abstract              # 🆕 根目录索引 (L0)
├── MEMORY.md              # 长期记忆 + P0/P1/P2 标签
├── SESSION-STATE.md       # 🆕 工作缓冲区
├── insights/
│   ├── .abstract          # 🆕 洞察索引 (L0)
│   └── 2026-02.md         # L1 提炼
├── lessons/
│   ├── .abstract          # 🆕 教训索引 (L0)
│   └── operational-lessons.jsonl  # 🆕 结构化 (L1)
├── 2026-02-17.md          # L2 原始日志
└── archive/               # 过期 P1/P2 归档

检索流程

  1. 读 L0 .abstract → 快速定位相关目录
  2. 读 L1 概述 → 确认是否需要深入
  3. 按需读 L2 详情 → 获取完整信息

生命周期流程

新信息 → 打 P1/P2 标签 → 90/30天后过期 → 自动归档
核心信息 → 打 P0 标签 → 永不过期

📊 效果:Token 节省 10 倍以上

日常场景

  • 之前:无脑全加载,8000+ tokens
  • 之后:先读索引 100 tokens,按需加载详情

该深入的时候还是会深入,但不再每次都要全读。


🛠️ 实现细节

新增脚本

  • generate_abstract.py — 扫描目录,自动生成/更新 .abstract
  • rescue_before_compound.py — Context 压缩前把重要内容抢救到工作缓冲区

开发成本:一个下午,大部分代码让 bot 写,作者提需求和测试。


💭 核心认知转换

Agent 不应该每次都”读完整本书”,而是:

  1. 先看目录(L0 abstract)
  2. 定位章节(L1 overview)
  3. 按需读详情(L2 full content)

这跟人类的记忆很像 — 重要的事记得牢,琐碎的事会淡忘,但需要的时候还能想起来。


📋 给 OpenClaw / Claude Code 用户的建议

  1. 不要让 memory 无限膨胀 — 定期 compound(压缩提炼)
  2. 分层存储 — 热数据小而精,冷数据按需取
  3. 给 bot 建个 working buffer — 压缩前能自救
  4. 给记忆加 TTL — P0 永久,P1/P2 定期归档

🔗 相关链接

  • 原文: https://x.com/i/status/2023838143045136557
  • OpenViking: 字节跳动开源的 Agent 记忆管理框架

🏷️ 标签

#AI #Agent #Memory #OpenViking #字节跳动 #OpenClaw #Context管理 #Token优化