news 2026/9/10 10:01:08

OpenViking Working Memory v2 评测报告:LoCoMo 长对话召回 79.61%、Token 成本下降 5 倍的结构化工作记忆实践

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
OpenViking Working Memory v2 评测报告:LoCoMo 长对话召回 79.61%、Token 成本下降 5 倍的结构化工作记忆实践

OpenViking Working Memory v2 评测报告:LoCoMo 长对话召回 79.61%、Token 成本下降 5 倍的结构化工作记忆实践

【免费下载链接】OpenVikingSelf-evolving Context Database for AI Agents. Unify Agent Memory, Knowledge RAG and Skills.项目地址: https://gitcode.com/GitHub_Trending/op/OpenViking

本报告基于 OpenViking 仓库 examples/openclaw-plugin/docs/workmemory-v2-test-report.md 整理,并结合 workmemory-v2-design.md 设计文档与 session.py 源码对结果成因做了解读。文中所有数据均为该测试报告原始记录,未做任何推算或外推。

导读

本文是 OpenViking Working Memory v2(以下简称 WM v2)的完整测试报告解读,覆盖 LoCoMo 长对话事实召回与 MemoryArena 跨会话规划两个基准场景,给出旧版基线(Main)、纯工作记忆(WM2-NOREC)、WM v2 全功能(WM2)与 OpenClaw 原生记忆(MC)四组的准确率、QA tokens 与单题成本(tok/correct)实测对比。读完本文,你将掌握:WM v2 相对旧版 structured_summary 到底提升了多少、结构化 7 段模板与增量更新的收益边界在哪里、以及这类「工作记忆 + 长期记忆向量召回」分层方案的评测方法论。


一、测试目标:验证 WM v2 四个核心改造的实际收益

WM v2 的核心改造点包括:结构化 7 段模板tool_call 增量更新服务端 Guardskeep_recent_count(详见 workmemory-v2-design.md)。测试要回答三个问题:

  1. WM v2 在小样本(35Q)和大样本(152Q)下相对旧版 Main 的准确率提升;
  2. WM v2 结构化 overview 的独立贡献(关闭向量召回);
  3. WM v2 + autoRecall 联合方案的最佳效果。

测试环境如下:

LLMdoubao-seed-2-0-code-preview
Embeddingdoubao-embedding-vision-251215
GatewayOpenClaw 2026.4.27
Main 分支OpenViking @origin/main,commit4d6f5b65
WM2 分支工作记忆代码
Judgedoubao-seed-2-0-code-preview-260215

二、LoCoMo 长对话事实召回测试

2.1 测试组设计

测试组说明autoRecall设计目的
WM2工作记忆 + 长期记忆 + 工具回溯onWM v2 全功能端到端测试
WM2-NOREC工作记忆 + 工具回溯(关闭长期记忆)off隔离工作记忆 + 工具回溯的独立贡献,看不靠向量召回时还能拿多少分
MAIN原 overview + 长期记忆 + 老版工具回溯(仓库主分支代码)on旧版基线
MCOpenClaw 原生记忆(关闭 OpenViking)横向对比 OpenClaw 原生记忆方案

这个分组是理解全部结论的钥匙:WM2 vs MAIN回答「新方案值不值得换」,WM2-NOREC vs MAIN回答「结构化工作记忆本身贡献了多少」,WM2 vs WM2-NOREC回答「向量召回还有没有增量」。

2.2 数据集

数据集session 数QA 数说明
locomo-small1935LoCoMo sample 0 前 35 题,小样本快速对照
locomo10 case019152LoCoMo sample 0 完整

注意:Ingest 和 QA 同会话(QA 会话连续,复用前题上下文)——目的是测试工作记忆,而不是长期记忆的跨会话检索。

2.3 locomo-small(35Q):纯工作记忆即 +60.0pp

测试组准确率QA tokenstok/correct
MAIN28.57% (10/35)144,79714,480
WM294.29% (33/35)184,4975,591
WM2-NOREC88.57% (31/35)124,2464,008
MC42.86% (15/35)2,352,395156,826

三组关键对比:

  • 纯工作记忆 vs 旧版 MAIN:准确率从 28.57% 提升到 88.57%(+60.0pp),QA tokens 反而下降 14.2%(144,797 → 124,246),单题成本从 14,480 降到4,0083.6× 效率)。仅靠结构化 7 段 overview + 工具回溯、无需任何向量召回,就已拿到大部分提升且同步节省 token。
  • 叠加长期记忆 vs 纯工作记忆:准确率再升+5.7pp(88.57% → 94.29%),代价是 QA tokens 增加 48.5%(124,246 → 184,497),单题成本升到 5,591。长期记忆在此表现为「以 token 换最后一段准确率的细节召回」,边际收益递减但仍正向。
  • OpenClaw 原生记忆 MC 横向对照:仅 42.86%,单题成本 156,826(是 WM2 的28 倍),准确率比 WM2 低51.4pp,无竞争力。

2.4 locomo10 case0(152Q):长样本上纯工作记忆已占整体提升的约 88%

测试组准确率QA tokenstok/correct
MAIN23.68% (36/152)2,280,09863,336
WM279.61% (121/152)1,510,19012,481
WM2-NOREC73.03% (111/152)1,622,31914,615
  • 纯工作记忆 vs MAIN:准确率从 23.68% 提升到 73.03%(+49.35pp),QA tokens 同步下降 28.8%(2,280,098 → 1,622,319),单题成本从 63,336 降到14,6154.3× 效率)。纯结构化工作记忆贡献了整体提升的约 88%(49.35 / 55.93),且 token 大幅节省。
  • 叠加长期记忆 vs 纯工作记忆:准确率再升+6.58pp(73.03% → 79.61%),QA tokens再节省 6.9%(1,622,319 → 1,510,190),单题成本降到 12,481。与 35Q 的「以 token 换准确率」不同,长样本上长期记忆是双向收益——既提升准确率,又因更高效答题而节省 token。

2.5 核心结论汇总

  1. LoCoMo 长对话事实召回:WM v2 在 152Q 上达79.61%(旧版 23.68%,+55.93pp);35Q 上达94.29%(旧版 28.57%,+65.7pp)。
  2. Token 效率
    • 35Q:WM v2 总 QA tokens 184,497(旧版 144,797,多 27.4%),但准确率涨 +65.7pp,单题成本从 14,480 降到5,591(约 1/2.6)。
    • 152Q:WM v2 总 QA tokens 1,510,190(旧版 2,280,098,节省 33.8%),准确率涨 +55.93pp,单题成本从 63,336 降到12,481(约 1/5.1)。
    • 整体趋势:35Q 是「以 token 换准确率」(总量略增 + 单题大幅降本),152Q 是双向收益(总量降 + 单题降)。
  3. 纯工作记忆是主体收益:关闭长期记忆向量召回仍能达73.03%(152Q),autoRecall 在此基础上再补+6.58pp

三、MemoryArena Group Travel 跨会话规划对比

MemoryArenagroup_travel_planner是跨会话旅行规划任务(slot-filling + 后续 QA),不直接验证工作记忆能力——每个 task 是独立 session,没有跨题上下文累积。它被用来回答另外两个问题:与 OpenClaw 原生记忆的差距,以及与 OV 主分支无 WM 的严格 A/B 副作用检验。

3.1 数据集与方法

维度说明
数据集MemoryArenagroup_travel_planner(270 task / 1869 subtask 的多日多人旅行规划)
子样本sample0 / sample1 / sample2 共294 道 slot-level QA
任务结构slot-filling 旅行规划 + 后续 QA(跨 task 独立 session)

指标定义:

  • Action:slot-filling 规划阶段的执行准确率——agent 在多步规划过程中正确填充 expected slot(如 flight number / departure time / arrival time)的比例,衡量规划执行阶段的动作准确性。
  • QA:问答阶段答题准确率——agent 基于 task 上下文回答 slot-level 问题的正确率,衡量记忆/检索阶段能力。
  • Combined Tokens:规划阶段(run)+ 问答阶段(QA)两阶段总 token。

3.2 WM v2 vs MC 原生:Action +42.52pp / QA +35.03pp / Token −21.76%

方案sample0 Actionsample1 Actionsample2 ActionAgg ActionAgg QACombined Tokens
MC memorySearch8/10424/7026/12058/294 (19.73%)74/294 (25.17%)7,158,830
WM v266/10438/7079/120183/294 (62.24%)177/294 (60.20%)5,601,097

WM v2 相比 MC 原生:Action +42.52ppQA +35.03pp,Combined Tokens−21.76%。在 slot-filling 任务上,OpenViking + 工作记忆的整体表现远胜 MC 自检索方案(LLM 主动调用memorySearch)。

3.3 严格 A/B(WM v2 vs OV-noWM):无副作用、大体持平

SampleOV-noWM ActionOV-noWM QAWM v2 ActionWM v2 QA
sample071/104 (68.27%)65/104 (62.50%)66/104 (63.46%)60/104 (57.69%)
sample152/70 (74.29%)45/70 (64.29%)38/70 (54.29%)38/70 (54.29%)
sample266/120 (55.00%)58/120 (48.33%)79/120 (65.83%)79/120 (65.83%)
Aggregate189/294 (64.29%)168/294 (57.14%)183/294 (62.24%)177/294 (60.20%)

WM v2 vs OV-noWM:Action −2.04pp(OV-noWM 略胜),QA +3.06pp(WM 略胜),token +2.75%。per-sample 异质性较高(sample1 OV-noWM 大幅领先、sample2 WM v2 大幅领先),aggregate 大体持平——没有显著退化也没有显著提升,符合预期(slot-filling 不直接受工作记忆改造影响),说明 WM 改造在此类任务上没有副作用


四、为什么纯工作记忆能拿到主体收益:从源码看结果成因

测试结论「关闭向量召回仍能达 73.03%」并非偶然,而是 WM v2 三个设计原则在源码层面的直接体现(见 workmemory-v2-design.md 与 session.py):

4.1 固定 7 段结构化模板:让「记住什么」变得可维护

archive 的.overview.md是固定 7 段结构(Session Title / Current State / Task & Goals / Key Facts & Decisions / Files & Context / Errors & Corrections / Open Issues),每段职责明确,LLM 不能随意增删段落。代码中WM_SEVEN_SECTIONS常量(见 session.py)顺序固定,段上限约 2000 tokens、总 WM 上限约 12000 tokens,单段 ≥ 25 bullets 或 ≥ 1500 tokens 时触发 consolidation 提醒。

有结构才能做增量更新:LLM 对每个段独立发KEEP/UPDATE/APPEND,未变化的段发KEEP由服务端原样复制——零 token 消耗、零信息丢失。这正是 35Q 上「QA tokens 反降 14.2%」的结构性原因。

4.2 信息保留是系统责任:5 个段级 Guards

设计原则「信息保留是系统责任,不是 LLM 责任」落地为服务端 guard 函数(session.py):

数据特点Guard规则
Session Title锚定型_wm_enforce_title_stabilityUPDATE 与旧 title 有效词重叠 < 1 → 回退 KEEP
Current State易变型LLM 可自由 UPDATE
Task & Goals易变型LLM 可自由 UPDATE
Key Facts & Decisions累积型_wm_enforce_key_facts_consolidationbullet 数 ≥ 旧 15% 且 lexical anchor 覆盖率 ≥ 70% 双阈值;被拒时提取新 items 做 APPEND
Files & Context引用型_wm_enforce_files_no_regressionUPDATE 丢失旧路径 → KEEP + APPEND 新路径
Errors & Corrections只增型_wm_enforce_append_onlyUPDATE 降级为 APPEND,去重后只追加新条目
Open Issues跟踪型_wm_enforce_open_issues_resolved被静默丢弃的 item → 加[restored]标签恢复

即使 LLM 说 UPDATE,服务端也按段特性决定是否接受:Errors 纯 append-only(UPDATE 总被降级为 APPEND);Key Facts 允许「受控合并」,通过双阈值验证后才接受 LLM 的合并。这 5 个 guard + growth + 通用 schema 共有 107 个单元测试覆盖(tests/unit/session/test_wm_v2_guards.py、tests/unit/session/test_working_memory_growth.py),是「长对话丢信息」这一根因的直接防御。

4.3 增量更新协议:JSON schema 强约束 + 完整回退链

更新通过update_working_memory工具的 tool_call 提交,schema 要求 7 段全部必填、additionalProperties: false,漏段/多段/格式错误在 schema 层直接拦截。每段操作被oneOf约束为三种形状:{"op": "KEEP"}{"op": "UPDATE", "content": "..."}{"op": "APPEND", "items": [...]}

服务端_merge_wm_sections(old_wm, ops)按常量遍历 7 段合并,并带完整回退链(session.py):tool_call 缺失 → 重跑创建 prompt(传入旧 WM 作为上下文);JSON parse 失败 → 正则 recovery → 段级 guard 兜底 KEEP;legacy 格式自动检测(检查 overview 是否含 7 段 header),旧格式会话走创建路径全量生成、下次 commit 自动升级,无需手动迁移。这就是「平滑升级、向后兼容」的保证——不配置新字段时行为完全不变,keep_recent_count=0等价于全量归档。

4.4 滑动窗口与 keep_recent_count:归档后的上下文连贯

SessionMeta维护pending_tokenskeep_recent_count并持久化到.meta.json(session.py):add_message时新消息进入保留窗口尾部、被挤出窗口的消息 token 累加到pending_tokenscommit时归零;GET /sessions/{id}直接读 meta,O(1) 判断是否触发归档。服务端有防御性 clamp(两者均max(0, ...)),CommitRequest.keep_recent_count在 router 层约束ge=0, le=10_000

插件侧对应配置commitKeepRecentCount(默认 10,见 config.ts):afterTurn 归档时保留最近 N 条消息维持下一轮上下文,commitTokenThresholdRatio(默认 0.5)控制何时触发异步 commit;compact 路径则固定传keep_recent_count=0全量压缩。OV 存储模型保证tool_use/tool_result配对完整性,归档后工具调用链仍可完整回溯。

4.5 assemble 三分区:WM overview 成为会话摘要的单一来源

上下文组装按 instruction / archive / session 三分区:Layer 1 是 ≤8K tokens 的 Archive Memory(即 WM 7 段 overview),Layer 2 是未压缩的 live messages,Layer 3 保留 ≥20K tokens 给 LLM 回复空间。pre_archive_abstracts字段保留在 API 中但服务端固定返回空数组,插件侧只消费latest_archive_overview。需要细节时模型走两条回查路径:ov_archive_expandarchive_id展开单个 archive 原文,ov_archive_search按关键词跨 archive grep(默认最多 12 条命中、每条 1500 字符、不返回完整原文、正则元字符自动转义为字面量)。这套「摘要兜底 + 按需回查」机制,正是测试中「靠结构化摘要本身就能拿到大部分分数」的工程基础。


五、结论与适用边界

结论:在 LoCoMo 长对话事实召回上,WM v2 相比旧版 structured_summary 实现了准确率(+55.93pp / 152Q)与单题成本(约 1/5.1)的双重改善,其中纯工作记忆(结构化 7 段模板 + 工具回溯)贡献了约 88% 的提升;在 MemoryArena 跨会话规划上,WM v2 与 OV 主分支无 WM 严格 A/B 大体持平(QA +3.06pp / Action −2.04pp),相对 MC 原生显著领先(QA +35.03pp / Token −21.76%)。

适用边界(务必注意)

  • MemoryArena 每个 task 是独立 session、无跨题上下文累积,不直接验证工作记忆,该任务结论不外推到 LoCoMo;
  • 35Q 上长期记忆是「以 token 换准确率」,152Q 上才是双向收益——长对话场景收益更显著;
  • 测试基于 doubao-seed-2-0-code-preview 与 OpenClaw 2026.4.27 特定环境,换模型/换 Gateway 后数值需重新验证。

相关实现与测试的进一步阅读入口:session.py(7 段常量、guards、滑动窗口)、ov_wm_v2 提示词模板、插件配置、设计文档、Guards 单元测试。

【免费下载链接】OpenVikingSelf-evolving Context Database for AI Agents. Unify Agent Memory, Knowledge RAG and Skills.项目地址: https://gitcode.com/GitHub_Trending/op/OpenViking

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/10 9:57:15

15 分钟搞定 ESP32 Arduino 开发环境:新手完整避坑指南

15 分钟搞定 ESP32 Arduino 开发环境&#xff1a;新手完整避坑指南 【免费下载链接】arduino-esp32 Arduino core for the ESP32 family of SoCs 项目地址: https://gitcode.com/GitHub_Trending/ar/arduino-esp32 "开发板管理器里搜不到 ESP32""找不到开…

作者头像 李华
网站建设 2026/9/10 9:56:55

加密货币自动对冲系统实战:Delta中性策略与资金费率套利

做加密货币量化交易这几年&#xff0c;最让我头疼的从来不是策略逻辑本身&#xff0c;而是“盯盘”这两字。尤其是做期现套利、Delta中性这类偏稳健的策略时&#xff0c;整个系统处在一种慢节奏的博弈里——资金费率要等8小时一结&#xff0c;仓位偏差可能就几个百分点&#xf…

作者头像 李华
网站建设 2026/9/10 9:55:24

camofox-browser:基于Firefox ESR的C++级浏览器运行时加固方案

1. 项目概述&#xff1a;一个被误读但极具技术纵深的浏览器工程实践“camofox-browser”这个名称一出现&#xff0c;很多人第一反应是——这又是个套壳浏览器&#xff1f;或者是不是某个Firefox魔改版的代号&#xff1f;甚至有人直接联想到自动化测试工具链里的“伪装”行为&am…

作者头像 李华