Appearance
Commitments 是 OpenClaw 根据对话自动推断的短期后续记忆,适合那些你没有明确设置提醒但聊天中自然形成的待办事项。启用后,智能体会在合适的时机通过 heartbeat 自动发送跟进询问。开启方式:openclaw config set commitments.enabled true,默认每日最多 3 次;可通过 openclaw commitments 命令查看和管理。当预期跟进未出现时,先检查 commitments.enabled 和 commitments.maxPerDay 是否达到上限,以及 heartbeat 是否正常运行。
OpenClaw 推断承诺(Commitments)配置与排障
Commitments 是短期后续记忆。启用后,OpenClaw 能注意到对话中创造了未来跟进机会,并在合适的时候回访。
示例:
- 你提到明天有面试。OpenClaw 可能在事后询问进展。
- 你说自己很疲惫。OpenClaw 可能晚些时候问你是否休息好了。
- 智能体说会在某变化后跟进。OpenClaw 可能记录这个未闭环。
Commitments 不是像 MEMORY.md 那样的持久事实,也不是精确提醒。它介于记忆和自动化之间:OpenClaw 记住一个对话绑定的义务,然后通过 heartbeat 在到期时投递。
怎么启用 Commitments(推断承诺)
默认关闭,在配置中启用:
bash
openclaw config set commitments.enabled true
openclaw config set commitments.maxPerDay 3等效的 openclaw.json:
json
{
"commitments": {
"enabled": true,
"maxPerDay": 3
}
}commitments.maxPerDay 限制每个智能体会话在滚动一天内可投递的推断跟进次数。默认值为 3。
工作原理
智能体回复后,OpenClaw 可能在独立上下文中运行一个隐藏的后台提取轮次。该轮次只查找推断的后续承诺,不会写入可见对话,也不会让主智能体去推理提取结果。
当发现高置信度候选时,OpenClaw 存储一个 Commitment,包含:
- 智能体 ID
- 会话键
- 原始渠道和投递目标
- 到期窗口
- 建议的简短跟进消息
- 非指令性元数据(供 heartbeat 决定是否发送)
投递通过 heartbeat 完成。当 Commitment 到期时,heartbeat 将其添加到同一智能体和渠道作用域的 heartbeat 轮次中。模型可以发送一条自然的跟进询问,或回复 HEARTBEAT_OK 以忽略。如果 heartbeat 配置了 target: "none",到期的 Commitment 保持内部状态,不会发送外部跟进。投递提示不会重放原始对话文本,且到期 Commitment 的 heartbeat 轮次不会运行 OpenClaw 工具。
OpenClaw 绝不会在写入 Commitment 后立即投递。到期时间至少被限制为创建后一个 heartbeat 间隔,因此跟进不会在推断的同一时刻回响。
作用域
Commitments 限定在创建时的确切智能体和渠道上下文中。在 Discord 与某个智能体对话时推断出的跟进,不会由其他智能体、其他渠道或无关会话投递。
这种作用域是功能的一部分。自然的跟进应该像同一次对话的延续,而不是全局提醒系统。
Commitments 与精确提醒的区别
| 需求 | 使用方式 |
|---|---|
| "3 点提醒我" | Scheduled tasks |
| "20 分钟后提醒我" | Scheduled tasks |
| "每个工作日跑这个报告" | Scheduled tasks |
| "我明天有个面试" | Commitments |
| "我整晚没睡" | Commitments |
| "如果我没有回复这个开放的话题,后续跟进" | Commitments |
精确的用户请求已经属于调度器路径。Commitments 仅用于推断的跟进:那些用户没有要求提醒,但对话明显产生了有用的未来回访机会的时刻。
用 CLI 管理 Commitments
使用 CLI 查看和清理存储的 Commitment:
bash
openclaw commitments
openclaw commitments --all
openclaw commitments --agent main
openclaw commitments --status snoozed
openclaw commitments dismiss cm_abc123命令参考见 openclaw commitments。
隐私与成本
Commitment 提取使用 LLM 轮次,因此在符合条件的回复后启用会增加后台模型用量。该轮次对用户不可见,但它可以读取最近对话以判断是否存在跟进。
存储的 Commitment 是 OpenClaw 本地状态,属于操作记忆,而非长期记忆。关闭功能:
bash
openclaw config set commitments.enabled falseCommitments 不生效怎么排查
如果预期的跟进没有出现:
- 确认
commitments.enabled为true。 - 检查
openclaw commitments --all中待处理、已忽略、暂缓或过期的记录。 - 确保该智能体的 heartbeat 正在运行。
- 检查该智能体会话的
commitments.maxPerDay是否已用尽。 - 记住,精确提醒不会被 Commitment 提取处理,应查看 Scheduled tasks 代替。
相关
常见问题
Commitments 和定时提醒(Scheduled tasks)有什么区别?
Commitments 只针对对话中推断出来的后续机会,比如你提到明天有面试,智能体可能事后主动询问;而精确的提醒(如“3 点提醒我”)属于 Scheduled tasks 功能,需要你明确下达指令。
为什么启用了 Commitments 却看不到跟进?
检查 commitments.enabled 是否为 true,用 openclaw commitments --all 查看所有状态(待处理、已忽略、暂缓等),确认 heartbeat 正在运行且 commitments.maxPerDay 未达到每日上限。另外注意,精确的提醒不会通过 Commitments 传递。
Commitments 会不会增加 Token 消耗?
会。每次智能体回复后,OpenClaw 会用一个隐藏的 LLM 轮次来推断是否存在后续承诺,这个轮次不在对话中可见,但会消耗模型配额。如果要节省成本,可以关闭该功能:openclaw config set commitments.enabled false。