exo/docs/RSI.md at main · exoharness/exo · GitHub
//blob/show" data-turbo-transient="true" />
Skip to content
Search or jump to...
Search code, repositories, users, issues, pull requests...
-->
Search
Clear
Search syntax tips
Provide feedback
--><br>We read every piece of feedback, and take your input very seriously.
Include my email address so I can be contacted
Cancel
Submit feedback
Saved searches
Use saved searches to filter your results more quickly
-->
Name
Query
To see all available qualifiers, see our documentation.
Cancel
Create saved search
Sign in
//blob/show;ref_cta:Sign up;ref_loc:header logged out"}"<br>Sign up
Appearance settings
Resetting focus
You signed in with another tab or window. Reload to refresh your session.<br>You signed out in another tab or window. Reload to refresh your session.<br>You switched accounts on another tab or window. Reload to refresh your session.
Dismiss alert
{{ message }}
Uh oh!
There was an error while loading. Please reload this page.
exoharness
exo
Public
Notifications<br>You must be signed in to change notification settings
Fork<br>22
Star<br>261
FilesExpand file tree
main
/RSI.md
Copy path
Blame<br>More file actions
Blame<br>More file actions
Latest commit
History<br>History<br>History
62 lines (52 loc) · 3.46 KB
main
/RSI.md
Copy path
Top
File metadata and controls<br>Preview
Code
Blame
62 lines (52 loc) · 3.46 KB
Raw<br>Copy raw file<br>Download raw file
Edit and raw actions
A Systems View of Recursive Self Improvement
RSI (recursive self improvement) is a commonly used phrase in AI. It's<br>generally used to describe using AI to speed up the process of making AI, even<br>if just applying it to a narrow function, such as creating GPU kernels or data<br>cleaning.
This is an overly broad definition of recursive, and is better described as<br>autocatalytic or using a technology to speed up the development of that<br>technology. Computers, the steam engine, and the Internet have all been<br>autocatalytic.
Recursive, on the other hand, suggests that you use a complete version of a<br>thing to create another complete version of that thing (similar to function<br>recursion in programming languages). Using a language's compiler to build the<br>next version of that compiler is arguably recursive. The distinction matters<br>because recursion, unlike autocatalysis, requires the system to carry its own<br>state forward and to do so safely. It's the strong form of a system being able to<br>build versions of itself with minimal outside involvement.
The bitter lesson argues that general methods ultimately beat hand-engineered<br>ones. Applied to agents, the hand-engineered harness is the next thing to fall,<br>as models get smarter, they should have largely unfettered ability to modify<br>their own harnesses rather than living inside one we froze for them. The<br>question is: how do you provide the agent maximum flexibility to evolve itself,<br>while providing minimal scaffolding to do it safely?
Exo is an attempt to answer that question. It has direct access to its running<br>code, so it can modify nearly every aspect of itself. Further, it has basic<br>support to clone, rewind, rebuild, and re-run itself.1
However, just having full access to read and modify code isn't quite sufficient<br>for a long running, working system. Even with recursion in languages there is<br>runtime support, in particular language scoping and the call stack. Without<br>that, a recursive function could not maintain the state it needs to perform<br>arbitrary compute, and it would be tremendously difficult to do safely.
Within Exo we similarly provide runtime support for the agent to recursively<br>improve itself. The canonical state provides an immutable, append-only log of<br>all events, not exactly a call stack but more a complete execution history that<br>nothing can erase. It maintains full lineage across clones. And even when the<br>sandbox is rewound, the log is preserved. An agent that breaks itself, rewinds,<br>and tries again can see what it already tried, instead of repeating the same<br>mistake in a loop. The exo-harness provides the minimal infrastructure to<br>protect secrets and the core mechanism for managing this state. It is the only<br>part of Exo which cannot be modified by the agent.2
That's the whole design. Exo supports recursive improvement by allowing the<br>model to modify any aspect of itself, clone itself, rebuild and restart itself,<br>and rewind itself, and to do all this incrementally and somewhat safely, with<br>minimal scaffolding.
Footnotes
To be clear, we're focused on recursive improvement of the agent and not<br>the agent and the underlying model. Arguably a fully RSI solution would also<br>improve the model, the compute underneath it, and the power feeding it all.<br>Perhaps an RSI harness is a step on that path. ↩
Whether or not the agent can modify the exo-harness is actually a policy<br>consideration. The system technically allows it, but to provide safer standard<br>usage, it's disallowed on the default configuration. ↩
You can’t perform that...