https://github.com/zzunkie/yardlet
Local AI workbench: plan, queue, route, validate, and hand off long-running work using your already-installed Codex and Claude Code CLIs as hidden workers.
https://github.com/zzunkie/yardlet
agent-orchestration agentic ai ai-agents ai-workbench anthropic-claude claude-code cli codex coding-agents developer-tools llm local-first loop-engineering openai-codex ratatui rust terminal-ui tui workflow-automation
Last synced: 1 day ago
JSON representation
Local AI workbench: plan, queue, route, validate, and hand off long-running work using your already-installed Codex and Claude Code CLIs as hidden workers.
- Host: GitHub
- URL: https://github.com/zzunkie/yardlet
- Owner: zzunkie
- License: mit
- Created: 2026-06-02T09:10:11.000Z (about 1 month ago)
- Default Branch: main
- Last Pushed: 2026-07-09T20:13:23.000Z (5 days ago)
- Last Synced: 2026-07-09T21:14:33.961Z (5 days ago)
- Topics: agent-orchestration, agentic, ai, ai-agents, ai-workbench, anthropic-claude, claude-code, cli, codex, coding-agents, developer-tools, llm, local-first, loop-engineering, openai-codex, ratatui, rust, terminal-ui, tui, workflow-automation
- Language: Rust
- Homepage: https://crates.io/crates/yardlet
- Size: 1.04 MB
- Stars: 16
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.ko.md
- Changelog: CHANGELOG.md
- Contributing: CONTRIBUTING.md
- License: LICENSE
- Agents: AGENTS.md
Awesome Lists containing this project
- awesome-ratatui - Yardlet - A local AI workbench that turns intent into a verified task queue and drives your installed Claude Code or Codex CLIs as interchangeable workers. (๐ป Apps / โจ๏ธ Development Tools)
README
# Yardlet
[](https://crates.io/crates/yardlet)
[](https://github.com/zzunkie/yardlet/actions/workflows/ci.yml)
[](https://crates.io/crates/yardlet)
[](LICENSE)
[English](README.md) | **ํ๊ตญ์ด**
> **Rent the intelligence. Own the loop.** (์ง๋ฅ์ ๋น๋ฆฌ๊ณ , ๋ฃจํ๋ ์์ ํ๋ค.)
> Yardlet์ ๋น์ ์ด ์ด๋ฏธ ์ฌ์ฉํ๋ ์ฝ๋ฉ ์์ด์ ํธ๋ฅผ ๋๋ฌ์ผ ๋ฃจํ๋ฅผ ์์ ํฉ๋๋ค. ์๋๋ฅผ
> ๋ช ๋ฌธ์ฅ์ผ๋ก ์ง์ ํ๋ฉด, Yardlet์ด ๊ทธ๊ฒ์ ์์
์ผ๋ก ๊ณํํ๊ณ , Claude Code๋ Codex๋ฅผ
> ๊ต์ฒด ๊ฐ๋ฅํ ์์ปค๋ก ๊ตฌ๋ํ๊ณ , ๋ชจ๋ ๊ฒฐ๊ณผ๋ฅผ ๊ฒฐ์ ๋ก ์ ์ผ๋ก ๊ฒ์ฆํ๋ฉฐ, ๊ณํ๊ณผ ๋ฉ๋ชจ๋ฆฌ,
> ์ ๋ขฐ ๊ธฐ๋ก, ํธ๋์คํ๋ฅผ ๋น์ ์ ์ ์ฅ์์ ๋ณด๊ดํฉ๋๋ค. ๋ชจ๋ธ์ ๋น๋ฆฌ๊ณ , ๋ฃจํ๋ ๋น์ ์
> ๊ฒ์
๋๋ค.

Yardlet์ ์ฝ๋ฉ CLI๋ฅผ ์๊ฒ ๊ฐ์ผ ๋ํผ๊ฐ ์๋๋๋ค. ์์ปค CLI๋ Yardlet์ด ์ฒ์๋ถํฐ ๋๊น์ง
์์ ํ๋ ๋ฃจํ ์์, ๊ต์ฒด ๊ฐ๋ฅํ ํ ๋ถํ์ผ ๋ฟ์
๋๋ค. ํ๋๋ ๊ฒ์ดํธ, ์์
๋ณ ๋ผ์ฐํ
,
๊ฒฐ์ฝ ์คํ์๊ฐ ์๋ ๊ฒฐ์ ๋ก ์ ๊ฒ์ฆ์, ์ ์ฅ์์ ์ฌ๋ ์ง์ ์ํ, ํฌ๋์ ๋ณต๊ตฌ, ํ๋ก์ ํธ
๋ฉ๋ชจ๋ฆฌ, ๋น์ ์ ์คํ ์ด๋ ฅ์ผ๋ก ๋ง๋ ์ ๋ขฐ ๋ฆฌํฌํธ, ๊ทธ๋ฆฌ๊ณ ๋น์ ์ ์ ์ฅ์์์ ๋ณต๋ฆฌ๋ก ์์ด๋
ํ์ต ๋ฃจํ๊ฐ ๊ทธ ๋ฃจํ๋ฅผ ์ด๋ฃน๋๋ค. ์์ปค๋ฅผ ๋ฐ๊ฟ๋ ๋ฃจํ์ ๊ธฐ๋ก, ๊ทธ๋ฆฌ๊ณ ๋น์ ์ด ๊ฐ๋ฅด์น ๋ชจ๋
๊ฒ์ ๋น์ ์๊ฒ ๋จ์ต๋๋ค.
*"์ ๋ ๋ ์ด์ Claude์๊ฒ ํ๋กฌํํธ๋ฅผ ์ฐ์ง ์์ต๋๋ค. Claude์๊ฒ ํ๋กฌํํธ๋ฅผ ๋์ง๊ณ
๋ฌด์์ ํ ์ง ํ๋จํ๋ ๋ฃจํ๋ค์ ๋๋ฆด ๋ฟ์ด๊ณ , ์ ์ผ์ ๊ทธ ๋ฃจํ๋ฅผ ์์ฑํ๋ ๊ฒ์
๋๋ค."*
Anthropic์ Claude Code ๋ฆฌ๋๊ฐ ์์ ์ ์ํฌํ๋ก๋ฅผ ์ด๋ ๊ฒ ์ค๋ช
ํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ด
์ค์ฒ์๋ **loop engineering(๋ฃจํ ์์ง๋์ด๋ง)** ์ด๋ผ๋ ์ด๋ฆ์ด ๋ถ์์ต๋๋ค. Yardlet์
๊ทธ ์ค์ฒ์ ๋ชจ๋๋ฅผ ์ํ ์ ํ์ผ๋ก ๋ง๋ ๊ฒ์
๋๋ค.
- **ํ๋กฌํํธ๋ ์์ฑํ๋ ๊ฒ์ด ์๋๋ผ ์ปดํ์ผ๋ฉ๋๋ค.** ์๋๋ ํ ๋ฒ๋ง ์ง์ ํฉ๋๋ค.
๋ชจ๋ ์์ปค ํ๋กฌํํธ๋ ๋น์ ์ด ์์ ํ ๊ณ์ฝ, ๊ท์น, ์คํฌ, ์ญํ ๊ท์จ, ์ฒดํฌํฌ์ธํธ๋ก๋ถํฐ
๋น๋๋ฉ๋๋ค. ์ด ์
๋ ฅ์ ๊ฐ์ ํ๋ฉด ๋ฏธ๋์ ๋ชจ๋ ํ๋กฌํํธ๊ฐ ํจ๊ป ๊ฐ์ ๋ฉ๋๋ค.
- **๋ฃจํ๋ ๋ฒค๋์ ๊ฒ์ด ์๋๋ผ ๋น์ ์ ๊ฒ์
๋๋ค.** ์์ปค ์ค๋ฆฝ(Claude Code, Codex,
๋๋ ํ๋์ ๊ณ์ฝ ๋ค์ ์๋ ๋ชจ๋ CLI), ๋ก์ปฌ(์ํ๋ ๋น์ ์ ์ ์ฅ์์ ์กด์ฌ),
๊ทธ๋ฆฌ๊ณ ํฌ๋์, ์ฌ์์, ์์ปค ๊ต์ฒด์๋ ์ด์๋จ์ต๋๋ค.
- **๊ฒ์ฆ์๋ ๊ฒฐ์ฝ ์คํ์๊ฐ ์๋๋๋ค.** ๊ฒฐ์ ๋ก ์ ํ๊ฐ๊ธฐ๊ฐ ๋ชจ๋ ์คํ์ ๊ณ์ฝ๊ณผ
๋์กฐํด ๊ฒ์ฌํ๊ณ , ์ํํ ๊ณํ์๋ ๋ฆฌ๋ทฐ์ด ์ญํ ์ ๊ฒ์ฆ ์์
์ด ๋ถ์ต๋๋ค.
"์๋ฃ"๋ ์ค์ค๋ก ๋ณด๊ณ ํ๋ ๊ฒ์ด ์๋๋ผ ํ๋ํ๋ ๊ฒ์
๋๋ค. ๊ธฐ๊ณ์ ๊ฒ์ฌ๋
๊ฒฐ์ ๋ก ์ ์ด๊ณ (์คํค๋งยทIDยท์ค์ฝํ driftยท์ค์ git diff ๊ธฐ๋ฐ forbidden pathยทYardlet์ด
์ง์ ์คํํ๋ validation ๋ช
๋ น), ์๋ฏธ์ ํ์ง์ ๋ณ๋ ๋ฆฌ๋ทฐ์ด ์ญํ ํ์คํฌ๊ฐ
ํ๋จํฉ๋๋ค(์ฒด์ปค๊ฐ ๋ชจ๋ ๊ฑธ ํ๋จํ๋ ์ฒํ์ง ์์ต๋๋ค).
์ ์ฒด ์ ์ฒด์ฑ: [docs/identity.md](docs/identity.md).
```
์ฌ์ฉ์ ์๋ (๋ช ๋ฌธ์ฅ)
-> planning gate ์ธํ
ํธ / ์ค์ฝํ / ์์ฉ ๊ณ์ฝ
-> work queue ๊ฒฝ๊ณ๊ฐ ๋ช
ํํ ์์
, ์์กด์ฑ, ๋ณ๋ ฌ ์ค๋น๋จ
-> packet compiler ๋น์ ์ด ์์ ํ ์ํ๋ก๋ถํฐ ๋น๋๋ ํ๋กฌํํธ
-> hidden workers claude / codex / ๋ชจ๋ CLI, ์๋๋ฐ์ค, ๋ผ์ฐํ
๊ฐ๋ฅ
-> deterministic evaluator ์๋ฃ๋ ์ ์ธ์ด ์๋๋ผ ๊ฒ์ฌ๋จ
-> checkpoint / handoff ์ง์๋๋ ์ฐ์ถ๋ฌผ, ์์ํ ์ฌ๊ฐ ๊ฐ๋ฅ
```
## ์ค์น
```bash
cargo install yardlet
```
macOS์ Linux์ฉ ์ฌ์ ๋น๋ ๋ฐ์ด๋๋ฆฌ๊ฐ ๊ฐ
[GitHub ๋ฆด๋ฆฌ์ค](https://github.com/zzunkie/yardlet/releases)์ ์ฒจ๋ถ๋์ด ์์ต๋๋ค.
[`cargo-binstall`](https://github.com/cargo-bins/cargo-binstall)์ด ์ค์น๋์ด ์์ผ๋ฉด
`cargo binstall yardlet`์ด ์ปดํ์ผ ๋์ ๋ฐ์ด๋๋ฆฌ๋ฅผ ๋ฐ์์ต๋๋ค.
## ๋น์ ์ Claude Code์ Codex๋ฅผ, ์๋ ๊ทธ๋๋ก
`claude` ๋๋ `codex`๊ฐ ๋น์ ์ ๋จธ์ ์์ ์คํ๋๋ค๋ฉด Yardlet์ด ๊ทธ๊ฒ์ ๊ตฌ๋ํ ์
์์ต๋๋ค. ์ ๊ณ์ ๋, ์ถ๊ฐ ์ค์ ๋, ๋ณ๋์ ์
์
๋จ๊ณ๋ ์์ต๋๋ค. Yardlet์ ์ค์น๋
CLI๋ฅผ ๋ฐ๊ฒฌํ๊ณ , ์ค๋น ์ํ๋ฅผ ์ ๊ฒํ๊ณ , ๋น์ ์ด ์ด๋ฏธ ๊ฒฐ์ ํ ๊ทธ๋๋ก ์ผ์ ์ํต๋๋ค.
๋ค๋ฅธ ๋ชจ๋ ์์ด์ ํธ CLI๋ ์ค์ ๋ง์ผ๋ก ์ถ๊ฐํ ์ ์์ผ๋ฉฐ("์์ปค ์ถ๊ฐํ๊ธฐ" ์ฐธ๊ณ ),
์์ปค๋ณ `invocation.pass_env` ์ตํธ์ธ์ ํตํ API ๊ธฐ๋ฐ ๋๊ตฌ๋ ํฌํจ๋ฉ๋๋ค.
์์ปค๊ฐ ๋น์ ์ ํ๋ก์ ํธ ์์์ ์คํ๋๊ธฐ ๋๋ฌธ์, ๊ธฐ์กด ์
์
์ด ๊ฐ ์์
์์์ ๊ทธ๋๋ก
๋์ํฉ๋๋ค. `CLAUDE.md`, skills, hooks, MCP ์๋ฒ, subagents๊ฐ ์ ๋ถ ์ ์ฉ๋ฉ๋๋ค.
Yardlet์ ๋น์ ์ ํ๋ค์ค๋ฅผ ๋์ฒดํ๋ ๊ฒ ์๋๋ผ ๊ทธ ์์ ์ค์ผ์คํธ๋ ์ด์
๊ณผ ๊ฒ์ฆ์
์น์ต๋๋ค. LLM ๋ ์ด์ด์์ ์๋ฆฌํด์ง๋ ค ํ์ง ์๊ณ , ๊ทธ ๋ ์ด์ด๋ฅผ ์ด๋ฏธ ์ํ๋ ํ๋ค์ค๋ค์
๊ต์ฒด ๊ฐ๋ฅํ ์์ปค๋ก ๋๋ฆฌ๋ฉฐ, ์ ์ ๋
ธ๋ ฅ์ ๋ชจ๋ธ ์์ด ๊ฒฐ์ ๋ก ์ ์ผ๋ก ํ ์ ์๋ ๋ถ๋ถ
(๋ผ์ฐํ
ยทํ๊ฐยท์ํยท๋จธ์งยท๋ณต๊ตฌยทํธ๋์คํ)์ ์๋๋ค.
์ด๋ฏธ ๊ฒฐ์ ์ค์ธ ๊ตฌ๋
์์์ ๋๋๋ก ๋ง๋ค์์ง, ํ ํฐ๋น API ๋น์ฉ์ ์์ผ๋ ค๊ณ ๋ง๋ ๊ฒ
์๋๋๋ค. ๋น๋ง ํค(`ANTHROPIC_API_KEY`, `OPENAI_API_KEY` ๋ฑ)๋ ์์ปค๋ฅผ ๋์ฐ๊ธฐ ์ ์
ํ๊ฒฝ์์ ์คํฌ๋ฝ๋๋ฏ๋ก, ๋ฌด์ธ auto-drain์ด ๊ตฌ๋
๋์ API ํค๋ก ์กฐ์ฉํ ๊ณผ๊ธ๋๋ ์ผ์ด
์์ต๋๋ค. ํน์ ๋ณ์๋ `pass_env`๋ก๋ง ๋ค์ ํต๊ณผ์ํฌ ์ ์์ต๋๋ค.
## ๋ฃจํ
```bash
cd your-project
yardlet new "add admin order search with status, email, and date filters"
yardlet queue # ๊ณํ๋ ์์
๊ฒํ
yardlet run --auto # ํ๋ฅผ ๋น์, ์ฌ๋ ๊ฒ์ดํธ์์๋ง ๋ฉ์ถค
yardlet handoff # ๋๋ฃ๊ฐ ์ฝ์ ์ ์๋ ์์ฝ ์ฝ๊ธฐ
yardlet # ๋๋ ํฐ๋ฏธ๋ UI์์ ์ ๋ถ ์ฒ๋ฆฌ
```
์์ปค CLI์ ๋ง์ฐฌ๊ฐ์ง๋ก `yardlet`์ ์ด๋ค ๋๋ ํฐ๋ฆฌ์์๋ ๋ฐ๋ก ๋์ํฉ๋๋ค. ์ฒซ ๋ช
๋ น์ด
`.agents/` ์ํ๋ฅผ ํ์ ์์ ์ ์์ฑํฉ๋๋ค. `yardlet init`์ ์คํฌ๋ฆฝํ
์ด๋ ์ฌ์ค์บํด๋ฉ์
์ํด ์กด์ฌํ์ง๋ง, ๋จผ์ ์คํํ ํ์๋ ์์ต๋๋ค.
ํ ๋ฌธ์ฅ์ ์์ฒญ์ด ์ธํ
ํธ ๊ณ์ฝ๊ณผ ๋ช
์์ ์์กด์ฑ์ ๊ฐ์ง ๊ฒฝ๊ณ๊ฐ ๋ช
ํํ ์์
ํ๊ฐ ๋ฉ๋๋ค.
๊ฐ ์์
์ ์จ์ ์์ปค๋ฅผ ๊ฑฐ์ณ ์คํ๋๊ณ , ๊ฒฐ์ ๋ก ์ ํ๊ฐ๊ธฐ๋ก ๊ฒ์ฌ๋๋ฉฐ, `.agents/runs/`
์๋์ ์ฒดํฌํฌ์ธํธ์ ํธ๋์คํ๋ฅผ ๋จ๊น๋๋ค.
์์
์ ๋ช
์์ ๋ชฉํ ์กฐ๊ฑด๊ณผ ํผ๋๋ฐฑ ์ฌ์ดํด ํ๋๋ฅผ ๊ฐ์ง ์ ์์ต๋๋ค. ๊ฒฐ์ ๋ก ์ ๊ฒ์ฆ์ด๋
์์ฉ ์กฐ๊ฑด ๊ฒ์ฌ๊ฐ ์คํจํ๋ฉด Yardlet์ ์ ํํ ์คํจ๋ฅผ ๊ธฐ๋กํด ๋ค์ ์๋์ ์ฃผ์
ํฉ๋๋ค.
์ ์ฅ๋ ํ๋๋ฅผ ์์งํ๋ฉด ์๋ฃ๋ก ๋ณด๊ณ ํ์ง ์๊ณ ๋ฌธ๋งฅ๊ณผ ํจ๊ป NeedsUser์์ ๋ฉ์ถฅ๋๋ค.
## ํ๋ก์ ํธ ๋ฉ๋ชจ๋ฆฌ (Project Memory)
์์ด๋ฒ๋ฆฌ๋ ๋ฃจํ๋ ๋ํผ์
๋๋ค. Yardlet์ ์ง์๋๋ ์ํฌ์คํ์ด์ค ์ง์์ ๋น์ ์ ์ ์ฅ์์
๋ณด๊ดํ๊ณ , ํ๋กฌํํธ๋ฅผ ๋ถํ๋ฆฌ์ง ์์ผ๋ฉด์ ๋ชจ๋ ์์ปค์๊ฒ ๊ทธ๊ฒ์ ๊ณต๊ธํฉ๋๋ค.
์ฌ์ค๊ณผ ๊ฒฐ์ ์ `.agents/memory/` ์๋์ ์ผ๋ฐ Markdown์ผ๋ก ๋จ๊ธฐ์ธ์. ํ์ผ ํ๋์ ์ฌ์ค
ํ๋, git์ผ๋ก ์ถ์ ๋๋ฉฐ, ์ ํ์ ์ผ๋ก `name` / `description` frontmatter๋ฅผ ๊ฐ์ง๋๋ค.
Yardlet์ ์ด๋ฅผ ๋ฐ๊ฒฌํด ์งง์ **์ธ๋ฑ์ค**๋ง ๋ชจ๋ ์์ปค ํจํท๊ณผ ํ๋๋์ ์ฃผ์
ํฉ๋๋ค. ๊ฐ ๋ฌธ์์
์ ๋ชฉ, ํ ์ค ์์ฝ, ๊ฒฝ๋ก ์ต์ปค๊ฐ ๊ทธ๊ฒ์
๋๋ค. ๋ณธ๋ฌธ์ ๊ทธ๊ฒ์ด ํ์ํ ์์ปค๊ฐ **ํ์ ์์ ์**
์ฝ์ผ๋ฏ๋ก, ์๋ฌด๋ฆฌ ๋ง์ด ๊ธฐ๋กํด๋ ํญ์ ๋ก๋๋๋ ๋น์ฉ์ ์๊ฒ ์ ์ง๋ฉ๋๋ค. ์ด๊ฒ์
prompt-stuffing์ด ์๋๋ผ index-and-anchor์
๋๋ค. ์ธ๋ฑ์ค๋ ๊ฐ๋ฆฌํค๊ณ , ์์ปค๋ ์๊ธฐ ์์
์
๊ด๋ จ๋ ์์์ ๋ฉ๋ชจ๋ฆฌ๋ง ์ฝ๋๋ค.
๋ฉ๋ชจ๋ฆฌ ๋ฌธ์๋ `look_at:` ๋๋๋งํฌ ๊ฒฝ๋ก๋ฅผ ์ ์ธํ ์๋ ์์ต๋๋ค. `yardlet memory`๋
์ธ๋ฑ์ค๋ฅผ ๋์ดํ๊ณ , ๋ฌธ์๊ฐ ๋ง์ง๋ง์ผ๋ก ๊ฐฑ์ ๋ ๋ค ๋๋๋งํฌ ์ค ํ๋๊ฐ git์์ ๋ณ๊ฒฝ๋๋ฉด ๊ทธ
๋ฌธ์๋ฅผ **possibly stale(์ค๋๋์์ ์ ์์)** ๋ก ํ์ํฉ๋๋ค. ๊ทธ๋์ ์๊ธฐ๊ฐ ์ค๋ช
ํ๋
์ฝ๋์์ ๋ฉ์ด์ง ๋ฉ๋ชจ๋ฆฌ๊ฐ ์กฐ์ฉํ ์ ๋ขฐ๋๋ ๋์ ๋๋ฌ๋ฉ๋๋ค. `yardlet init`์ด ์ปจ๋ฒค์
README์ ํจ๊ป ์ด ํด๋๋ฅผ ์ค์บํด๋ฉํฉ๋๋ค.
ํ์ผ์ ์ง์ ์์ผ๋ก ์ฐ์ง ์๊ณ ์์ปค๋ฅผ ํตํด ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๋ฟ๋ฆฌ๊ณ ์ ์งํ ์๋ ์์ต๋๋ค.
`yardlet memory init`์ ์์ปค์๊ฒ ์ ์ฅ์๋ก๋ถํฐ ๋ฉ๋ชจ๋ฆฌ ๋ฌธ์ ์ด์์ ๋ง๋ค๊ฒ ํ ๋ค, Yardlet์
์ฝ์ด๊ฐ ์ ๋ณธ `.agents/memory/*.md`๋ฅผ ์๋๋ค(์์ปค๋ ์ด์, Yardlet์ด ์ ์ผํ ๊ธฐ๋ก์).
`yardlet memory refresh`๋ ๊ธฐ์กด ๋ฌธ์๋ฅผ ๊ฐ์ ๋ฐฉ์์ผ๋ก ๋ค์ ์ด์ํ๊ณ ,
`yardlet memory refresh --stale-only`๋ possibly stale๋ก ํ์๋ ๋ฌธ์๋ง ์๋ด
๋๋ค.
๋ ๋์ ์ฝ๊ธฐ ์ ์ฉ ์ ๊ฒ์๋ `yardlet memory scout`๋ฅผ ์ฌ์ฉํฉ๋๋ค. ์ฃผ์ ๋ณ scout๊ฐ ๊ฒฉ๋ฆฌ๋
์ํฌ์คํ์ด์ค ๋ณต์ฌ๋ณธ์ ์ดํผ๊ณ ๋ณด๊ณ ์๋ฅผ ์ ์ฉ ์ ํ๋ณด๋ก ํฉ์นฉ๋๋ค. ์คํ ์ฐ์ถ๋ฌผ์ ๊ฒํ ํ ๋ค
`yardlet memory apply --run `๋ก ์ฝ์ด๊ฐ ํ๋ณด๋ฅผ ์ ๋ณธ ๋ฉ๋ชจ๋ฆฌ์ ์ฐ๊ฒ ํฉ๋๋ค. scout๋
์ค์ ์ํฌ์คํ์ด์ค ๊ฒฝ๋ก๋ฅผ ๋ฐ์ง ์์ผ๋ฉฐ ๊ทธ ์ ๋ณธ ์ํ๋ฅผ ์ฐ์ง ์์ต๋๋ค.
์๋ ๋ฐฉ์: [docs/memory-trust-mining.md](docs/memory-trust-mining.md).
## ์ ๋ขฐ ๋ฆฌํฌํธ (Trust Report)
"์๋ฃ"๊ฐ ๊ฒฐ์ ๋ก ์ ๊ฒ์ดํธ๋ก ๊ฒ์ฌ๋๊ณ , ๋ชจ๋ ์คํ์ด ๊ฒฐ๊ณผ๋ฅผ ๊ธฐ๋กํ๋ฉฐ, ๋ชจ๋ ์์
์ํ ๋ณํ๊ฐ
๊ธฐ๋ก๋๊ธฐ ๋๋ฌธ์, Yardlet์ ๋น์ ์์ ์ ์ด๋ ฅ์ผ๋ก๋ถํฐ ์ด ๋ฃจํ๋ฅผ ์ผ๋ง๋ ์ ๋ขฐํ ์ง ์๋ ค์ค ์
์์ต๋๋ค. `yardlet trust`๋ ์คํ ํ
๋ ๋ฉํธ๋ฆฌ์ `.agents/transitions/` ์๋์ ์ํ-์ ์ด
๊ฐ์ฌ ๋ก๊ทธ๋ฅผ ์ฝ์ด ๋ ๊ณ์ธต์ ์ถ๋ ฅํฉ๋๋ค.
์๋ ๋ทฐ(attempt view), ์คํ ํ
๋ ๋ฉํธ๋ฆฌ ๊ธฐ๋ฐ, ํ์ฑ ์ธํ
ํธ๋ก ์ค์ฝํ ํ์ :
- **first-pass Done vs Done-after-retry vs never-Done.** ์์
์ด ์ฌ์์
์์ด ์ฒซ ์๋์
์ผ๋ง๋ ์์ฃผ ์์ฐฉํ๋์ง ๋ณผ ์ ์์ต๋๋ค.
- **์์ปค๋ณ ์ ๋ขฐ๋**: done-rate, partial / failed / no-result ํ์, ๋ฒฝ์๊ณ ์๊ฐ, ๊ทธ๋ฆฌ๊ณ
๋น์ ์ด ๊ฒฐ๊ณผ๋ฅผ overrideํ ํ์.
- Done์ ๋๋ฌํ๊ธฐ๊น์ง **๊ฐ์ฅ ๋ง์ ์๋**๊ฐ ํ์ํ๋ ์์
๋ค.
์์จ์ฑ ๋ทฐ(autonomy view), ์ ์ด ๊ฐ์ฌ ๋ก๊ทธ๋ก๋ถํฐ ์ ํ:
- **์ด Done์ ์ ๋ขฐํ ์ ์๋?** ๋ชจ๋ Done์ ๊ธฐ๋ก๋ ์ด๋ ฅ์ผ๋ก๋ถํฐ ๋ฑ๊ธํํฉ๋๋ค.
evidence-backed(๊นจ๋ํ Done, ๋ค์ ์ด๋ฆฐ ์ ์์), recovered(์๋ชป๋ ์ ํ ๋ค์ Done),
false-done caught(Done ํ์ ํ ๋ค์ ์ด๋ฆผ), ๋๋ unresolved. ๊ทธ๋ฆฌ๊ณ Done๋ค์ ๋ํ
trustworthy-Done ๋น์จ.
- **์ฌ๋ ๊ฐ์
, ๊ฒฐ์ vs ์ก๋ฌด(decision vs chore).** ์์ด ๊ฐ ๋จ๊ณ๋ฅผ, ๋ฃจํ๊ฐ ๋น์ ์๊ฒ
์ ๋นํ๊ฒ ๋น์ง ๊ฒฐ์ ๊ณผ, ๋ฃจํ๊ฐ ์ค์ค๋ก ํก์ํ์ด์ผ ํ ์ก๋ฌด(un-parking, ๋ณต๊ตฌ)๋ก ๋๋๋๋ค.
์ก๋ฌด ๋น์ค์ด ์์จ์ฑ ๋ชฉํ๊ฐ 0์ผ๋ก ๋ชฐ์๊ฐ๋ ์ซ์์ด๋ฉฐ, ์ธํ
ํธ๋ณ๋ก ๋ถํด๋ฉ๋๋ค.
- **๋ถํ์ํ ๋ฃจํ ์ค๋จ.** ์ง์ง ์ง๋ฌธ์ด ์๋๋ผ ์น์ธยท์ผ์์ ์ง ๋ง์ฐฐ๋ก ๋ฉ์ถ ๊ฒ์, ์ค์ผ ์
์๋ ๋ญ๋น๋ก ์
๋๋ค.
๋ชจ๋ ์ซ์๋ ๊ธฐ๋ก๋ ํน์ ์ ์ด๋ ์คํ์ผ๋ก ์ถ์ ๋๋ฉฐ, (intent, task) ์ธ์คํด์ค๋ณ๋ก ํค๊ฐ
๋งค๊ฒจ์ ธ ์ธํ
ํธ๋ฅผ ๊ฐ๋ก์ง๋ฌ ์ฌ์ฌ์ฉ๋ task id๊ฐ ๊ฒฐ์ฝ ํ๋ฐ ํฉ์ณ์ง์ง ์์ต๋๋ค.
`yardlet trust --json`์ ์์จ์ฑ ์งํ๋ฅผ ๊ธฐ๊ณ ํ๋
๊ฐ๋ฅํ JSON์ผ๋ก ๋ด๋ณด๋ด๊ณ , ํฐ๋ฏธ๋ UI๋
๊ฐ์ ์ซ์๋ฅผ **Trust ํจ๋**(`T` ํค)์ ๋ณด์ฌ์ค๋๋ค. ๋ฆฌํฌํธ ์ ์ฒด๋ ์ฝ๊ธฐ ์ ์ฉ์
๋๋ค. ๋ณด๊ณ ํ
๋ฟ, ์ค์ค๋ก ๋ผ์ฐํ
์ด๋ ์ ์ฑ
์ ๋ฐ๊พธ์ง ์์ต๋๋ค.
๊ณ์ฐ ์ธ๋ถ์ฌํญ: [docs/memory-trust-mining.md](docs/memory-trust-mining.md).
## ๊ฒฐ๊ณผ ๋ง์ด๋ (Outcome Mining)
๊ฐ์ ํ
๋ ๋ฉํธ๋ฆฌ๊ฐ ํ์ต ๋ฃจํ๋ฅผ ๋จน์
๋๋ค. `yardlet harness review`๋ ์๋ ํ์ต๋ ๊ท์น๊ณผ
์คํฌ์ eval ์ ์์ ํจ๊ป ๋ณด์ฌ์ฃผ๊ณ , ๊ทธ ์์ ์๊ณ๊ฐ์ ๋์ **๋ง์ด๋๋ ๊ด์ฐฐ**์ ๋๋ฌ๋
๋๋ค.
no-result ๋น์จ์ด ๋์ ์์ปค(๊ท์น์ผ๋ก ๋ค๋ฃฐ ๋งํ ์ถ๋ ฅ-๊ณ์ฝ ๋ฌธ์ ), ๋๋ Done์ ๋๋ฌํ๊ธฐ๊น์ง
ํ๊ท ์๋ ํ์๊ฐ ๋ง์ ์์
์ข
๋ฅ(์คํฌ์ด๋ ๋ ๋ ์นด๋ก์ด ์์ฉ ์กฐ๊ฑด์ ์ํจ)๊ฐ ๊ทธ๊ฒ์
๋๋ค.
์ด๊ฒ๋ค์ **์ ์์ผ ๋ฟ์
๋๋ค.** ๋ง์ด๋์ ๋ฐ๋ณต๋๋ ๊ฒฐ์ ๋ก ์ ๊ฒฐ๊ณผ๋ฅผ ๊ฐ๋ฆฌํค๋ฉฐ ํ๋ค์ค ๊ฐ์ ์
์ ์ํ๊ณ , ๊ท์นยท์คํฌยท์ค์ฝํ ๋ณ๊ฒฝ์ ๋น์ ์ด ์ ์ฉํฉ๋๋ค. ํ
๋ ๋ฉํธ๋ฆฌ๋ ์ค์ค๋ก ํ๋ค์ค๋ฅผ
๋ค์ ์ฐ์ง ์์ต๋๋ค. ์ด๊ฒ์ด ๋ฃจํ๊ฐ ๋ณต๋ฆฌ๋ก ์์ด๋ ๋ฐฉ์์
๋๋ค. ํ ์คํ์ ๊ฒฐ์ ๋ก ์ ๊ฒฐ๊ณผ๊ฐ
๋ค์ ์คํ์ ๋ ๋ ์นด๋กญ๊ฒ ๋ง๋๋ ๊ฐ์ด๋๊ฐ ๋ฉ๋๋ค.
์๊ณ๊ฐ: [docs/memory-trust-mining.md](docs/memory-trust-mining.md).
## ํฐ๋ฏธ๋ UI ๋จ์ถํค
ํฐ๋ฏธ๋ UI(`yardlet`๋ฅผ ์๋ธ๋ช
๋ น ์์ด ์คํ)๊ฐ ์ธ์
์ ๋ค๋ฃจ๋ ์ฃผ๋ ๋ฐฉ๋ฒ์
๋๋ค. Home
ํ๋ฉด์์:
| ํค | ๋์ |
| --- | --- |
| `n` | ์ ์์
: ์์ฒญ ์
๋ ฅ (idle์ผ ๋). |
| `r` | ๋ค์ ์์
์คํ. |
| `A` | ํ ์๋ ๋น์ฐ๊ธฐ(auto-drain). |
| `t` | Tidy: ์ํฌ์คํ์ด์ค ์ํ ์๊ฐ ์น์ (์ค๋๋ ๊ฒ์ดํธ ์ด๊ด, ์คํ ๋ถ๊ฐ ์์
defer, ์์ง๋ ์ธํ
ํธ ๋ง๋ฌด๋ฆฌ). |
| `p` | ๋ค์ ์์
์น์ธ. ๋๋ ์ธ ์ค์๋ graceful pause ์์ฒญ. |
| `a` | ์ฌ์ฉ์๋ฅผ ๊ธฐ๋ค๋ฆฌ๋ ์์
(NeedsUser)์ Answer ์ด๊ธฐ. ์์ปค ์ถ๋ ฅ๊ณผ ๋ํ ๋ฌธ๋งฅ์ ํจ๊ป ํ์. |
| `d` | ์ ํํ ์์
์ ๊ฒฐ์ ์ผ๋ก defer. |
| `v` | ์ ํํ Deferred ์์
์ revive. |
| `Esc` | ์คํ ์ค์ธ ์์ปค ์ค์ง. |
| `โ` / `โ` | ํ ํ์, ๋์ ์ง๋๋ฉด ์์ปค ํจ๋. |
| `Enter` | ์ ํํ ์์
์ ๋ค์ ๋์ ์คํ (run / answer / ์น์ธ ํํธ / monitor / handoff), ๋๋ ํ๋ฅผ ์ง๋ ์์ปค ํ ๊ธ. |
| `Space` / `Enter` | (์์ปค ํจ๋์์) ์ ํํ ์์ปค on/off ํ ๊ธ. |
| `i` | intent ๊ณ์ฝ ๋ณด๊ธฐ. |
| `h` | ์ต์ handoff ๋ณด๊ธฐ. |
| `T` | ์ ๋ขฐยท์์จ์ฑ ํจ๋ (`yardlet trust`์ ๊ฐ์ ์ซ์). |
| `R` | ๋ฆฌํฌํธ/ํ์คํ ๋ฆฌ ๋ธ๋ผ์ฐ์ . |
| `m` | ์์ปค ์ค์๊ฐ ์ถ๋ ฅ(Monitor). |
| `s` | ์ค์ (์คํ ์ค์๋ ์ด ์ ์์). |
| `g` | ์๋ก๊ณ ์นจ, ์์ปค readiness ์ฌprobe. |
| `l` | ์ธ์ด ํ ๊ธ. |
| `f` | ์ ๊ทผ ์์ค ํ ๊ธ (sandboxed / full). |
| `u` | ์ค์น๋ ์
๋ฐ์ดํธ๋ณธ์ผ๋ก ์ฌ์์ (๊ฐ๋ฅํ ๋). |
| `q` / `Ctrl+C` | ์ข
๋ฃ. |
ํ๊ธ ์ํ์์๋ ์์ด๋ก ๋ฐ๊พธ์ง ์๊ณ ๊ทธ๋๋ก ๋์ํฉ๋๋ค: ํ๊ธ ์๋ชจ๊ฐ ๊ฐ์ ๋จ์ถํค์
๋งคํ๋ฉ๋๋ค.
## ๋ช
๋ น์ด
| ๋ช
๋ น์ด | ์ฉ๋ |
| --- | --- |
| `yardlet` | ํฐ๋ฏธ๋ UI ์ด๊ธฐ (์ต์ด ์ฌ์ฉ ์ ์๋ ์ด๊ธฐํ). |
| `yardlet init [--force]` | `.agents/` ์ํ๋ฅผ ๋ช
์์ ์ผ๋ก ์ค์บํด๋ฉ (์ ํ). |
| `yardlet new "" [--worker ]` | ์์ฒญ์ ์ธํ
ํธ ๊ณ์ฝ + ํ๋ก ๊ณํ. |
| `yardlet goal "" [--verify "..."]` | ์ต์คํ๋ ์ค ๋ ์ธ: ๊ณํ์ ๊ฑด๋๋ฐ๊ณ ํ๋์ ๋ชฉํ๋ฅผ ๊ฒ์ฆ ์กฐ๊ฑด๊น์ง ์คํ. |
| `yardlet new "..." --image ` | ๋ก์ปฌ ์ด๋ฏธ์ง๋ฅผ ๋ชฉํ์ ์ฒจ๋ถ (์์ฒญ์์ ์๋ ๊ฐ์ง๋ ๋จ). |
| `yardlet add "" [--depends-on ]` | ์ฌ๊ณํ ์์ด ์ฌ์ฉ์ ์์ฑ ์์
์ ํ์ฌ ํ์ ์ถ๊ฐ. |
| `yardlet queue` | ์์
ํ ๋์ด. |
| `yardlet tidy` | ์ํฌ์คํ์ด์ค ์ํ ์๊ฐ ์น์ : ์ค๋๋ ๊ฒ์ดํธ ์ด๊ด, ์คํ ๋ถ๊ฐ ์์
defer, ์์ง๋ ์ธํ
ํธ ์์นด์ด๋ธ. |
| `yardlet status [--json]` | ์ํฌ์คํ์ด์ค, ์ธํ
ํธ, ํ, ์์ปค ์์ฝ. |
| `yardlet worker status` | ์์ปค ์ค๋น ์ํ ๋ฐ ๋น๋ง-env ์์ ์ฑ. |
| `yardlet inspect repo [--json]` | ์ ๋ ดํ ๊ฒฐ์ ๋ก ์ ๋ก์ปฌ ์ฆ๊ฑฐ. |
| `yardlet packet --task --worker [--dry-run]` | ์์ปค ํจํท ์ปดํ์ผ. |
| `yardlet run --next [--execute] [--worker ]` | ๋ค์ ์์
์ค๋น(๊ธฐ๋ณธ) ๋๋ ์คํ. |
| `yardlet run --auto [--parallel N]` | ํ๋ฅผ ์์จ์ ์ผ๋ก ๋น์; ์ ํ์ ์ผ๋ก N๊ฐ ๋์ ์คํ. |
| `yardlet answer ""` | ์ฌ์ฉ์๋ฅผ ๊ธฐ๋ค๋ฆฌ๋ ์์
(NeedsUser)์ ๋ตํ๊ณ ์ฌ๊ฐ. |
| `yardlet approve ` | ๊ฒ์ดํธ๋ ์์
์ ๋จ๋ฐ์ฑ ์น์ธ ๋ถ์ฌ. |
| `yardlet defer [reason]` | ์์
ํ๋๋ฅผ ๊ฒฐ์ ์ผ๋ก ๋ฐ๋ก ์น์๋ (Deferred: ๋๊ธฐ๋ ์๋ฃ๋ ์๋). |
| `yardlet defer --cascade [reason]` | ๊ทธ ๋ค์ ์ข์ด๋ queued ์์
๊น์ง ์ ์ด์ ์ผ๋ก ํจ๊ป deferํ๊ณ ํ๋์ revive ๊ทธ๋ฃน์ผ๋ก ๊ธฐ๋ก. |
| `yardlet revive [--group]` | Deferred ์์
์ Queued๋ก ๋์ด๋ฆผ; `--group`์ ํจ๊ป ๊ธฐ๋ก๋ cascade ๊ทธ๋ฃน์ ๋์ด๋ฆผ. |
| `yardlet access ` | ๊ธฐ๋ณธ ์์ปค ๊ถํ ์์ค ์ค์ . |
| `yardlet handoff` | ์ต์ ์คํ์ ํธ๋์คํ ์ถ๋ ฅ. |
| `yardlet report` | ์ธํ
ํธ์ ์ต์ข
๋ฆฌํฌํธ ์ถ๋ ฅ (๋ชจ๋ ์์
์ ์ง๊ณ). |
| `yardlet memory [init \| refresh [--stale-only]]` | ํ๋ก์ ํธ ๋ฉ๋ชจ๋ฆฌ ์ธ๋ฑ์ค ๋์ด(์ค๋๋์์ ์ ์๋ ๋ฌธ์ ํ์); `init`/`refresh`๋ ์์ปค๊ฐ ์ด์ํ ๋ฌธ์๋ฅผ Yardlet ์ฝ์ด๊ฐ ๊ธฐ๋ก. |
| `yardlet memory scout` / `yardlet memory apply --run ` | ๊ฒฉ๋ฆฌ ๋ณต์ฌ๋ณธ์ ๋ณ๋ ฌ๋ก ์ ๊ฒํด ์ ์ฉ ์ ๋ฉ๋ชจ๋ฆฌ ํ๋ณด๋ฅผ ๋ง๋ค๊ณ ์ฝ์ด ๊ธฐ๋ก์๋ฅผ ํตํด ์ ์ฉ. |
| `yardlet watch [--interval N] [--until CONDITION] [--max-runs N] [--max-seconds N] [-- ]` | ๋ก์ปฌ ๋ช
๋ น์ด๋ ๊ฒฝ๋ก๋ฅผ foreground์์ ์ ํ๋ ์กฐ๊ฑด๊น์ง ๊ด์ฐฐ. |
| `yardlet eval fixtures [--json] [--fixture ]` | ๊ฒฉ๋ฆฌ๋ ๊ฒฐ์ ๋ก ์ ๋ฉ์ปค๋์ฆ fixture ์คํ. ํ๋๋ผ๋ ์คํจํ๋ฉด non-zero๋ก ์ข
๋ฃ. |
| `yardlet trust [--json]` | ์คํ ํ
๋ ๋ฉํธ๋ฆฌ์ ์ ์ด ๊ฐ์ฌ ๋ก๊ทธ ๊ธฐ๋ฐ ์ ๋ขฐ+์์จ์ฑ ๋ฆฌํฌํธ (์ฝ๊ธฐ ์ ์ฉ); `--json`์ ์งํ๋ฅผ ๋ด๋ณด๋. |
| `yardlet recover` | ์ค๋จ๋ ์ธ์
์์ ์ํ ๋ณต๊ตฌ (๊ณ ์ ์คํ, ๋ฏธํ์ธ ๊ณํ). |
| `yardlet skill list / suggest / equip / unequip / research / create / apply / review` | ์ ์ฅ์ ๋ถ๋ฅ, managed 11-skill catalog ์ฌ์ฉ, ์คํฌ ์ฅ์ฐฉยท์์ฑยท์ ์ํ. Core skill์ ์ธ๋ถ library ์์ด ์ค์น๋๊ณ overlay๋ task ๋ฒ์์์๋ง ํ์ฑํ. |
| `yardlet harness review` | ์๋ ํ์ต๋ ๊ท์น๊ณผ ์คํฌ์ eval ์ ์์ ํจ๊ป ํ์, ๊ทธ๋ฆฌ๊ณ ๋ง์ด๋๋ ๊ฐ์ ํ๋ณด. |
| `yardlet rubric drift / sync [--adopt-text]` | ์ํฌ์คํ์ด์ค ๋ฃจ๋ธ๋ฆญ์ด ํ
ํ๋ฆฟ์ ์ผ๋ง๋ ๋ค์ฒ์ก๋์ง ์ง๋จํ๊ณ ๊ฐ์ ์ ๋ณํฉ (๋นํ๊ดด์ ). |
| `yardlet routing review` | ์์
์ข
๋ฅ๋ณ ์์ปค ์ฑ๊ณต ํต๊ณ + ์ ์ ์ ํธ๋. |
| `yardlet routing apply --kind K --worker W` | ์์
์ข
๋ฅ์ ์์ปค ๊ณ ์ (์ฌ๋ ์น์ธ). |
์์ปค๊ฐ ์
๋ ฅ์ด ํ์ํ ๋ ์์
์ ์ง๋ฌธ๊ณผ ํจ๊ป **NeedsUser** ์ํ๋ก ๋จ๊น๋๋ค.
`yardlet status`(๋ฐ TUI)๊ฐ ์ง๋ฌธ์ ๋ณด์ฌ์ฃผ๋ฉฐ, `yardlet answer "..."`(๋๋ TUI์์ `a`)๋ก
๋ตํ๋ฉด Yardlet์ด ๋น์ ์ ๋ต์ ๋ฐ์ํด ์์
์ ๋ค์ ์คํํฉ๋๋ค. TUI Answer ํ๋ฉด์ ํ์ฌ
์ธํ
ํธ์ ์์ปค ์ถ๋ ฅ๊ณผ ๊ด๋ จ ๋ํ๋ฅผ ์คํฌ๋กค ๊ฐ๋ฅํ๊ฒ ๋ณด์ฌ์ฃผ๋ฉฐ, ์ถ๋ ฅ์ด ์์ผ๋ฉด ์ปดํฉํธ ์์ฝ์
๋์ ํ์ํฉ๋๋ค.
## ์ธ์ด
์์ปค๊ฐ ์์ฑํ๋ ๋ด์ฉ(๊ณํ ์์ฝ, ์์
์ ๋ชฉ, ํธ๋์คํ, ์ง๋ฌธ)์ ๋น์ ์ ์ธ์ด๋ฅผ ๋ฐ๋ฆ
๋๋ค.
๊ธฐ๋ณธ์ ์ผ๋ก Yardlet์ ์์ฒญ์์ ์ธ์ด๋ฅผ ์๋ ๊ฐ์งํ๋ฏ๋ก, ํ๊ตญ์ด ์์ฒญ์๋ ํ๊ตญ์ด ๊ณํ๊ณผ
ํธ๋์คํ๊ฐ ๋์ค๊ณ ์ฝ๋์ ์๋ณ์๋ ์์ด๋ก ์ ์ง๋ฉ๋๋ค. ํ๋๋ก ๊ฐ์ ํ๋ ค๋ฉด
`.agents/yardlet.yaml`์ `language:`๋ฅผ `ko`/`en` ๋ฑ์ผ๋ก ์ค์ ํ์ธ์.
## ๊ถํ
์์ปค๋ ๊ธฐ๋ณธ์ ์ผ๋ก ๊ฒฝ๊ณ๊ฐ ์๋ ์๋๋ฐ์ค์์ ์คํ๋ฉ๋๋ค(๋ก์ปฌ ํ์ผ๊ณผ ํ
์คํธ๋ง,
๋คํธ์ํฌ ์์). ์ด๋ ๊ณ์ธต์ ์ผ๋ก ๊ตฌ์ฑ๋ฉ๋๋ค.
1. **๊ธฐ๋ณธ์ด ์์ **: codex `workspace-write`, claude `acceptEdits`.
2. **์ฐํ๊ฐ ์๋๋ผ ๋ณด๊ณ **: ์์ปค๊ฐ ๋คํธ์ํฌ, ์ค์น, ํ๋ก๋์
, ๋๋ ํ๊ดด์ ๋์์ด
ํ์ํ๋ฉด ์กฐ์ฉํ ์คํจํ์ง ์๊ณ **NeedsUser**๋ก ๋ฉ์ถ๊ณ ๋ฌป์ต๋๋ค. ๋น์ ์ด ์ ๊ทผ์
ํ์ฉํ๊ณ ์ฌ๊ฐํฉ๋๋ค.
3. **๋ช
์์ ์์ค์ปฌ๋ ์ด์
**: `yardlet run --next --execute --full-access`(๋๋
`yardlet answer --full-access`)๋ ๊ทธ ์คํ์ ํํด ์๋๋ฐ์ค๋ฅผ ํด์ ํฉ๋๋ค. ๊ธฐ๋ณธ์
๊บผ์ ธ ์์ผ๋ฉฐ, ์๋์ด ์๋๋ผ ์ฌ๋์ด ๋ถ์ฌํ๋ ๊ถํ์
๋๋ค.
## ์์ปค ๋ผ์ฐํ
ํ๋๋๋ `.agents/workers.yaml`์ ํธ์ง ๊ฐ๋ฅํ ๋ฃจ๋ธ๋ฆญ(๊ฐ ์์ปค์ `best_for` +
`cost_bias` ๋ค์ด์ผ)์ ๋ฐ๋ผ ์์
๋ณ ์์ปค๋ฅผ ๊ณ ๋ฆ
๋๋ค. ์คํ ์์ ์ ์ ํ์ ๊ฒฐ์ ๋ก ์ ์
๋๋ค.
์ ํธ ์์ปค -> ์ค๋น ์ํ ์ ๊ฒ -> ์ค๋น๋ ๋ค์ ์์ปค๋ก ํด๋ฐฑ. ๋ชจ๋ ์คํ์ ๊ฒฐ๊ณผ๋ฅผ
`.agents/telemetry/runs.jsonl`์ ๊ธฐ๋กํ๋ฉฐ, `yardlet routing review`๊ฐ ์ด๋ฅผ ์ง๊ณํด
ํ๋กํ ๋ณ๊ฒฝ์ *์ ์*ํฉ๋๋ค(์: "claude-code๊ฐ ๋ฆฌํฉํฐ์์ ์ด๊ธด๋ค"). ์ด๋ฅผ
`yardlet routing apply`๋ก ์ ์ฉํฉ๋๋ค. ํ
๋ ๋ฉํธ๋ฆฌ๋ ์ค์ค๋ก ๋ผ์ฐํ
์ ๋ฐ๊พธ์ง ์์ต๋๋ค.
์ค๊ณ: [docs/routing-and-telemetry.md](docs/routing-and-telemetry.md).
`run --next`๋ ์คํ์ ์ค๋นํ๊ณ ๊ธฐ๋ณธ์ ์ผ๋ก ์์ปค๋ฅผ ํธ์ถํ๊ธฐ *์ ์* ๋ฉ์ถฅ๋๋ค. ๊ตฌ๋
๊ธฐ๋ฐ ์์ปค๋ฅผ ๋์ฐ๋ฉด ์ฌ์ฉ๋์ด ์๋น๋๊ธฐ ๋๋ฌธ์
๋๋ค. ์ค์ ๋ก ์คํํ๋ ค๋ฉด `--execute`๋ฅผ
์ ๋ฌํ์ธ์.
์์ปค๋ Home ์์ปค ํจ๋์์ ์ผ๊ณ ๋ ์ ์์ต๋๋ค(ํ๋ฅผ ์ง๋ ํ์ดํ ํค, ๊ทธ๋ค์
Enter/Space). ๋นํ์ฑํ๋ ์์ปค๋ ๋ผ์ฐํ
๊ณผ ๊ณํ์์ ๊ฑด๋๋๋๋ค.
### ์์ปค ์ถ๊ฐํ๊ธฐ
Codex์ Claude Code๋ ๋ด์ฅ ์ด๋ํฐ๋ฅผ ๊ฐ์ง๋๋ค. ๋ค๋ฅธ ๋ชจ๋ ๊ตฌ๋
๊ธฐ๋ฐ CLI๋
`.agents/workers.yaml`๋ง์ผ๋ก ์ถ๊ฐํ ์ ์์ต๋๋ค. ํธ์ถ ํ
ํ๋ฆฟ์ ์ฃผ๋ฉด Yardlet์ด ๋์ผํ
๊ณ์ฝ(stdin์ผ๋ก ํจํท -> ๊ฒฐ๊ณผ ํ์ผ ์ถ๋ ฅ)์ ํตํด ๊ทธ๊ฒ์ ๊ตฌ๋ํฉ๋๋ค. ํ๋ ์ด์คํ๋:
`{run_dir}`, `{model}`, `{effort}`, `{image}`.
```yaml
- id: mytool
best_for: "..." # ํ๋๋ ๋ฃจ๋ธ๋ฆญ
invocation:
command: mytool # --version ์ง์ ํ์ (์ค๋น ์ํ ํ๋ก๋ธ)
supports_noninteractive: true
args: ["run", "--json", "--out", "{run_dir}"]
sandbox_args: ["--sandbox"] # ๊ธฐ๋ณธ ์ ๊ทผ ์์ค
full_access_args: ["--yolo"] # ํ ์ก์ธ์ค๊ฐ ํ์ฉ๋ ๋๋ง
model_args: ["--model", "{model}"] # ๋ชจ๋ธ์ด ์ค์ ๋๋ฉด ์ถ๊ฐ๋จ
effort_args: ["--effort", "{effort}"]
image_args: ["-i", "{image}"] # ์ฒจ๋ถ ์ด๋ฏธ์ง๋ง๋ค ๋ฐ๋ณต๋จ
```
์์ปค๋ ์ํฌ์คํ์ด์ค์ ํ์ผ์ ์ธ ์ ์์ด์ผ ํฉ๋๋ค(๊ทธ๊ฒ์ด ๊ฒฐ๊ณผ๊ฐ ๋์์ค๋
๋ฐฉ์์
๋๋ค). ๊ทธ ์๋ธํ๋ก์ธ์ค env๋ ํ๋กํ์ด `pass_env`๋ก ๋ณ์๋ฅผ ๋ค์ ์ตํธ์ธํ์ง
์๋ ํ ์ ํ๋ฉ๋๋ค.
์ํ๊ณ์ ์์ด์ ํธ๋ค์ด Yardlet์ ๊ณต๊ธ ์ธก์
๋๋ค.
[oh-my-pi](https://github.com/can1357/oh-my-pi)(`omp`), OpenCode, Gemini CLI,
๋๋ ๋น์ ์ด ๋ง๋ API ๊ธฐ๋ฐ CLI ๊ฐ์ ํฐ๋ฏธ๋ ์์ด์ ํธ ๋ชจ๋๊ฐ ๊ฐ์ ํ
ํ๋ฆฟ์ ๋ง์ต๋๋ค.
์น์๋ฅผ ๋ฑ๋กํ๊ณ , ์์
๋ณ๋ก ๊ต์ฒดํ๊ณ , ๊ธฐ๋ก์ ์ ์งํ์ธ์.
## ์ญํ ํ๋กํ
๊ฐ ์์
์ ์ญํ ์๋์์ ์คํ๋ฉ๋๋ค. ์์
์ข
๋ฅ์์ ํ์๋, ์์ปค ์์ ์น๋ ํ๋กฌํํธ
๋ชจ๋์
๋๋ค. `implementation` -> **builder**, `review` -> **reviewer**,
`research` -> **researcher**, `safety` -> **security**. ๊ฐ์ Codex/Claude ์ธ์
์ด
์ญํ ๋ณ ์์
๊ท์น์ ๋ฐ์ต๋๋ค(๋ฆฌ๋ทฐ์ด๋ file:line ์ฆ๊ฑฐ๋ฅผ ์ธ์ฉํ๊ณ ์ฝ๋๋ฅผ ๋ค์ ์ฐ์ง
์์ผ๋ฉฐ, ๋ฆฌ์์ฒ๋ ์ฝ๋๋ฅผ ๋ณ๊ฒฝํ์ง ์๊ณ , ๋ณด์์ ์ ๋์ ์ผ๋ก ๊ฐ์ฌํ๋ฉฐ ๋น๋ฐ ๊ฐ์ ๊ฒฐ์ฝ
์ถ๋ ฅํ์ง ์์ต๋๋ค). ์ํฌ์คํ์ด์ค๋ณ๋ก ์ญํ ์ ํ์ฅํ๋ ค๋ฉด `.agents/agents/.md`๋ฅผ
์์ฑํ์ธ์. ํด๋น ์ญํ ์ ํจํท์ ๋ง๋ถ์ฌ์ง๋๋ค.
## ๋ณ๋ ฌ ์คํ
ํ๋๋๋ ์ด๋ค ์์
์ด ์ง์ง๋ก ์๋ก ์์กดํ๋์ง(`depends_on`) ํ์ํ๊ณ , ๋๋จธ์ง๋ ๋ชจ๋
๋
๋ฆฝ์ ์
๋๋ค. ๋ณ๋ ฌ์ ์ผ๋ฉด ์๋ ๋๋ ์ธ์ด ๋
๋ฆฝ ์์
์ ์ต๋ N๊ฐ๊น์ง ๋์์ ์คํํ๋ฉฐ,
๊ฐ๊ฐ `yard/` ๋ธ๋์น์ ์์ฒด git worktree์์, ์๋ก ๋ค๋ฅธ ์์ปค์์ ์คํ๋ ์๋
์์ต๋๋ค. ์์ปค๋ ๋ณ๋ ฌ๋ก ์คํ๋์ง๋ง ํ ์ํ๋ ๋จ์ผ ์์ฑ์๋ฅผ ์ ์งํ๊ณ ๊ฒฐ๊ณผ๋ ์์ฐจ์ ์ผ๋ก
๋จธ์ง๋ฉ๋๋ค. ๋จธ์ง ์ถฉ๋์ ์ ๋ ์๋ ํด๊ฒฐ๋์ง ์์ต๋๋ค(์์
์ Partial๋ก ๋จ์ด์ง๊ณ
worktree๋ ๊ฒ์ฌ๋ฅผ ์ํด ๋ณด์กด๋ฉ๋๋ค). ๊ธฐ๋ณธ์ ๊บผ์ ธ ์๊ณ , Settings("Parallel tasks"),
`.agents/yardlet.yaml`์ `max_parallel`, ๋๋ `yardlet run --auto --parallel 3`์ผ๋ก
์ตํธ์ธํฉ๋๋ค. ๊นจ๋ํ git ํธ๋ฆฌ๊ฐ ํ์ํ๋ฉฐ, ๊ทธ๋ ์ง ์์ผ๋ฉด Yardlet์ ์์ฐจ ์คํ์ผ๋ก
ํด๋ฐฑํฉ๋๋ค.
์์
๋ด๋ถ์์ ์์ปค๋ ์์ ๋กญ๊ฒ ์์ ์ ์๋ธ์์ด์ ํธ๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค. Yardlet์
ํ ๋ณ๋ ฌ์ฑ์ ์ธ์
์ ๋์ด ์ด์๋จ๊ณ , ์์ปค๋ฅผ ๊ฐ๋ก์ง๋ฅด๊ณ , ์ฌ๋ ๊ฒ์ดํธ๋ฅผ ํต๊ณผํด์ผ ํ๋
์์
์ ์ํ ๊ฒ์
๋๋ค. ์ค๊ณ: [docs/parallel-queue.md](docs/parallel-queue.md).
## Git ๋ง๋ฌด๋ฆฌ
์๋ push๋ ์ฌ์ฉ์๊ฐ ์์ ํ๋ ๋ณ๋์ ์๋ฃ ์ ์ฑ
์ด๋ฉฐ ๊ธฐ๋ณธ์ ๊บผ์ ธ ์์ต๋๋ค.
`yardlet init`์ ๋ช
์์ ์ผ๋ก ๋นํ์ฑํ๋ ๋ธ๋ก์ ์์ฑํ๊ณ , ์ด ๋ธ๋ก์ด ์๋ ๊ธฐ์กด
์ํฌ์คํ์ด์ค๋ ๋นํ์ฑ ์ํ๋ฅผ ์ ์งํฉ๋๋ค. ์ด๋ฆ์ด ์๋ remote, ์์ ํ branch ref,
๊ทธ๋ฆฌ๊ณ ํต๊ณผํด์ผ ํ ์์๋๋ก ๊ฒ์ฌ๋ฅผ ์ค์ ํฉ๋๋ค.
```yaml
git_finish:
auto_push: false
remote: safe-remote
target_ref: refs/heads/main
pre_push_checks:
- name: format
command: cargo fmt --check
- name: tests
command: cargo test
```
์ด ์ ์ฑ
์ ๊ฒํ ํ ๋ค `auto_push: true`๋ก ๋ฐ๊พธ๋ฉด ์ตํธ์ธ๋ฉ๋๋ค. ๊ทธ๋ ๋ค๊ณ ์์์ commit์ด
push ๊ฐ๋ฅํ ๊ฒ์ ์๋๋๋ค. Yardlet์ worktree ๊ธฐ์ค์ ๊ณผ ํด๋น run์ด ๋ง๋ ์ ํํ commit
์งํฉ์ ๊ธฐ๋กํ๊ณ , ๊ธฐ์ค์ ์์ ์๋ก ๋๋ฌ ๊ฐ๋ฅํ commit์ด ๊ทธ ์์ ์งํฉ๊ณผ ์ ํํ ๊ฐ์ ๋๋ง
ํตํฉ OID๋ฅผ ์ธ์ ํฉ๋๋ค. remote ๋์๋ ์ฌ์ ํ ๊ธฐ์ค์ ๊ณผ ๊ฐ์์ผ ํฉ๋๋ค. ๋ฐ๋ผ์ hook,
๋ค๋ฅธ ์ธ์
๋๋ ๋ก์ปฌ ์๋ํ๊ฐ ์ถ์ฒ ๋ถ๋ช
commit์ ๋ผ์ ๋ฃ์ผ๋ฉด push ์ ์ fail-closed๋ก
์ค๋จํฉ๋๋ค.
๊ฐ์ Git common directory, remote, target ref๋ฅผ ๋ง๋ฌด๋ฆฌํ๋ ์คํ์ ์ ํ ์๊ฐ์ด ์๋
๋ก์ปฌ lock์ผ๋ก ์ง๋ ฌํ๋ฉ๋๋ค. lock์ ์ก์ ๋์ ํ์ฌ branch์ `HEAD`๊ฐ target ๋ฐ ์์
OID์ ์ผ์นํ๊ณ , push ๋ชฉ์ ์ง๊ฐ ํ๋์ด๋ฉฐ, `.agents/` ๋ฐ์ ๋ณ๊ฒฝ์ด ์์ด์ผ ํฉ๋๋ค. ๊ทธ๋ค์
์ค์ ๊ฒ์ฌ๋ฅผ ์์๋๋ก ์คํํฉ๋๋ค. ๊ฒ์ฌ ํ์๋ `HEAD`, worktree, fetch/push ๋ชฉ์ ์ง์
remote target ref๋ฅผ ๋ค์ ํ์ธํ๋ฉฐ, ๋์ ๋ณ๊ฒฝ์ด ํ๋๋ผ๋ ์์ผ๋ฉด push 0ํ๋ก ๋ฉ์ถฅ๋๋ค.
push๋ ํญ์ ๋ช
์์ ์ธ `:` refspec์
๋๋ค. force,
force-with-lease, ref ์ญ์ , history rewrite ๊ฒฝ๋ก๋ ์์ต๋๋ค. ๊ทธ ๋ค Yardlet์ ๋ณ๋์
`git ls-remote --refs` ์กฐํ๋ฅผ ์คํํ๊ณ remote OID๊ฐ ๊ณ ์ ๋ ์์ OID์ ๊ฐ์ ๋๋ง ์ฑ๊ณต์
๋ณด๊ณ ํฉ๋๋ค. ๊ฐ์ ๋ง๋ฌด๋ฆฌ๋ฅผ ๋ฐ๋ณตํ๋ฉด ์ถ๊ฐ push ์์ด `already_applied`๋ก ์๋ ดํฉ๋๋ค.
`auto_push: true`์ผ ๋๋ `pushed`์ ๋
๋ฆฝ ๊ฒ์ฆ๋ `already_applied`๋ง ์์
์ ์๋ฃํฉ๋๋ค.
๊ทธ ๋ฐ์ ๋ชจ๋ ๋ง๋ฌด๋ฆฌ ์ํ๋ ์์
, ๋ด์ธ๋ `run.yaml`, telemetry, ์ต์ข
๋ฆฌํฌํธ์ Trust
์ง๊ณ์์ ๋ฏธ์๋ฃ `Partial`๋ก ํฌ์๋ฉ๋๋ค. ๊ธฐ๋ณธ ๋นํ์ฑ ์ ์ฑ
์์๋ `disabled`๊ฐ ํ์
๋ง๋ฌด๋ฆฌ๊ฐ ์๋๋ฏ๋ก ์ผ๋ฐ ์์
์๋ฃ ๋ฐฉ์์ ๋ฌ๋ผ์ง์ง ์์ต๋๋ค.
| ๊ธฐ๋ก ์ํ | ์ฌ์ฉ์์๊ฒ ๋ณด์ด๋ ์๋ฏธ |
|---|---|
| `pushed` | ์ ํํ OID๊ฐ push๋๊ณ ๋
๋ฆฝ์ ์ผ๋ก ๊ฒ์ฆ๋์ต๋๋ค. |
| `already_applied` | remote์ ์ด๋ฏธ ์ ํํ OID๊ฐ ์์ด push๋ฅผ ์คํํ์ง ์์์ต๋๋ค. |
| `prepared` | ๋ด๊ตฌ pre-push ๊ธฐ๋ก์ ์์ง๋ง remote ๊ฒฐ๊ณผ๊ฐ ์์ง ํ์ ๋์ง ์์์ผ๋ฉฐ `recover`๊ฐ ๋์กฐํฉ๋๋ค. |
| `check_blocked` / `safety_blocked` | ์ค์ ๊ฒ์ฌ, ์์ ๊ถ ์ฆ๋ช
, lock ๋๋ ๋์ ์ํ ๊ฒ์ดํธ๊ฐ ์ฐจ๋จํ์ผ๋ฉฐ ๋ช
์์ ํด๊ฒฐ ์ ๊น์ง Partial์
๋๋ค. |
| `git_failed` | Git ์กฐํ ๋๋ push ๋ช
๋ น์ด ์คํจํ์ผ๋ฉฐ Partial๋ก ๋จ๊ณ remote ์ฑ๊ณต์ ์ฃผ์ฅํ์ง ์์ต๋๋ค. |
| `remote_mismatch` | push๋ ์ฑ๊ณต์ ๋ฐํํ์ง๋ง ๋
๋ฆฝ ๊ฒ์ฆ์ด ๋ถ์ผ์นํ๋ฏ๋ก Partial ํด๊ฒฐ ์ ์ remote๋ฅผ ํ์ธํด์ผ ํฉ๋๋ค. |
| `disabled` | ์ํฌ์คํ์ด์ค๊ฐ ์ตํธ์ธํ์ง ์์ Git ๋ง๋ฌด๋ฆฌ๊ฐ ์ผ๋ฐ ์๋ฃ๋ฅผ ๋ง์ง ์์ต๋๋ค. |
๋ชจ๋ ๊ฒฐ๊ณผ๋ `.agents/runs//git-finish.json`์ ๊ธฐ๋ก๋๊ณ run telemetry์ ์ต์ข
๋ฆฌํฌํธ์ ํฌ์๋ฉ๋๋ค. ๊ธฐ๋ก์๋ remote ์ด๋ฆ, target ref, ๊ธฐ์ค์ , run ์์ ๋ฐ ์์ OID,
push ์ ํ remote OID, ๊ฒ์ฌ ๊ฒฐ๊ณผ, push ํ๋๊ทธ, ์ฌ์ , ์๊ฐ์ด ํฌํจ๋ฉ๋๋ค. remote URL,
๊ฒ์ฌ ๋ช
๋ น๋ฌธ์ด๋ ์ถ๋ ฅ, credential, ํ๊ฒฝ๊ฐ์ ์ ์ฅํ์ง ์์ต๋๋ค.
Yardlet์ push๋ฅผ ํธ์ถํ๊ธฐ ์ ์ `prepared`๋ฅผ ๊ธฐ๋กํฉ๋๋ค. ์ค๋จ ํ `yardlet recover`๋
๊ฐ์ target lock ์๋์์ ์์ ๊ถ ๊ธฐ๋ก์ ๋ค์ ์ฝ๊ณ remote๋ฅผ ํ์ธํฉ๋๋ค. remote๊ฐ ์ด๋ฏธ
์์ OID๋ผ๋ฉด ์ถ๊ฐ push ์์ด `already_applied`๋ก ์๋ ดํฉ๋๋ค. ์์ง ๊ธฐ์ค์ ๊ณผ ๊ฐ๋ค๋ฉด ๊ฐ์
exact-OID push๋ฅผ ์ฌ์๋ํ ์ ์์ต๋๋ค. ๊ทธ ๋ฐ์ remote ๋๋ ๋ก์ปฌ ์ํ๋ fail-closed๋ก
์ค๋จํฉ๋๋ค. remote ๊ฒ์ฆ์ ๋๋ฌ์ง๋ง queue, `run.yaml` ๋๋ telemetry ๋ด์ธ์ด ๋๊ฒผ๋ค๋ฉด
๊ฒ์ฆ๋ ๊ฒฐ๊ณผ๋ฅผ ๋ฉฑ๋ฑํ๊ฒ ๋ค์ ํฌ์ํฉ๋๋ค. ๋ค๋ฅธ ์ฐจ๋จยท์คํจ ์ํ๋ ์กฐ์ฉํ ์ฌ์๋ํ๊ฑฐ๋
์๋ฃ๋ก ์น๊ฒฉํ์ง ์๊ณ , ์ฌ์ฉ์๊ฐ ๋ช
์์ ์ผ๋ก ํด๊ฒฐํ ๋๊น์ง Partial๋ก ๋จ์ต๋๋ค. ํ๋ก์ ํธ
๋๊ทธํธ๋ฉ๊ณผ ํ
์คํธ์๋ local bare remote๋ฅผ ์ฌ์ฉํ์ธ์. ์ด ๊ณ์ฝ์ Yardlet์ด ์์ ์ ๊ณต๊ฐ
`origin`์ pushํ๋ค๊ณ ์ฃผ์ฅํ์ง ์์ต๋๋ค.
## ํฌ๋์ ์์ ์ฑ
Yardlet ์ํ๋ ์ฌ์์์๋ ์ด์๋จ์ต๋๋ค. ์์ ์(๊ทธ๋ฆฌ๊ณ `yardlet recover`๋ฅผ ํตํด)
์ค๋จ๋ ์ธ์
์ ๋ณต๊ตฌํฉ๋๋ค. ์ด์ ์ธ์
์ด ๋น์ฉ์ ์น๋ ์ง๋ง ์ฝ์ง ์์ ๊ณํ ๊ฒฐ๊ณผ๋ ํ๋ก
ํก์๋๊ณ , ์๋ฃ๋ ๊ณ ์ ์คํ์ ํ๊ฐ๋์ด ๋จธ์ง๋๋ฉฐ(worktree ์คํ ํฌํจ), ๋๋์ง ์์ ๊ฒ์
๋ค์ ํ์ ๋ค์ด๊ฐ๋๋ค. ๋ด๊ตฌ `prepared` Git ๋ง๋ฌด๋ฆฌ๋ ์์ ๊ถ ๊ธฐ๋ก๊ณผ ํ์ฌ remote OID๋ก
๋์กฐ๋๊ณ , ๊ฒ์ฆ๋ ๊ฒฐ๊ณผ๋ ํ ๋ฒ๋ง ํฌ์๋๋ฉฐ, ๋ชจํธํ ์ํ๋ Partial๋ก ๋จ์ต๋๋ค.
## ๋น๋
```bash
cargo build
cargo test
cargo run -- init
```
๊ธฐ์ฌ: ๋น๋/ํ
์คํธ, ํต์ฌ ๋ถ๋ณ์, PR ์ ์ฐจ๋ [CONTRIBUTING.md](CONTRIBUTING.md) ์ฐธ๊ณ .
๋ค๋ฅธ ์์ปค ์ถ๊ฐ๋ ์ค์ ๋ง์ผ๋ก ๋ฉ๋๋ค("์์ปค ์ถ๊ฐํ๊ธฐ" ์ฐธ๊ณ ). ์ ์์ปค๋ฅผ ๋ถ์ด๋ PR์
ํ์ํฉ๋๋ค.
## ์ ๊ท ์ํ
Yardlet์ด ์ํ๋ฅผ ์์ ํ๋ฉฐ, ์์ปค๋ ๊ทธ๋ฌ์ง ์์ต๋๋ค. ์ ๊ท ์ํ๋ ๋์ ์ ์ฅ์์
`.agents/` ์๋์ ์กด์ฌํฉ๋๋ค.
```
.agents/
yardlet.yaml ์ํฌ์คํ์ด์ค ์ค์
intent-contract.yaml ํ์ฌ ๋ชฉํ / ์ค์ฝํ / ์์ฉ ์กฐ๊ฑด
work-queue.yaml ์์
*-policy.yaml ๋๊ตฌ / ์น์ธ / ์ํธ์์ฉ / ๋ฆฌ์์น / ๋น๋ง ์ ์ฑ
workers.yaml ์์ปค ํ๋กํ + ๋ผ์ฐํ
memory/ ์ง์๋๋ ์ํฌ์คํ์ด์ค ์ฌ์ค (ํ์ผ ํ๋์ ์ฌ์ค ํ๋, git ์ถ์ )
rules/ skills/ agents/ ํ๋ค์ค ์์ฐ (๊ท์น, ์คํฌ ์นดํ๋ก๊ทธ, ์ญํ ๋
ธํธ)
runs// ์คํ๋ณ ์ฐ์ถ๋ฌผ (๊ฒฐ๊ณผ, ๊ฒ์ฆ, ์ฒดํฌํฌ์ธํธ, ํธ๋์คํ, git-finish)
conversations/.yaml ์์ปค์๊ฒ ๋ค์ ์ด์ด์ง๋ needs-user ๋ํ ๊ธฐ๋ก
checkpoints/ ์ต์ ์ปดํฉํธ ์ฌ๊ฐ ์ง์
handoffs/ ๋๋ฃ๊ฐ ์ฝ์ ์ ์๋ ์์ฝ
telemetry/ runs.jsonl: ์คํ๋ณ ๊ฒฐ๊ณผ (์ ๋ขฐ + ๋ง์ด๋์ ์์ค)
transitions/.yaml ์์
๋ณ ์ํ ๋ณํ ๊ฐ์ฌ ๋ก๊ทธ (์์จ์ฑ ์งํ์ ์์ค)
intents/ ์์นด์ด๋ธ๋ ์์ง ์ธํ
ํธ (์์
์ด๋ ฅ ๋ณด์กด)
```
์ฌ์ฉ์ ์์ค์ ๋น๋ฐ์ด ์๋ ์ค์ ์ `~/.yardlet/` ์๋์ ์กด์ฌํฉ๋๋ค.
## ๋ผ์ด์ ์ค
MIT