| name | loop-authoring |
| description | Create and run Agent Loops (LOOP.md) โ declare a goal, stop conditions, and independent verification, then let an agent iterate until verification passes. Use when the user wants something done "until it passes / ๋ ๋๊น์ง", wants to automate a recurring fix-and-verify task, asks to create, author, or run a LOOP.md / agent loop, or says ๋ฃจํ ๋ง๋ค์ด์ค, ๋ฐ๋ณต ์์
์๋ํ, ๋ ๋๊น์ง ๊ณ ์ณ์ค.
|
| license | Apache-2.0 |
| compatibility | ํ์ผ ๋๊ตฌ(read/write)์ ์
ธ ์คํ์ด ๊ฐ๋ฅํ ์ฝ๋ฉ ์์ด์ ํธ. Level 1 ์คํ์ Node.js โฅ 20 ํ์ |
Agent Loop ์ ์ยท์คํ ๊ฐ์ด๋
Agent Loop = "๋ชฉํ๋ฅผ, ๋
๋ฆฝ ๊ฒ์ฆ์ด ํต๊ณผํ ๋๊น์ง, ์ ์ธ๋ ํ๋ ์์์ ๋ฐ๋ณต ์๋ํ๋ผ"๋ ์ ์ธ ํ์ผ(LOOP.md).
๋น์ (์์ด์ ํธ)์ด ์ง์ผ์ผ ํ ๋จ ํ๋์ ํต์ฌ ์์น: ํ์ ์ ์ค์ง verify๊ฐ ํ๋ค. ๊ตฌํํ ์์ "๋ค ๋๋ค"๋ ๋ฌดํจ๋ค โ ๋น์ ์์ ์ ๊ฒ๋.
์ฌ์ฉ์๋ YAML์ ๋ชฐ๋ผ๋ ๋๋ค. ๋น์ ์ด ์ธํฐ๋ทฐํ๊ณ , ๋น์ ์ด ์์ฑํ๊ณ , ๋น์ ์ด ์คํ์ ์ค๋นํ๋ค.
1๋จ๊ณ โ ๋ชฉํ ํ์ (์ง๋ฌธ์ ํ ๋ฒ์, ์ฌ์ด ๋ง๋ก)
์ฌ์ฉ์์๊ฒ ์๋ 4๊ฐ์ง๋ฅผ ํ ๋ฒ์ ๋ฌผ์ด๋ผ. ๊ฐ ์ง๋ฌธ์ ํฉ๋ฆฌ์ ๊ธฐ๋ณธ๊ฐ์ ์ ์ํ๋ผ:
- ๋ฌด์์ด ๋ฌ์ฑ๋๋ฉด ๋์ธ๊ฐ์? (๊ฒ์ฆ ๊ฐ๋ฅํ ๋ฌธ์ฅ์ผ๋ก ์ ๋. ๋์ ์: "๋ฐฑ์
์ด ์ ๋๊ฒ" / ์ข์ ์: "๋ฐฑ์
๋ณต์ ํ
์คํธ ์คํฌ๋ฆฝํธ๊ฐ ์ฑ๊ณต ์ข
๋ฃ")
- ์ฑ๊ณต์ ๋ฌด์์ผ๋ก ํ์ ํ๋์? โ ์คํ ๊ฐ๋ฅํ ๋ช
๋ น ํ๋ (์:
npm test, ./scripts/verify-backup.sh). ์ข
๋ฃ ์ฝ๋ 0 = ์ฑ๊ณต. ๊ทธ๋ฐ ๋ช
๋ น์ด ์๋ค๋ฉด ํจ๊ป ๋ง๋ค์ด๋ผ โ ์ด๊ฒ์ด ๋ฃจํ ์ค๊ณ์ ์ง์ง ์์
์ด๋ค.
- ๊ทธ ํ์ ๋๊ตฌ(ํ
์คํธยท์คํฌ๋ฆฝํธยท๊ธฐ๋๊ฐ)๋ ์ด๋์ ์๋์? โ ์ด ๊ฒฝ๋ก๋ค์ด "ํ์ ์์ฐ"์ด ๋๋ค. ๋ฃจํ๊ฐ ์ ๋ ์์ ํ๋ฉด ์ ๋๋ ๊ฒ๋ค.
- ์ธ์ ํฌ๊ธฐํ ๊น์? โ ์ต๋ ๋ฐ๋ณต ํ์(๊ธฐ๋ณธ 15)์ ์๊ฐ(์ ํ). ๋ฌด์ธ ์คํ ์์ ์ด๋ฉด iteration๋น ์๊ฐ ์ํ๋(๊ธฐ๋ณธ 5m).
2๋จ๊ณ โ LOOP.md ์์ฑ
loops/<์ด๋ฆ>/ ๋๋ ํฐ๋ฆฌ ์์ฑ โ ์ด๋ฆ์ ์๋ฌธ์-ํ์ดํ, ๋๋ ํฐ๋ฆฌ๋ช
= name ํ๋ (ํ์ ๊ท์น).
- assets/LOOP.template.md๋ฅผ ๋ณต์ฌํด ์ธํฐ๋ทฐ ๋ต์ผ๋ก ์ฑ์๋ผ.
- ๊ณ ๊ธ ํ๋(stagnation, green-runs, progress-paths ๋ฑ)๋ ์ฌ์ฉ์์๊ฒ ๋ฌป์ง ๋ง๊ณ ๋น์ ์ด ํ๋จํด ์ฑ์๋ผ. ๊ธฐ๋ณธ๊ฐ๊ณผ ํ๋ ์ ์๋ references/fields.md ์ฐธ์กฐ.
- ๋ณธ๋ฌธ(์ด์ ์ง์นจ)์๋ ๋๋ฉ์ธ ํ์ 2~4์ค๋ก โ ๋น์ ์ด ์ด ์์
์ ์ง์ ํ๋ค๋ฉด ์๊ณ ์ถ์ ๊ฒ๋ค.
์์ฑ ํ ์๊ฐ ๊ฒ์ฌ: name=๋๋ ํฐ๋ฆฌ๋ช
? stop์ ์ํ(max-iterations ๋๋ max-duration) ์์? verify.assets ์ ์ธ๋จ? goal์ด verify๋ก ํ์ ๊ฐ๋ฅํ ๋ฌธ์ฅ?
3๋จ๊ณ โ ๊ฒ์ฆ๊ธฐ ์ํ
verify ๋ช
๋ น์ ์ง์ 1ํ ์คํํด ํ์ธํ๋ผ: ๋ช
๋ น์ด ์ค์ ๋ก ๋๊ณ , ํ์ฌ ์ํ์์ ์์๋๋ก ์คํจ(๋๋ ํต๊ณผ)ํ๋๊ฐ. ๊ฒ์ฆ๊ธฐ๊ฐ ์ ๋๋ ๋ฃจํ๋ ๋ฐฐํฌํ์ง ๋ง๋ผ.
4๋จ๊ณ โ ์คํ
๋ฌ๋๊ฐ ์์ผ๋ฉด (Level 1 โ ๊ฐ์ ์์, ๊ถ์ฅ): ์ ์ฅ์์ runtime/looprun/looprun.mjs๋ฅผ ์ฐพ์ ์คํํ๋ผ. ๊ตฌํ ์ฃผ์ฒด ์ด๋ํฐ๋ ์ค์น๋ CLI์ ๋ง์ถฐ:
node <repo>/runtime/looprun/looprun.mjs loops/<์ด๋ฆ> --target <์์
ํธ๋ฆฌ>
node <repo>/runtime/looprun/looprun.mjs loops/<์ด๋ฆ> --target <์์
ํธ๋ฆฌ> \
--implementer "codex exec --full-auto --skip-git-repo-check -"
๋ฌ๋๊ฐ ์์ผ๋ฉด (Level 0 โ ๊ฐ์ ์์, ๋น์ ์ด ๊ท์จ์ ๋์ ): ์ธ์
์์์ ์ง์ ๋ฃจํ๋ฅผ ๋๋ฆฌ๋ ๋ค์์ ์ง์ผ๋ผ โ โ iteration๋ง๋ค ํ ๋จ์ ์์
๋ง, โก ํ์ ์ ๋ฐ๋์ verify ๋ช
๋ น์ ์คํํด์(๋น์ ์ ํ๋จ์ผ๋ก ํต๊ณผ ์ ์ธ ๊ธ์ง), โข ํ์ ์์ฐ ์์ ๊ธ์ง, โฃ stop ์ํ์ ์ค์ค๋ก ์ธ๊ณ ๋๋ฌํ๋ฉด ๋ฉ์ถฐ ์ํ๋ฅผ ๋ณด๊ณ , โค ๋งค iteration์ ์๋ยทํ์ ๊ฒฐ๊ณผ๋ฅผ ํ์ผ(state/logs/manual.md)์ append. ์ฌ์ฉ์์๊ฒ "Level 0 ์คํ์ด๋ผ ๊ฐ์ ์ฅ์น๋ ์๋ค"๊ณ ๋ช
์ํ๋ผ.
5๋จ๊ณ โ ๋ณด๊ณ
์ข
๋ฃ ์ ์ฌ๋ ์ธ์ด๋ก: ์ํ(์๋ฃ/์ ์ฒด/์ํ ๋๋ฌ), ๋ช ํ ๋ง์, ๋ฌด์์ ๋ฐ๊ฟ์, ๋ก๊ทธ ์์น. JSONL์ ๋ค์ด๋ฐ์ง ๋ง๋ผ.
๊ธ์ง ์ฌํญ (์คํ์ ๋ถ๋ณ ๊ท์น)
goal๊ณผ verify๋ ๋ฃจํ ์์ฑ ํ ์๋ ์์ ๊ธ์ง โ ๋ฐ๊พธ๋ ค๋ฉด ์ธ๊ฐ์ ๋ช
์์ ์ง์ ํ์.
- ํ์ ์์ฐ์ ๊ณ ์ณ์ ํต๊ณผ์ํค๋ ๊ฒ์ ์ธ์ ๋ ๋ฐ์น์ด๋ค. ํต๊ณผ์ ์ ์ผํ ๊ฒฝ๋ก๋ ๋์์ ์ฌ๋ฐ๋ฅด๊ฒ ๊ณ ์น๋ ๊ฒ.
- ๋ฌด์ธ(์ค์ผ์ค) ์คํ์ ์ค์ ํ ๋๋ ๋ฐ๋์ budget์ด ์ ์ธ๋ ๋ฃจํ๋ง.
- ์ ์ฒด ๊ท๊ฒฉ์ด ํ์ํ๋ฉด ์ ์ฅ์์
spec/SPECIFICATION.md(Agent Loops v0.4)๋ฅผ ์ฝ์ด๋ผ.