#My Agent Has a Split Personality

1 messages · Page 1 of 1 (latest)

late salmon
#

@krill Throughout the day, I've asked my agent a question, and then I respond to him, and he responds with a version of his first answer, as if he doesn't know he's answered it. Here's an example:

JEEVES: You’re right. The screenshot shows it clearly, and the live session history shows the same pattern: one of my turns appears to have gone tool-only / unfinished, then later I answered the accumulated thread as if I hadn’t already said part of it.

So my current best diagnosis is:

• not “two personalities,” but likely turn handling / queue / interrupted response state
• possibly a reply generated, delivered, but not represented back into the active model context correctly
• or a tool-use turn got wedged so the next incoming message caused me to re-answer the same subject

The missing startup greeting is probably separate: likely a changed /new//reset bootstrap behavior. But the “I just said that, why am I saying it again?” issue is more serious and smells like runtime/session plumbing.

I can inspect the local OpenClaw source/config/logs for the Telegram session queue and reset/startup handling and see where it changed. 🎩

ME: Do so

JEEVES: Found two things.

  1. The startup greeting is still core OpenClaw behavior.
    It’s hardcoded in src/auto-reply/reply/session-reset-prompt.ts: bare /new or /reset should reset the session, run Session Startup, then “greet the user… Keep it to 1–3 sentences and ask what they want to do.” So that part did not come from our local persona/config.

  2. The “two Jeeveses” effect is real, but likely not two bots.
    Your transcript shows I started answering the first question, called memory_search, then before a final assistant reply landed, more user messages arrived. Later I answered the same underlying topic again after /status. So the session had an unfinished tool-using turn plus newer inbound messages, which can make replies feel like stale parallel branches. Very Jeeves-with-a-mirror-universe, but less glamorous: queue/turn handling.

midnight larkBOT
#

To help others find answers, you can mark your question as solved via Right click solution message -> Apps -> âś… Mark Solution

late salmon
#

More diagnosis from Jeeves:

Main-agent concurrency means: how many main agent runs OpenClaw is allowed to execute at the same time across sessions.

Before, yours was:

• agents.defaults.maxConcurrent: 2

That means your live Telegram conversation could run while another main job was also running — e.g. a cron-created isolated session, heartbeat, or another scoped session. OpenClaw is supposed to serialize runs within the same session, but different sessions using agentId: main can still run in parallel.

Why this matters here:

• Several cron jobs were bound to agentId: main.
• Some also carried your Telegram session key or delivered back to Telegram.
• The new 2026.4.29 queue/steering behavior tries to steer/collect/follow up active messages.
• In practice, that appears to have allowed multiple “Jeeves” contexts to talk into the same direct chat, or at least to interleave confusingly.

So I set:

• agents.defaults.maxConcurrent = 1
• cron.maxConcurrentRuns = 1
• Telegram queue mode = collect
• commitments disabled and pending commitments dismissed

Is it new? The concurrency setting itself is not new. What’s new-ish is the 2026.4.29 active-run steering/followup machinery plus inferred commitments. That combination seems to have exposed the split-personality behavior.

The safer posture is now: one main-agent run at a time, Telegram messages coalesced rather than dribbled into multiple follow-up turns.