hermes - 💡(How to fix) Fix Standing goals: agent should be able to signal completion and close the goal [1 pull requests]

Official PRs (…)
ON THIS PAGE

Recommended Tools

×6

Utilities matched from this issue’s tags and category — try them while you read without losing context.

GitHub issue graph ai analysis

Paste a GitHub issue URL. We fetch that issue, discover linked issues from bodies/comments/timeline, collect linked pull requests, and produce a structured English report.

The report is written in English Markdown for sharing and archival.

Helpful · Quick feedback

Loading…

Fix Action

Fixed

Code Example

goal_manage(action="complete") → closes standing goal, stops retry loop
RAW_BUFFERClick to expand / collapse

Problem

When a standing goal is set via /goal, the agent works on it across turns. After each turn, a judge evaluates whether progress was made. If the judge detects no progress, it forces a retry — up to goals.max_turns (default 20) times.

The problem: when the agent has fully completed the goal and says so explicitly (e.g. "目标已完成" / "goal complete"), the judge does not recognize this as a signal to close the goal. Instead, it sees "no new progress actions" and keeps retrying, flooding the user with identical "done" replies until max_turns is exhausted.

Real example

  1. User sets a standing goal
  2. Agent does all the work, then says "已完成。停止。"
  3. Judge: "no progress detected, retry"
  4. Agent again: "已完成。停止。"
  5. Judge: retry again
  6. ... repeats 15+ times before max_turns stops it

Expected behavior

The agent itself should be able to signal "this goal is complete, close it". When that signal fires, the goal is closed immediately — no judge loop, no retries.

Option A: Agent-manageable goal tool

Add a tool (e.g. goal_manage similar to cronjob) that the agent can call programmatically:

goal_manage(action="complete") → closes standing goal, stops retry loop

This gives the agent explicit agency over goal lifecycle, just like it already has with cron jobs via the cronjob tool (pause/resume/remove).

Option B: Judge recognizes explicit completion signals

The judge/evaluator should recognize explicit goal-completion statements in the agent's final response (e.g. "goal complete", "已完成", "done"). When detected, close the goal and stop retrying.

This is simpler but fragile — relies on phrasing patterns and the judge's NLU.

Additional context

  • Config key: goals.max_turns (default 20)
  • Slash commands: /goal status|pause|resume|clear — none are callable by the agent itself
  • The agent already has full lifecycle management for cron jobs via the cronjob tool — standing goals lack equivalent tooling
  • Related: #28640 (ACP goal parity) — different scope (ACP transport, not agent lifecycle signaling)

Suggested scope

Minimum viable: a tool or slash command that the agent can invoke to mark a standing goal as complete. The judge retry loop should immediately stop when the goal is closed.

Lowest-effort observation: /goal clear already exists as a user subcommand. If the agent could invoke this programmatically through a structured tool, the loop would end. But the agent has no way to do this, and the system prompt does not inform the agent that it can.

Vote matrix · Quick signals

Works
Did the solution work? Tap to confirm.
Easy Fix
Was it a quick fix?
Time Saver
Did it save you time?
Blocking
Was it severely blocking?
Common Issue
Are others likely hitting this too?
Flaky / Intermittent
Is it intermittent?
Verified / Reproducible
Can you reproduce it reliably?
Loading…

FAQ

Expected behavior

The agent itself should be able to signal "this goal is complete, close it". When that signal fires, the goal is closed immediately — no judge loop, no retries.

Still need to ship something?

×6

Another batch ranked right after the header list — different links, same matching logic.

Back to top recommendations

TRENDING

hermes - 💡(How to fix) Fix Standing goals: agent should be able to signal completion and close the goal [1 pull requests]