Skip to content

构建 Session / Memory 多后端回放一致性测试框架 #89

Closed
coder-mtj/trpc-agent-python
#1

Description

@raychen911

背景和价值
项目支持 InMemory、SQL、Redis 等 Session / Memory 后端,并支持多轮对话、状态读写、事件追加、长期记忆、Session Summary 等能力。生产环境经常先用 InMemory 开发,再切换到 SQL 或 Redis。如果不同后端在同一条 Agent 轨迹下保存的事件顺序、state、memory 或 summary 不一致,就会导致回放错乱、上下文丢失、长期记忆污染、摘要覆盖错误等问题。
该题要求构建一个可复用的回放一致性框架,用同一组标准化输入驱动多个后端,并自动生成差异报告。它既是测试工具,也是后端实现质量的基准。除事件和状态外,还需要覆盖 Session Summary 的生成、保存、读取和更新语义,避免长对话压缩后出现摘要丢失或跨后端不一致。
任务描述
设计并实现一个 Session / Memory / Summary replay harness。输入一组多轮对话、工具事件、state 更新、memory 写入和 summary 更新操作,分别写入不同后端,再读取出来做规范化比较,判断事件、状态、记忆和摘要是否一致。对无法做到完全一致的字段,需要提供合理的归一化策略或差异解释。
具体要求
至少覆盖以下 replay case:
1.单轮普通对话:只有用户输入和 Agent 文本输出。
2.多轮对话:连续追加多轮 user / assistant event。
3.工具调用对话:包含 function_call 和 function_response。
4.state 更新:同一 session 内多次写入和覆盖 state。
5.memory 写入和读取:模拟用户偏好、事实记忆或历史摘要。
6.summary 生成和更新:长对话触发摘要写入后,检查 summary 内容、版本、更新时间和关联 session 是否能正确回放。
7.summary 与事件截断:模拟历史事件被 summary 压缩后,检查保留事件、摘要和后续新事件是否能共同还原上下文。
8.异常恢复:写入中途失败或重复写入后,检查后端是否出现重复事件、脏状态或错误 summary。
比较时需要注意:
●对时间戳、自动生成 id、序列化字段顺序等非业务字段做归一化。
●对确实后端相关的字段差异写入 allowed_diff,不能简单忽略所有不一致。
●对 summary 需要区分“内容语义一致”和“存储元数据一致”:摘要文本可支持规范化比较,但 session 归属、summary 版本、覆盖关系不能模糊跳过。
●支持只运行 InMemory 的轻量模式,也支持在有环境变量时运行 SQL / Redis 集成模式。
●不要求贡献者本地必须安装真实 Redis / MySQL,但需要提供 mock、sqlite 或跳过策略。
交付物
●tests/sessions/test_replay_consistency.py 或等价测试框架。
●replay_cases/*.jsonl 或 Python fixture,描述标准输入轨迹。
●session_memory_summary_diff_report.json:记录每个后端、每个 case 的事件、state、memory、summary 差异。
●一份 150 – 300 字设计说明,解释归一化策略、summary 比较策略、允许差异和后端接入方式。
验收标准
1.至少支持 InMemory 与一个持久化后端或模拟持久化后端的对比。
2.公开提供的 10 条 replay case 必须 100% 检测出人为注入的不一致。
3.正常 case 误报率 ≤ 5%。
4.summary 丢失、summary 覆盖错误、summary 归属 session 错误三类问题检出率必须达到 100%。
5.差异报告必须能定位到 session id、event index 或 summary id、字段路径和两个后端的值。
6.轻量模式完整运行耗时 ≤ 30 秒;集成模式可通过环境变量开启或跳过。

本issue为2026犀牛鸟开源人才培养活动专属issue,仅供已报名参与犀牛鸟活动的同学认领
【认领时间】7月1日~7月31日(7月1日前认领视为无效❗)
【认领方式】在本issue评论区回复“已认领本任务”,即视为认领成功
【活动报名】需提前完成犀牛鸟报名问卷,问卷将用于活动登记和奖励发放:https://wj.qq.com/s2/26888567/gh2q

Activity

  1. Spock12138 commented on Jun 24, 2026

    @Spock12138

    你好,对确实后端相关的字段差异写入 allowed_diff 这句话,是指因后端实现差异导致的字段不一致,需要记录到 allowed_diff 中吗?

  2. lyra-planet commented on Jun 30, 2026

    @lyra-planet

    已认领本任务

  3. Spock12138 commented on Jun 30, 2026

    @Spock12138

    已认领本任务

  4. Thoth-hyx commented on Jun 30, 2026

    @Thoth-hyx

    已认领本任务

  5. perhaps468 commented on Jun 30, 2026

    @perhaps468

    已认领本任务

  6. ha0924 commented on Jun 30, 2026

    @ha0924

    已认领本任务

  7. ourhome-macro commented on Jun 30, 2026

    @ourhome-macro

    已认领本任务

  8. Xkzx520 commented on Jul 1, 2026

    @Xkzx520

    已认领本任务

  9. CyberX0725 commented on Jul 1, 2026

    @CyberX0725

    已认领本任务

  10. Stelquis commented on Jul 2, 2026

    @Stelquis

    已认领本任务

  11. zurrll commented on Jul 2, 2026

    @zurrll

    已认领本任务

  12. added a commit that references this issue on Jul 2, 2026
    5b900a7
  13. xyxhhhhh commented on Jul 2, 2026

    @xyxhhhhh
    Contributor

    已认领本任务

  14. 34 remaining items

  15. szxiulin commented on Jul 24, 2026

    @szxiulin

    已认领本任务

  16. Sun-0810-yh commented on Jul 24, 2026

    @Sun-0810-yh

    已认领本任务

  17. AsyncKurisu commented on Jul 25, 2026

    @AsyncKurisu

    已认领本任务

  18. mingri31164 commented on Jul 25, 2026

    @mingri31164

    已认领本任务

  19. Audience-jmf commented on Jul 26, 2026

    @Audience-jmf

    已认领本任务

  20. Wsp030914 commented on Jul 26, 2026

    @Wsp030914

    已认领本任务

  21. trickyzerg664 commented on Jul 27, 2026

    @trickyzerg664

    已认领本任务

  22. maludiem commented on Jul 29, 2026

    @maludiem

    已认领本任务

  23. libfhfewu commented on Jul 31, 2026

    @libfhfewu

    已认领本任务

  24. raychen911 commented on Aug 5, 2026

    @raychen911
    ContributorAuthor

    @wzxsdf 完成任务并获奖

  25. raychen911 commented on Aug 5, 2026

    @raychen911
    ContributorAuthor
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions