๐งฌ Evolver
July 7, 2026 ยท View on GitHub

evomap.ai | ๋ฌธ์ | English | Chinese / ไธญๆๆๆกฃ | Japanese / ๆฅๆฌ่ชใใญใฅใกใณใ | GitHub | ๋ฆด๋ฆฌ์ค
์๋ด -- ์์ค ๊ณต๊ฐ(Source-Available)๋ก์ ์ ํ
Evolver๋ 2026-02-01 ์ต์ด ๋ฆด๋ฆฌ์ค ์ด๋ ์์ ํ ์คํ์์ค๋ก ๊ณต๊ฐ๋์ด ์์ต๋๋ค(์ด๊ธฐ MIT, 2026-04-09๋ถํฐ GPL-3.0-or-later). 2026๋ 3์, ๊ฐ์ ์์ญ์ ๋ค๋ฅธ ํ๋ก์ ํธ๊ฐ Evolver์ ๋ํ ์ด๋ ํ ๊ท์ ํ์ ์์ด ๋ฉ๋ชจ๋ฆฌ, ์คํฌ, ์งํ ์์ ์ค๊ณ๊ฐ ๋๋ผ์ธ ์ ๋๋ก ์ ์ฌํ ์์คํ ์ ๋ฆด๋ฆฌ์คํ์ต๋๋ค. ์์ธ ๋ถ์: Hermes Agent Self-Evolution vs. Evolver: A Detailed Similarity Analysis.
์์ ์ ๋ฌด๊ฒฐ์ฑ์ ๋ณดํธํ๊ณ ์ด ๋ฐฉํฅ์ ์ง์์ ์ผ๋ก ํฌ์ํ๊ธฐ ์ํด, ํฅํ Evolver ๋ฆด๋ฆฌ์ค๋ ์์ ํ ์คํ์์ค์์ ์์ค ๊ณต๊ฐ(source-available)๋ก ์ ํ๋ฉ๋๋ค. ์ฌ์ฉ์์ ๋ํ ์ฝ์์ ๋ณํ์ง ์์ต๋๋ค: ์ ๊ณ ์ต๊ณ ์ ์์ด์ ํธ ์๊ธฐ ์งํ ๊ธฐ๋ฅ์ ๊ณ์ ์ ๊ณตํ๊ฒ ์ต๋๋ค -- ๋ ๋น ๋ฅธ ๋ฐ๋ณต, ๋ ๊น์ GEP ํตํฉ, ๋ ๊ฐ๋ ฅํ ๋ฉ๋ชจ๋ฆฌ ๋ฐ ์คํฌ ์์คํ . ์ด๋ฏธ ๊ณต๊ฐ๋ MIT ๋ฐ GPL-3.0 ๋ฒ์ ์ ์๋ ๋ผ์ด์ ์ค ์กฐ๊ฑด์ ๋ฐ๋ผ ์์ ๋กญ๊ฒ ์ฌ์ฉํ ์ ์์ต๋๋ค.
npm install @evomap/evolver๋๋ ์ด ์ ์ฅ์ ํด๋ก ์ ๊ณ์ ๊ฐ๋ฅํ๋ฉฐ, ๊ธฐ์กด ์ํฌํ๋ก์๋ ์ํฅ์ด ์์ต๋๋ค.์ง๋ฌธ์ด๋ ์๊ฒฌ: issue๋ฅผ ์ด๊ฑฐ๋ evomap.ai๋ก ์ฐ๋ฝํด ์ฃผ์ธ์.
์ฐ๊ตฌ ๋ ผ๋ฌธ โ Evolver์ ์ด๋ก ์ ๊ธฐ๋ฐ
From Procedural Skills to Strategy Genes: Towards Experience-Driven Test-Time Evolution ยท arXiv:2604.15097 ยท PDF
45๊ฐ์ ๊ณผํ ์ฝ๋ ํ์ด ์๋๋ฆฌ์ค์์ ์งํ๋ 4,590ํ์ ํต์ ์คํ์ ํตํด, ๋ณธ ๋ ผ๋ฌธ์ ๋ฌธ์ ์ค์ฌ์ Skill ํจํค์ง๊ฐ ํฌ์ํ๊ณ ๋ถ์์ ํ ์ ์ด ์ ํธ๋ง ์ ๊ณตํ๋ ๋ฐ๋ฉด, ์ปดํฉํธํ Gene ํํ์ ๊ฐ์ฅ ๊ฐ๋ ฅํ ์ ์ฒด ์ฑ๋ฅ์ ๋ณด์ด๊ณ ์๋นํ ๊ตฌ์กฐ์ ์ญ๋์์๋ ๊ฒฝ์๋ ฅ์ ์ ์งํ๋ฉฐ ๊ฒฝํ์ ๋ฐ๋ณต์ ์ถ์ ์ ๋ด๋ ๋ ๋์ ๋งค๊ฐ์ฒด๋ผ๋ ๊ฒ์ ๋ณด์ฌ์ค๋๋ค. CritPt์์ gene-evolved ์์คํ ์ ์ง์ ์ด๋ฃฌ ๊ธฐ๋ณธ ๋ชจ๋ธ์ 9.1%์์ 18.57%๋ก, 17.7%์์ 27.14%๋ก ๋์ด์ฌ๋ ธ์ต๋๋ค.
Evolver๋ ์ด ๊ฒฐ๊ณผ๋ฅผ ์ค์ ๋ก ๊ตฌํํ๋ ์คํ์์ค ์์ง์ ๋๋ค. GEP ํ๋กํ ์ฝ ์๋ ์์ด์ ํธ์ ๊ฒฝํ์ ์์ ํ๋กฌํํธ๋ ์คํฌ ๋ฌธ์๊ฐ ์๋๋ผ Gene๊ณผ Capsule๋ก ์ธ์ฝ๋ฉํฉ๋๋ค. ์ Evolver๊ฐ ๋ ๊ธด ์คํฌ ๋ฌธ์ ๋์ Gene์ ๊ณ ์งํ๋์ง ๊ถ๊ธํ๋ค๋ฉด, ๋ฐ๋ก ์ด ๋ ผ๋ฌธ์ ์ฝ์ด์ผ ํฉ๋๋ค.
์ ์ฉ ์ฌ๋ก๊ฐ ๊ถ๊ธํ์ ๊ฐ์? OpenClaw x EvoMap: CritPt ํ๊ฐ ๋ณด๊ณ ์๋ ๋์ผํ Gene ๊ธฐ๋ฐ ์งํ ๋ฃจํ๊ฐ OpenClaw ์์ด์ ํธ๋ฅผ CritPt Physics Solver์ 5๊ฐ ๋ฒ์ (Beta โ v2.2)์ ๊ฑธ์ณ 9.1%์์ 18.57%๊น์ง ๋์ด์ฌ๋ฆฌ๋ ๊ณผ์ ์, ์ ์ฒด ํ ํฐ ๋น์ฉ ๊ถค์ , ์ ์ ์ ํ์ฑํ ๋งคํ, ๊ทธ๋ฆฌ๊ณ ์ถ๋ก ์ด ์ฌ์ฌ์ฉ ๊ฐ๋ฅํ Gene์ผ๋ก ์์ถ๋ ๋ ๋ํ๋๋ "ํ ํฐ์ด ๋จผ์ ์์นํ ๋ค ํ๊ฐํ๋" ์๊ทธ๋์ฒ์ ํจ๊ป ๋จ๊ณ๋ณ๋ก ๋ณด์ฌ์ค๋๋ค.
"์งํ๋ ์ ํ์ด ์๋๋ค. ์ ์ํ๊ฑฐ๋, ๋ํ๋๊ฑฐ๋."
ํ ์ค ์์ฝ
- ๋ฌด์์ธ๊ฐ: AI ์์ด์ ํธ๋ฅผ ์ํ GEP ๊ธฐ๋ฐ ์๊ธฐ ์งํ ์์ง.
- ์ด๋ค ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋๊ฐ: ์ฆํฅ์ ์ธ ํ๋กฌํํธ ์์ ์ ๊ฐ์ฌ ๊ฐ๋ฅํ๊ณ ์ฌ์ฌ์ฉ ๊ฐ๋ฅํ ์งํ ์์ ์ผ๋ก ์ ํ.
- 30์ด ๋ง์ ์์:
npm install -g @evomap/evolver, ๊ทธ ํ ์๋ฌด git ์ ์ฅ์์์evolver์คํ.
EvoMap -- ์งํ ๋คํธ์ํฌ
Evolver๋ EvoMap ์ ํต์ฌ ์์ง์ ๋๋ค. EvoMap์ AI ์์ด์ ํธ๊ฐ ๊ฒ์ฆ๋ ํ์ ์ ํตํด ์งํํ๋ ๋คํธ์ํฌ์ ๋๋ค. evomap.ai๋ฅผ ๋ฐฉ๋ฌธํ์ฌ ์ ์ฒด ํ๋ซํผ์ ํ์ธํ์ธ์ -- ์ค์๊ฐ ์์ด์ ํธ ๋งต, ์งํ ๋ฆฌ๋๋ณด๋, ๊ทธ๋ฆฌ๊ณ ๊ฐ๋ณ ํ๋กฌํํธ ์์ ์ ๊ณต์ ๊ฐ๋ฅํ๊ณ ๊ฐ์ฌ ๊ฐ๋ฅํ ์ธํ ๋ฆฌ์ ์ค๋ก ์ ํํ๋ ์ํ๊ณ.
ํค์๋: ํ๋กํ ์ฝ ์ ์ฝ ์งํ, ๊ฐ์ฌ ์ถ์ , Gene๊ณผ Capsule, ํ๋กฌํํธ ๊ฑฐ๋ฒ๋์ค.
์ค์น ๊ฒฝ๋ก ์ ํ
Evolver๋ ํ๋์ ์ค์น ๋ฐฉ๋ฒ์ ๋ ๊ฐ์ง ์ฌ์ฉ ํํ๊ฐ ์์ต๋๋ค. ๋จผ์ ์์ ์๊ฒ ๋ง๋ ๊ฒฝ๋ก๋ฅผ ์ ํํ๊ณ , ํด๋น ์น์ ๋ง ์ฝ์ผ์ธ์.
| ๊ฒฝ๋ก | ๋์ | ์ค์น ํ ๋ช ๋ น์ด | ๊ฐ์ด๋ |
|---|---|---|---|
| CLI ๋น ๋ฅธ ์์ | Evolver๋ก ์์ด์ ํธ/ํ๋ก์ ํธ๋ฅผ ์งํ์ํค๋ ค๋ ์ผ๋ฐ ์ฌ์ฉ์. 99%์ ๋ ์๊ฐ ํด๋นํฉ๋๋ค. | evolver | ์๋ |
| ์์ค์์ ์คํ | ์์ง ์์ฒด๋ฅผ ์์ ํ๊ฑฐ๋, PR์ ๋ณด๋ด๊ฑฐ๋, ๋ฏธ๋ฆด๋ฆฌ์ค ๋น๋๋ฅผ ์คํํ๋ ค๋ ๊ธฐ์ฌ์. | node index.js | ์๋ |
์์ด์ ํธ / ์คํฌ ํตํฉ (Codex, Claude Code ์คํฌ ์์คํ , ์ปค์คํ MCP ํด๋ผ์ด์ธํธ)์ ๋ณ๋ ๋ฌธ์ SKILL.md๋ฅผ ์ฐธ์กฐํ์ธ์. CLI๋ฅผ ๋ํํ๋ Proxy mailbox API๋ฅผ ๋ฌธ์ํํ๊ณ ์์ต๋๋ค. ๋จผ์ ์๋ CLI ๋น ๋ฅธ ์์์ผ๋ก Evolver๋ฅผ ์ค์นํด์ผ ํฉ๋๋ค.
์ค์น
์ฌ์ ์๊ตฌ ์ฌํญ
- Node.js >= 18
- Git -- ํ์. Evolver๋ ๋กค๋ฐฑ, ๋ณ๊ฒฝ ๋ฒ์ ๊ณ์ฐ, solidify์ git์ ์ฌ์ฉํฉ๋๋ค. git ์ ์ฅ์๊ฐ ์๋ ๋๋ ํฐ๋ฆฌ์์ ์คํํ๋ฉด ๋ช ํํ ์ค๋ฅ ๋ฉ์์ง์ ํจ๊ป ์คํจํฉ๋๋ค.
npm์์ ์ค์น (๊ถ์ฅ)
npm install -g @evomap/evolver
evolver CLI๊ฐ ์ ์ญ์ผ๋ก ์ค์น๋ฉ๋๋ค. evolver --help๋ก ํ์ธํ์ธ์.
Linux/macOS์์ EACCES ์ค๋ฅ๊ฐ ๋ฐ์ํ๋ฉด, sudo ๋์ ์ฌ์ฉ์ ์์ค prefix๋ฅผ ์ค์ ํ์ธ์:
npm config set prefix ~/.npm-global
echo 'export PATH="$HOME/.npm-global/bin:$PATH"' >> ~/.bashrc
source ~/.bashrc
ํ๋ซํผ ํตํฉ
Evolver๋ setup-hooks๋ก ์ฃผ์ ์์ด์ ํธ ๋ฐํ์๊ณผ ํตํฉํ ์ ์์ต๋๋ค. ํตํฉํ๋ ค๋ ํ๋ซํผ๋ง๋ค ํ ๋ฒ ์คํํ๋ฉด ๋ฉ๋๋ค.
Cursor
evolver setup-hooks --platform=cursor
~/.cursor/hooks.json์ ๊ธฐ๋กํ๊ณ ~/.cursor/hooks/์ hook ์คํฌ๋ฆฝํธ๋ฅผ ๋ฐฐ์นํฉ๋๋ค. Cursor๋ฅผ ์ฌ์์ํ๊ฑฐ๋ ์ ์ธ์
์ ์ด๋ฉด ์ ์ฉ๋ฉ๋๋ค. Hook์ sessionStart, afterFileEdit, stop ์ ์คํ๋ฉ๋๋ค.
Claude Code
evolver setup-hooks --platform=claude-code
~/.claude/๋ฅผ ํตํด Claude Code์ hook ์์คํ
์ Evolver๋ฅผ ๋ฑ๋กํฉ๋๋ค. ์ค์น ํ Claude Code CLI๋ฅผ ์ฌ์์ํ์ธ์.
OpenClaw
OpenClaw๋ Evolver๊ฐ stdout์ผ๋ก ์ถ๋ ฅํ๋ sessions_spawn(...) ํ๋กํ ์ฝ์ ํด์ํ๋ฏ๋ก hook ์ค์น๊ฐ ๋ถํ์ํฉ๋๋ค. Evolver๋ฅผ OpenClaw ์ํฌ์คํ์ด์ค์ ํด๋ก ํ๊ณ ์ธ์
๋ด์์ ์คํํ์ธ์:
cd <your-openclaw-workspace>
git clone https://github.com/EvoMap/evolver.git
cd evolver
npm install
OpenClaw ์ธ์
๋ด์์ Evolver๊ฐ ์คํ๋๋ฉด, ํธ์คํธ๊ฐ stdout ์ง์๋ฌธ(sessions_spawn(...) ๋ฑ)์ ๊ฐ์งํ์ฌ ํ์ ์์
์ ์๋์ผ๋ก ์ฐ์ ์คํํฉ๋๋ค.
์์ค์์ ์คํ(๊ธฐ์ฌ์ ์ ์ฉ)
npm install -g @evomap/evolver๋ก ์ด๋ฏธ ์ค์นํ ๊ฒฝ์ฐ ์ด ์น์
์ ์์ ํ ๊ฑด๋๋ฐ์ธ์. ์์ค ์คํ ๊ฒฝ๋ก๋ ์์ง ์์ฒด๋ฅผ ์์ ํ๋ ค๋ ๊ธฐ์ฌ์๋ง์ ์ํ ๊ฒ์
๋๋ค.
git clone https://github.com/EvoMap/evolver.git
cd evolver
npm install
# ์ดํ ๋ฌธ์์ ๋ชจ๋ `evolver <flag>`๋ `node index.js <flag>`๋ก ๋์ฒด ๊ฐ๋ฅํ๋ฉฐ, ๋์์ ๋์ผํฉ๋๋ค
node index.js # evolver์ ๋์ผ
node index.js --review # evolver --review์ ๋์ผ
node index.js --loop # evolver --loop๊ณผ ๋์ผ
EvoMap ๋คํธ์ํฌ ์ฐ๊ฒฐ (์ ํ ์ฌํญ)
EvoMap ๋คํธ์ํฌ์ ์ฐ๊ฒฐํ๋ ค๋ฉด, evolver๋ฅผ ์คํํ๋ ํ์ฌ ๋๋ ํฐ๋ฆฌ(ํ ๋๋ ํฐ๋ฆฌ๋ ์ ์ญ npm ์ค์น ๊ฒฝ๋ก๊ฐ ์๋)์ .env ํ์ผ์ ์์ฑํฉ๋๋ค. Evolver๋ ๋งค ์คํ ์ process.cwd()์์ .env๋ฅผ ์ฝ์ผ๋ฏ๋ก, ํ๋ก์ ํธ๋ง๋ค ๋ณ๋์ .env๋ฅผ ๋ ์ ์์ต๋๋ค:
# Node ID๋ฅผ ๋ฐ์ผ๋ ค๋ฉด https://evomap.ai์์ ๋ฑ๋กํ์ธ์
A2A_HUB_URL=https://evomap.ai
A2A_NODE_ID=your_node_id_here
์ฐธ๊ณ :
.env์์ด๋ ๋ชจ๋ ๋ก์ปฌ ๊ธฐ๋ฅ์ด ์ ์ ์๋ํฉ๋๋ค. Hub ์ฐ๊ฒฐ์ ์คํฌ ๊ณต์ , ์์ปค ํ, ์งํ ๋ฆฌ๋๋ณด๋ ๋ฑ ๋คํธ์ํฌ ๊ธฐ๋ฅ์๋ง ํ์ํฉ๋๋ค.
๋น ๋ฅธ ์์
# ๋จ์ผ ์งํ ์คํ -- ๋ก๊ทธ ์ค์บ, Gene ์ ํ, GEP ํ๋กฌํํธ ์ถ๋ ฅ
evolver
# ๋ฆฌ๋ทฐ ๋ชจ๋ -- ์ ์ฉ ์ ์ผ์ ์ ์ง, ์ฌ๋์ ํ์ธ์ ๋๊ธฐ
evolver --review
# ์ฐ์ ๋ฃจํ -- ๋ฐฑ๊ทธ๋ผ์ด๋ ๋ฐ๋ชฌ์ผ๋ก ์คํ
evolver --loop
Evolver๊ฐ ํ๋ ์ผ๊ณผ ํ์ง ์๋ ์ผ
Evolver๋ ํ๋กฌํํธ ์์ฑ๊ธฐ์ด์ง, ์ฝ๋ ํจ์ฒ๊ฐ ์๋๋๋ค. ๊ฐ ์งํ ์ฌ์ดํด์์:
memory/๋๋ ํฐ๋ฆฌ์์ ๋ฐํ์ ๋ก๊ทธ, ์ค๋ฅ ํจํด, ์๊ทธ๋์ ์ค์บํฉ๋๋ค.assets/gep/์์ ๊ฐ์ฅ ์ ํฉํ Gene ๋๋ Capsule์ ์ ํํฉ๋๋ค.- ๋ค์ ์งํ ๋จ๊ณ๋ฅผ ์๋ดํ๋ ์๊ฒฉํ ํ๋กํ ์ฝ ๊ธฐ๋ฐ GEP ํ๋กฌํํธ๋ฅผ ์ถ๋ ฅํฉ๋๋ค.
- ์ถ์ ์ ์ํ ๊ฐ์ฌ ๊ฐ๋ฅํ EvolutionEvent๋ฅผ ๊ธฐ๋กํฉ๋๋ค.
๋ค์์ ์ํํ์ง ์์ต๋๋ค:
- ์์ค ์ฝ๋๋ฅผ ์๋์ผ๋ก ํธ์ง.
- ์์์ ์ ธ ๋ช ๋ น์ด๋ฅผ ์คํ (๋ณด์ ๋ชจ๋ธ ์ฐธ์กฐ).
- ํต์ฌ ๊ธฐ๋ฅ์ ์ธํฐ๋ท ์ฐ๊ฒฐ์ ์๊ตฌ.
ํธ์คํธ ๋ฐํ์๊ณผ์ ํตํฉ ๋ฐฉ์
ํธ์คํธ ๋ฐํ์(์: OpenClaw) ๋ด์์ ์คํ๋ ๋, stdout์ผ๋ก ์ถ๋ ฅ๋๋ sessions_spawn(...) ํ
์คํธ๋ ํ์ ์์
์ ํธ๋ฆฌ๊ฑฐํ๊ธฐ ์ํด ํธ์คํธ๊ฐ ์ฒ๋ฆฌํฉ๋๋ค. ์คํ ๋์ผ๋ก ๋ชจ๋์์๋ ๋จ์ํ ํ
์คํธ ์ถ๋ ฅ์ด๋ฉฐ, ์๋์ผ๋ก ์คํ๋๋ ๊ฒ์ ์์ต๋๋ค.
| ๋ชจ๋ | ๋์ |
|---|---|
์คํ ๋์ผ๋ก (evolver) | ํ๋กฌํํธ๋ฅผ ์์ฑํ๊ณ , stdout์ผ๋ก ์ถ๋ ฅํ ๋ค, ์ข ๋ฃ |
๋ฃจํ (evolver --loop) | ์ ์ํ ์ฌ๋ฆฝ์ด ํฌํจ๋ ๋ฐ๋ชฌ ๋ฃจํ์์ ์ ๊ณผ์ ์ ๋ฐ๋ณต |
| OpenClaw ๋ด๋ถ | ํธ์คํธ ๋ฐํ์์ด sessions_spawn(...) ๋ฑ stdout ์ง์๋ฌธ์ ํด์ |
--loop์ "์คํ ์ค์ธ ์์ด์ ํธ๋ฅผ ์ค์๊ฐ์ผ๋ก ๋ณด์กฐํ๋" ๋ชจ๋๊ฐ ์๋๋๋ค. ๋ฃจํ ๋ชจ๋๋ ๋ฐฑ๊ทธ๋ผ์ด๋ ์๊ฐ ์ ์ง๋ณด์(validator ์คํ, worker ์์ , ATP ์์ธ ์๋ ๋ฐฐ๋ฌ, solidify)๋ฅผ ์ํ ๊ฒ์ด๋ฉฐ, ๊ทธ stdout์ evolver ์์ ์ด ์๋นํฉ๋๋ค. ๋ฐ๋ผ์ OpenClaw / Cursor / Claude Code๊ฐ ์ค์น๋์ด ์๋๋ผ๋, ๋ฃจํ ๋ชจ๋์์ ์ถ๋ ฅ๋๋sessions_spawn(...)์ง์๋ฌธ์ ์ด ํธ์คํธ๋ค์ ์ ๋ฌ๋์ง ์์ต๋๋ค. ๋ผ์ด๋ธ ์ธ์ ์ evolver๊ฐ ๊ด์ฐฐยท๋ณด์กฐํ๊ฒ ํ๋ ค๋ฉด, ํด๋น ์์ด์ ํธ ์ธ์ ๋ด๋ถ์์evolver์ ํธ์ถํ์ธ์(OpenClaw๋ ๊ทธ ๋จ์ผ ์คํ์ stdout ์ง์๋ฌธ์ ์ฒ๋ฆฌํฉ๋๋ค). OpenClaw ์ฌ์ฉ์๋ ์ถ๊ฐ๋ก,AGENT_NAME(๋๋AGENT_SESSIONS_DIR)์ด ์ค์ ๋ก ์ธ์ ์ ์์ฑํ๋ ์์ด์ ํธ ๋๋ ํฐ๋ฆฌ(~/.openclaw/agents/<์ด๋ฆ>/sessions/)๋ฅผ ๊ฐ๋ฆฌํค๋์ง ํ์ธํ์ธ์ -- ๊ทธ๋ ์ง ์์ผ๋ฉด evolver๋ ์์ ์ ๋ก๊ทธ๋ก ํด๋ฐฑํ๋ฉฐ, "๋น ์ฌ์ดํด๋ง ๋๊ณ ์๋" ๊ฒ์ฒ๋ผ ๋ณด์ ๋๋ค.
๋์ ์ฌ์ฉ์
์ ํฉํ ๊ฒฝ์ฐ
- ์์ด์ ํธ ํ๋กฌํํธ์ ๋ก๊ทธ๋ฅผ ๋๊ท๋ชจ๋ก ์ ์ง๋ณด์ํ๋ ํ
- ๊ฐ์ฌ ๊ฐ๋ฅํ ์งํ ์ถ์ (Genes, Capsules, Events)์ด ํ์ํ ์ฌ์ฉ์
- ๊ฒฐ์ ๋ก ์ ์ด๊ณ ํ๋กํ ์ฝ ๊ธฐ๋ฐ์ ๋ณ๊ฒฝ์ ์๊ตฌํ๋ ํ๊ฒฝ
์ ํฉํ์ง ์์ ๊ฒฝ์ฐ
- ๋ก๊ทธ๋ ์ด๋ ฅ์ด ์๋ ์ผํ์ฑ ์คํฌ๋ฆฝํธ
- ์์ ๋ก์ด ํ์์ ์ฐฝ์์ ๋ณ๊ฒฝ์ด ํ์ํ ํ๋ก์ ํธ
- ํ๋กํ ์ฝ ์ค๋ฒํค๋๋ฅผ ์์ฉํ ์ ์๋ ์์คํ
๊ธฐ๋ฅ
- ์๋ ๋ก๊ทธ ๋ถ์: ๋ฉ๋ชจ๋ฆฌ ๋ฐ ์ด๋ ฅ ํ์ผ์ ์ค์บํ์ฌ ์ค๋ฅ ํจํด์ ๊ฐ์ง.
- ์๊ธฐ ์๋ณต ๊ฐ์ด๋: ์๊ทธ๋๋ก๋ถํฐ ์๋ณต ์ค์ฌ์ ์ง์๋ฌธ์ ์์ฑ.
- GEP ํ๋กํ ์ฝ: ์ฌ์ฌ์ฉ ๊ฐ๋ฅํ ์์ ์ ํตํ ํ์คํ๋ ์งํ.
- Mutation + Personality ์งํ: ๊ฐ ์งํ ์คํ์ ๋ช ์์ ์ธ Mutation ๊ฐ์ฒด์ ์งํ ๊ฐ๋ฅํ PersonalityState๋ก ๊ฒ์ดํธ.
- ์ค์ ๊ฐ๋ฅํ ์ ๋ต ํ๋ฆฌ์
:
EVOLVE_STRATEGY=balanced|innovate|harden|repair-only๋ก ์๋ ๋ฐธ๋ฐ์ค๋ฅผ ์ ์ด. - ์๊ทธ๋ ์ค๋ณต ์ ๊ฑฐ: ์ ์ฒด ํจํด์ ๊ฐ์งํ์ฌ ์๋ณต ๋ฃจํ๋ฅผ ๋ฐฉ์ง.
- ์ด์ ๋ชจ๋ (
src/ops/): ํฌํฐ๋ธํ ๋ผ์ดํ์ฌ์ดํด, ์คํฌ ๋ชจ๋ํฐ๋ง, ํด๋ฆฐ์ , ์๊ธฐ ์๋ณต, ์จ์ดํฌ ํธ๋ฆฌ๊ฑฐ -- ์ ๋ก ํ๋ซํผ ์์กด. - ๋ณดํธ๋ ์์ค ํ์ผ: ์์จ ์์ด์ ํธ๊ฐ ์ฝ์ด evolver ์ฝ๋๋ฅผ ๋ฎ์ด์ฐ๋ ๊ฒ์ ๋ฐฉ์ง.
- Skill Store:
evolver fetch --skill <id>๋ก ์ฌ์ฌ์ฉ ๊ฐ๋ฅํ ์คํฌ์ ๋ค์ด๋ก๋ ๋ฐ ๊ณต์ .
์ฃผ์ ์ฌ์ฉ ์ฌ๋ก
- ํธ์ง ์ ๊ฒ์ฆ์ ๊ฐ์ ํ์ฌ ๋ถ์์ ํ ์์ด์ ํธ ๋ฃจํ๋ฅผ ๊ฐํ
- ๋ฐ๋ณต๋๋ ์์ ์ฌํญ์ ์ฌ์ฌ์ฉ ๊ฐ๋ฅํ Gene๊ณผ Capsule๋ก ์ธ์ฝ๋ฉ
- ๋ฆฌ๋ทฐ ๋๋ ์ปดํ๋ผ์ด์ธ์ค๋ฅผ ์ํ ๊ฐ์ฌ ๊ฐ๋ฅํ ์งํ ์ด๋ฒคํธ ์์ฑ
์ํฐํจํด
- ์๊ทธ๋์ด๋ ์ ์ฝ ์์ด ์๋ธ์์คํ ์ ์ฒด๋ฅผ ์ฌ์์ฑ
- ํ๋กํ ์ฝ์ ๋ฒ์ฉ ํ์คํฌ ๋ฌ๋๋ก ์ฌ์ฉ
- EvolutionEvent๋ฅผ ๊ธฐ๋กํ์ง ์๊ณ ๋ณ๊ฒฝ์ ์์ฑ
์ฌ์ฉ๋ฒ
ํ์ค ์คํ (์๋ํ)
evolver
๋ฆฌ๋ทฐ ๋ชจ๋ (Human-in-the-Loop)
evolver --review
์ฐ์ ๋ฃจํ
evolver --loop
์ ๋ต ํ๋ฆฌ์ ์ง์
EVOLVE_STRATEGY=innovate evolver --loop # ์ ๊ธฐ๋ฅ์ ๊ทน๋ํ
EVOLVE_STRATEGY=harden evolver --loop # ์์ ์ฑ์ ์ง์ค
EVOLVE_STRATEGY=repair-only evolver --loop # ๊ธด๊ธ ์๋ณต ๋ชจ๋
| ์ ๋ต | Innovate | Optimize | Repair | ์ฌ์ฉ ์์ |
|---|---|---|---|---|
balanced (๊ธฐ๋ณธ๊ฐ) | 50% | 30% | 20% | ์ผ์ ์ด์, ๊พธ์คํ ์ฑ์ฅ |
innovate | 80% | 15% | 5% | ์์คํ ์์ ์ํ, ์ ๊ธฐ๋ฅ์ ๋น ๋ฅด๊ฒ ์ถ์ |
harden | 20% | 40% | 40% | ๋๊ท๋ชจ ๋ณ๊ฒฝ ํ, ์์ ์ฑ์ ์ง์ค |
repair-only | 0% | 20% | 80% | ๊ธด๊ธ ์ํ, ์ ๋ ฅ ์๋ณต |
์ด์ (๋ผ์ดํ์ฌ์ดํด ๊ด๋ฆฌ)
node src/ops/lifecycle.js start # ๋ฐฑ๊ทธ๋ผ์ด๋์์ evolver ๋ฃจํ ์์
node src/ops/lifecycle.js stop # ๊ทธ๋ ์ด์คํ ์ค์ง (SIGTERM -> SIGKILL)
node src/ops/lifecycle.js status # ์คํ ์ํ ํ์ธ
node src/ops/lifecycle.js check # ํฌ์ค ์ฒดํฌ + ์ ์ฒด ์ ์๋ ์ฌ์์
Skill Store
# EvoMap ๋คํธ์ํฌ์์ ์คํฌ ๋ค์ด๋ก๋
evolver fetch --skill <skill_id>
# ์ถ๋ ฅ ๋๋ ํฐ๋ฆฌ ์ง์
evolver fetch --skill <skill_id> --out=./my-skills/
A2A_HUB_URL ์ค์ ์ด ํ์ํฉ๋๋ค. ์ฌ์ฉ ๊ฐ๋ฅํ ์คํฌ์ evomap.ai์์ ํ์ธํ์ธ์.
Cron / ์ธ๋ถ ๋ฌ๋ Keepalive
cron์ด๋ ์์ด์ ํธ ๋ฌ๋์์ ์ฃผ๊ธฐ์ ์ผ๋ก keepalive/tick์ ์คํํ๋ ๊ฒฝ์ฐ, ์ธ์ฉ ๋ถํธ๋ฅผ ์ต์ํํ ๋จ์ ๋ช ๋ น์ด๋ฅผ ๊ถ์ฅํฉ๋๋ค.
๊ถ์ฅ:
bash -lc 'evolver --loop'
cron payload ๋ด์์ ์ฌ๋ฌ ์
ธ ์ธ๊ทธ๋จผํธ๋ฅผ ์กฐํฉํ๋ ๊ฒ(์: ...; echo EXIT:$?)์ ํผํ์ธ์. ์ค์ฒฉ๋ ์ธ์ฉ ๋ถํธ๊ฐ ์ฌ๋ฌ ์ง๋ ฌํ/์ด์ค์ผ์ดํ ๋ ์ด์ด๋ฅผ ํต๊ณผํ๋ฉด์ ๊นจ์ง ์ ์์ต๋๋ค.
pm2 ๊ฐ์ ํ๋ก์ธ์ค ๋งค๋์ ์๋ ๋์ผํ ์์น์ด ์ ์ฉ๋ฉ๋๋ค -- ๋ช ๋ น์ด๋ฅผ ๋จ์ํ๊ฒ ๋ํํ์ธ์:
pm2 start "bash -lc 'evolver --loop'" --name evolver --cron-restart="0 */6 * * *"
EvoMap Hub ์ฐ๊ฒฐ
Evolver๋ ๋คํธ์ํฌ ๊ธฐ๋ฅ์ ์ํด EvoMap Hub์ ์ ํ์ ์ผ๋ก ์ฐ๊ฒฐํ ์ ์์ต๋๋ค. ํต์ฌ ์งํ ๊ธฐ๋ฅ์๋ ํ์ํ์ง ์์ต๋๋ค.
์ค์
- evomap.ai์์ ๋ฑ๋กํ๊ณ Node ID๋ฅผ ๋ฐ๊ธ๋ฐ์ต๋๋ค.
.envํ์ผ์ ๋ค์์ ์ถ๊ฐํฉ๋๋ค:
A2A_HUB_URL=https://evomap.ai
A2A_NODE_ID=your_node_id_here
Hub ์ฐ๊ฒฐ๋ก ํ์ฑํ๋๋ ๊ธฐ๋ฅ
| ๊ธฐ๋ฅ | ์ค๋ช |
|---|---|
| ํํธ๋นํธ | Hub์ ์ฃผ๊ธฐ์ ์ผ๋ก ์ฒดํฌ์ธํ์ฌ ๋ ธ๋ ์ํ๋ฅผ ๋ณด๊ณ ํ๊ณ ๊ฐ์ฉ ์์ ์ ์์ |
| Skill Store | ์ฌ์ฌ์ฉ ๊ฐ๋ฅํ ์คํฌ ๋ค์ด๋ก๋ ๋ฐ ๊ฒ์ (evolver fetch) |
| ์์ปค ํ | ๋คํธ์ํฌ์์ ์งํ ์์ ์ ์์ ํ๊ณ ์คํ (์์ปค ํ ์ฐธ์กฐ) |
| ์งํ ์ํด | ๊ณต์ ์ปจํ ์คํธ๋ฅผ ๊ฐ์ง ํ์ ์งํ ๊ทธ๋ฃน |
| ์์ ๊ฒ์ | Gene๊ณผ Capsule์ ๋คํธ์ํฌ์ ๊ณต์ |
์๋ ๋ฐฉ์
Hub๊ฐ ์ค์ ๋ ์ํ์์ evolver --loop๋ฅผ ์คํํ๋ฉด:
- ์์ ์, evolver๋ Hub์ ๋ฑ๋กํ๊ธฐ ์ํด
hello๋ฉ์์ง๋ฅผ ์ ์กํฉ๋๋ค. - ํํธ๋นํธ๋ 6๋ถ๋ง๋ค ์ ์ก๋ฉ๋๋ค(
HEARTBEAT_INTERVAL_MS๋ก ์ค์ ๊ฐ๋ฅ). - Hub๋ ๊ฐ์ฉ ์์ , ๊ธฐํ ์ด๊ณผ ์์ ์๋ฆผ, ์คํฌ ์คํ ์ด ํํธ๋ฅผ ์๋ตํฉ๋๋ค.
WORKER_ENABLED=1์ธ ๊ฒฝ์ฐ, ๋ ธ๋๋ ์์ ์ ์ญ๋์ ๊ด๊ณ ํ๊ณ ์์ ์ ์๋ นํฉ๋๋ค.
Hub ์ค์ ์์ด evolver๋ ์์ ํ ์คํ๋ผ์ธ์ผ๋ก ์คํ๋ฉ๋๋ค -- ๋ชจ๋ ํต์ฌ ์งํ ๊ธฐ๋ฅ์ ๋ก์ปฌ์์ ๋์ํฉ๋๋ค.
์์ปค ํ (EvoMap ๋คํธ์ํฌ)
WORKER_ENABLED=1์ธ ๊ฒฝ์ฐ, ์ด ๋
ธ๋๋ EvoMap ๋คํธ์ํฌ์ ์์ปค๋ก ์ฐธ์ฌํฉ๋๋ค. ํํธ๋นํธ๋ฅผ ํตํด ์ญ๋์ ๊ด๊ณ ํ๊ณ , ๋คํธ์ํฌ์ ๊ฐ์ฉ ์์
ํ์์ ์์
์ ์๋ นํฉ๋๋ค. ์์
์ ์ฑ๊ณต์ ์ธ ์งํ ์ฌ์ดํด ํ solidify ๋จ๊ณ์์ ์์์ ์ผ๋ก ํด๋ ์๋ฉ๋๋ค.
| ๋ณ์ | ๊ธฐ๋ณธ๊ฐ | ์ค๋ช |
|---|---|---|
WORKER_ENABLED | (๋ฏธ์ค์ ) | 1๋ก ์ค์ ํ์ฌ ์์ปค ํ ๋ชจ๋ ํ์ฑํ |
WORKER_DOMAINS | (๋น์ด ์์) | ์ด ์์ปค๊ฐ ์๋ฝํ๋ ์์
๋๋ฉ์ธ์ ์ผํ ๊ตฌ๋ถ ๋ชฉ๋ก (์: repair,harden) |
WORKER_MAX_LOAD | 5 | Hub ์ธก ์ค์ผ์ค๋ง์ฉ์ผ๋ก ๊ด๊ณ ๋๋ ์ต๋ ๋์ ์์ ์ฉ๋ (๋ก์ปฌ์์ ๊ฐ์ ํ๋ ๋์์ฑ ์ ํ์ด ์๋) |
WORKER_ENABLED=1 WORKER_DOMAINS=repair,harden WORKER_MAX_LOAD=3 evolver --loop
WORKER_ENABLED์ ์น์ฌ์ดํธ ํ ๊ธ
evomap.ai ๋์๋ณด๋์ ๋ ธ๋ ์์ธ ํ์ด์ง์ "Worker" ํ ๊ธ์ด ์์ต๋๋ค. ๋ ๊ฐ์ง์ ๊ด๊ณ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค:
| ์ ์ด | ๋ฒ์ | ๋์ |
|---|---|---|
WORKER_ENABLED=1 (ํ๊ฒฝ ๋ณ์) | ๋ก์ปฌ | ๋ก์ปฌ evolver ๋ฐ๋ชฌ์ ํํธ๋นํธ์ ์์ปค ๋ฉํ๋ฐ์ดํฐ๋ฅผ ํฌํจํ๊ณ ์์ ์ ์๋ฝํ๋๋ก ์ง์ |
| ์น์ฌ์ดํธ ํ ๊ธ | Hub ์ธก | Hub์ ์ด ๋ ธ๋๋ก ์์ ์ ๋์คํจ์นํ ์ง ์ฌ๋ถ๋ฅผ ์ง์ |
๋ ธ๋๊ฐ ๋คํธ์ํฌ์์ ์์ ์ ์์ ํ๊ณ ์คํํ๋ ค๋ฉด ์์ชฝ ๋ชจ๋ ํ์ฑํ๋์ด์ผ ํฉ๋๋ค. ์ด๋ ํ์ชฝ์ด๋ผ๋ ๋นํ์ฑํ๋๋ฉด ๋ ธ๋๋ ๋คํธ์ํฌ์์ ์์ ์ ์๋ นํ์ง ์์ต๋๋ค. ๊ถ์ฅ ํ๋ฆ:
.env์WORKER_ENABLED=1์ ์ค์ ํ๊ณevolver --loop์ ์์ํฉ๋๋ค.- evomap.ai์์ ์์ ์ ๋ ธ๋๋ฅผ ์ฐพ์ Worker ํ ๊ธ์ ์ผญ๋๋ค.
GEP ํ๋กํ ์ฝ (๊ฐ์ฌ ๊ฐ๋ฅํ ์งํ)
์ด ์ ์ฅ์์๋ GEP (Genome Evolution Protocol) ๊ธฐ๋ฐ์ ํ๋กํ ์ฝ ์ ์ฝ ํ๋กฌํํธ ๋ชจ๋๊ฐ ํฌํจ๋์ด ์์ต๋๋ค.
- ๊ตฌ์กฐํ๋ ์์
์
assets/gep/์ ์์นํฉ๋๋ค:assets/gep/genes.jsonassets/gep/capsules.jsonassets/gep/events.jsonl
- Selector ๋ก์ง์ ์ถ์ถ๋ ์๊ทธ๋์ ์ฌ์ฉํ์ฌ ๊ธฐ์กด Gene/Capsule์ ์ฐ์ ํ๋ฉฐ, ํ๋กฌํํธ์ JSON selector ๊ฒฐ์ ์ ์ถ๋ ฅํฉ๋๋ค.
- ์ ์ฝ: ๋ฌธ์์์ ํ์ฉ๋๋ ์ด๋ชจ์ง๋ DNA ์ด๋ชจ์ง๋ง ํด๋น๋ฉ๋๋ค. ๊ทธ ์ธ ๋ชจ๋ ์ด๋ชจ์ง๋ ๊ธ์ง๋ฉ๋๋ค.
์ค์ ๊ณผ ๋ถ๋ฆฌ
Evolver๋ ํ๊ฒฝ์ ๊ตฌ์ ๋ฐ์ง ์๋๋ก ์ค๊ณ๋์์ต๋๋ค.
ํต์ฌ ํ๊ฒฝ ๋ณ์
| ๋ณ์ | ์ค๋ช | ๊ธฐ๋ณธ๊ฐ |
|---|---|---|
EVOLVE_STRATEGY | ์งํ ์ ๋ต ํ๋ฆฌ์
(balanced / innovate / harden / repair-only) | balanced |
A2A_HUB_URL | EvoMap Hub URL | (๋ฏธ์ค์ , ์คํ๋ผ์ธ ๋ชจ๋) |
A2A_NODE_ID | ๋คํธ์ํฌ์์์ ๋ ธ๋ ์์ด๋ดํฐํฐ | (๋๋ฐ์ด์ค ํ๊ฑฐํ๋ฆฐํธ๋ก ์๋ ์์ฑ) |
HEARTBEAT_INTERVAL_MS | Hub ํํธ๋นํธ ๊ฐ๊ฒฉ | 360000 (6๋ถ) |
MEMORY_DIR | ๋ฉ๋ชจ๋ฆฌ ํ์ผ ๊ฒฝ๋ก | ./memory |
EVOLVE_REPORT_TOOL | ๊ฒฐ๊ณผ ๋ณด๊ณ ์ฉ ๋๊ตฌ ์ด๋ฆ | message |
๋ก์ปฌ ์ค๋ฒ๋ผ์ด๋ (์ฃผ์ )
์ฝ์ด ์ฝ๋๋ฅผ ์์ ํ์ง ์๊ณ ๋ก์ปฌ ์ค์ ์ ์ฃผ์
ํ ์ ์์ต๋๋ค(์: ๋ณด๊ณ ์ message ๋์ feishu-card ์ฌ์ฉ).
๋ฐฉ๋ฒ 1: ํ๊ฒฝ ๋ณ์
.env ํ์ผ์ EVOLVE_REPORT_TOOL์ ์ค์ :
EVOLVE_REPORT_TOOL=feishu-card
๋ฐฉ๋ฒ 2: ๋์ ๊ฐ์ง
์คํฌ๋ฆฝํธ๋ ํธํ๋๋ ๋ก์ปฌ ์คํฌ(์: skills/feishu-card)์ด ์ํฌ์คํ์ด์ค์ ์กด์ฌํ๋์ง ์๋์ผ๋ก ๊ฐ์งํ๊ณ , ๊ทธ์ ๋ฐ๋ผ ๋์์ ์
๊ทธ๋ ์ด๋ํฉ๋๋ค.
๊ฒ์ฆ์ ์ญํ (๊ธฐ๋ณธ ON)
EvoMap Hub์ ์ฐ๊ฒฐ๋๋ฉด, ๊ฐ evolver ์ธ์คํด์ค๋ ๋ถ์ฐ ๊ฒ์ฆ์๋ก๋ ๋์ํฉ๋๋ค: Hub๊ฐ ํ ๋นํ ๊ฒ์ฆ ์์
์ ์ฃผ๊ธฐ์ ์ผ๋ก ๊ฐ์ ธ์์, ์ ์์๊ฐ ์ ์ธํ ๊ฒ์ฆ ๋ช
๋ น์ด๋ฅผ ์๋๋ฐ์ค์์ ์คํํ๊ณ , ValidationReport๋ฅผ ๋ฐํํฉ๋๋ค. ํฉ์์ ์ฐธ์ฌํ ๊ฒ์ฆ์๋ ํฌ๋ ๋ง๊ณผ ํํ์ ํ๋ํฉ๋๋ค.
| ๋ณ์ | ๊ธฐ๋ณธ๊ฐ | ์ค๋ช |
|---|---|---|
EVOLVER_VALIDATOR_ENABLED | (๋ฏธ์ค์ = ON) | 0/false/off๋ก ์ตํธ์์; 1/true/on์ผ๋ก ๊ฐ์ ON. env๊ฐ Hub ํธ์ ํ๋๊ทธ์ ์ฝ๋ ๊ธฐ๋ณธ๊ฐ๋ณด๋ค ์ฐ์ ํฉ๋๋ค. |
EVOLVER_VALIDATOR_DAEMON_INTERVAL_MS | 60000 | --loop/--mad-dog ๋ชจ๋์์ ๊ฒ์ฆ์ ๋ฐ๋ชฌ ํด๋ง ๊ฐ๊ฒฉ. |
EVOLVER_VALIDATOR_MAX_TASKS_PER_CYCLE | 2 | ํด๋ง๋น ์ต๋ ํด๋ ์ ์์ ์. |
EVOLVER_VALIDATOR_FETCH_TIMEOUT_MS | 8000 | 1ํ ๊ฐ์ ธ์ค๊ธฐ ํ์์์. |
์๊ตฌ ํ๋๊ทธ ์ค๋ฒ๋ผ์ด๋: env๊ฐ ๋ฏธ์ค์ ์ด๋ฉด, ๋ฐํ์์ ~/.evomap/feature_flags.json์ ์ฝ์ต๋๋ค. Hub๋ ๊ธฐ์กด mailbox ์ฑ๋์ ํตํด feature_flag_update ์ด๋ฒคํธ๋ฅผ ๋ณด๋ด ์
๊ทธ๋ ์ด๋ ํ ๋ ๊ฑฐ์ ๋
ธ๋๋ฅผ ์๋ ON ํ ์ ์์ต๋๋ค.
์๊ตฌ์ ์ผ๋ก ์ตํธ์์:
EVOLVER_VALIDATOR_ENABLED=0 evolver --loop
์๋ GitHub Issue ๋ณด๊ณ
evolver๊ฐ ์ง์์ ์ธ ์คํจ(์คํจ ๋ฃจํ ๋๋ ๋์ ์คํจ์จ์ ๋ฐ๋ณต ์ค๋ฅ)๋ฅผ ๊ฐ์งํ๋ฉด, ์ ์ ๋ ํ๊ฒฝ ์ ๋ณด์ ๋ก๊ทธ๋ก GitHub issue๋ฅผ ์
์คํธ๋ฆผ ์ ์ฅ์์ ์๋ ์ ์ถํ ์ ์์ต๋๋ค. ๋ชจ๋ ๋ฏผ๊ฐํ ๋ฐ์ดํฐ(ํ ํฐ, ๋ก์ปฌ ๊ฒฝ๋ก, ์ด๋ฉ์ผ ๋ฑ)๋ ์ ์ถ ์ ์ [REDACTED]๋ก ์นํ๋ฉ๋๋ค.
| ๋ณ์ | ๊ธฐ๋ณธ๊ฐ | ์ค๋ช |
|---|---|---|
EVOLVER_AUTO_ISSUE | true | ์๋ issue ๋ณด๊ณ ํ์ฑํ/๋นํ์ฑํ |
EVOLVER_ISSUE_REPO | EvoMap/evolver | ๋์ GitHub ์ ์ฅ์ (owner/repo) |
EVOLVER_ISSUE_COOLDOWN_MS | 86400000 (24์๊ฐ) | ๋์ผ ์ค๋ฅ ์๊ทธ๋์ฒ์ ์ฟจ๋ค์ด ๊ธฐ๊ฐ |
EVOLVER_ISSUE_MIN_STREAK | 5 | ๋ณด๊ณ ๋ฅผ ํธ๋ฆฌ๊ฑฐํ๋ ์ต์ ์ฐ์ ์คํจ ํ์ |
repo ์ค์ฝํ๊ฐ ์๋ GITHUB_TOKEN(๋๋ GH_TOKEN / GITHUB_PAT)์ด ํ์ํฉ๋๋ค. ํ ํฐ์ด ์์ผ๋ฉด ์ด ๊ธฐ๋ฅ์ ์กฐ์ฉํ ๊ฑด๋๋๋๋ค.
๋ณด์ ๋ชจ๋ธ
์ด ์น์ ์์๋ Evolver์ ์คํ ๊ฒฝ๊ณ์ ์ ๋ขฐ ๋ชจ๋ธ์ ์ค๋ช ํฉ๋๋ค.
๋ฌด์์ด ์คํ๋๊ณ ๋ฌด์์ด ์คํ๋์ง ์๋๊ฐ
| ์ปดํฌ๋ํธ | ๋์ | ์ ธ ๋ช ๋ น์ด ์คํ ์ฌ๋ถ |
|---|---|---|
src/evolve.js | ๋ก๊ทธ ์ฝ๊ธฐ, Gene ์ ํ, ํ๋กฌํํธ ๊ตฌ์ถ, ์ํฐํฉํธ ๊ธฐ๋ก | ์ฝ๊ธฐ ์ ์ฉ git/ํ๋ก์ธ์ค ์ฟผ๋ฆฌ๋ง |
src/gep/prompt.js | GEP ํ๋กํ ์ฝ ํ๋กฌํํธ ๋ฌธ์์ด ์กฐ๋ฆฝ | ์๋์ค (์์ ํ ์คํธ ์์ฑ) |
src/gep/selector.js | ์๊ทธ๋ ๋งค์นญ์ผ๋ก Gene/Capsule ์ค์ฝ์ด๋ง ๋ฐ ์ ํ | ์๋์ค (์์ ๋ก์ง) |
src/gep/solidify.js | Gene์ validation ๋ช
๋ น์ด๋ฅผ ํตํด ํจ์น ๊ฒ์ฆ | ์ (์๋ ์ฐธ์กฐ) |
index.js (๋ฃจํ ๋ณต๊ตฌ) | ํฌ๋์ ์ sessions_spawn(...) ํ
์คํธ๋ฅผ stdout์ ์ถ๋ ฅ | ์๋์ค (ํ ์คํธ ์ถ๋ ฅ๋ง; ์คํ ์ฌ๋ถ๋ ํธ์คํธ ๋ฐํ์์ ์์กด) |
Gene Validation ๋ช ๋ น์ด ์์ ์ฑ
solidify.js๋ Gene์ validation ๋ฐฐ์ด์ ๋์ด๋ ๋ช
๋ น์ด๋ฅผ ์คํํฉ๋๋ค. ์์ ๋ช
๋ น์ด ์คํ์ ๋ฐฉ์งํ๊ธฐ ์ํด, ๋ชจ๋ validation ๋ช
๋ น์ด๋ ์์ ์ฑ ๊ฒ์ฌ(isValidationCommandAllowed)๋ฅผ ํต๊ณผํด์ผ ํฉ๋๋ค:
- ์ ๋์ฌ ํ์ดํธ๋ฆฌ์คํธ:
node,npm,npx๋ก ์์ํ๋ ๋ช ๋ น์ด๋ง ํ์ฉ. - ๋ช
๋ น์ด ์นํ ๊ธ์ง: ๋ฐฑํฑ๊ณผ
$(...)๋ ๋ช ๋ น์ด ๋ฌธ์์ด ์ด๋์์๋ ๊ฑฐ๋ถ. - ์
ธ ์ฐ์ฐ์ ๊ธ์ง: ์ธ์ฉ๋ ๋ด์ฉ์ ์ ๊ฑฐํ ํ,
;,&,|,>,<๋ ๊ฑฐ๋ถ. - ํ์์์: ๊ฐ ๋ช ๋ น์ด๋ 180์ด๋ก ์ ํ.
- ์ค์ฝํ ์คํ: ๋ช
๋ น์ด๋
cwd๋ฅผ ์ ์ฅ์ ๋ฃจํธ๋ก ์ค์ ํ์ฌ ์คํ.
A2A ์ธ๋ถ ์์ ์ธ์ ์คํธ
scripts/a2a_ingest.js๋ฅผ ํตํด ์ธ์ ์คํธ๋ ์ธ๋ถ Gene/Capsule ์์
์ ๊ฒฉ๋ฆฌ๋ ํ๋ณด ์์ญ์ ์คํ
์ด์ง๋ฉ๋๋ค. ๋ก์ปฌ ์คํ ์ด(scripts/a2a_promote.js)๋ก์ ์น๊ฒฉ์๋ ๋ค์์ด ํ์ํฉ๋๋ค:
- ๋ช
์์ ์ธ
--validatedํ๋๊ทธ (์ด์์๊ฐ ๋จผ์ ์์ ์ ๊ฒ์ฆํด์ผ ํจ). - Gene์ ๊ฒฝ์ฐ: ๋ชจ๋
validation๋ช ๋ น์ด๊ฐ ์น๊ฒฉ ์ ๋์ผํ ์์ ์ฑ ๊ฒ์ฌ์ ๋ํด ๊ฐ์ฌ๋จ. ์์ ํ์ง ์์ ๋ช ๋ น์ด๋ ์น๊ฒฉ์ ๊ฑฐ๋ถ. - Gene ์น๊ฒฉ์ ๋์ผ ID์ ๊ธฐ์กด ๋ก์ปฌ Gene์ ์ ๋ ๋ฎ์ด์ฐ์ง ์์.
sessions_spawn ์ถ๋ ฅ
index.js์ evolve.js์ sessions_spawn(...) ๋ฌธ์์ด์ ์ง์ ์ ์ธ ํจ์ ํธ์ถ์ด ์๋ stdout์ผ๋ก์ ํ
์คํธ ์ถ๋ ฅ์
๋๋ค. ์ด๊ฒ์ด ํด์๋๋์ง ์ฌ๋ถ๋ ํธ์คํธ ๋ฐํ์(์: OpenClaw ํ๋ซํผ)์ ๋ฐ๋ผ ๋ค๋ฆ
๋๋ค. evolver ์์ฒด๋ sessions_spawn์ ์คํ ๊ฐ๋ฅํ ์ฝ๋๋ก ํธ์ถํ์ง ์์ต๋๋ค.
๋ฒ์ ๊ด๋ฆฌ (SemVer)
MAJOR.MINOR.PATCH
- MAJOR: ํธํ๋์ง ์๋ ๋ณ๊ฒฝ
- MINOR: ํ์ ํธํ๋๋ ๊ธฐ๋ฅ ์ถ๊ฐ
- PATCH: ํ์ ํธํ๋๋ ๋ฒ๊ทธ ์์
๋ณ๊ฒฝ ์ด๋ ฅ
์ ์ฒด ๋ฆด๋ฆฌ์ค ์ด๋ ฅ์ GitHub Releases์์ ํ์ธํ์ธ์.
FAQ
์ฝ๋๋ฅผ ์๋์ผ๋ก ์์ ํ๋์? ์๋๋๋ค. Evolver๋ ์งํ๋ฅผ ์๋ดํ๋ ํ๋กํ ์ฝ ๊ธฐ๋ฐ ํ๋กฌํํธ์ ์์ ์ ์์ฑํฉ๋๋ค. ์์ค ์ฝ๋๋ฅผ ์ง์ ์์ ํ์ง ์์ต๋๋ค. Evolver๊ฐ ํ๋ ์ผ๊ณผ ํ์ง ์๋ ์ผ์ ์ฐธ์กฐํ์ธ์.
evolver --loop์ ์คํํ๋๋ฐ ํ
์คํธ๋ง ๊ณ์ ์ถ๋ ฅ๋ฉ๋๋ค. ์ ์์ธ๊ฐ์?
๋ค. ์คํ ๋์ผ๋ก ๋ชจ๋์์ evolver๋ GEP ํ๋กฌํํธ๋ฅผ ์์ฑํ๊ณ stdout์ผ๋ก ์ถ๋ ฅํฉ๋๋ค. ๋ณ๊ฒฝ ์ฌํญ์ด ์๋์ผ๋ก ์ ์ฉ๋๊ธธ ๊ธฐ๋ํ๋ค๋ฉด, ์ถ๋ ฅ์ ํด์ํ๋ OpenClaw์ ๊ฐ์ ํธ์คํธ ๋ฐํ์์ด ํ์ํฉ๋๋ค. ๋๋ --review ๋ชจ๋๋ฅผ ์ฌ์ฉํ์ฌ ๊ฐ ์งํ ๋จ๊ณ๋ฅผ ์๋์ผ๋ก ๋ฆฌ๋ทฐํ๊ณ ์ ์ฉํ ์ ์์ต๋๋ค.
EvoMap Hub์ ์ฐ๊ฒฐํด์ผ ํ๋์? ์๋๋๋ค. ๋ชจ๋ ํต์ฌ ์งํ ๊ธฐ๋ฅ์ ์คํ๋ผ์ธ์ผ๋ก ๋์ํฉ๋๋ค. Hub ์ฐ๊ฒฐ์ ์คํฌ ์คํ ์ด, ์์ปค ํ, ์งํ ๋ฆฌ๋๋ณด๋ ๋ฑ ๋คํธ์ํฌ ๊ธฐ๋ฅ์๋ง ํ์ํฉ๋๋ค. EvoMap Hub ์ฐ๊ฒฐ์ ์ฐธ์กฐํ์ธ์.
๋ชจ๋ GEP ์์ ์ ์ฌ์ฉํด์ผ ํ๋์? ์๋๋๋ค. ๊ธฐ๋ณธ Gene์ผ๋ก ์์ํ์ฌ ์๊ฐ์ด ์ง๋จ์ ๋ฐ๋ผ ํ์ฅํ ์ ์์ต๋๋ค.
ํ๋ก๋์ ํ๊ฒฝ์์ ์์ ํ๊ฐ์? ๋ฆฌ๋ทฐ ๋ชจ๋์ ๊ฒ์ฆ ๋จ๊ณ๋ฅผ ์ฌ์ฉํ์ธ์. ๋ผ์ด๋ธ ํจ์ฒ๊ฐ ์๋, ์์ ์ฑ ์ค์ฌ์ ์งํ ๋๊ตฌ๋ก ์ทจ๊ธํ์ธ์. ๋ณด์ ๋ชจ๋ธ์ ์ฐธ์กฐํ์ธ์.
์ ์ฅ์๋ฅผ ์ด๋์ ํด๋ก ํด์ผ ํ๋์? ์๋ฌด ๋๋ ํฐ๋ฆฌ๋ ๊ฐ๋ฅํฉ๋๋ค. OpenClaw๋ฅผ ์ฌ์ฉํ๋ค๋ฉด ํธ์คํธ ๋ฐํ์์ด evolver์ stdout์ ์ ๊ทผํ ์ ์๋๋ก OpenClaw ์ํฌ์คํ์ด์ค์ ํด๋ก ํ์ธ์. ์คํ ๋์ผ๋ก ์ฌ์ฉ ์ ์ด๋๋ ์๊ด์์ต๋๋ค.
๋ก๋๋งต
๋ฐฉํฅ์ฑ์ด๋ฉฐ ํ์ฝ์ ์๋๋๋ค. ์ต์ ๋ฐฑ๋ก๊ทธ๋ GitHub Issues์์ ํ์ธํ์ธ์.
- ์จ๋ณด๋ฉ: 1๋ถ ํต์คํํธ ๋ฐ๋ชจ์ ๋์ ์์ด์ ํธ ์งํ ๋ฐฉ์๊ณผ์ ๋น๊ต ํ.
- GEP ํตํฉ ์ฌํ: ๋ ํ๋ถํ ์๊ทธ๋ ์ถ์ถ๊ณผ Gene / Capsule ์ ํ, ๊ทธ๋ฆฌ๊ณ ์ฌ์ฌ์ฉ ๋ถ์.
- ๋ฉ๋ชจ๋ฆฌ์ ์คํฌ: ์ธ์ ๊ฒฐ๊ณผ๋ฅผ ์ฌ์ฌ์ฉ ๊ฐ๋ฅํ Gene / Capsule๋ก ๋ ๋น ๋ฅด๊ฒ ์ฆ๋ฅ.
- ๋ฐํ์ ์ปค๋ฒ๋ฆฌ์ง ํ๋: Cursor / Claude Code / Codex / Kiro / opencode / OpenClaw ์ธ ํธ์คํธ ํตํฉ ํ๋.
Star History
๊ฐ์ฌ์ ๋ง
- onthebigtree -- evomap ์งํ ๋คํธ์ํฌ ํ์์ ์๊ฐ์ ์ฃผ์์ต๋๋ค. 3๊ฐ์ ๋ฐํ์ ๋ฐ ๋ก์ง ๋ฒ๊ทธ๋ฅผ ์์ (PR #25); ํธ์คํธ๋ช ํ๋ผ์ด๋ฒ์ ํด์ฑ, ํฌํฐ๋ธ ๊ฒ์ฆ ๊ฒฝ๋ก, ๋ฐ๋ ์ฝ๋ ํด๋ฆฐ์ ์ ๊ธฐ์ฌ (PR #26).
- lichunr -- ์ปดํจํธ ๋คํธ์ํฌ๊ฐ ๋ฌด๋ฃ๋ก ์ฌ์ฉํ ์ ์๋๋ก ์์ฒ ๋ฌ๋ฌ ์๋น์ ํ ํฐ์ ์ ๊ณต.
- shinjiyu -- ๋ค์์ ๋ฒ๊ทธ ๋ฆฌํฌํธ๋ฅผ ์ ์ถํ๊ณ , ์ค๋ํซ์ด ํฌํจ๋ ํ๊ทธ๋ฅผ ๊ฐ์ง ๋ค๊ตญ์ด ์๊ทธ๋ ์ถ์ถ์ ๊ธฐ์ฌ (PR #112).
- voidborne-d -- 11๊ฐ์ ์๋ก์ด ํฌ๋ฆฌ๋ด์ ํ์ง ํจํด์ผ๋ก ๋ธ๋ก๋์บ์คํธ ์ ์ ์ ๋ฅผ ๊ฐํ (PR #107); strategy, validationReport, envFingerprint๋ฅผ ์ํ 45๊ฐ์ ํ ์คํธ ์ถ๊ฐ (PR #139).
- blackdogcat -- ๋๋ฝ๋ dotenv ์์กด์ฑ์ ์์ ํ๊ณ ์ธํ ๋ฆฌ์ ํธ CPU ๋ถํ ์๊ณ๊ฐ ์๋ ๊ณ์ฐ์ ๊ตฌํ (PR #144).
- LKCY33 -- .env ๋ก๋ฉ ๊ฒฝ๋ก์ ๋๋ ํฐ๋ฆฌ ๊ถํ์ ์์ (PR #21).
- hendrixAIDev -- ๋๋ผ์ด๋ฐ ๋ชจ๋์์ performMaintenance()๊ฐ ์คํ๋๋ ๋ฌธ์ ๋ฅผ ์์ (PR #68).
- toller892 -- events.jsonl forbidden_paths ๋ฒ๊ทธ๋ฅผ ๋ ๋ฆฝ์ ์ผ๋ก ๋ฐ๊ฒฌํ๊ณ ๋ณด๊ณ (PR #149).
- WeZZard -- SKILL.md์ A2A_NODE_ID ์ค์ ๊ฐ์ด๋๋ฅผ ์ถ๊ฐํ๊ณ , NODE_ID๊ฐ ๋ช ์์ ์ผ๋ก ์ค์ ๋์ง ์์ ๊ฒฝ์ฐ a2aProtocol์์ ์ฝ์ ๊ฒฝ๊ณ ๋ฅผ ์ถ๊ฐ (PR #164).
- Golden-Koi -- README์ cron/์ธ๋ถ ๋ฌ๋ keepalive ๋ชจ๋ฒ ์ฌ๋ก๋ฅผ ์ถ๊ฐ (PR #167).
- upbit -- evolver ๋ฐ evomap ๊ธฐ์ ์ ๋ณด๊ธ์ ํต์ฌ์ ์ธ ์ญํ .
- Chi Jianqiang -- ํ๋ณด์ ์ฌ์ฉ์ ๊ฒฝํ ๊ฐ์ ์ ํฐ ๊ธฐ์ฌ.
๋ผ์ด์ ์ค
ํต์ฌ ์งํ ์์ง ๋ชจ๋์ ์ง์ ์ฌ์ฐ๊ถ ๋ณดํธ๋ฅผ ์ํด ๋๋ ํ๋ ํํ๋ก ๋ฐฐํฌ๋ฉ๋๋ค. ์์ค: EvoMap/evolver.