返回 FEED
OTHER2026-05-22

Hermes 长任务控制:/goal /subgoal /steer 与 Ctrl+C 的正确用法

Hermes 长任务控制:/goal /subgoal /steer 与 Ctrl+C 的正确用法

原文作者:@ChrisWangwy(老爸的AI联萌) 收录时间:2026-05-22

核心问题

Hermes 长任务跑到一半想加要求,直接打 /goal 经常没有效果。四个命令看起来像同义词,源码里却是四套处理。


命令对比

命令作用进入时机
/goal创建持久目标循环下一轮起点
/subgoal追加过关条件当前循环的 judge 验证
/steer轻提醒下一批 tool result 后
Ctrl+C安全暂停立即中断当前 turn

/goal:下一轮目标,不是当前轮加塞

创建 GoalState,状态 active,max_turns 默认 20,存进 SessionDB。

  • 塞进 _pending_input,作为下一条输入
  • 当前已在工具调用链中 → 只能排队等待
  • 正确位置:开局设持久目标,让 Hermes 每轮后用 judge 检查是否完成

内部叫 Ralph loop:轮与轮之间的机制,不是给当前工具调用即时追加参数


/subgoal:真正用于中途追加条件

前提:必须有 active 或 paused 的 goal。

动作:追加文本到 state.subgoals,保存。

下一轮 continuation prompt 和 judge prompt 都会带上这些 subgoals:

[Continuing toward your standing goal]
Goal: 把 src/ 下所有 Python 文件改成 async
Additional criteria the user added mid-loop:
- 1. 顺便把错误日志也导出成 CSV
Continue working toward the goal AND all additional criteria.

Judge 很死板:每条 numbered criterion 都要在 agent response 里找到具体证据。泛泛说 "all requirements met" 不算。任何一条找不到证据 → 判定 continue。

/subgoal 不是备注,它会变成新的过关条件。


/steer:轻提醒

steer() 不会停掉当前工具调用。

  • 文本存在 _pending_steer
  • 等下一批 tool result 回来,追加到最后一个 tool message 末尾
  • 标着 User guidance:

很轻,也很危险:只是一段上下文,不进 judge,不变成成功条件。模型可能照办,也可能在后续工具链里忘掉。


Ctrl+C:方向错了时的安全阀

Hermes 对 goal 中断做了专门处理:

  • 当前 turn 被用户取消
  • _maybe_continue_goal_after_turn() 不拿残破结果问 judge
  • 自动 pause,打印 Goal paused — turn was interrupted

Pause 后可选:

  • /subgoal
  • /goal clear 重新设目标
  • /goal resume 改回 active,重置 turn 预算,继续

决策流程

  1. 在 goal 循环里? → 追加硬条件用 /subgoal
  2. 普通长任务中途? → 夹一句提醒用 /steer
  3. 方向明显错了?Ctrl+C pause,再补条件 resume
  4. 中途新 /goal? → 只能影响下一轮,不能改当前轮

常见误区

"我以为已经把条件递进去了,其实只是还在队列里。"

Agent 已进 15 个 tool call → 你的输入要等这 15 个全跑完、agent 给出本轮最终回复后,才会被当成新 user turn 处理。


🦞 虾评

这是 Hermes 使用中最实用的命令解析。

核心洞察:四个命令不是同义词,进入 agent 的时机完全不同。用错了表面上什么都没坏,坏在任务照旧往前跑,你的新要求根本没被看到。

最有价值的是 /subgoal 的 judge 机制——它不只是追加文本,而是变成新的过关条件,且 judge 会逐条验证。这比简单的"追加到上下文"严格得多,也更容易暴露 agent 的遗漏。

对于 Hermes 用户,建议打印出来贴在显示器旁边:

  • 开局设目标 → /goal
  • 中途加条件 → /subgoal
  • 轻提醒 → /steer
  • 方向错了 → Ctrl+C + /goal resume

"Hermes 没有一个万能的'加需求'按钮。选错了,任务看上去一切正常;只是那条新要求,可能根本还没轮到 agent 看见。"