Skip to content

Commitments 是 OpenClaw 根据对话自动推断的短期后续记忆,适合那些你没有明确设置提醒但聊天中自然形成的待办事项。启用后,智能体会在合适的时机通过 heartbeat 自动发送跟进询问。开启方式:openclaw config set commitments.enabled true,默认每日最多 3 次;可通过 openclaw commitments 命令查看和管理。当预期跟进未出现时,先检查 commitments.enabledcommitments.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 false

Commitments 不生效怎么排查

如果预期的跟进没有出现:

  • 确认 commitments.enabledtrue
  • 检查 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