ํ”ผ๋“œ๋กœ ๋Œ์•„๊ฐ€๊ธฐ
Say Goodbye to Context Amnesia: Meet Git-Chacha ๐Ÿง 
Dev.toDev.to
DevOps

Local LLM ๊ธฐ๋ฐ˜ Intent Branch ์„ค๊ณ„๋ฅผ ํ†ตํ•œ Git Context Amnesia ํ•ด๊ฒฐ

Say Goodbye to Context Amnesia: Meet Git-Chacha ๐Ÿง 

Pratik Singh2026๋…„ 5์›” 15์ผ5๋ถ„intermediate

Context

AI ๊ธฐ๋ฐ˜ ๊ฐœ๋ฐœ ์†๋„ ๊ฐ€์†ํ™”๋กœ ์ธํ•œ Commit ๋นˆ๋„ ์ฆ๊ฐ€์™€ ์ด๋กœ ์ธํ•œ ๋ณ€๊ฒฝ ๋งฅ๋ฝ(Context) ์ƒ์‹ค ๋ฌธ์ œ ๋ฐœ์ƒ. ๋‹จ์ˆœ Commit Message๋งŒ์œผ๋กœ๋Š” Reviewer์˜ ์ธ์ง€ ๋ถ€ํ•˜๋ฅผ ์ค„์ด๊ฑฐ๋‚˜ ๋น„์ฆˆ๋‹ˆ์Šค ์š”๊ตฌ์‚ฌํ•ญ๊ณผ ์—”์ง€๋‹ˆ์–ด๋ง ๊ตฌํ˜„ ์‚ฌ์ด์˜ ๊ฐ„๊ทน์„ ๋ฉ”์šฐ๊ธฐ์— ํ•œ๊ณ„๊ฐ€ ์žˆ์Œ.

Technical Solution

  • Git pre-push hook ๋‹จ๊ณ„์—์„œ Golang binary๋ฅผ ํ†ตํ•œ Diff ๋ฐ์ดํ„ฐ ์ถ”์ถœ ๋ฐ ๋กœ์ปฌ LLM ์ „์†ก ๊ตฌ์กฐ ์„ค๊ณ„
  • ๋ฐ์ดํ„ฐ ์œ ์ถœ ๋ฐฉ์ง€๋ฅผ ์œ„ํ•ด Ollama๋ฅผ ํ™œ์šฉํ•œ Local LLM ๊ธฐ๋ฐ˜์˜ ๋ถ„์„ ๋ฐ ์š”์•ฝ ํ”„๋กœ์„ธ์Šค ๊ตฌ์ถ•
  • ์‹ค์ œ ์ฝ”๋“œ ๋ธŒ๋žœ์น˜์™€ ๋ถ„๋ฆฌ๋œ ๋ณ„๋„์˜ 'Developer-Intent Branch'๋ฅผ ์ƒ์„ฑํ•˜์—ฌ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ์™€Rationale์„ JSON ํ˜•ํƒœ๋กœ ๊ฒฉ๋ฆฌ ์ €์žฅ
  • ๊ฐœ๋ฐœ์ž๊ฐ€ AI ์ƒ์„ฑ ์š”์•ฝ๋ณธ์„ ์ง์ ‘ ๊ฒ€ํ†  ๋ฐ ์ˆ˜์ •ํ•˜๋Š” Human-in-the-loop ์ธํ„ฐํŽ˜์ด์Šค ๊ตฌํ˜„
  • Python ๊ธฐ๋ฐ˜ CI ํŒŒ์ดํ”„๋ผ์ธ์„ ํ†ตํ•ด ๊ฐœ๋ณ„ Intent Branch์˜ ๋ฐ์ดํ„ฐ๋ฅผ ํ†ตํ•ฉํ•˜์—ฌ Master Intent Narrative๋ฅผ ์ž๋™ ์ƒ์„ฑํ•˜๋Š” ์ง‘๊ณ„ ๊ตฌ์กฐ ์„ค๊ณ„
  • Repository Bloat ๋ฐฉ์ง€๋ฅผ ์œ„ํ•œ 90์ผ ๊ธฐ์ค€์˜ Intent ํŒŒ์ผ Retention Policy ์ ์šฉ

1. ๋ฏผ๊ฐํ•œ ์†Œ์Šค์ฝ”๋“œ ๋ถ„์„ ์‹œ ์™ธ๋ถ€ API ๋Œ€์‹  Ollama ๋“ฑ Local LLM ๋„์ž… ๊ฒ€ํ† 

2. ์ฝ”๋“œ ๋ณ€๊ฒฝ์ ๊ณผ ๋ณ€๊ฒฝ ์‚ฌ์œ (Intent)๋ฅผ ๋ฌผ๋ฆฌ์ ์œผ๋กœ ๋ถ„๋ฆฌํ•˜์—ฌ ์ €์žฅํ•˜๋Š” ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ ๋ธŒ๋žœ์น˜ ์ „๋žต ์ ์šฉ

3. ๋‹จ์ˆœ ์š”์•ฝ์„ ๋„˜์–ด CI ๋‹จ๊ณ„์—์„œ ์ „์ฒด ๋ณ€๊ฒฝ ํ๋ฆ„์„ ํ†ตํ•ฉํ•˜๋Š” Master Narrative ํŒŒ์ดํ”„๋ผ์ธ ์„ค๊ณ„

4. LLM ์ƒ์„ฑ๋ฌผ์— ๋Œ€ํ•œ ๊ฐœ๋ฐœ์ž์˜ ์ตœ์ข… ์Šน์ธ ๋‹จ๊ณ„๋ฅผ ์ถ”๊ฐ€ํ•˜์—ฌ ํ• ๋ฃจ์‹œ๋„ค์ด์…˜ ๋ฐฉ์ง€

์›๋ฌธ ์ฝ๊ธฐ