โฏ โโโโโโโโโโโ โฏ
โฏ โโโโโโโโโโโ โฏ
์ธ ๊ฐ์ ๋๋, ํ๋์ ์ปจํ ์คํธ.
Claude Code ยท Codex ยท Gemini CLI ์ธ AI ์์ด์ ํธ๋ฅผ ๊ณต์ ์ปจํ ์คํธ, ๋ผ์ด๋ ๊ธฐ๋ฐ ํ ๋ก , ์ง๋ฅํ ์์ ๋ถ๋ฐฐ๋ก ํตํฉํ๋ ๋ฉํฐ ์์ด์ ํธ AI ์ค์ผ์คํธ๋ ์ดํฐ.
English ยท ๋น ๋ฅธ ์์ ยท ์ Trinity์ธ๊ฐ ยท ์๋ ์๋ฆฌ ยท TUI ยท ๋ช ๋ น์ด ยท ์ํคํ ์ฒ
Trinity๋ ์๋ก ๋ค๋ฅธ ์ญํ ์ ๊ฐ์ง ์ธ ๊ฐ์ง AI ์ฝ๋ฉ ์์ด์ ํธ๋ฅผ ํ๋์ ๊ฐ๋ ฅํ ํ์ ์ง๋ฅ์ผ๋ก ํตํฉํฉ๋๋ค.
๋จ ํ๋์ AI์๊ฒ ๋ชจ๋ ์์ ์ ์ผ์ํ๋ ๊ธฐ์กด ๋ฐฉ์์์ ๋ฒ์ด๋, Trinity๋ Claude(์ค๊ณ์), Codex(๊ตฌํ์), Gemini(๊ฒํ ์) ๊ฐ์ ๊ตฌ์กฐํ๋ ํ ๋ก ๊ณผ ํฉ์๋ฅผ ์ง๋ฅ์ ์ผ๋ก ์กฐ์จํฉ๋๋ค. ์ธ ์์ด์ ํธ๋ ํ๋์ ์ปจํ ์คํธ๋ฅผ ๊ณต์ ํ๋ฉฐ ๋ผ์ด๋๋ณ๋ก ์๊ฒฌ์ ๋๋๊ณ , ์ต์ข ํฉ์์ ๋๋ฌํ๋ฉด ๊ฐ์์ ํนํ ๋ถ์ผ์ ๋ง๊ฒ ์์ ์ ์๋์ผ๋ก ๋ถ๋ฐฐํ์ฌ ์ฒ๋ฆฌํฉ๋๋ค.
๋จ์ผ ์์ด์ ํธ AI๋ ๊ฐ๋ ฅํ์ง๋ง, ๋ช ๊ฐ์ง ์น๋ช ์ ์ธ ๋งน์ ์ด ์์ต๋๋ค.
| ๋ฌธ์ ์ ํ | ๋จ์ผ AI ํ๊ฒฝ์์ ๋ฐ์ํ๋ ํ์ | Trinity์ ํด๊ฒฐ ๋ฐฉ์ |
|---|---|---|
| ํฐ๋ ๋น์ (์์ผ ํ์ฐฉ) | ํ๋์ AI๊ฐ ์ค์ง ํ ๊ฐ์ง ์ ๊ทผ ๋ฐฉ์์๋ง ๊ฐํ ์๊ฐํฉ๋๋ค. | ์ธ ์์ด์ ํธ๊ฐ ์ต์ข ๊ฒฐ์ ์ ๋ด๋ฆฌ๊ธฐ ์ ์ ๋ค๊ฐ๋์์ ๋์์ ํ ๋ก ํฉ๋๋ค. |
| ํผ์ด ๋ฆฌ๋ทฐ(Peer Review) ๋ถ์ฌ | ์ค๊ณ์ ๊ฒฐํจ์ด๋ ์ ์ฌ์ ๋ฒ๊ทธ๊ฐ ๊ฒ์ฆ ์์ด ๋ฐ๋ก ํต๊ณผ๋์ด ๋ฐ์๋ฉ๋๋ค. | Gemini๊ฐ Claude์ ์ด๊ธฐ ์ค๊ณ์์ ์ ๋ฐํ๊ฒ ๊ฒํ ํ๊ณ ๋ณด์์ฑ ์ ์๊ตฌํฉ๋๋ค. |
| ์ปจํ ์คํธ ๋จ์ (์ ์ค) | ๊ฐ ์์ด์ ํธ๊ฐ ์๋ก ๋ถ๋ฆฌ๋ ํ๊ฒฝ์์ ๊ณ ๋ฆฝ๋์ด ์์ ํด ๋๊ธฐํ๊ฐ ๊นจ์ง๋๋ค. | ๋จ์ผ ๊ณต์ ์ปจํ ์คํธ ํ์ผ์ ํตํด ๋ชจ๋ ์์ด์ ํธ๊ฐ ์ผ๊ด๋ ๊ฐ๋ฐ ๋งฅ๋ฝ์ ์ค์๊ฐ ์ ์งํฉ๋๋ค. |
| ์ผ๊ด๋์ง ๋ชปํ ํ์ง | ๊ฒฐ๊ณผ๋ฌผ์ ์์ฑ๋๊ฐ ๋จ์ผ ๋ชจ๋ธ์ ํ๊ณ๋ ์ปจ๋์ ์ ์ ์ ์ผ๋ก ์์กดํฉ๋๋ค. | ๋ค์๊ฒฐ ํฉ์(Consensus) ๋ฉ์ปค๋์ฆ์ ๋์ ํ์ฌ ์ํธ ๊ต์ฐจ ๊ฒ์ฆ๋ ํ์ง๋ง์ ๋ณด์ฅํฉ๋๋ค. |
| ์๋ ์์ ์์ | ์ด๋ค ์์ด์ ํธ์๊ฒ ์ด๋ค ํ์ ์์ ์ ๋งก๊ธธ์ง ์ฌ์ฉ์๊ฐ ๋งค๋ฒ ์ง์ ์ง์ ํด์ผ ํฉ๋๋ค. | ๊ฐ ์์ด์ ํธ์ ๊ฐ์ ๊ณผ ์ญํ ์ ๋ง์ถฐ ํ์ ์์ ์ด ์์คํ ์ ์ผ๋ก ์๋ ๋ถ๋ฐฐ๋ฉ๋๋ค. |
pip install trinity-agent# ๋ํํ ์ค์ ๋ง๋ฒ์ฌ ์คํ โ ์์คํ
์ ์ค์น๋ AI CLI๋ฅผ ์๋์ผ๋ก ํ์ํฉ๋๋ค
trinity init
# ๋น๋ํํ ์คํ (๊ธฐ๋ณธ ์ค์ ๊ฐ ์ ์ฉ)
trinity init --non-interactive# ๋จ๋ฐ์ฑ(One-shot) ์ง์ ์คํ
trinity ask "์ธ์ฆ ์์คํ
์ํคํ
์ฒ๋ฅผ ์ค๊ณํด์ค"
# ๋ํํ TUI ๋ชจ๋ ์คํ (์์ด์ ํธ ๊ฐ ์ค์๊ฐ ํ ๋ก ๊ด์ ๋ฐ ์ฐธ์ฌ)
trinityTrinity๊ฐ ๋ฐฑ๊ทธ๋ผ์ด๋์์ ๋ค์ ๋จ๊ณ๋ฅผ ์๋์ผ๋ก ์ํํฉ๋๋ค:
- ๐ ํธ์คํธ ์์คํ ์ ์ค์น๋ AI CLI ์๋ ํ์ (Claude Code, Codex, Gemini CLI ๋ฑ)
- ๐ง ์ฌ์ฉ ๊ฐ๋ฅํ ์์ด์ ํธ๋ค์ ์์งํ์ฌ ๋ผ์ด๋ ๊ธฐ๋ฐ์ ์ฌ์ธต ํ ๋ก (Deliberation) ์์
- ๐ ์์ด์ ํธ ๊ฐ์ ํฉ์ ๋์ถ ๊ณผ์ , ์์ ๋ถ๋ฐฐ ๊ฒฐ๊ณผ, ์ถ๋ก ๊ณผ์ ์ ์๋ฆ๋ค์ด TUI๋ก ์๊ฐํ
โโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโ
โ ๐๏ธ Claude โ โ โ๏ธ Codex โ โ ๐ Gemini โ
โ (์ค๊ณ์) โ โ (๊ตฌํ์) โ โ (๊ฒํ ์) โ
โโโโโโโโโฌโโโโโโโโ โโโโโโโโโฌโโโโโโโโ โโโโโโโโโฌโโโโโโโโ
โ โ โ
โโโโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโโโ
โ
โโโโโโโโโโดโโโโโโโโโ
โ ์ค์ผ์คํธ๋ ์ดํฐ โ
โ ๊ณต์ ์ปจํ
์คํธ โ
โ ํฉ์ ์์ง โ
โ ์์
๋ถ๋ฐฐ๊ธฐ โ
โโโโโโโโโโโโโโโโโโโ
| ๋จ๊ณ | ์ํ ํญ๋ชฉ ๋ฐ ๋์ ์ค๋ช |
|---|---|
| ์ด๊ธฐํ (Initialize) | ์ต์ข
๋ชฉํ์ ์ฐธ๊ฐ ์์ด์ ํธ ๋ชฉ๋ก์ ๋ด์ ๊ณต์ ์ปจํ
์คํธ ํ์ผ(shared.md)์ ์์ฑํฉ๋๋ค. |
| 1๋ผ์ด๋ (Round 1) | ๊ฐ ์์ด์ ํธ๊ฐ ์ฌ์ฉ์์ ์์ฒญ์ ๋ถ์ํ๊ณ ์ด์ ๋ํ ์ด๊ธฐ ์๊ฒฌ ๋ฐ ์ค๊ณ์์ ๊ณต์ ์ปจํ ์คํธ์ ์ ์ํฉ๋๋ค. |
| 2๋ผ์ด๋ ์ด์ (Round 2+) | ๋ค๋ฅธ ์์ด์ ํธ๋ค์ ์ ์์ ์ํธ ๊ฒํ ํ์ฌ ๋์/๋น๋์๋ฅผ ํ๋ช ํ๊ณ , ํ์ ์ ๋ ๋์ ๋์์ ์ ์ํฉ๋๋ค. |
| ํฉ์ ๋๋ฌ (Consensus) | ์ ์ฒด ์์ด์ ํธ ์ค 60% ์ด์์ด ๋์ํ๋ ์์ ์ ์ต์ข ํฉ์์์ ํ์ ํฉ๋๋ค. |
| ์์ ๋ถ๋ฐฐ (Distribute) | ํ์ ๋ ์์ ๋ค์ ๊ฐ ์์ด์ ํธ์ **ํนํ๋ ๋ถ์ผ(๊ฐ์ )**์ ๋ง์ถฐ ์๋์ผ๋ก ํ ๋นํ๊ณ ์ฒ๋ฆฌํฉ๋๋ค. |
| ์์ด์ ํธ | ์ง์ ์ญํ | ์ฃผ์ ์์ ๋ฐ ๊ฐ์ ๋ถ์ผ |
|---|---|---|
| ๐๏ธ Claude | ์ค๊ณ์ (Architect) | ์ ์ฒด ์ํคํ ์ฒ ๋ฐ ์์คํ ์ค๊ณ, ์ค๊ณ ๊ฒํ (์ฝ๋ ๋ฆฌ๋ทฐ), ๋ณต์กํ ๋น์ฆ๋์ค ๋ก์ง ์ค๊ณ, ๊ฐ๋ฐ ๊ธฐํ |
| โ๏ธ Codex | ๊ตฌํ์ (Implementer) | ์ค์ ์ฝ๋ ๊ตฌํ ๋ฐ ํ๋กํ ํ์ดํ, ์ฝ๋ ๋ฆฌํฉํ ๋ง, ๋จ์ ํ ์คํธ ์ฝ๋ ์์ฑ |
| ๐ Gemini | ๊ฒํ ์ (Reviewer) | ์ฝ๋ ๋์ ๊ฒ์ฆ, ๊ธฐ์ ์คํ ์ฐ๊ตฌ, ๋์ ํ์, ๊ฒฝ๊ณ ์กฐ๊ฑด(Edge Case) ๋ถ์, ํ์ง ๋ณด์ฆ(QA) |
Trinity๋ **Rich ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๊ธฐ๋ฐ์ ๋ฏธ๋ คํ ํฐ๋ฏธ๋ UI(TUI)**๋ฅผ ์ ๊ณตํ์ฌ, ์์ด์ ํธ ๊ฐ์ ์ค์๊ฐ ํ ๋ก ๊ณผ์ ์ ์๊ฐ์ ์ผ๋ก ๋ณด์ฌ์ค๋๋ค.
๐ง Trinity v0.3.0 โ ์ธ ๊ฐ์ ๋๋, ํ๋์ ์ปจํ
์คํธ
๐๏ธ claude โ
โ๏ธ codex โ
๐ gemini โ
๐ ์์ด์ ํธ ์ํ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ ๐๏ธ claude ์ค๊ณ์ โ
์๋ต ์๋ฃ 12% pytest ์ถ์ฒ... โ
โ โ๏ธ codex ๊ตฌํ์ โ
์๋ต ์๋ฃ 8% ๋์ํจ... โ
โ ๐ gemini ๊ฒํ ์ โ
์๋ต ์๋ฃ 15% ๋์ ์ ์... โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
๐ฌ ํ ๋ก ์งํ ํํฉ
โโโ 1๋ผ์ด๋ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ
claude (์ค๊ณ์)
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ ์ธ์ฆ ์์คํ
์ JWT(RS256) ๋ฐฉ์์ ์ถ์ฒํฉ๋๋ค. ๋ฏธ๋ค์จ์ด โ
โ ํจํด์ผ๋ก ์ํคํ
์ฒ๋ฅผ ์ค๊ณํ๋ฉด ํ์ฅ์ฑ์ ๋งค์ฐ ์ ๋ฆฌํฉ๋๋ค... โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ
codex (๊ตฌํ์)
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ Claude์ ์๊ฒฌ์ ๋์ํฉ๋๋ค. ์ฌ๊ธฐ์ ๋ฆฌํ๋ ์ ํ ํฐ โ
โ ํ์ (Rotation)์ ์ถ๊ฐ ๊ตฌํํ๋ฉด ๋ณด์์ฑ์ ๊ทน๋ํํ ์... โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ
gemini (๊ฒํ ์)
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ OAuth 2.0๋ ๋์์ผ๋ก ๊ณ ๋ คํด ๋ณด์ธ์. ํ ํฐ ํ์ ์์ด๋์ด๋โ
โ ํ๋ฅญํ์ง๋ง, ์์ธ ์ํฉ(Edge Case)์ ๋ํ ์ฒ๋ฆฌ๊ฐ ํ์... โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
๐ ํฉ์ ํ๊ฐ ์ค... 2/3 ๋์ (67%)
๐ฌ trinity>
- ์ค์๊ฐ ์คํธ๋ฆฌ๋ฐ โ ๋ชจ๋ ์์ด์ ํธ๊ฐ ๋ต๋ณ์ ๋ง์น ๋๊น์ง ๊ธฐ๋ค๋ฆฌ์ง ์๊ณ , ์ค์๊ฐ์ผ๋ก ์ถ๋ ฅ์ด ๋์ฐฉํ๋ ์ฆ์ ํ๋ฉด์ ๋ ๋๋งํฉ๋๋ค.
- ์์ด์ ํธ๋ณ ์ ์ฉ ํ ๋ง โ ์์ด์ ํธ๋ณ ๊ณ ์ ์ ํ ๋ง ์์์ ์ ์ฉํด ์์ธ์ฑ์ ๋์์ต๋๋ค. [Claude(์ฒญ๋ก์/Cyan), Codex(์ด๋ก์/Green), Gemini(์์ฃผ์/Magenta)]
- ๋งํฌ๋ค์ด(Markdown) ์ค์๊ฐ ๋ ๋๋ง โ ์์ด์ ํธ๋ค์ ๋ต๋ณ์ ํฌํจ๋ ๊ฐ์ข ์์๊ณผ ์ฝ๋ ๊ตฌ๋ฌธ ๊ฐ์กฐ(Syntax Highlighting)๋ฅผ ํฐ๋ฏธ๋์ ๋ฏธ๋ คํ๊ฒ ํํํฉ๋๋ค.
- ํฉ์ ์งํ๋ฅ ๊ฒ์ด์ง ๋ฐ โ ์์ด์ ํธ ๊ฐ์ ๋์ ๋ฐ ํฉ์ ๋๋ฌ ๋น์ค์ ์๊ฐ์ ์ธ ๊ฒ์ด์ง๋ก ์ค์๊ฐ ๋ณด์ฌ์ค๋๋ค.
- ํธ๋ฆฌ ๊ธฐ๋ฐ ์์ ๋ถ๋ฐฐ โ ์ต์ข ํฉ์ ํ ๊ฐ๊ฐ ์ด๋ค ์์ด์ ํธ๊ฐ ์ด๋ค ๋ชจ๋์ ๊ฐ๋ฐํ๋์ง ๋ช ํํ ๊ณ์ธตํ ํธ๋ฆฌ ๊ตฌ์กฐ๋ก ์๊ฐํํฉ๋๋ค.
| ๋ช ๋ น์ด | ์ค๋ช |
|---|---|
trinity |
๋ํํ TUI ์ธ์ ์คํ |
trinity init |
ํ์ฌ ๋๋ ํ ๋ฆฌ์ Trinity ์์
๊ณต๊ฐ(.trinity/) ์ด๊ธฐํ |
trinity init --non-interactive |
์ฌ์ฉ์ ์ ๋ ฅ ์์ฒญ ์์ด ๊ธฐ๋ณธ๊ฐ์ผ๋ก ์ฆ์ ์ด๊ธฐํ |
trinity ask "์ง๋ฌธ" |
์ ๋ ฅํ ํ๋กฌํํธ์ ๋ํด ์ฆ์ ๋จ๋ฐ์ฑ(One-shot) ํ ๋ก ์คํ |
trinity status |
ํ์ฌ ์์ด์ ํธ๋ค์ ํ์ฑํ ๋ฐ ์ฐ๊ฒฐ ์ํ๋ฅผ ํ ํํ๋ก ํ์ |
trinity status-watch |
์ค์๊ฐ์ผ๋ก ์ํ๊ฐ ๊ฐฑ์ ๋๋ ์ํ ๋ชจ๋ํฐ ๋์๋ณด๋ ์คํ |
trinity context |
๊ณต์ ์ปจํ ์คํธ(shared.md) ํ์ผ ๋ด์ฉ ํ์ธ |
trinity config [ํค] |
์ง์ ํ ํค์ ํด๋นํ๋ ํ๊ฒฝ ์ค์ ๊ฐ ์กฐํ |
trinity logs |
์ค์ผ์คํธ๋ ์ดํฐ์ ์ธ๋ถ ๋์ ๋ก๊ทธ ํ์ธ |
trinity reset --keep-context |
ํ์ฌ ์ธ์ ์ ๋ณด๋ ์ด๊ธฐํํ๋, ๊ธฐ์กด ๊ณต์ ์ปจํ ์คํธ ํ์ผ์ ๋ณด์กด |
trinity attach |
๋ฐฑ๊ทธ๋ผ์ด๋์์ ์คํ ์ค์ธ tmux ์์ด์ ํธ ์ธ์ ์ ๋ค์ ์ฐ๊ฒฐ(Attach) |
๋ํํ TUI ๋ด๋ถ ๋ช
๋ น (์ธ์ ์์ด trinity ์คํ ํ ํ๋กฌํํธ ์์์ ์
๋ ฅ):
| ๋ช ๋ น์ด | ์ค๋ช |
|---|---|
<ํ
์คํธ> |
์์ด์ ํธ๋ค์๊ฒ ์๋ก์ด ์ฃผ์ ๋ก ํ ๋ก (Deliberation) ์์ ์์ฒญ |
/status |
์์ด์ ํธ๋ณ ์์ธ ์ํ ๋์๋ณด๋ ํ์ |
/context |
ํ์ฌ์ ๊ณต์ ์ปจํ ์คํธ ๋ด์ฉ ํ์ธ |
/rounds [N] |
ํ ๋ก ์ ์งํํ ์ต๋ ๋ผ์ด๋ ํ์ ์ค์ (1โ20 ๋ฒ์) |
/agent <์ด๋ฆ> on|off |
ํน์ ์์ด์ ํธ๋ฅผ ์ฆ์ ํ์ฑํํ๊ฑฐ๋ ๋นํ์ฑํ |
/history |
์ด์ ๋ผ์ด๋์ ํ ๋ก ํ์คํ ๋ฆฌ ์์ฝ ์กฐํ |
/save |
ํ์ฌ ํ ๋ก ์ธ์ ์ ์ ์ฒด ๊ฒฐ๊ณผ๋ฅผ ํ์ผ๋ก ์๊ตฌ ์ ์ฅ |
/help |
์ฌ์ฉ ๊ฐ๋ฅํ ์ธ๋ผ์ธ ๋ช ๋ น์ด ๋์๋ง ํ์ |
/quit |
Trinity ์ข ๋ฃ ๋ฐ ๋ฐฑ๊ทธ๋ผ์ด๋ ๋ฆฌ์์ค ์ ๋ฆฌ |
.trinity/trinity.config ํธ์ง (TOML ํ์):
[general]
session_name = "trinity"
state_dir = ".trinity"
max_deliberation_rounds = 5
consensus_threshold = 0.6
[deliberation]
max_rounds = 5
consensus_threshold = 0.6
round_timeout_seconds = 120
[context]
rotate_threshold = 0.6
keep_sections = ["Current Goal", "Agreed Conclusion"]
recent_rounds_on_rotate = 3
[agents.claude]
provider = "claude-code"
cli_command = "claude"
role_prompt = "You are the Architect. You design systems, review code..."
enabled = true
extra_args = ["--dangerously-skip-permissions"]
[agents.codex]
provider = "codex"
cli_command = "codex"
role_prompt = "You are the Implementer. You write clean, efficient code..."
enabled = false # ๊ธฐ๋ณธ๊ฐ์ ๋นํ์ฑํ
[agents.gemini]
provider = "gemini-cli"
cli_command = "gemini"
role_prompt = "You are the Reviewer. You explore alternatives..."
enabled = false # ๊ธฐ๋ณธ๊ฐ์ ๋นํ์ฑํtrinity/
โโโ orchestrator.py # ์ต์์ ์กฐ์ ์(Coordinator) โ ๋ชจ๋ ํ์ ์์คํ
์ ์ด ๋ฐ ์์
โโโ cli.py # Click ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๊ธฐ๋ฐ CLI ์ง์
์
โโโ config.py # TOML ์ค์ ๋ก๋ ๋ฐ ํ์ (๊ธฐ๋ณธ๊ฐ ๊ตฌ์ฑ ์ ๋ณด ํฌํจ)
โโโ models.py # ํต์ฌ ๋ฐ์ดํฐ ๋ชจ๋ธ ์ ์ (AgentSpec, DeliberationMessage ๋ฑ)
โ
โโโ agents/ # ์ ๊ณต์๋ณ AI ์์ด์ ํธ ์ด๋ํฐ
โ โโโ base.py # AgentWrapper ์ถ์ ๋ฒ ์ด์ค ํด๋์ค (ABC)
โ โโโ claude_agent.py # Claude Code ์ฐ๋ (์ถ๋ ฅ ๋ชจ๋ + tmux ๋ํํ ๋ชจ๋)
โ โโโ codex_agent.py # Codex ์ฐ๋ (์ถ๋ ฅ ๋ชจ๋ + tmux ๋ํํ ๋ชจ๋)
โ โโโ gemini_agent.py # Gemini CLI ์ฐ๋ (์ถ๋ ฅ ๋ชจ๋ + tmux ๋ํํ ๋ชจ๋)
โ โโโ factory.py # AgentFactory โ ์์ด์ ํธ ์ธ์คํด์ค ๋์ ์์ฑ
โ
โโโ deliberation/ # ํ ๋ก ํต์ฌ ์์ง
โ โโโ protocol.py # ๋ผ์ด๋ ๊ธฐ๋ฐ ํ ๋ก ํ๋กํ ์ฝ ๋ฃจํ ๋ฐ ์ด๋ฒคํธ ์คํธ๋ฆฌ๋ฐ
โ โโโ consensus.py # ํค์๋ ๊ธฐ๋ฐ ํฉ์ ๊ฐ์ง ๋ฐ ๋ถ์ ์ด ํํฐ๋ง
โ โโโ distributor.py # ์ต์ข
ํฉ์์ ๋์ถ ํ ์์ด์ ํธ ๊ฐ์ ๋ณ ์์
๋ถ๋ฐฐ
โ
โโโ context/ # ๊ณต์ ๋๋ (Shared Context)
โ โโโ shared.py # SharedContextEngine โ shared.md ํ์ผ ์์ฑ ๋ฐ ๊ด๋ฆฌ
โ โโโ monitor.py # ๊ฐ ์์ด์ ํธ๋ณ ํ ํฐ ์ฌ์ฉ ํํฉ ๋ชจ๋ํฐ๋ง
โ โโโ rotator.py # ์ปจํ
์คํธ ์ฉ๋ ์ด๊ณผ ์ ์ธ์
์ ๋ณด ์๋ ๋กํ
์ด์
โ
โโโ completion/ # ์์ด์ ํธ ๋ต๋ณ ์๋ฃ ๊ฐ์ง ๋ชจ๋
โ โโโ base.py # CompletionDetector ์ถ์ ํด๋์ค ๋ฐ ์๋น ๊ฐ์ง ์ฒด์ธ(Fallback Chain)
โ โโโ hook.py # ํ์ผ ์๊ทธ๋ ๊ธฐ๋ฐ Claude ์๋ต ์ ์ง ํ
(Stop Hook)
โ โโโ idle.py # ํ
์คํธ ์ถ๋ ฅ์ ๋ฌด๋ณํ(Idle) ์ํ ๊ฐ์ง๊ธฐ
โ โโโ prompt.py # CLI ํ๋กฌํํธ ์ฌ์ถํ ์ฌ๋ถ ๊ฐ์ง๊ธฐ
โ
โโโ tui/ # ๋ํํ ํฐ๋ฏธ๋ UI (TUI)
โ โโโ app.py # TrinityTUI โ Rich Live ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ํ์ฉํ ๋ ๋๋ง ์์ง
โ โโโ session.py # InteractiveSession โ ์ฌ์ฉ์ ์
๋ ฅ ์ฒ๋ฆฌ ๋ฃจํ ๋ฐ ์ด๋ฒคํธ ๊ธฐ๋ฐ UI ๊ฐฑ์
โ โโโ events.py # TUIEventBus โ ์ค๋ ๋ ์์ ํ ์ด๋ฒคํธ ์ ๋ฌ ๋ธ๋ฆฟ์ง
โ โโโ theme.py # ๋น์ฃผ์ผ ํ
๋ง ์ ์ (์์ด์ ํธ๋ณ ๊ณ ์ ์์, ์์ด์ฝ, ์ญํ )
โ
โโโ setup/ # ์ด๊ธฐ ์จ๋ณด๋ฉ ํ๊ฒฝ ๊ตฌ์ฑ
โ โโโ detector.py # ์์คํ
์ ์ค์น๋ AI CLI ๋๊ตฌ ์๋ ํ์ง
โ โโโ wizard.py # Rich ๊ธฐ๋ฐ ๋ํํ ์ด๊ธฐ ์ค์ ๋ง๋ฒ์ฌ
โ
โโโ tmux/ # tmux ๋ํํ ๋ชจ๋ ์ธํ๋ผ
โ โโโ pane.py # ์ ์์ค(Low-level) tmux pane ์
์ถ๋ ฅ(I/O) ์ ์ด
โ โโโ session.py # tmux ์ธ์
๋ฐ ํ์ ์ฐฝ(Pane) ๋ผ์ดํ์ฌ์ดํด ๊ด๋ฆฌ
โ โโโ layout.py # TUI ๋ฉ์ธ ํ๋ฉด ๋ฐ ์์ด์ ํธ ์ฐฝ ๋ถํ ๋ ์ด์์ ๊ตฌ์ฑ
โ
โโโ workspace/ # ์์ด์ ํธ ๊ฒฉ๋ฆฌ ํ๊ฒฝ
โ โโโ isolation.py # Git Worktree๋ฅผ ํ์ฉํ ์์ด์ ํธ๋ณ ๋
๋ฆฝ๋ ๋ณ๋ ฌ ํธ์ง ํ๊ฒฝ ๊ตฌ์ถ
โ โโโ managed_home.py # ์์ด์ ํธ ๊ฐ ์ค์ ์ถฉ๋ ๋ฐฉ์ง๋ฅผ ์ํ ๊ฒฉ๋ฆฌ๋ HOME ๋๋ ํ ๋ฆฌ ๊ด๋ฆฌ
โ
โโโ health/
โ โโโ checker.py # ์์ด์ ํธ ํฌ์ค ๋ชจ๋ํฐ๋ง (์ํ ์ฒดํฌ)
โ
โโโ retry.py # ์ง์ ๋ฐฑ์คํ(Exponential Backoff) ๋ฐ ์งํฐ(Jitter) ์ ์ฉ ์ฌ์๋ ์ค์
โโโ error_handler.py # ์ค๋ฅ/ํฌ๋์ ์๋ ๋ณต๊ตฌ ๋ฐ ์์ธ ์์ด์ ํธ ์ฌ์์
| ์ ํํ ์ค๊ณ ๋ฐฉํฅ | ๋์ ๋ฐฐ๊ฒฝ ๋ฐ ํฉ๋ฆฌ์ฑ |
|---|---|
| ๊ณต์ ๋งํฌ๋ค์ด ํ์ผ | ์์ด์ ํธ๋ค์ด ๋จ์ผ ๋งํฌ๋ค์ด ํ์ผ(shared.md)์ ์ง์ ์๊ฒฌ์ ์ฐ๊ณ ์ฝ์ต๋๋ค. ๊ตฌํ์ด ๋งค์ฐ ์ง๊ด์ ์ด๊ณ ๊ตฌ์กฐ๊ฐ ํฌ๋ช
ํ์ฌ ๋๋ฒ๊น
์ ํฐ ์ด์ ์ ์ ๊ณตํฉ๋๋ค. |
| ๋ผ์ด๋ ๊ธฐ๋ฐ ํ๋กํ ์ฝ | ๊ตฌ์กฐํ๋ ํ ๋ก ๋ฐฉ์์ ๋์ ํ์ฌ ์๊ฒฌ ์ฐจ์ด๋ก ์ธํ ๋์๋ ๋ฌดํ ๋ฃจํ(์ํ ๋ ผ์)๋ฅผ ์์ฒ ์ฐจ๋จํ๊ณ ํ์คํ ๋ ผ์ ์งํ์ ๊ฐ์ ํฉ๋๋ค. |
| ์ด๋ฒคํธ ๊ตฌ๋ํ TUI | ๋น๋๊ธฐ asyncio ์ด๋ฒคํธ ๋ฃจํ์ ํ(Queue)๋ฅผ ํ์ฉํด ๋๊ธฐ ์๊ฐ ์์ด ๊ฐ ์์ด์ ํธ์ ์๋ต์ ์ค์๊ฐ ์คํธ๋ฆฌ๋ฐ ๋ฐฉ์์ผ๋ก ๋ ๋๋งํฉ๋๋ค. |
| ํค์๋ ๊ธฐ๋ฐ ํฉ์ ๊ฐ์ง | ํค์๋ ๋งค์นญ ๋ฐฉ์์ ๋์ ํ์ฌ ๋น ๋ฅด๊ณ ๊ฒฐ์ ๋ก ์ ์ผ๋ก ํฉ์๋ฅผ ํ์ ํ๋ฉฐ, ๋ถ์ ํํ ํํฐ๋ง์ ํตํด ์ค์ฌ์จ์ ํฌ๊ฒ ๋ฎ์ท์ต๋๋ค. |
| ์ ๊ณต์ ๋น์์กด์ฑ ์์ด์ ํธ | ์ถ์ ํด๋์ค AgentWrapper ์ค๊ณ๋ก ์ธํฐํ์ด์ค๋ฅผ ํ์คํํ์ฌ ํฅํ ์๋ก์ด AI CLI ๋๊ตฌ(์: ํ์ฌ ๋ชจ๋ธ CLI)๋ ๋งค์ฐ ์์ฝ๊ฒ ํตํฉํ ์ ์์ต๋๋ค. |
| ๋์ผ ์คํ ๋ชจ๋ ์ง์ | ์๋ํ ํ์ดํ๋ผ์ธ ๋ฐ CI/CD ์คํฌ๋ฆฝํธ ์คํ์ ์ํ Print ๋ชจ๋์ ์ค์๊ฐ ํฐ๋ฏธ๋ ์๊ฐํ๋ฅผ ์ํ tmux ๊ธฐ๋ฐ ๋ํํ ๋ชจ๋๋ฅผ ๋ถ๋ฆฌํ์ฌ ์ ์ฐํ๊ฒ ๋์ฒํฉ๋๋ค. |
| ์๊ตฌ์ฌํญ | ๋์ ๋ฐฐ๊ฒฝ | ํ์ ์ฌ๋ถ |
|---|---|---|
| Python 3.10+ | ์ ์ฒด ์์คํ ๋ฐํ์ ๊ตฌ๋ | โ ํ์ |
| Claude Code CLI | ์ค๊ณ์(Architect) ์์ด์ ํธ ๊ตฌ๋ | ์ ํ ์ฌํญ |
| Codex CLI | ๊ตฌํ์(Implementer) ์์ด์ ํธ ๊ตฌ๋ | ์ ํ ์ฌํญ |
| Gemini CLI | ๊ฒํ ์(Reviewer) ์์ด์ ํธ ๊ตฌ๋ | ์ ํ ์ฌํญ |
| tmux | ๋ํํ ๋ชจ๋(Interactive Layout) ๊ตฌ๋ | ์ ํ ์ฌํญ |
์ ์์ ์ผ๋ก ์ค์ผ์คํธ๋ ์ด์ ์ ์งํํ๋ ค๋ฉด ์ต์ ํ ๊ฐ ์ด์์ AI CLI ๋๊ตฌ๊ฐ ์ค์น๋์ด ์์ด์ผ ํฉ๋๋ค.
trinity init๋ช ๋ น ์คํ ์ ํ์ฌ ํธ์คํธ ์์คํ ์ ์ค์น๋์ด ๋์ ๊ฐ๋ฅํ CLI ๋๊ตฌ๋ฅผ ์๋์ผ๋ก ํ์งํ์ฌ ๊ตฌ์ฑํฉ๋๋ค.
# ์ ์ฅ์ ํด๋ก ๋ฐ ํจํค์ง ์ค์
git clone https://github.com/hongdangmoo49/Trinity.git
cd Trinity
uv sync
# ํ
์คํธ ์ค์ํธ ์คํ (์ด 596๊ฐ ํ
์คํธ ์ผ์ด์ค)
uv run pytest tests/ -v
# ์ฝ๋ ์ปค๋ฒ๋ฆฌ์ง ๋ฆฌํฌํธ์ ํจ๊ป ํ
์คํธ ์คํ
uv run pytest tests/ --cov=trinity --cov-report=term-missing# pyproject.toml ๋ฐ src/trinity/__init__.py ๋ฒ์ ์
๊ทธ๋ ์ด๋
rm -rf dist/
uv build
uv publish --token <PYPI_TOKEN>| ์งํ | ์์น |
|---|---|
| ๋ฒ์ | 0.3.0 |
| ํ ์คํธ | 596๊ฐ ํ ์คํธ ํต๊ณผ |
| ์ปค๋ฒ๋ฆฌ์ง | ์ฝ 87% |
| ์์ค ํ์ผ | 40์ฌ ๊ฐ |
| ์ฃผ์ ์์กด์ฑ ๋ผ์ด๋ธ๋ฌ๋ฆฌ | click, rich, tomli |
| ๊ถ์ฅ Python ๋ฒ์ | 3.10+ |
์ด ํ๋ก์ ํธ๋ MIT ๋ผ์ด์ ์ค ํ์ ๋ฐฐํฌ๋ฉ๋๋ค. ์์ธํ ์ ๋ณด๋ LICENSE ํ์ผ์ ์ฐธ์กฐํ์ธ์.