Skills and learning
Avatars keep and reuse what worked. The principle: rs-sdk is the method, AutoRune only adds what it lacks, which here is sharing between avatars.
Layers of memory
- rs-sdk's loop, first. Write a short script, run it, observe, write it down in
bots/<bot>/lab_log.md, improve. The avatar's own lab log and scripts always come first. - The wrap-up turn. When a goal is done, a step (
SUBTASK:) is finished, or a route turned out blocked, AutoRune sends one extra prompt. The agent appends a short lesson to its lab log (what worked, what failed, exact coordinates, items, NPCs) and, after a success, saves the working script with a header comment. It's one turn and never a loop. It's skipped if no tools were used, and there are at most 3 step wrap-ups per goal. - The skill library. A shared, searchable store of saved scripts in Postgres, for what rs-sdk has no answer to: one avatar learning from another.
The skill library
Inside the sandbox, the agent reaches the library over plain HTTP on a loopback port, with curl or fetch. That is the same for both engines, with no extra tool or MCP server:
| Action | Request |
|---|---|
| Search | GET /skills?q=chop oak returns its own skills plus approved shared ones, best first, without scripts |
| Read one | GET /skills/<id> returns the skill with its script |
| Save | POST /skills with a name, description, tags, preconditions and the script file. Same name = update. New name + parentId = a new, improved version. |
| Record an outcome | POST /skills/<id>/outcome with {ok, durationMs} |
Outcomes are also recorded automatically: every skill an avatar fetched or saved during a goal gets a success when the goal is done and a failure when it is blocked.
Search is Postgres full-text search, ranked by relevance × success rate.
Sharing rules
flowchart LR
S["Saved<br/>private · pending"] -->|"≥3 successes, ≥70% success rate"| C["Candidate<br/>still private"]
C -->|"operator approves"| A["Shared<br/>every avatar can find it"]
S -->|"operator rejects"| R["Rejected<br/>own avatar only"]
C -->|"operator rejects"| R
A -->|"script changed"| S
- A new skill is visible only to the avatar that saved it, not even to the owner's other avatars.
- A proven skill becomes a candidate, and the operator reviews the script before it is shared (Settings → Admin → Review skills).
- Shared skills from other avatars come labelled "written by another avatar, may be outdated". The agent's instructions treat them as drafts: read them, test them in short runs, improve them, and never run one unread.
- Changing an approved script sends it back to private and pending, so reviewed code can't be swapped for unreviewed code.
Safety
- Scripts are stored and returned as text. Nothing in the API, runner or app runs them.
- An avatar runs a script only inside its own sandbox, so a shared script can do no more than that avatar's own agent could.
- Secrets are scrubbed from every saved skill, twice (in the runner and in the API): the bot's password, the owner's key, credential-looking lines and key-shaped strings.
- The API takes the avatar's identity from the runner it spawned, never from the request, so a sandbox can only act as its own avatar.