Skip to content

Goals and autonomy ​

AutoRune's job around the agent is small but essential: decide what to prompt the stock agent with next. It adds no game logic. The loop sits above the engine, so opencode and Claude Code behave the same.

stateDiagram-v2
  [*] --> Choosing: Play (no goal yet)
  Choosing --> Working: agent replies GOAL: … (self goal)
  Working --> Working: STATUS working → "continue"
  Working --> Working: STATUS blocked → "take another route or another goal"
  Working --> WrapUp: STATUS done
  WrapUp --> Choosing: lesson + skill saved
  Working --> Working: owner "Goal: …" (owner goal)
  Choosing --> Working: owner "Goal: …"
  Working --> [*]: owner Stop · provider runs out · crash loop

Goals ​

There is always a goal, or the avatar is choosing one.

  • Owner goals come from you: a message starting with Goal: (also "new goal: …" or "your goal is …"). It replaces the current goal.
  • Self goals are chosen by the avatar when it has nothing to do. The choose prompt lists, in order: your owner direction, its ambitions in TASK.md (seeded with quest points, skill levels and money, and editable by the agent), efficiency and enjoyment, its last five finished goals ("don't just repeat one"), and any owner goal it set aside.
  • Blocked never means stop. A blocked report becomes "take another route, or pick another goal". If the avatar leaves one of your goals that way, the goal is parked and offered again later. Owner goals have priority.

Talking to your avatar ​

Every message you send goes straight to the agent. AutoRune sorts it into one of three kinds:

You writeIt is treated asEffect
Goal: get 30 woodcuttinga goalReplaces the current goal.
how much gold do you have? (ends with ?, or starts with why / what / how / when / where / who / which)a questionAnswered in a sentence or two. The goal stays.
stay out of the Wilderness (anything else)owner directionKept in the ## Owner direction section of TASK.md and repeated in every automatic prompt. If it asks for something specific ("go fishing"), the agent may turn it into a goal.

The avatar never waits for an answer. If it needs a decision, it picks the most sensible option itself and notes why in TASK.md.

The reporting protocol ​

The agent ends every reply with a plain-text status line, which works the same in both engines:

text
STATUS: working | done | blocked
GOAL: <one line, only when the goal changes>
SUBTASK: done|blocked <step>   (optional, marks a finished step)

A missing STATUS counts as working.

Pacing ​

The next automatic prompt follows about 3 seconds after a turn. If a turn changed nothing (same position, same XP, same notes), the delay doubles, up to a minute, and the prompt nudges the agent to try something different. This only slows the loop down; it never pauses it. A private message from another player wakes a loop that is waiting out its delay.

What you see ​

  • Chat gets the replies to your messages, one line per finished goal ("Done: …") and one per self-chosen goal ("New goal (my choice): …").
  • The thought stream shows everything else: reasoning, text and every tool call of the automatic turns.

Learning when a goal ends ​

When a goal is done, a step is finished, or a route is blocked, AutoRune gives the agent one wrap-up turn to write the lesson into its lab log and save a working script as a skill. See Skills and learning.

Resuming ​

On every start (Play, a server restart, a limit reset), the engine's saved session is resumed and the agent gets a resume prompt with its goal and TASK.md, or the choose prompt if it has no goal.

While the game itself is down (an engine or gateway restart, a logout), the loop sends no automatic prompts and keeps the goal. Once the avatar is back in game it continues with the same goal. See Game restarts and logouts.

AutoRune is an experiment built on rs-sdk and LostCity. RuneScape is a trademark of Jagex Ltd; this project is not affiliated with Jagex.