Tony Lee
Tony Lee
โ† ๋ชฉ๋ก์œผ๋กœ
4 ๋ถ„ ์†Œ์š” 2026

๐Ÿ” desloppify ๋Š” Long-Running ์—์ด์ „ํŠธ๋ฅผ ์ •ํ™•ํ•˜๊ฒŒ ๊ตฌํ˜„ํ•˜์—ฌ ๋๊นŒ์ง€ ์ฝ”๋“œ๋ฅผ ๊ณ ์นฉ๋‹ˆ๋‹ค

Blog version of a 2026-04-14 LinkedIn note โ€” same claims, cleaned structure for reading.

์ตœ๊ทผ์— Loop ๊ตฌ์กฐ๊ฐ€ ์—์ด์ „ํŠธ์˜ ํ•ต์‹ฌ์ด๋ผ๋Š” ์ด์•ผ๊ธฐ๋ฅผ ํ•œ ์ ์ด ์žˆ๋Š”๋ฐ์š”. ๋งˆ์นจ ๊ทธ ์›๋ฆฌ๋ฅผ ๊ฐ€์žฅ ์„ ๋ช…ํ•˜๊ฒŒ ๋ณด์—ฌ์ฃผ๋Š” ํ”„๋กœ์ ํŠธ๋ฅผ ๋งŒ๋‚ฌ์Šต๋‹ˆ๋‹ค.

desloppify๋ผ๋Š” ์ฝ”๋“œ ํ’ˆ์งˆ ๋ถ„์„ ๋„๊ตฌ์ธ๋ฐ, ์ด ๋„๊ตฌ๊ฐ€ ํฅ๋ฏธ๋กœ์šด ์ด์œ ๋Š” โ€œํ•œ ๋ฒˆ ์Šค์บ”ํ•˜๊ณ  ๋โ€์ด ์•„๋‹ˆ๋ผ ์ฝ”๋“œ๋ฅผ ์ฒ˜์Œ๋ถ€ํ„ฐ ๋๊นŒ์ง€ ์ดํ•ดํ•œ ๋’ค, ๊ณ ์น˜๊ณ , ๋‹ค์‹œ ๊ฒ€์ฆํ•˜๋Š” ์ „์ฒด ์‚ฌ์ดํด์„ ์Šค์Šค๋กœ ๋ฐ˜๋ณตํ•œ๋‹ค๋Š” ์ ์ž…๋‹ˆ๋‹ค.

๊ตฌ์กฐ๋ฅผ ๋œฏ์–ด๋ณด๋ฉด์„œ long-running ์—์ด์ „ํŠธ๊ฐ€ ์–ด๋–ป๊ฒŒ ์ž‘์—…์„ ๊นจ๋œจ๋ฆฌ์ง€ ์•Š๊ณ  ์™„์ฃผํ•˜๋Š”์ง€ ์ •๋ฆฌํ•ด๋ดค์–ด์š”.

1๏ธโƒฃ ์ฝ”๋“œ๋ฅผ ๋น ์ง์—†์ด ํŒŒ์•…ํ•œ๋‹ค: ํƒ์ง€์—์„œ ์‹คํ–‰๊นŒ์ง€ ์ด์–ด์ง€๋Š” ํ•ด์„ ํŒŒ์ดํ”„๋ผ์ธ

github repo: https://lnkd.in/gEa3Wiqj

desloppify๊ฐ€ ์ฝ”๋“œ๋ฒ ์ด์Šค๋ฅผ ์ฒ˜์Œ๋ถ€ํ„ฐ ํŒŒ์•…ํ•˜๋Š” ๋ฐฉ์‹์ด ์ธ์ƒ์ ์ด์—์š”. ๋‹จ์ˆœํžˆ ๋ฆฐํ„ฐ๋ฅผ ๋Œ๋ฆฌ๋Š” ๊ฒŒ ์•„๋‹ˆ๋ผ ์—ฌ๋Ÿฌ ๊ณ„์ธต์ด ์ˆœ์ฐจ์ ์œผ๋กœ ์ฝ”๋“œ๋ฅผ ํ•ด์„ํ•ฉ๋‹ˆ๋‹ค.

โ€ข Detection Layer: AST ํŒŒ์„œ์™€ ๋ฆฐํ„ฐ๋กœ ๋ฐ๋“œ์ฝ”๋“œ, ์ˆœํ™˜ ๋ณต์žก๋„, ๋„ค์ด๋ฐ ์œ„๋ฐ˜ ๊ฐ™์€ ๊ฐ๊ด€์  ์ด์Šˆ๋ฅผ ํƒ์ง€ํ•ฉ๋‹ˆ๋‹ค. ๋ชจ๋“  ํƒ์ง€๊ธฐ๊ฐ€ detect_*(data, config) โ†’ list[dict] ํ˜•ํƒœ์˜ ์ˆœ์ˆ˜ ํ•จ์ˆ˜๋กœ ๊ตฌํ˜„๋ผ ์žˆ์–ด์„œ ์–ธ์–ด์— ๊ด€๊ณ„์—†์ด ๋™์ผํ•œ ํฌ๋งท์œผ๋กœ ์ด์Šˆ๋ฅผ ์ถœ๋ ฅํ•ด์š” โ€ข Narrative Layer: ํƒ์ง€๋œ ์ด์Šˆ์— LLM ๊ธฐ๋ฐ˜ ๋ฆฌ๋ทฐ๋กœ ๋งฅ๋ฝ์„ ์ž…ํž™๋‹ˆ๋‹ค. ๋‹จ์ˆœํžˆ โ€œ์ด ํ•จ์ˆ˜๊ฐ€ ๋ณต์žกํ•˜๋‹คโ€๊ฐ€ ์•„๋‹ˆ๋ผ ์™œ ๋ฌธ์ œ์ธ์ง€, ์–ด๋–ป๊ฒŒ ๊ณ ์ณ์•ผ ํ•˜๋Š”์ง€ ์„œ์‚ฌ๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๋‹จ๊ณ„์˜ˆ์š” โ€ข Prioritization Layer: ranking.py๊ฐ€ ์ด์Šˆ๋ฅผ ํ‹ฐ์–ด(T1~T4) ร— ์˜ํ–ฅ๋„ ร— ์‹ ๋ขฐ๋„ ร— ๋ฐœ์ƒ ๋นˆ๋„๋กœ ์ •๋ ฌํ•˜๊ณ , ๊ด€๋ จ ์ด์Šˆ๋ผ๋ฆฌ ํด๋Ÿฌ์Šคํ„ฐ๋งํ•ฉ๋‹ˆ๋‹ค. ๊ฐ™์€ ๋””๋ ‰ํ† ๋ฆฌ์˜ ๊ฐ™์€ ํƒ์ง€๊ธฐ๊ฐ€ ์žก์€ ์ด์Šˆ๋“ค์„ ๋ฌถ์–ด์„œ ํ•œ ๋ฒˆ์— ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•˜๋Š” ๊ฑฐ์ฃ  โ€ข Execution Layer: ์ž‘์—… ํ๊ฐ€ todo โ†’ in_progress โ†’ done ์ƒํƒœ๋ฅผ ๊ด€๋ฆฌํ•˜๋ฉด์„œ ์ž๋™ ์ˆ˜์ •๊ณผ ์ˆ˜๋™ ์ˆ˜์ •์„ ๋ชจ๋‘ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค

์ œ๊ฐ€ ์ง์ ‘ ๋œฏ์–ด๋ณด๋ฉด์„œ ๊ฐํƒ„ํ•œ ๊ฑด, ํƒ์ง€๋ถ€ํ„ฐ ์‹คํ–‰๊นŒ์ง€ ๊ฐ ๋‹จ๊ณ„์˜ ์ถœ๋ ฅ ํฌ๋งท์ด ์™„์ „ํžˆ ์ •๊ทœํ™”๋ผ ์žˆ๋‹ค๋Š” ์ ์ด์—์š”. ์ด๊ฒŒ ๋ฃจํ”„๊ฐ€ ๊นจ์ง€์ง€ ์•Š๋Š” ์ฒซ ๋ฒˆ์งธ ๋น„๊ฒฐ์ž…๋‹ˆ๋‹ค.

2๏ธโƒฃ ํ•œ ๋ฒˆ ๊ณ ์น˜๋ฉด ๋์ด ์•„๋‹ˆ๋‹ค: ์˜์† ์ƒํƒœ ์œ„์—์„œ ๋Œ์•„๊ฐ€๋Š” ์žฌ์Šค์บ” ๋ฃจํ”„

๋Œ€๋ถ€๋ถ„์˜ AI ์ฝ”๋“œ ๋„๊ตฌ๋Š” ํ•œ ๋ฒˆ ๋ถ„์„ํ•˜๊ณ  ๊ฒฐ๊ณผ๋ฅผ ๋˜์ ธ์ฃผ๋ฉด ๋์ž…๋‹ˆ๋‹ค. desloppify๋Š” .desloppify/ ํด๋”์— ์ƒํƒœ๋ฅผ ์˜์†์ ์œผ๋กœ ์œ ์ง€ํ•ด์š”.

โ€ข state.json: ์–ธ์–ด๋ณ„ ํ˜„์žฌ ์Šค์บ” ์ƒํƒœ. ๊ฐ ์ด์Šˆ์— ๊ณ ์œ  ID, ํƒ์ง€๊ธฐ๋ช…, ํ‹ฐ์–ด, ์นดํ…Œ๊ณ ๋ฆฌ, ํŒŒ์ผ ๊ฒฝ๋กœ, ์‹ ๋ขฐ๋„(0.01.0), ์˜ํ–ฅ๋„(0.01.0)๊ฐ€ ์ „๋ถ€ ๊ธฐ๋ก๋ฉ๋‹ˆ๋‹ค โ€ข plan.json: ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋งค๊ฒจ์ง„ ์ž‘์—… ํ๊ฐ€ ์„ธ์…˜์„ ๋„˜์–ด์„œ๋„ ์œ ์ง€๋ฉ๋‹ˆ๋‹ค. plan_pos ๊ฐ’์œผ๋กœ ๋ช…์‹œ์  ์ˆœ์„œ๋ฅผ ์ง€์ •ํ•  ์ˆ˜ ์žˆ๊ณ , ์—†์œผ๋ฉด ํ‹ฐ์–ด โ†’ ์˜ํ–ฅ๋„ โ†’ ์‹ ๋ขฐ๋„ โ†’ ๋ฐœ์ƒ ํšŸ์ˆ˜ โ†’ ID ์ˆœ์œผ๋กœ ์ž๋™ ์ •๋ ฌ๋ผ์š” โ€ข score-snapshot-*.json: ์Šค์ฝ”์–ด ํžˆ์Šคํ† ๋ฆฌ๊ฐ€ ์‹œ๊ณ„์—ด๋กœ ์Œ“์ž…๋‹ˆ๋‹ค

ํ•ต์‹ฌ์€ ์ˆ˜์ •์ด ๋๋‚˜๋ฉด ์ž๋™์œผ๋กœ ์žฌ์Šค์บ”์ด ๋Œ์•„๊ฐ€๊ณ , ๊ทธ ๊ฒฐ๊ณผ๊ฐ€ ๋‹ค์‹œ ํƒ์ง€ ๋‹จ๊ณ„๋กœ ์—ฐ๊ฒฐ๋œ๋‹ค๋Š” ์ ์ด์—์š”.

์™œ ์ด๊ฒŒ ์ค‘์š”ํ•˜๋ƒ๋ฉด, ์ฝ”๋“œ์—์„œ ํ•œ ๋ฌธ์ œ๋ฅผ ๊ณ ์น˜๋ฉด ๊ทธ ์•„๋ž˜ ๊ฐ€๋ ค์ ธ ์žˆ๋˜ ๋‹ค๋ฅธ ๋ฌธ์ œ๊ฐ€ ๋“œ๋Ÿฌ๋‚˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ๊ฑฐ๋“ ์š”. ์˜ˆ๋ฅผ ๋“ค์–ด ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ํ•จ์ˆ˜๋ฅผ ์‚ญ์ œํ–ˆ๋”๋‹ˆ, ๊ทธ ํ•จ์ˆ˜๊ฐ€ ์œ ์ผํ•˜๊ฒŒ ํ˜ธ์ถœํ•˜๋˜ ์œ ํ‹ธ๋ฆฌํ‹ฐ๋„ ์ด์ œ ๋ฏธ์‚ฌ์šฉ ์ฝ”๋“œ๊ฐ€ ๋˜๋Š” ์‹์ด์ฃ .

desloppify๋Š” ์ด๋ ‡๊ฒŒ ์—ฐ์‡„์ ์œผ๋กœ ๋“œ๋Ÿฌ๋‚˜๋Š” ์ด์Šˆ๋ฅผ ๊ธฐ์กด ์ƒํƒœ์™€ ์ž๋™์œผ๋กœ ๋ณ‘ํ•ฉํ•˜๋ฉด์„œ open, resolved, stale๋กœ ๋ถ„๋ฅ˜ํ•ฉ๋‹ˆ๋‹ค. ์—์ด์ „ํŠธ๊ฐ€ โ€œ์ด์ œ ๋๋‹คโ€๊ณ  ๋ฉˆ์ถ”๋Š” ๊ฒŒ ์•„๋‹ˆ๋ผ ์ง„์งœ๋กœ ๊นจ๋—ํ•ด์งˆ ๋•Œ๊นŒ์ง€ ๋ฃจํ”„๋ฅผ ๊ณ„์† ๋„๋Š” ๊ฑฐ์ฃ .

3๏ธโƒฃ ์ˆ˜๋ฐฑ ํšŒ ๋ฐ˜๋ณตํ•ด๋„ ๊นจ์ง€์ง€ ์•Š๋Š”๋‹ค: ์Šคํ‚ค๋งˆ๊ฐ€ ๋ฃจํ”„๋ฅผ ์ง€ํƒฑํ•˜๋Š” ๋ฐฉ์‹

์ด ๋ฃจํ”„๊ฐ€ ์ˆ˜์‹ญ, ์ˆ˜๋ฐฑ ํšŒ ๋ฐ˜๋ณต๋ผ๋„ ์•ˆ์ •์ ์œผ๋กœ ๋Œ์•„๊ฐ€๋Š” ์ด์œ ๊ฐ€ ์žˆ์–ด์š”.

โ€ข Phase Execution ํŒจํ„ด: ๊ฐ ๋‹จ๊ณ„๊ฐ€ extractors โ†’ detectors โ†’ normalize โ†’ state.merge() ์ˆœ์„œ๋กœ ์—„๊ฒฉํ•˜๊ฒŒ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค. ์–ด๋А ๋‹จ๊ณ„์—์„œ ์‹คํŒจํ•ด๋„ ์ด์ „ ์ƒํƒœ๊ฐ€ ๋ณด์กด๋˜๊ธฐ ๋•Œ๋ฌธ์— ์ค‘๊ฐ„์— ๋ฉˆ์ถฐ๋„ ์ด์–ด์„œ ๋Œ๋ฆด ์ˆ˜ ์žˆ์–ด์š” โ€ข ์ •๊ทœํ™”๋œ Finding ์Šคํ‚ค๋งˆ: ๋ชจ๋“  ํƒ์ง€๊ธฐ๊ฐ€ ๋™์ผํ•œ ๊ตฌ์กฐ(id, detector, tier, category, file, confidence, impact)๋กœ ๊ฒฐ๊ณผ๋ฅผ ์ถœ๋ ฅํ•˜๊ธฐ ๋•Œ๋ฌธ์— ํŒŒ์ดํ”„๋ผ์ธ ์–ด๋””์—์„œ๋“  ๋ฐ์ดํ„ฐ๊ฐ€ ํ˜ธํ™˜๋ฉ๋‹ˆ๋‹ค โ€ข Hook Registry: ์–ธ์–ด๋ณ„๋กœ ํƒ์ง€ ๊ทœ์น™์„ ์˜ค๋ฒ„๋ผ์ด๋“œํ•  ์ˆ˜ ์žˆ๋Š” ํ›… ์‹œ์Šคํ…œ์ด ์žˆ์–ด์„œ, Python์˜ ๋„ค์ด๋ฐ ๊ทœ์น™๊ณผ Rust์˜ ๋„ค์ด๋ฐ ๊ทœ์น™์ด ๋‹ค๋ฅด๋”๋ผ๋„ ๊ฐ™์€ ๋ฃจํ”„ ์•ˆ์—์„œ ๊ฐ๊ฐ ์ ์ ˆํ•˜๊ฒŒ ์ฒ˜๋ฆฌ๋ผ์š”

์—์ด์ „ํŠธ๋ฅผ ์šด์˜ํ•ด๋ณด๋ฉด ์ ˆ์‹คํ•˜๊ฒŒ ๋А๋ผ๋Š” ๋ถ€๋ถ„์ธ๋ฐ, long-running ์—์ด์ „ํŠธ๊ฐ€ ์‹คํŒจํ•˜๋Š” ๊ฐ€์žฅ ํ”ํ•œ ์›์ธ์ด โ€œ์ค‘๊ฐ„ ๋‹จ๊ณ„์˜ ์ถœ๋ ฅ ํฌ๋งท์ด ๋‹ค์Œ ๋‹จ๊ณ„์™€ ์•ˆ ๋งž๋Š” ๊ฒƒโ€์ž…๋‹ˆ๋‹ค. desloppify๋Š” ์ด๊ฑธ ์Šคํ‚ค๋งˆ ๋ ˆ๋ฒจ์—์„œ ์›์ฒœ ์ฐจ๋‹จํ•œ ๊ฒ๋‹ˆ๋‹ค.

4๏ธโƒฃ ์ ์ˆ˜๋ฅผ ์†์ด๋ฉด ์˜คํžˆ๋ ค ๋ถˆ๋ฆฌํ•ด์ง„๋‹ค: ์•ˆํ‹ฐ-๊ฒŒ์ด๋ฐ์ด ๋ฃจํ”„์— ์˜๋ฏธ๋ฅผ ๋งŒ๋“œ๋Š” ๋ฒ•

desloppify๋Š” lenient ์ ์ˆ˜(์—ด๋ฆฐ ์ด์Šˆ๋งŒ ๊ณ„์‚ฐ)์™€ strict ์ ์ˆ˜(wontfix ํฌํ•จ ์ „์ฒด ๊ณ„์‚ฐ)๋ฅผ ์ด์ค‘์œผ๋กœ ๊ด€๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

โ€ข ๋ฌธ์ œ๋ฅผ wontfix๋กœ ๋ฌด์‹œํ•˜๋ฉด lenient ์ ์ˆ˜๋Š” ๋‚ด๋ ค๊ฐ€์ง€๋งŒ strict์™€์˜ ๊ฒฉ์ฐจ๊ฐ€ ๋ฒŒ์–ด์ง‘๋‹ˆ๋‹ค โ€ข ๋ฆฌ๋ทฐ๋ฅผ ๋‹ค์‹œ ๋Œ๋ฆฌ๋ฉด ์ƒˆ ์ด์Šˆ๊ฐ€ ๋ฐœ๊ฒฌ๋ผ์„œ ์ ์ˆ˜๊ฐ€ ์˜คํžˆ๋ ค ์ผ์‹œ์ ์œผ๋กœ ๋–จ์–ด์งˆ ์ˆ˜ ์žˆ์–ด์š” โ€ข ํ‹ฐ์–ด๋ณ„ ๊ฐ€์ค‘์น˜(T1=1, T2=2, T3=3, T4=4)์— ์˜ํ–ฅ๋„๋ฅผ ๊ณฑํ•ด์„œ ์‚ฐ์ •ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์‚ฌ์†Œํ•œ ์ด์Šˆ๋งŒ ๊ณจ๋ผ ๊ณ ์น˜๋Š” ๊ฒƒ๋„ ํ†ตํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค

์ง„์งœ๋กœ ์ฝ”๋“œ๋ฅผ ๊ฐœ์„ ํ•˜์ง€ ์•Š์œผ๋ฉด ์ ์ˆ˜๊ฐ€ ์˜ฌ๋ผ๊ฐ€์ง€ ์•Š๋Š” ๊ตฌ์กฐ. ์ด๊ฒŒ ์—์ด์ „ํŠธ๊ฐ€ ๋ฃจํ”„๋ฅผ ์˜๋ฏธ ์žˆ๊ฒŒ ๋Œ๊ฒŒ ๋งŒ๋“œ๋Š” ๋™๋ ฅ์ž…๋‹ˆ๋‹ค. ์—์ด์ „ํŠธ์˜ ์‹ ๋ขฐ์„ฑ์€ ํ•œ ๋ฒˆ์˜ ๋˜‘๋˜‘ํ•œ ํŒ๋‹จ์ด ์•„๋‹ˆ๋ผ, ๊นจ์ง€์ง€ ์•Š๋Š” ๋ฃจํ”„์—์„œ ๋‚˜์˜ต๋‹ˆ๋‹ค.

๊ฒฐ๊ตญ long-running ์—์ด์ „ํŠธ๊ฐ€ ์‹ค๋ฌด์—์„œ ์ž‘๋™ํ•˜๋ ค๋ฉด ์„ธ ๊ฐ€์ง€๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. โ†’ ์ •๊ทœํ™”๋œ ๋ฐ์ดํ„ฐ ํฌ๋งท โ†’ ์˜์†์ ์ธ ์ƒํƒœ ๊ด€๋ฆฌ โ†’ ์ž๊ธฐ ์ž์‹ ์˜ ๊ฒฐ๊ณผ๋ฅผ ๋‹ค์‹œ ๊ฒ€์ฆํ•˜๋Š” ์žฌ์Šค์บ” ๋ฃจํ”„

desloppify๋Š” ์ด ์„ธ ๊ฐ€์ง€๋ฅผ ์•„ํ‚คํ…์ฒ˜ ๋ ˆ๋ฒจ์—์„œ ํ’€์–ด๋‚ธ ๊ฐ€์žฅ ๊น”๋”ํ•œ ์‚ฌ๋ก€๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

18 1 4

๋‰ด์Šค๋ ˆํ„ฐ ๊ตฌ๋…ํ•˜๊ธฐ

์ตœ์‹  AI์— ๋Œ€ํ•œ ์ธ์‚ฌ์ดํŠธ๋ฅผ ๋ฐ›์•„๋ณด์„ธ์š”.