1. 什么叫 增量更新(incremental update)

  • 全量更新(values 模式)
    每次发来的数据都包含完整状态(所有字段,不管有没有变)。
    → 不需要记忆历史,直接用这次的结果覆盖即可。

  • 增量更新(updates 模式)
    每次发来的数据 只包含发生变化的部分
    没变的字段不会再发过来。
    → 所以必须自己维护一个 current_state,不断把这些变化“补丁”应用到现有状态上,才能得到最新完整状态。


2. 举个例子

假设系统里有个状态字典,长这样:

# 初始状态
current_state = {"step": 1, "progress": 0, "huge_data": "XXXXXXXX"}
全量更新(values)

每次收到的更新都是完整版本:

{"step": 2, "progress": 10, "huge_data": "XXXXXXXX"}
{"step": 3, "progress": 20, "huge_data": "XXXXXXXX"}

👉 不需要记住旧状态,直接用新的覆盖即可。


增量更新(updates)

你收到的更新是“补丁”:

{"step": 2, "progress": 10}
{"step": 3}
{"progress": 20}

👉 注意没有 huge_data,因为它没变。
👉 需要写逻辑,把这些更新应用到 current_state 上:

current_state = {"step": 1, "progress": 0, "huge_data": "XXXXXXXX"}

# 收到 {"step": 2, "progress": 10}
current_state.update({"step": 2, "progress": 10})
# -> {"step": 2, "progress": 10, "huge_data": "XXXXXXXX"}

# 收到 {"step": 3}
current_state.update({"step": 3})
# -> {"step": 3, "progress": 10, "huge_data": "XXXXXXXX"}

# 收到 {"progress": 20}
current_state.update({"progress": 20})
# -> {"step": 3, "progress": 20, "huge_data": "XXXXXXXX"}

这样才能保证 current_state 始终是完整最新的。


3. 为什么要增量更新?

  • 节省带宽:像 huge_data 这种几 MB 的大字段不必每次都发。
  • 更高性能:传输的数据更小,处理更快。
  • 适合流式场景:可以一边接收小更新,一边实时更新界面。

update模式适合生产用,value生成环境下大数据可能会有性能影响。

Logo

中国智能体开发者社区,聚焦智能体与大模型开发,提供前沿资讯、实用工具链、开源项目及行业案例。通过技术沙龙、开发者大赛等活动,促进经验交流与协作,助力开发者快速构建创新智能应用。

更多推荐