Self evolve extension for openclaw. Let your claw grow continuously.
Self evolve extension for openclaw. Let your claw grow continuously.
A self-evolving OpenClaw plugin that learns from feedback and turns runtime experience into reusable memory.
self-evolve is an self-learning plugin for openclaw. Fewer tokens, more algorithmic learning of new skills:
Recommended: upgrade to openclaw 2026.3.2+ before using this plugin. Older versions may miss hook context and fail to capture tool traces reliably.
git clone https://github.com/longmans/self-evolve
openclaw plugins install ./self-evolve
export OPENAI_API_KEY=sk-xxx
openclaw gateway restart
self-evolve: initialized ...Optional: if you want to override defaults, run one-shot config
Keep
embeddingdefault unchanged for remote consistency.
openclaw config set plugins.entries.self-evolve '{"enabled":true,"config":{"reward":{"provider":"openai","apiKey":"${OPENAI_API_KEY}","model":"gpt-4.1-mini","temperature":0},"experience":{"summarizer":"openai","apiKey":"${OPENAI_API_KEY}","model":"gpt-4.1-mini","temperature":0}}}'
before_prompt_buildopen / waiting_feedback).agent_endwaiting_feedback.…
Default learning gates:
runtime.observeTurns=0runtime.minAbsReward=0.15runtime.minRewardConfidence=0.55runtime.minFeedbackChars has been removed.Default retrieval gate:
retrieval.tau=0.85 (only inject memories when best similarity is high enough)Learning modes (runtime.learnMode):
balanced (default): prefer tool turns; no-tool turns require high reward/confidence.tools_only: learn only when tools were called (lowest token cost).all: learn all turns that pass reward gates (highest token cost).Balanced-mode no-tool thresholds:
runtime.noToolMinAbsReward=0.8runtime.noToolMinRewardConfidence=0.9Task boundary defaults:
runtime.newIntentSimilarityThreshold=0.35runtime.idleTurnsToClose=2runtime.pendingTtlMs=300000 (5 minutes)runtime.maxTurnsPerTask=5Remote shared memory (enabled by default):
remote.enabled=true, default remote.baseUrl=https://self-evolve.club/api/v1.remote.enabled=true enables remote register/ingest/search/feedback.POST /v1/clients/register and stores request_key_id locally.sanitizeMemoryText removes conversation metadata, IDs, and sender-like tags.[REDACTED_*] placeholders.intent / experience / embedding) with anonymous attribution via request_key_id.Remote config example:
openclaw config set plugins.entries.self-evolve.config.remote '{
"enabled": true,
"baseUrl": "https://self-evolve.club/api/v1",
"timeoutMs": 3000
}'
Disable remote sharing:
openclaw config set plugins.entries.self-evolve.config.remote.enabled false
Switch mode:
openclaw config set plugins.entries.self-evolve.config.runtime.learnMode '"tools_only"'
openclaw config set plugins.entries.self-evolve.config.runtime.learnMode '"all"'
openclaw config set plugins.entries.self-evolve.config.runtime.learnMode '"balanced"'
Memory retention:
memory.maxEntries=200openclaw config set plugins.entries.self-evolve.config.memory.maxEntries 200
Q: How do I know self-evolve is running normally?
A: Check gateway logs for these signals:
self-evolve: initialized ...self-evolve: loaded episodic memories[self-evolve] hook before_prompt_build ...[self-evolve] agent_end captured ...[self-evolve] llm_output captured ...self-evolve: feedback scored ...[self-evolve] learning start ... / [self-evolve] learning skipped ...[self-evolve] learning persisted to episodic storeQ: How do I know the agent actually used evolved skills (episodic memory)?
A: Look for retrieval and injection evidence:
[self-evolve] phase-a candidates= where N > 0[self-evolve] phase-b ... selected= where K > 0[self-evolve] pending created ... selectedIds=[self-evolve] prependContext preview=...If you only see selected=0 / selectedIds=none, no evolved memory was injected for that turn.
Q: How do I know learning has written new memory?
A: Look for:
[self-evolve] memory append ...[self-evolve] learning persisted to episodic storeThen verify the state file (plugins/self-evolve/episodic-memory.json) has new entries.
越用越强,每一次对话都在进化。
self-evolve 是一个为openclaw设计的自学习插件,可以更少token、更算法的学习新技能:
建议先升级到 openclaw 2026.3.2+。旧版本可能出现 hook 上下文缺失,导致 tool trace 记录不稳定。
git clone https://github.com/longmans/self-evolve
openclaw plugins install ./self-evolve
export OPENAI_API_KEY=sk-xxx
openclaw gateway restart
self-evolve: initialized ...可选:如果你想覆盖默认参数,再执行一条命令配置
为了和远端保持一致,不要修改
embedding配置。
openclaw config set plugins.entries.self-evolve '{"enabled":true,"config":{"reward":{"provider":"openai","apiKey":"${OPENAI_API_KEY}","model":"gpt-4.1-mini","temperature":0},"experience":{"summarizer":"openai","apiKey":"${OPENAI_API_KEY}","model":"gpt-4.1-mini","temperature":0}}}'
flowchart TD
A[收到用户消息] --> B{是否反馈轮}
B -- 是 --> C[奖励打分并检查学习门槛]
C --> D{是否学习}
D -- 是 --> E[本地 sanitizeMemoryText 脱敏]
E --> F[LLM 总结并二次脱敏]
F --> G[写入本地记忆 triplet]
G --> H[可选远程写入 request_key_id 归因]
D -- 否 --> I[跳过学习]
B -- 否 --> J[识别意图并判断任务边界]
J --> K[检索本地+远程候选]
K --> L[Phase-B 排序并选择记忆]
L --> M[注入记忆并生成回复]
M --> N[任务进入 waiting_feedback]
N --> A
H --> A
I --> A
默认学习门槛:
runtime.observeTurns=0runtime.minAbsReward=0.15runtime.minRewardConfidence=0.55runtime.minFeedbackChars 已移除。默认检索门槛:
retrieval.tau=0.85(仅在最高相似度足够高时才注入记忆)学习模式 runtime.learnMode:
balanced(默认):优先学习工具回合;无工具回合需高奖励高置信。tools_only:仅学习有工具调用的回合(最省 token)。all:所有通过门槛的回合都学习(最费 token)。任务边界默认值:
runtime.newIntentSimilarityThreshold=0.35runtime.idleTurnsToClose=2runtime.pendingTtlMs=300000(5分钟)runtime.maxTurnsPerTask=5远程共享记忆(默认开启):
remote.enabled=true,默认 remote.baseUrl=https://self-evolve.club/api/v1。remote.enabled=true 后启用远程注册/写入/检索/反馈。POST /v1/clients/register 首次注册并本地保存 request_key_id。sanitizeMemoryText 去除会话元数据、message_id 与 sender/tag 等标识。[REDACTED_*] 占位符。intent / experience / embedding),并使用 request_key_id 做匿名归因。远程配置示例:
openclaw config set plugins.entries.self-evolve.config.remote '{
"enabled": true,
"baseUrl": "https://self-evolve.club/api/v1",
"timeoutMs": 3000
}'
停用共享:
openclaw config set plugins.entries.self-evolve.config.remote.enabled false
切换示例:
openclaw config set plugins.entries.self-evolve.config.runtime.learnMode '"tools_only"'
openclaw config set plugins.entries.self-evolve.config.runtime.learnMode '"all"'
openclaw config set plugins.entries.self-evolve.config.runtime.learnMode '"balanced"'
记忆保留:
memory.maxEntries=200openclaw config set plugins.entries.self-evolve.config.memory.maxEntries 200
问:怎么确认 self-evolve 已经正常运行?
答:看 gateway 日志里这些关键信号:
self-evolve: initialized ...self-evolve: loaded episodic memories[self-evolve] hook before_prompt_build ...[self-evolve] agent_end captured ...[self-evolve] llm_output captured ...self-evolve: feedback scored ...[self-evolve] learning start ... / [self-evolve] learning skipped ...[self-evolve] learning persisted to episodic store问:怎么确认已经用了“进化后的技能”(即历史记忆)?
答:看检索与注入日志:
[self-evolve] phase-a candidates= 且 N > 0[self-evolve] phase-b ... selected= 且 K > 0[self-evolve] pending created ... selectedIds=[self-evolve] prependContext preview=...如果经常是 selected=0 或 selectedIds=none,说明该轮没有注入进化记忆。
问:怎么确认学习已经写入了新记忆?
答:看这些日志:
[self-evolve] memory append ...[self-evolve] learning persisted to episodic store然后可以检查状态文件 plugins/self-evolve/episodic-memory.json 是否有新增条目。
Citation:
@misc{zhang2026memrlselfevolvingagentsruntime,
title = {MemRL: Self-Evolving Agents via Runtime Reinforcement Learning on Episodic Memory},
author = {Shengtao Zhang and Jiaqian Wang and Ruiwen Zhou and Junwei Liao and Yuchen Feng and Weinan Zhang and Ying Wen and Zhiyu Li and Feiyu Xiong and Yutao Qi and Bo Tang and Muning Wen},
year = {2026},
eprint = {2601.03192},
archivePrefix = {arXiv},
primaryClass = {cs.CL},
url = {https://arxiv.org/abs/2601.03192},
}
MIT
No open issues yet, or sync has not completed.