Self-improvement

How stella learns from its own work. The parts that change what it can do, what each one checks before a change sticks, and how to undo each change.

Most of what people call agent "self-improvement" is recall: a note file the agent writes to and reads back later. stella does that too: see Memory. But writing notes is a different thing from getting better.

This page covers the parts of stella that change what it can do. Each one checks a change before the change sticks, and each change can be undone.

Checked before it sticks

An agent that grades its own work will always look like it's improving. So each part below checks a change against something other than the model's own opinion:

  • A new tool has to pass a test that fails without the tool and passes with it.
  • A mined skill waits in a queue until its effect has been measured.
  • A mined rule publishes on its own only when a measurement shows it helps. Otherwise it waits for you.
  • stella tune changes a setting only when one choice beats the other by a clear margin.

The parts

Tool Foundry

When stella rebuilds the same shell command by hand again and again, the Tool Foundry notices. After the turn, it writes a typed tool for that command and a test for the tool. The test has to fail without the tool and pass with it. A tool that passes is adopted and turned on, and it runs with network access blocked. On a system where stella can't block network access, it stops before adoption. Set foundry.autonomy to draft-only to review each tool yourself, or to off to turn the Tool Foundry off. See stella tools.

Skills

stella looks back on turns that failed or ran into trouble, and mines the lessons that keep coming back. A lesson that recurs becomes a candidate skill: a short procedure stella can pull into a later turn. With context.promotion.skill.require_measured_lift on, which is the default, a candidate waits in a queue for a measured result. Set it to false to write mined skills right away. When a skill's trigger matches a turn, that turn counts as a trial. Every 20th turn leaves a matching skill out, so there is something to compare against. A skill stella wrote on its own is retired after three negative results in a row.

Rules

The same look-back also proposes project rules. A proposal needs support from several separate tasks. It publishes on its own only when a measurement shows the rule helps. Otherwise it waits in stella proposals for you to keep, edit, or ignore. A published rule that stops helping is withdrawn.

stella tune

stella tune compares two loop-bench runs that differ only in the worker's reasoning effort. You run both yourself, which needs Docker and a provider key. tune then scores the two result files offline. It picks a winner only when each side has at least five trials and the gap passes a 95% confidence test. It applies the winner when you pass --promote, keeps a record of every run, and stella tune rollback puts the old setting back.

Training data export

stella dataset export writes one JSONL record per accepted turn, plus a manifest.json that records the filter used (--since / --until / --require-verdict). A turn is accepted when it finished, changed at least one file, and every model-call transcript checks out. Every string passes through the secret redactor, and only you can read the files.

Self-driving delivery

stella self-driving works through a ranked issue backlog. It claims an issue, runs it through the turn loop, and opens a draft pull request. When CI turns green, it marks the pull request ready. It merges only after a person approves the review, unless you pass --no-review.

Nightly loop-bench

stella's own repository runs loop-bench every night on four fixed tasks, using a low-cost model. The job fails when the agent loop itself breaks. It does not require a minimum pass rate.

Guardrails

Every change can be undone

stella tune rollback restores the previous setting. stella tools --rollback restores a recorded version of a tool. A retired skill's file stays on disk. A retired memory comes back with stella memory reaffirm.

Switches you control

foundry.autonomy decides how far the Tool Foundry goes on its own. context.promotion.skill.require_measured_lift decides whether a skill needs a measured result first. Self-driving merges without a review only when you pass --no-review.

Secrets stay out

The learning pass redacts secrets from the turn summary, observations, and evidence before it stores them. stella dataset export redacts every string it writes.

New tools run without network

A tool the Tool Foundry builds runs with network access blocked, and it does nothing until it is both adopted and turned on.

Memory retirement follows the same rule. Retiring a memory keeps the record, so you can look it up by ID and bring it back with stella memory reaffirm.

The deck view

Interactive mode shows this work as it happens. The issues tab lists your GitHub backlog.

The deck's issues tab: a tracker backlog sorted by heat, one issue expanded to show its linked plan, branch and evidence, and a start-work strip.
stellaThe issues tab lists your GitHub backlog, and starting work on an issue begins here.

Starting work on an issue drafts a plan from the issue's checklist, then stops. A sources line names the files the code graph links to the issue and the memory rules those files trigger. Each task that changes files says what "done" means. When the workspace has past calls to price against, the plan shows an estimate of cost, tokens, and time. Nothing changes until you approve the plan.

An issue being turned into a draft plan: the sources it was built from, four tasks each with a done-means clause, and an estimate of cost, tokens and time above an approval row.
stellaAn issue becomes a draft plan. The sources line names the files the graph links to the issue and the memory rules that applied, and nothing is touched before you approve it.

See also