目标
目标是附加到当前 OpenClaw 会话的一个持久目标。 它为智能体和操作员提供一个用于长时间工作的共同目标, 但不会把该目标变成后台任务、提醒、cron job 或 常驻指令。 目标是会话状态:它会随会话键移动,在进程 重启后保留,并显示在/goal、面向模型的目标工具以及 TUI
页脚中。
快速开始
start 是可选的:/goal get CI green for PR 87469 也会创建一个目标,
因为 /goal 后面任何不是已知操作词的文本都会被视为一个
新目标。
目标的用途
当一个会话有一个应在多个轮次中保持可见的具体结果时,使用目标:- PR 收尾:修复、验证、autoreview、推送,并打开或更新 PR。
- 调试运行:复现 bug、识别归属表面、修补,并 证明修复有效。
- 文档处理:阅读相关文档、编写新页面、添加交叉链接,并 验证文档构建。
- 维护任务:检查当前状态、做有边界的修改、运行 正确的检查,并报告变更内容。
命令参考
不带参数的/goal 会打印当前目标摘要:
| 命令 | 效果 |
|---|---|
/goal 或 /goal status | 显示当前目标。 |
/goal start <objective> | 为当前会话创建一个新目标。 |
/goal set <objective>, /goal create <objective> | start 的别名。 |
/goal <objective> | 也会创建一个新目标(任何不是已识别操作词的文本)。 |
/goal edit <objective> | 重新表述当前目标;状态和 token 计数保持不变。 |
/goal pause [note] | 暂停一个活跃目标。 |
/goal resume [note] | 恢复一个已暂停、已阻塞、受用量限制或受预算限制的目标。 |
/goal complete [note] | 将目标标记为已达成。 |
/goal done [note] | complete 的别名。 |
/goal block [note] | 将目标标记为已阻塞。 |
/goal blocked [note] | block 的别名。 |
/goal clear | 从会话中移除目标。 |
Goal error: goal already exists。
/goal start 不接受 token 预算标志;预算只能通过面向模型的
create_goal 工具设置。
状态
active:会话正在推进目标。paused:操作员暂停了目标;/goal resume会使其再次变为活跃。blocked:智能体或操作员报告了真实阻塞;当有新的信息或状态可用时,/goal resume会使其再次变为活跃。budget_limited:已达到配置的 token 预算;/goal resume会从同一目标开始,用新的预算窗口重新推进。usage_limited:为未来的用量限制停止状态预留;/goal resume会以相同方式重新推进。complete:目标已达成。已完成的目标是终态;请先使用/goal clear,再启动另一个目标。
/new 和 /reset 会清除当前会话目标,因为它们有意
启动全新的会话上下文。
Token 预算
目标可以有一个可选的正数 token 预算,通过create_goal 工具的 token_budget 参数设置。预算从
创建目标时会话的新鲜 token 计数开始衡量。如果目标开始时会话只有
过期或未知的 token 快照,OpenClaw 会等待
下一个新鲜快照,并将其用作基线,因此目标存在之前消耗的 token
不会计入该目标。
当用量达到预算时,目标会转为 budget_limited。这不会
删除目标或擦除目标内容;它会告诉操作员和
智能体:在目标被恢复或清除之前,该目标不再被主动推进。
恢复会以当前的新鲜 token 计数开始一个新的预算窗口。
Token 预算是会话目标的护栏,不是计费上限。提供商
配额、成本报告和上下文窗口行为仍使用正常的
OpenClaw 用量和模型控制。
模型工具
OpenClaw 向 Agent harness 暴露三个目标工具:| 工具 | 用途 |
|---|---|
get_goal | 读取当前会话目标:状态、目标内容、token 用量和 token 预算。 |
create_goal | 仅当用户或系统指令明确要求时创建目标。如果会话已有目标,则失败。 |
update_goal | 将目标标记为 complete 或 blocked。 |
/goal 和重置命令执行的操作员/会话控制,因此智能体
可以报告达成或真正的阻塞,而不会悄悄移动
目标。
update_goal 只有在目标实际达成时才应将目标标记为
complete。它只有在同一个阻塞条件连续至少三个目标轮次重复出现后,
才应将目标标记为 blocked,而不是因为普通困难或缺少打磨。
每个轮次的目标上下文
每个带有活跃目标的用户/聊天轮次都会包含这行用户角色上下文:Control UI
Web Control UI 会在聊天输入框上方以紧凑胶囊形式显示目标: 状态图标、状态标签(例如Pursuing goal)、截断后的
目标内容,以及实时经过时间计时器。
胶囊带有内联控件:
- 铅笔会用
/goal edit <objective>预填输入框,以便 重新表述目标并提交。 - 暂停 / 恢复会根据当前状态在
/goal pause和/goal resume之间切换。 - 垃圾桶会发送
/goal clear。 - 折叠箭头会展开胶囊,以显示完整目标、最新状态 备注、token 用量和经过时间。
TUI
TUI 页脚会将活跃会话的目标显示在智能体、 会话和模型字段旁边,位于 token/模式指示器之前。 页脚示例:Pursuing goal (12k/50k)表示带有 token 预算的活跃目标。Goal paused (/goal resume)表示已暂停的目标。Goal blocked (/goal resume)表示已阻塞的目标。Goal hit usage limits (/goal resume)表示受用量限制的目标。Goal unmet (50k/50k)表示受预算限制的目标。Goal achieved (42k)表示已完成的目标。
/goal 查看完整目标、
备注、token 预算和可用命令。
渠道行为
/goal 可在支持命令的 OpenClaw 会话中使用,包括 TUI 和
允许文本命令的聊天表面。目标状态附加到
会话键,而不是传输协议,因此共享同一会话键的两个表面会看到
相同目标。
目标状态不是投递指令:它不会强制通过某个
渠道回复、改变队列行为、批准工具或安排工作。
故障排查
| 消息 | 含义 |
|---|---|
Goal error: goal already exists | 会话已有目标。使用 /goal 检查它;如果已完成,使用 /goal complete;或在启动不同目标之前使用 /goal clear。 |
Goal error: goal not found | 会话还没有目标。使用 /goal start <objective> 启动一个。 |
Goal error: goal is already complete | 该目标是终态。在启动或恢复另一个目标之前先清除它。 |
0 或看起来过期,活跃会话可能还没有
新鲜的 token 快照。当 OpenClaw 记录会话用量
和从转录推导出的总量时,用量会刷新。