观察遮蔽(Observation Masking)
概述
观察遮蔽是上下文策略之一,当上下文接近限制时,保留最近 N 轮对话完整,将更早的消息替换为摘要占位符,从而延长单个 Session 的有效工作时间。与 Anthropic 官方的 上下文压缩 不同,这是客户端自主控制的轻量级策略。
关键内容
-
核心机制:设定保留轮数阈值(如 keep_last_n=10),当消息总数超过阈值时,将旧消息替换为一条摘要消息:
python # 示意:保留最近 10 轮,其余替换为摘要占位符 def mask_old_observations(messages, keep_last_n=10): if len(messages) <= keep_last_n: return messages old_messages = messages[:-keep_last_n] recent_messages = messages[-keep_last_n:] summary_msg = { "role": "system", "content": f"[Previous {len(old_messages)} messages summarized: " f"Implemented features auth-001 through auth-005, " f"all tests passing, last commit: feat(auth-005)]" } return [summary_msg] + recent_messages -
与 上下文压缩 的区别:
- 观察遮蔽是客户端自主实现的轻量级策略,用摘要占位符替换旧消息
- 上下文压缩 是 Anthropic 官方服务端 API,自动生成摘要并创建 compaction 块
-
观察遮蔽更简单直接,但摘要质量取决于客户端实现
-
Ralph 的立场:Observation Masking 不适合 Ralph 的"每 Story 一迭代"模式,因为每次都重启新实例。但在 Story 实现过程中,子任务之间可以使用 Masking 来延长单个 Session 的有效工作时间。
-
适用场景:适合需要在单个 Session 内完成多步骤任务、但又不想触发服务端压缩(或模型不支持压缩)的场景。
来源
- raw/articles/ai-tools/ralph-loop/context-strategies.md — Context Strategies 文档中的策略三
相关
- 上下文策略 — part_of(观察遮蔽是六大上下文策略之一)
- 上下文压缩 — compares_to(服务端官方压缩 vs 客户端轻量遮蔽)
- 上下文窗口 — relates_to(应对上下文窗口限制的客户端策略)
- Clean State Protocol — relates_to(Ralph 更倾向于用干净状态协议替代遮蔽)