Compaction Survival System

Polar Sponsor
爱发电 赞助
.NET 9.0

通过预写日志 (WAL)、工作缓冲区和自动恢复防止 LLM 压缩期间上下文丢失,三项机制确保关键状态...

压缩生存系统

功能概述

压缩生存系统是一项面向实际任务的技能,主要用于压缩会破坏特定性: 文件路径、 精确值、 配置细节、 推理链;此技能可确保临界状态存活;

核心要点

  • 问题: 当您的背景时。
  • 它将相关步骤、工具调用和结果整理方式集中到统一流程中,帮助使用者更快完成目标并减少重复操作。
  • 使用时应结合输入条件选择合适的执行方式,核对必要参数、依赖环境与输出内容,并按原始要求处理异常情况。

使用与执行

该技能适合需要稳定复用相关能力的场景,可作为自动化工作流的一部分,也便于后续检查、调整和扩展。从功能定位来看,该技能强调把分散的操作要求整理成清晰、可复用的处理流程,使用户能够围绕既定目标快速准备输入、选择执行方式并获得结构化结果。实际使用前应先确认任务范围、数据来源、运行环境、必要权限和关键参数,再依据技能说明逐步执行;

结果检查与注意事项

若输入条件不完整,应先补齐信息或采用保守配置,避免因错误假设导致结果偏离需求。执行过程中需要关注工具调用是否成功、接口或依赖是否可用、输出格式是否符合预期,并对异常提示、缺失字段和边界情况进行处理;涉及批量任务时,还应保存进度,避免中断后重复操作。

压缩存活系统

压缩会抹除具体信息:文件路径、精确数值、配置细节、推理链条。本机制确保关键状态在压缩中得以保留。

问题所在:当上下文窗口填满时,OpenClaw 会将较早的消息压缩为摘要。而摘要必然损失精度——精确数字变为“大约”,文件路径消失,决策失去依据。每次压缩后,你的 agent 都会“变笨”一点。

解决方案:三套协同机制,在压缩发生前捕获关键状态,并在压缩后完整恢复。

三大机制

1. WAL 协议(预写式日志,Write-Ahead Logging)

对每一条输入消息,均需扫描以下内容:

  • ✏️ 修正类语句 —— “是 X,不是 Y” / “实际上……”
  • 📍 专有名词 —— 人名、地名、公司名、产品名
  • 🎨 偏好表达 —— 风格倾向、方法偏好、“我喜欢/不喜欢……”
  • 📋 决策声明 —— “我们做 X 吧” / “采用 Y 方案”
  • 📝 草稿变更 —— 对当前工作的编辑内容
  • 🔢 具体数值 —— 数字、日期、ID、URL、路径

若发现任一上述内容:

  1. 暂停 —— 暂不生成响应
  2. 写入 —— 将该细节更新至 SESSION-STATE.md
  3. 再响应 —— 完成更新后,再向用户作答

触发时机基于用户的输入,而非你的记忆。请如实记录用户所说内容,而非你自己的理解。

2. 工作缓冲区(危险区)

当上下文使用率达 60%(通过 session_status 查看)时:

  1. 创建或清空 memory/working-buffer.md,并写入如下头部:
    # Working Buffer (Danger Zone)
    **Status:** ACTIVE
    **Started:** [timestamp]
    
  2. 此后每一次对话(含 60% 后的所有轮次):将用户的输入 + 你的响应摘要追加至该文件
  3. 缓冲区以文件形式存在 —— 可在压缩中完整保留
  4. 保持该缓冲区内容不变,直至新会话再次达到 60% 阈值

存储位置: memory/working-buffer.md

3. 压缩恢复机制

自动触发条件(满足任一即触发):

  • 会话启动时,上下文中包含 标签
  • 你本应知晓某信息,但实际缺失
  • 用户提问:“我们刚才聊到哪儿了?” / “继续” / “我们之前在做什么?”

恢复步骤(严格按顺序执行):

  1. 读取 memory/working-buffer.md —— 获取原始的“危险区”对话记录
  2. 读取 SESSION-STATE.md —— 获取当前活跃任务状态
  3. 读取今日及昨日的 memory/YYYY-MM-DD.md
  4. 若仍缺少上下文,调用 memory_search
  5. 从缓冲区中提取关键上下文 → 更新 SESSION-STATE.md
  6. 向用户报告:“已恢复上下文。上一个任务是 X。正在继续。”

切勿主动询问“我们刚才在讨论什么?” —— 缓冲区中已有全部答案。

SESSION-STATE.md 格式规范

# Session State — Active Working Memory

## Current Task
[当前正在执行的任务]

## Key Details
- [通过 WAL 捕获的具体数值、路径、配置等]

## Decisions Made
- [附带依据的决策记录]

## Pending
- [待处理项 / 当前阻塞点]

## Last Updated
[timestamp]

请高频更新此文件。它是你的 RAM —— 唯一能在两次压缩事件之间完整保留具体信息的位置。

协同工作流程

                    ┌──────────────────────────┐
                    │    用户发送消息            │
                    └────────────┬─────────────┘
                                 │
                    ┌────────────▼─────────────┐
                    │  WAL:扫描具体信息        │
                    │  若命中,优先写入         │
                    └────────────┬─────────────┘
                                 │
               ┌─────────────────▼─────────────────┐
               │  上下文使用率 > 60%?全部写入缓冲区 │
               └─────────────────┬─────────────────┘
                                 │
                    ┌────────────▼─────────────┐
                    │    向用户返回响应          │
                    └────────────┬─────────────┘
                                 │
                        ┌────────▼────────┐
                        │   触发压缩(COMPACTION HIT) │
                        └────────┬────────┘
                                 │
                    ┌────────────▼─────────────┐
                    │  恢复阶段:读取缓冲区、     │
                    │  SESSION-STATE、当日/昨日日志 │
                    │  → 全量上下文恢复完成       │
                    └──────────────────────────┘

集成说明

  • 与 MEMORY.md(长期记忆)和 memory/YYYY-MM-DD.md(每日日志)协同工作
  • SESSION-STATE.md = 当前任务的工作记忆
  • 工作缓冲区 = 危险区场景下的应急捕获机制
  • 三层机制叠加运作:WAL → 缓冲区 → 恢复
  • 无外部依赖。无需 API Key。纯行为模式实现。

为何有效

多数“记忆”方案试图永久保存一切内容 —— 这是错误的问题定义。真正的问题是压缩过程中的精度丢失。你不需要记住所有事,而只需在正确的时间记住正确的事。

WAL 在具体信息出现的瞬间即完成捕获;缓冲区覆盖整个危险区;恢复机制在压缩重置后重建上下文。三层设计,零依赖,零数据泄露。

由 @rustyorb + S1nthetta ⚡ 构建 —— 已在 30+ 次压缩事件中实战验证。

相关专题

更多
Gradle插件开发入门教程
Gradle插件开发入门教程

本专题介绍Gradle插件开发的基本流程,涵盖插件类编写、自定义任务注册、扩展参数设计和插件应用方法,帮助你理解插件如何组织构建逻辑,减少多个项目之间的重复配置。

2026.10.22

0

11

Gradle Wrapper配置教程
Gradle Wrapper配置教程

本专题介绍Gradle Wrapper的基本作用,涵盖文件组成、生成方法、版本配置和任务调用,帮助你理解项目如何使用指定的Gradle版本,减少不同开发环境带来的构建差异。

2026.10.22

0

10

Golangci-lint检查器使用教程
Golangci-lint检查器使用教程

本专题整理Golangci-lint常用Linters的用途与配置方法,覆盖错误处理、无效代码、安全、复杂度、命名和依赖检查,帮助项目合理选规则。

2026.10.22

0

15

Gradle怎么构建Java项目
Gradle怎么构建Java项目

本专题介绍Gradle Java项目构建方法,涵盖Java插件配置、依赖声明、源码编译、测试执行和打包检查,帮助你理解各阶段的任务关系,逐步完成项目构建。

2026.10.22

0

10

PHP时间戳漏洞修复教程
PHP时间戳漏洞修复教程

本专题汇总PHP常见时间戳漏洞,包括2038年溢出、时区漂移、时间戳伪造、重放攻击、时间盲注与日志审计失效等,并给出升级64位环境、使用 DateTimeImmutable、统一UTC、严格超时校验、预处理绑定、hash_equals 比对等修复方案,帮助开发者快速排查和加固时间相关代码。

2026.10.22

0

25

Golangci-lint配置文件与规则设置
Golangci-lint配置文件与规则设置

本专题聚焦Golangci-lint YAML配置文件,讲清运行参数、规则启停、目录排除、问题过滤及严重级别设置,便于团队统一检查标准。

2026.10.22

0

15

Golangci-lint安装与入门教程
Golangci-lint安装与入门教程

本专题讲解Golangci-lint的安装、初始化、基础命令和首次代码检查,覆盖本地环境、Docker及多平台用法,帮助Go开发者快速上手。

2026.10.22

0

15

PHP2Shell高危漏洞修复教程
PHP2Shell高危漏洞修复教程

PHP2Shell漏洞是什么,哪些PHP版本和运行环境会受到影响,服务器应该如何检测与修复?本专题提供版本自查脚本、Linux与Docker升级命令、PHP-FPM和Apache排查步骤,以及修复验证、临时缓解和应急响应方案。

2026.10.22

0

12

剧云人物设定与关系管理教程
剧云人物设定与关系管理教程

本专题介绍剧云人物设定与关系管理,讲解角色小传、性格职业、人物目标、背景资料和关系网络的创建及维护方法。

2026.10.22

0

16

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程