OmniAgent Skill自进化机制揭秘:Agent如何实时自动创建、诊断并修复自己的技能
【免费下载链接】OmniAgentAn agent capable of self-evolving and dynamically hardening security项目地址: https://gitcode.com/gh_mirrors/om/OmniAgent
OmniAgent是一个开源的自进化 Agent 框架,它的核心亮点之一正是Skill 自进化机制:在与你实时交互的过程中,Agent 会自动把你反复成功的操作"编译"成新的技能(Skill),并在技能执行出错后自动诊断、打补丁修复——整个过程无需人工干预。下面这篇文章带你从零看懂这套机制的工作原理与快速上手方法。
为什么 AI Agent 需要 Skill 自进化机制?
传统 Agent 的"技能"往往是静态的:开发者预写死一批提示词或脚本,用多久都不会变。这带来两个痛点:
- 重复劳动:你让 Agent 每次都摸索"怎么查服务状态",它却不会把成功经验沉淀下来;
- 错误反复:技能里的某一步走错了,Agent 每次都重蹈覆辙,直到有人手动改技能文件。
OmniAgent 给出的答案是:让 Agent 在执行中实时自我进化🚀。正如项目文档 README_CN.md 中对比的那样——静态 Agent 无进化,传统方案只能"执行后定期进化"(慢),而 OmniAgent 做到了执行中实时自进化(快)。
整套机制的源码集中在 omniagent/agents/skill_evolution.py,配合技能发现模块 omniagent/agents/skills.py,构成完整的闭环。
Skill 自进化的三步闭环:记录 → 编译 → 修复
OmniAgent 的 Skill 自进化分为两个方向,合起来就是三步闭环:
- 技能创建:检测高频成功的操作模式,自动编译成新的试运行技能;
- 技能进化:在技能引导下执行时检测到"报错—恢复"对,自动写入修正补丁。
第一步:自动记录成功执行模式(PatternRecorder)
每次你给 Agent 下达任务,它执行结束后,PatternRecorder 会自动"记账":
- 只记录成功的执行:失败的任务不进账本,避免学坏习惯;
- 提取工具调用序列:把整个会话中调过的工具(如
read_file、bash、grep)按顺序提炼出来; - 智能归一化:自动剔除
ls、find这类探索性操作,把日期、数字等变量替换为占位符(如data/2026-04-01→data/$DATE),再计算出一个模式指纹(pattern_hash); - 追加写入账本:模式存入
.omniagent/patterns/patterns.jsonl,文件超过 50MB 时自动淘汰最早的 20% 记录,保证不无限膨胀。
打个比方:这就像 Agent 随身带着一本"成功操作流水账",每做对一次类似的活,就记上一笔 📒。
第二步:高频模式自动编译为新技能(PatternAnalyzer)
账本记多了怎么办?PatternAnalyzer负责把"熟路"变成"绝招":
- 频次统计:扫描账本统计每个模式指纹出现次数,达到阈值(默认3 次)才触发编译,避免"一次成功就过度自信";
- 去重检查:如果该模式对应的技能已经存在,直接跳过,零成本防止重复创建;
- LLM 智能编译:把该模式的所有历史记录交给大模型,生成规范的
SKILL.md技能文档,包含"何时使用 / 何时不要使用 / 具体步骤"等章节,并起一个语义化名字(如service-status,而不是read-shell-write); - 双轨输出:
- prompt 型技能:纯步骤说明,适合需要判断和分支的任务;
- script 型技能:如果模式中 bash 操作占比超过 40%,还会自动生成一个可直接运行的
scripts/main.sh脚本,把重复操作彻底自动化。
编译完成后,新技能写入.omniagent/skills/<技能名>/目录,同时清掉账本里已编译的记录。下次再遇到同类任务,Agent 就能直接"照方抓药",而不是重新摸索 ✅。
第三步:错误-恢复对驱动技能实时修复(SkillEvolutionTracker)
技能用久了难免"过时"。SkillEvolutionTracker负责让技能越用越准,它监听两个进化信号:
信号一:报错—恢复对。当 Agent 按技能指引调用工具 A 报错,随后换用工具 B 成功恢复时,系统会捕捉这个"踩坑—脱坑"的过程,让大模型判断是哪个技能引导错了路,然后把"原来怎么做的 / 哪里错了 / 应该怎么做"整理成一份Markdown 格式的技能补丁,追加写入.omniagent/skill_patches/<技能名>.md(每个技能最多保留最近 10 个补丁,防止无限增长)。
信号二:用户直接反馈。如果你明确说"XX 技能的做法不对,应该……",系统会识别这条反馈针对的具体技能,直接生成修正补丁。
关键在于:补丁不需要修改原技能文件。下次 Agent 加载该技能时,get_skill_with_patches 会把补丁自动合并进来,以"Known Corrections(自动学到的修正)"一节呈现——相当于给技能动态"贴膏药",原文件永远保持干净。
技能与补丁都存放在哪里:.omniagent 目录结构
理解目录结构,你能随时"验明"Agent 的进化成果 🔍:
<工作目录>/.omniagent/ ├── patterns/ # 成功执行模式账本(patterns.jsonl) │ └── patterns.jsonl ├── skills/ # 项目级技能(自动编译 + 手动编写) │ └── <技能名>/ │ ├── SKILL.md # 技能文档 │ └── scripts/ # script 型技能的自动化脚本 │ └── main.sh └── skill_patches/ # 技能进化补丁 └── <技能名>.md另外,用户全局技能目录~/.omniagent/skills/中的技能同样会被 SkillManager 发现,并以<available-skills>形式注入系统提示词,供 Agent 随时调用。
还有一点很贴心:模式记录是同步快速完成的,而技能编译和补丁生成都在后台异步执行(见 SkillEvolutionManager),完全不会拖慢 Agent 对你的响应速度。
Skill 自进化快速配置:5 个关键配置项
整套机制的开关与参数集中在 omniagent/config/models.py 的SkillEvolutionConfig中,总开关是顶层的enable_self_improving(在 reflexion.py 中决定是否初始化进化系统)。常用参数一览:
| 配置项 | 默认值 | 作用 |
|---|---|---|
enable_self_improving | — | 总开关,开启技能/上下文自进化 |
pattern_min_occurrences | 3 | 模式出现几次后触发技能编译(2~20) |
pattern_max_file_size_mb | 50 | 模式账本上限,超出自动清理旧记录 |
evolution_enabled | true | 开启"报错—恢复"补丁进化 |
patch_max_per_skill | 10 | 每个技能最多保留的补丁数(1~50) |
compile_max_tokens | 3072 | LLM 编译技能的输出上限 |
调小pattern_min_occurrences可以让技能生成更激进,调大则更稳健——建议新手先用默认值跑一段时间。
新手快速上手:安装并体验
一键安装步骤:
# 1. 克隆仓库 git clone https://gitcode.com/gh_mirrors/om/OmniAgent # 2. 安装依赖(建议虚拟环境) pip install -e .最快体验方法:用 CLI 入口 omniagent/cli/chat.py 启动对话,连续让 Agent 完成同一类任务(如"查看某服务的状态并整理输出")3 次以上。之后打开.omniagent/skills/目录,你就会看到自动生成的SKILL.md;而 CLI 在每轮会话结束后还会向你展示本会话的进化结果(是否编译了新技能、写了哪些补丁,见 chat.py)。
总结:让 Agent 越用越聪明的工程化答案
OmniAgent 的 Skill 自进化机制,本质上构建了一条"记录 → 编译 → 修复"的实时进化流水线:
- 📒PatternRecorder把成功操作沉淀为可统计的模式账本;
- ⚙️PatternAnalyzer把高频模式编译成 prompt 或脚本型技能,实现技能自生成;
- 🔧SkillEvolutionTracker从报错-恢复对与用户反馈中生成补丁,实现技能自修复。
三者通过事件总线(AGENT_START / AGENT_END)与主 Agent 解耦协作,源码入口见 omniagent/agents/init.py。对新手来说,你不需要理解每一行代码——只要正常使
【免费下载链接】OmniAgentAn agent capable of self-evolving and dynamically hardening security项目地址: https://gitcode.com/gh_mirrors/om/OmniAgent
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考