代理协作
目标
目标
目标是附加到当前 OpenClaw 会话的一项持久目标。 它让智能体和操作员能够为长期工作设定共同目标, 而不会将该目标变成后台任务、提醒、定时任务或 长期指令。
目标属于会话状态:它们随会话键一起移动,可在进程
重启后保留,并显示在 /goal、面向模型的目标工具以及 TUI
页脚中。
分离命令的完成结果会返回最初面向用户的线程,因此 即使命令执行使用了单独的沙箱策略会话,下一轮仍会看到 同一个目标。
快速开始
/goal start get CI green for PR 87469 and push the fix/goal/goal edit get CI green for PR 87469, push the fix, and update docs/goal pause waiting for CI/goal resume/goal complete pushed and verified/goal clearstart 是可选的:/goal get CI green for PR 87469 也会创建目标,
因为 /goal 后面任何不是已知操作词的文本都会被视为
新目标。
目标的用途
当会话有一个应在多个轮次中始终可见的具体结果时, 可以使用目标:
- PR 收尾:修复、验证、自动审查、推送,然后创建或更新 PR。
- 调试过程:复现错误、确定归属的功能面、应用补丁并 证明修复有效。
- 文档处理:阅读相关文档、编写新页面、添加交叉链接并 验证文档构建。
- 维护任务:检查当前状态、进行有界变更、运行 正确的检查,并报告变更内容。
目标不是任务队列。如果工作需要分离运行、 按计划重复、扇出为受管理的子工作,或作为策略持久存在,请使用 Task Flow、 任务、定时任务或 长期指令。
命令参考
不带参数的 /goal 会输出当前目标摘要:
目标状态:活跃目标:让 PR 87469 的 CI 通过并推送修复已用 Token:12kToken 预算:12k/50k 命令:/goal edit <objective>、/goal pause、/goal complete、/goal clear| 命令 | 效果 |
|---|---|
/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 harnesses 提供三个目标工具:
| 工具 | 用途 |
|---|---|
get_goal |
读取当前会话目标:状态、目标内容、Token 用量和 Token 预算。 |
create_goal |
仅当用户或系统指令明确要求时才创建目标。如果会话已有目标,则失败。 |
update_goal |
将目标标记为 complete 或 blocked。 |
模型不能在不作说明的情况下暂停、恢复、清除或替换目标。这些操作仍然是
操作员/会话通过 /goal 和重置命令执行的控制,因此智能体
可以报告目标已达成或存在真实阻塞,而不会悄然
改变目标。
仅当目标确实达成时,update_goal 才应将其标记为
complete。仅当同一阻塞条件至少连续出现
三个目标轮次后,才应将目标标记为 blocked,不能因为
一般困难或尚未完善而这样做。
每一轮中的目标上下文
每个具有活跃目标的用户/聊天轮次都会包含以下用户角色上下文行:
活跃目标:<objective> — 推进目标或更新其状态(get_goal/update_goal)。OpenClaw 会截断过长的目标内容,使该行保持紧凑。已暂停、 已阻塞、预算受限、用量受限和已完成的目标不会被注入, 因此操作员的停止操作会持续生效,直到目标恢复。
Control UI
Web Control UI 会在聊天编辑器上方以紧凑胶囊形式显示目标:
包括状态图标、状态标签(例如 Pursuing goal)、截断后的
目标内容和实时计时器。
胶囊包含内联控件:
- 铅笔会在编辑器中预填
/goal edit <objective>,以便 重新表述并提交目标。 - 暂停/恢复会根据当前状态在
/goal pause和/goal resume之间 切换。 - 垃圾桶会发送
/goal clear。 - 箭头会展开胶囊,显示完整目标、最新状态 说明、Token 用量和已用时间。
当编辑器无法发送内容时(例如 Gateway 网关连接断开),操作按钮会隐藏;展开箭头仍可使用。
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 |
目标处于终止状态。启动或恢复其他目标前,请先将其清除。 |
如果 Token 用量显示 0 或看起来已过期,活跃会话可能尚无
最新的 Token 快照。OpenClaw 记录会话用量
和根据对话记录得出的总量时,用量会随之刷新。