跳到主要内容
Agent Memory 分离式协同

第8章:端到端实战与开源拼装

把鲲鹏三件套 + 项目第一/二模块的方法论整合到一份可执行的"端到端实战路径"——OpenClaw + OpenViking + RDMA 集群的拼装方案、不需要 UB 硬件的等价复现策略、minimal viable benchmark 设计

OpenClaw OpenViking RDMA 集群 等价复现 benchmark 工程集成

前 7 章把”为什么 + 怎么做 + 怎么对照”讲清楚了。这一章是整模块的收口章 + 落地章——把鲲鹏三件套 + 项目第一/二模块的方法论整合到一份可执行的端到端实战路径:从 OpenClaw + OpenViking 的开源框架拼装,到没有 UB 硬件时怎么用 RDMA 集群做等价复现,到 minimal viable benchmark 的设计——把这本书读到这一章的工程师 / 研究者都能拿走一份能立刻动手的工作清单。

📑 目录


1. 端到端工作流:从用户问题到答案

把一个真实的”长任务 Agent 问答”的端到端流程画清楚——这个流程会贯穿本章所有讨论:

┌────────────────────────────────────────────────────────────┐
│  用户:"帮我做一份本月项目进度汇报"                          │
└────────────────────────────────────────────────────────────┘


┌────────────────────────────────────────────────────────────┐
│  Step 1: Agent 接到任务,需要工具集                        │
│  - 鲲鹏路线 1(上下文缓存):工具定义 / 中间数据指针存 UB 池│
│  - 路线 C(渐进披露):只先 declare 工具集目录              │
└────────────────────────────────────────────────────────────┘


┌────────────────────────────────────────────────────────────┐
│  Step 2: Agent 决定调用 search 工具                        │
│  - search 工具检索"本月相关进度"——走 Vector 检索           │
│  - 鲲鹏路线 2 / 3:根据 SLA 选择走整图 or 量化粗精排        │
│  - 输出:top-10 文档(~30K tokens)                         │
└────────────────────────────────────────────────────────────┘


┌────────────────────────────────────────────────────────────┐
│  Step 3: 中间结果不进 LLM 上下文                          │
│  - search 输出写入 UB 池(pointer + summary 给 LLM)        │
│  - LLM 上下文只增加 ~200 tokens                            │
└────────────────────────────────────────────────────────────┘


┌────────────────────────────────────────────────────────────┐
│  Step 4: LLM 决定下一步:summarize → db_read → chart       │
│  - 每一步的中间数据继续走 UB 池                            │
│  - LLM 上下文里只有指针链                                  │
└────────────────────────────────────────────────────────────┘


┌────────────────────────────────────────────────────────────┐
│  Step 5: report Agent 生成最终报告                        │
│  - 物化所有 step 的中间数据                                │
│  - 综合输出最终 markdown 文档                              │
└────────────────────────────────────────────────────────────┘


┌────────────────────────────────────────────────────────────┐
│  Step 6: 长记忆归档                                        │
│  - 用户偏好 / 重要事实写入用户级 Vector 索引(持久化)     │
│  - 中间数据按 TTL 衰减或迁移到 SSD                         │
└────────────────────────────────────────────────────────────┘

🌟 关键观察鲲鹏三件套在这个流程的不同 Step 各司其职——路线 1 在 Step 3-5 之间负责中间数据搬出;路线 2/3 在 Step 2 / Step 6 负责向量检索;项目 LMObject 在所有 Step 提供数据画像和 tier 决策。

2. 开源组件拼装:OpenClaw + OpenViking + 向量库

2.1 整体技术栈

让我们把端到端系统的开源组件拼装路径列出来:

组件角色替代方案
Agent 框架OpenClaw(鲲鹏开源)Agent 调度 + 工具协议LangGraph / AutoGen / CrewAI
Agent 编排OpenViking(鲲鹏联合)多 Agent 协作LangGraph 多 Agent / OpenAI Swarm
工具协议MCPAnthropic 工具调用标准OpenAI Function Calling / 自定义
上下文缓存UB 池RDMA 模拟中间数据存储Redis / 自建 KV
向量库Milvus + 量化扩展ANN 检索Vespa / pgvector / 自建
推理引擎vLLM + KV cache 共享LLM 推理TensorRT-LLM / Dynamo
KV cache 共享NIXL + 鲲鹏路线 1KV cache 池化Mooncake / LMCache

2.2 关键集成点

集成点 1:工具协议 → 上下文缓存

OpenClaw / MCP 的工具调用返回值默认走 LLM 上下文。要把它接到 UB 池:

# Hook: 在工具调用结果回到 LLM 上下文前拦截
@on_tool_result
def cache_intermediate(tool_name, result):
    if size(result) > THRESHOLD:  # 超过 500 tokens 就上池子
        rid = ub_pool.write(result, summary=summarize(result, max_tokens=100))
        return f"<cached id='{rid}'/>"
    return result  # 小结果继续走原路径

集成点 2:向量库 → UB 池或 RDMA 池

Milvus / Vespa 默认用单机 / 集群分片内存。要让它用 UB 池作为底座:

  • 修改 storage backend,接入分离式内存协议
  • 这条路径在 Milvus 已经有 Knowhere 抽象层(向量索引)和 MinIO 抽象层(存储),都是可替换的

集成点 3:vLLM KV cache → 跨节点池

vLLM 0.6+ 已经有跨节点 KV cache 共享能力(基于 NIXL)。把 NIXL 的存储接到 UB 池或 RDMA 池就完成集成。

2.3 一份”开发者周末就能跑起来”的最小拼装

如果你只有几张 GPU 和一个 RDMA 集群(或者甚至只是几台普通服务器 + TCP),可以做这样的最小集成:

# docker-compose.yaml 雏形
services:
  agent-host:
    image: openclaw:latest   # 或 langgraph + 自建 Agent
    environment:
      - LLM_ENDPOINT=http://vllm:8000
      - VECTOR_DB=http://milvus:19530
      - INTERMEDIATE_CACHE=tcp://intermediate-cache:6379
      
  vllm:
    image: vllm/vllm-openai:latest
    deploy:
      resources:
        reservations:
          devices:
            - capabilities: [gpu]
            
  milvus:
    image: milvusdb/milvus:latest
    
  intermediate-cache:
    image: redis:latest    # 用 Redis 模拟"中间数据池"
                           # 真正生产可换成 UB 池或 RDMA 实现

这套配置让你几小时内就能跑通端到端 Agent + 向量检索 + 中间数据缓存——虽然性能远远达不到鲲鹏路线的指标,但架构是对的,只需要把”中间档介质”逐步从 Redis(TCP)替换为 RDMA / CXL / UB,性能会逐步逼近论文水平。

3. 没有 UB 怎么办:RDMA 集群上的等价复现

大多数研究团队没有 UB 硬件——但本模块的方法论价值不应该被硬件可用性约束。这一节给出用 RDMA 集群做等价复现的完整方案。

3.1 RDMA vs UB 的工程差距

回顾 Ch5 第 6 节的对照:

维度UBRDMA
单次访问延迟~1-3 µs~5-10 µs
编程模型load/store 透明verbs API 显式
原子操作丰富有限

这意味着用 RDMA 复现鲲鹏路线性能会有约 2-5x 的差距——但架构和工程哲学完全等价。论文里只要诚实标注”实验在 RDMA 上做,对应 UB 时性能预期可外推”,研究意义不会被打折

3.2 鲲鹏三件套的 RDMA 等价实现

等价 1:上下文缓存 (Ch4) → RDMA-based intermediate cache

  • ibv_post_send / ibv_post_recv 实现 KV 协议
  • 单 NIC 多 QP 实现并发
  • 用 RDMA Atomic Operations 做引用计数

等价 2:全局向量检索 (Ch5) → RDMA HNSW 整图

  • 把 HNSW 图节点用 RDMA Memory Region 注册
  • 跨节点访问邻居用 ibv_post_send + RDMA Read
  • 性能基线:单跳从 UB 的 ~2 µs 退化到 RDMA 的 ~7 µs,整查询 P99 从 10ms 退化到 ~30-50ms

等价 3:超低内存混合介质 (Ch6) → RDMA + NVMe-oF

  • 量化索引在 RDMA 内存池
  • 原始向量在 NVMe-oF(NVMe over Fabric)远端 SSD
  • 二阶段精排走 RDMA → NVMe-oF → DRAM

3.3 等价复现的论文叙事

如果你打算用 RDMA 复现写论文,叙事可以这样组织:

“我们在 RDMA 集群上实现并验证了鲲鹏 2026 公开方案的方法论核心。考虑到 RDMA 与 UB 的延迟差距(~3x),我们的 RDMA 实验性能略低于鲲鹏公开数字,但所有相对比较趋势完全一致——这验证了该方法论的通用性:不依赖 UB 专用硬件也能成立。”

这套叙事给评委的信息:

  • ✅ 你理解鲲鹏方案的核心
  • ✅ 你做了真实工程验证(不是纸上谈兵)
  • ✅ 你的工作可被其他团队复现(RDMA 是开放协议)
  • ✅ 项目的 LMObject 抽象真的跨硬件——不只是 UB

4. Minimal Viable Benchmark 设计

要论证项目方案的工程价值,需要一份精心设计的 benchmark。这一节给一份最小可复现的 benchmark 模板。

4.1 评测目标分层

按重要性把评测目标分三档:

评测点必做 / 可选
必做端到端 Agent 任务延迟 / 成本✅ 必做
必做千亿规模向量召回 P50/P99 / recall✅ 必做
必做上下文缓存的 token 节省比例✅ 必做
可选跨节点访问延迟分布可选
可选自适应迁移的策略效果可选
可选多协议(RDMA / CXL / UB)对比可选

4.2 必做评测的具体设计

评测 1:端到端 Agent 任务

  • 数据集:构造 100 个真实 Agent 任务(汇报 / BI / 客服 / 代码搜索)
  • 指标:
    • P50/P99 端到端延迟
    • 总 token 消耗(输入 + 输出)
    • 成本 / 任务(按 GPT-4 / DeepSeek 价位估算)
  • 对比组:
    • 基线:无上下文缓存(中间数据全走 LLM)
    • 单机上下文缓存(路线 D)
    • 本方案:分离式上下文缓存(鲲鹏路线 1 / RDMA 等价)
  • 期望结果:本方案 TTFT ↓ 70%、token ↓ 60-70%、成本 ↓ 70%

评测 2:千亿规模向量召回

  • 数据集:100B 向量(可用 SIFT / DEEP / 自合成)
  • 索引方法:
    • HNSW 分片
    • DiskANN
    • SPANN
    • 本方案 A:HNSW 整图(基于 RDMA / UB 池)
    • 本方案 B:超低内存粗精排(基于量化 + RDMA + SSD)
  • 指标:recall@10、P50、P99、内存占用、成本估算
  • 期望结果:见 Ch5 第 4.2 节、Ch6 第 5.1 节的具体数字

评测 3:上下文缓存的 token 节省比例

  • 任务:30 个多步工具链任务(每个 4-8 步工具调用)
  • 测量:
    • 基线:完整中间数据进 LLM
    • 本方案:中间数据走缓存
    • token 节省比例 = 1 − (本方案 token / 基线 token)
  • 期望结果:60-75%

4.3 实验报告模板

## 实验设置
- 硬件:8x A100 GPU + 4 节点 RDMA 集群(100Gbps)
- 软件:vLLM 0.7 + 自建 RDMA 中间数据池 + Milvus + OpenClaw
- 数据集:[详述]
- 任务集:[详述]

## 主要结果
[表格:本方案 vs 基线,所有关键指标]

## 消融实验
- 关闭上下文缓存:性能退化到基线
- 关闭 UB / RDMA 整图:性能退化到 HNSW 分片
- 关闭量化粗精排:成本回升到全 DRAM 方案

## 性能 - 成本曲线
[图:延迟 vs 成本,几条不同方案曲线]

## 局限性与未来工作
- 实验在 RDMA 上做,UB 上预期更好
- 自适应迁移引擎仅初步验证
- 跨厂商互操作性待测试

5. 工程踩坑清单

把团队 / 个人在落地时真实会撞到的坑列出来——能少走几步弯路就能省几个月。

5.1 上下文缓存层

  • 坑 1:缓存 TTL 太长——长会话结束后 UB 池占用堆积。对策:按会话级 + LRU 双重 GC
  • 坑 2:summary 生成质量差,LLM 无法识别该不该 materialize。对策:summary 必须包含数据规模 / 结构 / 关键字段
  • 坑 3:跨进程并发读写 race condition。对策:ref_count + epoch 双保护

5.2 向量检索层

  • 坑 4:HNSW 图增量更新时查询读到中间状态。对策:epoch tolerance + CAS 邻居指针
  • 坑 5:精排访问 SSD 时 IOPS 打满 → P99 拉爆。对策:精排候选 prefetch + 跨多 NVMe 并发
  • 坑 6:量化精度损失累积——多次量化后召回降到 0.7 以下。对策:固定一次量化,不要级联多次

5.3 跨节点协作层

  • 坑 7:RDMA QP 数量爆炸——每对节点一个 QP,N×N 节点扩展性差。对策:用 SRQ(Shared Receive Queue)或迁移到 CXL fabric
  • 坑 8:跨故障域共享——一个节点挂掉拖累整池。对策:池子要有故障域隔离 + 副本机制
  • 坑 9:网络抖动导致 P99 不稳。对策:把对延迟敏感的路径(KV cache)和对带宽敏感的路径(向量索引)走不同 NIC

5.4 工程协作层

  • 坑 10:团队对”分离式” / “池化” 等概念理解偏差大。对策:写一份 LMObject + access_profile 的术语手册,全队共识后再开工
  • 坑 11:评审时发现没有数字对比。对策:从 Day 1 就建立 benchmark pipeline,每次代码改动都跑

6. 整模块知识图谱

把整个 Module 16 的核心概念整合成一张知识图谱:

                    Agent Memory + 向量检索的分离式协同

        ┌───────────────────────┼───────────────────────┐
        ▼                       ▼                       ▼
   问题域 (Ch1-3)          方法域 (Ch4-6)          对照域 (Ch7-8)
        │                       │                       │
   ┌────┼────┐              ┌────┼────┐             ┌────┼────┐
   ▼    ▼    ▼              ▼    ▼    ▼             ▼    ▼    ▼
 三大  工业  业界         路线 1  路线 2  路线 3   项目   等价   benchmark
 挑战  实证  路线         上下文  全局   超低内存   对照  复现   设计
                          缓存   检索   混合介质
        │                       │                       │
        ▼                       ▼                       ▼
   "为什么需要"             "怎么具体做"            "怎么落地实施"

每个节点都对应一章——这张图也是模块复习时的快速参照。

🎯 自我检验清单

读完整模块(Ch1-Ch8)后,你应该能回答:

  • 三大挑战(准确率 / 上下文过载 / 检索瓶颈)的工业实证数字是什么量级?
  • 业界 8 条主流路线(A-H)的能力对照矩阵在哪些维度上有空白?
  • 鲲鹏三件套(路线 1/2/3)在 LMObject 抽象下分别对应什么 access_profile?
  • 没有 UB 硬件时,怎么用 RDMA 集群做等价复现?最大的工程差距在哪?
  • 项目第一/二模块在鲲鹏路线之上能做的 5 个差异化创新点是哪些?
  • 一份”开发者周末就能跑起来”的端到端最小拼装包括哪些组件?

📚 参考资料

鲲鹏路线本身

  • 鲲鹏 Agent Memory 创新方案(华为鲲鹏团队 2026 公开发表)—— 三件套完整披露
  • OpenClaw GitHub(2026)
  • OpenViking GitHub(2026)

开源生态

项目相关模块

  • 本系列模块十三:新型互联与远程内存(硬件协议基础)
  • 本系列模块十四:长记忆大模型系统(LMObject 抽象 + 跨层级管理方法论)
  • 本系列模块十五:分离式事务的动态锁所有权(AURA)

学术参考

  • HNSW(Malkov & Yashunin, TPAMI 2018)
  • DiskANN(Microsoft NeurIPS 2019)
  • SPANN(Microsoft NeurIPS 2021)
  • RabitQ(VLDB 2024)
  • Mooncake(KAIST + Moonshot 2024)
  • LMCache / AttentionStore(多篇 2024-2025)

🌟 整模块到此结束。这 8 章把”分离式 Agent Memory + 向量检索”这一具体场景的工程画像 + 业界路线 + 鲲鹏方案 + 项目对照 + 等价复现完整覆盖了。当你下次面对”Agent 系统的 Memory 怎么设计""向量检索怎么扩到千亿”这类问题时,回到这 8 章里找答案——尤其是 Ch4-6 的三件套和 Ch7 的对照分析。

期待项目第一/二模块在这条路线上做出原创性贡献——把工程方法论从”具体硬件 + 具体场景”提升到”通用抽象 + 跨硬件适配 + 自适应决策”的下一个台阶。