---
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`),而不是在该挂钩上。