์š”์•ฝ

๐Ÿ”— ์›๋ณธ: Reddit r/PiCodingAgent ยท zerostack ๊ณต์‹ ์‚ฌ์ดํŠธ

Pi๋ฅผ ๋””์ž์ธ ๋ ˆํผ๋Ÿฐ์Šค๋กœ ์‚ผ์•„ Rust๋กœ ๋งŒ๋“  ๋ฏธ๋‹ˆ๋ฉ€ ์ฝ”๋”ฉ ์—์ด์ „ํŠธ. JS ๊ธฐ๋ฐ˜ ์—์ด์ „ํŠธ(~700MB)์™€ ๋น„๊ตํ•ด ๊ทน๋„๋กœ ๋‚ฎ์€ ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋Ÿ‰(~16MB)์ด ํ•ต์‹ฌ ํŠน์ง•. GPL-3.0 ๋ผ์ด์„ ์Šค.


์ƒ์„ธ ๋ถ„์„

์„ฑ๋Šฅ ๋ฒค์น˜๋งˆํฌ

ํ•ญ๋ชฉ zerostack JS ๊ธฐ๋ฐ˜ ์—์ด์ „ํŠธ (๋น„๊ต)
์ฝ”๋“œ ๊ทœ๋ชจ ~13,000 LoC โ€”
๋ฐ”์ด๋„ˆ๋ฆฌ ํฌ๊ธฐ 12.9 MB โ€”
RAM (ํ‰๊ท ) ~16 MB ~700 MB
RAM (ํ”ผํฌ) ~24 MB โ€”
CPU (์œ ํœด) 0.0% โ€”
CPU (์ž‘์—…์ค‘) ~1.5% โ€”

๊ธฐ๋Šฅ ๋ชฉ๋ก

ํ•ต์‹ฌ ๊ธฐ๋Šฅ:

  • ๋ฉ€ํ‹ฐ ํ”„๋กœ๋ฐ”์ด๋” โ€” OpenRouter, OpenAI, Anthropic, Gemini, Ollama (+ OpenAI ํ˜ธํ™˜ ์—”๋“œํฌ์ธํŠธ)
  • ๊ถŒํ•œ ์‹œ์Šคํ…œ โ€” 5๋‹จ๊ณ„ (restrictive / readonly / guarded / standard / yolo), per-tool ํŒจํ„ด, ์„ธ์…˜ allowlist
  • ํ„ฐ๋ฏธ๋„ UI โ€” crossterm ๊ธฐ๋ฐ˜, ๋งˆํฌ๋‹ค์šด ๋ Œ๋”๋ง, ๋งˆ์šฐ์Šค ์ง€์›, ์Šคํฌ๋กค๋ฐฑ
  • ํ”„๋กฌํ”„ํŠธ ์‹œ์Šคํ…œ โ€” 10๊ฐœ ๋‚ด์žฅ ํ”„๋กฌํ”„ํŠธ, ๋Ÿฐํƒ€์ž„ ์ „ํ™˜ ๊ฐ€๋Šฅ (/prompt)
  • ์„ธ์…˜ ๊ด€๋ฆฌ โ€” ์ €์žฅ/๋ถˆ๋Ÿฌ์˜ค๊ธฐ/์žฌ๊ฐœ, ์ž๋™ ์••์ถ•
  • MCP ์ง€์› โ€” ์™ธ๋ถ€ ๋„๊ตฌ ์„œ๋ฒ„ ์—ฐ๊ฒฐ
  • ๋ฃจํ”„ ์‹œ์Šคํ…œ โ€” ์žฅ๊ธฐ ํƒœ์Šคํฌ์šฉ ๋ฐ˜๋ณต ์ฝ”๋”ฉ
  • Git Worktrees โ€” ๋ธŒ๋žœ์น˜๋ณ„ ์ž‘์—… ์›Œํฌํ”Œ๋กœ
  • ACP ์ง€์› โ€” ์—๋””ํ„ฐ ํ†ตํ•ฉ (Zed ๋“ฑ)
  • ์ƒŒ๋“œ๋ฐ•์Šค ๋ชจ๋“œ โ€” bubblewrap / zerobox ๊ฒฉ๋ฆฌ
  • Exa ๊ฒ€์ƒ‰ โ€” WebFetch & WebSearch ๋„๊ตฌ
  • ๋ณ‘๋ ฌ ์—์ด์ „ํŠธ โ€” --parallel ํ”Œ๋ž˜๊ทธ๋กœ ๋™์ผ ๋ ˆํฌ์—์„œ ์—ฌ๋Ÿฌ ์—์ด์ „ํŠธ ๋™์‹œ ์‹คํ–‰

๋‚ด์žฅ ํ”„๋กฌํ”„ํŠธ (10์ข…)

ํ”„๋กฌํ”„ํŠธ ์„ค๋ช…
code ๊ธฐ๋ณธ ์ฝ”๋”ฉ ๋ชจ๋“œ (TDD ์›Œํฌํ”Œ๋กœ)
plan ์ฝ”๋“œ ์—†์ด ํƒ์ƒ‰/๊ณ„ํš๋งŒ
review ์ฝ”๋“œ ๋ฆฌ๋ทฐ (์ •ํ™•์„ฑ, ์„ค๊ณ„, ํ…Œ์ŠคํŒ…, ์˜ํ–ฅ)
debug ์ˆ˜์ • ์ œ์•ˆ ์ „ ๊ทผ๋ณธ ์›์ธ ์ฐพ๊ธฐ
ask ์ฝ๊ธฐ ์ „์šฉ ๋ชจ๋“œ
brainstorm ์ฝ”๋“œ ์—†์ด ์•„์ด๋””์–ด ์„ค๊ณ„
frontend-design ๋…์ฐฝ์ ์ธ ํ”„๋กœ๋•์…˜ UI
review-security ์ทจ์•ฝ์  ์ฐพ๊ธฐ
simplify ๋™์ž‘ ๋ณ€๊ฒฝ ์—†์ด ๋ช…ํ™•์„ฑ ๊ฐœ์„ 
write-prompt ์—์ด์ „ํŠธ ํ”„๋กฌํ”„ํŠธ ์ƒ์„ฑ/์ตœ์ ํ™”

๊ถŒํ•œ ๋ชจ๋“œ

๋ชจ๋“œ CLI ํ”Œ๋ž˜๊ทธ ๋™์ž‘
restrictive -R ๋ชจ๋“  ์ž‘์—…์— ํ—ˆ๊ฐ€ ์š”์ฒญ
readonly --read-only ์ฝ๊ธฐ๋งŒ ํ—ˆ์šฉ, ์“ฐ๊ธฐ/ํŽธ์ง‘/bash ๊ฑฐ๋ถ€
guarded --guarded ์ฝ๊ธฐ ํ—ˆ์šฉ, ์“ฐ๊ธฐ/ํŽธ์ง‘/bash๋Š” ํ—ˆ๊ฐ€ ํ•„์š”
standard (๊ธฐ๋ณธ๊ฐ’) CWD ๋‚ด ๊ฒฝ๋กœ ๋„๊ตฌ ํ—ˆ์šฉ, ์•ˆ์ „ํ•œ bash ์ž๋™ ํ—ˆ์šฉ
yolo --yolo ๋ชจ๋“  ๊ฒƒ ํ—ˆ์šฉ, ํŒŒ๊ดด์  ๋ช…๋ น์–ด๋งŒ ํ™•์ธ

๊ธฐํƒ€ ๋ช…๋ น์–ด

/model โ€” ๋ชจ๋ธ ์ „ํ™˜ /thinking โ€” ์‚ฌ๊ณ  ์ˆ˜์ค€ ์„ค์ • /clear โ€” ๋Œ€ํ™” ์ดˆ๊ธฐํ™” /session โ€” ์„ธ์…˜ ๋ชฉ๋ก/์ €์žฅ/๋ถˆ๋Ÿฌ์˜ค๊ธฐ /loop โ€” ๋ฐ˜๋ณต ํ”„๋กฌํ”„ํŠธ ์Šค์ผ€์ค„ /worktree โ€” git worktree ์ƒ์„ฑ ๋ฐ ์ด๋™ /wt-merge โ€” worktree ๋ณ‘ํ•ฉ, ํ‘ธ์‹œ, ์ •๋ฆฌ, ๋ณต๊ท€ /wt-exit โ€” ๋ณ‘ํ•ฉ ์—†์ด ๋ฉ”์ธ ๋ ˆํฌ๋กœ ๋ณต๊ท€

์„ค์น˜

cargo install zerostack
# ๋˜๋Š” ACP ์ง€์›
cargo install zerostack --features acp

Pi์™€์˜ ๊ด€๊ณ„

zerostack์€ Pi์˜ ๋””์ž์ธ์„ ๋ ˆํผ๋Ÿฐ์Šค๋กœ ํ–ˆ์ง€๋งŒ, ๋‘ ๊ฐ€์ง€ ํฐ ์ฐจ์ด์ ์ด ์žˆ์Œ:

  1. Rust ๊ตฌํ˜„ โ€” JS ๋Œ€์‹  Rust๋กœ ์ž‘์„ฑ๋˜์–ด ๋ฉ”๋ชจ๋ฆฌ/์„ฑ๋Šฅ ๋ฉด์—์„œ ์œ ๋ฆฌ
  2. MCP ์ง€์› โ€” Pi์™€ ๋‹ฌ๋ฆฌ MCP๋ฅผ ๊ธฐ๋ณธ ์ง€์› (Pi๋Š” Skills ๊ถŒ์žฅ)
  3. GPL-3.0 ์˜คํ”ˆ์†Œ์Šค โ€” MIT ๋ผ์ด์„ ์Šค์ธ Pi์™€ ๋ผ์ด์„ ์Šค ์ฐจ์ด

์ปค๋ฎค๋‹ˆํ‹ฐ ๋ฐ˜์‘์€ ์•„์ง ์—†์Œ (๊ฒŒ์‹œ 6์‹œ๊ฐ„ ๊ฒฝ๊ณผ).


์—ฐ๊ฒฐ

  • [[Pi Agent]] โ€” ๋””์ž์ธ ๋ ˆํผ๋Ÿฐ์Šค
  • [[OpenCode โ†’ Pi ์ „ํ™˜ ๋…ผ์˜]] โ€” Pi ์ƒํƒœ๊ณ„ ๋‚ด ๋ฏธ๋‹ˆ๋ฉ€๋ฆฌ์ฆ˜ ์ถ”๊ตฌ ํ๋ฆ„

์ธ์šฉ

โ€œ~13k LoC, 12.9 MB binary, ~16 MB RAM. Peak RAM ~24 MB vs ~700 MB for JS-based agents.โ€