--- summary: "NO_REPLY静默转向合约和预压缩内存刷新配置" read_when: - "你想实现内存刷新或静默系统轮次" - "调谐 agents.defaults.compaction.memoryFlush" title: "沉默的转身和记忆的刷新" --- ## 静默事务处理(`NO_REPLY`) OpenClaw 支持用于后台任务的“静默”轮次,在这些轮次中,用户不应看到中间输出。 - 助手会返回一个完整的韵母,该韵母会被修剪为大写 `NO_REPLY`,以请求没有用户可见的文本。小写字母、标点符号、引号、JSON 和尾随标记仍然可见。 - 终端生产者记录决策并准备输出一次;交付和客户端使用该事实而不是解析文本。前导 `NO_REPLY\n` 的文字仅删除该控制线,并将其余部分保留为可见文本。 - Streaming 控制缓冲属于生产者准备,因此可能的控制线不会泄漏到草稿或打字活动中。 - 使用此选项可以有意静音,而不是丢失输出。即使需要回复,外部也尊重它;内部结果要求的转向仍然需要答案。 ## 压缩前内存刷新 在自动压缩发生之前,OpenClaw 可以运行静默代理转向,通过选定的内存提供程序保持持久状态,因此压缩无法擦除关键上下文。 Memory Core 在代理工作区中写入 `memory/YYYY-MM-DD.md`;其他提供商可以公开他们自己的持久性工具。 OpenClaw 监视会话上下文使用情况,一旦超过压缩阈值以下的软阈值,它就会使用确切的静默令牌 `NO_REPLY` 发送静默“立即写入内存”指令,以便用户看不到任何内容。 内存刷新违背了对话的私密、超然的观点。它的内部提示和回复永远不会输入原始记录,包括当新的用户消息打断它时。内存文件写入保持持久。所需的预检不包括已接纳的等待用户;回复后冲洗包括已完成的转弯。刷新内的任何压缩仅影响其私有视图;原始对话有一个单独的压缩步骤。 配置(`agents.defaults.compaction.memoryFlush`),完整参考[/gateway/config-agents](/gateway/config-agents/heartbeat-compaction-and-streaming#agents-defaults-compaction): | 键 | 默认值 | 笔记 | | --------------------------- | ------- | ------------------------------------------------------------------------------------------------------------------------------------------------------ | | `enabled` | `true` | | | `model` | 未设置 | 仅用于刷新轮次的精确 provider/model 覆盖,例如 `ollama/qwen3:8b` | | `softThresholdTokens` | `4000` | 触发刷新时,距离压缩阈值之下的差值 | | `forceFlushTranscriptBytes` | `"2mb"` | 一旦当前转录历史达到此估算字节大小(或类似 `"2mb"` 的字符串),即强制刷新,即使 token 计数器已过时;`0` 表示禁用 | 主机在向选定的内存提供者请求刷新内容和持久性之前,从该配置和活动上下文窗口解析保留、软边距、转录字节保护和可选模型。提供者继承这些值,除非他们故意覆盖其计划中的可选计时字段。当 `enabled` 为 `false` 时,主机会跳过提供程序解析器。如果没有冲洗计划,维护仍会使用有效的压实储备。 默认 20,000 个代币储备的上限为上下文窗口的四分之一。默认的 4,000 代币软保证金上限为该储备后剩余窗口的一半。因此,对于 32,768 个代币的窗口,主机使用 8,192 个代币的储备和 4,000 个代币的软保证金。早期冲刷从 20,576 个预计代币开始。阻止令牌压缩从 24,576 开始,如果适用的服务器阈值更高,则稍后开始。在这些阈值之间,内存刷新可以在不需要压缩的情况下运行。转录字节保护默认为 2 MiB 并保持独立。非正阈值会抑制其触发。 当内存刷新刷新过时的使用情况时,它会包含在最新的有效提供程序使用情况报告之后附加的预计消息,然后将总数保存为新的。因此,以下压缩检查说明了后来的转录本增长。 注意: - 内置提示词和系统提示词都包含一个 `NO_REPLY` 提示,用于抑制输出。 - 当设置了 `model` 时,刷新轮次会使用该模型,且不会继承当前会话的回退链,因此本地仅维护性质的工作在失败时不会悄然回退到付费会话模型。 - 刷新每个压缩周期只运行一次(由 session 行跟踪)。 - 刷新仅对嵌入式 OpenClaw 会话运行;CLI 后端和 heartbeat 轮次会跳过它。 - 当会话工作空间为只读时(`workspaceAccess: "ro"` 或 `"none"`),Memory Core 的文件刷新会被跳过。工具臂提供程序不需要可写的工作空间访问权限。 - 有关工作区文件布局和写入模式,请参见 [Memory](/concepts/memory)。 OpenClaw 在扩展 API 中公开了 `session_before_compact` 挂钩,但上面的刷新逻辑位于网关端(`src/auto-reply/reply/memory-flush-plan.ts`、`src/auto-reply/reply/memory-flush.ts` 和 `src/auto-reply/reply/agent-runner-memory.ts`),而不是在该挂钩上。