Goal

/goal 命令用于设置一个完成条件,Hawa Code 会在无需你逐步提示的情况下持续工作以达成该条件。每次对话轮次结束后,一个轻量级快速模型会检查该条件是否满足。如果未满足,Hawa Code 会自动开启下一轮对话,而不是将控制权交还给你。一旦条件满足,目标会自动清除。

在有明确可验证终态的实质性工作中使用 goal:

  • 将某个模块迁移到新 API,直到所有调用点都能编译通过且测试通过
  • 实现设计文档,直到所有验收标准都被满足
  • 将大文件拆分为聚焦的模块,直到每个模块都在大小限制以内
  • 处理带标签的待办事项列表,直到队列为空

各种会话持续运行方式比较

有三种方式可以在提示之间保持当前会话持续运行。根据下一轮应由什么触发来选择:

方式 下一轮何时开始 何时停止
/goal 上一轮结束后 模型确认条件已满足
/loop 时间间隔到达 你手动停止,或 Hawa Code 判断工作已完成
Stop hook 上一轮结束后 你自己的脚本或提示决定

/goal 和 Stop hook 都在每一轮结束后触发。/goal 是会话级别的快捷方式:你输入一个条件,它仅对当前会话生效。Stop hook 保存在设置文件中,对其作用域内的每个会话都生效,可以运行脚本进行确定性检查,也可以使用提示进行模型评估。

/auto model 本身只会在单轮对话内自动批准工具调用,但不会开启新一轮对话。Hawa Code 会在判断工作完成时停止。/goal 增加了一个独立的评估器,在每一轮结束后检查你的条件,因此完成判断由一个独立的模型做出,而不是正在执行工作的模型。两者是互补的:自动模式消除了逐个工具的提示,而 /goal 消除了逐轮的提示。

使用 /goal

每个会话只能有一个活跃的 goal。同一个命令根据参数不同可以设置、查看或清除 goal。

设置 goal

运行 /goal,后跟你希望满足的条件。如果已经有活跃的 goal,新的条件会将其替换。

/goal 修复当前项目中报错,所有报错信息都需要完整修复

设置 goal 会立即开启一轮对话,条件本身作为指令。你不需要再发送单独的提示。

当 goal 处于活跃状态时,会显示 ◎ /goal active 指示器,展示 goal 已经运行了多长时间。

每轮对话结束后,评估器会返回一个简短的理由,解释条件是否已满足。最新的理由会显示在状态视图和对话记录中,因此你可以看到 Hawa Code 接下来正在努力实现什么。

查看状态

不带参数运行 /goal 可以查看当前状态。

/goal

如果 goal 处于活跃状态,状态会显示:

  • 条件内容
  • 已运行时长
  • 已评估的轮次数
  • 当前 token 消耗
  • 评估器最新的理由

如果没有活跃的 goal,但本次会话中之前已成功达成过一个 goal,状态会显示已达成条件的具体内容,以及其持续时间、轮次数和 token 消耗。

清除 goal

运行 /goal clear 可以在条件满足之前移除活跃的 goal。

/goal clear

运行 /clear 开启新对话也会移除任何活跃的 goal。

恢复活跃的 goal

当会话结束时仍有活跃的 goal,使用 --resume 或恢复该会话时会还原该 goal。条件会保留,但轮次数、计时器和 token 消耗基准都会在恢复时重置。已经达成或已清除的 goal 不会被还原。

使用 Ctrl+C 中断进程,可以在条件满足前停止非交互式 goal。

评估机制如何工作

/goal 是对话会话级别的基于提示的 Stop hook 的封装。每次 Hawa Code 完成一轮对话后,条件内容和迄今为止的对话记录会被发送到你配置的轻量级快速模型。该模型返回一个是否(yes/no)决定和一条简短理由。”no” 表示 Hawa Code 需要继续工作,并将理由作为下一轮对话的指导;”yes” 会清除 goal,并在对话记录中记录一个已达成条目。

评估器在你为会话配置的提供商上运行。它不会调用工具,因此只能判断 Hawa Code 已经在对话中展示的内容。