Install
openclaw skills install self-evolving-agentAI λΉμκ° μκΈ° λ‘κ·Έλ₯Ό λΆμν΄μ AGENTS.md κ°μ μμ μ μνλ μλν. v5.0: μλ§¨ν± μλ² λ©(Ollama nomic-embed-text, FP ~8%), μ€μκ° μ€νΈλ¦¬λ° λͺ¨λν°(<30μ΄ μλ¦Ό), νλ¦Ώ λΆμ(λ€μ€ μΈμ€ν΄μ€). v4.3: λνν μΉμΈ, λ©ν°ν¬λ§· 리ν¬νΈ, GitHub Issues. v4.2: Ollama LLM. v4.1: λ©ν°νλ«νΌ λ°°λ¬. v4.0: 4λ¨κ³ νμ΄νλΌμΈ. μ μλ§ ν¨, μ§μ μμ μ λ μμ.
openclaw skills install self-evolving-agentλ§€μ£Ό λ‘κ·Έλ₯Ό μ½κ³ , μλ§¨ν± μλ² λ©μΌλ‘ μλ―Έλ‘ μ ν¨ν΄μ μ°Ύκ³ , μ€μκ° λͺ¨λν°λ§μΌλ‘ μ¦κ° μλ¦¬κ³ , ν¨κ³Όκ° μΈ‘μ λ AGENTS.md κ°μ μμ μ μνλ μλν μμ€ν
.
μ μλ§ ν©λλ€. AGENTS.mdλ μ¬μ©μκ° μΉμΈν΄μΌλ§ μμ λ©λλ€.
μ΄ μ€ν¬μ "AI μκΈ°μ§ν"λΌλ μ΄λ¦μ λ¬κ³ μμ§λ§ μ€μ λμμ ν¬λͺ ν©λλ€:
κ³Όλ κ΄κ³ μλλλ€. μλ²½νμ§ μμ΅λλ€. νμ§λ§ v4.xλ³΄λ€ ν¨μ¬ μ νν©λλ€.
v5.0μμ λ¬λΌμ§ κ² (2026-02-18):
sea patterns β Ollama nomic-embed-text λ‘컬 μλ² λ©μΌλ‘ μλ―Έλ‘ μ λΆλ§ κ°μ§, FP ~15% β ~8%sea monitor β μ€μκ° λ‘κ·Έ κ°μ, μκ³μΉ μ΄κ³Ό μ¦κ° μλ¦Ό (<30μ΄)sea fleet β λ€μ€ μμ΄μ νΈ μΈμ€ν΄μ€ κ΅μ°¨ λΆμsea trends β 4μ£Όκ° ν¨ν΄ μΆμΈ (Emerging/Resolved/Stable)sea monitor, sea alerts, sea trends, sea patterns, sea fleetv4.3μμ λ¬λΌμ§ κ²:
sea watch β 30μ΄ ν΄λ§, macOS λ°μ€ν¬ν μλ¦Ό, ν°λ―Έλ λνν approve/rejectβ
β π 리μ‘μ
μ§μ μλ μΆκ°sea export β markdown/html/json/pdf/all νμ μ§μsea github β μ μλ³ μ΄μ μμ±, μΉμΈ μ μλ μ’
λ£, λ μ΄λΈ κ΄λ¦¬v4.2μμ λ¬λΌμ§ κ²:
config.yamlμμ provider: "ollama" μ€μ ν μ€λ‘ μ νprovider: "none" μ‘°ν©μΌλ‘ API λΉμ© $0.00/μ£Ό μ΄μscripts/v4/llm-call.sh β anthropic/openai/ollama/none ν΅ν©v4.1μμ λ¬λΌμ§ κ²:
ko / en λΆλ¦¬ ꡬ쑰config.yamlμ auto_detect: true μ€μ μΌλ‘ μ μ΄ κ°λ₯v4.0μμ λ¬λΌμ§ κ²:
~/openclaw/skills/self-evolving-agent/
βββ SKILL.md β μ΄ νμΌ
βββ README.md β μμ΄, ClawHub λ°°ν¬μ©
βββ _meta.json β ClawHub λ©νλ°μ΄ν°
βββ config.yaml β μ€μ νμΌ
βββ scripts/
β βββ analyze-behavior.sh β v3.0 λΆμ (νμ νΈν μ μ§)
β βββ generate-proposal.sh β v3.0 μ μ μμ±
β βββ register-cron.sh β ν¬λ‘ λ±λ‘/μ
λ°μ΄νΈ
β βββ lib/
β β βββ config-loader.sh β config.yaml νμ
β βββ v4/ β v4.0 νμ΄νλΌμΈ (νμ νΈν μ μ§)
β β βββ orchestrator.sh β v4 μ€μΌμ€νΈλ μ΄ν° (μ§μ μ€ν κ°λ₯)
β β βββ collect-logs.sh β Stage 1: λ‘κ·Έ μμ§ + ꡬ쑰ν
β β βββ semantic-analyze.sh β Stage 2: ꡬ쑰μ ν¨ν΄ λΆμ
β β βββ benchmark.sh β Stage 3: ν¨κ³Ό μΈ‘μ + μ΄μ μ μ μΆμ
β β βββ synthesize-proposal.sh β Stage 4: ν©μ± μμ΄μ νΈ β μ΅μ’
μ μ
β β βββ llm-call.sh β λ²μ© LLM μΈν°νμ΄μ€
β β βββ measure-effects.sh β μ μ ν¨κ³Ό μΈ‘μ 루ν
β β βββ deliver.sh β λ©ν°νλ«νΌ λ°°λ¬κΈ° (Slack/Telegram/Webhook)
β β βββ interactive-approve.sh β λνν μΉμΈ + sea watch
β β βββ export-report.sh β λ©ν°ν¬λ§· 리ν¬νΈ λ΄λ³΄λ΄κΈ°
β β βββ github-issue.sh β GitHub Issues ν΅ν©
β βββ v5/ β v5.0 μ κ· νμ΄νλΌμΈ β
β βββ orchestrator.sh β v5 μ€μΌμ€νΈλ μ΄ν° (v4 ν΄λ°± λ΄μ₯)
β βββ embedding-analyze.sh β μλ§¨ν± μλ² λ© λΆμ β (Pillar 1)
β βββ stream-monitor.sh β μ€μκ° μ€νΈλ¦¬λ° λͺ¨λν° β (Pillar 2)
β βββ fleet-analyzer.sh β νλ¦Ώ λ€μ€ μΈμ€ν΄μ€ λΆμ β (Pillar 3)
β βββ trend-analyzer.sh β μ£Όκ° νΈλ λ λΆμ β
βββ dashboard/ β λ‘컬 μΉ λμ보λ
β βββ index.html β λ¨μΌ νμΌ λμ보λ (μμ‘΄μ± μμ)
β βββ load-data.js β λ°μ΄ν° λ‘λ λͺ¨λ
β βββ build-index.sh β λ°μ΄ν° μΈλ±μ€ λΉλ
β βββ serve.sh β λ‘컬 HTTP μλ² μ€ν
β βββ README.md β λμ보λ μ¬μ© κ°μ΄λ
βββ templates/
β βββ proposal-template.md β κ°μ μ μΆλ ₯ νμ
βββ docs/
β βββ architecture.md β v3.0 μν€ν
μ² (λ κ±°μ)
β βββ v4-architecture.md β v4.0 μν€ν
μ² μμΈ
β βββ v5-architecture.md β v5.0 μν€ν
μ² μμΈ β
β βββ migration-v4-to-v5.md β v4 β v5 λ§μ΄κ·Έλ μ΄μ
κ°μ΄λ β
β βββ roadmap.md β λ‘λλ§΅
β βββ devils-advocate.md β μ
λ§μ λ³νΈμΈ λΉν λΆμ
β βββ test-results.md β QA ν
μ€νΈ κ²°κ³Ό
β βββ quality-review.md β νμ§ κ²ν
βββ bin/ β CLI λꡬ
β βββ sea β λ©μΈ CLI v2.0 (proposals/run/status/... + v5 λͺ
λ Ή)
β βββ sea-completion.bash β Bash ν μλμμ±
βββ tests/
β βββ fixtures/ β ν
μ€νΈ ν½μ€μ²
β βββ test-cli.sh β CLI ν
μ€νΈ
β βββ test-pipeline.sh β v4 νμ΄νλΌμΈ ν
μ€νΈ
β βββ test-v5.sh β v5 μ»΄ν¬λνΈ ν
μ€νΈ β
βββ data/ β λ°νμ μλ μμ±
βββ proposals/ β μμ±λ μ μ JSON
βββ benchmarks/ β ν¨κ³Ό μΈ‘μ κ²°κ³Ό
βββ stream-alerts/ β μ€μκ° μλ¦Ό ν β
βββ fleet/ β νλ¦Ώ λΆμ κ²°κ³Ό β
βββ trends/ β νΈλ λ λΆμ κ²°κ³Ό β
βββ undelivered/ β λ°°λ¬ μ€ν¨ μ ν΄λ°± μ μ₯
βββ rejected-proposals.json β κ±°λΆ κΈ°λ‘
seaλ Self-Evolving Agentμ λͺ
λ Ήμ€ μΈν°νμ΄μ€μ
λλ€. μ μ κ΄λ¦¬, νμ΄νλΌμΈ μ€ν, AGENTS.md μ μ©μ ν°λ―Έλμμ μ§μ μνν μ μμ΅λλ€.
# ~/.zshrc λλ ~/.bashrcμ μΆκ°
export PATH="$HOME/openclaw/skills/self-evolving-agent/bin:$PATH"
# ν μλμμ± νμ±ν (bash μ μ©)
source ~/openclaw/skills/self-evolving-agent/bin/sea-completion.bash
# ββ κΈ°μ‘΄ λͺ
λ Ήμ΄ (v4μμ μ μ§) βββββββββββββββββββββββββββββ
sea run # μ 체 νμ΄νλΌμΈ μ€ν (v5 μ€μΌμ€νΈλ μ΄ν°)
sea run --v4 # v4 νμ΄νλΌμΈ κ°μ μ€ν
sea run --stage 2 # Stage 2(λΆμ)λ§ μ€ν
sea status # λ§μ§λ§ μ€ν μμ½ (ν μ€)
sea proposals # λκΈ° μ€μΈ μ μ λͺ©λ‘
sea proposals --all # λͺ¨λ μ μ (μ 체 μν)
sea approve <id> # μ μ μΉμΈ: diff β AGENTS.md ν¨μΉ β git commit
sea approve --all # λκΈ° μ€μΈ λͺ¨λ μ μ μΉμΈ
sea reject <id> "μ΄μ " # μ΄μ μ ν¨κ» κ±°λΆ
sea watch # 30μ΄ ν΄λ§, μ μ μ μλ¦Ό + λνν μΉμΈ
sea export --format html # HTML 리ν¬νΈ λ΄λ³΄λ΄κΈ°
sea export --format all --output-dir ./reports/ # λͺ¨λ νμ λ΄λ³΄λ΄κΈ°
sea github create --all # λͺ¨λ pending μ μ GitHub μ΄μ μμ±
sea github sync # proposals/ β GitHub μ΄μ λκΈ°ν
sea github list # self-evolving μ΄μ λͺ©λ‘
sea history # μ 체 μ μ μ΄λ ₯ (μ μ©/κ±°λΆ/λκΈ°)
sea health # AGENTS.md 건κ°λ μ μ + ν΅κ³
sea config # νμ¬ μ€μ νμ
sea config set analysis.days 14 # μ€μ κ° μ
λ°μ΄νΈ
sea version # λ²μ νμΈ
sea help # λμλ§
# ββ v5.0 μ κ· λͺ
λ Ήμ΄ β βββββββββββββββββββββββββββββββββββ
sea monitor # μ€μκ° μ€νΈλ¦¬λ° λͺ¨λν° μμ (Ctrl+Cλ‘ μ’
λ£)
sea monitor --poll # ν΄λ§ λͺ¨λ (30μ΄ κ°κ²©, λΉλνν νκ²½)
sea alerts # μ€νΈλ¦Ό μλ¦Ό λͺ©λ‘ (μ£Όκ° μ§κ³)
sea alerts --clear # μλ¦Ό μ΄κΈ°ν (μ²λ¦¬ μλ£ ν)
sea trends # μ£Όκ° νΈλ λ λΆμ (Emerging/Resolved/Stable)
sea trends --json # JSON μΆλ ₯ (CI/μλνμ©)
sea patterns # μλ§¨ν± ν¨ν΄ λΌμ΄λΈλ¬λ¦¬ νμΈ
sea patterns add "<text>" --label frustration # μ΅μ»€ ν¨ν΄ μΆκ°
sea fleet # νλ¦Ώ λΆμ (μ 체 μμ΄μ νΈ μΈμ€ν΄μ€)
sea fleet --agents opus,sonnet # νΉμ μμ΄μ νΈλ§ λΆμ
# λͺ¨λ λͺ
λ Ήμ --json νλκ·Έ μΆκ° κ°λ₯
sea status --json
sea history --json
sea fleet --json
sea approve λμ λ°©μdata/proposals/<id>.jsonμμ μ μ μ½κΈ°before / after diff μΆλ ₯AGENTS.mdμ before ν
μ€νΈλ₯Ό afterλ‘ κ΅μ²΄statusλ₯Ό "applied"λ‘ μ
λ°μ΄νΈgit commit -m "agents: apply proposal <id>"# 1. Clone
git clone https://github.com/Ramsbaby/self-evolving-agent ~/openclaw/skills/self-evolving-agent
# 2. μ€μ λ§λ²μ¬ μ€ν (λνν)
bash ~/openclaw/skills/self-evolving-agent/scripts/setup-wizard.sh
λΉλνν μ€μΉ (CI/μλνμ©):
bash ~/openclaw/skills/self-evolving-agent/scripts/setup-wizard.sh \
--platform discord \
--channel YOUR_CHANNEL_ID \
--lang auto \
--days 7 \
--yes
μ€μ κ²μ¦λ§ μ€ν:
bash ~/openclaw/skills/self-evolving-agent/scripts/validate-config.sh --fix
ν¬λ‘ μλ λ±λ‘/μ λ°μ΄νΈ:
bash ~/openclaw/skills/self-evolving-agent/scripts/register-cron.sh
ν¬λ‘ JSON μμ (~/.openclaw/cron/jobs.jsonμ μΆκ°):
{
"name": "π§ Self-Evolving Agent v4.0 μ£Όκ° νμ΄νλΌμΈ",
"enabled": true,
"schedule": {
"kind": "cron",
"expr": "0 22 * * 0",
"tz": "Asia/Seoul"
},
"sessionTarget": "isolated",
"payload": {
"kind": "agentTurn",
"model": "anthropic/claude-sonnet-4-5",
"message": "bash ~/openclaw/skills/self-evolving-agent/scripts/v4/orchestrator.sh μ€ν. κ²°κ³Ό ν
μ€νΈλ§ μΆλ ₯."
},
"delivery": {
"mode": "announce",
"channel": "discord",
"to": "channel:YOUR_CHANNEL_ID"
}
}
μ μ μ΄λ ₯, νμ§ μΆμΈ, ν¨ν΄ λΉλ, κ·μΉ ν¨κ³Όλ₯Ό μκ°ννλ λ‘컬 μΉ λμ보λ.
# λΉ λ₯Έ μμ (μ€ν¬ 루νΈμμ μ€ν)
bash dashboard/serve.sh
# β http://localhost:8420/dashboard/ μμ μ΄κΈ°
# μ μ μ ν μΈλ±μ€ κ°±μ
bash dashboard/build-index.sh
μ£Όμ ν¨λ:
μμΈ:
dashboard/README.md
collect-logs.sh
βββ μ±ν
λ‘κ·Έ μ€μΊ (μΈμ
λ³ μ²ν¬ λΆλ¦¬)
βββ exec μ¬μλ μ΄λ²€νΈ μΆμΆ (μ°μ 3ν+ νμ§)
βββ ν¬λ‘ μλ¬ λ‘κ·Έ νμ±
βββ μ΄μ μ μ + μ μ© μ΄λ ₯ λ‘λ
βββ β data/collect-YYYYMMDD.json
semantic-analyze.sh
βββ ν€μλ λ§€μΉ (κΈ°μ‘΄ λ°©μ μ μ§)
βββ ꡬ쑰μ ν΄λ¦¬μ€ν± λΆμ (v4.0 μ κ·)
β βββ μν νν°: user vs assistant λ©μμ§ λΆλ¦¬
β βββ λ¬Έλ§₯ μλμ°: ν€μλ μ ν 3μ€ νμΈ
β βββ λ°λ³΅ μκ³κ°: λμΌ μΈμ
λ΄ μ€λ³΅ μ κ±°
β βββ κ°μ κ°ν μ νΈ: "!!", "??" λλ° μ¬λΆ
βββ AGENTS.md κ·μΉ μλ° κ΅μ°¨ λΆμ
βββ μΈμ
건κ°λ μ§ν
βββ β data/analysis-YYYYMMDD.json
benchmark.sh
βββ μ΄μ μ μ© μ μ λͺ©λ‘ λ‘λ
βββ μ μ μ μ© μ ν ν¨ν΄ λΉλ λΉκ΅
βββ ν¨κ³Ό λΆλ₯: Effective / Neutral / Regressed
βββ ν¨κ³Ό μλ μ μ μ¬κ²ν νλκ·Έ
βββ β data/benchmarks/benchmark-YYYYMMDD.json
synthesize-proposal.sh
βββ Stage 1-3 κ²°κ³Ό μ’
ν©
βββ Claude API νΈμΆ 1ν (ν©μ± μμ΄μ νΈ)
β βββ λΆμ λ°μ΄ν° β μμ°μ΄ μ μ
β βββ λ²€μΉλ§ν¬ κ²°κ³Ό β "μ§λ μ£Ό #2 μ μ ν¨κ³Ό μμ" ν¬ν¨
β βββ diff νμμΌλ‘ before/after μμ±
βββ β Discord #your-channel κ²μ
measure-effects.sh
βββ κ³Όκ±° μ μμ νκ² ν¨ν΄ λΉλ λΉκ΅
βββ μΈμ
νΈλμ€ν¬λ¦½νΈ + ν¬λ‘ λ‘κ·Έλ§ μ€μΊ (gateway λ‘κ·Έ μ μΈ)
βββ ν¨κ³Ό λΆλ₯: Effective / Neutral / Regressed
βββ β /tmp/sea-v4/effects.json
ν€μλ λ§€μΉμ λ¬Έλ§₯ λΆμμ 보κ°:
heuristic_analysis:
role_filter: true # user λ©μμ§λ§ λΆμ (assistant μ μΈ)
context_window: 3 # ν€μλ μ ν 3μ€ νμΈ
dedup_per_session: true # λμΌ μΈμ
λ΄ μ€λ³΅ ν¨ν΄ 1ν κ³μ°
emotion_boost_signals: # κ°μ κ°ν μ νΈ (κ°μ€μΉ +1.5x)
- "!!"
- "??"
- "μ"
- "λ"
μ΄ κ²°κ³Ό false positive: ~40% β μΆμ ~15%
v4.1λΆν° νκ΅μ΄/μμ΄ ν¨ν΄μ΄ λΆλ¦¬λκ³ , μΈμ μΈμ΄λ₯Ό μλ κ°μ§ν΄ μ μ©ν©λλ€.
complaint_patterns:
ko: # νκ΅μ΄ μΈμ
μ μ μ©
- "νμΈμ€"
- "λ€μ"
- "μκΉ"
- "λ°λ³΅"
- "κΈ°μ΅"
- "λ§νμμ"
- "κ³μ"
- "λ¬Όμ΄λ³΄μ§ λ§κ³ "
- "μ λΆ λ€ ν΄μ€"
- "μ λ"
en: # μμ΄ μΈμ
μ μ μ©
- "you forgot"
- "again?"
- "same mistake"
- "stop doing that"
- "how many times"
- "wrong again"
- "I told you"
- "still broken"
- "not what I asked"
auto_detect: true # μΈμ
μΈμ΄ μλ κ°μ§ (ko/en μλ μ ν)
μλ μΈμ΄ κ°μ§ λ‘μ§: μΈμ
μ 첫 10κ° user λ©μμ§ μ€ >50%μ [κ°-ν£]μ΄ ν¬ν¨λλ©΄ ko, μλλ©΄ en ν¨ν΄ μ μ©.
β οΈ μ¬μ ν νκ³: λ¨μ΄ λͺ©λ‘μ μλ ν¨ν΄μ λ―Ένμ§. config.yamlμμ 컀μ€ν°λ§μ΄μ§ νμ.
κ°μ exec λͺ
λ Ήμ 3ν μ΄μ μ°μ μ¬μλν μΈμ
νμ§
β μμ΄μ νΈκ° 루νμ κ°ν μλ€λ μ νΈ
β 119ν μ°μ μ¬μλ μ€μ λ°κ²¬ (v3.0 ν
μ€νΈ, v4.0μμλ μ μ§)
~/.openclaw/logs/cron-catchup.log
~/.openclaw/logs/heartbeat-cron.log
β λμΌ μλ¬ 5ν μ΄μ λ°λ³΅ = ꡬ쑰μ λ²κ·Έ
AGENTS.md κ·μΉ λͺ©λ‘ μΆμΆ β μ€μ transcriptμ κ΅μ°¨ λΆμ
β "κ·μΉμ μμ§λ§ μ μ§ν¨ κ²" μλ³
β "κ·μΉ μλλ° μμ£Ό μ€μν κ²" μλ³
μ»΄ν©μ
5ν μ΄μ = μΈμ
μ΄ λ무 κΈΈκ±°λ 볡μ‘
β μλΈμμ΄μ νΈ λΆλ¦¬ κΆκ³ μ μ νΈλ¦¬κ±°
μ΄μ μ£ΌκΈ°μ μ μ©λ μ μλ€μ ν¨κ³Όλ₯Ό μΆμ :
β μ μ© μ ν¨ν΄ λΉλ vs μ μ© ν ν¨ν΄ λΉλ λΉκ΅
β Effective: λΉλ 30%+ κ°μ
β Neutral: Β±30% μ΄λ΄
β Regressed: λΉλ μ¦κ° (μ¬κ²ν νμ)
Discord #your-channelμ μ΄λ° νμμΌλ‘ κ²μ:
## π§ Self-Evolving Agent v4.0 μ£Όκ° λΆμ
π
λΆμ κΈ°κ°: 2026-02-10 ~ 2026-02-17
π λΆμλ μΈμ
: 30κ° (μ 체 964κ° μ€ μν)
β‘ exec μ¬μλ μ΄λ²€νΈ: 405건 (μ΅λ 119ν μ°μ)
π΄ νμ± ν¬λ‘ μλ¬: 3κ°
π μ§λ μ£Ό μ μ ν¨κ³Ό: #2 Effective (ν¨ν΄ -43%), #3 Neutral
π μ μ: 3κ°
---
### μ μ #1: exec μ°μ μ¬μλ μ ν (HIGH)
**κ·Όκ±°:** 7μΌκ° 405건 μ¬μλ μ΄λ²€νΈ, μ΅λ 119ν μ°μ μ¬μλ
**μν νν°:** user λ©μμ§ κΈ°μ€ (assistant μ μΈ)
**Before:** μ°μ μ¬μλ μ κ·μΉ μμ (무ν 루ν κ°λ₯)
**After:**
κ°μ exec 3ν μ€ν¨ μ:
1. μλ¬ μ¦μ μ¬μ©μ 보κ³
2. 2λ²μ§Έ μλλ λ°©λ² λ³κ²½
3. 3λ²μ§Έ μ€ν¨ = μ€λ¨ + μλ νμΈ μμ²
---
β
μ μ©: "μ μ #1 μ μ©ν΄μ€"
β κ±°λΆ: "κ±°λΆ: [μ΄μ ]"
config.yamlμ llm μΉμ
μΌλ‘ ν©μ± λ¨κ³μ LLMμ μ νν©λλ€.
llm:
provider: "ollama" # anthropic | openai | ollama | none
| μ 곡μ | λΉμ© | API ν€ | μΈν°λ· | νμ§ |
|---|---|---|---|---|
| anthropic | ~$0.05/μ£Ό | ANTHROPIC_API_KEY | νμ | βββββ |
| openai | ~$0.05/μ£Ό | OPENAI_API_KEY | νμ | βββββ |
| ollama π | $0.00 | μμ | μμ | ββββ |
| none | $0.00 | μμ | μμ | ν΄λ¦¬μ€ν±λ§ |
# 1. Ollama μ€μΉ
brew install ollama
# 2. λͺ¨λΈ λ€μ΄λ‘λ (1νλ§)
ollama pull llama3.1:8b # μΆμ²: κ· ν μ‘ν μ±λ₯
# λλ
ollama pull mistral:7b # λ λΉ λ¦
ollama pull gemma3:9b # Google λͺ¨λΈ
# 3. μλ² μ€ν (λ°±κ·ΈλΌμ΄λ)
ollama serve &
# 4. config.yaml μ€μ
# llm:
# provider: "ollama"
# ollama:
# model: "llama3.1:8b"
# url: "http://localhost:11434"
LLM μμ΄ μ μ€ν¬λ¦½νΈ ν΄λ¦¬μ€ν± λΆμλ§ μνν©λλ€. API λΉμ© $0, μΈν°λ· λΆνμ.
llm:
provider: "none"
ν©μ± λ¨κ³μμ LLM κ°ν μ μ μΉμ μ΄ μλ΅λ©λλ€. κΈ°λ³Έ λΆμ/μ μμ κ·Έλλ‘ μ 곡λ©λλ€.
# Ollamaλ‘ ν둬ννΈ μ μ‘
echo "λΆμ κ²°κ³Όλ₯Ό μμ½ν΄μ€" | bash scripts/v4/llm-call.sh --provider ollama
# AnthropicμΌλ‘ μ μ‘
echo "λΆμ κ²°κ³Όλ₯Ό μμ½ν΄μ€" | bash scripts/v4/llm-call.sh --provider anthropic --model claude-haiku-4-5
# μ 곡μ μμ (λΉ JSON λ°ν)
echo "ν
μ€νΈ" | bash scripts/v4/llm-call.sh --provider none
# config.yaml μλ μ½κΈ° (νλκ·Έ μλ΅ κ°λ₯)
echo "λΆμ κ²°κ³Όλ₯Ό μμ½ν΄μ€" | bash scripts/v4/llm-call.sh
# config.yaml
analysis:
days: 14 # λΆμ κΈ°κ° (κΈ°λ³Έ 7μΌ)
max_sessions: 50 # μ΅λ μΈμ
μ
complaint_patterns: # v4.1: μΈμ΄λ³ λΆλ¦¬ ꡬ쑰
ko: # νκ΅μ΄ ν¨ν΄ 컀μ€ν°λ§μ΄μ§
- "λ¬Όμ΄λ³΄μ§ λ§κ³ "
- "μ λΆ λ€ ν΄μ€"
- "λλ³΄κ³ νλΌκ³ "
en: # μμ΄ ν¨ν΄ 컀μ€ν°λ§μ΄μ§
- "you're useless"
- "that's wrong again"
- "stop asking me"
auto_detect: true # μΈμ
μΈμ΄ μλ κ°μ§
exec_retry_threshold: 3 # λͺ ν μ¬μλλΆν° νμ§ν μ§
log_error_repeat_threshold: 5 # λμΌ μλ¬ λͺ νλΆν° μ¬κ°μΌλ‘ λ³Όμ§
# v4.0 μ κ·
heuristic:
role_filter: true # user λ©μμ§λ§ λΆμ
context_window: 3 # μ ν λͺ μ€ νμΈ
dedup_per_session: true # μΈμ
λ΄ μ€λ³΅ μ κ±°
emotion_boost: true # κ°μ κ°ν μ νΈ κ°μ€μΉ
benchmark:
enabled: true # ν¨κ³Ό μΈ‘μ νμ±ν
effective_threshold: 0.30 # 30% κ°μ = Effective νμ
cron:
schedule: "0 22 * * 0" # μΌμμΌ 22μ (κΈ°λ³Έ)
discord_channel: "" # Required: set your Discord channel ID
config.yamlμ delivery μΉμ
μΌλ‘ μ μμ μ μ‘ νλ«νΌμ μ νν©λλ€.
delivery:
platform: "discord" # discord | slack | telegram | webhook
OpenClaw ν¬λ‘ μ delivery μ€μ μ κ·Έλλ‘ μ¬μ©ν©λλ€. deliver.sh νΈμΆ μμ.
delivery:
platform: "discord"
discord:
channel_id: "YOUR_CHANNEL_ID"
Slack Incoming Webhookμ μ¬μ©ν©λλ€. Slack Webhook μμ± κ°μ΄λ
delivery:
platform: "slack"
slack:
webhook_url: "https://hooks.slack.com/services/T.../B.../..."
BotFatherμμ λ°κΈν ν ν°κ³Ό μ±ν λ°© IDκ° νμν©λλ€.
delivery:
platform: "telegram"
telegram:
bot_token: "123456:ABC-DEF..."
chat_id: "-1001234567890" # μ±λμ -100μΌλ‘ μμ
JSON POSTλ‘ μμ μλν¬μΈνΈμ μ μ‘ν©λλ€.
delivery:
platform: "webhook"
webhook:
url: "https://your-server.example.com/sea-proposals"
method: "POST"
Payload νμ:
{
"source": "self-evolving-agent",
"version": "4.0",
"timestamp": "2026-02-18T00:00:00Z",
"proposal": "## π§ SEA v4.0 ...(λ§ν¬λ€μ΄)..."
}
μ μ‘μ μ€ν¨νλ©΄ data/undelivered/YYYYMMDD-HHMMSS-<platform>.mdμ μ μ₯λ©λλ€.
μλ μ¬μ μ‘: PLATFORM=slack bash scripts/v4/deliver.sh data/undelivered/<νμΌ>
| νκ³ | v3.0 | v4.0 κ°μ | v5.0 κ°μ |
|---|---|---|---|
| ν€μλ λ§€μΉ (μλ―Έλ‘ μλ) | FP ~40% | ν΄λ¦¬μ€ν±μΌλ‘ ~15% | μλ² λ©μΌλ‘ ~8% β |
| assistant λ°ν νν° λΆμμ | "λ€μ", "κ³μ" κ³Όλ€ κ³μ° | role_filterλ‘ κ°μ | λμΌ (μ μ§) |
| ν€μλ λͺ©λ‘μ μμΌλ©΄ λ―Ένμ§ | μμ¨μ€ν μꡬ ν¨ν΄ λμΉ¨ | μ¬μ ν λμΌ | μλ² λ© μ μ¬λλ‘ λͺ©λ‘ μΈ ν¨ν΄ κ°μ§ β |
| κ°μ ν¨κ³Ό λ―ΈμΈ‘μ | λμλλμ§ λͺ¨λ¦ | λ²€μΉλ§ν¬ 루νλ‘ ν΄κ²° β | λμΌ (μ μ§) |
| μμ΄ μΈμ ν¨ν΄ λ―Έμ§μ | μμ΄ κ°μ§ λΆκ° | ko/en + auto_detect β | λμΌ (μ μ§) |
| λ°μ΄ν° λΆμ‘± μ μ μ νμ§ νλ½ | generic μ μ | μ¬μ ν λμΌ | μ¬μ ν λμΌ |
| Cold start | μ²μ 2-4μ£Ό λ°μ΄ν° μμ | μ¬μ ν λμΌ | μ¬μ ν λμΌ |
| μ£Ό 1ν λ°°μΉλ§ κ°λ₯ | μ£Όκ° μ¬κ°μ§λ μμ | μ¬μ ν λμΌ | μ€μκ° μ€νΈλ¦¬λ° λͺ¨λν°λ‘ ν΄κ²° β |
| λ¨μΌ μΈμ€ν΄μ€λ§ λΆμ | λ€μ€ μμ΄μ νΈ λΆμ λΆκ° | μ¬μ ν λμΌ | νλ¦Ώ λΆμμΌλ‘ ν΄κ²° β |
v5.0μμ μ¬μ ν ν΄κ²° λͺ» ν κ²:
scripts/v5/embedding-analyze.sh μ μ€ β Ollama nomic-embed-text μλ§¨ν± μλ² λ© λΆμ (Pillar 1)scripts/v5/stream-monitor.sh μ μ€ β μ€μκ° μ€νΈλ¦¬λ° λͺ¨λν° + μκ³μΉ μλ¦Ό (Pillar 2)scripts/v5/fleet-analyzer.sh μ μ€ β λ€μ€ μμ΄μ νΈ μΈμ€ν΄μ€ κ΅μ°¨ λΆμ (Pillar 3)scripts/v5/trend-analyzer.sh μ μ€ β 4μ£Όκ° ν¨ν΄ μΆμΈ λΉκ΅ (Emerging/Resolved)scripts/v5/orchestrator.sh μ μ€ β v5 6λ¨κ³ μ€μΌμ€νΈλ μ΄ν° (v4 ν΄λ°± λ΄μ₯)bin/sea v2.0.0 β monitor, alerts, trends, patterns, fleet 컀맨λ μΆκ°config.yaml β embedding, streaming, fleet, trends μΉμ
μΆκ°tests/test-v5.sh μ μ€ β v5 μ»΄ν¬λνΈ λ
립 ν
μ€νΈ (Ollama λΆνμ)docs/v5-architecture.md μ μ€ β μ 체 μν€ν
μ² λ¬Έμ (ASCII λ€μ΄μ΄κ·Έλ¨)docs/migration-v4-to-v5.md μ μ€ β v4 β v5 λ§μ΄κ·Έλ μ΄μ
κ°μ΄λMakefile β make test-v5, make test v5 ν¬ν¨scripts/v4/interactive-approve.sh μ μ€ β sea watch, macOS μλ¦Ό, λνν approve/rejectscripts/v4/export-report.sh μ μ€ β markdown/html/json/pdf/all 리ν¬νΈ λ΄λ³΄λ΄κΈ°scripts/v4/github-issue.sh μ μ€ β GitHub Issues ν΅ν© (μμ±/μ’
λ£/λκΈ°ν/λ μ΄λΈ)bin/sea v1.1.0 β watch, export, github 컀맨λ μΆκ°synthesize-proposal.sh β Discord 리μ‘μ
μ§μ νΈν° μλ μΆκ°config.yaml β github, interactive, export μΉμ
μΆκ°sea approve β GitHub μ΄μ μλ μ’
λ£ μ°λ (GH_TOKEN μμ λ)llm.provider μ€μ ν μ€λ‘ μ νscripts/v4/llm-call.sh μ μ€ β anthropic/openai/ollama/none ν΅ν© μΈν°νμ΄μ€provider: "ollama" λλ provider: "none" β API λΉμ© $0/μ£Όsynthesize-proposal.sh: LLM κ°ν μ μ μΉμ
μΆκ° (noneμ΄λ©΄ μλ΅)config.yaml: llm μΉμ
μΆκ° (provider/anthropic/openai/ollama/none)scripts/v4/deliver.sh μ μ€ β νλ«νΌλ³ λ
립 νΈλ€λ¬ (κ° <30μ€)data/undelivered/ λλ ν 리 β λ°°λ¬ μ€ν¨ μ μλ μ μ₯ (μ μ€ λ°©μ§)config.yaml: delivery μΉμ
μΆκ°config-loader.sh: λ°°λ¬ μ€μ μλ λ
ΈμΆ (SEA_DELIVERY_PLATFORM λ±)orchestrator.sh: synthesize μ΄ν platform != discord μ deliver.sh μλ νΈμΆcomplaint_patterns β ko / en λΆλ¦¬ ꡬ쑰auto_detect: true)semantic-analyze.sh: load_config_patterns() + detect_session_language() ν¨μ μΆκ°collect-logs.sh: λΆλ§ ν€μλ λͺ©λ‘ ko/en λΆλ¦¬, config.yaml μ°μ λ‘λcomplaint_patterns.ko / .en / auto_detect κ΅¬μ‘°λ‘ μ¬νΈscripts/v4/ λλ ν 리 μ μ€ (v3.0 μ€ν¬λ¦½νΈλ νμ νΈν μ μ§)data/benchmarks/ λλ ν 리 μ μ€ (ν¨κ³Ό μΈ‘μ κ²°κ³Ό μ μ₯)docs/v4-architecture.md μ μ€ (μμΈ μν€ν
μ² λ¬Έμ)| self-improving-agent | self-evolving-agent | |
|---|---|---|
| λ²μ | μΈμ 1κ° | 7μΌμΉ μ 체 μΈμ |
| νμ΄λ° | κ° μΈμ μ§ν μ€μκ° | λ§€μ£Ό μΌμμΌ |
| μΆλ ₯ | μΈμ νμ§ μ μ + κ΅ν | AGENTS.md diff μ μ |
| κ°μ | μ¦κ°μ νΌλλ°± | μμ€ν ν¨ν΄ λ°κ²¬ |
| v4.0 μ°λ | νμ§ μ€μ½μ΄ β λΆμ κ°μ€μΉ | μ§κ³ + λ²€μΉλ§ν¬ |
ν¨κ» μ°λ©΄: self-improvingμ΄ μΈμ νμ§ λ°μ΄ν°λ₯Ό μμ± β self-evolvingμ΄ μ§κ³ν΄μ μμ€ν μμ€ λ¬Έμ λ°κ²¬ + ν¨κ³Ό μΈ‘μ .