Here's a pattern we kept seeing: an agent would solve a novel problem by writing a chunk of code -- a scraper for a specific site format, a parser for an unusual file type, a calculation that combined data from multiple APIs. It would work perfectly. Then the code would vanish into the conversation history, never to be used again.
The next time a similar problem came up, the agent would write the solution from scratch. Sometimes it would be slightly different. Sometimes it would have a bug the first version didn't. This felt deeply wrong.
Saving Solutions as Tools
In Odigos, when the agent writes code that successfully solves a problem, it can save that code as a reusable executable skill. The skill gets a name, a description of when to use it, and the working code. Next time a similar request comes in, the agent recognizes the pattern and calls the existing tool instead of re-deriving the solution.
Over time, each agent accumulates a growing library of capabilities specific to its owner's workflow. An agent managing infrastructure might build up tools for parsing specific log formats, querying particular monitoring APIs, or generating custom report templates. An agent helping with research might develop tools for extracting data from frequently-used sources.
Research Foundations
The skill-saving mechanism draws from two key papers:
SAGE: Skill Augmented GRPO for Self-Evolution introduced the idea that agents should treat their own generated solutions as a form of self-supervised training data. Rather than discarding successful tool calls, they become part of the agent's permanent capability set.
Automating Skill Acquisition formalized a three-level skill loading strategy: lightweight skills that load on every request, medium-weight skills loaded based on classification, and heavy skills loaded only on explicit demand. This prevents the growing skill library from bloating every interaction.
The Skill Mining Loop
Beyond explicit saves, Odigos also mines for skills in the background. The dream cycle analyzes recent conversations looking for repeated patterns -- sequences of tool calls that keep appearing together, or similar code being written across multiple sessions. When it detects a pattern, it proposes a new skill, tests it, and promotes it if it works.
This means even if the user never explicitly says "save that as a tool," the agent will eventually notice the repetition and automate it.