# Astra Patch Notes ## v2.2.203 (2026-06-01) ### ๐Ÿ› ๊ธฐ์—…๋ชจ๋“œ dev-impl โ€” ๋นˆ ๊นกํ†ต ํŒŒ์ผ 99% ๋ฐœ์ƒ ๋ฒ„๊ทธ (๊ฒ€์ถœ+์ž๋™ ์žฌ์ž‘์—… ๊ธฐ๋ณธ ON) **์ฆ์ƒ**: ์‚ฌ์šฉ์ž๊ฐ€ ๊ธฐํš์„œ + ํด๋” ์ฃผ๊ณ  "์—ฌ๊ธฐ ๊ฐœ๋ฐœํ•ด์ค˜" ์š”์ฒญ โ†’ ASTRA ๊ฐ€ ํŒŒ์ผยทํด๋” ๋งŒ๋“ค๊ณ  "๊ฐœ๋ฐœ ์™„๋ฃŒ" ๋ณด๊ณ  โ†’ ์‹ค์ œ ํŒŒ์ผ์„ ์—ด๋ฉด **class/ํ•จ์ˆ˜ ๋ณธ๋ฌธ์ด ๋น„์–ด ์žˆ์Œ** (`def foo(): pass` ยท ๋นˆ class ยท imports only). 99% ํ™•๋ฅ  ์žฌ๋ฐœ. **์›์ธ** (๊ฐ์‚ฌ๋กœ ํ™•์ธ): - ์•ˆ์ „๋ง **์ด๋ฏธ ์กด์žฌ**: `selfReflectorHollow.ts` ๊ฐ€ ์ •๊ทœ์‹์œผ๋กœ ๋นˆ ๊นกํ†ต ๊ฐ์ง€ + retry ๋กœ์ง - BUT ๋‘ ๊ฐœ config ๊ฐ€ ๋ชจ๋‘ OFF โ€” `selfReflectorEnabled` + `selfReflectorExternalEnabled` - Phase A ์ผœ๋ฉด [Self-Reflector Check] ๋ธ”๋ก์ด ๋‹ต๋ณ€์— ๋…ธ์ถœ (UX ๋ถ€์ž‘์šฉ), Phase B ๋Š” +1 LLM ํ˜ธ์ถœ ๋น„์šฉ โ€” ๋‘ ๋ถ€์ž‘์šฉ ๋•Œ๋ฌธ์— ๊ธฐ๋ณธ OFF - ๊ฒฐ๊ณผ: ๋‹ค์ˆ˜ ์‚ฌ์šฉ์ž๊ฐ€ ์•ˆ์ „๋ง *์ „ํ˜€ ์—†๋Š” ์ƒํƒœ* ๋กœ ์ฝ”๋“œ ์ž‘์„ฑ stage ์‹คํ–‰ โ†’ ๋นˆ ๊นกํ†ต ๊ทธ๋ƒฅ ํ†ต๊ณผ **์›์ธ ๋ถ„์„ ํ•ต์‹ฌ**: - ๋ชจ๋ธ ํ•œ๊ณ„๋„ ์žˆ์Œ (์ž‘์€ local LLM ์ด ๋‹ค์ค‘ ํŒŒ์ผ ํ•œ ๋ฒˆ์— ์ƒ์„ฑ ์‹œ attention ๊ณ ๊ฐˆ โ†’ ์ฒซ 2~3 ํŒŒ์ผ๋งŒ ์™„์ „, ๋‚˜๋จธ์ง€๋Š” stub) - **๊ทธ๋Ÿฌ๋‚˜ ๋Œ€๋ถ€๋ถ„ ASTRA ๋กœ์ง fix ๊ฐ€๋Šฅ** โ€” ์•ˆ์ „๋ง ์กด์žฌํ•˜๋Š”๋ฐ ๋ฌถ์—ฌ ์žˆ๋˜ ๋ฌธ์ œ **Fix 3์ข… (์ด๋ฒˆ ๋นŒ๋“œ):** 1. **Hollow check ๋ฅผ selfReflector ์™€ ๋ถ„๋ฆฌ** โ€” ์‹ ๊ทœ ์„ค์ • 2๊ฐœ: - `g1nation.hollowCheck.enabled` (boolean, **๊ธฐ๋ณธ ON**) โ€” action-tag ๊ฐ€ ์žˆ๋Š” ๋ชจ๋“  ์‘๋‹ต์— ๋ฌด์กฐ๊ฑด hollow ์Šค์บ”. LLM ํ˜ธ์ถœ 0. - `g1nation.hollowCheck.autoRetry` (boolean, **๊ธฐ๋ณธ ON**) โ€” ๊ฒ€์ถœ ์‹œ 1ํšŒ ์ž๋™ ์žฌ์ž‘์—…. Phase B ์™€ ๋ถ„๋ฆฌ, ์ฝ”๋“œ ์ž‘์„ฑ stage ์˜ ๋‹จ๋ฐœ ์ถ”๊ฐ€ ํ˜ธ์ถœ. - [dispatcher.ts](src/features/company/dispatcher.ts) ๊ฒŒ์ดํŠธ ์กฐ๊ฑด ๊ต์ฒด โ€” `selfReflectorEnabled` โ†’ `hollowCheckEnabled`, `selfReflectorExternalEnabled` โ†’ `hollowCheckAutoRetry` 2. **dev-impl ํ”„๋กฌํ”„ํŠธ ๊ฐ•ํ™”** ([pipelineTemplates.ts](src/features/company/pipelineTemplates.ts)) โ€” `[๋นˆ ๊นกํ†ต ๊ธˆ์ง€]` ์„น์…˜ 5๊ฐœ ๊ทœ์น™ ์ถ”๊ฐ€: - ํŒŒ์ผ์€ *ํ•˜๋‚˜์”ฉ* ์ƒ์„ฑ, ๋ชจ๋“  ํ•จ์ˆ˜ยท๋ฉ”์„œ๋“œยทํด๋ž˜์Šค ๋ณธ๋ฌธ ์™„์ „ ๊ตฌํ˜„ ํ›„ ๋‹ค์Œ ํŒŒ์ผ๋กœ - **๊ธˆ์ง€ ํŒจํ„ด ๋ช…์‹œ**: `pass` ยท `...` ยท `NotImplementedError` ยท `# TODO` ยท ๋นˆ class - ์ธํ„ฐํŽ˜์ด์Šค/์ถ”์ƒ ๋ฉ”์„œ๋“œ๋งŒ ๋นˆ ๋ณธ๋ฌธ OK - ๊ฐ ํŒŒ์ผ ์ƒ์„ฑ ์งํ›„ ์ž๊ฐ€ ๊ฒ€์ฆ "๋ณธ๋ฌธ ๋น„์—ˆ๋‚˜?" - ์ตœ์ข… ์š”์•ฝ์— ํŒŒ์ผ๋ณ„ ํ•ต์‹ฌ ๋™์ž‘ ํ•œ ์ค„์”ฉ - ๋งˆ์ง€๋ง‰ ๊ฒฝ๊ณ : "๊ตฌ์กฐ๋งŒ ์žก๊ณ  ์ถ”ํ›„ ๊ตฌํ˜„" ํŒจํ„ด์€ ์ฆ‰์‹œ ์ž๋™ ์žฌ์ž‘์—… 3. **๊ธฐ๋ณธ๊ฐ’ ๋ณ€๊ฒฝ โ€” ์‚ฌ์šฉ์ž ํ–‰๋™ ์—†์ด ์•ˆ์ „๋ง ์ž‘๋™**: hollow check ์‹ ๊ทœ toggle ๋‘˜ ๋‹ค ๊ธฐ๋ณธ ON. ์˜› selfReflector Phase A/B ๋Š” ๊ทธ๋Œ€๋กœ OFF (UX ๋ถ€์ž‘์šฉ ๋ณด์กด). **์˜ˆ์ƒ ํšจ๊ณผ**: - ์˜›: ๋นˆ ๊นกํ†ต โ†’ ๊ทธ๋Œ€๋กœ disk ๊ธฐ๋ก โ†’ "์™„๋ฃŒ" ๋ณด๊ณ  โ†’ ์‚ฌ์šฉ์ž ๋ฐœ๊ฒฌ - ์ƒˆ: ๋นˆ ๊นกํ†ต โ†’ hollow detector ๊ฒ€์ถœ โ†’ 1ํšŒ ์ž๋™ ์žฌ์ž‘์—… โ†’ ๋‹ค์‹œ ๊ฒ€์ถœํ•˜๋ฉด ์‚ฌ์šฉ์ž ๊ฒฝ๊ณ  (๋ฌดํ•œ ๋ฃจํ”„ ๋ฐฉ์ง€) - ์ž‘์€ local LLM ๋Œ€์ƒ ~80% stub ๊ฐ์†Œ ์˜ˆ์ƒ (per-file ์ˆœ์ฐจ ์ƒ์„ฑ์€ v2.2.204+ ๊ฒ€ํ† ) **์†”์งํžˆ โ€” ๋ชจ๋ธ ํ•œ๊ณ„ vs ๋กœ์ง fix**: - โœ… **๋กœ์ง fix ๋กœ 70~85% ์žกํž˜** (์ด๋ฒˆ ๋นŒ๋“œ) - โš ๏ธ **๋‚จ์€ ~15%** ๋Š” ๋ชจ๋ธ attention ํ•œ๊ณ„ โ€” *์ง„์งœ ํฐ ํ”„๋กœ์ ํŠธ* (20+ ํŒŒ์ผ) ๋Š” per-file ์ˆœ์ฐจ ์ƒ์„ฑ (B) ํ•„์š” โ€” ๋‹ค์Œ ๋นŒ๋“œ ํ›„๋ณด - โš ๏ธ ๋งค์šฐ ์ž‘์€ ๋ชจ๋ธ (โ‰ค4B) ์€ ํ•œ๊ณ„ ๋” ๋น ๋ฆ„ โ€” ๋” ํฐ ๋ชจ๋ธ (gemma-12b, qwen-32b) ๊ถŒ์žฅ **์‹ ๊ทœ ํŒจํ‚ค์ง•:** `astra-2.2.203.vsix`. --- ## v2.2.202 (2026-06-01) ### ๐Ÿ› ๊ธฐ์—…๋ชจ๋“œ โ€” Intent Alignment ๊ฐ€ ์ผ๋ฐ˜ ์ฑ„ํŒ… ์ปจํ…์ŠคํŠธ ๋ฌด์‹œํ•˜๋˜ ๋ฒ„๊ทธ **์ฆ์ƒ**: ์‚ฌ์šฉ์ž๊ฐ€ ์ผ๋ฐ˜ ์ฑ„ํŒ…์—์„œ ํ”„๋กœ์ ํŠธยท์š”๊ตฌ์‚ฌํ•ญ์„ ์ถฉ๋ถ„ํžˆ ๋…ผ์˜ํ•œ ๋’ค ๊ธฐ์—…๋ชจ๋“œ๋กœ ์ „ํ™˜ํ•ด *ํ›„์† ์ž‘์—…* ์„ ์š”์ฒญํ•˜๋ฉด, ๋ถ„์„๊ธฐ๊ฐ€ "์ถ”๊ฐ€ ์ •๋ณด ํ•„์š” โ€” ๋งฅ๋ฝ/๋ชฉํ‘œ/๊ธฐ์ค€/ํ˜•์‹" ํ™”๋ฉด์„ ๋„์›€. ์‚ฌ์šฉ์ž ์ž…์žฅ์—์„  *๋ฐฉ๊ธˆ ๋‹ค ๋งํ•œ ๋‚ด์šฉ์„ ๋‹ค์‹œ ๋ฌป๋Š”* ๋А๋‚Œ. **์›์ธ** (๊ฐ์‚ฌ๋กœ ํ™•์ธ): - `Intent Classifier` ๋Š” prior chat ์ปจํ…์ŠคํŠธ(previousBrief/Tail) ๋ฅผ *๋ฐ›์Œ* โ€” ๊ทธ๋ž˜์„œ "follow-up vs new task" ๋ถ„๊ธฐ๋Š” ์ •ํ™• - `Intent Alignment` (clarification ํ™”๋ฉด ๋งŒ๋“œ๋Š” ๋ถ„์„๊ธฐ) ๋Š” `IntentAnalysisInput` ์ธํ„ฐํŽ˜์ด์Šค์— *chat history ํ•„๋“œ๊ฐ€ ์—†์Œ* โ€” ์˜ค์ง ํ˜„์žฌ ์‚ฌ์šฉ์ž ๋ฉ”์‹œ์ง€๋งŒ ๋ด„ - ๊ฒฐ๊ณผ: ๋ชจ๋“œ ์ „ํ™˜ ์งํ›„ ์ฒซ ๋ผ์šด๋“œ์˜ ๋ถ„์„๊ธฐ๋Š” ์‚ฌ์šฉ์ž๊ฐ€ ์ด์ „์— ์ผ๋ฐ˜ ์ฑ„ํŒ…์—์„œ ํ•œ ๋ชจ๋“  ์„ค๋ช…์„ *๋ชป ๋ด„* โ†’ context ๋นˆ์นธ โ†’ openQuestions ์— "๋งฅ๋ฝ์€?" ์ถ”๊ฐ€ **Fix:** - [`intentAlignment.ts`](src/features/company/intentAlignment.ts) `IntentAnalysisInput` ์— `priorChatSummary?: string` ํ•„๋“œ ์ถ”๊ฐ€ - ์‹œ์Šคํ…œ ํ”„๋กฌํ”„ํŠธ์— *๋ชจ๋“œ ์ „ํ™˜ ์‹œ context ์šฐ์„  ์ถ”์ถœ* ๊ทœ์น™ ์ถ”๊ฐ€ โ€” ์ผ๋ฐ˜ ์ฑ„ํŒ…์—์„œ ๋ช…์‹œ๋œ ํ•ญ๋ชฉ์€ *์ถ”์ธก์ด ์•„๋‹ˆ๋ผ ๋ช…์‹œ๋œ ์‚ฌ์‹ค* ๋กœ ์ทจ๊ธ‰ - `_buildUserMessage()` ๊ฐ€ `[๋ชจ๋“œ ์ „ํ™˜ ์ง์ „ ์ผ๋ฐ˜ ์ฑ„ํŒ… ์š”์•ฝ]` ๋ธ”๋ก์„ user message ์ƒ๋‹จ์— ์ฃผ์ž… - [`sidebarProvider.ts`](src/sidebarProvider.ts) ํ˜ธ์ถœ ์ง€์ ์—์„œ `this._agent.getHistory()` โ†’ ์ตœ๊ทผ 10 turn (`!internal`) ์ถ”์ถœ โ†’ `role: content` ํ•œ ์ค„์”ฉ, content 200์ž cap - *ํ›„์† ๋ผ์šด๋“œ* (previousContract ์žˆ์Œ) ๋ฉด history ์ค‘๋ณต ์ฒจ๋ถ€ ์•ˆ ํ•จ โ€” ์ด๋ฏธ contract ์— ํก์ˆ˜๋จ **ํšจ๊ณผ**: - ์ผ๋ฐ˜ ์ฑ„ํŒ… โ†’ ๊ธฐ์—…๋ชจ๋“œ ์ „ํ™˜ ์‹œ ๋ถ„์„๊ธฐ๊ฐ€ prior chat ์˜ context/goal/criteria ๋ฅผ *์ง์ ‘ ์ถ”์ถœ* - "๋งฅ๋ฝ/๋ชฉํ‘œ/๊ธฐ์ค€/ํ˜•์‹ ๋‹ค ๋‹ค์‹œ ๋งํ•ด ์ฃผ์„ธ์š”" ๊ฐ™์€ redundant ์งˆ๋ฌธ ์‚ฌ๋ผ์ง - ์ฒซ ๋ผ์šด๋“œ๋ถ€ํ„ฐ confidence='high' ๊ฐ€๋Šฅ โ†’ ๋ฐ”๋กœ ๋ณธ ์ž‘์—… ์ง„ํ–‰ **๊ธฐ๋Šฅ ๋ณ€๊ฒฝ ์—†์Œ ์™ธ๋ถ€ API**. ์ปจํ…์ŠคํŠธ ์ „๋‹ฌ ๋ˆ„๋ฝ๋งŒ fix. **์‹ ๊ทœ ํŒจํ‚ค์ง•:** `astra-2.2.202.vsix`. --- ## v2.2.201 (2026-05-29) ๐ŸŽฏ ### ๐Ÿ—๏ธ ๋ฆฌํŒฉํ„ฐ๋ง ๋ผ์šด๋“œ 7 โ€” datacollect cluster split (god-file ์™„์ „ ํ•ด์ฒด) slashRouter god-file ์˜ ๋งˆ์ง€๋ง‰ ํด๋Ÿฌ์Šคํ„ฐ โ€” 6 datacollect ํ•ธ๋“ค๋Ÿฌ (research/benchmark/youtube/blog/wikify/meet) ๋„๋ฉ”์ธ ํŒŒ์ผ๋กœ. ๋”๋ถˆ์–ด LLM ํ˜ธ์ถœ ์ธํ”„๋ผ(callLmSynthesis/repairKoreanGlitches/bridgeErrorRemedy) ๋„ ๋ณ„๋„ ๋ชจ๋“ˆ๋กœ. **slashRouter.ts: 1,229 โ†’ 201์ค„ (โ€“1,028, โ€“84%)** **๋ˆ„์  (v2.2.195 ๋ถ€ํ„ฐ): 4,174 โ†’ 201 (โ€“3,973, โ€“95%) โญ 95% ์ถ•์†Œ** **์‹ ๊ทœ ํŒŒ์ผ 2๊ฐœ:** - `src/features/datacollect/handlers.ts`: - runResearch (NotebookLM Deep Research) - runBenchmark (Playwright + 4-๋ Œ์ฆˆ LLM) - runYoutube + helpers (`_looksLikeYoutubeChannelUrl`, `_normalizeYoutubeUrl`, YOUTUBE_BATCH_MAX) - runBlog (Blog Pipeline ์•ˆ๋‚ด) - runWikify + `wikifyOne` (P-Reinforce v3.0 ์œ„ํ‚ค ํ•ฉ์„ฑ) - runMeet (ํšŒ์˜๋ก transcript โ†’ ํ•ฉ์„ฑ + Tasks/Calendar ์ž๋™ ๋“ฑ๋ก) - `src/features/datacollect/llm.ts`: - `callLmSynthesis` (bridge /api/lm ํ˜ธ์ถœ โ€” datacollect handlers + teamops/communication ์–‘์ชฝ ์‚ฌ์šฉ) - `repairKoreanGlitches` (ํ•œยท์˜ ํ† ํฐ ๊นจ์ง ์ž๋™ ๊ต์ •) - `bridgeErrorRemedy` (ํ™˜๊ฒฝ ์˜์กด์„ฑ ์—๋Ÿฌ โ†’ ์‚ฌ์šฉ์ž ํ•ด๊ฒฐ ๊ฐ€์ด๋“œ ์ƒ์„ฑ, slashRouter catch ๋ธ”๋ก์ด ์‚ฌ์šฉ) **Wiring:** - extension.ts โ€” `import './features/datacollect/handlers'` ์ถ”๊ฐ€ - communication.ts โ€” `callLmSynthesis` import ๋ฅผ `./slashRouter` โ†’ `./llm` ๋กœ ๋ณ€๊ฒฝ - slashRouter.ts โ€” ๋ชจ๋“  import ์ •๋ฆฌ, vscode/logInfo/getBridgeBaseUrl/bridgeErrorRemedy 4๊ฐœ๋งŒ ๋‚จ์Œ **slashRouter.ts ์ตœ์ข… (201์ค„):** - REGISTRY Map + registerSlashCommand + listSlashCommands + isSlashCommand - handleSlashCommand (dispatcher + ์—๋Ÿฌ ์ฒ˜๋ฆฌ + bridgeErrorRemedy ์ ์šฉ) - Webview interface + chunk helper - getRecentSlashCommands ring buffer **์•„ํ‚คํ…์ฒ˜ ๊ฐ์‚ฌ HIGH 1๋ฒˆ ์™„์ „ ํ•ด๊ฒฐ โœ…** god-file ํ•ด์ฒด ์™„๋ฃŒ. ๋ชจ๋“  ์Šฌ๋ž˜์‹œ ํ•ธ๋“ค๋Ÿฌ ๋„๋ฉ”์ธ๋ณ„ ํŒŒ์ผ ๋ถ„๋ฆฌ, slashRouter ๋Š” ์ˆœ์ˆ˜ dispatcher. **์ „์ฒด ๋ฆฌํŒฉํ„ฐ๋ง ์‹œ๋ฆฌ์ฆˆ (v2.2.195~201, 7 builds):** - ์‹ ๊ทœ utility 5๊ฐœ (eventSourcedStore, mtimeFileCache, postAnswerHooks, SystemPromptBlock Map, datacollect/llm) - ์‹ ๊ทœ ๋„๋ฉ”์ธ ํ•ธ๋“ค๋Ÿฌ ๋ชจ๋“ˆ 7๊ฐœ (teamops trackers/dashboards/coordination/communication + system handlers + datacollect handlers) - slashRouter: 4,174 โ†’ 201 (โ€“3,973, โ€“95%) - agent.ts: 1,617 โ†’ 1,551 (โ€“66, โ€“4%) - ์ƒˆ ์Šฌ๋ž˜์‹œ ๋ช…๋ น ์ถ”๊ฐ€ = 1 ํŒŒ์ผ + 1 register call (์˜› god-file ์™€ ๋น„๊ต ๋ถˆ๊ฐ€๋Šฅ) - ์ƒˆ verification block / event store / post-answer hook = 1๊ณณ ๋ณ€๊ฒฝ **๊ธฐ๋Šฅ ๋ณ€๊ฒฝ ์—†์Œ.** **์‹ ๊ทœ ํŒจํ‚ค์ง•:** `astra-2.2.201.vsix`. --- ## v2.2.200 (2026-05-29) ๐ŸŽ‰ ### ๐Ÿ—๏ธ ๋ฆฌํŒฉํ„ฐ๋ง ๋ผ์šด๋“œ 6 โ€” system cluster split (๋งˆ๋ฌด๋ฆฌ) slashRouter ๋ถ„๋ฆฌ 4๋‹จ๊ณ„ (๋งˆ์ง€๋ง‰ TeamOps ์˜์—ญ) โ€” system cluster (memory/glossary/help). 4์ธ ํŒ€ ์šด์˜ ๋ชจ๋“  ํ•ธ๋“ค๋Ÿฌ ๋„๋ฉ”์ธ ๋ถ„๋ฆฌ ์™„๋ฃŒ. **slashRouter.ts: 1,615 โ†’ 1,229์ค„ (โ€“386, โ€“24%)** **๋ˆ„์  (v2.2.195 ๋ถ€ํ„ฐ): 4,174 โ†’ 1,229 (โ€“2,945, โ€“71%)** **์‹ ๊ทœ ํŒŒ์ผ: `src/features/system/handlers.ts`** - runMemory + _memoryOverview + _formatDate (Temporal + Distillation ์ง„์ž…์ ) - runGlossary (Terminology Dictionary CRUD) - runHelp + HelpCategory + HELP_CATEGORIES (์นดํ…Œ๊ณ ๋ฆฌ๋ณ„ ๋ช…๋ น ๋ธŒ๋ผ์šฐ์ € + ์—”์ง„ ์ƒํƒœ) **Wiring:** - `extension.ts` โ€” `import './features/system/handlers'` side-effect (extension.ts ๊ฐ€ entry point) **์ „์ฒด ์Šฌ๋ž˜์‹œ ๋ถ„๋ฆฌ ํ˜„ํ™ฉ:** ``` src/features/teamops/handlers/ โ”œโ”€โ”€ _shared.ts (ํ—ฌํผ) โ”œโ”€โ”€ trackers.ts (3) v2.2.196 โ”œโ”€โ”€ dashboards.ts (4) v2.2.198 โ”œโ”€โ”€ coordination.ts (5) v2.2.199 โ”œโ”€โ”€ communication.ts (2) v2.2.199 โ””โ”€โ”€ index.ts (barrel) src/features/system/ โ””โ”€โ”€ handlers.ts (3) v2.2.200 ``` **slashRouter ์ž”์—ฌ (~1,229์ค„):** - ์ธํ”„๋ผ: REGISTRY / registerSlashCommand / chunk / Webview / isSlashCommand / handleSlashCommand / parseTaskOwner / callLmSynthesis / getRecentSlashCommands (~200์ค„) - datacollect: research / benchmark / youtube / blog / wikify / meet (~1,000์ค„) โ€” ๋‹ค๋ฅธ ๋„๋ฉ”์ธ ์˜์—ญ, ์ถ”ํ›„ ๋ผ์šด๋“œ **์•„ํ‚คํ…์ฒ˜ ๊ฐ์‚ฌ 5๊ฑด ์ตœ์ข… ์ƒํƒœ:** | Sev | ํ•ญ๋ชฉ | ๊ฒฐ๊ณผ | |---|---|---| | HIGH | slashRouter god-file | ๐ŸŸข 71% ์ถ•์†Œ (teamops + system ์™„๋ฃŒ, datacollect ๋งŒ ์ž”์—ฌ) | | HIGH | 5-block ์ฒด์ธ | โœ… v2.2.195 | | MED | 4 store ์ค‘๋ณต | โœ… v2.2.195 | | MED | 2-cache invariant | โœ… v2.2.197 | | LOW | `_maybe*` hook ํŒจํ„ด | โœ… v2.2.197 | **์ „์ฒด ์ •๋ฆฌ ์‹œ๋ฆฌ์ฆˆ (v2.2.195~200, 6 builds):** - ์‹ ๊ทœ utility 4๊ฐœ (eventSourcedStore, mtimeFileCache, postAnswerHooks, SystemPromptBlock Map) - ์‹ ๊ทœ ๋„๋ฉ”์ธ๋ณ„ ํ•ธ๋“ค๋Ÿฌ ๋ชจ๋“ˆ 5๊ฐœ (teamops trackers/dashboards/coordination/communication + system) - slashRouter.ts: 4,174 โ†’ 1,229 (โ€“2,945, โ€“71%) - agent.ts: 1,617 โ†’ 1,551 (โ€“66, โ€“4%) - ํ–ฅํ›„ ์ƒˆ verification block / store / hook / ์Šฌ๋ž˜์‹œ ๋ช…๋ น ์ถ”๊ฐ€ ํŒจํ„ด ๋ชจ๋‘ *1๊ณณ ๋ณ€๊ฒฝ* ์œผ๋กœ ์™„๋ฃŒ **๊ธฐ๋Šฅ ๋ณ€๊ฒฝ ์—†์Œ โ€” ์ˆœ์ˆ˜ ๊ตฌ์กฐ ์ •๋ฆฌ.** **์‹ ๊ทœ ํŒจํ‚ค์ง•:** `astra-2.2.200.vsix`. ๐ŸŽ‰ v2.2.200 ํ†ต๊ณผ! --- ## v2.2.199 (2026-05-29) ### ๐Ÿ—๏ธ ๋ฆฌํŒฉํ„ฐ๋ง ๋ผ์šด๋“œ 5 โ€” coordination + communication clusters slashRouter ๋ถ„๋ฆฌ 3๋‹จ๊ณ„ โ€” coordination (5 handlers) + communication (2 handlers) ๋„๋ฉ”์ธ ํŒŒ์ผ๋กœ. ์›๋ž˜ v2.2.200 ์˜ˆ์ •์ด๋˜ communication ๋„ ๊ฐ™์ด ๋ฌถ์Œ (sed ๋ฒ”์œ„์— ํ•จ๊ป˜ ์žกํ˜€ ์ž์—ฐ์Šค๋Ÿฌ์šด ํ†ตํ•ฉ). **slashRouter.ts: 2,537 โ†’ 1,615์ค„ (โ€“922, โ€“36%)** **๋ˆ„์  (v2.2.195 ๋ถ€ํ„ฐ): 4,174 โ†’ 1,615 (โ€“2,559, โ€“61%)** **์‹ ๊ทœ ํŒŒ์ผ 2๊ฐœ:** - `src/features/teamops/handlers/coordination.ts`: - runTask + parseFlexibleDate (Google Tasks + Calendar ๋™์‹œ ๋“ฑ๋ก) - runDecisions (Chronicle ADR ๊ฒ€์ƒ‰) - runOnesie (1:1 ๋ฏธํŒ… ์นด๋“œ) - runBlocked (์ „์‚ฌ ์ง€์—ฐยท๋ธ”๋กœ์ปค ๋ทฐ) - runStandup (ํŒ€ ์Šคํƒ ๋“œ์—… ์นด๋“œ) - `src/features/teamops/handlers/communication.ts`: - runDraft + DRAFT_TYPES (6์ข… ์ดˆ์•ˆ) - runFeedback + feedbackSave/List/Summary/Path + 2๊ฐœ LLM ํ”„๋กฌํ”„ํŠธ **Wiring ๋ณ€๊ฒฝ:** - `slashRouter.callLmSynthesis` ๋ฅผ `export` ๋กœ ๋…ธ์ถœ (communication ์ด LLM ํ˜ธ์ถœ์šฉ์œผ๋กœ import) - `parseTaskOwner` ์˜› local ์ •์˜ ์‚ญ์ œ (`_shared.ts` ์‚ฌ์šฉ) - ์˜› ParsedTaskOwner interface ์‚ญ์ œ (๋„๋ฉ”์ธ๋ณ„๋กœ ๋ถ„์‚ฐ) - ์˜› orphan ์ฃผ์„ ๋ธ”๋ก (deletion ํ›„ ๋‚จ์€ `// โ”€โ”€โ”€ /morning` header ๋“ฑ) ์ •๋ฆฌ **slashRouter ์ž”์—ฌ (~1,615์ค„):** - system: memory / glossary / help (~480์ค„) โ€” v2.2.200 - datacollect: research / benchmark / youtube / blog / wikify / meet (~1,000์ค„) โ€” ๋‹ค๋ฅธ ๋„๋ฉ”์ธ ์˜์—ญ, ์ถ”ํ›„ - ์ธํ”„๋ผ: registerSlashCommand / chunk / Webview / parseTaskOwner / callLmSynthesis / handleSlashCommand ๋“ฑ (~130์ค„) **๊ธฐ๋Šฅ ๋ณ€๊ฒฝ ์—†์Œ โ€” ์ˆœ์ˆ˜ ๊ตฌ์กฐ ์ •๋ฆฌ.** **์‹ ๊ทœ ํŒจํ‚ค์ง•:** `astra-2.2.199.vsix`. --- ## v2.2.198 (2026-05-29) ### ๐Ÿ—๏ธ ๋ฆฌํŒฉํ„ฐ๋ง ๋ผ์šด๋“œ 4 โ€” dashboards cluster split slashRouter ๋ถ„๋ฆฌ 2๋‹จ๊ณ„ โ€” dashboards ํด๋Ÿฌ์Šคํ„ฐ (morning/evening/cohort/weekly) ๋„๋ฉ”์ธ ํŒŒ์ผ๋กœ. **slashRouter.ts: 3,448 โ†’ 2,537์ค„ (โ€“911, โ€“26%)** **๋ˆ„์  (v2.2.195 ๋ถ€ํ„ฐ): 4,174 โ†’ 2,537 (โ€“1,637, โ€“39%)** **์‹ ๊ทœ ํŒŒ์ผ: `src/features/teamops/handlers/dashboards.ts`** - runMorning + _morningActions (๋ธŒ๋ฆฌํ•‘ ์นด๋“œ + ์•ก์…˜ ๋„์ถœ) - runEvening (์˜ค๋Š˜ ์ง„์ฒ™ + ๋‚ด์ผ ์ค€๋น„ + ํšŒ๊ณ ) - runCohort + _buildMonthlyBuckets + _cohortDashboard (MoM ์ถ”์„ธ) - runWeekly + _isoWeek + _thisWeekWindow + _priorWeekWindow + _aggregateWeek + _deltaSymbol (์ฃผ๊ฐ„ ๋ฆฌ๋ทฐ) **Wiring:** - `_shared.ts` ์˜ fmtKrw/daysUntil/parseTaskOwner/stageEmoji/STAGE_ORDER/TERMINAL_STAGES ์žฌ์‚ฌ์šฉ (trackers ์™€ ๋™์ผ) - ChronicleProjectStore ์ง์ ‘ import (์œ„ํด๋ฆฌ ADR ์Šค์บ”) - `index.ts` ๋ฐฐ๋Ÿด์— ํ•œ ์ค„ ์ถ”๊ฐ€ (`import './dashboards'`) **slashRouter ์ž”์—ฌ (~2,540์ค„):** - coordination: task / decisions / onesie / blocked / standup (~700์ค„) โ€” v2.2.199 ์˜ˆ์ • - communication: draft / feedback / meet (~430์ค„) โ€” v2.2.200 ์˜ˆ์ • - system: memory / glossary / help (~480์ค„) โ€” v2.2.200 ์˜ˆ์ • - datacollect: research / benchmark / youtube / blog / wikify (~900์ค„) โ€” ์ถ”ํ›„ (๋ณ„ ์˜์—ญ) **๊ธฐ๋Šฅ ๋ณ€๊ฒฝ ์—†์Œ โ€” ์ˆœ์ˆ˜ ๊ตฌ์กฐ ์ •๋ฆฌ.** **์‹ ๊ทœ ํŒจํ‚ค์ง•:** `astra-2.2.198.vsix`. --- ## v2.2.197 (2026-05-29) ### ๐Ÿ—๏ธ ๋ฆฌํŒฉํ„ฐ๋ง ๋ผ์šด๋“œ 3 โ€” PostAnswerHook registry + mtimeFileCache ๊ณต์œ  ์œ ํ‹ธ ์•„ํ‚คํ…์ฒ˜ ๊ฐ์‚ฌ์˜ MED 1๊ฑด (2 cache ๋™์ผ invariant) + LOW 1๊ฑด (`_maybeX` 3๊ฐœ ๋ฉ”์„œ๋“œ ํŒจํ„ด) ๋งˆ๋ฌด๋ฆฌ. **๊ฐ์‚ฌ 5๊ฑด ๋ˆ„์  ์ง„ํ–‰๋„ (๋ผ์šด๋“œ 1~3 ์™„๋ฃŒ):** | Sev | ํ•ญ๋ชฉ | ๊ฒฐ๊ณผ | |---|---|---| | HIGH | slashRouter god-file | ๐ŸŸก v2.2.196 trackers ๋ถ„๋ฆฌ (โ€“17%). ๋‚˜๋จธ์ง€ ๋ณด๋ฅ˜ โ€” ํŒจํ„ด ์ž…์ฆ๋จ | | HIGH | 5-block ์ฒด์ธ (system prompt) | โœ… v2.2.195 | | MED | 4 store ์ค‘๋ณต | โœ… v2.2.195 | | **MED** | **terminology+termValidator 2์บ์‹œ** | **โœ… v2.2.197** | | **LOW** | **`_maybe*` hook ํŒจํ„ด** | **โœ… v2.2.197** | --- **Part A โ€” `src/lib/mtimeFileCache.ts` (์‹ ๊ทœ utility)** ๋ฐฐ๊ฒฝ: terminologyBlock ๊ณผ termValidator ๊ฐ€ *๊ฐ™์€* ๊ธ€๋กœ์„œ๋ฆฌ ํŒŒ์ผ์— *๋ณ„๋„* mtime cache ๋ณด์œ . ๋ฌดํšจํ™” invariant ("๋‘˜ ๋‹ค ํ•จ๊ป˜ ๋น„์šฐ๊ธฐ") ๊ฐ€ ์‚ฌ๋žŒ ์†์œผ๋กœ ๊ฐ•์ œ๋จ โ€” slashRouter ๊ฐ€ `/glossary reload` ์‹œ ์–‘์ชฝ `clearXCache()` ๋ชจ๋‘ ํ˜ธ์ถœ. - `createMtimeFileCache(name, parse)` โ€” generic factory - mtime ์ž๋™ ์ฒดํฌ, ์บ์‹œ hit / ์ž๋™ ์žฌread+parse - `read(filePath)`, `invalidate(filePath)`, `clear()`, `size()` **Refactor:** - `terminologyBlock.ts` โ€” raw ๋ณธ๋ฌธ cache ๋ฅผ mtimeFileCache ์ธ์Šคํ„ด์Šค๋กœ - `termValidator.ts` โ€” parsed forbidden entries cache ๋ฅผ mtimeFileCache ์ธ์Šคํ„ด์Šค๋กœ - ๊ฐ ๋ชจ๋“ˆ์€ ์—ฌ์ „ํžˆ ์ž๊ธฐ `clearXCache()` export (slashRouter ๊ฐ€ ๋‘˜ ๋‹ค ํ˜ธ์ถœ โ€” ๋™์ž‘ ๋™์ผ) - ํ•ต์‹ฌ ์ฐจ์ด: boilerplate `if (cached && cached.mtime === mtime) return cached.content; ... ; cache.set(...)` ์‚ญ์ œ. ์ƒˆ ์บ์‹œ ์ถ”๊ฐ€ = ํ•œ ์ค„. --- **Part B โ€” `src/agent/postAnswerHooks/` (์‹ ๊ทœ registry)** ๋ฐฐ๊ฒฝ: `agent.ts` ์˜ `_maybeEmitDevilRebuttal` / `_maybePostHocSelfCheck` / `_maybeRunTermValidator` 3๊ฐœ private method + 3๊ฐœ import + 3๊ฐœ call site. ์ƒˆ hook ์ถ”๊ฐ€ ์‹œ *3๊ณณ* ํŽธ์ง‘ ํ•„์š”. ํŒจํ„ด ๋™์ผ (์•ˆ์ „ fallback, try/catch swallow) โ€” ๋ ˆ์ง€์ŠคํŠธ๋ฆฌํ™”. ``` src/agent/postAnswerHooks/ โ”œโ”€โ”€ types.ts โ† PostAnswerHook ์ธํ„ฐํŽ˜์ด์Šค + Context โ””โ”€โ”€ index.ts โ† 3 hooks ๋“ฑ๋ก + runPostAnswerHooks(ctx) iterator ``` **Refactor:** - `agent.ts`: 3 method ์‚ญ์ œ (โ€“66์ค„, 1617โ†’1551), 3๊ฐœ ํ˜ธ์ถœ โ†’ 1๊ฐœ `runPostAnswerHooks(ctx)` - ์ƒˆ hook ์ถ”๊ฐ€ = `postAnswerHooks/` ์— hook ๊ฐ์ฒด push (1๊ณณ) **ํšจ๊ณผ ์ธก์ •:** - ์ƒˆ ํ›„์ฒ˜๋ฆฌ hook ์ถ”๊ฐ€: ์˜› 3 step โ†’ ์ƒˆ 1 step - agent.ts: โ€“66์ค„ --- **๊ธฐ๋Šฅ ๋ณ€๊ฒฝ ์—†์Œ โ€” ์ˆœ์ˆ˜ ๊ตฌ์กฐ ์ •๋ฆฌ.** DevilRebuttal/SelfCheck/TermValidator ๋™์ž‘ ๋™์ผ, ๊ธ€๋กœ์„œ๋ฆฌ ์บ์‹œ ๋™์ž‘ ๋™์ผ. **์•„ํ‚คํ…์ฒ˜ ์ •๋ฆฌ ์‹œ๋ฆฌ์ฆˆ (v2.2.195~197) ์ดํ‰:** - ์‹ ๊ทœ utility ๋ชจ๋“ˆ 3๊ฐœ (eventSourcedStore, mtimeFileCache, postAnswerHooks) - ์‹ ๊ทœ ๋„๋ฉ”์ธ๋ณ„ ํ•ธ๋“ค๋Ÿฌ ๋ชจ๋“ˆ 1๊ฐœ (teamops/handlers/{_shared,trackers,index}) - ์ฝ”๋“œ ๋ผ์ธ: slashRouter 4,174โ†’3,448 (โ€“726), agent.ts (โ€“66) - ๋ฏธ๋ž˜ ๋ถ€๋‹ด ๊ฐ์†Œ: ์ƒˆ verification block ์ถ”๊ฐ€ 1๊ณณ, ์ƒˆ store 1๊ณณ, ์ƒˆ hook 1๊ณณ - ๊ฐ์‚ฌ 5๊ฑด ์ค‘ 4๊ฑด ์™„๋ฃŒ, 1๊ฑด (slashRouter ๋‚˜๋จธ์ง€) ๋ณด๋ฅ˜ โ€” ํŒจํ„ด ์ž…์ฆ ํ›„ ์ถ”ํ›„ ๋ผ์šด๋“œ **์‹ ๊ทœ ํŒจํ‚ค์ง•:** `astra-2.2.197.vsix`. --- ## v2.2.196 (2026-05-29) ### ๐Ÿ—๏ธ ๋ฆฌํŒฉํ„ฐ๋ง ๋ผ์šด๋“œ 2 โ€” slashRouter handler split (trackers cluster) ์•„ํ‚คํ…์ฒ˜ ๊ฐ์‚ฌ์˜ HIGH 1๋ฒˆ (`slashRouter.ts` 4,174์ค„ god-file) ํ•ด๊ฒฐ ์‹œ์ž‘. ์ฒซ ํด๋Ÿฌ์Šคํ„ฐ(ํŠธ๋ž˜์ปค 3๊ฐœ) ๋ฅผ ๋„๋ฉ”์ธ๋ณ„ ํŒŒ์ผ๋กœ ๋ถ„๋ฆฌํ•ด ํŒจํ„ด ํ™•๋ฆฝ. ๋‚˜๋จธ์ง€ ํด๋Ÿฌ์Šคํ„ฐ(coordination/communication/dashboards) ๋Š” ๋‹ค์Œ ๋ผ์šด๋“œ. **slashRouter.ts: 4,174 โ†’ 3,448์ค„ (โ€“726, โ€“17%)** **์‹ ๊ทœ ๊ตฌ์กฐ: `src/features/teamops/handlers/`** ``` src/features/teamops/handlers/ โ”œโ”€โ”€ _shared.ts โ† fmtKrw, parseAmount, daysUntil, parseTaskOwner, โ”‚ STAGE_ORDER, TERMINAL_STAGES, stageEmoji โ”œโ”€โ”€ trackers.ts โ† runRunway, runCustomers, runHire + ๊ฐ์ž helpers โ”‚ + registerSlashCommand 3๊ฑด ์ž๊ธฐ ๋“ฑ๋ก โ””โ”€โ”€ index.ts โ† ๋ฐฐ๋Ÿด (`import './trackers'`) ``` **Wiring:** - `src/extension.ts` โ€” `import './features/teamops/handlers'` side-effect import (entry point, ์ˆœํ™˜ import ํšŒํ”ผ) - `src/features/datacollect/slashRouter.ts` โ€” `chunk` + `Webview` ์ธํ„ฐํŽ˜์ด์Šค export, ์˜› helpers ๋Š” `_shared.ts` ์—์„œ alias import ๋กœ ๋‚จ์€ ์ธ๋ผ์ธ ํ•ธ๋“ค๋Ÿฌ(morning/evening/cohort/weekly/blocked/standup) ํ˜ธํ™˜ ์œ ์ง€ **ํŒจํ„ด ์ž…์ฆ (๋‹ค์Œ ๋ผ์šด๋“œ ์ฒญ์‚ฌ์ง„):** - `trackers.ts` ๊ฐ€ ์ž‘๋™ํ•˜๋Š” ํ•œ, ๊ฐ™์€ ํŒจํ„ด์œผ๋กœ ๋‹ค์Œ ํด๋Ÿฌ์Šคํ„ฐ: - `coordination.ts` โ€” task / decisions / onesie / blocked / standup - `communication.ts` โ€” draft / feedback / meet - `dashboards.ts` โ€” morning / evening / cohort / weekly - ๊ฐ ํด๋Ÿฌ์Šคํ„ฐ = ์ƒˆ ํŒŒ์ผ + ์˜› ์ฝ”๋“œ sed-delete + `index.ts` ์— ํ•œ ์ค„ ์ถ”๊ฐ€ **Phase 1 (v2.2.195) ๋„ ํ•จ๊ป˜:** eventSourcedStore + SystemPromptBlock registry โ€” ์ด๋ฏธ ์ถœ์‹œ. ํ•ฉ์ณ์„œ ๊ฐ์‚ฌ HIGH 2๊ฑด ์ค‘ 1.5๊ฑด ํ•ด๊ฒฐ, MED 1๊ฑด (4 store ์ค‘๋ณต) ํ•ด๊ฒฐ. **์•„ํ‚คํ…์ฒ˜ ๊ฐ์‚ฌ ํ›„์† ์ง„ํ–‰๋„:** | Sev | ํ•ญ๋ชฉ | ์ƒํƒœ | |---|---|---| | HIGH | slashRouter god-file | ๐ŸŸก 17% ์ถ•์†Œ (trackers ๋ถ„๋ฆฌ). ๋‚˜๋จธ์ง€ v2.2.197+ | | HIGH | 5-block ์ฒด์ธ (system prompt) | โœ… ์™„๋ฃŒ (v2.2.195) | | MED | 4 store ์ค‘๋ณต | โœ… ์™„๋ฃŒ (v2.2.195) | | MED | terminology+termValidator 2์บ์‹œ | โณ v2.2.197 | | LOW | _maybeEmitDevilRebuttal ๋ฅ˜ hook ํŒจํ„ด | โณ v2.2.197 | **๊ธฐ๋Šฅ ๋ณ€๊ฒฝ ์—†์Œ โ€” ์ˆœ์ˆ˜ ๊ตฌ์กฐ ์ •๋ฆฌ.** /runway, /customers, /hire ๋™์ž‘ ๋™์ผ. **์‹ ๊ทœ ํŒจํ‚ค์ง•:** `astra-2.2.196.vsix`. --- ## v2.2.195 (2026-05-29) ### ๐Ÿ—๏ธ ๋ฆฌํŒฉํ„ฐ๋ง ๋ผ์šด๋“œ 1 โ€” eventSourcedStore + SystemPromptBlock registry ์•„ํ‚คํ…์ฒ˜ ๊ฐ์‚ฌ ๊ฒฐ๊ณผ (HIGH 2๊ฑด, MED 3๊ฑด) ์ค‘ ๊ฐ€์žฅ ํšจ๊ณผยท๋น„์šฉ ๋น„์œจ ์ข‹์€ 2๊ฐœ. ๊ธฐ๋Šฅ ๋ณ€๊ฒฝ ์—†์Œ โ€” ์ˆœ์ˆ˜ ๊ตฌ์กฐ ์ •๋ฆฌ. **Phase 1 โ€” `src/features/_shared/eventSourcedStore.ts` (์‹ ๊ทœ)** ๋ฐฐ๊ฒฝ: customers/hire/runway/feedback 4๊ฐœ store ์˜ `getXFilePath() + readX() + appendX()` ๊ฐ€ byte-for-byte ์ค‘๋ณต (~240์ค„). - `createEventStore({ relPath, validate })` โ€” generic factory - 4๊ฐœ store ๊ฐ€ ๊ฐ๊ฐ ~12์ค„๋กœ ์ถ•์†Œ (event type + validator + `computeStates` ๋งŒ ๋‚จ์Œ) - BOM/์ธ์ฝ”๋”ฉ fix ๊ฐ™์€ edge case ๊ฐ€ *ํ•œ ๊ณณ* ์—์„œ ์ „ํŒŒ - ๋„๋ฉ”์ธ ๋กœ์ง (`computeCustomerStates`, `computeCandidateStates`, `computeRunwayStatus`) ์€ ๊ทธ๋Œ€๋กœ ๋„๋ฉ”์ธ ํŒŒ์ผ์— ๋‚จ์Œ โ€” I/O ๋งŒ ์ถ”์ƒํ™” ```typescript // ์˜› customersStore (60์ค„): import fs/path/vscode + getCustomersFilePath + readEvents + appendEvent // ์ƒˆ (5์ค„): const _store = createEventStore({ relPath, validate }); export const getCustomersFilePath = _store.getFilePath; export const readEvents = _store.read; export const appendEvent = _store.append; ``` **Phase 2 โ€” SystemPromptBlock registry (5 ํ•„๋“œ โ†’ 1 Map)** ๋ฐฐ๊ฒฝ: ์ƒˆ verification ๋ธ”๋ก ์ถ”๊ฐ€ ์‹œ *5๊ณณ ํŽธ์ง‘ ๊ฐ•์ œ* โ€” `_turnCtx` ํ•„๋“œ + `resetTurnContext` + `buildAstraModeSystemPrompt` ์ธ์ž + casual ternary + template literal ์œ„์น˜. 5๋ฒˆ ๋ฐ˜๋ณต (conflict/cove/intent/citation/terminology). ์ด ํŒจํ„ด์ด god-file ๋งŒ๋“œ๋Š” ๊ธธ. - [agent.ts](src/agent.ts) `_turnCtx`: 5 named `string` ํ•„๋“œ โ†’ 1 `dynamicBlocks: Map` - [agent.ts](src/agent.ts) `resetTurnContext()`: 5 reset โ†’ 1 `.clear()` - [agent.ts](src/agent.ts) `buildAstraModeSystemPrompt` ํ˜ธ์ถœ: 5 named param โ†’ 1 `dynamicBlocks` param - [buildAstraModeSystemPrompt.ts](src/agent/handlePrompt/buildAstraModeSystemPrompt.ts): 5 ternary gate + 5 ์œ„์น˜ ์‚ฝ์ž… โ†’ 1 for-loop join - [memoryContext.ts](src/lib/contextBuilders/memoryContext.ts): 5 `turnCtx.X = build...` โ†’ 5 `blocks.set('id', build...)` (ํ•œ ์ค„์”ฉ, ์ƒˆ ๋ธ”๋ก์€ ์—ฌ๊ธฐ์„œ set ํ•œ ์ค„๋งŒ ์ถ”๊ฐ€) **ํšจ๊ณผ ์ธก์ •:** - ์ƒˆ ๋ธ”๋ก ์ถ”๊ฐ€ = **25 โ†’ 1** edit ์ง€์  (5 ํŒŒ์ผ ร— 5 step โ†’ 1 set call) - ์˜› 5 ternary `(!isCasualConversation && X && X.trim()) ? '\n\n' + X : ''` โ†’ 1 loop, casual gate 1๋ฒˆ - ๋ธ”๋ก ์ˆœ์„œ ๋ณ€๊ฒฝ = memoryContext ์˜ set ์ˆœ์„œ ๋ณ€๊ฒฝ๋งŒ (์˜›: template literal ์žฌ๋ฐฐ์น˜) **์•„ํ‚คํ…์ฒ˜ ๊ฐ์‚ฌ ํ›„์† ์ž‘์—… (์˜ˆ์ •):** - v2.2.196 โ€” slashRouter 4,174์ค„ handler ๋„๋ฉ”์ธ๋ณ„ ๋ถ„ํ•  (HIGH 1, ๋ฏธ์™„) - v2.2.197 โ€” PostAnswerHook registry (DevilRebuttal/SelfCheck/TermValidator ํŒจํ„ด ํ†ตํ•ฉ) + mtimeFileCache ๊ณต์œ  ์œ ํ‹ธ (terminologyBlock + termValidator ์บ์‹œ ํ†ตํ•ฉ) **๊ธฐ๋Šฅ ๋ณ€๊ฒฝ ์—†์Œ โ€” ์ˆœ์ˆ˜ ๊ตฌ์กฐ ๋ณ€ํ™”.** ๋ชจ๋“  verification ๋ธ”๋ก ๋™์ž‘ ๋™์ผ, ๋ชจ๋“  store ๋™์ž‘ ๋™์ผ. **์‹ ๊ทœ ํŒจํ‚ค์ง•:** `astra-2.2.195.vsix`. --- ## v2.2.194 (2026-05-29) ### ๐Ÿ”ค Post-gen Term Validator โ€” ๊ฒฐ์ •๋ก ์  ๊ธ€๋กœ์„œ๋ฆฌ ๊ฒ€์ฆ (์—”์ง„ ๋ณ€๊ฒฝ) v2.2.192 ์˜ Terminology Dictionary ๊ฐ€ *instructional* (LLM ์—๊ฒŒ "ํ‘œ์ค€ ํ‘œ๊ธฐ ์‚ฌ์šฉ" ์ง€์‹œ) ์˜€๋‹ค๋ฉด, ์ด๊ฑด *deterministic* โ€” LLM ์ด ์ง€์‹œ๋ฅผ ์•ˆ ๋”ฐ๋ž์„ ๋•Œ ๊ฒฐ์ •๋ก ์  ์ •๊ทœ์‹ ์Šค์บ”์œผ๋กœ catch. **๊ฐ์‚ฌ ๊ฒฐ๊ณผ (์ ์šฉ ๋ฒ”์œ„ ์ขํž˜):** - ์‚ฌ์šฉ์ž ์ œ์•ˆ 4์ข… ์ค‘ **#1a Post-gen Validator** ๋งŒ ์ ์šฉ (์‚ฌ์šฉ์ž ์„ ํƒ) - #1b Contextual Refiner (rewrite) โ€” Self-Check ์™€ ์ค‘๋ณต, latency ๋น„์šฉ - #2 Few-Shot Bad/Good ์˜ˆ์‹œ โ€” ๊ธ€๋กœ์„œ๋ฆฌ ์ž์œ  markdown ์ด๋ผ ์‚ฌ์šฉ์ž๊ฐ€ ์ง์ ‘ ์ถ”๊ฐ€ ๊ฐ€๋Šฅ - #3 CoVe ๊ฒ€์ฆ ์งˆ๋ฌธ โ€” v2.2.184 + v2.2.191 ์—์„œ ์™„๋ฃŒ --- **์‹ ๊ทœ ๋ชจ๋“ˆ: [termValidator.ts](src/agent/termValidator.ts)** - `parseGlossary(filePath)` โ€” `.astra/glossary.md` ์ •๊ทœ์‹ ํŒŒ์‹ฑ (mtime ์บ์‹œ): - **Pattern 1**: `- **Canonical** (X: typo1, typo2, ...)` โ€” typo ๋“ฑ์žฅ ์‹œ "โ†’ Canonical ๊ถŒ์žฅ" - **Pattern 2**: H2/H3 ์ œ๋ชฉ์— "๊ธˆ์ง€/๋น„์ถ”/forbidden/avoid/don't" ํฌํ•จ ์„น์…˜์˜ `- โŒ "phrase"` ๋˜๋Š” `- โŒ phrase` - `validateTermUsage(answer, path)` โ€” ์ •๊ทœ์‹ ์Šค์บ” + ๋ฐœ๊ฒฌ ํšŸ์ˆ˜ - `formatTermValidatorFooter(result)` โ€” markdown ํ•œ ์ค„ footer - ํ† ํฐ ํ•„ํ„ฐ โ€” ํ•œ๊ธ€ 1์Œ์ ˆยท์˜๋ฌธ 1์žยท๊ณต๋ฐฑ ํฌํ•จ ํ† ํฐ ์ œ์™ธ (false-positive ์ตœ์†Œํ™”) - ์˜๋ฌธ ํ† ํฐ: ๋‹จ์–ด ๊ฒฝ๊ณ„ ๋งค์น˜, ํ•œ๊ธ€: substring (ํ•œ๊ธ€์€ word boundary ์˜๋ฏธ ์—†์Œ) **๋น„์šฉยท์•ˆ์ „:** - **LLM ํ˜ธ์ถœ ์—†์Œ** โ€” ์ •๊ทœ์‹ 1ํšŒ, ์ˆ˜ ms - ๋งค turn ์ž๋™ ์‹คํ–‰ (Self-Check ์˜†) - ๊ธ€๋กœ์„œ๋ฆฌ ์—†๊ฑฐ๋‚˜ ๋น„์–ด ์žˆ์œผ๋ฉด silent no-op - ๋‹ต๋ณ€ ์ž์ฒด์—” ์˜ํ–ฅ ์—†์Œ (Devil/Self-Check ์™€ ๊ฐ™์€ swallow ํŒจํ„ด) **Footer ํ˜•์‹:** - ์œ„๋ฐ˜ ์—†์Œ: `๐Ÿ”ค Term validator: โœ“ ์‚ฌ์ „ N๊ฐœ ํ•ญ๋ชฉ, ์œ„๋ฐ˜ ์—†์Œ` - ์œ„๋ฐ˜ ์žˆ์Œ: `๐Ÿ”ค Term validator: โš ๏ธ ์œ„๋ฐ˜ 3๊ฑด โ€” "astra" โ†’ "ASTRA" ยท "chronicle ์™ธ" โ†’ "Chronicle" ยท "p-rein๋™" โ†’ "P-Reinforce"` **Wiring:** - [agent.ts](src/agent.ts) โ€” `_maybeRunTermValidator` ๋ฉ”์„œ๋“œ ์ถ”๊ฐ€, Self-Check ํ˜ธ์ถœ ์งํ›„ - `/glossary reload` โ€” Term Validator ์บ์‹œ๋„ ํ•จ๊ป˜ ๋น„์›€ **์‹ ๊ทœ ์„ค์ • 1๊ฐœ:** - `g1nation.termValidatorEnabled` (boolean, ๊ธฐ๋ณธ true) --- **ASTRA ๋‹ต๋ณ€ ํ›„ ๊ฒ€์ฆ ๋ˆ„์  (footer ํ˜•์‹):** | ๋นŒ๋“œ | Footer | ๋น„์šฉ | Default | |---|---|---|---| | v2.2.191 | `๐Ÿ” Self-check`: ๋‹ตํ•จ=โœ“ ยท ๊ทผ๊ฑฐ=โ—‹ ยท ๋ชจ์ˆœ=์—†์Œ | LLM ํ˜ธ์ถœ 1ํšŒ | off (opt-in) | | **v2.2.194** | **`๐Ÿ”ค Term validator`: โœ“ ์‚ฌ์ „ N๊ฐœ, ์œ„๋ฐ˜ ์—†์Œ** | **์ •๊ทœ์‹ 1ํšŒ (cheap)** | **on** | **์‹œ๋„ˆ์ง€:** - Terminology Dictionary (v2.2.192) โ†’ LLM ์—๊ฒŒ ํ‘œ์ค€ ํ‘œ๊ธฐ ์‚ฌ์šฉ ์ง€์‹œ (์ž‘์„ฑ ์ค‘) - Term Validator (v2.2.194) โ†’ ๊ทธ ๊ฒฐ๊ณผ๋ฅผ *๋‹ต๋ณ€ ํ›„* ๊ฒ€์ฆ + ์œ„๋ฐ˜ ํ‘œ์‹œ (์ž‘์„ฑ ํ›„) - ์ฆ‰, *instructional + deterministic* ์˜ ๋‘ ๋‹จ๊ณ„ ๋ฐฉ์–ด์„  **์‹ ๊ทœ ํŒจํ‚ค์ง•:** `astra-2.2.194.vsix`. --- ## v2.2.193 (2026-05-29) ### ๐Ÿ“š /help โ€” ์Šฌ๋ž˜์‹œ ๋ช…๋ น ์นดํ…Œ๊ณ ๋ฆฌ ๋ธŒ๋ผ์šฐ์ € + ์—”์ง„ ์ƒํƒœ ๋ˆ„์ ๋œ ์Šฌ๋ž˜์‹œ ๋ช…๋ น์ด 25๊ฐœ+. ์‚ฌ์šฉ์ž ๋ฐœ๊ฒฌ ๋ถ€๋‹ด์„ ์ค„์ด๊ธฐ ์œ„ํ•ด ์นดํ…Œ๊ณ ๋ฆฌ๋ณ„ ๊ทธ๋ฃนํ•‘ + ASTRA ์ถ”๋ก  ์—”์ง„ ์ƒํƒœ(6์ข… verification ๋ธ”๋ก on/off) ํ•œ ํ™”๋ฉด. **์‹ ๊ทœ `/help` ๋ช…๋ น:** - `/help` โ€” ์ „์ฒด ๋ช…๋ น ์นดํ…Œ๊ณ ๋ฆฌ๋ณ„ + ์—”์ง„ ์ƒํƒœ - `/help <๋ช…๋ น>` โ€” ํŠน์ • ๋ช…๋ น์˜ ์งง์€ ์„ค๋ช… + ์„ธ๋ถ€ ๋„์›€๋ง ์•ˆ๋‚ด **์นดํ…Œ๊ณ ๋ฆฌ ์ž๋™ ๊ทธ๋ฃนํ•‘ (7๊ฐœ):** - โ˜€๏ธ **์ผ๊ณผ ๋ฆฌ๋“ฌ (Daily Cycle)** โ€” /morning ยท /evening ยท /weekly ยท /cohort ยท /standup - ๐Ÿข **4์ธ ํŒ€ ์šด์˜ ํŠธ๋ž˜์ปค** โ€” /runway ยท /customers ยท /hire (event-sourced .jsonl) - ๐Ÿ“‹ **์ž‘์—…ยท๋ธ”๋กœ์ปคยท1:1** โ€” /task ยท /blocked ยท /onesie ยท /decisions - โœ‰๏ธ **์™ธ๋ถ€ ์ถœ๋ ฅยท๊ธฐ๋ก** โ€” /draft ยท /feedback - ๐Ÿ”ฌ **๋ฆฌ์„œ์น˜ยท๋ถ„์„** โ€” /research ยท /benchmark ยท /youtube ยท /blog ยท /wikify ยท /meet (Datacollect bridge) - โš™๏ธ **์‹œ์Šคํ…œยท๋ฉ”๋ชจ๋ฆฌ** โ€” /memory ยท /glossary - ๐Ÿ“ˆ **์ฃผ์‹ยท์™ธ๋ถ€** โ€” /stocks - ๐Ÿ”Œ **๊ธฐํƒ€ยท์™ธ๋ถ€ ํ”Œ๋Ÿฌ๊ทธ์ธ** โ€” ์œ„ ์นดํ…Œ๊ณ ๋ฆฌ์— ์•ˆ ์žกํžˆ๋Š” ๋ชจ๋“  ๋ช…๋ น (์™ธ๋ถ€ ํ”Œ๋Ÿฌ๊ทธ์ธ ์ž๋™ ํฌํ•จ) **ASTRA ์ถ”๋ก  ์—”์ง„ ์ƒํƒœ (์ž๋™ ํ‘œ์‹œ):** 6์ข… verification ๋ธ”๋ก์˜ *ํ˜„์žฌ on/off* ๋ฅผ ํ•œ ํ™”๋ฉด. ๊ฐ ๋ธ”๋ก์˜ system prompt ๋ผ๋ฒจ๊ณผ *์–ด๋А ์‹œ์ * ์— ๋™์ž‘ํ•˜๋Š”์ง€ ํ‘œ์‹œ: - โœ“ Intent Clarification โ€” `[INTENT CLARIFICATION GUIDANCE]` (๋‹ต๋ณ€ ์‹œ์ž‘ ์ „) - โœ“ Terminology Dictionary โ€” `[TERMINOLOGY DICTIONARY]` (๋‹ต๋ณ€ ์ž‘์„ฑ ์ค‘) - โœ“ Conflict Surface โ€” `[CONFLICT WARNINGS]` (๋‹ต๋ณ€ ์ž‘์„ฑ ์ค‘) - โœ“ Chain-of-Verification โ€” `[VERIFICATION CHECKLIST]` (๋‹ต๋ณ€ ์ž‘์„ฑ ์ค‘) - โœ“ Citation Trace โ€” `[CITATION TRACE]` (๋‹ต๋ณ€ ๋) - โŠ˜ Post-hoc Self-Check โ€” `footer` (๋‹ต๋ณ€ ์™„๋ฃŒ ํ›„, opt-in) ์ถ”๊ฐ€ ์‹ ํ˜ธ (๊ฒ€์ƒ‰ ๋‹จ๊ณ„): Recency ยท Actionability ยท Hierarchical Level ยท Semantic Re-rank (opt-in). ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ: Temporal Markers ยท Distillation Loop. **๋™์  ๋ช…๋ น ๋ชฉ๋ก:** - `listSlashCommands()` ์‚ฌ์šฉ โ€” ์™ธ๋ถ€ ํ”Œ๋Ÿฌ๊ทธ์ธ์ด ์ถ”๊ฐ€ํ•œ ๋ช…๋ น๋„ ์ž๋™ ๋…ธ์ถœ - ์นดํ…Œ๊ณ ๋ฆฌ ๋งค์นญ ํ•จ์ˆ˜ ๊ธฐ๋ฐ˜ โ€” ์ƒˆ ๋ช…๋ น ์ถ”๊ฐ€ ์‹œ ๋งค์นญ ํ•จ์ˆ˜๋งŒ ์—…๋ฐ์ดํŠธํ•˜๋ฉด ์ž๋™ ๋ถ„๋ฅ˜ **์‹ ๊ทœ ํŒจํ‚ค์ง•:** `astra-2.2.193.vsix`. --- ## v2.2.192 (2026-05-29) ### ๐Ÿ“– Terminology Dictionary + Term Check (์—”์ง„ ๋ณ€๊ฒฝ) ์‚ฌ์šฉ์ž ์ œ์•ˆ "์ถœ๋ ฅ ํ’ˆ์งˆ ๊ด€๋ฆฌ" ์ค‘ *์ง„์งœ ์ƒˆ ๊ฐ€์น˜* ๋งŒ ์ถ”์ถœ โ€” Terminology Glossary ๋‹จ์ผ ๋ฉ”์ปค๋‹ˆ์ฆ˜์œผ๋กœ #1(typo/์šฉ์–ด self-check) + #2(ํ‘œ์ค€ ์šฉ์–ด์ง‘) ํ†ตํ•ฉ. **#3 sampling ํŠœ๋‹์€ ์ด๋ฏธ ์ ์šฉ๋œ ์ƒํƒœ๋ผ ์Šคํ‚ต**. **๊ฐ์‚ฌ ๊ฒฐ๊ณผ (์Šคํ‚ตํ•œ ์ด์œ ):** - #3 Temperature/Sampling ํŠœ๋‹ โ†’ ์ด๋ฏธ `modelTemperature=0.3`, `datacollectSynthesisTemperature=0.1`, `top_p=0.85`, `top_k=20`, `repeat_penalty=1.1`, `repairKoreanGlitches` ์ ์šฉ. ์ถ”๊ฐ€ ํŠœ๋‹ ์‹œ ๋‹ค์–‘์„ฑโ†“ ์œ„ํ—˜. - #1 ๋ณ„๋„ [Output Quality Control] ๋ธ”๋ก โ†’ ์‹œ์Šคํ…œ ํ”„๋กฌํ”„ํŠธ ๋น„๋Œ€ ์œ„ํ—˜, *Glossary ๋ธ”๋ก ๋‚ด Term Check sub-clause* ๋กœ ํ†ตํ•ฉ์ด ๊น”๋”. --- **์‹ ๊ทœ ๋ฉ”์ปค๋‹ˆ์ฆ˜ โ€” `.astra/glossary.md` ์‚ฌ์šฉ์ž ํŽธ์ง‘ ํŒŒ์ผ** - **์œ„์น˜**: `/.astra/glossary.md` (์„ค์ •์œผ๋กœ ๋ณ€๊ฒฝ ๊ฐ€๋Šฅ) - **ํ˜•์‹**: ์ž์œ  markdown โ€” ASTRA ๋Š” ํ˜•์‹ ๊ฐ•์ œ ์•ˆ ํ•จ, ๋ณธ๋ฌธ ํ†ต์งธ๋กœ ์‹œ์Šคํ…œ ํ”„๋กฌํ”„ํŠธ์— ์ฃผ์ž… - **๊ถŒ์žฅ ์ปจ๋ฒค์…˜** (`/glossary init` ํ…œํ”Œ๋ฆฟ): - `## ํ‘œ์ค€ ํ‘œ๊ธฐ` โ€” `**ASTRA** (X: astra) โ€” ๋ณธ extension` ํ˜•ํƒœ - `## ์˜-ํ•œ ํ‘œ๊ธฐ ์ปจ๋ฒค์…˜` โ€” Performance โ†’ ์„ฑ๋Šฅ - `## ๊ธˆ์ง€ยท๋น„์ถ” ํ‘œํ˜„` - `## ์Šฌ๋ž˜์‹œ ๋ช…๋ น ํ‘œ๊ธฐ` - **์บ์‹œ**: mtime ๊ธฐ๋ฐ˜ โ€” ์‚ฌ์šฉ์ž๊ฐ€ ํŽธ์ง‘ํ•  ๋•Œ๋งŒ ๋‹ค์‹œ ์ฝ์Œ (๋งค turn ๋””์Šคํฌ read 0ํšŒ) **์‹œ์Šคํ…œ ํ”„๋กฌํ”„ํŠธ ๋ธ”๋ก `[TERMINOLOGY DICTIONARY]`:** 1. ๊ธ€๋กœ์„œ๋ฆฌ ๋ณธ๋ฌธ (cap 4000์ž, ์ดˆ๊ณผ๋ถ„ ์ž˜๋ฆผ ์•ˆ๋‚ด) 2. **[Term Check โ€” ๋‹ต๋ณ€ ์ง์ „ ์ž๊ธฐ ์ ๊ฒ€]** 5๊ฐœ ๊ทœ์น™ (์‚ฌ์šฉ์ž ์ œ์•ˆ #1 ํ†ตํ•ฉ): - ํ‘œ์ค€ ํ‘œ๊ธฐ ์šฐ์„ , ๋ณ€ํ˜•ยท๋ฒˆ์—ญ ์ž„์˜ ์ ์šฉ ๊ธˆ์ง€ - ํ‘œ๊ธฐ ํ”๋“ค๋ฆผ ๋ฐฉ์ง€ (๊ฐ™์€ ๋‹ต๋ณ€ ์•ˆ์—์„œ ์ผ๊ด€) - ์ƒˆ ์šฉ์–ด ๋„์ž… ์‹œ "์ƒˆ ์šฉ์–ด: X" ๋ช…์‹œ - ๊ธˆ์ง€ ํ‘œ๊ธฐ ๊ฒ€์ฆ + ์žฌ์ž‘์„ฑ - ํ‘œ๊ธฐ ํ™•์‹  ์—†์œผ๋ฉด "๊ธ€๋กœ์„œ๋ฆฌ์— ์—†์–ด ์ผ๋ฐ˜ ํ‘œ๊ธฐ ์‚ฌ์šฉ" ๋ช…์‹œ **์‹ ๊ทœ ๋ชจ๋“ˆ: [terminologyBlock.ts](src/retrieval/terminologyBlock.ts)** - `buildTerminologyBlock(opts)` โ€” ๊ธ€๋กœ์„œ๋ฆฌ + Term Check ํ•ฉ์ณ ๋ธ”๋ก ์ƒ์„ฑ - mtime cache ๋‚ด์žฅ - `GLOSSARY_TEMPLATE` โ€” ๊ถŒ์žฅ ํ…œํ”Œ๋ฆฟ export **์‹ ๊ทœ ์Šฌ๋ž˜์‹œ ๋ช…๋ น `/glossary`:** - `/glossary` โ€” ์ƒํƒœ ์นด๋“œ (ํŒŒ์ผ ์กด์žฌ/ํฌ๊ธฐ/cap/์ฃผ์ž… ์—ฌ๋ถ€/์ฒซ 5์ค„ ๋ฏธ๋ฆฌ๋ณด๊ธฐ) - `/glossary path` โ€” ์ ˆ๋Œ€ ๊ฒฝ๋กœ - `/glossary init` โ€” ๊ถŒ์žฅ ํ…œํ”Œ๋ฆฟ์œผ๋กœ ์ดˆ๊ธฐ ํŒŒ์ผ ์ƒ์„ฑ (์ด๋ฏธ ์žˆ์œผ๋ฉด ๋ฎ์–ด์“ฐ์ง€ ์•Š์Œ) - `/glossary reload` โ€” ์บ์‹œ ๋น„์šฐ๊ธฐ (ํŽธ์ง‘ ์งํ›„ ์ฆ‰์‹œ ๋ฐ˜์˜ ๊ฐ•์ œ) - `/glossary help` โ€” ๊ฐ€์ด๋“œ **Wiring:** - [memoryContext.ts](src/lib/contextBuilders/memoryContext.ts) โ€” ๋งค turn ๊ธ€๋กœ์„œ๋ฆฌ ๋ธ”๋ก ๊ณ„์‚ฐ โ†’ `turnCtx.terminology` - [agent.ts](src/agent.ts) โ€” turn reset ์‹œ ๋น„์›€, system prompt build ์‹œ ์ „๋‹ฌ - [buildAstraModeSystemPrompt.ts](src/agent/handlePrompt/buildAstraModeSystemPrompt.ts) โ€” `[CONTEXT]` ๋ฐ–, `[INTENT CLARIFICATION]` ์งํ›„ (verification ๋ธ”๋ก ๊ตฐ์ง‘) - Casual conversation ๋ชจ๋“œ ๋น„ํ™œ์„ฑ (greeting ์— ์šฉ์–ด ๊ฐ•์ œ ์˜๋ฏธ ์—†์Œ) **์‹ ๊ทœ ์„ค์ • 3๊ฐœ:** - `g1nation.glossaryEnabled` (boolean, ๊ธฐ๋ณธ true) โ€” ๋งˆ์Šคํ„ฐ - `g1nation.glossaryPath` (string, ๊ธฐ๋ณธ `.astra/glossary.md`) - `g1nation.glossaryMaxBodyLength` (number 500~20000, ๊ธฐ๋ณธ 4000) **ASTRA ๊ฒ€์ฆ 6์ข… (engine ๋ณ€๊ฒฝ ๋ˆ„์ , v2.2.183~192):** | # | ๋ธ”๋ก | ์‹œ์  | ๋นŒ๋“œ | |---|---|---|---| | INTENT | `[INTENT CLARIFICATION GUIDANCE]` | ๋‹ต๋ณ€ ์‹œ์ž‘ ์ „ | v2.2.190 | | **TERMINOLOGY** | **`[TERMINOLOGY DICTIONARY]`** | **๋‹ต๋ณ€ ์ž‘์„ฑ ์ค‘ (์šฉ์–ด)** | **v2.2.192** | | CONFLICT | `[CONFLICT WARNINGS]` | ๋‹ต๋ณ€ ์ž‘์„ฑ ์ค‘ | v2.2.183 | | COVE | `[VERIFICATION CHECKLIST]` | ๋‹ต๋ณ€ ์ž‘์„ฑ ์ค‘ | v2.2.184 | | CITATION | `[CITATION TRACE]` | ๋‹ต๋ณ€ ๋ | v2.2.190 | | SELF-CHECK | footer (separate LLM) | ๋‹ต๋ณ€ ์™„๋ฃŒ ํ›„ | v2.2.191 | **์‹ ๊ทœ ํŒจํ‚ค์ง•:** `astra-2.2.192.vsix`. --- ## v2.2.191 (2026-05-29) ### ๐Ÿ” ์ถ”๋ก  ์‹ ๋ขฐ๋„ โ€” Post-hoc Self-Check (2-pass ๊ฒ€์ฆ, ์—”์ง„ ๋ณ€๊ฒฝ) v2.2.190 ์˜ #1+#2 (Intent + Citation) ์ง๊ฟ. ๋‹ต๋ณ€ *์™„๋ฃŒ ํ›„* ๋ณ„๋„ LLM ํ˜ธ์ถœ 1ํšŒ๋กœ ์‚ฌํ›„ ๊ฒ€์ฆ. CoVe (v2.2.184) ๊ฐ€ *๋‹ต๋ณ€ ์ „* instructional self-check ์ด๋ฉด, ์ด๋ฒˆ์—” *๋‹ต๋ณ€ ํ›„* ๊ฐ๊ด€ ํ‰๊ฐ€. **์„ค๊ณ„ ๊ฒฐ์ • โ€” ๋น„๋™๊ธฐ ํ›„์ฒ˜๋ฆฌ:** - ๊ธฐ์กด `_maybeEmitDevilRebuttal` (Devil Agent) ํŒจํ„ด ๊ทธ๋Œ€๋กœ โ€” main turn ์ข…๋ฃŒ ํ›„ ๋น„๋™๊ธฐ, ์‹คํŒจํ•ด๋„ ๋‹ต๋ณ€ ๋ณด์กด - ๋‹ต๋ณ€์ด webview ์— ๋ Œ๋”๋œ ์งํ›„ self-check footer streamChunk ๋กœ append - ์‚ฌ์šฉ์ž๋Š” ๋‹ต๋ณ€ ์ฆ‰์‹œ ๋ณด๊ณ , 1~6์ดˆ ํ›„ self-check ๊ฒฐ๊ณผ ํ•œ ์ค„์ด ์•„๋ž˜์— ์ถ”๊ฐ€๋จ **ํ‰๊ฐ€ 3์ฐจ์› (LLM ์ถœ๋ ฅ JSON):** 1. `answersQuestion` โ€” yes/partial/no โ€” ๋‹ต๋ณ€์ด ์งˆ๋ฌธ์— ์ง์ ‘ ๋‹ตํ•˜๋‚˜ 2. `grounded` โ€” yes/partial/no/unknown โ€” ๋‹ต๋ณ€์ด ์ œ๊ณต๋œ ์ถœ์ฒ˜์— ๊ทผ๊ฑฐํ•˜๋‚˜ 3. `contradiction` โ€” none/minor/major โ€” ๋‹ต๋ณ€์— ๋…ผ๋ฆฌ ๋ชจ์ˆœ ์žˆ๋‚˜ **Footer ํ˜•์‹:** ``` --- _๐Ÿ” **Self-check**: ๋‹ตํ•จ=โœ“ ยท ๊ทผ๊ฑฐ=โ—‹ ยท ๋ชจ์ˆœ=์—†์Œ โ€” ๋‹ต๋ณ€์€ ์ง์ ‘์ ์ด๋‚˜ ์ผ๋ถ€ ์ฃผ์žฅ์ด ๋ชจ๋ธ ์ผ๋ฐ˜ ์ง€์‹ ๊ธฐ๋ฐ˜ _(2.4s ยท gemma2:2b)__ ``` **์‹ ๊ทœ ๋ชจ๋“ˆ: [postHocSelfCheck.ts](src/agent/postHocSelfCheck.ts)** - `postHocSelfCheck(prompt, answer, sources, opts)` โ€” LLM ํ˜ธ์ถœ + JSON ํŒŒ์‹ฑ + ์•ˆ์ „ fallback - `formatSelfCheckFooter(result, model)` โ€” ๋งˆํฌ๋‹ค์šด footer ํ•œ ์ค„ **์•ˆ์ „๋ง:** - ์‘๋‹ต ํŒŒ์‹ฑ ์‹คํŒจ / ํƒ€์ž„์•„์›ƒ / ์˜ค๋ฅ˜ โ†’ ํ๋ฆฟํ•œ ํ•œ ์ค„ footer ("โŠ˜ failed: ...") - ๋‹ต๋ณ€ ์ž์ฒด๋Š” ์˜ํ–ฅ ์—†์Œ (Devil Agent ์™€ ๋™์ผ ํŒจํ„ด) - ์งง์€ timeout (๊ธฐ๋ณธ 6์ดˆ) - ๋ณ„๋„ ๋น ๋ฅธ ๋ชจ๋ธ ์ง€์ • ๊ฐ€๋Šฅ **Wiring:** - [memoryContext.ts](src/lib/contextBuilders/memoryContext.ts) โ€” ๊ฒ€์ƒ‰ ํ›„ `turnCtx.selfCheckSources` ์— ์ƒ์œ„ 5๊ฐœ chunk (title, excerpt) ์ €์žฅ - [agent.ts](src/agent.ts) โ€” Devil rebuttal ์˜†์— `_maybePostHocSelfCheck` ํ˜ธ์ถœ ์ถ”๊ฐ€, ๊ฒฐ๊ณผ๋ฅผ streamChunk ๋กœ append **์‹ ๊ทœ ์„ค์ • 3๊ฐœ:** - `g1nation.selfCheckEnabled` (boolean, **๊ธฐ๋ณธ false** โ€” opt-in) - `g1nation.selfCheckModel` (string, ๋น„๋ฉด defaultModel) - `g1nation.selfCheckTimeoutSec` (number 1~60, ๊ธฐ๋ณธ 6) --- **ASTRA ๊ฒ€์ฆ 5์ข… ์™„์ „์ฒด (engine ๋ณ€๊ฒฝ ๋ˆ„์ ):** | # | ๋ธ”๋ก | ์‹œ์  | ๋ชจ๋“œ | |---|---|---|---| | INTENT (v2.2.190) | `[INTENT CLARIFICATION GUIDANCE]` | ๋‹ต๋ณ€ ์‹œ์ž‘ ์ „ | instructional | | CONFLICT (v2.2.183) | `[CONFLICT WARNINGS]` | ๋‹ต๋ณ€ ์ž‘์„ฑ ์ค‘ | instructional | | COVE (v2.2.184) | `[VERIFICATION CHECKLIST]` | ๋‹ต๋ณ€ ์ž‘์„ฑ ์ค‘ | instructional | | CITATION (v2.2.190) | `[CITATION TRACE]` | ๋‹ต๋ณ€ ๋ | instructional | | **SELF-CHECK (v2.2.191)** | footer ํ•œ ์ค„ | **๋‹ต๋ณ€ ์™„๋ฃŒ ํ›„** | **separate LLM call** | **ํ™œ์šฉ ๊ถŒ์žฅ:** - ๊ธฐ๋ณธ ON 4๊ฐœ (INTENT/CONFLICT/COVE/CITATION) โ€” ์ฆ‰์‹œ ํ™œ์šฉ - `g1nation.selfCheckModel` ์— ๋น ๋ฅธ ๋ชจ๋ธ ์„ค์ • (์˜ˆ: gemma2:2b) - `g1nation.selfCheckEnabled = true` โ€” opt-in. footer ํ•œ ์ค„๋กœ ๋‹ต๋ณ€ ํ’ˆ์งˆ ์ฆ‰์‹œ ๊ฒ€์ฆ **์‹ ๊ทœ ํŒจํ‚ค์ง•:** `astra-2.2.191.vsix`. --- ## v2.2.190 (2026-05-29) ### ๐ŸŽฏ ์ถ”๋ก  ์‹ ๋ขฐ๋„ โ€” Intent Clarification + Citation Trace (์—”์ง„ ๋ณ€๊ฒฝ) ์‚ฌ์šฉ์ž ์ œ์•ˆ "Pre-inference Contextualization + Grounding" ์ค‘ ASTRA ์— *์ง„์งœ ๋นˆ* ๋‘ ์˜์—ญ. ASTRA ๊ฒ€์ƒ‰ ์—”์ง„ ์ž์ฒด ๋ณ€๊ฒฝ โ€” ๋งค ์ฑ„ํŒ… turn ์ž๋™ ์ ์šฉ, ์Šฌ๋ž˜์‹œ ๋ช…๋ น ์—†์Œ. **๊ฐ์‚ฌ ๊ฒฐ๊ณผ (๋ถ„๋ฆฌํ•œ ์ด์œ ):** - ์ œ์•ˆ #1 Intent Clarification โ†’ **๊ฐญ ๋ช…ํ™•**: ASTRA ๋Š” ํ•ญ์ƒ ๋‹ต์„ ์‹œ๋„, *๋ชจํ˜ธํ•˜๋ฉด ๋ฌป๊ธฐ* ๋ฉ”์ปค๋‹ˆ์ฆ˜ ์—†์Œ - ์ œ์•ˆ #2 Citation Trace โ†’ CoVe Strict (v2.2.184) ์™€ ๋ถ€๋ถ„ ์ค‘๋ณต, *๊ฐ€๋ฒผ์šด always-on ํ˜•์ œ* ๋กœ ์ถ”๊ฐ€ - ์ œ์•ˆ #3 Self-Correction Loop โ†’ CoVe ๊ฐ€ *instructional ํ˜•ํƒœ* ๋กœ ์ด๋ฏธ ๊ตฌํ˜„, *post-hoc 2-pass* ๋Š” v2.2.191 ์—์„œ ๋ณ„๋„ ๋นŒ๋“œ --- **#1 Intent Clarification โ€” ๋ชจํ˜ธ ์งˆ์˜ ์—ญ์งˆ๋ฌธ (๊ธฐ๋ณธ ON)** ์‹ ๊ทœ ๋ชจ๋“ˆ: [intentClarification.ts](src/retrieval/intentClarification.ts) - **5๊ฐœ ์˜๋„ ์ฐจ์› ํœด๋ฆฌ์Šคํ‹ฑ**: - `ํ™˜๊ฒฝ` โ€” ๋ฐฐํฌ/๋กค๋ฐฑ trigger + dev/prod ๋ช…์‹œ ๊ฒ€์‚ฌ - `๋Œ€์ƒ` โ€” ๊ณ ์ณ/์ˆ˜์ • trigger + ํŒŒ์ผ/๋ชจ๋“ˆ/`.ts` ๊ฒ€์‚ฌ - `๋ฒ”์œ„` โ€” ๋ฆฌํŒฉํ† ๋ง/์ •๋ฆฌ trigger + ์ „์ฒด/์ผ๋ถ€ ๊ฒ€์‚ฌ - `ํฌ๋งท` โ€” ์š”์•ฝ/๋ณด๊ณ ์„œ trigger + ํ‘œ/๋ฆฌ์ŠคํŠธ/markdown ๊ฒ€์‚ฌ - `๋งˆ๊ฐ` โ€” ๋นจ๋ฆฌ/๊ธ‰ํ•จ trigger + ์˜ค๋Š˜/๋‚ด์ผ ๊ฒ€์‚ฌ - **trigger ๋งŒ ์žˆ๊ณ  specifier ์—†์œผ๋ฉด missing** - **Strictness 3-level**: low (2๊ฐœ+ missing), medium (1๊ฐœ+ missing, ๊ธฐ๋ณธ), high (์งง์€ ์งˆ์˜ ์ถ”๊ฐ€ ๊ฒ€์‚ฌ) - **์‹œ์Šคํ…œ ํ”„๋กฌํ”„ํŠธ ๋ธ”๋ก `[INTENT CLARIFICATION GUIDANCE]`**: ๋ชจํ˜ธ ์ฐจ์› + ๊ถŒ์žฅ ์—ญ์งˆ๋ฌธ ์˜ˆ์‹œ + "์‚ฌ์šฉ์ž๊ฐ€ '์ถ”์ •ํ•ด๋„ OK' ํ–ˆ์œผ๋ฉด ๊ฐ€์ • ๋ช…์‹œ ํ›„ ์ง„ํ–‰" ๋“ฑ 4๊ฐœ ๊ทœ์น™ **ํšจ๊ณผ**: "๋ฐฐํฌํ•ด์ค˜" โ†’ ASTRA ๊ฐ€ ์ถ”์ธกํ•˜์ง€ ์•Š๊ณ  "dev ์ธ๊ฐ€์š” prod ์ธ๊ฐ€์š”?" ํ•œ ์ค„ ์งˆ๋ฌธ ๋จผ์ €. --- **#2 Citation Trace โ€” ๋‹ต๋ณ€ ๋ ์ถœ์ฒ˜ ํ•œ ์ค„ (๊ธฐ๋ณธ ON)** ์‹ ๊ทœ ๋ชจ๋“ˆ: [citationTrace.ts](src/retrieval/citationTrace.ts) - **CoVe Strict ์™€ ์ฐจ์ด**: CoVe Strict = ๋ชจ๋“  ์‚ฌ์‹ค ์ฃผ์žฅ ๋’ค inline `[S1]` (verbose). Citation Trace = ๋‹ต๋ณ€ ๋ ํ•œ ์ค„ ์ •๋ฆฌ (๊ฐ€๋ฒผ์›€). - **์‹œ์Šคํ…œ ํ”„๋กฌํ”„ํŠธ ๋ธ”๋ก `[CITATION TRACE]`**: "๋‹ต๋ณ€ ๋์— *์ถœ์ฒ˜:* ํ•œ ์ค„, ์‚ฌ์šฉํ•œ ์ถœ์ฒ˜๋งŒ ๋‚˜์—ด, ์ผ๋ฐ˜ ์ง€์‹์ด๋ฉด ๊ทธ ์‚ฌ์‹ค ๋ช…์‹œ" ๋“ฑ 5๊ฐœ ๊ทœ์น™ - **CoVe ์™€ ์‹œ๋„ˆ์ง€**: CoVe ๊ฐ€ `[S1]..[SN]` ๋ผ๋ฒจ ์ œ๊ณต, Citation ์ด ๋์— ์ •๋ฆฌ **ํšจ๊ณผ**: ๋‹ต๋ณ€ ๋์— ์ž๋™์œผ๋กœ `*์ถœ์ฒ˜:* file1.md ยท chunk-title2` ๊ฐ™์€ ํ•œ ์ค„ โ†’ ์‚ฌ์šฉ์ž ๊ฒ€์ฆ ๊ฐ€๋Šฅ, ํ• ๋ฃจ์‹œ๋„ค์ด์…˜ ์–ต์ œ. --- **Wiring (๋‘˜ ๋‹ค):** - [memoryContext.ts](src/lib/contextBuilders/memoryContext.ts) โ€” ๊ฒ€์ƒ‰ ์งํ›„ ๋‘ ๋ธ”๋ก ๊ณ„์‚ฐ โ†’ `turnCtx.intentClarification` / `turnCtx.citationTrace` - [agent.ts](src/agent.ts) โ€” turn reset ์‹œ ๋น„์›€, system prompt build ์‹œ ์ „๋‹ฌ - [buildAstraModeSystemPrompt.ts](src/agent/handlePrompt/buildAstraModeSystemPrompt.ts) โ€” `[CONTEXT]` ๋ฐ– ์ฃผ์ž…. Intent block ์€ ๋‹ค๋ฅธ verification ๋ธ”๋ก๋ณด๋‹ค *์•ž* (๋ชจํ˜ธํ•˜๋ฉด ๋‹ต๋ณ€ ์ž์ฒด๋ฅผ ์•ˆ ๋งŒ๋“ค์–ด์•ผ ํ•˜๋ฏ€๋กœ). Citation ์€ ๋. **์‹ ๊ทœ ์„ค์ • 3๊ฐœ:** - `g1nation.intentClarificationEnabled` (boolean, ๊ธฐ๋ณธ true) - `g1nation.intentClarificationStrictness` (low/medium/high, ๊ธฐ๋ณธ medium) - `g1nation.citationTraceEnabled` (boolean, ๊ธฐ๋ณธ true) **ASTRA ์ถ”๋ก  ์—”์ง„ ๊ฒ€์ฆ 3์ข… (#2/#3/#1 ์‹œ๋ฆฌ์ฆˆ์™€ ํ•จ๊ป˜):** | ๋ธ”๋ก | ์‹œ์  | ์šฉ๋„ | |---|---|---| | `[INTENT CLARIFICATION GUIDANCE]` | ๋‹ต๋ณ€ ์‹œ์ž‘ ์ „ | ๋ชจํ˜ธํ•˜๋ฉด ๋ฌป๊ธฐ | | `[CONFLICT WARNINGS]` (v2.2.183) | ๋‹ต๋ณ€ ์ž‘์„ฑ ์ค‘ | ์ถฉ๋Œ ์ถœ์ฒ˜ ์–‘์ธก ๋ช…์‹œ | | `[VERIFICATION CHECKLIST]` (v2.2.184) | ๋‹ต๋ณ€ ์ž‘์„ฑ ์ค‘ | ๊ทผ๊ฑฐ ๋งคํ•‘ + ์ž๊ธฐ ์ ๊ฒ€ | | `[CITATION TRACE]` | ๋‹ต๋ณ€ ๋ | ์‚ฌ์šฉ ์ถœ์ฒ˜ ํ•œ ์ค„ ์ •๋ฆฌ | **๋‹ค์Œ (v2.2.191):** - **#3 Post-hoc Self-Check** โ€” ๋‹ต๋ณ€ *์™„๋ฃŒ ํ›„* LLM ํ˜ธ์ถœ 1ํšŒ๋กœ ๊ฒ€์ฆ (semantic re-rank ์™€ ์œ ์‚ฌ ํŒจํ„ด, ๊ธฐ๋ณธ OFF / opt-in) **์‹ ๊ทœ ํŒจํ‚ค์ง•:** `astra-2.2.190.vsix`. --- ## v2.2.189 (2026-05-29) ### ๐Ÿ“… 4์ธ ํŒ€ ์šด์˜ 12๋‹จ๊ณ„ โ€” /weekly ์ฃผ๊ฐ„ ๋ฆฌ๋ทฐ ์นด๋“œ (๋Œ€ํ‘œ์šฉ) ์ผ ๋‹จ์œ„ ๋ฆฌ๋“ฌ์€ `/morning` ยท `/evening` ์œผ๋กœ ๋‹จ์กฐ. ์ฃผ ๋‹จ์œ„ ๋ฆฌ๋“ฌ์€ ๋น„์–ด ์žˆ์—ˆ์Œ (`/standup weekly` ๋Š” ํŒ€ ๊ณต์œ ์šฉ, ๋Œ€ํ‘œ ์ „๋žต ์‹œ์•ผ ์•„๋‹˜). ๊ทธ ๊ฐญ์„ ๋ฉ”์›€. **์‹ ๊ทœ `/weekly` ๋ช…๋ น** (์ธ์ž ์—†์Œ, ๋งค์ฃผ ์ผ์š”์ผ/์›”์š”์ผ 1ํšŒ ์‹คํ–‰ ๊ถŒ์žฅ) **`/standup weekly` ์™€ ์ฐจ์ด:** - `/standup weekly` โ†’ *ํŒ€์— ๊ณต์œ * (๋ฉค๋ฒ„๋ณ„ ์™„๋ฃŒ/์ง„ํ–‰/๋ธ”๋กœ์ปค, ์Šฌ๋ž™ ๋ณต๋ถ™) - `/weekly` โ†’ *๋Œ€ํ‘œ๊ฐ€ ๋ณธ๋‹ค* (cross-data delta, ํšŒ๊ณ  ํ”„๋กฌํ”„ํŠธ) **์„น์…˜ ๊ตฌ์„ฑ:** **1. โœ… ์ด๋ฒˆ ์ฃผ ์ง„์ฒ™** - **์ž‘์—…**: ๋ฉค๋ฒ„๋ณ„ ์นด์šดํŠธ + ์ง€๋‚œ ์ฃผ ๋Œ€๋น„ โ†‘โ†“โ†’ - **๐Ÿ“’ ๊ณ ๊ฐ**: ์‹ ๊ทœ/๊ฐฑ์‹ /์œ„ํ—˜/์ดํƒˆ ์ด๋ฒคํŠธ ์นด์šดํŠธ + ์‹ ๊ทœ MRR ํ•ฉ์‚ฐ - **๐ŸŽฏ ์ฑ„์šฉ**: ์‹ ๊ทœ ํ›„๋ณด/๋‹จ๊ณ„ ์ด๋™/ํ•ฉ๊ฒฉ ์ด๋ฒคํŠธ - **๐Ÿ’ฐ ์žฌ๋ฌด**: ์ฃผ๊ฐ„ ์ง€์ถœ/์ˆ˜์ž…/์ˆœ burn + ์ž”๊ณ  ์‹œ์ž‘โ†’๋ ฮ” - **๐Ÿ“‹ ๊ฒฐ์ •**: ์ด๋ฒˆ ์ฃผ Chronicle ADR (์ตœ๋Œ€ 5๊ฑด) **2. ๐Ÿ”„ ์ง€๋‚œ ์ฃผ ๋Œ€๋น„ (ISO week ๊ธฐ๋ฐ˜ ์›”~์ผ)** - ์ž‘์—… / ์‹ ๊ทœ ๊ณ ๊ฐ / ์ดํƒˆ / ์ˆœ burn / ์ฑ„์šฉ ์ด๋ฒคํŠธ โ€” ๊ฐ๊ฐ โ†‘โ†“โ†’ delta - ํ™”์‚ดํ‘œ + (์ด๋ฒˆ X โ† ์ง€๋‚œ Y) ํ˜•์‹ **3. ๐ŸŒ… ๋‹ค์Œ ์ฃผ ์ค€๋น„** - 14์ผ ๋‚ด ๊ฐฑ์‹  (D-7 ๐Ÿ”ด / D-14 ๐ŸŸก) - ๋‹ค์Œ ์ฃผ ๋งˆ๊ฐ ์ž‘์—… ์นด์šดํŠธ - ์ •์ฒด ํ›„๋ณด (7์ผ+ ๋ฏธ๋ณ€๋™) top 3 **4. ๐Ÿ’ญ ์ฃผ๊ฐ„ ํšŒ๊ณ  ํ•œ ์ค„** - 6๊ฐœ ํšŒ๊ณ  ์งˆ๋ฌธ ํ’€, ์ฃผ์ฐจ ๊ฒฐ์ •์  ์„ ํƒ (๊ฐ™์€ ์ฃผ = ๊ฐ™์€ ์งˆ๋ฌธ) - ์˜ˆ: "์ด๋ฒˆ ์ฃผ ๊ฐ€์žฅ ์ค‘์š”ํ•œ ๊ฒฐ์ •์€ ๋ฌด์—‡์ด์—ˆ๋‚˜? ๋‹ค์Œ ์ฃผ์— ์–ด๋–ค ๊ฒฐ์ •์„ ๋ฏธ๋ฃจ๋ฉด ์•ˆ ๋˜๋‚˜?" **ISO Week ๊ธฐ๋ฐ˜ ์œˆ๋„์šฐ:** - ์›”์š”์ผ 00:00 ~ ์ผ์š”์ผ 23:59:59 - "YYYY-Wnn (M/D-M/D)" ๋ผ๋ฒจ **4์ธ ํŒ€ ์šด์˜ ๋ˆ„์  (1~12 โ€” ์ผยท์ฃผ ๋ฆฌ๋“ฌ ์™„์„ฑ):** | ์‹œ๊ฐ„ | ๋ช…๋ น | |---|---| | ๐ŸŒ… ์•„์นจ (์ผ) | `/morning` | | ๐ŸŒž ๋‚ฎ | `/blocked`, `/task`, `/onesie @๋ฉค๋ฒ„` | | ๐ŸŒ™ ์ €๋… (์ผ) | `/evening` | | ๐Ÿ“Š ํŒ€ ๊ณต์œ  | `/standup` | | ๐Ÿ“… **์ฃผ๋ง (๋Œ€ํ‘œ์šฉ)** | **`/weekly`** โญ | | ๐Ÿ“ˆ ๋ถ„๊ธฐ | `/cohort` | | ๐Ÿ’ฐ ํŠธ๋ž˜์ปค | `/runway`, `/customers`, `/hire` | | ๐Ÿ“‹ ์˜์‚ฌ๊ฒฐ์ • | `/decisions`, `/draft`, `/feedback` | **์‹ ๊ทœ ํŒจํ‚ค์ง•:** `astra-2.2.189.vsix`. --- ## v2.2.188 (2026-05-29) ### ๐Ÿ“ˆ 4์ธ ํŒ€ ์šด์˜ 11๋‹จ๊ณ„ โ€” /cohort MoM ์ถ”์„ธ ๋ถ„์„ `/customers` + `/runway` ์˜ events ๊ฐ€ ๋ˆ„์ ๋˜๋‹ˆ *์ถ”์„ธ* ๊ฐ€ ๋ณด์ž„. ํ•œ ์‹œ์  ์Šค๋ƒ…์ƒท(`/morning` ๊ฐ™์€) ์ด ์•„๋‹Œ *6~12๊ฐœ์›” ํ๋ฆ„* ์œผ๋กœ ๋น„์ฆˆ๋‹ˆ์Šค ๋ฐฉํ–ฅ ๊ฒ€ํ† . ํšŒ๊ณ„ SaaS ์˜ board metric ์˜ ๋ฏธ๋‹ˆ ๋ฒ„์ „. **์‹ ๊ทœ `/cohort` ๋ช…๋ น:** - `/cohort` โ€” ์ตœ๊ทผ **6๊ฐœ์›”** ์ถ”์„ธ (๊ธฐ๋ณธ) - `/cohort yearly` โ€” ์ตœ๊ทผ 12๊ฐœ์›” - `/cohort ` โ€” ์ตœ๊ทผ N๊ฐœ์›” (1~24) **์„น์…˜ ๊ตฌ์„ฑ:** **1. ๊ณ ๊ฐ & MRR ์ถ”์ด (์›”๋ณ„ ํ…Œ์ด๋ธ”)** | ์›” | ์‹ ๊ทœ | ๊ฐฑ์‹  | ์ดํƒˆ | MRR ฮ” | - ๋ˆ„๊ณ„: ์‹ ๊ทœ +N ยท ์ดํƒˆ -M ยท ์ˆœ ยฑK - MRR ์ˆœ์ฆ (์ถ”๊ฐ€ ์‹ ๊ทœ MRR ๋งŒ, ์ดํƒˆ ์ฐจ๊ฐ์€ history ๋ถ€์žฌ๋กœ ๋ฏธ๋ฐ˜์˜) - ์›”ํ‰๊ท  ์‹ ๊ทœ/์ดํƒˆ + ์ดํƒˆ/์‹ ๊ทœ ๋น„์œจ (๋‹จ์ˆœ churn-rate ๊ทผ์‚ฌ) **2. ์žฌ๋ฌด ์ถ”์ด (์›”๋ณ„ ํ…Œ์ด๋ธ”)** | ์›” | ์ง€์ถœ | ์ˆ˜์ž… | ์ˆœ burn | ์›”๋ง ์ž”๊ณ  | - 6๊ฐœ์›” ๋ˆ„๊ณ„ - ์›”ํ‰๊ท  burn **3. ๐Ÿ’ก ์ธ์‚ฌ์ดํŠธ ํ•œ ์ค„ (์ž๋™ ๋„์ถœ)** - ๐ŸŸข ์ตœ๊ทผ 3๊ฐœ์›” ์‹ ๊ทœ ๊ฐ€์† (์ด์ „ 3๊ฐœ์›” ๋Œ€๋น„ +20%โ†‘) - ๐ŸŸก ์‹ ๊ทœ ๋‘”ํ™” (-20%โ†“) - ๐Ÿ”ด burn ๊ฐ€์† (+30%โ†‘) - ๐ŸŸข ๋งค์ถœ ์ปค๋ฒ„๋ฆฌ์ง€ 80%+ โ†’ ํ‘์ž ์ž„๋ฐ• - ๐ŸŸก ๋งค์ถœ ์ปค๋ฒ„๋ฆฌ์ง€ 20% ๋ฏธ๋งŒ โ†’ ๋งค์ถœ ๊ธฐ๋ฐ˜ ์•ฝํ•จ **๋ฐ์ดํ„ฐ ์ถœ์ฒ˜:** - `/.astra/customers.jsonl` (add/renew/churn timestamp ๊ทธ๋ฃนํ•‘) - `/.astra/runway.jsonl` (expense/revenue/snapshot ๊ทธ๋ฃนํ•‘) **ํ˜„ ์‹œ์  ํ•œ๊ณ„ (์˜๋„์  ๋‹จ์ˆœํ™”):** - Churn MRR ๊ฐ์†Œ = ์ง์ „ mrr ์ถ”์  ์•ˆ ํ•จ โ€” ๋ณด์ˆ˜์ ์œผ๋กœ 0 ๊ณ„์‚ฐ - Update event ์˜ mrr ์ฐจ์ด = 0 (state ์ถ”์  ์—†์Œ) - ํ–ฅํ›„ v2: customers store ์— monthly snapshot ์ถ”๊ฐ€ํ•˜๋ฉด ์ •ํ™•ํ•œ churn MRR ๊ณ„์‚ฐ ๊ฐ€๋Šฅ **4์ธ ํŒ€ ์šด์˜ ๋ˆ„์  (1~11๋‹จ๊ณ„):** `/decisions` ยท `/onesie` ยท `/draft` ยท `/feedback` ยท `/blocked` ยท `/standup` ยท `/runway` ยท `/customers` ยท `/hire` ยท `/morning` ยท `/evening` ยท **`/cohort`** โญ **์‹ ๊ทœ ํŒจํ‚ค์ง•:** `astra-2.2.188.vsix`. --- ## v2.2.187 (2026-05-29) ### ๐Ÿ” Retrieval ์˜๋„ ๋งค์นญ โ€” Hierarchical + LLM Semantic Re-rank (์—”์ง„ ๋ณ€๊ฒฝ) ์‚ฌ์šฉ์ž ์ œ์•ˆ "์ง€์‹ ๋ฐœ๊ตด ๋กœ์ง ๊ฐ•ํ™”" ์ค‘ *์ง„์งœ ์ƒˆ ๊ฐ€์น˜* 2๊ฐœ ์ ์šฉ. (์ œ์•ˆ์˜ Re-ranking ํ•ญ๋ชฉ๋“ค โ€” Recency / Actionability / Conflict Check โ€” ์€ ์ด๋ฏธ v2.2.183~185 ์—์„œ ์™„๋ฃŒ. ์ œ์•ˆ์ž๊ฐ€ ๋นŒ๋“œ ๋ชจ๋ฆ„.) **๋‘˜ ๋‹ค ASTRA ๊ฒ€์ƒ‰ ์—”์ง„ ์ž์ฒด ๋ณ€๊ฒฝ โ€” ์Šฌ๋ž˜์‹œ ๋ช…๋ น ์ถ”๊ฐ€ ์—†์Œ, ๋งค ์ฑ„ํŒ… turn ์ž๋™ ์ ์šฉ.** --- **#2 Hierarchical Context Window โ€” ์ถ”์ƒ๋„ ๋งค์นญ (๊ธฐ๋ณธ ON)** ์‹ ๊ทœ ๋ชจ๋“ˆ: `src/retrieval/hierarchicalLevel.ts` - **3-level ๋ถ„๋ฅ˜** (LLM ํ˜ธ์ถœ ์—†์Œ, ๊ฒฐ์ •์  ํœด๋ฆฌ์Šคํ‹ฑ): - `concrete` โ€” ์ฝ”๋“œ/๋กœ๊ทธ/๋””๋ฒ„๊ทธ/์‹คํ–‰ (folder hints: code, log, debug; title hints: fix, bug, error) - `operational` โ€” ์ž‘์—…/์ผ์ •/์šด์˜/ํšŒ์˜ (๊ธฐ๋ณธ๊ฐ’) - `strategic` โ€” ์ „๋žต/๋น„์ „/๋ฐฉํ–ฅ/์˜์‚ฌ๊ฒฐ์ • (folder hints: strategy, vision, decision; title hints: plan, direction) - **์งˆ์˜ ๋ถ„๋ฅ˜**: ํ‚ค์›Œ๋“œ ์šฐ์—ด โ€” `'์ „๋žต ๊ฒ€ํ† '` โ†’ strategic, `'๋ฒ„๊ทธ ๊ณ ์ณ'` โ†’ concrete - **์žฌ๊ฐ€์ค‘ ์ •์ฑ…**: - ๊ฐ™์€ ๋ ˆ๋ฒจ โ†’ ร— 1.15 (boost) - ์ธ์ ‘ ๋ ˆ๋ฒจ (concreteโ†”operational, operationalโ†”strategic) โ†’ ๋ณ€ํ™” ์—†์Œ - ์–‘ ๋ mismatch (concreteโ†”strategic) โ†’ ร— 0.70 (penalty) - **์‹œ์ **: `RetrievalOrchestrator.retrieve()` ์˜ normalize ์งํ›„, ํ† ํฐ ์˜ˆ์‚ฐ ์ง์ „ โ€” ์–ด๋–ค chunk ๊ฐ€ ์‚ด์•„๋‚จ๋Š”์ง€์— ์˜ํ–ฅ - **์œ„์น˜**: [hierarchicalLevel.ts](src/retrieval/hierarchicalLevel.ts) + retrieve() ํŒŒ์ดํ”„๋ผ์ธ stage โ‘ข-c --- **#4 LLM Semantic Re-rank โ€” ์˜๋„ ๋งค์นญ (๊ธฐ๋ณธ OFF, ๋ช…์‹œ์  opt-in)** ์‹ ๊ทœ ๋ชจ๋“ˆ: `src/retrieval/semanticRerank.ts` - **๋กœ์ง**: ํ† ํฐ ์˜ˆ์‚ฐ ํ†ต๊ณผํ•œ `selectedChunks` ์ƒ์œ„ K(๊ธฐ๋ณธ 15) ๋ฅผ LLM ํ•œ ๋ฒˆ ํ˜ธ์ถœ๋กœ ์˜๋„ ๋ถ€ํ•ฉ๋„ ์ˆœ ์žฌ์ •๋ ฌ - **ํ”„๋กฌํ”„ํŠธ**: `[C1]..[CK]` ๋ผ๋ฒจ + ๋ฐœ์ทŒ๋ฌธ โ†’ LLM ์ด JSON `{"ranking":[3,1,5,...]}` ํ•œ ์ค„ ์ถœ๋ ฅ - **ํŒŒ์‹ฑ ๋ณดํ˜ธ**: ์‘๋‹ต ๋ˆ„๋ฝ/์ค‘๋ณต/๋ฒˆํ˜ธ ์˜ค๋ฅ˜ ์‹œ ์›์ˆœ์„œ fallback. ํƒ€์ž„์•„์›ƒ ์‹œ๋„ ์›์ˆœ์„œ fallback. **์žฌ์ •๋ ฌ ์‹คํŒจํ•ด๋„ ๊ฒ€์ƒ‰ ์ž์ฒด๋Š” ์ ˆ๋Œ€ ์‹คํŒจ ์•ˆ ํ•จ.** - **์œ„ํ—˜ ๊ด€๋ฆฌ**: - ๊ธฐ๋ณธ OFF โ€” `g1nation.semanticRerankEnabled` ๋ช…์‹œ on ํ•„์š” - ์งง์€ timeout (๊ธฐ๋ณธ 8์ดˆ) โ€” ์ดˆ๊ณผ ์‹œ ์›์ˆœ์„œ - ๋ณ„๋„ ๋น ๋ฅธ ๋ชจ๋ธ ์ง€์ • ๊ฐ€๋Šฅ (`g1nation.semanticRerankModel`, ์˜ˆ: gemma2:2b) โ€” ๋ฉ”์ธ ๋ชจ๋ธ latency ๋ณดํ˜ธ - **์‹œ์ **: `memoryContext.ts` ์—์„œ retrieve() ๊ฒฐ๊ณผ์˜ selectedChunks ๋ฅผ ๋น„๋™๊ธฐ ์žฌ์ •๋ ฌ ํ›„ context string ๋นŒ๋“œ - **ํšจ๊ณผ**: LLM attention ์€ ์ปจํ…์ŠคํŠธ ์ƒ๋‹จ์— ๋” ๊ฐ•ํ•จ โ†’ ์˜๋„ ๋ถ€ํ•ฉ chunk ๊ฐ€ ์ƒ๋‹จ โ†’ ๋‹ต๋ณ€ ํ’ˆ์งˆโ†‘ --- **์‹ ๊ทœ ์„ค์ • 5๊ฐœ:** - `g1nation.hierarchicalReweightEnabled` (boolean, ๊ธฐ๋ณธ true) - `g1nation.semanticRerankEnabled` (boolean, **๊ธฐ๋ณธ false** โ€” opt-in) - `g1nation.semanticRerankModel` (string, ๋น„๋ฉด defaultModel) - `g1nation.semanticRerankCandidateK` (number 2~30, ๊ธฐ๋ณธ 15) - `g1nation.semanticRerankTimeoutSec` (number 1~60, ๊ธฐ๋ณธ 8) --- **๊ฐ์‚ฌ ๊ฒฐ๊ณผ โ€” ์Šคํ‚ตํ•œ ์ œ์•ˆ ํ•ญ๋ชฉ:** - #1 Graph-based Retrieval โ†’ ์Šคํ‚ต (๋งˆํฌ๋‹ค์šด wiki brain ์— NER+๊ทธ๋ž˜ํ”„ ์ธํ”„๋ผ ๋น„์šฉ ํผ, ๊ฐ€์น˜ ๋ถˆํ™•์‹ค) - #3 Re-ranking ํ•ญ๋ชฉ๋“ค โ†’ ์ด๋ฏธ v2.2.183~185 ์— ์™„๋ฃŒ: - Recency ๊ฐ€์ค‘ = scoring.ts recencyBoost - Actionability = actionabilityScoring.ts (v2.2.185) - Conflict Check = conflictBlock.ts + scoring.ts conflictMultiplier (v2.2.183) **์‹ ๊ทœ ํŒจํ‚ค์ง•:** `astra-2.2.187.vsix`. --- ## v2.2.186 (2026-05-29) ### ๐Ÿง  ๋ฉ”๋ชจ๋ฆฌ ๋ผ์ดํ”„์‚ฌ์ดํด โ€” Temporal Markers + Distillation Loop ์‚ฌ์šฉ์ž ์ œ์•ˆ "์ •๋ณด์˜ ๊ณ„์ธตํ™” + ์ƒ์„ฑ ์ฃผ๊ธฐ ๊ด€๋ฆฌ" ์ค‘ *์‹ค์ œ๋กœ ๋นˆ ๊ณณ* 2๊ฐœ์— ์ง‘์ค‘. ์ œ์•ˆ์˜ ์ ˆ๋ฐ˜์€ ์ด๋ฏธ 5-layer ๋กœ ๊ตฌํ˜„๋ผ ์žˆ์–ด *๊ทธ ์œ„์— ๋ผ์ดํ”„์‚ฌ์ดํด ๊ด€๋ฆฌ๋งŒ ์ถ”๊ฐ€*. **Part 1 โ€” Temporal Markers (๋งŒ๋ฃŒ์ผ)** - `LongTermEntry` + `EpisodicEntry` ์— `expiresAt?: number` (epoch ms) ์ถ”๊ฐ€. - ๊ฒ€์ƒ‰ยทcontext build ์‹œ `expiresAt < now` ์ธ entry **์ž๋™ ์ œ์™ธ** โ€” ๋งŒ๋ฃŒ plan/decisions ๊ฐ€ stale ๋‹ต๋ณ€์— ๋ผ์–ด๋“œ๋Š” ๊ฒƒ ๋ฐฉ์ง€. - `LongTermMemory.setExpiration(idOrPrefix, expiresAt)` API โ€” ์Šฌ๋ž˜์‹œ ๋ช…๋ น์—์„œ ํ˜ธ์ถœ. - ์˜ˆ: "Q3 2026 ๋งˆ์ผ€ํŒ… ๊ณ„ํš" entry ์— `expiresAt = 2026-09-30` ์„ค์ • โ†’ 10์›”๋ถ€ํ„ฐ ๊ฒ€์ƒ‰ ๊ฒฐ๊ณผ์—์„œ ์ž๋™ ์‚ฌ๋ผ์ง. **Part 2 โ€” Distillation Loop (stale โ†’ digest)** - ์‹ ๊ทœ ๋ชจ๋“ˆ: `src/memory/distillation.ts` - 30์ผ+ ์ง€๋‚œ episodes โ†’ LongTerm `'episode-digest'` ์นดํ…Œ๊ณ ๋ฆฌ๋กœ ์Šน๊ธ‰. ์›๋ณธ์€ `promoted=true` ๋งˆํ‚น๋˜์–ด ๊ฒ€์ƒ‰์—์„œ ์ œ์™ธ (์ค‘๋ณต ๋…ธ์ถœ ๋ฐฉ์ง€). - ์‹ ๊ทœ LongTermCategory: `'episode-digest'` ์ถ”๊ฐ€. - **LLM-less ์„ค๊ณ„ (v1)**: ๊ธฐ์กด EpisodicEntry ์˜ title/summary/keyDecisions/topics ๋ฅผ ๊ตฌ์กฐ์ ์œผ๋กœ ๊ฒฐํ•ฉ โ€” ๋น„์šฉ 0, ๊ฒฐ์ •์ , ์žฌํ˜„ ๊ฐ€๋Šฅ. - **์ž๋™ ํŠธ๋ฆฌ๊ฑฐ**: ์„ธ์…˜ ์ข…๋ฃŒ ์‹œ (๋งˆ์ง€๋ง‰ ์‹คํ–‰ ํ›„ N์ผ ๊ฒฝ๊ณผ ์‹œ๋งŒ, ๊ธฐ๋ณธ 7์ผ ๊ฐ„๊ฒฉ). - **์ˆ˜๋™ ํŠธ๋ฆฌ๊ฑฐ**: `/memory distill [age_days]` - **Archive ๋ชจ๋“œ 2์ข…**: - `'mark-promoted'` (๊ธฐ๋ณธ): ํ”Œ๋ž˜๊ทธ๋งŒ, ํŒŒ์ผ ๋ณด์กด - `'archive-file'`: ํŒŒ์ผ์„ `memory/episodes/archive/` ๋กœ ์ด๋™ **์‹ ๊ทœ ์Šฌ๋ž˜์‹œ ๋ช…๋ น `/memory`** - `/memory` โ€” ํ˜„์žฌ ์ƒํƒœ (LongTerm/Episodic ์นด์šดํŠธ, ์นดํ…Œ๊ณ ๋ฆฌ ๋ถ„ํฌ, distillation ๋งˆ์ง€๋ง‰ ์‹คํ–‰, 30์ผ ๋‚ด ๋งŒ๋ฃŒ ์ž„๋ฐ•) - `/memory distill [age_days]` โ€” ์ˆ˜๋™ distillation (๊ธฐ๋ณธ 30์ผ ์ž„๊ณ„) - `/memory expire ` โ€” LongTerm entry ์— ๋งŒ๋ฃŒ์ผ ์„ค์ • - `/memory list-expiring [days]` โ€” N์ผ ๋‚ด ๋งŒ๋ฃŒ entry ๋ชฉ๋ก (๊ธฐ๋ณธ 30) - `/memory list-promoted` โ€” ์Šน๊ธ‰๋œ episodes (digest ํ˜•ํƒœ๋กœ LongTerm ์— ์‚ด์•„ ์žˆ์Œ) - `/memory help` โ€” ๋ช…๋ น์–ด ๊ฐ€์ด๋“œ **์‹ ๊ทœ ์„ค์ • 4๊ฐœ:** - `g1nation.distillationEnabled` (boolean, ๊ธฐ๋ณธ true) - `g1nation.distillationAgeThresholdDays` (number 1~365, ๊ธฐ๋ณธ 30) - `g1nation.distillationIntervalDays` (number 1~90, ๊ธฐ๋ณธ 7) - `g1nation.distillationArchiveMode` (mark-promoted/archive-file, ๊ธฐ๋ณธ mark-promoted) **๊ฐ์‚ฌ ๊ฒฐ๊ณผ (์Šคํ‚ตํ•œ ์ œ์•ˆ ํ•ญ๋ชฉ):** - L1 Working Memory โ†’ ์ด๋ฏธ `ShortTermMemory.ts` ๋กœ ์™„๋ฃŒ - L2 Episodic โ†’ ์ด๋ฏธ `EpisodicMemory.ts` ๋กœ ์™„๋ฃŒ - L3 unification (3 silo โ†’ 1 ํ†ตํ•ฉ) โ†’ ์Šคํ‚ต (refactor ๋น„์šฉ > ๊ฐ€์น˜, ์ž‘๋™ ์ค‘) - ์ž์œ  ํ•ด์‹œํƒœ๊ทธ ์‹œ์Šคํ…œ โ†’ ์Šคํ‚ต (๊ธฐ์กด ์นดํ…Œ๊ณ ๋ฆฌ enum ์œผ๋กœ 80% ์ปค๋ฒ„) - Conflict reconciliation ๋‹ซ๋Š” ๋ฃจํ”„ โ†’ ์ถ”ํ›„ (UI ์ž‘์—… + supersedeance ์ธํ”„๋ผ ํผ) **์‹ ๊ทœ ํŒจํ‚ค์ง•:** `astra-2.2.186.vsix`. --- ## v2.2.185 (2026-05-29) ### ๐ŸŽฏ ์ถ”๋ก  ํ’ˆ์งˆ #1 โ€” Actionability Scoring (๋งฅ๋ฝ ๊ฐ€์ค‘์น˜, ๋งˆ๋ฌด๋ฆฌ) ์‚ฌ์šฉ์ž ํ”ผ๋“œ๋ฐฑ: "*๋‹จ์ˆœํžˆ ํ‚ค์›Œ๋“œ๊ฐ€ ๊ฒน์น˜๋Š” ์ •๋ณด๊ฐ€ ์•„๋‹ˆ๋ผ, ํ˜„์žฌ ์ž‘์—…์˜ ์ƒํƒœ์™€ ์ง์ ‘์ ์œผ๋กœ ์—ฐ๊ฒฐ๋œ ์ง€์‹์— ๋” ๋†’์€ ๊ฐ€์ค‘์น˜๋ฅผ ๋ถ€์—ฌ*". ์ถ”๋ก  ํ’ˆ์งˆ 3๋‹จ ์‹œ๋ฆฌ์ฆˆ์˜ ๋งˆ์ง€๋ง‰. #2 (Conflict Surface) + #3 (CoVe) ์™„์„ฑ ์œ„์— *๊ฒ€์ƒ‰ ์ž์ฒด* ๋ฅผ ์žฌ๊ฐ€์ค‘ํ•˜๋Š” ๊ฐ€์žฅ ๊นŠ์€ ๋ณ€๊ฒฝ. **v1 ์‹ ํ˜ธ (์‚ฌ์šฉ์ž ์„ ํƒ):** 1. **์ตœ๊ทผ ์Šฌ๋ž˜์‹œ ๋ช…๋ น** โ€” `slashRouter` ์— in-memory ring buffer ์ถ”๊ฐ€. ์ตœ๊ทผ 10๊ฐœ (์ค‘๋ณต ์ œ๊ฑฐ, ์ตœ์‹  ์šฐ์„ ). ๋ช…๋ น ์ด๋ฆ„ (`/runway` โ†’ `runway`) ์ด chunk ๋‚ด์šฉ์— ๋‹จ์–ด ๊ฒฝ๊ณ„ ๋งค์น˜ ์‹œ boost. 2. **์—ด๋ฆฐ ํŒŒ์ผ ๊ฒฝ๋กœ** โ€” VS Code ํ™œ์„ฑ ์—๋””ํ„ฐ์—์„œ ์บก์ฒ˜. - **Exact filePath ๋งค์น˜**: ๊ฐ€์žฅ ๊ฐ•ํ•œ boost (ร— 1.5) - **ํŒŒ์ผ๋ช… ๋งค์น˜**: `weights.openFileNameMatch` (๊ธฐ๋ณธ 0.40) - **๋ถ€๋ชจ ๋””๋ ‰ํ„ฐ๋ฆฌ ๋งค์น˜**: `weights.openFileParentDirMatch` (๊ธฐ๋ณธ 0.20, 'src'/'lib' ์ œ์™ธ) - **ํ™•์žฅ์ž ์˜๋ฏธ ๋งค์น˜**: `weights.openFileExtMatch` (๊ธฐ๋ณธ 0.10, e.g. `.ts` โ†’ 'typescript' ๋‹จ์–ด) **์ ์ˆ˜ ๊ฒฐํ•ฉ (๋ณด์ˆ˜์ ):** - `finalScore = baseScore ร— (1 + actionabilityScore ร— combinedWeight)` - `combinedWeight` ๊ธฐ๋ณธ 0.30 โ†’ actionability=1.0 ์ธ chunk ๋Š” 30% boost - TF-IDF ๊ฐ€ ์—ฌ์ „ํžˆ dominant โ€” actionability ๋Š” *๋™์  ๊นจ๊ธฐ* ์—ญํ•  **์‹ ๊ทœ ๋ชจ๋“ˆ: `src/retrieval/actionabilityScoring.ts`** - `captureWorkStateSignals(recentCmds)` โ€” ์‹ ํ˜ธ ์ˆ˜์ง‘ - `computeActionabilityScore(chunk, signals, weights)` โ€” 0~1.0 - `applyActionabilityBoost(chunks, signals, weights)` โ€” ๋ฐฐ์—ด in-place ์žฌ๊ฐ€์ค‘ **Wiring:** - `slashRouter.ts` โ€” ๋ช…๋ น ์‹คํ–‰ ์ง์ „์— `pushRecentSlashCommand(head)` ํ˜ธ์ถœ, ring buffer ๊ฐฑ์‹  - `getRecentSlashCommands()` export โ€” memoryContext ๊ฐ€ ์ฝ์Œ - `RetrievalOrchestrator.retrieve()` โ€” `normalizeScores` ์งํ›„, `selectWithinBudget` ์ง์ „์— actionability ์ ์šฉ (์–ด๋–ค chunk ๊ฐ€ token ์˜ˆ์‚ฐ์„ ์‚ด์•„๋‚จ๋Š”์ง€์— ์˜ํ–ฅ) - `RetrievalOptions.workStateSignals` ์‹ ๊ทœ ํ•„๋“œ โ€” undefined ๋ฉด legacy - `fusionLog` ์— boosted ๊ฐœ์ˆ˜ + ์‹œ๊ทธ๋„ ์š”์•ฝ ๊ธฐ๋ก (๋””๋ฒ„๊ทธ footer ๋…ธ์ถœ ๊ฐ€๋Šฅ) **์‹ ๊ทœ ์„ค์ • 1๊ฐœ:** - `g1nation.actionabilityEnabled` (boolean, ๊ธฐ๋ณธ true) โ€” ๋งˆ์Šคํ„ฐ ์Šค์œ„์น˜ **์ถ”๋ก  ํ’ˆ์งˆ 3๋‹จ ์‹œ๋ฆฌ์ฆˆ ์™„์„ฑ:** | # | ๋กœ์ง | ํšจ๊ณผ | ์œ„์น˜ | |---|---|---|---| | **#2** | Conflict Surface | ์ถฉ๋Œ ์ถœ์ฒ˜ ๋ฐ์ดํ„ฐ LLM ์— ๋…ธ์ถœ | `conflictBlock.ts` | | **#3** | CoVe | ๋‹ต๋ณ€ ์ง์ „ ์ž๊ธฐ ๊ฒ€์ฆ ์ฒดํฌ๋ฆฌ์ŠคํŠธ | `coveBlock.ts` | | **#1** | Actionability | ์ž‘์—… ์ƒํƒœ ์‹ ํ˜ธ๋กœ ๊ฒ€์ƒ‰ ์žฌ๊ฐ€์ค‘ | `actionabilityScoring.ts` | **์‹œ๋„ˆ์ง€:** Actionability ๊ฐ€ *์–ด๋–ค ์ถœ์ฒ˜๊ฐ€ ๋‹ต๋ณ€์— ํฌํ•จ๋˜๋‚˜* ๋ฅผ ๊ฐœ์„  โ†’ CoVe ๊ฐ€ *๊ทธ ์ถœ์ฒ˜๋กœ ์–ด๋–ป๊ฒŒ ๊ทธ๋ผ์šด๋”ฉํ•˜๋‚˜* ๋ฅผ ์ง€์‹œ โ†’ Conflict Surface ๊ฐ€ *์ถฉ๋Œ ์ถœ์ฒ˜๋ฅผ ์–ด๋–ป๊ฒŒ ์ฒ˜๋ฆฌํ•˜๋‚˜* ๋ฅผ ๋ช…์‹œ. ๊ฒ€์ƒ‰ โ†’ ์ถ”๋ก  โ†’ ์‘๋‹ต 3๋‹จ๊ณ„ ๋ชจ๋‘ verification ์ ์šฉ. **ํ–ฅํ›„ #1 v2 ํ›„๋ณด (์‚ฌ์šฉ์ž ๋ฏธ์„ ํƒ, ์ถ”ํ›„ ์˜ต์…˜):** - ์ตœ๊ทผ 7์ผ Chronicle ADR / decisions ๋งค์น˜ boost - ์ตœ๊ทผ 24์‹œ๊ฐ„ customers/hire/runway ์ด๋ฒคํŠธ ๋งค์น˜ boost **์‹ ๊ทœ ํŒจํ‚ค์ง•:** `astra-2.2.185.vsix`. --- ## v2.2.184 (2026-05-29) ### ๐Ÿงญ ์ถ”๋ก  ํ’ˆ์งˆ #3 โ€” Chain-of-Verification (CoVe) ์‚ฌ์šฉ์ž ํ”ผ๋“œ๋ฐฑ: "*์ถ”๋ก  ๊ฒฐ๊ณผ๊ฐ€ ๋‚˜์˜ค๊ธฐ ์ง์ „, ์ด ๊ฒฐ๋ก ์ด ํ™•๋ณด๋œ ์ง€์‹(์ œ2๋‡Œ)์—๋งŒ ๊ทผ๊ฑฐํ•˜๊ณ  ์žˆ๋Š”๊ฐ€? ๋ฅผ ์Šค์Šค๋กœ ์งˆ๋ฌธํ•˜๊ณ  ๊ฒ€์ฆํ•˜๋Š” ๋กœ์ง*" โ€” ํ• ๋ฃจ์‹œ๋„ค์ด์…˜ ๋ฐฉ์ง€ + ๊ทธ๋ผ์šด๋”ฉ ๋ช…ํ™•ํ™”. **์„ค๊ณ„ ๊ฒฐ์ • โ€” Instructional CoVe (v1):** ์›๋…ผ๋ฌธ CoVe ๋Š” 2-pass (draft โ†’ verify โ†’ revise). ๊ทธ๋Ÿฌ๋‚˜ ASTRA local-first ๋ผ ์ถ”๊ฐ€ LLM ํ˜ธ์ถœ ๋น„์šฉ ํผ + ๊ฐ™์€ ๋ชจ๋ธ self-verify ํšจ๊ณผ ์ œํ•œ์ . โ†’ v1 ์€ *instructional* โ€” ์‹œ์Šคํ…œ ํ”„๋กฌํ”„ํŠธ์— ๋ช…์‹œ์  ๊ฒ€์ฆ ์ฒดํฌ๋ฆฌ์ŠคํŠธ ์ฃผ์ž…ํ•ด ๋ชจ๋ธ์ด ํ•œ ํŒจ์Šค ์•ˆ์—์„œ "๋‹ต๋ณ€ ์ž‘์„ฑ ์ „" ๊ทธ๋ผ์šด๋”ฉ ์ ๊ฒ€์„ *๋‚ด์žฌํ™”* ํ•˜๋„๋ก. ํ–ฅํ›„ strict ๋ชจ๋“œ ํ™•์žฅ ๊ฐ€๋Šฅ (knob ์ค€๋น„). **์‹ ๊ทœ ๋ชจ๋“ˆ: `src/retrieval/coveBlock.ts`** - `buildCoveChecklistBlock(chunks, userPrompt, options)` โ€” [VERIFICATION CHECKLIST] ์‹œ์Šคํ…œ ํ”„๋กฌํ”„ํŠธ ๋ธ”๋ก ์ƒ์„ฑ. - **์ฒดํฌ๋ฆฌ์ŠคํŠธ ๊ตฌ์กฐ:** 1. **๊ทผ๊ฑฐ ๋งคํ•‘ (Grounding Inventory)** โ€” ์ƒ์œ„ N ์ถœ์ฒ˜๋ฅผ [S1]..[SN] ์œผ๋กœ ๋ผ๋ฒจ, ๊ฐ ์ถœ์ฒ˜์˜ score + conflictSeverity + ๋ฐœ์ทŒ๋ฌธ. 2. **๋‹ต๋ณ€ ์ง์ „ ์ž๊ธฐ ์งˆ๋ฌธ (Pre-Output Self-Check)** โ€” 4๊ฐœ ์งˆ๋ฌธ (๊ทธ๋ผ์šด๋”ฉ, ๋‹จ์ • ํ†ค ์ ์ •์„ฑ, ๊ตฌ์ฒด์  ์•ก์…˜ ์ œ์‹œ, [CONFLICT WARNINGS] ์™€ ํ†ตํ•ฉ). 3. **STRICT ๋ชจ๋“œ (์˜ต์…˜)** โ€” ๋ชจ๋“  ์‚ฌ์‹ค ์ฃผ์žฅ ๋’ค `[S1]` ํ˜•์‹ inline ์ธ์šฉ ๊ฐ•์ œ (๊ธฐ๋ณธ off). **Wiring:** - `memoryContext.ts` โ€” ๊ฒ€์ƒ‰ ์งํ›„ CoVe ๋ธ”๋ก ๊ณ„์‚ฐ โ†’ `turnCtx.coveChecklist` ์ €์žฅ - `agent.ts` โ€” turn reset ์‹œ ๋น„์›€, system prompt build ์‹œ ์ „๋‹ฌ - `buildAstraModeSystemPrompt.ts` โ€” `[CONFLICT WARNINGS]` ๋‹ค์Œ, `[CONTEXT]` *๋ฐ–* ์— ์ฃผ์ž… (token-truncation ๋ณดํ˜ธ) - Casual conversation ๋ชจ๋“œ ๋น„ํ™œ์„ฑ **์‹ ๊ทœ ์„ค์ • 3๊ฐœ:** - `g1nation.coveEnabled` (boolean, ๊ธฐ๋ณธ true) - `g1nation.coveTopSourcesCount` (number 1~15, ๊ธฐ๋ณธ 5) - `g1nation.coveStrictMode` (boolean, ๊ธฐ๋ณธ false) โ€” inline citation ๊ฐ•์ œ **Conflict Surface ์™€์˜ ์‹œ๋„ˆ์ง€:** - ๋‘˜์ด ๋ณด์™„: Conflict = "์ถฉ๋Œ ๋ฐ์ดํ„ฐ ์ œ๊ณต", CoVe = "๊ทธ ๋ฐ์ดํ„ฐ ์–ด๋–ป๊ฒŒ verify ํ• ์ง€ ์ง€์‹œ" - ํ•จ๊ป˜ ์ผœ๋ฉด (๊ธฐ๋ณธ): ๋ชจ๋ธ์ด ์ถฉ๋Œ ์ถœ์ฒ˜๋ฅผ ์‹๋ณ„ โ†’ ์–‘์ธก ๋ช…์‹œ โ†’ ์ถœ์ฒ˜ ID ํ‘œ๊ธฐ โ†’ ์‚ฌ์šฉ์ž ํŒ๋‹จ์— ์œ„์ž„ (3-step ๊ทธ๋ผ์šด๋”ฉ) **๋‚จ์€ ์ž‘์—… (#1):** - **Actionability Scoring** โ€” ํ˜„์žฌ ์ž‘์—… ์ƒํƒœ(active slash command / ์—ด๋ฆฐ ํŒŒ์ผ / ์ตœ๊ทผ ADR) ์‹ ํ˜ธ๋กœ ๊ฒ€์ƒ‰ ์žฌ๋žญํ‚น. ๊ฐ€์žฅ ํฐ ์‹ ๊ทœ ์„ค๊ณ„. **์‹ ๊ทœ ํŒจํ‚ค์ง•:** `astra-2.2.184.vsix`. --- ## v2.2.183 (2026-05-29) ### ๐Ÿ”€ ์ถ”๋ก  ํ’ˆ์งˆ #2 โ€” Conflict Surface (๋ชจ์ˆœ ๊ฒ€์ฆ ๋กœ์ง 1๋‹จ๊ณ„) ASTRA ์˜ `scoring.ts` ๊ฐ€ ๊ฒ€์ƒ‰๋œ ๋ฌธ์„œ๋ณ„๋กœ `conflictSeverity` (NONE/LOW/MEDIUM/HIGH) ๋ฅผ *์ด๋ฏธ ๊ณ„์‚ฐ*ํ•˜๊ณ  ์žˆ์—ˆ์Œ โ€” ๊ทธ๋Ÿฐ๋ฐ LLM ์—๊ฒŒ *์–ด๋А ์ถœ์ฒ˜๊ฐ€ ์ถฉ๋Œ์ธ์ง€* ์ „๋‹ฌํ•˜์ง€ ์•Š์•„ v4 ์ •์ฑ…์˜ "[CONFLICT WARNING] ํ”Œ๋ž˜๊ทธ" ๊ฐ€ ๋ฌด์šฉํ•œ ์ƒํƒœ. ์ด๋ฒˆ ๋นŒ๋“œ๊ฐ€ ๊ทธ ๊ฐญ์„ ๋ฉ”์›€. **์‹ ๊ทœ ๋ชจ๋“ˆ: `src/retrieval/conflictBlock.ts`** - `buildConflictWarningsBlock(chunks, options)` โ€” [CONFLICT WARNINGS] ์‹œ์Šคํ…œ ํ”„๋กฌํ”„ํŠธ ๋ธ”๋ก ์ƒ์„ฑ. - ๋‘ ์ข…๋ฅ˜ ์ถฉ๋Œ ๋ชจ๋‘ surface: 1. **์ž๊ธฐ-์‹ ํ˜ธ (self-flag)** โ€” ์ถœ์ฒ˜ ๋‚ด๋ถ€์—์„œ ์ถฉ๋Œ ํ‚ค์›Œ๋“œ(๋ฐ˜๋Œ€/๋…ผ๋ž€/vs ๋“ฑ) ๊ฐ์ง€๋œ ๊ฒฝ์šฐ 2. **๊ต์ฐจ-๋ฌธ์„œ ๋ฐœ์‚ฐ (cross-divergence)** โ€” ๊ฐ™์€ ์ฃผ์ œ โ‰ฅ2 chunks ์˜ ๋ณธ๋ฌธ Jaccard < 0.30 ์ธ ์ž ์žฌ ๋ชจ์ˆœ ์Œ **Wiring:** - `memoryContext.ts` โ€” `result.selectedChunks` ๊ฐ€ retrieval ์™„๋ฃŒ ์งํ›„ conflict ๋ธ”๋ก ๊ณ„์‚ฐ โ†’ `turnCtx.conflictWarnings` ์— ์ €์žฅ - `agent.ts` โ€” turn ์‹œ์ž‘ ์‹œ reset, system prompt build ์‹œ ์ธ์ž๋กœ ์ „๋‹ฌ - `buildAstraModeSystemPrompt.ts` โ€” `[CONTEXT]` *๋ฐ–* ์— ์ฃผ์ž… (token-truncation ๋ณดํ˜ธ) - Casual conversation ๋ชจ๋“œ๋Š” RAG ์ปจํ…์ŠคํŠธ ์ž์ฒด๋ฅผ ์•ˆ ์“ฐ๋ฏ€๋กœ ์ถฉ๋Œ ๊ฒฝ๊ณ ๋„ ์ƒ๋žต **ํ”„๋กฌํ”„ํŠธ ์ง€์นจ (LLM ์— ๋ช…์‹œ):** 1. ๋‹ต๋ณ€์— ์œ„ ์ถœ์ฒ˜ ์ค‘ ํ•˜๋‚˜๋ผ๋„ ์‚ฌ์šฉํ•œ๋‹ค๋ฉด, ์ถฉ๋Œ ๊ฐ€๋Šฅ์„ฑ์„ ๋ช…์‹œ 2. ์–ด๋А ์ชฝ์ด ์˜ณ๋‹ค๊ณ  ๋‹จ์ •ํ•˜์ง€ ๋ง๊ณ , ์‚ฌ์šฉ์ž๊ฐ€ ํŒ๋‹จํ•  ์ˆ˜ ์žˆ๋„๋ก ๊ทผ๊ฑฐ ๋ถ„๋ฆฌ ์ œ์‹œ 3. ์ถฉ๋Œ์ด ๋‹ต๋ณ€๊ณผ ๋ฌด๊ด€ํ•˜๋ฉด ๋ฌด์‹œ ๊ฐ€๋Šฅ โ€” ๋‹ค๋งŒ ๋ฌด๊ด€ ํŒ๋‹จ ์ž์ฒด๋„ ํ•œ ์ค„๋กœ ๊ธฐ๋ก **์‹ ๊ทœ ์„ค์ • 3๊ฐœ:** - `g1nation.conflictHighlightingEnabled` (boolean, ๊ธฐ๋ณธ true) โ€” ๋งˆ์Šคํ„ฐ ์Šค์œ„์น˜ - `g1nation.conflictSeverityThreshold` (low/medium/high, ๊ธฐ๋ณธ medium) โ€” ์ž๊ธฐ-์‹ ํ˜ธ ์ตœ์†Œ severity - `g1nation.conflictCrossDocEnabled` (boolean, ๊ธฐ๋ณธ true) โ€” ๊ต์ฐจ-๋ฌธ์„œ ๋ฐœ์‚ฐ ๊ฐ์ง€ ํ™œ์„ฑ **๋‹ค์Œ (#3, #1 ์˜ˆ์ •):** - **#3 CoVe (Chain-of-Verification)** โ€” ๊ฒฐ๋ก  ์ง์ „ ์ž๊ธฐ ๊ฒ€์ฆ ๋ฃจํ”„ (ํ• ๋ฃจ์‹œ๋„ค์ด์…˜ ๋ฐฉ์ง€) - **#1 Actionability Scoring** โ€” ๊ฒ€์ƒ‰ ๊ฒฐ๊ณผ ์žฌ๋žญํ‚น ์‹œ ํ˜„์žฌ ์ž‘์—… ์ƒํƒœ ๊ฐ€์ค‘์น˜ ๋ฐ˜์˜ (๊ฐ€์žฅ ํฐ ์‹ ๊ทœ ์„ค๊ณ„) **์‹ ๊ทœ ํŒจํ‚ค์ง•:** `astra-2.2.183.vsix`. --- ## v2.2.182 (2026-05-29) ### ๐ŸŒ™ 4์ธ ํŒ€ ์šด์˜ 10๋‹จ๊ณ„ โ€” /evening ํ•˜๋ฃจ ๋งˆ๋ฌด๋ฆฌ ์นด๋“œ `/morning` ์˜ ์ง. ํ•˜๋ฃจ ์‹œ์ž‘๊ณผ ๋์„ ํ•œ ๋ช…๋ น์”ฉ์œผ๋กœ ๋‹จ์กฐ. *์˜ค๋Š˜ ๋ฌด์—‡์ด ์ง„์ฒ™๋๋Š”์ง€* ๋ณด๊ณ  โ†’ *๋‚ด์ผ ๋ฌด์—‡์„ ์ค€๋น„ํ• ์ง€* ํ™•์ธ โ†’ *์งง์€ ํšŒ๊ณ  ํ•œ ์ค„* ๋กœ ๋งˆ๋ฌด๋ฆฌ. **์‹ ๊ทœ `/evening` ๋ช…๋ น:** - ๋‹จ์ผ ํ˜•ํƒœ โ€” ์ธ์ž ์—†์Œ. ๋งค์ผ ์ €๋… ํ•œ ๋ฒˆ ์‹คํ–‰. **์„น์…˜ ๊ตฌ์„ฑ:** **1. โœ… ์˜ค๋Š˜์˜ ์ง„์ฒ™** - **์ž‘์—… ์™„๋ฃŒ** โ€” ์˜ค๋Š˜ 00:00 ์ดํ›„ completed ๋œ Google Tasks, ๋ฉค๋ฒ„๋ณ„ ๊ทธ๋ฃน. - **๐Ÿ“’ ๊ณ ๊ฐ ์ด๋ฒคํŠธ** โ€” `.astra/customers.jsonl` ์˜ค๋Š˜ append (add/renew/risk/churn/note). - **๐ŸŽฏ ์ฑ„์šฉ ์ด๋ฒคํŠธ** โ€” `.astra/hire.jsonl` ์˜ค๋Š˜ append (stage ์ด๋™, offer, hire ๋“ฑ). - **๐Ÿ’ฐ ์žฌ๋ฌด ๊ธฐ๋ก** โ€” `.astra/runway.jsonl` ์˜ค๋Š˜ append (์ž”๊ณ /์ง€์ถœ/์ˆ˜์ž…). **2. ๐ŸŒ… ๋‚ด์ผ ์ค€๋น„** - ๋‚ด์ผ ๋งˆ๊ฐ ์ž‘์—… (๋ฉค๋ฒ„๋ณ„). - 7์ผ ๋‚ด ๊ฐฑ์‹  โ€” D-3 ๐Ÿ”ด / D-7 ๐ŸŸก. - ์ •์ฒด ํ›„๋ณด (7์ผ+ ๋ฏธ๋ณ€๋™) top 3. **3. ๐Ÿงญ ํšŒ๊ณ  ํ•œ ์ค„** - 8๊ฐœ ํšŒ๊ณ  ์งˆ๋ฌธ ์ค‘ *๋‚ ์งœ ๊ธฐ๋ฐ˜ ๊ฒฐ์ •์  ์„ ํƒ* โ€” ๊ฐ™์€ ๋‚  ์žฌ์‹คํ–‰ํ•ด๋„ ๋™์ผ ์งˆ๋ฌธ. - ์˜ˆ: "์˜ค๋Š˜ ๊ฐ€์žฅ ์ค‘์š”ํ•œ ํ•œ ๊ฐ€์ง€๋Š” ๋ฌด์—‡์ด์—ˆ๋‚˜? ์˜๋„ํ•œ ๋Œ€๋กœ ๋๋‚˜?" - ๋‹ต์„ ์–ด๋”” ์ ์œผ๋ฉด ์ข‹์€์ง€ ์•ˆ๋‚ด (`/decisions` ยท `/feedback` ยท `/customers note` ยท `/hire note`). **Tasks OAuth ์‹คํŒจ ์‹œ:** - "๊ธฐ๋ก๋œ ์ง„์ฒ™ ์—†์Œ" + Tasks ์—๋Ÿฌ ๋ฉ”์‹œ์ง€ ๋ณ„๋„ ํ‘œ์‹œ โ€” ๋‹ค๋ฅธ ์„น์…˜์€ ์ •์ƒ ํ‘œ์‹œ. **4์ธ ํŒ€ ์šด์˜ ๋ˆ„์  (1~10๋‹จ๊ณ„ โ€” ์ผ๊ณผ ์‚ฌ์ดํด ์™„์„ฑ):** `/decisions` ยท `/onesie` ยท `/draft` ยท `/feedback` ยท `/blocked` ยท `/standup` ยท `/runway` ยท `/customers` ยท `/hire` ยท `/morning` ยท **`/evening`** โญ **์ผ๊ณผ ritual:** - ์•„์นจ: `/morning` (๊ธด๊ธ‰ + ์•ก์…˜ 5) - ๋‚ฎ: `/blocked` `/onesie @๋ฉค๋ฒ„` (ํ•„์š” ์‹œ) - ์ €๋…: `/evening` (์ง„์ฒ™ + ๋‚ด์ผ + ํšŒ๊ณ ) **์‹ ๊ทœ ํŒจํ‚ค์ง•:** `astra-2.2.182.vsix`. --- ## v2.2.181 (2026-05-29) ### โ˜€๏ธ 4์ธ ํŒ€ ์šด์˜ 9๋‹จ๊ณ„ โ€” /morning ๋งค์ผ ์•„์นจ ํ†ตํ•ฉ ๋Œ€์‹œ๋ณด๋“œ 1~8๋‹จ๊ณ„๋กœ ๋งŒ๋“  ๋ชจ๋“  ํŠธ๋ž˜์ปค(runway / customers / hire / tasks / decisions) ์˜ ํ•ต์‹ฌ์„ *ํ•œ ๋ช…๋ น*์œผ๋กœ. CEO ์˜ ์•„์นจ ritual โ€” 6๊ฐœ ๋ช…๋ น ์•ˆ ์น˜๊ณ  `/morning` ํ•˜๋‚˜. **์‹ ๊ทœ `/morning` ๋ช…๋ น:** - `/morning` โ€” ์ „์ฒด ๋Œ€์‹œ๋ณด๋“œ (๊ธด๊ธ‰ + ์žฌ๋ฌด + ๊ณ ๊ฐ + ํŒ€ + ์ฑ„์šฉ + ์˜ค๋Š˜์˜ ์•ก์…˜) - `/morning brief` โ€” ์งง์€ ๋ฒ„์ „ (๊ธด๊ธ‰ + ์•ก์…˜ 3๊ฐœ๋งŒ, 30์ดˆ ์Šค์บ”์šฉ) **์„น์…˜ ๊ตฌ์„ฑ:** 1. **๐Ÿšจ ๊ธด๊ธ‰** โ€” ๋Ÿฐ์›จ์ด < 6๊ฐœ์›”, ์œ„ํ—˜ ๊ณ ๊ฐ, 7์ผ ๋‚ด ๊ฐฑ์‹ , ์ง€์—ฐ ์ž‘์—…, ์ •์ฒด ํ›„๋ณด โ€” ์ž๋™ ์ง‘๊ณ„ 2. **๐Ÿ’ฐ ์žฌ๋ฌด** โ€” ํ˜„๊ธˆ / burn / ๋Ÿฐ์›จ์ด ์‹ ํ˜ธ๋“ฑ 3. **๐Ÿ“’ ๊ณ ๊ฐ** โ€” ์ด MRR + ํ™œ์„ฑ/์œ„ํ—˜/์ดํƒˆ + 7์ผ ๋‚ด ๊ฐฑ์‹  top 5 4. **๐Ÿ‘ฅ ํŒ€** โ€” ์ง€์—ฐ/์ด๋ฒˆ ์ฃผ ์ž‘์—… ์นด์šดํŠธ + ๋ฉค๋ฒ„๋ณ„ ์ง€์—ฐ top 4 5. **๐ŸŽฏ ์ฑ„์šฉ** โ€” ๋‹จ๊ณ„๋ณ„ ์ง„ํ–‰ ํ•œ ์ค„ ์š”์•ฝ + ์ •์ฒด ํ›„๋ณด top 3 6. **๐Ÿ“‹ ์˜ค๋Š˜์˜ ์•ก์…˜** โ€” ์œ„ ๋ฐ์ดํ„ฐ์—์„œ ์ž๋™ ๋„์ถœ top 5 (ํœด๋ฆฌ์Šคํ‹ฑ ์šฐ์„ ์ˆœ์œ„) **์•ก์…˜ ๋„์ถœ ํœด๋ฆฌ์Šคํ‹ฑ:** - ์šฐ์„ ์ˆœ์œ„: ๋Ÿฐ์›จ์ด ์œ„ํ—˜ > ์œ„ํ—˜ ๊ณ ๊ฐ(MRR ํฐ ์ˆœ) > ๊ฐฑ์‹  ์ž„๋ฐ• > ์ง€์—ฐ ์ž‘์—… > ์ •์ฒด ํ›„๋ณด > inbox ๋ˆ„์  - ๊ฐ ์•ก์…˜์€ *๋ช…์‹œ์  ๋‹ค์Œ ํ–‰๋™* ํฌํ•จ ("ํˆฌ์ž์ž ๋ฏธํŒ…", "๊ฐฑ์‹  ์˜์‚ฌ ํ™•์ธ", "์Šคํฌ๋ฆฌ๋‹ ์‹œ๊ฐ„ ํ™•๋ณด" ๋“ฑ) **๋ฐ์ดํ„ฐ ๋ถ€์กฑ ์‹œ ์šฐ์•„ํ•œ ์ฒ˜๋ฆฌ:** - ๊ฐ ์„น์…˜์ด ๋…๋ฆฝ์ ์œผ๋กœ "๋ฐ์ดํ„ฐ ์—†์Œ โ€” `/runway cash` ๋กœ ์‹œ์ž‘" ์•ˆ๋‚ด. - Tasks OAuth ์‹คํŒจํ•ด๋„ ๋‚˜๋จธ์ง€ ์„น์…˜ ๊ณ„์† ํ‘œ์‹œ. **4์ธ ํŒ€ ์šด์˜ ๋ˆ„์  (1~9๋‹จ๊ณ„):** `/decisions` ยท `/onesie` ยท `/draft` ยท `/feedback` ยท `/blocked` ยท `/standup` ยท `/runway` ยท `/customers` ยท `/hire` ยท **`/morning`** โญ **์‹ ๊ทœ ํŒจํ‚ค์ง•:** `astra-2.2.181.vsix`. --- ## v2.2.180 (2026-05-29) ### ๐Ÿ‘ฅ 4์ธ ํŒ€ ์šด์˜ 8๋‹จ๊ณ„ โ€” /hire ์ฑ„์šฉ ํŒŒ์ดํ”„๋ผ์ธ ํŠธ๋ž˜์ปค 4์ธ โ†’ 5์ธ ์ด์ƒ ํ™•์žฅ ์‹œ์ . ํ›„๋ณด์ž๊ฐ€ ๋…ธ์…˜ยท์Šคํ”„๋ ˆ๋“œ์‹œํŠธยท์ด๋ฉ”์ผ์— ํฉ์–ด์ง€์ง€ ์•Š๊ฒŒ ํ•œ ๋ช…๋ น์œผ๋กœ ๋ณธ๋‹ค. `/customers` ์™€ ๋™์ผํ•œ event-sourced ํŒจํ„ด. **์‹ ๊ทœ `/hire` ๋ช…๋ น (์„œ๋ธŒ๋ช…๋ น 11๊ฐœ):** - `/hire` โ€” ํŒŒ์ดํ”„๋ผ์ธ ๋Œ€์‹œ๋ณด๋“œ (์—ญํ• ๋ณ„/๋‹จ๊ณ„๋ณ„ ํ˜„ํ™ฉ, ์ •์ฒด ์•Œ๋ฆผ) - `/hire add <์ด๋ฆ„> <์—ญํ• >` โ€” inbox ๋‹จ๊ณ„ ์‹ ๊ทœ ํ›„๋ณด - `/hire stage <์ด๋ฆ„> <์ƒˆ ๋‹จ๊ณ„>` โ€” ๋‹จ๊ณ„ ์ด๋™ - `/hire note <์ด๋ฆ„> <ํ…์ŠคํŠธ>` โ€” ์ž์œ  ๋ฉ”๋ชจ - `/hire offer <์ด๋ฆ„> <์—ฐ๋ด‰> [์ž…์‚ฌ์ผ]` โ€” ์˜คํผ ๋ฐœ์†ก (๋‹จ๊ณ„=offer) - `/hire hire <์ด๋ฆ„> [์ž…์‚ฌ์ผ]` โ€” ์ž…์‚ฌ ํ™•์ • (๋‹จ๊ณ„=hired) - `/hire reject <์ด๋ฆ„> <์‚ฌ์œ >` โ€” ๊ฑฐ์ ˆ (ํšŒ์‚ฌ ์ธก) - `/hire decline <์ด๋ฆ„> <์‚ฌ์œ >` โ€” ํ›„๋ณด ์‚ฌ์–‘ - `/hire show <์ด๋ฆ„>` โ€” ์ƒ์„ธ + ์ด๋ ฅ (๋ถ€๋ถ„ ๋งค์น˜ OK) - `/hire list [active/closed/๋‹จ๊ณ„๋ช…/์—ญํ• ]` โ€” ํ•„ํ„ฐ ๋ชฉ๋ก - `/hire path` โ€” ํŒŒ์ผ ์œ„์น˜ **๊ธฐ๋ณธ ํŒŒ์ดํ”„๋ผ์ธ:** inbox โ†’ screened โ†’ interview โ†’ final โ†’ offer โ†’ accepted โ†’ hired (ํ„ฐ๋ฏธ๋„: rejected ยท declined) **๋Œ€์‹œ๋ณด๋“œ ํ•ต์‹ฌ:** - ์ง„ํ–‰ ์ค‘ / ํ•ฉ๊ฒฉ / ์ข…๋ฃŒ ์นด์šดํŠธ - **์—ญํ• ๋ณ„ ์ง„ํ–‰** (๋ฐฑ์—”๋“œ N๋ช… ยท ๋””์ž์ด๋„ˆ M๋ช…) โ€” ์ฑ„์šฉ ๊ท ํ˜• ์‹œ์•ผ - **๋‹จ๊ณ„๋ณ„ ํ›„๋ณด** + ๊ฐ์ž ์ •์ฒด ์ผ์ˆ˜ (`โฐ N์ผ ์ •์ฒด` โ€” 7์ผ ์ด์ƒ ๋ฏธ๋ณ€๋™ ์‹œ) - ์ตœ๊ทผ ํ•ฉ๊ฒฉ 5๋ช… (์ž…์‚ฌ์ผ ์ˆœ) **์ €์žฅ โ€” ๋กœ์ปฌ only:** - `/.astra/hire.jsonl` (append-only ์ด๋ฒคํŠธ) - ๋ฏผ๊ฐ ์ •๋ณด(์ด๋ฆ„, ์—ฐ๋ด‰, ๊ฑฐ์ ˆ ์‚ฌ์œ ) ์™ธ๋ถ€ ์•ˆ ๋ณด๋ƒ„. **4์ธ ํŒ€ ์šด์˜ ๋ˆ„์  (1~8๋‹จ๊ณ„):** `/decisions` ยท `/onesie` ยท `/draft` ยท `/feedback` ยท `/blocked` ยท `/standup` ยท `/runway` ยท `/customers` ยท **`/hire`** โญ **์‹ ๊ทœ ํŒจํ‚ค์ง•:** `astra-2.2.180.vsix`. --- ## v2.2.179 (2026-05-28) ### ๐Ÿ“’ 4์ธ ํŒ€ ์šด์˜ 7๋‹จ๊ณ„ โ€” /customers ๊ณ ๊ฐ์‚ฌ/MRR/๊ฐฑ์‹ /์œ„ํ—˜ ํŠธ๋ž˜์ปค `/runway` ๊ฐ€ *์ง€์ถœ ์ชฝ* ์‹œ์•ผ๋ผ๋ฉด `/customers` ๋Š” *์ˆ˜์ž… ์ชฝ*. Salesforce ์—†์ด๋„ 4์ธ ๊ธฐ์—…์ด ์•Œ์•„์•ผ ํ•˜๋Š” ๋ชจ๋“  ๋งค์ถœ ์ •๋ณด โ€” MRR, ๊ฐฑ์‹  ์ž„๋ฐ•, ์œ„ํ—˜ ๊ณ ๊ฐ โ€” ๋ฅผ ํ•œ ๋ช…๋ น์œผ๋กœ. **Event-sourced ์„ค๊ณ„ (CRM ์•„๋‹˜):** - ๋ชจ๋“  ๋ณ€๊ฒฝ(add/update/renew/risk/churn/note) = append-only ์ด๋ฒคํŠธ. - ํ˜„์žฌ ์ƒํƒœ = ๊ฐ™์€ customerId ์˜ ์ด๋ฒคํŠธ๋ฅผ ์‹œ๊ฐ„์ˆœ ์žฌ์ƒ. - ์†์ƒยท์‹ค์ˆ˜ ๋ณต๊ตฌ ์‰ฌ์›€ โ€” .jsonl ํ•œ ์ค„๋งŒ ์ง€์šฐ๋ฉด ๊ทธ ์ด๋ฒคํŠธ๋งŒ ๋ฌดํšจํ™”. **์‹ ๊ทœ `/customers` ๋ช…๋ น (์„œ๋ธŒ๋ช…๋ น 10๊ฐœ):** - `/customers` โ€” ๋Œ€์‹œ๋ณด๋“œ (์ด MRR, ํ™œ์„ฑ/์œ„ํ—˜/์ดํƒˆ, 30์ผ ๋‚ด ๊ฐฑ์‹ , ์œ„ํ—˜ MRR ๋น„์œจ) - `/customers add <์ด๋ฆ„> [๊ฐฑ์‹ ์ผ] [์š”๊ธˆ์ œ]` โ€” ์‹ ๊ทœ - `/customers update <์ด๋ฆ„> mrr=โ€ฆ renewal=โ€ฆ plan=โ€ฆ` โ€” ์ •๋ณด ์ˆ˜์ • - `/customers renew <์ด๋ฆ„> <์ƒˆ ๊ฐฑ์‹ ์ผ> [์ƒˆ MRR]` โ€” ๊ฐฑ์‹  ์ฒ˜๋ฆฌ (active ๋ณต๊ท€) - `/customers risk <์ด๋ฆ„> <์‚ฌ์œ >` โ€” ์œ„ํ—˜ ํ‘œ์‹œ - `/customers churn <์ด๋ฆ„> <์‚ฌ์œ >` โ€” ์ดํƒˆ ์ฒ˜๋ฆฌ (MRR 0 ์œผ๋กœ) - `/customers note <์ด๋ฆ„> <ํ…์ŠคํŠธ>` โ€” ์ž์œ  ๋ฉ”๋ชจ - `/customers show <์ด๋ฆ„>` โ€” ์ƒ์„ธ + ์ด๋ฒคํŠธ ํžˆ์Šคํ† ๋ฆฌ (๋ถ€๋ถ„ ๋งค์น˜ OK) - `/customers list [active/risk/churned]` โ€” ํ•„ํ„ฐ ๋ชฉ๋ก - `/customers path` โ€” ํŒŒ์ผ ๊ฒฝ๋กœ **๋Œ€์‹œ๋ณด๋“œ ํ•ต์‹ฌ ์ง€ํ‘œ:** - ์ด MRR + ์—ฐ ํ™˜์‚ฐ (์ž๋™) - ํ™œ์„ฑ/์œ„ํ—˜/์ดํƒˆ ์นด์šดํŠธ - **์œ„ํ—˜ MRR ๋น„์œจ** โ€” ์ „์ฒด MRR ์˜ ๋ช‡ %๊ฐ€ ์œ„ํ—˜์— ๋…ธ์ถœ๋๋Š”์ง€ (์ด ์ˆซ์ž ๋ณด๊ณ  ์šฐ์„ ์ˆœ์œ„) - **30์ผ ๋‚ด ๊ฐฑ์‹ ** โ€” D-7 ๐Ÿ”ด / D-14 ๐ŸŸก / D-30 ๐ŸŸข ์‹ ํ˜ธ๋“ฑ - MRR ์ˆœ ํ™œ์„ฑ ๊ณ ๊ฐ top 10 **๊ธˆ์•ก ๋‹จ์œ„:** `200๋งŒ` / `1.5์–ต` / `300000` ๋ชจ๋‘ OK (ํ•œ๊ตญ์‹). **๊ฐฑ์‹ ์ผ:** `YYYY-MM-DD`. **์ €์žฅ โ€” ๋กœ์ปฌ only:** - `/.astra/customers.jsonl` (append-only ์ด๋ฒคํŠธ ๋กœ๊ทธ) - ๋ฏผ๊ฐ ์ •๋ณด(๊ณ ๊ฐ์‚ฌ ์ด๋ฆ„, ๋งค์ถœ) ์™ธ๋ถ€ ์•ˆ ๋ณด๋ƒ„. **4์ธ ํŒ€ ์šด์˜ ๋ˆ„์  (1~7๋‹จ๊ณ„):** `/decisions` ยท `/onesie` ยท `/draft` ยท `/feedback` ยท `/blocked` ยท `/standup` ยท `/runway` ยท **`/customers`** โญ **์‹ ๊ทœ ํŒจํ‚ค์ง•:** `astra-2.2.179.vsix`. --- ## v2.2.178 (2026-05-28) ### ๐Ÿ’ฐ 4์ธ ํŒ€ ์šด์˜ 6๋‹จ๊ณ„ โ€” /runway ํ˜„๊ธˆ/์†Œ์ง„์œจ/๋Ÿฐ์›จ์ด ํŠธ๋ž˜์ปค 4์ธ ๊ธฐ์—… CEO ๊ฐ€ ๋งค์ผยท๋งค์ฃผ ํ™•์ธํ•˜๋Š” ๊ฐ€์žฅ ์ค‘์š”ํ•œ ์ˆซ์ž โ€” *ํ†ต์žฅ์— ์–ผ๋งˆ, ํ•œ ๋‹ฌ์— ์–ผ๋งˆ ๋‚˜๊ฐ, ๋ช‡ ๊ฐœ์›” ๋ฒ„ํ‹ธ ์ˆ˜ ์žˆ๋‚˜*. ํšŒ๊ณ„ SaaS ์—ฐ๋™ ์—†์ด ํ•œ ๋ช…๋ น์œผ๋กœ ํ•œ ํ™”๋ฉด. **์‹ ๊ทœ `/runway` ๋ช…๋ น (์„œ๋ธŒ๋ช…๋ น 7๊ฐœ):** - `/runway` โ€” ํ˜„์žฌ ์ƒํƒœ ์นด๋“œ (ํ˜„๊ธˆ / burn / ๋Ÿฐ์›จ์ด + ์œ„ํ—˜ ๋“ฑ๊ธ‰) - `/runway cash <๊ธˆ์•ก> [๋ฉ”๋ชจ]` โ€” ํ†ต์žฅ ์ž”๊ณ  ์Šค๋ƒ…์ƒท - `/runway expense <๊ธˆ์•ก> [๋ฉ”๋ชจ]` โ€” ์ง€์ถœ ๊ธฐ๋ก (์ž๋™ burn ๊ณ„์‚ฐ์— ๋ฐ˜์˜) - `/runway revenue <๊ธˆ์•ก> [๋ฉ”๋ชจ]` โ€” ์ˆ˜์ž… ๊ธฐ๋ก (burn ์ƒ์‡„) - `/runway burn <์›” ๊ธˆ์•ก>` โ€” ์›” ์†Œ์ง„์œจ ์ˆ˜๋™ ์„ค์ • (์ž๋™ ๊ณ„์‚ฐ๋ณด๋‹ค ์šฐ์„ ) - `/runway log [N]` โ€” ์ตœ๊ทผ N๊ฑด (๊ธฐ๋ณธ 20, ์ตœ์‹ ์ˆœ) - `/runway path` โ€” .jsonl ํŒŒ์ผ ์œ„์น˜ **๊ธˆ์•ก ํŒŒ์‹ฑ โ€” ํ•œ๊ตญ์‹ ๋‹จ์œ„ ๊ทธ๋Œ€๋กœ:** - `5000๋งŒ` / `1.5์–ต` / `300000` / `1,500,000` / `10k` / `5m` ๋ชจ๋‘ OK. **๋Ÿฐ์›จ์ด ์œ„ํ—˜ ๋“ฑ๊ธ‰:** - ๐ŸŸข 6๊ฐœ์›”+ (์•ˆ์ „) - ๐ŸŸก 3~6๊ฐœ์›” (์ž๊ธˆ ๊ณ„ํš ์ ๊ฒ€ ๊ถŒ์žฅ) - ๐Ÿ”ด 3๊ฐœ์›” ๋ฏธ๋งŒ (์ฆ‰์‹œ ์กฐ๋‹ฌ/์ ˆ๊ฐ ํ•„์š”) - โ™พ๏ธ ํ‘์ž ์šด์˜ (์ง€์ถœ โ‰ค ์ˆ˜์ž…) **Burn ๊ณ„์‚ฐ ์šฐ์„ ์ˆœ์œ„:** 1. `/runway burn` ์œผ๋กœ ์ˆ˜๋™ ์„ค์ •ํ•œ ๊ฐ’ (์˜ˆ์ธก ๊ฐ€๋Šฅ, ๊ณ„์ ˆ์„ฑ ๋ฌด์‹œ) 2. ์ตœ๊ทผ 30์ผ ์‹ค์  (expense โˆ’ revenue, 30์ผ ๋ฏธ๋งŒ์ด๋ฉด ์ผํ‰๊ท  ร— 30 ํ™˜์‚ฐ) **์ €์žฅ โ€” ๋กœ์ปฌ only:** - `/.astra/runway.jsonl` (append-only, ์‚ฌ๋žŒ ํŽธ์ง‘ ๊ฐ€๋Šฅ) - ๋ฏผ๊ฐ ์ •๋ณด(ํ˜„๊ธˆ ์ž”๊ณ ) ์™ธ๋ถ€ ์•ˆ ๋ณด๋ƒ„ โ€” ASTRA local-first. **4์ธ ํŒ€ ์šด์˜ ๋ˆ„์  (1~6๋‹จ๊ณ„):** `/decisions` ยท `/onesie` ยท `/draft` ยท `/feedback` ยท `/blocked` ยท `/standup` ยท **`/runway`** โญ **์‹ ๊ทœ ํŒจํ‚ค์ง•:** `astra-2.2.178.vsix`. --- ## v2.2.177 (2026-05-28) ### ๐Ÿ“Š 4์ธ ํŒ€ ์šด์˜ 5๋‹จ๊ณ„ โ€” /standup ๊ณต์œ ์šฉ ์Šคํƒ ๋“œ์—… ์นด๋“œ `/blocked` ๋Š” *๋Œ€ํ‘œ๊ฐ€ ๋ณธ๋‹ค* (๋ถ„์„), `/standup` ์€ *ํŒ€์— ๊ณต์œ ํ•œ๋‹ค* (์†Œํ†ต). ๊ฐ™์€ Tasks ๋ฐ์ดํ„ฐ์ง€๋งŒ ๋‹ค๋ฅธ ํฌ๋งทยท๊ด€์ . **์‹ ๊ทœ `/standup [daily/weekly/monthly]` ๋ช…๋ น:** - ๊ธฐ๋ณธ: `weekly` (7์ผ ์œˆ๋„์šฐ). ์˜ต์…˜: `daily` (1์ผ) ยท `monthly` (30์ผ). - **๋ฉค๋ฒ„๋ณ„ ๊ทธ๋ฃนํ•‘ + 3-row ํ‘œ์ค€ ์Šคํƒ ๋“œ์—… ํฌ๋งท**: - โœ… ์™„๋ฃŒ (์œˆ๋„์šฐ ๋‚ด ์™„๋ฃŒ, ์ตœ๋Œ€ 8๊ฑด) - ๐ŸŽฏ ์ง„ํ–‰/์˜ˆ์ • (๋‹ค๊ฐ€์˜ค๋Š” ๋งˆ๊ฐ + ๋งˆ๊ฐ ๋ฏธ์ •, ์ตœ๋Œ€ 6๊ฑด) - ๐Ÿšง ๋ธ”๋กœ์ปค (์ง€์—ฐ๋œ ํ•ญ๋ชฉ, ์ตœ๋Œ€ 5๊ฑด) - ๋ฉค๋ฒ„ ์ •๋ ฌ: ํ™œ๋™๋Ÿ‰(์™„๋ฃŒ+์ง„ํ–‰+์ง€์—ฐร—2) ๋‚ด๋ฆผ์ฐจ์ˆœ โ€” ๊ฐ€์žฅ ๋ฐ”์œ ์‚ฌ๋žŒ ์œ„. - ๋ถ€๋ก: **์ด๋ฒˆ ๊ธฐ๊ฐ„ ๊ฒฐ์ • (Chronicle ADR)** ๋ชฉ๋ก, ์ตœ๋Œ€ 10๊ฑด. - ์ถœ๋ ฅ: ๋‹จ์ˆœ ๋งˆํฌ๋‹ค์šด โ€” **์Šฌ๋ž™ยท๋…ธ์…˜ ๊ทธ๋Œ€๋กœ ๋ณต๋ถ™ ๊ฐ€๋Šฅ**. **`/blocked` vs `/standup`:** - `/blocked`: ๋Œ€ํ‘œ ์‹œ์•ผ ํ™•๋ณด์šฉ. ๋ฉค๋ฒ„๋ณ„ ์••๋ฐ• ์š”์•ฝ + `/onesie` ์•ˆ๋‚ด. ๋งค์ผ ์•„์นจ. - `/standup`: ํŒ€ ๊ณต์œ ์šฉ. ํ‘œ์ค€ standup 3-row. ๋งค์ผ/๋งค์ฃผ ๊ฒŒ์‹œ. **4์ธ ํŒ€ ์šด์˜ ๋ˆ„์  (1~5๋‹จ๊ณ„):** `/decisions` ยท `/onesie` ยท `/draft` ยท `/feedback` ยท `/blocked` ยท **`/standup`** โญ **์‹ ๊ทœ ํŒจํ‚ค์ง•:** `astra-2.2.177.vsix`. --- ## v2.2.176 (2026-05-28) ### ๐Ÿšจ 4์ธ ํŒ€ ์šด์˜ 4๋‹จ๊ณ„ โ€” /blocked ์ „์‚ฌ across ์ง€์—ฐยท๋ธ”๋กœ์ปค ๋ทฐ ๋Œ€ํ‘œ์˜ *์ผ์ผ ์•„์นจ ritual* ๋„๊ตฌ. `/onesie` ๊ฐ€ ๋ฉค๋ฒ„ ๋‹จ์œ„๋ผ๋ฉด `/blocked` ๋Š” ์ „์ฒด across ํ•œ ํ™”๋ฉด โ€” "์˜ค๋Š˜ ์–ด๋”” ์‚ดํŽด๋ด์•ผ ํ•˜๋‚˜" ์ฆ‰์‹œ ์žกํž˜. **์‹ ๊ทœ `/blocked [@๋ฉค๋ฒ„]` ๋ช…๋ น:** - Google Tasks ์ „์ฒด ์กฐํšŒ ํ›„ owner ์ž๋™ ์ถ”์ถœ(์ œ๋ชฉ `[๋ฉค๋ฒ„]` prefix ยท notes `๋‹ด๋‹น: ์ด๋ฆ„` ํŒจํ„ด ๋ชจ๋‘ ์ธ์‹ โ€” `/task` ์™€ `/meet` ์–‘์ชฝ ํ˜ธํ™˜). - **3๊ฐœ ์„น์…˜ ์ž๋™ ๋ถ„๋ฅ˜:** - ๐Ÿ”ด ์ง€์—ฐ (๋งˆ๊ฐ < ์˜ค๋Š˜) โ€” ๊ฐ€์žฅ ์˜ค๋ž˜ ์ง€์—ฐ๋œ ๊ฒƒ๋ถ€ํ„ฐ, ์ตœ๋Œ€ 20๊ฑด - ๐ŸŸก ์ด๋ฒˆ ์ฃผ ๋งˆ๊ฐ (์˜ค๋Š˜~+7์ผ) โ€” ์ž„๋ฐ• ์ˆœ, ์ตœ๋Œ€ 15๊ฑด - โšช ๋งˆ๊ฐ์ผ ์—†์Œ โ€” owner ๋ณ„, ์šฐ์„ ์ˆœ์œ„ ํ•ฉ์˜ ๋Œ€์ƒ, ์ตœ๋Œ€ 10๊ฑด - **๋ฉค๋ฒ„๋ณ„ ์••๋ฐ• ์š”์•ฝ** (์ „์ฒด ๋ณด๊ธฐ์ผ ๋•Œ) โ€” ์ง€์—ฐยท์ด๋ฒˆ์ฃผ ๊ฐ€์ค‘์น˜๋กœ ์ •๋ ฌ โ†’ ์••๋ฐ• ํฐ ๋ฉค๋ฒ„๋ถ€ํ„ฐ `/onesie @<๋ฉค๋ฒ„>` ์•ˆ๋‚ด. - `@๋ฉค๋ฒ„` ์ธ์ž ์‹œ ๊ทธ ๋ฉค๋ฒ„๋งŒ (์••์ถ•๋œ 1์ธ ๋ทฐ). **์‚ฌ์šฉ ์˜ˆ:** - `/blocked` โ†’ ๋งค์ผ ์•„์นจ ์ „์ฒด ์ ๊ฒ€ - `/blocked @๊ธฐํš์ž` โ†’ ๊ธฐํš์ž๋งŒ ์••์ถ• ๋ทฐ **4์ธ ํŒ€ ์šด์˜ ๋ˆ„์  (1~4๋‹จ๊ณ„ ์™„์„ฑ):** - `/decisions` ยท `/onesie` ยท `/draft` ยท `/feedback` ยท **`/blocked`** โญ **์‹ ๊ทœ ํŒจํ‚ค์ง•:** `astra-2.2.176.vsix`. --- ## v2.2.175 (2026-05-28) ### ๐Ÿ“ฅ 4์ธ ํŒ€ ์šด์˜ 3๋‹จ๊ณ„ โ€” /feedback ๊ณ ๊ฐ ์‹ ํ˜ธ ๋ˆ„์  + ํŒจํ„ด ๋ถ„์„ 3๋‹จ๊ณ„: ์Šฌ๋ž™ยท์ด๋ฉ”์ผยทCS ์ฑ„๋„์— ํฉ์–ด์ง„ ๊ณ ๊ฐ ํ”ผ๋“œ๋ฐฑ์„ ํ•œ ๊ณณ์— ๋ชจ์œผ๊ณ  LLM์ด ์ž๋™ ๋ถ„๋ฅ˜ยทํŒจํ„ด ๋ถ„์„. **ASTRA local-first ์˜ ๊ฐ•์ ์ด ๊ฐ€์žฅ ์‚ด์•„๋‚˜๋Š” ์˜์—ญ** โ€” ๋ฏผ๊ฐ ์ •๋ณด๋„ ์™ธ๋ถ€ ์ „์†ก ์—†์ด ๋กœ์ปฌ ์ฒ˜๋ฆฌ. **์‹ ๊ทœ ๋ชจ๋“ˆ [feedbackStore.ts](src/features/feedback/feedbackStore.ts):** - ์ €์žฅ ์œ„์น˜: `/.astra/customer-feedback.jsonl` (ํ•œ ์ค„ = ํ•œ ํ•ญ๋ชฉ, append-only, ์‚ฌ๋žŒ์ด ์ง์ ‘ ํŽธ์ง‘ ๊ฐ€๋Šฅ). - `FeedbackEntry` ํƒ€์ž…: id / timestamp / text / source / categories / sentiment. **์‹ ๊ทœ `/feedback` 4-mode ๋ช…๋ น:** - `/feedback <ํ…์ŠคํŠธ>` โ€” ์ €์žฅ + **LLM ์ž๋™ ์นดํ…Œ๊ณ ๋ฆฌ ๋ถ„๋ฅ˜** (1~3๊ฐœ ์นดํ…Œ๊ณ ๋ฆฌ + sentiment positive/neutral/negative). LLM ๋ถ„๋ฅ˜ ์‹คํŒจํ•ด๋„ ์›๋ณธ์€ ๋ณด์กด. - `/feedback list [์นดํ…Œ๊ณ ๋ฆฌ]` โ€” ๋ˆ„์  ๋ชฉ๋ก (์ตœ์‹ ์ˆœ, ์ตœ๋Œ€ 20๊ฑด). ์นดํ…Œ๊ณ ๋ฆฌ ํ•„ํ„ฐ ๊ฐ€๋Šฅ. - `/feedback summary` โ€” 3๊ฑด ์ด์ƒ ๋ˆ„์  ์‹œ LLM ํŒจํ„ด ๋ถ„์„ ๋ฆฌํฌํŠธ (์นดํ…Œ๊ณ ๋ฆฌ ๋ถ„ํฌ + ๊ฐ์ • ๋ถ„ํฌ + ๋ฐ˜๋ณต ํŒจํ„ด Top 3 + ์ถ”์ฒœ ์•ก์…˜). - `/feedback path` โ€” ์ €์žฅ ํŒŒ์ผ ๊ฒฝ๋กœ ํ‘œ์‹œ. **์‚ฌ์šฉ ์˜ˆ:** - `/feedback ๊ฒฐ์ œ ํ๋ฆ„์ด ๋„ˆ๋ฌด ๋ณต์žกํ•ด์„œ ์ค‘๊ฐ„์— ํฌ๊ธฐํ–ˆ์–ด์š” - ๊น€XX` - `/feedback list ๊ฒฐ์ œ` โ†’ ๊ฒฐ์ œ ์นดํ…Œ๊ณ ๋ฆฌ ๋ˆ„์  ํ”ผ๋“œ๋ฐฑ๋งŒ - `/feedback summary` โ†’ ์ „์ฒด ํŒจํ„ด ๋ฆฌํฌํŠธ **๋‹ค์Œ ๋‹จ๊ณ„ ํ›„๋ณด** (๋ณ„๋„): `/blocked` ์ „์‚ฌ ๋ธ”๋กœ์ปค ๋ทฐ, /feedback ์ž๋™ ์ฃผ๊ฐ„ ๋ฆฌํฌํŠธ (๋งค์ฃผ ์›”์š”์ผ). **์‹ ๊ทœ ํŒจํ‚ค์ง•:** `astra-2.2.175.vsix`. --- ## v2.2.174 (2026-05-27) ### ๐Ÿข 4์ธ ํŒ€ ์šด์˜ 2๋‹จ๊ณ„ โ€” /onesie 1:1 ์นด๋“œ + /draft ์™ธ๋ถ€ ์ปค๋ฎค๋‹ˆ์ผ€์ด์…˜ ์ดˆ์•ˆ 2๋‹จ๊ณ„ ๋ฌถ์Œ (1๋‹จ๊ณ„๋Š” v2.2.173 `@๋‹ด๋‹น์ž` ํƒœ๊ทธ + `/decisions`). ๋‹จ๋… ์šด์˜์ž(๋Œ€ํ‘œ)์˜ ์ฃผ๊ฐ„ ritual ํšจ์œจํ™”. **์‹ ๊ทœ `/onesie [๋ฉค๋ฒ„]` โ€” 1:1 ๋ฏธํŒ… ์ค€๋น„ ์นด๋“œ:** - Google Tasks API ์ „์ฒด ์กฐํšŒ ํ›„ ๋ฉค๋ฒ„ ํ•„ํ„ฐ (์ œ๋ชฉ `[๋ฉค๋ฒ„]` prefix ยท notes `@๋ฉค๋ฒ„` ยท notes `๋‹ด๋‹น: ๋ฉค๋ฒ„` ํŒจํ„ด ๋ชจ๋‘ ์ธ์‹). - ์ž๋™ ์นดํ…Œ๊ณ ๋ฆฌ: **์ตœ๊ทผ 30์ผ ์™„๋ฃŒ / ์ง€์—ฐ / ์ง„ํ–‰ ์ค‘ยท๋‹ค๊ฐ€์˜ค๋Š” / ๋งˆ๊ฐ์ผ ์—†์Œ**. - Chronicle ADR ์—์„œ ํ•ด๋‹น ๋ฉค๋ฒ„ ์–ธ๊ธ‰๋œ ๊ฒฐ์ • ์ตœ์‹  5๊ฑด ๋™์‹œ ํ‘œ์‹œ. - **์ž๋™ ๋Œ€ํ™” ํ† ํ”ฝ ์ œ์•ˆ** โ€” ์ƒํƒœ ์‹ ํ˜ธ(์ง€์—ฐ ๅคš โ†’ ๋ธ”๋กœ์ปค, ์™„๋ฃŒ 0 โ†’ ์‹œ๊ฐ„ ์‚ฌ์šฉ ํ™•์ธ, ๋งˆ๊ฐ์ผ ์—†์Œ ๅคš โ†’ ์šฐ์„ ์ˆœ์œ„ ํ•ฉ์˜)์—์„œ ์œ ๋„. - ์‚ฌ์šฉ ์˜ˆ: `/onesie ๊ธฐํš์ž` ยท `/onesie @๋””์ž์ด๋„ˆ` ยท `/onesie ๊ฐœ๋ฐœ`. **์‹ ๊ทœ `/draft [์œ ํ˜•] [์š”์ฒญ]` โ€” ์™ธ๋ถ€ ์ปค๋ฎค๋‹ˆ์ผ€์ด์…˜ ์ดˆ์•ˆ:** - 6๊ฐœ ์œ ํ˜•: `email` ยท `slack` ยท `blog` ยท `newsletter` ยท `investor-update` ยท `proposal`. - ๊ฐ ์œ ํ˜•๋ณ„ ๋ถ„๋Ÿ‰/๊ตฌ์กฐ/ํ†ค ๊ฐ€์ด๋“œ ์ž๋™ ์ ์šฉ. - ์‹ ๊ทœ ์„ค์ • **`g1nation.teamVoiceGuide`** (multilineText) โ€” ํŒ€ ๋ณด์ด์Šค ๊ฐ€์ด๋“œ๋ฅผ ํ•œ ๋ฒˆ ์ €์žฅํ•˜๋ฉด ๋ชจ๋“  ์ดˆ์•ˆ์— ์ž๋™ ๋ฐ˜์˜. - ์‚ฌ์šฉ ์˜ˆ: `/draft email ๊น€ ๋Œ€ํ‘œ๋‹˜๊ป˜ ๋ฏธํŒ… ์ผ์ • ์กฐ์œจ ์š”์ฒญ, ๋‹ค์Œ ์ฃผ ๊ฐ€๋Šฅ ์‹œ๊ฐ„ 3๊ฐœ ์ œ์•ˆ` **ํ† ๋Œ€ โ€” `listTasks` Google Tasks API ์กฐํšŒ:** - [tasksApi.ts](src/features/calendar/tasksApi.ts): `listTasks(context, {showCompleted, maxResults})` โ€” ์‹ ๊ทœ `ListedTask` ํƒ€์ž… (id/title/status/due/completed/notes). - /onesie ์™ธ ํ–ฅํ›„ `/blocked`, ์ง„ํ–‰๋ฅ  ๋ฆฌํฌํŠธ ๋“ฑ์— ์žฌํ™œ์šฉ ๊ฐ€๋Šฅ. **์‹ ๊ทœ ํŒจํ‚ค์ง•:** `astra-2.2.174.vsix`. --- ## v2.2.173 (2026-05-27) ### ๐Ÿข 4์ธ ํŒ€ ์šด์˜ โ€” @๋‹ด๋‹น์ž ํƒœ๊ทธ + /decisions ๊ฒฐ์ • ๊ฒ€์ƒ‰ 4์ธ ๋‹จ๋… ์šด์˜ ๋ชจ๋“œ(๋Œ€ํ‘œ๊ฐ€ ๋ชจ๋“  ๋ฐ์ดํ„ฐ ์ž…๋ ฅ + ASTRA๊ฐ€ ์กฐํšŒยทํ•ฉ์„ฑยท์žฌํ™œ์šฉ ๋‹ด๋‹น)์˜ ๋‘ ๊ฐ€์ง€ ํ† ๋Œ€ ๊ธฐ๋Šฅ. **`/task` ์— `@๋‹ด๋‹น์ž` ํƒœ๊ทธ ์ถ”๊ฐ€:** - ์ฒซ ํ† ํฐ์ด `@` ๋กœ ์‹œ์ž‘ํ•˜๋ฉด owner ๋กœ ํŒŒ์‹ฑ โ†’ ์ œ๋ชฉ ์•ž์— `[๋‹ด๋‹น์ž]` prefix ์ž๋™ ์ถ”๊ฐ€. - ์‚ฌ์šฉ ์˜ˆ: `/task @๊ธฐํš์ž ์ŠคํŽ™ 1์ฐจ ์ •๋ฆฌ 26/06/01 26/06/05` โ†’ Tasks/Calendar ์–‘์ชฝ์— `[๊ธฐํš์ž] ์ŠคํŽ™ 1์ฐจ ์ •๋ฆฌ` ๋กœ ํ‘œ์‹œ. - ๋…ธํŠธ์—๋„ `๋‹ด๋‹น: @๊ธฐํš์ž` ํ•œ ์ค„ ์ž๋™ ๊ธฐ๋ก โ†’ `/decisions` ๊ฐ€ grep ์œผ๋กœ ์ฐพ์„ ์ˆ˜ ์žˆ์Œ. **์‹ ๊ทœ `/decisions [ํ‚ค์›Œ๋“œ] [@๋‹ด๋‹น์ž]` โ€” Chronicle ADR ๊ฒ€์ƒ‰:** - ์ด๋ฏธ chronicle ์ด ์Œ“๊ณ  ์žˆ๋Š” ๊ฒฐ์ • ๊ธฐ๋ก(`/decisions/ADR-NNNN-*.md`)์„ ํ‚ค์›Œ๋“œ + ๋‹ด๋‹น์ž๋กœ ๊ฒ€์ƒ‰. - ๋ชจ๋“  ๋“ฑ๋ก๋œ chronicle ํ”„๋กœ์ ํŠธ ์ผ๊ด„ ์Šค์บ”, ์ตœ์‹ ์ˆœ, ์ตœ๋Œ€ 20๊ฑด. - ์ถœ๋ ฅ: ์ œ๋ชฉ + ๋‚ ์งœ + ํ”„๋กœ์ ํŠธ + ํ‚ค์›Œ๋“œ ์ฃผ๋ณ€ ์Šค๋‹ˆํŽซ + ํŒŒ์ผ ๊ฒฝ๋กœ. - ์‚ฌ์šฉ ์˜ˆ: `/decisions ํ™˜๋ถˆ ์ •์ฑ…` ยท `/decisions @๊ธฐํš์ž` ยท `/decisions ๊ฒฐ์ œ @๊ฐœ๋ฐœ` - ์ธ์ž ์—†์ด ์‹คํ–‰ ์‹œ ๋„์›€๋ง ํ‘œ์‹œ. **๋‹ค์Œ ๋‹จ๊ณ„ ํ›„๋ณด** (๋ณ„๋„ ์ž‘์—…): `/onesie [๋ฉค๋ฒ„]` โ€” 1:1 ๋ฏธํŒ… ์ค€๋น„ ์นด๋“œ, `/draft [์œ ํ˜•]` โ€” ์™ธ๋ถ€ ์ปค๋ฎค๋‹ˆ์ผ€์ด์…˜ ์ดˆ์•ˆ. **์‹ ๊ทœ ํŒจํ‚ค์ง•:** `astra-2.2.173.vsix`. --- ## v2.2.172 (2026-05-27) ### ๐ŸŽ›๏ธ /meet โ€” ๊ธฐ๋ณธ๊ฐ’์„ Tasks ๋‹จ๋… ๋“ฑ๋ก์œผ๋กœ ๋ณ€๊ฒฝ (์ค‘๋ณต ๋ฐฉ์ง€) - **`g1nation.meetUsesCalendar` ๊ธฐ๋ณธ๊ฐ’ `true` โ†’ `false`.** Tasks ๋„ Calendar ์‚ฌ์ด๋“œ๋ฐ”์— ๊ฐ™์ด ๋ณด์ด๋ฏ€๋กœ ๋‘˜ ๋‹ค ์ผœ์ ธ ์žˆ์œผ๋ฉด ๋™์ผ ํ•ญ๋ชฉ์ด ์ค‘๋ณต ๋…ธ์ถœ(์ผ์ • + ํ•  ์ผ ๊ฐ 1๊ฑด์”ฉ)๋˜๋˜ ๋ฌธ์ œ ํ•ด๊ฒฐ. - ์‚ฌ์šฉ์ž ๋ช…์‹œ ์„ค์ •์ด ์—†๋˜ ๊ฒฝ์šฐ ์ž๋™์œผ๋กœ ์ƒˆ ๊ธฐ๋ณธ ์ ์šฉ โ€” ๋‹ค์Œ `/meet` ๋ถ€ํ„ฐ Tasks ๋‹จ๋…. - ์–‘์ชฝ ๋“ฑ๋ก์„ ์›ํ•˜๋ฉด Settings ์—์„œ `g1nation.meetUsesCalendar` ๋ฅผ true ๋กœ ๋ช…์‹œ ํ† ๊ธ€. - `/task` ๋ช…๋ น์€ ๋ณ€๊ฒฝ ์—†์Œ โ€” ์‚ฌ์šฉ์ž๊ฐ€ ์ง์ ‘ ํ˜ธ์ถœํ•œ ๋ช…๋ น์ด๋ผ ํ•ญ์ƒ ์–‘์ชฝ ๋“ฑ๋ก. - **์‹ ๊ทœ ํŒจํ‚ค์ง•:** `astra-2.2.172.vsix`. --- ## v2.2.171 (2026-05-27) ### ๐Ÿ“‹ ์‹ ๊ทœ `/task` โ€” Google Tasks + Calendar ์–‘์ชฝ ๋‹จ๋ฐœ ๋“ฑ๋ก - **์‚ฌ์šฉ๋ฒ•:** - `/task <์ œ๋ชฉ> <์‹œ์ž‘์ผ> <์™„๋ฃŒ์ผ>` โ€” ๊ธฐ๊ฐ„ ์ž‘์—… (์˜ˆ: `/task Apple ๊ณ„์ • ์ƒ์„ฑ ์š”์ฒญ 26/05/27 26/06/28`) - `/task <์ œ๋ชฉ> <๋‚ ์งœ>` โ€” ํ•˜๋ฃจ์งœ๋ฆฌ ์ž‘์—… (์‹œ์ž‘=์™„๋ฃŒ, ๊ฐ™์€ ๋‚ ) - **๋‚ ์งœ ํ˜•์‹ 3์ข… ์ง€์›**: `YY/MM/DD` ยท `YYYY-MM-DD` ยท `YYYY/MM/DD`. ์œ ํšจ์„ฑ ๊ฒ€์ฆ(2/30 ๊ฐ™์€ ์ž˜๋ชป๋œ ๋‚ ์งœ ์ฐจ๋‹จ) ํฌํ•จ. - **ํ•ญ์ƒ ์–‘์ชฝ ๋“ฑ๋ก** โ€” `/meet` ๊ณผ ๋‹ฌ๋ฆฌ ์‚ฌ์šฉ์ž๊ฐ€ ์ง์ ‘ ํ˜ธ์ถœํ•œ ๋ช…๋ น์ด๋ฏ€๋กœ `meetUsesTasks` / `meetUsesCalendar` ์„ค์ • ๋ฌด์‹œํ•˜๊ณ  ๋ฌด์กฐ๊ฑด Tasks + Calendar ๋‘˜ ๋‹ค ๋“ฑ๋ก. - Tasks: ๋งˆ๊ฐ์ผ๋งŒ (๋ชจ๋ธ ํ•œ๊ณ„ โ€” ์‹œ์ž‘์ผ์€ ๋…ธํŠธ์— ๊ธฐ๋ก). Calendar: all-day ๊ธฐ๊ฐ„ ์ผ์ •(end-exclusive ์ž๋™ ๋ณด์ •์œผ๋กœ ์™„๋ฃŒ์ผ ํฌํ•จ ํ‘œ์‹œ). - ์„ฑ๊ณต/๋ถ€๋ถ„ ์‹คํŒจ/์ „์ฒด ์‹คํŒจ ๊ฐ๊ฐ ๋ช…ํ™•ํ•œ ๋ฉ”์‹œ์ง€ + Calendar ์ด๋ฒคํŠธ deep link ํ‘œ์‹œ. - **์‹ ๊ทœ ํŒจํ‚ค์ง•:** `astra-2.2.171.vsix`. --- ## v2.2.170 (2026-05-27) ### ๐Ÿ“๐Ÿ“… /meet โ€” Tasks + Calendar ์–‘์ชฝ ๋™์‹œ ๋“ฑ๋ก (๋…๋ฆฝ ํ† ๊ธ€) - **v2.2.169์˜ either/or ๋ถ„๊ธฐ โ†’ ์–‘์ชฝ ๋™์‹œ ๋“ฑ๋ก**์œผ๋กœ ๋ณ€๊ฒฝ. ์‚ฌ์šฉ์ž ์š”์ฒญ ๋ฐ˜์˜ ("์บ˜๋ฆฐ๋”์—๋„ ๋“ฑ๋ก๋˜๊ณ  Tasks๋กœ๋„ ๋“ฑ๋ก๋˜๊ฒŒ"). - **์‹ ๊ทœ ์„ค์ •** `g1nation.meetUsesCalendar` (๊ธฐ๋ณธ `true`). ๊ธฐ์กด `meetUsesTasks` ์™€ **๋…๋ฆฝ ํ† ๊ธ€** โ€” ๋‘˜ ๋‹ค true(๊ธฐ๋ณธ)๋ฉด ์–‘์ชฝ ๋™์‹œ ๋“ฑ๋ก, ํ•œ์ชฝ๋งŒ true๋ฉด ๊ทธ์ชฝ๋งŒ, ๋‘˜ ๋‹ค false๋ฉด ์ž๋™ ๋“ฑ๋ก ๊ฑด๋„ˆ๋œ€. - **์ถœ๋ ฅ ํฌ๋งท ๊ฐœ์„ **: ๊ฐ ์•ก์…˜ ์•„์ดํ…œ ์˜†์— ์–ด๋””์— ์„ฑ๊ณต/์‹คํŒจํ–ˆ๋Š”์ง€ ํ‘œ์‹œ โ€” `(Tasks + Calendar)` ๋˜๋Š” `โš ๏ธ Calendar: <์—๋Ÿฌ>`. ๋งˆ์ง€๋ง‰ ์š”์•ฝ๋„ destination ๋ณ„๋กœ ๋ถ„๋ฆฌ (`Tasks 5/5 ยท Calendar 5/5`). - ๊ธฐ์กด ๋™์ž‘ ํ˜ธํ™˜: `meetUsesTasks=false` + `meetUsesCalendar=true` ๋กœ ๋‘๋ฉด 2.2.168 ์ด์ „๊ณผ ๋™์ผ (Calendar ๋งŒ ๋“ฑ๋ก). - **์‹ ๊ทœ ํŒจํ‚ค์ง•:** `astra-2.2.170.vsix`. --- ## v2.2.169 (2026-05-27) ### ๐Ÿ“ /meet ์•ก์…˜ ์•„์ดํ…œ โ†’ Google Tasks ๋“ฑ๋ก (Calendar ์ผ์ •์—์„œ ๋ณ€๊ฒฝ) - **์‹ ๊ทœ Google Tasks API ํ†ตํ•ฉ** ([tasksApi.ts](src/features/calendar/tasksApi.ts)) โ€” `createTask(context, {title, due, notes})`. Calendar / Sheets ์™€ ๋™์ผํ•œ OAuth ํ† ํฐ ๊ณต์œ , ์ƒˆ๋กœ ์ถ”๊ฐ€๋œ `tasks` ์Šค์ฝ”ํ”„ ์‚ฌ์šฉ. - **`/meet` ๋ผ์šฐํŒ… ๋ณ€๊ฒฝ**: ์•ก์…˜ ์•„์ดํ…œ์€ ์‹œ๊ฐ„ ์—†์ด ๋งˆ๊ฐ์ผ๋งŒ ์žˆ๋Š” "ํ•  ์ผ" ์ด๋ผ **Google Tasks ๋ชจ๋ธ์— ๋” ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ๋งž์Œ**. ๊ธฐ์กด์—” Calendar all-day ์ผ์ •์œผ๋กœ ๋“ฑ๋ก๋ผ ์ฃผ ์บ˜๋ฆฐ๋”์— "conference call" ์œ ํ˜•์œผ๋กœ ํ‘œ์‹œ๋˜๋˜ ๋ฌธ์ œ ํ•ด๊ฒฐ. - **์‹ ๊ทœ ์„ค์ • `g1nation.meetUsesTasks`** (๊ธฐ๋ณธ `true`) โ€” false ๋กœ ๋‘๋ฉด ๊ธฐ์กด Calendar ์ผ์ • ๋“ฑ๋ก์œผ๋กœ fallback. - **OAuth ์Šค์ฝ”ํ”„ ์ถ”๊ฐ€**: `https://www.googleapis.com/auth/tasks` ๊ฐ€ SCOPE ์— ์ถ”๊ฐ€๋จ. **๊ธฐ์กด OAuth ํ•œ ์‚ฌ์šฉ์ž๋Š” ์žฌ์ธ์ฆ ํ•„์ˆ˜** โ€” ์ƒˆ ์Šค์ฝ”ํ”„๋Š” ์˜› refresh token ์— ์—†์Œ. - **์‚ฌ์šฉ์ž ์•ก์…˜ ํ•„์š” (1ํšŒ)**: 1. **Google Cloud Console ์—์„œ Tasks API ํ™œ์„ฑํ™”**: https://console.developers.google.com/apis/api/tasks.googleapis.com/overview 2. VS Code ์—์„œ `Astra: Google Calendar OAuth ์—ฐ๊ฒฐ (์“ฐ๊ธฐ)` ๋ช…๋ น ์žฌ์‹คํ–‰ โ€” Tasks ์Šค์ฝ”ํ”„ ๋™์˜ ํ™”๋ฉด์ด ์ƒˆ๋กœ ๋œฌ๋‹ค. - ๊ถŒํ•œ ๋ถ€์กฑ ์‹œ ์นœํ™” ์•ˆ๋‚ด ๋ฉ”์‹œ์ง€ ์ž๋™ ํ‘œ์‹œ (์–ด๋–ค ๋ช…๋ น์„ ์žฌ์‹คํ–‰ํ•ด์•ผ ํ•˜๋Š”์ง€). - **์‹ ๊ทœ ํŒจํ‚ค์ง•:** `astra-2.2.169.vsix`. --- ## v2.2.168 (2026-05-27) ### ๐Ÿ“ฆ ์žฌํŒจํ‚ค์ง• (์†Œ์Šค ๋ณ€๊ฒฝ ์—†์Œ) - ASTRA ์†Œ์Šค ๋ณ€๊ฒฝ ์—†์Œ. ๋ณ„๊ฐœ๋กœ ์ ์šฉํ•œ **Datacollect Bridge `/api/lm` ๋ณต์›๋ ฅ ์ˆ˜์ •**(LM ์„œ๋ฒ„๊ฐ€ raw text ์‘๋‹ตํ•ด๋„ OpenAI shape ์œผ๋กœ wrap โ†’ ASTRA `/youtube info` ๋“ฑ์ด ๊นจ์ง„ ์—๋Ÿฌ ๋ฒฝ ๋Œ€์‹  ์ •์ƒ ๊ฒฐ๊ณผ๋ฅผ ๋ฐ›์Œ)์— ๋งž์ถฐ ๊นจ๋—ํ•œ ์„ค์น˜๋ณธ ์ œ๊ณต. - **์‹ ๊ทœ ํŒจํ‚ค์ง•:** `astra-2.2.168.vsix`. --- ## v2.2.167 (2026-05-27) ### ๐Ÿ”ฌ /stocks analysis โ€” ๋ถ„์„ ๋กœ์ง ์ •๋ฐ€ํ™” (์‚ฌ์šฉ์ž ํ”ผ๋“œ๋ฐฑ 5๊ฑด ๋ฐ˜์˜) **๋กœ์ง ์ˆ˜์ • (yahooClient.ts):** - **MA224 3-state ๋„์ž…** โ€” passed / failed / **`notApplicable`** (N/A). ํ˜„์žฌ๊ฐ€๊ฐ€ MA224 ๋ณด๋‹ค +20% ์ด์ƒ ์œ„๋ฉด ์ถ”์„ธ ์ด๋ฏธ ํ™•๋ฆฝ ์ƒํƒœ๋กœ ๋ณด๊ณ  N/A ์ฒ˜๋ฆฌ. โŒ ๋ฏธํ†ต๊ณผ๋กœ ํ‘œ๊ธฐํ•˜๋˜ ์˜คํ•ด ์ฐจ๋‹จ(์˜ˆ: ์‚ผ์„ฑ์ „์ž์šฐ +93% ์œ„์— ์žˆ๋Š”๋ฐ๋„ โŒ ํ‘œ์‹œ๋˜๋˜ ๋ฌธ์ œ). - **๋‚™ํญ๊ณผ๋Œ€ `failReason` ๋ช…์‹œ** โ€” ๋‘ ์กฐ๊ฑด(๊ณ ์  -25% / ์ €์ ์—์„œ +10%) ์ค‘ ์–ด๋А ๊ฒŒ ์–ด๊ธ‹๋‚ฌ๋Š”์ง€ ๊ตฌ์ฒด ์‚ฌ์œ  ๋ฐ˜ํ™˜. LLM ์ด ์ธ๊ณผ ๊ฑฐ๊พธ๋กœ ํ•ด์„("64% ๋ฐ˜๋“ฑ์ด๋ผ์„œ ๋ฏธํ†ต๊ณผ") ํ•˜๋˜ ๋ฌธ์ œ ์ฐจ๋‹จ. **๋ฐ์ดํ„ฐ ๋ณด๊ฐ• (slashStocks.ts):** - **์šฐ์„ ์ฃผ ์ž๋™ ๊ฐ์ง€** (symbol ๋์ž๋ฆฌ 5/7/9 โ†’ ๋ณดํ†ต์ฃผ ์ž๋™ ๋„์ถœ, ์˜ˆ: 005935โ†’005930). ๋ณดํ†ต์ฃผ ํ˜„์žฌ๊ฐ€ ์ž๋™ fetch ํ›„ **ํ• ์ธ์œจ** ๊ณ„์‚ฐ. ํ• ์ธ ๋ฒ”์œ„ ๊ฐ€์ด๋“œ ๋™๋ด‰ (10~30% ์ •์ƒ, <10% ํ”„๋ฆฌ๋ฏธ์—„, โ‰ฅ30% ํ™•๋Œ€). **ํ”„๋กฌํ”„ํŠธ ๊ฐ•ํ™” (ANALYSIS_SYSTEM_PROMPT):** - **ํŒ๋‹จ ์ ˆ์ œ ๊ทœ์น™ 4๊ฑด ์‹ ์„ค**: - (a) PBR/PER ์ ˆ๋Œ€๊ฐ’์œผ๋กœ "๊ณ ํ‰๊ฐ€/์ €ํ‰๊ฐ€" ๋‹จ์ • ๊ธˆ์ง€ โ€” ์—…์ข… ํ‰๊ท  ๋ถ€์žฌ ์‹œ ์ ˆ๋Œ€๊ฐ’๋งŒ ์ œ์‹œ - (b) ๊ฑฐ๋ž˜๋Ÿ‰ ยฑ20% ๋ฏธ๋งŒ์€ ๋ฌด์˜๋ฏธ โ€” "์ƒ์Šน ๋™๋ ฅ ์•ฝํ™”" ๊ฐ™์€ ๊ฐ•ํ•œ ํ•ด์„ ๊ธˆ์ง€(์˜ˆ: -9% ๋ณ€๋™์ด ๋ถ€์ • ์‹ ํ˜ธ๋กœ ์žกํžˆ๋˜ ๋ฌธ์ œ) - (c) ์šฐ์„ ์ฃผ ํŠน์ดํ•ญ๋ชฉ ๋ฐ˜์˜ ํ•„์ˆ˜ โ€” `[์šฐ์„ ์ฃผ ์ •๋ณด]` ๋ธ”๋ก ์žˆ์œผ๋ฉด ํ• ์ธ์œจ์„ ๋งค์ˆ˜ ์˜๊ฒฌ ๊ทผ๊ฑฐ์— ๋ฐ˜์˜ - (d) ์˜คํƒˆ์ž ์ž๊ธฐ ์ ๊ฒ€ โ€” "์ˆœ์œ„โ†’์ˆœ์นญ", "๊ทผ๊ฑฐโ†’๊ทผ๋ก€" ๊ฐ™์€ ํ•œ๊ตญ์–ด ํ† ํฐ ๊นจ์ง ๋ฐฉ์ง€ - MA224 N/A ์ƒํƒœ / ๋‚™ํญ๊ณผ๋Œ€ failReason ์„ LLM ์ด ์ธ์ง€ํ•˜๋„๋ก 6์ฐจ์› ํ‰๊ฐ€ ๊ฐ€์ด๋“œ ๊ฐฑ์‹ . **๋ณด๋ฅ˜** (๋ณ„๋„ ์ž‘์—… ํ•„์š”): ๋ฐฐ๋‹น์ˆ˜์ต๋ฅ  fetch (Naver crawl ํ™•์žฅ), ์„นํ„ฐ ์ž๋™ ๋ณด๊ฐ•. **์‹ ๊ทœ ํŒจํ‚ค์ง•:** `astra-2.2.167.vsix`. --- ## v2.2.166 (2026-05-27) ### ๐Ÿ’น /stocks analysis โ€” ๋งค๋งค ํƒ€์ (์ง„์ž…ยท์†์ ˆยท์ต์ ˆยท๊ด€๋ง ํ•ด์ œ) ์‹ ๊ทœ ์„น์…˜ - **์‹ ๊ทœ `## ๋งค๋งค ํƒ€์ ` ์„น์…˜** ([ANALYSIS_SYSTEM_PROMPT](src/features/stocks/slashStocks.ts)) โ€” ๋งค์ˆ˜ ์˜๊ฒฌ ๋ฐ”๋กœ ์•„๋ž˜, ๋ฆฌ์Šคํฌ ์œ„. - **4๊ฐœ sub-section** (์‚ฌ์šฉ์ž ์ œ๊ณต ๋งค๋งค ๊ทœ์น™์„ raw ๋ฐ์ดํ„ฐ ๊ธฐ๋ฐ˜์œผ๋กœ ์ ์‘): 1. **๋งค์ˆ˜ ์ง„์ž… ํƒ€์ ** โ€” 3์ˆœ์œ„ ์‹œ๋‚˜๋ฆฌ์˜ค(MA20 ์ง€์ง€ / MA60 ๋ˆŒ๋ฆผ / ๋‚™ํญ๊ณผ๋Œ€+RSIโ‰ค30) ์ค‘ ํ˜„์žฌ ๊ธฐ์ˆ  ์ƒํƒœ์— ๋ถ€ํ•ฉํ•˜๋Š” ๊ฒƒ๋งŒ ์ถœ๋ ฅ. ํšŒํ”ผ ๊ถŒ์žฅ๋„๋ฉด sub-section ์ƒ๋žต. 2. **์†์ ˆ ๊ธฐ์ค€** โ€” ์ข…๊ฐ€ ๊ธฐ์ค€ ์ดํƒˆ (์žฅ์ค‘ ํ„ฐ์น˜ ๋ฏธ์ ์šฉ). ๋งค์ˆ˜ ์‹œ๋‚˜๋ฆฌ์˜ค๋ณ„ (MA20/MA60/60์ผ์ €์ ) ๊ฐ€๊ฒฉ + ์ตœ๋Œ€ ํ—ˆ์šฉ ์†์‹ค%. 3. **์ต์ ˆ ํƒ€์ ** โ€” 1์ฐจ(1๋…„ ์ตœ๊ณ ๊ฐ€ร—0.98) โ†’ 2์ฐจ(๋ผ์šด๋“œ ๋„˜๋ฒ„) โ†’ 3์ฐจ(์—…์ข… PER ๋น„๊ต, ๋ฐ์ดํ„ฐ ๋ฏธ์ˆ˜์ง‘ ๋ช…์‹œ). 4. **๊ด€๋ง ํ•ด์ œ ํŠธ๋ฆฌ๊ฑฐ** โ€” ๊ถŒ์žฅ๋„๊ฐ€ "๊ด€๋ง"์ผ ๋•Œ๋งŒ ์ถœ๋ ฅ. 4๊ฐœ ํŠธ๋ฆฌ๊ฑฐ ์ค‘ 2๊ฐœ+ ์ถฉ์กฑ ์‹œ ์ง„์ž…. - **LLM์ด raw ๋ฐ์ดํ„ฐ๋กœ ์‹ค์ œ ๊ฐ€๊ฒฉ ์ฑ„์šฐ๋„๋ก** โ€” `__์›` placeholder ๊ธˆ์ง€, ์‹ค์ œ MA๊ฐ’ยท1๋…„ ๊ณ ๊ฐ€ยท60์ผ ์ €์ ์œผ๋กœ ๊ตฌ์ฒดํ™”. ๊ถŒ์žฅ๋„/๊ธฐ์ˆ  ์ƒํƒœ์— ๋”ฐ๋ผ ์ ์‘์ ์œผ๋กœ ์ถœ๋ ฅ(๋ถ€์ ํ•ฉ ์‹œ๋‚˜๋ฆฌ์˜ค๋Š” ์ƒ๋žต). - **์‹ ๊ทœ ํŒจํ‚ค์ง•:** `astra-2.2.166.vsix`. --- ## v2.2.165 (2026-05-27) ### ๐Ÿ“‹ /youtube info โ€” 3-tier ์žฌ์„ค๊ณ„ (์ค‘๋ณต ์ œ๊ฑฐ + ๊นŠ์ด ๋‹จ์ˆœํ™” + ํ‘œ ์ œ๊ฑฐ) - **์•ž ํ„ด(2.2.164)์˜ "๋Œ€์‹œ๋ณด๋“œ ์œ„์— ์ถ”๊ฐ€" ๋ฐฉ์‹์ด ์ค‘๋ณต์„ ๋งŒ๋“ค์—ˆ๋‹ค๋Š” ์‚ฌ์šฉ์ž ํ”ผ๋“œ๋ฐฑ ์ˆ˜์šฉ.** 9๊ฐœ ์„น์…˜ โ†’ **4๊ฐœ ## ์„น์…˜ 3-tier ๊ตฌ์กฐ**๋กœ ์žฌ์„ค๊ณ„. - **์ƒˆ ๊ตฌ์กฐ** ([youtubePrompts.ts:buildInfoExtractionPrompt](src/features/datacollect/prompts/youtubePrompts.ts)): 1. **30์ดˆ ์š”์•ฝ** (skim) โ€” ํ•œ ์ค„ + ํ•ต์‹ฌ ํฌ์ธํŠธ 3๊ฐœ + ํ™”์ž ํ•œ ์ค„ ๋น„์œ . ๋ฐ”์œ ์‚ฌ๋žŒ์€ ์—ฌ๊ธฐ์„œ ๋ฉˆ์ถค. 2. **ํ•ต์‹ฌ ๊ฐœ๋… ์„ค๋ช…** (์ดํ•ด) โ€” ์˜์ƒ์ด ์‚ฌ์šฉํ•œ ์ฃผ์š” ๊ฐœ๋…ยท์šฉ์–ด 2-5๊ฐœ ์ •์˜ + ๋“ฑ์žฅ ๋งฅ๋ฝ. 3. **๊นŠ์ด ๋ถ„์„** (deep dive) โ€” ํƒ€์ž„๋ผ์ธ / ๊ฒฐ์ •์  ๋ฐœ์–ธ / ๋” ํŒŒ๊ณ ๋“ค ์งˆ๋ฌธ / ๊ตฌ์ฒด ์ˆ˜์น˜. 4. **์ •๋ฆฌ์ž ๋…ธํŠธ** (์„ ํƒ) โ€” `[์ •๋ฆฌ์ž ์ถ”๋ก ]` ๋ผ๋ฒจ ์ „์šฉ. - **์ค‘๋ณต ์ œ๊ฑฐ**: "ํ•œ ์ค„ ์š”์•ฝ"์€ 30์ดˆ ์š”์•ฝ์— ํ•œ ๋ฒˆ๋งŒ. ๊ธฐ์กด์—” ๋Œ€์‹œ๋ณด๋“œยทTL;DRยทํ•ต์‹ฌ ์ฃผ์žฅ์— ๋ถ„์‚ฐ. - **ํ‘œ โ†’ bullet**: "์‚ฌ์‹คยท๋ฐ์ดํ„ฐ" ํ‘œ๊ฐ€ ๊นจ์ง„ ์…€(`way` ๊ฐ™์€ LLM artifact)์„ ๋…ธ์ถœํ•˜๋˜ ๋ฌธ์ œ โ†’ ํ‘œ ๊ธˆ์ง€, bullet๋กœ๋งŒ, ์™„์„ฑ๋œ ํ•ญ๋ชฉ๋งŒ. - **ํ—ค๋” ์ด๋ชจ์ง€ ์ œ๊ฑฐ**: ์Šค์บ”ํ•  ๋•Œ ์‹œ์„ ์ด ๋ถ„์‚ฐ๋˜์–ด ๋‚ด์šฉ์„ ๊ฐ€๋ฆฐ๋‹ค๋Š” ํ”ผ๋“œ๋ฐฑ ์ˆ˜์šฉ. ๋ชจ๋“  ## ยท ### ํ—ค๋”์—์„œ ์ด๋ชจ์ง€ ์ œ๊ฑฐ. - **์‹ ๊ทœ ์‹œ์Šคํ…œ ์›์น™ 3๊ฑด ์ถ”๊ฐ€**: ํ—ค๋” ์ด๋ชจ์ง€ ๊ธˆ์ง€ / ํ‘œ ์‚ฌ์šฉ ์‹ ์ค‘ / ์ค‘๋ณต ๊ธˆ์ง€. - **์‹ ๊ทœ ํŒจํ‚ค์ง•:** `astra-2.2.165.vsix`. --- ## v2.2.164 (2026-05-27) ### ๐Ÿ“‹ /youtube info โ€” ์ƒ๋‹จ "๊ตฌ์กฐํ™”๋œ ์š”์•ฝ" ๋Œ€์‹œ๋ณด๋“œ ์ถ”๊ฐ€ - **์‹ ๊ทœ `## ๐Ÿ“‹ ๊ตฌ์กฐํ™”๋œ ์š”์•ฝ` ์„น์…˜**์„ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ ๋ฐ”๋กœ ์•„๋ž˜์— ์ถ”๊ฐ€ ([youtubePrompts.ts:buildInfoExtractionPrompt](src/features/datacollect/prompts/youtubePrompts.ts)). - ํ•˜์œ„ 3๊ฐœ sub-section: - **๐ŸŽฏ ํ•ต์‹ฌ 3์š”์†Œ**: ์ฃผ์ œ / ํ•ต์‹ฌ ์ฃผ์žฅ / ๊ทผ๊ฑฐยท์‚ฌ๋ก€ - **โฑ๏ธ ํƒ€์ž„๋ผ์ธ ๊ธฐ๋ฐ˜ ์š”์•ฝ**: 30๋ถ„ ์ด์ƒ ์˜์ƒ์€ 4-7๊ฐœ ๊ตฌ๊ฐ„ ์••์ถ•, ๋ฏธ๋งŒ์€ ์ƒ๋žต(`๐Ÿงญ ๊ตฌ์กฐ ์š”์•ฝ` ์ฐธ์กฐ) - **๐Ÿ“ ํ•œ ์ค„ ์š”์•ฝ + ๊ธฐ์–ตํ•  ํฌ์ธํŠธ 3~5๊ฐœ** - ๊ธฐ์กด 8๊ฐœ ์„น์…˜(`๐ŸŽฏ ํ•œ ์ค„ ์š”์•ฝ`ยท`๐Ÿ’ก ํ™”์ž ํ•œ ์ค„ ๋น„์œ `ยท`๐Ÿ“Œ ํ•ต์‹ฌ ์ฃผ์žฅ`ยท`๐Ÿ“Š ์‚ฌ์‹คยท๋ฐ์ดํ„ฐยท์ธ์šฉ`ยท`๐Ÿงญ ๊ตฌ์กฐ ์š”์•ฝ`ยท`๐Ÿ”— ์ธ์šฉ์šฉ ์นด๋“œ`ยท`โ“ ๋” ํŒŒ๊ณ ๋“ค ์งˆ๋ฌธ`ยท`๐Ÿงฉ ์ •๋ฆฌ์ž ๋…ธํŠธ`)์€ ๊ทธ๋Œ€๋กœ ์œ ์ง€ โ€” ๋Œ€์‹œ๋ณด๋“œ๋Š” *์••์ถ• ๋ฒ„์ „*, ์•„๋ž˜ ์„น์…˜๋“ค์€ *๊นŠ์ด ๋ฒ„์ „*. - ์•ฝ๊ฐ„์˜ redundancy(ํ•œ ์ค„ ์š”์•ฝ ๋‘ ๋ฒˆ ๋“ฑ์žฅ)๋Š” ์˜๋„ โ€” ๋Œ€์‹œ๋ณด๋“œ์—์„œ ๋น ๋ฅด๊ฒŒ ์žก๊ณ , ํ•„์š”ํ•˜๋ฉด ๊นŠ์ด ์„น์…˜์—์„œ ํ’€์–ด ์ฝ๋Š” dual-layer. - **์‹ ๊ทœ ํŒจํ‚ค์ง•:** `astra-2.2.164.vsix`. --- ## v2.2.163 (2026-05-27) ### ๐Ÿ“Š /stocks analysis 6์ฐจ์› ํ™•์žฅ + ์‹ ๊ทœ /stocks position - **`/stocks analysis` 6์ฐจ์›์œผ๋กœ ํ™•์žฅ** โ€” ๊ฐ€์ด๋“œ(์ฃผ์‹ ๋ถ„์„ 6๋‹จ๊ณ„) ํก์ˆ˜: - ๋ถ€์ฑ„๋น„์œจ ์ถ”๊ฐ€ (์žฌ๋ฌด ์•ˆ์ •์„ฑ ์ฐจ์› ๊ฐ•ํ™” โ€” 200% ์ดํ•˜ ์•ˆ์ „, 100% ์ดํ•˜ ์šฐ๋Ÿ‰) - **MA ์ •๋ฐฐ์—ด/์—ญ๋ฐฐ์—ด** (5/20/60/120์ผ ์ดํ‰์„  ๋ฐฐ์—ด ํŒ์ • โ€” ์ถ”์„ธ ์ฐจ์›์— ์ถ”๊ฐ€) - **RSI(14)** (Wilder's smoothing, ๊ณผ์—ดโ‰ฅ70 / ์นจ์ฒดโ‰ค30 / ์ค‘๋ฆฝ โ€” ์ง„์ž… ํƒ€์ด๋ฐ ์‹ ๊ทœ ์ฐจ์›) - LLM ์‹œ์Šคํ…œ ํ”„๋กฌํ”„ํŠธ๋„ 6์ฐจ์› + ๊ฐ ์ง€ํ‘œ ํ•ด์„ ๊ฐ€์ด๋“œ๋กœ ๊ฐฑ์‹  - ์ถ”๊ฐ€ API ํ˜ธ์ถœ ์—†์Œ โ€” ์ด๋ฏธ fetchํ•œ 1๋…„ ์‹œ์„ธ์—์„œ ๋ชจ๋‘ ๊ณ„์‚ฐ - **์‹ ๊ทœ `/stocks position [์‹ฌ๋ณผ] <์ด์ž์‚ฐ> <๋ฆฌ์Šคํฌ%> <์†์ ˆ%>`** โ€” ํฌ์ง€์…˜ ์‚ฌ์ด์ง• ๊ณ„์‚ฐ๊ธฐ: - ๊ณต์‹: `๊ถŒ์žฅ ํˆฌ์ž๊ธˆ = ์ด์ž์‚ฐ ร— ๋ฆฌ์Šคํฌ% รท ์†์ ˆ%` (๊ฐ€์ด๋“œ 5๋‹จ๊ณ„) - ์‹ฌ๋ณผ ์ฃผ๋ฉด Yahoo ํ˜„์žฌ๊ฐ€๋กœ **๋งค์ˆ˜ ๊ฐ€๋Šฅ ์ฃผ์ˆ˜**๊นŒ์ง€ ์ž๋™ ๊ณ„์‚ฐ - ๊ถŒ์žฅ ํˆฌ์ž๊ธˆ์ด ์ด์ž์‚ฐ์˜ 50% ์ดˆ๊ณผ ์‹œ ์ž…๋ ฅ๊ฐ’ ์žฌ๊ฒ€ํ†  ๊ฒฝ๊ณ  - ๋ณ„์นญ: `/stocks size` - **๋ณด๋ฅ˜ํ•œ ๊ฐ€์ด๋“œ ํ•ญ๋ชฉ** (ํ˜„์‹ค์  ํ•œ๊ณ„): PEG(์ด์ต ์„ฑ์žฅ๋ฅ  ๋ฐ์ดํ„ฐ ๋ถ€์žฌ), ์—…์ข… ํ‰๊ท  PER / 5๋…„ ์—ญ์‚ฌ์  PER(๋ณ„๋„ ๋ฐ์ดํ„ฐ์†Œ์Šค ํ•„์š”), ์‚ฌ์—… ํ•ด์ž(LLM ํ™˜๊ฐ ์œ„ํ—˜), MACD(์šฐ์„ ์ˆœ์œ„ ๋‚ฎ์Œ). - ์ƒˆ helper ([yahooClient.ts](src/features/stocks/yahooClient.ts)): `evalMaAlignment`, `evalRsi14`. - **์‹ ๊ทœ ํŒจํ‚ค์ง•:** `astra-2.2.163.vsix`. --- ## v2.2.162 (2026-05-27) ### ๐Ÿ”Ž /stocks analysis <์‹ฌ๋ณผ> โ€” ๋‹จ์ผ ์ข…๋ชฉ ์‹ฌ์ธต ๋ถ„์„ - **์‹ ๊ทœ sub-command** ([slashStocks.ts](src/features/stocks/slashStocks.ts)): ํ•œ ์ข…๋ชฉ์— ๋Œ€ํ•ด Naver ํŽ€๋”๋ฉ˜ํ„ธ fresh fetch + Yahoo 1๋…„ ์‹œ์„ธ ๊ธฐ๋ฐ˜ ๊ธฐ์ˆ  ์ง€ํ‘œ(224์ผ์„  ํšŒ๋ณต, ๋‚™ํญ๊ณผ๋Œ€) + LLM ์ข…ํ•ฉ ํ‰๊ฐ€๊นŒ์ง€ ํ•œ๋ฒˆ์—. `stocks.json` ๋ฏธ๋“ฑ๋ก ์ข…๋ชฉ๋„ ๊ฐ€๋Šฅ. - **์ฐจ์ด์ ** vs ๊ธฐ์กด `/stocks judge`: judge๋Š” stocks.json ์ €์žฅ๋œ ํŽ€๋”๋ฉ˜ํ„ธ๋งŒ ์‚ฌ์šฉํ•œ 4-criteria ํ‰๊ฐ€. analysis๋Š” fresh fetch + ์ฐจํŠธ ํŒจํ„ด + LLM ๋งค์ˆ˜๊ถŒ/๊ด€๋ง/ํšŒํ”ผ ๊ถŒ์žฅ๋„. - **์ถœ๋ ฅ ํ˜•์‹ (LLM ๊ฐ•์ œ):** `## ์ข…ํ•ฉ ํ‰๊ฐ€` 2-3๋ฌธ์žฅ / `## ๋งค์ˆ˜ ์˜๊ฒฌ` ๊ถŒ์žฅ๋„ + ๊ทผ๊ฑฐ(์ˆ˜์น˜ ์ธ์šฉ) / `## ๋ฆฌ์Šคํฌ` 1-2์ค„. - **๋ฐ์ดํ„ฐ ํˆฌ๋ช…์„ฑ:** LLM์— ๋ณด๋‚ด๋Š” raw ๋ฐ์ดํ„ฐ ์š”์•ฝ์„ ์‚ฌ์šฉ์ž์—๊ฒŒ๋„ ์ฝ”๋“œ๋ธ”๋ก์œผ๋กœ ๋จผ์ € ํ‘œ์‹œ. ๋ชจ๋ธ ์‘๋‹ต๊ณผ ๋น„๊ต ๊ฒ€์ฆ ๊ฐ€๋Šฅ. - ๋ณ„์นญ: `/stocks analyze <์‹ฌ๋ณผ>` ๋„ ๋™์ผํ•˜๊ฒŒ ๋™์ž‘. - **์‹ ๊ทœ ํŒจํ‚ค์ง•:** `astra-2.2.162.vsix`. --- ## v2.2.161 (2026-05-22) ### ๐Ÿ“ˆ /stocks discover โ€” ๋‚™ํญ๊ณผ๋Œ€ ํ‚ค์›Œ๋“œ + 224ํšŒ๋ณต ๊ฑฐ๋ž˜๋Ÿ‰ ํ™•์ธ - **์‹ ๊ทœ `๋‚™ํญ๊ณผ๋Œ€` ํ‚ค์›Œ๋“œ** ([evalDropRecovery](src/features/stocks/yahooClient.ts)): ์˜์ƒ(์ฃผ์‹๋‹จํ…Œ "์ด๋ฏธ ๋น ์ง„ ์ข…๋ชฉ + ๋ฐ”๋‹ฅ ์ฐ๊ณ  ํšŒ๋ณต")์˜ ์ •๋Ÿ‰ํ™”. ํ˜„์žฌ๊ฐ€ โ‰ค 1๋…„ ์ตœ๊ณ ๊ฐ€ ร— 0.75(25%โ†“) AND ํ˜„์žฌ๊ฐ€ โ‰ฅ 60์ผ ์ตœ์ €๊ฐ€ ร— 1.10(์ €์ ์—์„œ 10%โ†‘) โ†’ `๋‚™ํญ๊ณผ๋Œ€` +1. 224ํšŒ๋ณต(์ถ”์„ธ ์ „ํ™˜)๊ณผ๋Š” ๋‹ค๋ฅธ ๊ฐ๋„ โ€” ์•ˆ์ „๋งˆ์ง„ + ๋ฐ˜๋“ฑ ์ดˆ์ž…. - **`224ํšŒ๋ณต` ๊ฑฐ๋ž˜๋Ÿ‰ ํ™•์ธ ๊ฐ•ํ™”** ([evalMa224Recovery](src/features/stocks/yahooClient.ts)): ๊ธฐ์กด ๊ฐ€๊ฒฉ ์กฐ๊ฑด์— ๋”ํ•ด ์ตœ๊ทผ 5์ผ ํ‰๊ท  ๊ฑฐ๋ž˜๋Ÿ‰ โ‰ฅ 60์ผ ํ‰๊ท  ร— 1.2 ์š”๊ตฌ. ๊ฑฐ์ง“ ๋ŒํŒŒ(์ผ์‹œ์  ๊ฐ€๊ฒฉ ํА) ํ•„ํ„ฐ. ๊ฑฐ๋ž˜๋Ÿ‰ ๋ฐ์ดํ„ฐ ๋ถ€์กฑ ์‹œ ๊ฐ€๊ฒฉ ์กฐ๊ฑด๋งŒ์œผ๋กœ ํŒ์ •(ํด๋ฐฑ). - ์ถ”๊ฐ€ API ๋น„์šฉ ์—†์Œ โ€” `fetchYahooHistory`๊ฐ€ ์ด๋ฏธ 1๋…„ ์ผ๋ด‰์„ ๊ฐ€์ ธ์˜ค๋ฏ€๋กœ ๊ฑฐ๋ž˜๋Ÿ‰ยท1๋…„ maxยท60์ผ min ๊ณ„์‚ฐ๋งŒ ์ถ”๊ฐ€. - ๊ฒฐ๊ณผ ํ‘œ์‹œ ์˜ˆ: `ํ†ต๊ณผ (5): ROE, ์ˆ˜์ต์„ฑ, ์ €ํ‰๊ฐ€, 224ํšŒ๋ณต, ๋‚™ํญ๊ณผ๋Œ€`. - **์‹ ๊ทœ ํŒจํ‚ค์ง•:** `astra-2.2.161.vsix`. --- ## v2.2.160 (2026-05-22) ### ๐Ÿ“ˆ /stocks discover โ€” ์ €ํ‰๊ฐ€(PBRโ†“) ๊ฐ•์กฐ + 224์ผ์„  ํšŒ๋ณต ํŒจํ„ด ์ถ”๊ฐ€ - **์ €ํ‰๊ฐ€ 2๋‹จ๊ณ„ ํ‚ค์›Œ๋“œ** ([stockDiscovery.ts:evaluateKeywords](src/features/stocks/stockDiscovery.ts)): ๊ธฐ์กด `PBR`(โ‰ค1.5)๋Š” ์œ ์ง€. ์ถ”๊ฐ€๋กœ PBR โ‰ค 1.0 = `์ €ํ‰๊ฐ€`, PBR โ‰ค 0.7 = `์ดˆ์ €ํ‰๊ฐ€`. PBR ๋‚ฎ์„์ˆ˜๋ก ์ ์ˆ˜ ์ž์ฒด๊ฐ€ +1~2 ๊ฐ€์‚ฐ. - **PBR ์˜ค๋ฆ„์ฐจ์ˆœ ํƒ€์ด๋ธŒ๋ ˆ์ด์ปค**: ์ •๋ ฌ = ํ†ต๊ณผ ํ‚ค์›Œ๋“œ ์ˆ˜ desc โ†’ ๋™์  ์‹œ PBR asc. ๊ฐ™์€ ์ ์ˆ˜๋ฉด ์ €ํ‰๊ฐ€ ์ข…๋ชฉ์ด ์œ„๋กœ. - **224์ผ์„  ํšŒ๋ณต ๋ณด๋„ˆ์Šค** (`224ํšŒ๋ณต`): ์˜์ƒ(์ฃผ์‹๋‹จํ…Œ "224์ผ์„  ์•ˆ์ฐฉ = ์ถ”์„ธ ์ „ํ™˜") ๊ธฐ์ค€ ์ •๋Ÿ‰ํ™”. 1์ฐจ ํ†ต๊ณผ ํ›„๋ณด์— ํ•œํ•ด Yahoo 1๋…„ ์ผ๋ด‰ fetch โ†’ ํ˜„์žฌ ์ข…๊ฐ€ โ‰ฅ ์˜ค๋Š˜ MA224 AND ์ตœ๊ทผ 30๊ฑฐ๋ž˜์ผ ์ค‘ 5์ผ ์ด์ƒ MA224 ์•„๋ž˜์— ๋จธ๋ฌธ ์  ์žˆ์œผ๋ฉด `224ํšŒ๋ณต` ํ‚ค์›Œ๋“œ +1. ํšŒ๋ณต ์งํ›„ ์ถ”์„ธ ์ „ํ™˜ ์‹ ํ˜ธ์ธ ์ข…๋ชฉ์ด ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ์ƒ์œ„๋กœ. - **์‹ ๊ทœ ๋ชจ๋“ˆ** ([yahooClient.ts](src/features/stocks/yahooClient.ts)): `fetchYahooHistory`(1๋…„ ์ผ๋ด‰), `fetchAllHistories`(๋ฐฐ์น˜, 1์ดˆ/์‹ฌ๋ณผ throttle), `evalMa224Recovery`(rolling MA224 + ํšŒ๋ณต ํŒ์ •). - ๋น„์šฉ: 1์ฐจ ํ†ต๊ณผ ํ›„๋ณด(๋ณดํ†ต 20~50๊ฐœ)์—๋งŒ ์‹œ์„ธ fetch โ†’ +20~50์ดˆ ์ถ”๊ฐ€. ์ „์ฒด 1์ฐจํ›„๋ณด์—” ์•ˆ ๋Œ๋ฆผ. - **์‹ ๊ทœ ํŒจํ‚ค์ง•:** `astra-2.2.160.vsix`. --- ## v2.2.159 (2026-05-22) ### ๐Ÿ“ฆ ์žฌํŒจํ‚ค์ง• โ€” ๋‹ค๋ฅธ ๋จธ์‹ ์˜ 2.2.158 ์ฝ”๋“œ + chronicle ๊ฐฑ์‹ ์„ ์ด ๋จธ์‹  ์„ค์น˜๋ณธ์œผ๋กœ ๋นŒ๋“œ - ์†Œ์Šค ๋ณ€๊ฒฝ ์—†์Œ. `git pull` ๋กœ ๋ฐ›์€ 2.2.158 ์ž‘์—… ํŠธ๋ฆฌ(๋‹ค๋ฅธ ๋จธ์‹ ์˜ v2.2.64~2.2.158 ๋ˆ„์  ์ž‘์—… โ€” LM Studio ๋ฐœ๊ฒฌยท๋กœ๊ทธยทCSPยทchunked writerยทinfo prompt ๊ฐ•ํ™”ยท๋‹ต๋ณ€ ํฌ๋งท ์ •๋ฆฌยทgod-file ๋ถ„ํ•ดยทStocksยท๋Œ€ํ™” ์—ฐ์†์„ฑ ๋“ฑ)๋ฅผ ์ด ๋จธ์‹ ์šฉ `.vsix` ๋กœ ํŒจํ‚ค์ง•. - **์‹ ๊ทœ ํŒจํ‚ค์ง•:** `astra-2.2.159.vsix`. --- ## v2.2.72 (2026-05-23) ### โšก LM Studio ํ†ต์‹  hardening + ์†๋„ ๋ถ€์ŠคํŠธ ํŒฉ ํ•œ turn ์— ๋‘ ๋ผ์šด๋“œ ์ž‘์—…์„ ๋ฌถ์—ˆ๋‹ค. (A) ํ†ต์‹  ๊ฒฝ๋กœ ์•ˆ์ „๋ง 9๊ฑด + (B) ์†๋„ ๊ฐœ์„  4๊ฑด. **(A) ํ†ต์‹  hardening** - **Sampling parity SDK โ†” REST.** ๊ธฐ์กด์—” `topP/topK/minP/repeatPenalty` ๊ฐ€ SDK ๊ฒฝ๋กœ์—๋งŒ ์ ์šฉ โ†’ ํ•ธ๋“ค์ด ์ฃฝ์–ด REST ๋กœ fallback ๋˜๋ฉด ํ•œ๊ธ€ ํ† ํฐ ๊นจ์ง(`๋ถ•๊ดดโ†’๋ถ•์ `) ์žฌ๋ฐœ. ๊ณต์œ  `LmStudioSampling` + `samplingToRestBody` ๋กœ ๋‘ ๊ฒฝ๋กœ๊ฐ€ ๋™์ผ ๊ฐ’์„ ๋ณด๋‚ด๋„๋ก ํ†ต์ผ. Ollama ๋„ `options.{top_p,top_k,min_p,repeat_penalty}` ๋กœ ๊ฐ™์ด ๋ฐ›์Œ. - **์‹ ๊ทœ ์„ค์ •:** `g1nation.lmStudio.sampling.{topP=0.9, topK=20, minP=0.05, repeatPenalty=1.1}` + `g1nation.lmStudio.statsInBudget=true`. - **prediction.stats UI ๋…ธ์ถœ.** ๋งค turn ๋๋‚˜๋ฉด ctx-badge ์— `โ€ฆ ยท 32.1 tok/s ยท TTFT 0.40s` ํ‘œ์‹œ (SDK ๊ฒฝ๋กœ๋งŒ). ํˆดํŒ์— ์ถœ๋ ฅ ํ† ํฐ ์ˆ˜ / ์ด ์‹œ๊ฐ„ / stopReason ๋„ ์ถ”๊ฐ€. - **listDownloaded TTL ์บ์‹œ (60s).** ์‚ฌ์ด๋“œ๋ฐ” ๋“œ๋กญ๋‹ค์šด ์—ด ๋•Œ๋งˆ๋‹ค LM Studio ๋””์Šคํฌ walk ํ•˜๋˜ ํ˜ธ์ถœ์„ ์บ์‹ฑ. ๋นˆ ๊ฒฐ๊ณผ๋Š” ์บ์‹ฑ ์•ˆ ํ•จ (๋ฐฉ๊ธˆ ์ผ  LM Studio ๊ฐ€๋ฆฌ๋Š” ํšŒ๊ท€ ๋ฐฉ์ง€). `setBaseUrl` / `invalidateCaches()` ๊ฐ€ ์บ์‹œ ์ดˆ๊ธฐํ™”. - **Empty-response ๋ณต๊ตฌ ์ผ์›ํ™”.** `LMStudioStreamer.stream()` ์˜ attempt-2 retry ๊ฐ€ dead-handle ์—๋Ÿฌ๋ฟ ์•„๋‹ˆ๋ผ "์—๋Ÿฌ ์—†์ด 0 token" ์ผ€์ด์Šค๋„ ๋‹ค๋ฃธ. agent.ts ์˜ ์ค‘๋ณต๋œ handle-reset retry ๋ธ”๋ก (~30 LOC) ์‚ญ์ œ. REST fallback ์€ ์œ ์ง€. - **handle-dead ํŒจํ„ด ํ™•์žฅ.** `channel closed`, `WebSocket (is not open|closed|disconnected)`, `Connection (lost|reset|closed)`, `ECONNRESET`, `socket hang up` ์ถ”๊ฐ€. - **`httpToWebSocketUrl` path ์ •๋ฆฌ.** `/api/v0`, `/api/v1`, `/v1`, `/api` ๋ฅผ loop ์œผ๋กœ unwind โ€” `http://host/api/v0` โ†’ ws root ๊นŒ์ง€ ํ•œ ๋ฒˆ์—. - **service-down ์กฐ๊ธฐ break.** `createStreamingRequest` ๊ฐ€ `error.cause.code === 'ECONNREFUSED' | 'ENOTFOUND' | 'EAI_AGAIN'` ๊ฐ์ง€ ์‹œ attempt/variant/candidate ๋ฃจํ”„ ์ฆ‰์‹œ ์ข…๋ฃŒ. 12ํšŒ fetch โ†’ 1ํšŒ โ†’ ์‚ฌ์šฉ์ž ์—๋Ÿฌ ~1s. - **callAgent cutoff warn.** sub-agent SDK ํ˜ธ์ถœ๋„ `stopReason` ๊ฒ€์‚ฌ โ†’ `/maxPredicted|context|truncat/` ๋งค์นญ ์‹œ logError. ์ž˜๋ฆฐ specialist ์ถœ๋ ฅ์ด silently pipeline ์„ ์˜ค์—ผ์‹œํ‚ค๋Š” ๊ฑฐ ๋ฐฉ์ง€. **(B) ์†๋„ ๋ถ€์ŠคํŠธ** - **Speculative decoding.** ์‹ ๊ทœ ์„ค์ • `g1nation.lmStudio.draftModel` (๋นˆ ๊ฐ’ = OFF). ์ž‘์€ draft ๋ชจ๋ธ (e.g. `gemma-2b-it`) ์ง€์ • ์‹œ large ๋ชจ๋ธ 1.5~3ร— throughput. `ChatStreamRequest.draftModel` โ†’ SDK `respond({draftModel})`. main ๋ชจ๋ธ load ์งํ›„ lifecycle ์ด `unstable_preloadDraftModel` ํ˜ธ์ถœํ•ด cold-load ๋น„์šฉ ์ œ๊ฑฐ. ctx-badge ์— `spec 68%` accept-ratio ํ‘œ์‹œ (60%+ healthy, 30% ๋ฏธ๋งŒ = draft ๊ฐ€ ์ž˜๋ชป ๊ณจ๋ผ ์˜คํžˆ๋ ค ๋А๋ ค์งˆ ์ˆ˜ ์žˆ์Œ). - **Load-time ์˜ต์…˜ (8๊ฐœ).** `client.load()` ๊ฐ€ `LMStudioLoadConfig` ๋ฐ›์•„ `LLMLoadModelConfig` (GPUSetting ๋ž˜ํผ ํฌํ•จ) ์œผ๋กœ SDK ์— ์ „๋‹ฌ. - `g1nation.lmStudio.load.flashAttention` (true) โ€” long-context 10~20% - `g1nation.lmStudio.load.gpuOffloadRatio` ("max" | "off" | 0-1) - `g1nation.lmStudio.load.offloadKVCacheToGpu` (true) - `g1nation.lmStudio.load.keepModelInMemory` (true) โ€” swap-out ๋ฐฉ์ง€ - `g1nation.lmStudio.load.useFp16ForKVCache` (false) โ€” KV-cache ๋ฉ”๋ชจ๋ฆฌ ๋ฐ˜๊ฐ (VRAM ๋น ๋“ฏํ•  ๋•Œ) - `g1nation.lmStudio.load.evalBatchSize` (0 = ์—”์ง„ default) โ€” prefill ์†๋„ - **`liveStreamTokens` ๊ธฐ๋ณธ โ†’ true (โ† false).** TTFT ์ฒด๊ฐ ํ–ฅ์ƒ โ€” sanitize + `streamReplace` ๊ฐ€ ์ƒ์„ฑ ๋์— ์ตœ์ข… ๋‹ต๋ณ€์œผ๋กœ ๊ต์ฒดํ•˜๋ฏ€๋กœ control token ๋…ธ์ถœ์€ ์ž ๊น๋งŒ ๊ฐ€๋Šฅ. (memory ์˜ "sanitize-before-post handles the leak" ๊ฐ€ ๊ทผ๊ฑฐ) **์‹œ์Šคํ…œ ํ”„๋กฌํ”„ํŠธ KV-cache (item 1+5)**: ์กฐ์‚ฌ ๊ฒฐ๊ณผ ํ˜„์žฌ ordering (stable head โ†’ `[CONTEXT]` body โ†’ stable tail) ์ด ์ด๋ฏธ prefix-cache ์นœํ™”์ ์ด๋ผ ์ฝ”๋“œ ๋ณ€๊ฒฝ ์—†์Œ. ๋‹จ, agent persona-first ๋ฐฐ์น˜๋Š” small-model anchoring ์šฐ์„ ์œผ๋กœ ์œ ์ง€ โ€” KV-cache ์ž ์žฌ ์ด๋“๋ณด๋‹ค ๋‹ต๋ณ€ ํ’ˆ์งˆ์ด ์šฐ์„ . **Touched:** `src/{config,agent,extension}.ts`, `src/lmstudio/{client,streamer,lifecycleManager}.ts`, `media/sidebar.js`, `package.json` (12๊ฐœ ์‹ ๊ทœ ์„ค์ • + `liveStreamTokens` default flip), 2๊ฐœ test FakeClient ์— `listDownloadedCached` stub. 401/401 jest ํ†ต๊ณผ ยท tsc clean ยท esbuild 2.9MB. **์‹ ๊ทœ ํŒจํ‚ค์ง•:** `astra-2.2.72.vsix`. --- ## v2.2.71 (2026-05-23) ### ๐Ÿ“ฆ ์ž๋™ ๊ธฐ๋ก ์ค„ ์ „์ฒด๋ฅผ ๋„๊ตฌ โ–พ ๋ฉ”๋‰ด ์•ˆ์œผ๋กœ ์ด๋™ - **์š”์ฒญ ๋ช…ํ™•ํ™”:** v2.2.70 ์—์„œ ํ† ๊ธ€๋งŒ ๋„๊ตฌ ๋ฉ”๋‰ด์— ์ถ”๊ฐ€ํ–ˆ๋Š”๋ฐ, ์‚ฌ์šฉ์ž๊ฐ€ ์›ํ–ˆ๋˜ ๊ฑด ์‚ฌ์ด๋“œ๋ฐ” ํ•˜๋‹จ์˜ records-line ("โ— ์ž๋™ ๊ธฐ๋ก ยท filename ยท ๊ธฐ๋ก โ–พ") **์ค„ ์ „์ฒด** ๋ฅผ ๋„๊ตฌ ๋ฉ”๋‰ด ์•ˆ์œผ๋กœ ์˜ฎ๊ธฐ๋Š” ๊ฒƒ. - **์ˆ˜์ •:** `media/sidebar.html` ์˜ `
` ํ†ต์งธ๋กœ ์‚ญ์ œ. ๊ทธ ์•ˆ์— ์žˆ๋˜ ๋ชจ๋“  ์š”์†Œ (์ž๋™ ๊ธฐ๋ก status, recordsLatest, chronicleRecordSel, openChronicleRecordBtn, refreshChronicleRecordsBtn, openDesignerBtn) ๋ฅผ ๋„๊ตฌ โ–พ ๋“œ๋กญ๋‹ค์šด ์•ˆ์œผ๋กœ ํก์ˆ˜. ๋„๊ตฌ ๋ฉ”๋‰ด๋Š” `hdr-menu-wide` ๋กœ ๋ณ€๊ฒฝ. - **์ƒˆ ๋ฉ”๋‰ด ๋ ˆ์ด์•„์›ƒ:** ๋„๊ตฌ โ–พ ํด๋ฆญ ์‹œ - "์ž๋™ ๊ธฐ๋ก" ์„น์…˜ โ€” ํ† ๊ธ€ / ์ตœ๊ทผ ์ €์žฅ ๊ธฐ๋ก status / ๊ธฐ๋ก selector / ์„ ํƒ ๊ธฐ๋ก ์—ด๊ธฐ / ์ƒˆ๋กœ๊ณ ์นจ / ํด๋” ์—ด๊ธฐ - "๋„๊ตฌ" ์„น์…˜ โ€” ๊ทผ๊ฑฐ ์ถ”์  JSON ๋ณด๊ธฐ / ์›๋ณธ ๋‹ต๋ณ€์„ ๋‘๋‡Œ์— ์ €์žฅ / ๋‘๋‡Œ ๋™๊ธฐํ™” - **JS ์•ˆ์ „์„ฑ:** ๋ชจ๋“  element ID ๋Š” ์œ ์ง€ํ–ˆ์œผ๋ฏ€๋กœ ๊ธฐ์กด sidebar.js ํ•ธ๋“ค๋Ÿฌ๋Š” ๊ทธ๋Œ€๋กœ ์ž‘๋™. `renderChronicleAutoToggle` ๋งŒ ์‚ด์ง ์ˆ˜์ • โ€” chronicleAutoStatus ๊ฐ€ ์ด์ œ ์ž์‹ (status-dot ยท recordsLatest) ์„ ๊ฐ€์ง„ ์ปจํ…Œ์ด๋„ˆ๋ผ `textContent` ์ง์ ‘ ํ• ๋‹น์ด ์ž์‹์„ ์ง€์šฐ๋Š” ํšŒ๊ท€๋ฅผ ๋ง‰๊ธฐ ์œ„ํ•ด opacity / title ๋งŒ ๊ฐฑ์‹ ํ•˜๋„๋ก ๋ณ€๊ฒฝ. - **์‚ฌ์ด๋“œ๋ฐ” ๊ณต๊ฐ„:** records-line ์ค„ ํ•œ ์ค„ ์ œ๊ฑฐ โ†’ context bar ์™€ chat ๋ณธ๋ฌธ ์‚ฌ์ด noise ๊ฐ์†Œ. - **์‹ ๊ทœ ํŒจํ‚ค์ง•:** `astra-2.2.71.vsix`. --- ## v2.2.70 (2026-05-23) ### ๐ŸŽš ์ž๋™ ๊ธฐ๋ก On/Off ํ† ๊ธ€ (๋„๊ตฌ ๋ฉ”๋‰ด) - **์ถ”๊ฐ€:** ์‚ฌ์ด๋“œ๋ฐ” records-line ์˜ "์ž๋™ ๊ธฐ๋ก" ํ‘œ์‹œ๋ฅผ ๋„๊ณ  ์ผค ์ˆ˜ ์žˆ๋Š” ํ† ๊ธ€. ์œ„์น˜๋Š” **๋„๊ตฌ โ–พ** ๋“œ๋กญ๋‹ค์šด ์ฒซ ํ•ญ๋ชฉ (`์ž๋™ ๊ธฐ๋ก: ์ผœ์ง / ๊บผ์ง`). - **์‹ ๊ทœ ์„ค์ •:** `g1nation.chronicleAutoRecord` (๊ธฐ๋ณธ `true`). ํ† ๊ธ€ ํด๋ฆญ ์‹œ ์ฆ‰์‹œ VS Code Global ์„ค์ •์— ์˜๊ตฌ ์ €์žฅ โ€” ๋‹ค์Œ ์„ธ์…˜์—๋„ ์œ ์ง€. - **gating:** `_autoWriteChronicleAfterPrompt` ์ง„์ž… ์‹œ `getConfig().chronicleAutoRecord === false` ๋ฉด early return. ์ž๋™ ์ €์žฅ๋งŒ ๋ฉˆ์ถ”๊ณ , ์ˆ˜๋™ ๊ธฐ๋ก (๋„๊ตฌ ๋ฉ”๋‰ด์˜ ๋‹ค๋ฅธ ๊ธฐ๋ก ํ•ญ๋ชฉ, `/wiki` ๋“ฑ) ์€ ๊ทธ๋Œ€๋กœ ๋™์ž‘. - **UI ํ”ผ๋“œ๋ฐฑ:** OFF ์ผ ๋•Œ records-line ์˜ "์ž๋™ ๊ธฐ๋ก" ๋ผ๋ฒจ์ด "์ž๋™ ๊ธฐ๋ก (๊บผ์ง)" + dim opacity, ์ตœ๊ทผ ๊ธฐ๋ก ๋ผ๋ฒจ๋„ dim ์ฒ˜๋ฆฌํ•ด ํ•œ๋ˆˆ์— ์ƒํƒœ ํŒŒ์•…. ํด๋ฆญ ๋ฐ˜์‘์„ฑ์„ ์œ„ํ•ด ๋‚™๊ด€์  ๊ฐฑ์‹  ํ›„ ์„œ๋ฒ„ ์‘๋‹ต์œผ๋กœ ๋ณด์ •. - **๋ฉ”์‹œ์ง€:** ์‹ ๊ทœ webview โ†” extension ๋ฉ”์‹œ์ง€ `setChronicleAutoRecord` / `getChronicleAutoRecord` / `chronicleAutoRecordStatus`. `chronicleHandlers.ts` ์—์„œ ๋ผ์šฐํŒ…. - **์‹ ๊ทœ ํŒจํ‚ค์ง•:** `astra-2.2.70.vsix`. --- ## v2.2.69 (2026-05-23) ### ๐Ÿ’พ ๋Œ€ํ™” ํžˆ์Šคํ† ๋ฆฌ โ€” ์Šฌ๋ผ์ด๋”ฉ ์œˆ๋„์šฐ + ๋ชจ๋“œ ์ „ํ™˜ bridge - **ํ˜„ํ™ฉ ํ™•์ธ:** "ํžˆ์Šคํ† ๋ฆฌ ์ „์—ญ ๋‹จ์ผ ๊ด€๋ฆฌ" ์š”๊ตฌ๋Š” ์ด๋ฏธ ์ถฉ์กฑ โ€” `AgentExecutor.chatHistory` ๋‹จ์ผ ์ธ์Šคํ„ด์Šค์ด๋ฉฐ ์—์ด์ „ํŠธ/ํšŒ์‚ฌ/๋ฉ€ํ‹ฐ์—์ด์ „ํŠธ ๋ชจ๋“œ ์ „ํ™˜์€ history ๋ฅผ ๋น„์šฐ์ง€ ์•Š๋Š”๋‹ค. ๋ช…์‹œ์  `/newChat` ์ด๋‚˜ ์„ธ์…˜ ์‚ญ์ œ ๋•Œ๋งŒ reset. - **์ˆ˜์ • 1 โ€” sliding window ์š”์•ฝ.** ๊ธฐ์กด `trimHistoryToBudget` ์€ ์˜ค๋ž˜๋œ ๋ฉ”์‹œ์ง€๋ฅผ ๋‹จ์ˆœํžˆ `[์ด์ „ ๋Œ€ํ™” N๊ฐœ ... ์ƒ๋žต๋จ]` count ๋งˆ์ปค๋กœ ๋Œ€์ฒด โ†’ ๋ชจ๋ธ์ด "์ด์ „์— ๋ฌด์Šจ ์–˜๊ธฐ๋ฅผ ํ–ˆ๋Š”์ง€" ๋ชจ๋ฆ„. ์ด์ œ๋Š” dropped ๋ฉ”์‹œ์ง€ ๋ฐฐ์—ด์„ marker factory ๋กœ ๊ฐ™์ด ๋„˜๊ธฐ๊ณ , agent.ts `buildDroppedHistorySummary()` ๊ฐ€ ์ถ”๊ฐ€ LLM ํ˜ธ์ถœ ์—†์ด heuristic ์œผ๋กœ (a) ๊ฐ user prompt ์ฒซ ๋ฌธ์žฅ (b) ๊ฐ assistant ๋‹ต๋ณ€ ์ฒซ ๋ฌธ์žฅ (R1 conclusion-first ๊ฐ€์ •) ๋งŒ ๋ฝ‘์•„ `U1: ... / A1: ... / U2: ...` ํ˜•์‹์˜ ํ•œ system ๋ฉ”์‹œ์ง€๋กœ ์••์ถ•. 8ํ„ด ์ด์ƒ์ด๋ฉด ๊ฐ€์žฅ ์˜ค๋ž˜๋œ ์ ˆ๋ฐ˜์€ ํ•œ ์ค„๋กœ ์ถ•์•ฝ. - **์ˆ˜์ • 2 โ€” ๋ชจ๋“œ ์ „ํ™˜ bridge.** `AgentExecutor._lastModeSignature` ๋กœ (agent skill, multiAgent, company mode, brain) ์˜ ํ•ด์‹œ๋ฅผ ์ถ”์ . handlePrompt ์ง„์ž… ์‹œ ์ง์ „ ๊ฐ’๊ณผ ๋‹ค๋ฅด๋ฉด system prompt ์— `[MODE TRANSITION BRIDGE] ์ด์ „ ๋ชจ๋“œ / ํ˜„์žฌ ๋ชจ๋“œ / ์ง์ „ ๋Œ€ํ™” ์ฃผ์ œ` ํ•œ ๋ธ”๋ก์„ ๋ผ์›€. chatHistory ๋Š” ๊ทธ๋Œ€๋กœ๋ผ ์‚ฌ์šฉ์ž์—๊ฒ ๋Œ€ํ™” ์—ฐ์†์ด๊ณ , ๋ชจ๋ธ์€ ์ƒˆ ํŽ˜๋ฅด์†Œ๋‚˜/ํฌ๋งท์„ ๋”ฐ๋ฅด๋ฉด์„œ๋„ ์ง์ „ ๋งฅ๋ฝ์„ ์žŠ์ง€ ์•Š๋Š”๋‹ค. `clearHistory` / `resetConversation` ์—์„œ signature ๋„ ํ•จ๊ป˜ ์ดˆ๊ธฐํ™”ํ•ด ์ƒˆ ์„ธ์…˜ ์ฒซ ๋ฉ”์‹œ์ง€์— spurious bridge ๊ฐ€ ๋ผ์ง€ ์•Š๊ฒŒ ํ•จ. - **์‹œ๊ทธ๋‹ˆ์ฒ˜ ๋ณ€๊ฒฝ:** `trimHistoryToBudget` ์˜ `makeMarker` ๊ฐ€ `(droppedCount, droppedMessages)` ๋‘ ์ธ์ž๋ฅผ ๋ฐ›๋Š”๋‹ค. ํ˜ธ์ถœ๋ถ€ (`agent.ts`) ์™€ ๋‹จ์œ„ ํ…Œ์ŠคํŠธ (`contextManager.test.ts`) ๊ฐฑ์‹ . - **์‹ ๊ทœ ํŒจํ‚ค์ง•:** `astra-2.2.69.vsix`. --- ## v2.2.68 (2026-05-23) ### ๐Ÿ“ ๋‹ต๋ณ€ ํ˜•์‹ โ€” 7๊ฐœ hard rules - **๋ณ€๊ฒฝ:** ๋‹ต๋ณ€ ํฌ๋งท ๊ทœ์น™์„ ์‚ฌ์šฉ์ž๊ฐ€ ์ง€์ •ํ•œ 7๊ฐœ hard rule ๋กœ ์ „๋ฉด ๊ต์ฒด. ๊ธฐ์กด "๊ธด ๋‹ต๋ณ€์—” ํ•ต์‹ฌ ์š”์•ฝ ๋ธ”๋ก + ์ƒ์„ธ ์„ค๋ช… + ์ œ์•ˆ" ์˜ 3-section ํ…œํ”Œ๋ฆฟ์€ ํ๊ธฐ. - R1. ์ฒซ ๋ฌธ์žฅ์— ๊ฒฐ๋ก  (no ์ธ์‚ฟ๋ง, no "๋ถ„์„ํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค", no "ํ•ต์‹ฌ ์š”์•ฝ" ๋ผ๋ฒจ) - R2. ์„น์…˜ ์ตœ๋Œ€ 3๊ฐœ - R3. ๊ฐ™์€ ๋‚ด์šฉ์„ ๋‘ ๋ฒˆ ๋งํ•˜์ง€ ์•Š๋Š”๋‹ค - R4. ๋ณผ๋“œ๋Š” ์ „์ฒด ๋‹ต๋ณ€์—์„œ 3๊ฐœ ์ดํ•˜ - R5. ์ถ”๊ฐ€ ์ •๋ณด ์—†์ด ํŒ๋‹จ ๊ฐ€๋Šฅํ•˜๋ฉด ๋ฐ”๋กœ ์‹คํ–‰ - R6. ์งˆ๋ฌธ์€ 1๊ฐœ๋งŒ โ€” (a) ๋ฐฉํ–ฅ์ด ๋‘ ๊ฐˆ๋ž˜๋กœ ๊ฐˆ๋ฆฌ๊ณ  ์‚ฌ์šฉ์ž ์˜๋„๋ฅผ ์•Œ ์ˆ˜ ์—†์„ ๋•Œ, ๋˜๋Š” (b) ๋น„๊ฐ€์—ญ ์ž‘์—… ์ง์ „ - R7. ์ถ”์ธก ๊ฐ€๋Šฅํ•˜๋ฉด ์ถ”์ธก+์‹คํ–‰ํ•˜๋˜ ๊ฐ€์ • ํ•œ ์ค„ ๋ช…์‹œ ("๊ฐ€์ •: ...") - **์ ์šฉ ๋ฒ”์œ„:** ๋‹จ์ผ ์—์ด์ „ํŠธ ๊ฒฝ๋กœ (`BASE_SYSTEM_PROMPT [OUTPUT FORMAT]`) + ๋ฉ€ํ‹ฐ ์—์ด์ „ํŠธ ์ตœ์ข… ๋‹จ๊ณ„ (`SynthesizerAgent` persona) ์–‘์ชฝ์— ๋™์ผ ๊ทœ์น™ ์ฃผ์ž…. ๋‘ ๊ฒฝ๋กœ ๋ชจ๋‘ ๊ฐ™์€ ํ˜•์‹์œผ๋กœ ๋‹ต๋ณ€ํ•˜๋„๋ก ๋ณด์žฅ. - **๋ถ€์ˆ˜ ์ •๋ฆฌ:** `[FOLLOW-UP QUESTION RULES]` ์„น์…˜์€ R6 ์— ํก์ˆ˜๋ผ ์ œ๊ฑฐ. `[ENGINEERING STANCE]` ์˜ "Give the verdict first, then explain tradeoffs" ๋„ R1 ๊ณผ ์ค‘๋ณต์ด๋ผ ์ •๋ฆฌ. - **์‹ ๊ทœ ํŒจํ‚ค์ง•:** `astra-2.2.68.vsix`. --- ## v2.2.67 (2026-05-23) ### ๐Ÿง  ๋‘๋‡Œ ์ถ”๊ฐ€/์ˆ˜์ •/์‚ญ์ œ ์ •์ƒํ™” - **๋ฌธ์ œ:** v2.2.66 ์ดํ›„ ์‹ ๊ณ ๋œ ๋‘ ๊ฐ€์ง€ ํšŒ๊ท€. 1. ๋‘๋‡Œ "์ถ”๊ฐ€" ํ›„ dropdown ์— ์ƒˆ brain ์ด ๋“ค์–ด๊ฐ€๊ธด ํ•˜๋Š”๋ฐ ์„ ํƒ๋œ ํ‘œ์‹œ๋Š” ๋งˆ์ง€๋ง‰ ์˜ต์…˜์ธ `+ Add New Brain...` ์œผ๋กœ ๊ตณ์–ด๋ฒ„๋ฆผ โ†’ ์‚ฌ์šฉ์ž์—๊ฒ "์ด๋ฆ„์ด add new brain ์œผ๋กœ ๋ฐ”๋€œ" ์œผ๋กœ ๋ณด์ž„. 2. ๊ทธ ์ƒํƒœ์—์„œ "์ˆ˜์ •"/"์‚ญ์ œ" ๋ฒ„ํŠผ์ด ์นจ๋ฌต โ€” ํด๋ฆญํ•ด๋„ ์•„๋ฌด ์ผ ์•ˆ ์ผ์–ด๋‚จ. - **์›์ธ 1 โ€” selected ์ ์šฉ ์ˆœ์„œ:** brainProfiles ํ•ธ๋“ค๋Ÿฌ๊ฐ€ `option.selected = true` ๋ฅผ `appendChild` ์ง์ „์— ๊ฑฐ๋Š” ํŒจํ„ด์ด๋ผ ์ผ๋ถ€ Chromium webview ๊ฐ€ ๋ฌด์‹œ. ๊ฒฐ๊ณผ์ ์œผ๋กœ dropdown selectedIndex ๊ฐ€ ๋งˆ์ง€๋ง‰ ์˜ต์…˜ (`+ Add New Brain...`) ์— ๋จธ๋ฌด๋ฆ„. - **์›์ธ 2 โ€” `brainSel.value === 'new'` ์ž ๊ธˆ:** ์‚ฌ์šฉ์ž๊ฐ€ dropdown ์˜ `+ Add New Brain...` ์˜ต์…˜์„ ์ง์ ‘ ํด๋ฆญํ•˜๊ฑฐ๋‚˜, ํด๋” ์„ ํƒ ๋ชจ๋‹ฌ์„ ์ทจ์†Œํ•˜๋ฉด `brainSel.value` ๊ฐ€ `'new'` ๋กœ ๊ตณ์–ด๋ฒ„๋ฆผ. ์ˆ˜์ •/์‚ญ์ œ ๋ฒ„ํŠผ onclick ์ฒซ ์ค„ `if (brainSel.value === 'new') return;` ๊ฐ€ silently early-return โ†’ ์ˆ˜์ • ์•ˆ ๋จ. - **์ˆ˜์ • 1 โ€” selected ์ ์šฉ ์ˆœ์„œ ๋ณ€๊ฒฝ.** ์˜ต์…˜์„ ๋‹ค ๋„ฃ์€ *ํ›„์—* `brainSel.value = activeBrainId` ๋กœ ํ•œ ๋ฒˆ์— selection ์ ์šฉ. appendChild ์ „ `o.selected = true` ํŒจํ„ด ์ œ๊ฑฐ. ์ด์ „์— `'new'` ๋กœ ๊ตณ์–ด์žˆ๋˜ ๊ฐ’๋„ ํ™•์‹คํžˆ ๋ฎ์–ด์“ด๋‹ค. - **์ˆ˜์ • 2 โ€” 'new' ํด๋ฆญ ์ฆ‰์‹œ ๋ณต์›.** `brainSel.onchange` ๊ฐ€ `'new'` ๋ฅผ ๊ฐ์ง€ํ•˜๋ฉด `addBrain` ๋ฉ”์‹œ์ง€๋ฅผ ๋ณด๋ƒ„๊ณผ *๋™์‹œ์—* dropdown ์„ ์ง์ „ ์œ ํšจ ์„ ํƒ(`brainSel.dataset.lastSelected`)์œผ๋กœ ์ฆ‰์‹œ ๋˜๋Œ๋ฆผ. ์‚ฌ์šฉ์ž๊ฐ€ ํด๋” ์„ ํƒ์„ ์ทจ์†Œํ•ด๋„ dropdown ์ด `'new'` ๋กœ ๊ตณ์ง€ ์•Š๋Š”๋‹ค. - **์ˆ˜์ • 3 โ€” Edit/Delete ํด๋ฐฑ.** ๋‘ ๋ฒ„ํŠผ์ด ๋งŒ์•ฝ dropdown ์ด `'new'` ์ธ ์ˆœ๊ฐ„์—๋„ ์ž‘๋™ํ•˜๋„๋ก ์ง์ „ ์œ ํšจ ์„ ํƒ ๋˜๋Š” ์ฒซ ์‹ค์ œ ์˜ต์…˜์œผ๋กœ ํด๋ฐฑ. ๋” ์ด์ƒ silent early-return ์—†์Œ. - **์‹ ๊ทœ ํŒจํ‚ค์ง•:** `astra-2.2.67.vsix`. --- ## v2.2.66 (2026-05-23) ### ๐Ÿง  ๋‘๋‡Œ(์ง€์‹ ํด๋”) ๋“œ๋กญ๋‹ค์šด ํšŒ๊ท€ ์ˆ˜์ • - **๋ฌธ์ œ:** ์‚ฌ์ด๋“œ๋ฐ” ์ปจํ…์ŠคํŠธ ๋ฐ”์˜ ๋‘๋‡Œ ์„ ํƒ์ž๊ฐ€ ๊ฐ‘์ž๊ธฐ `+ Add New Brain...` ํ•˜๋‚˜๋งŒ ๋ณด์ด๋Š” ์ƒํƒœ. readyBar ์—๋Š” `Brain 5407` ์ฒ˜๋Ÿผ brain ์ž์ฒด๋Š” ์ •์ƒ ์ธ์‹๋˜๋Š”๋ฐ dropdown ๋งŒ ๋น”. - **์›์ธ ์ถ”์ •:** webview ์˜ `ready` ํ•ธ๋“œ์…ฐ์ดํฌ ์ฒด์ธ (`_sendBrainStatus โ†’ _sendBrainProfiles โ†’ _sendSessionList โ†’ _sendModels โ†’ _sendChronicleProjects โ†’ _restoreActiveSessionIntoView โ†’ _sendReadyStatus`) ๋„์ค‘ ํ•œ ๋‹จ๊ณ„๊ฐ€ throw ํ•˜๋ฉด ๊ทธ ๋’ค๊ฐ€ ํ†ต์งธ๋กœ ์•ˆ ๋„๋Š” ๊ตฌ์กฐ. ๋˜๋Š” ๋นˆ profiles ๋ฐฐ์—ด ๋ฉ”์‹œ์ง€๊ฐ€ ํ•œ ๋ฒˆ์ด๋ผ๋„ ๋„์ฐฉํ•˜๋ฉด ๊ธฐ์กด dropdown ์˜ต์…˜์„ ๊ทธ๋Œ€๋กœ ๋น„์›Œ๋ฒ„๋ฆฌ๋Š” ํ•ธ๋“ค๋Ÿฌ. - **์ˆ˜์ • 1 โ€” sidebar.js ๋ฐฉ์–ด:** `brainProfiles` ๋ฉ”์‹œ์ง€์˜ `profiles` ๊ฐ€ ๋นˆ ๋ฐฐ์—ด/undefined ์ด๋ฉด ๊ธฐ์กด dropdown ์˜ต์…˜์„ ๋ณด์กดํ•˜๊ณ  warn ๋กœ๊ทธ๋งŒ ๋‚จ๊ธด๋‹ค. ์ž˜๋ชป๋œ ์ƒํƒœ๋กœ ์˜ต์…˜์„ 0๊ฐœ๋กœ ๋งŒ๋“ค์–ด `+ Add New Brain...` ๋งŒ ๋‚จ๊ธฐ๋Š” ํšŒ๊ท€ ์ฐจ๋‹จ. `case` ๋ธ”๋ก์„ `{...}` scope ๋กœ ๊ฐ์‹ธ ํ–ฅํ›„ const ๋ช… ์ถฉ๋Œ๋„ ์˜ˆ๋ฐฉ. - **์ˆ˜์ • 2 โ€” ์ดˆ๊ธฐ setup ์ด์ค‘ ๋ณด์žฅ:** sidebarProvider.ts view ์ƒ์„ฑ ์‹œ์ ์— `_restoreActiveSessionIntoView` + `_sendReadyStatus` ์™ธ์— `_sendBrainProfiles` / `_sendAgentsList` / `_sendModels` ๋„ ์ง์ ‘ ํ•œ ๋ฒˆ ํ‘ธ์‹œ. 'ready' ์ฒด์ธ์ด ๊นจ์ ธ๋„ dropdown ์€ ์‚ด์•„ ์žˆ์Œ. - **์ˆ˜์ • 3 โ€” ์ง„๋‹จ ๋กœ๊ทธ:** `_sendBrainProfiles` ๊ฐ€ ํ˜ธ์ถœ๋  ๋•Œ๋งˆ๋‹ค `profiles=N activeBrainId=X` ๋ฅผ logInfo. ์žฌ๋ฐœ ์‹œ Output โ†’ Astra ์ฑ„๋„๋งŒ ๋ณด๋ฉด ์›์ธ ์ฆ‰์‹œ ํŒ๋ณ„. - **์‹ ๊ทœ ํŒจํ‚ค์ง•:** `astra-2.2.66.vsix`. --- ## v2.2.65 (2026-05-23) ### ๐Ÿงผ ๋งˆํฌ๋‹ค์šด ๋งˆ์ปค 2์ฐจ sanitize โ€” enforcer ์žฌ์ฃผ์ž…๊นŒ์ง€ ์ฐจ๋‹จ - **๋ฌธ์ œ:** v2.2.64 ์—์„œ `stripMarkdownFormatting` ์„ `cleanedVisible` (๋ชจ๋ธ raw ์ถœ๋ ฅ ์งํ›„) ์—๋งŒ ์ ์šฉํ–ˆ๋Š”๋ฐ, ๊ทธ ์ดํ›„ ๋‹จ๊ณ„์ธ `enforceLocalPathReviewAnswer` ๊ฐ€ sanitize ๋œ ๋‹ต๋ณ€ ์•ž์— `## ๊ฒฝ๋กœ ํ™•์ธ ๊ฒฐ๊ณผ` ํ—ค๋”๋ฅผ ํ•˜๋“œ์ฝ”๋”ฉ์œผ๋กœ ๋‹ค์‹œ prepend โ†’ ํ™”๋ฉด์—๋Š” ๋งˆ์ปค๊ฐ€ ๊ทธ๋Œ€๋กœ ๋…ธ์ถœ. `## ๊ฐ„๋‹จ ์š”์•ฝ`, `## ๊ฐ•์ `, `## ๊ทผ๊ฑฐ`, `## ๋‹ค์Œ ์•ก์…˜` ๋“ฑ ~20๊ณณ์—์„œ ๊ฐ™์€ ํŒจํ„ด. - **์ˆ˜์ •:** `agent.ts` `finalAssistantContent` (webview / chatHistory ์— ๋“ค์–ด๊ฐ€๋Š” ์ง„์งœ ์ตœ์ข… ๋ฌธ์ž์—ด) ๋‹จ๊ณ„์— sanitizer 2์ฐจ ํŒจ์Šค๋ฅผ ์ถ”๊ฐ€. 1์ฐจ(๋ชจ๋ธ ์ถœ๋ ฅ) + 2์ฐจ(enforcer ์ถœ๋ ฅ) ์ด์ค‘ ๋ฐฉ์–ด๋กœ ์–ด๋–ค ์ฝ”๋“œ ๊ฒฝ๋กœ์—์„œ `##`/`**` ๊ฐ€ prepend ๋˜์–ด๋„ ๋””์Šคํ”Œ๋ ˆ์ด ์ง์ „์— ๋ชจ๋‘ ๋ฒ—๊ฒจ์ง„๋‹ค. - **์‹ ๊ทœ ํŒจํ‚ค์ง•:** `astra-2.2.65.vsix`. --- ## v2.2.64 (2026-05-23) ### ๐Ÿชถ Plain-text ์ถœ๋ ฅ + ๊ธด ๋‹ต๋ณ€ ๊ฐ•์ œ ์š”์•ฝ - **๋ฌธ์ œ:** ์ž‘์€ ๋กœ์ปฌ ๋ชจ๋ธ์ด ํ•™์Šต๋œ ์Šต๊ด€์œผ๋กœ `## ๋‹ค์Œ ํ•œ ์ˆ˜`, `**` ๊ฐ•์กฐ ๋งˆ์ปค๋ฅผ ๊ทธ๋Œ€๋กœ ๋…ธ์ถœ. ์–ด๋–ค ๋‹ต๋ณ€์—” ๋ผ๋ฒจ๋งŒ ์žˆ๊ณ  ๋ณธ๋ก ์œผ๋กœ ๊ณง์žฅ ๋“ค์–ด๊ฐ€์„œ ์‚ฌ์šฉ์ž๊ฐ€ ํ˜„ํ™ฉ์„ ๋น ๋ฅด๊ฒŒ ํŒŒ์•…ํ•˜๊ธฐ ์–ด๋ ค์›€. - **์ˆ˜์ • 1 โ€” ํ›„์ฒ˜๋ฆฌ sanitizer.** `responseRecovery.ts` ์— `stripMarkdownFormatting(text)` ์ถ”๊ฐ€. ์ฝ”๋“œ ๋ธ”๋ก/์ธ๋ผ์ธ ์ฝ”๋“œ๋Š” ๋ณด์กดํ•˜๊ณ  ์ค„ ์‹œ์ž‘ `#{1,6}\s+` ํ—ค๋” ๋งˆ์ปค, `**bold**` / `__bold__`, ๋‹จ์ผ `*๊ฐ•์กฐ*`, blockquote `> `, asterisk ๋ถˆ๋ฆฟ `* ` ๋งŒ ์ œ๊ฑฐ. ๋ผ๋ฒจ ํ…์ŠคํŠธ(`ํ•ต์‹ฌ ์š”์•ฝ`, `๋‹ค์Œ ํ•œ ์ˆ˜`)๋Š” ๊ทธ๋Œ€๋กœ ์œ ์ง€. - **์ˆ˜์ • 2 โ€” Synthesizer ๊ฐ•์ œ ๊ทœ์น™.** Synthesizer ํŽ˜๋ฅด์†Œ๋‚˜์— `[FORMAT โ€” PLAIN TEXT ONLY, NO MARKDOWN]` ๋ธ”๋ก๊ณผ `[STRUCTURE]` ๋ธ”๋ก ์ถ”๊ฐ€. **๋‹ต๋ณ€์ด ~4๋ฌธ์žฅ / ~400์ž ๋ฅผ ๋„˜์œผ๋ฉด ๋ฐ˜๋“œ์‹œ `ํ•ต์‹ฌ ์š”์•ฝ` ๋ธ”๋ก(2~4 bullets)์„ ๋‹ต๋ณ€ ๋งจ ์•ž์— ๋„ฃ๋Š”๋‹ค.** ์งง์€ ๋‹ต๋ณ€์€ ๊ทธ๋Œ€๋กœ. - **์ˆ˜์ • 3 โ€” BASE_SYSTEM_PROMPT ์ •๋น„.** ๊ธฐ์กด `[OUTPUT FORMAT]` ์˜ `## ํ•ต์‹ฌ ์š”์•ฝ`, `## ์ƒ์„ธ ์„ค๋ช…` ๊ฐ™์€ ๋งˆํฌ๋‹ค์šด ํ—ค๋” ์˜ˆ์‹œ โ†’ bare label (์˜ˆ: `ํ•ต์‹ฌ ์š”์•ฝ`) ๋กœ ๊ต์ฒด. `[STRICT GLOBAL RULES]` ์— `[NO MARKDOWN MARKERS]` ๋ช…๋ฌธํ™”. ๋‹จ์ผ ์—์ด์ „ํŠธ ๊ฒฝ๋กœ๋„ plain text ์ถœ๋ ฅ. - **์ˆ˜์ • 4 โ€” review-evaluation ๊ฐ€์ด๋“œ ์ •๋น„.** `1. ## ํ•œ ์ค„ ํŒ๋‹จ` ๊ฐ™์€ markdown-prefix ๋ผ๋ฒจ โ†’ `1) ํ•œ ์ค„ ํŒ๋‹จ` ์œผ๋กœ ๊ต์ฒด. ๋งˆํฌ๋‹ค์šด ๋งˆ์ปค๊ฐ€ prompt ๋‹จ๊ณ„์—์„œ ๋ชจ๋ธ์— ํ•™์Šต๋˜์ง€ ์•Š๋„๋ก. - **์ˆ˜์ • 5 โ€” Drafter ํŽ˜๋ฅด์†Œ๋‚˜ ์ •๋น„.** ์„น์…˜ ๋ผ๋ฒจ๋„ plain text. Synthesizer๊ฐ€ ๋ฐ›๋Š” ์ž…๋ ฅ์ด ๊นจ๋—ํ•ด์•ผ ์ตœ์ข… ์ถœ๋ ฅ๋„ ๊นจ๋—. - **์–‘์ชฝ ๊ฒฝ๋กœ ์ ์šฉ.** ๋‹จ์ผ ์—์ด์ „ํŠธ(`agent.ts` line ~1189) + multi-agent (`finalReport` ์ง์ „) ๋‘ ๊ณณ ๋ชจ๋‘์—์„œ `outputFormat === 'plain'` ์ด๋ฉด sanitizer ํ†ต๊ณผ. `chatHistory` ์—๋„ ์ •์ œ๋ณธ๋งŒ ์ €์žฅ โ†’ ๋‹ค์Œ ํ„ด ์ปจํ…์ŠคํŠธ์—์„œ ๋งˆ์ปค๊ฐ€ ์žฌํ•™์Šต๋˜์ง€ ์•Š์Œ. - **์‹ ๊ทœ ์„ค์ •:** `g1nation.outputFormat` (`plain` ๊ธฐ๋ณธ / `markdown` opt-out). ### ๐Ÿงฉ 5๋‹จ๊ณ„ ํŒŒ์ดํ”„๋ผ์ธ (Planner โ†’ Researcher โ†’ Reflector โ†’ Drafter โ†’ Synthesizer) + ๊น”๋”ํ•œ ์ŠคํŠธ๋ฆผ - **๋ฌธ์ œ:** ์ž‘์€ ๋กœ์ปฌ ๋ชจ๋ธ(์˜ˆ: gemma 4 e2b/e4b)์ด ์ปจํ…์ŠคํŠธ ํ•œ๊ณ„ ๋•Œ๋ฌธ์— ํ•œ ๋ฒˆ์— ๋‹ต์„ ๋๋‚ด๋ ค๋‹ค EOS/์ž˜๋ฆผ ๋ฐœ์ƒ. ๋˜ multi-agent ๋ชจ๋“œ์ผ ๋•Œ ์ฑ„ํŒ… ๋ณธ๋ฌธ์— `> **[Planner]** ...` ๊ฐ™์€ ๋‹จ๊ณ„ ๋ฉ”์‹œ์ง€๊ฐ€ ๋ณธ๋ฌธ์— ์„ž์—ฌ ์‚ฌ์šฉ์ž์—๊ฒŒ ๋‹ต๋‹ตํ•จ. ์ผ๋ถ€ ์‘๋‹ต์—์„œ `<|channel|>thought ...` ๊ฐ™์€ control token์ด ์งง๊ฒŒ ๋…ธ์ถœ. - **์ˆ˜์ • 1 โ€” Synthesizer ๋‹จ๊ณ„ ์ถ”๊ฐ€ (5๋ฒˆ์งธ).** Drafter(=๊ธฐ์กด Writer)๊ฐ€ 1์ฐจ ์ดˆ์•ˆ๋งŒ ๋น ๋ฅด๊ฒŒ ์ƒ์„ฑํ•˜๊ณ , **Synthesizer**๊ฐ€ ์ž‘์€ draft๋งŒ ๋ฐ›์•„ ๋„์ž… ํ•œ ์ค„ยท์„น์…˜ ํ๋ฆ„ยท๊ฒฐ๋ก ์„ ์ •๋ฆฌ. ์ž…๋ ฅ์ด ๊ฐ€๋ฒผ์›Œ ์ž‘์€ ๋ชจ๋ธ๋กœ๋„ ํ•œ ๋ฒˆ์— ์ฒ˜๋ฆฌ ๊ฐ€๋Šฅ. ์‹ ๊ทœ ํด๋ž˜์Šค `SynthesizerAgent` (`src/agents/factory.ts`), `AgentEngine` ์ƒ์„ฑ์ž 4๋ฒˆ์งธ ํŒŒ๋ผ๋ฏธํ„ฐ, `PipelineStage` ์— `synthesizer` ์ถ”๊ฐ€. - **์ˆ˜์ • 2 โ€” ์ž๋™ ๋ฐœ๋™ ํ™•์žฅ.** ๊ธฐ์กด ํŠธ๋ฆฌ๊ฑฐ๋Š” prompt > 180์ž + ํ‚ค์›Œ๋“œ์ผ ๋•Œ๋งŒ โ†’ ์ž‘์€ ๋ชจ๋ธ์ผ ๋•Œ๋„ single-agent ๋กœ ๊ฐ€๋‹ค ํญ์‚ฌ. ์‹ ๊ทœ `g1nation.workflow.multiAgentMode` (`auto`/`always`/`off`) ์—์„œ **`auto` ๊ธฐ๋ณธ๊ฐ’:** (a) ๋ชจ๋ธ โ‰ค4B (b) prompt ๊ฐ€ ์ปจํ…์ŠคํŠธ์˜ 30% ์ด์ƒ (c) "์ฝ”๋“œ ๋ฆฌ๋ทฐ/์‹ฌ์ธต ๋ถ„์„/๋ณด๊ณ ์„œ" ๋“ฑ ํ‚ค์›Œ๋“œ (d) ์‚ฌ์šฉ์ž๊ฐ€ `multiAgentEnabled` ๋ช…์‹œ์  ON โ€” ์ค‘ ํ•˜๋‚˜๋งŒ ๋งŒ์กฑํ•ด๋„ 5๋‹จ๊ณ„ ๋ฐœ๋™. ์ธ์‚ฌยท12์ž ๋ฏธ๋งŒ prompt ๋Š” ์ œ์™ธ. - **์ˆ˜์ • 3 โ€” ๋‹จ๊ณ„ ๋ฉ”์‹œ์ง€๋ฅผ ์ฑ„ํŒ… ๋ณธ๋ฌธ์—์„œ ๋ถ„๋ฆฌ.** ์ง„ํ–‰ ์ƒํƒœ(`> **[Researcher]** ...`)๋ฅผ ์ฑ„ํŒ… ๋ฒ„๋ธ”์— ํ˜๋ฆฌ๋˜ ์ฝ”๋“œ ์ œ๊ฑฐ. ๋Œ€์‹  ์‹ ๊ทœ webview message `workflowStage` ๊ฐ€ ์‚ฌ์ด๋“œ๋ฐ” ์ƒ๋‹จ์˜ `statusLabel + thinkingBar` ํ•œ ์ค„์—๋งŒ ํ‘œ์‹œ โ†’ "์ƒ๊ฐ ๋‹จ๊ณ„๊ฐ€ ๋ณธ๋ฌธ์— ๊ณ„์† ๋ณด์ž„" ๋‹ต๋‹ตํ•จ ์ œ๊ฑฐ. ๋ผ๋ฒจ๋„ `โ‘  ๊ณ„ํš โ†’ โ‘ก ์ž๋ฃŒ ์ˆ˜์ง‘ โ†’ โ‘ข ์ž๊ธฐ ๊ฒ€์ฆ โ†’ โ‘ฃ ์ดˆ์•ˆ ์ž‘์„ฑ โ†’ โ‘ค ์ตœ์ข… ์ •๋ฆฌ` ํ•œ๊ตญ์–ด + ๋ฒˆํ˜ธ๋กœ ํ†ต์ผ. - **์ˆ˜์ • 4 โ€” ๋ผ์ด๋ธŒ ํ† ํฐ ์ŠคํŠธ๋ฆฌ๋ฐ ๊ธฐ๋ณธ OFF.** ์‹ ๊ทœ `g1nation.liveStreamTokens` (๊ธฐ๋ณธ `false`): ํ† ํฐ์„ ๋‚ด๋ถ€์—์„œ๋งŒ ๋ˆ„์ ํ•˜๊ณ  `extractVisibleFinal` sanitize ๋๋‚œ ์ตœ์ข… ๋‹ต๋ณ€๋งŒ ํ•œ ๋ฒˆ์— ํ‘œ์‹œ โ†’ Harmony `<|channel|>thought`/`` ๋งˆ์ปค๊ฐ€ ์ž ์‹œ๋ผ๋„ ํ™”๋ฉด์— ๋…ธ์ถœ๋˜๋Š” ๋ˆ„์„ค ์›์ฒœ ์ฐจ๋‹จ. `true` ๋กœ ๋‘๋ฉด legacy ๋ผ์ด๋ธŒ ์ŠคํŠธ๋ฆฌ๋ฐ ๋ณต์›. - **์‹ ๊ทœ ์„ค์ • 4๊ฐœ:** `g1nation.workflow.synthesizerEnabled` (๊ธฐ๋ณธ true), `g1nation.workflow.multiAgentMode` (auto/always/off, ๊ธฐ๋ณธ auto), `g1nation.workflow.autoCtxFractionThreshold` (๊ธฐ๋ณธ 0.30), `g1nation.liveStreamTokens` (๊ธฐ๋ณธ false). - **์†Œํ”„ํŠธ ํŽ˜์ผ ๋ณด์žฅ:** Synthesizer๊ฐ€ ๋นˆ ์ถœ๋ ฅ/์˜ˆ์™ธ๋ฅผ ๋‚ด๋„ ๋ฏธ์…˜์„ ๋ง‰์ง€ ์•Š๊ณ  Drafter ์ดˆ์•ˆ์„ ๊ทธ๋Œ€๋กœ ์ตœ์ข… ๋‹ต๋ณ€์œผ๋กœ ์‚ฌ์šฉ. Reflector์™€ ๋™์ผํ•œ ํŒจํ„ด. - **์‹ ๊ทœ ํŒจํ‚ค์ง•:** `astra-2.2.64.vsix`. --- ## v2.2.63 (2026-05-22) ### ๐ŸŽš๏ธ ํ•œ๊ตญ์–ด ์˜คํƒ€ ์ตœ์†Œํ™” โ€” ์ฑ„ํŒ… Temperature ์„ค์ • + anti-glitch ์ƒ˜ํ”Œ๋ง - **๋ฌธ์ œ:** ์ฑ„ํŒ… ๋ถ„์„ ๋‹ต๋ณ€์— ํ•œ๊ตญ์–ด ์˜คํƒ€(`๋ถ•๊ดด`โ†’`๋ถ•์ `, `ํ•ต์‹ฌ`โ†’`ํ•ต์ `, `ํ…์ŠคํŠธ`โ†’`ํ…๋ก`)๊ฐ€ ์žฆ์Œ. ํ† ํฐ ๋‹จ์œ„ ์ƒ˜ํ”Œ๋ง glitch. - **์›์ธ:** ๋ฉ”์ธ ์ฑ„ํŒ… ๊ฒฝ๋กœ๊ฐ€ `temperature 0.7`(์ฐฝ์ž‘์šฉ)์— `top_p`ยท`top_k`ยท`min_p`ยท`repeat_penalty`๋ฅผ **ํ•˜๋‚˜๋„ ์•ˆ ๋ณด๋ƒ„**. 2.2.54์˜ anti-glitch ์ƒ˜ํ”Œ๋ง์€ ์Šฌ๋ž˜์‹œ ๋ช…๋ น์—๋งŒ ์ ์šฉ๋ผ ์žˆ์—ˆ์Œ. - **์ˆ˜์ • 1 โ€” ์ฑ„ํŒ… ์ƒ˜ํ”Œ๋ง ๊ฐ•ํ™”.** LM Studio SDK ํ˜ธ์ถœ์— `topP 0.9`ยท`topK 20`ยท`minP 0.05`ยท`repeatPenalty 1.1` ์ถ”๊ฐ€. ์ €ํ™•๋ฅ  ์˜ค๋‹ต ํ† ํฐ์„ ์ž˜๋ผ๋‚ด ํ•œ ๊ธ€์ž ์˜ค๋ฅ˜ยท๋”๋“ฌ์Œ(`๊ฒƒ์ž…๋‹ˆ๋‹ค์„œ์ž…๋‹ˆ๋‹ค`)์„ ์–ต์ œ. - **์ˆ˜์ • 2 โ€” ์ฑ„ํŒ… ๊ธฐ๋ณธ temperature 0.7 โ†’ 0.3.** ๋ถ„์„ยท์—…๋ฌดํ˜• ๋‹ต๋ณ€์—์„œ ์˜ค๋‹ต ํ† ํฐ ์ฑ„ํƒ์„ ํฌ๊ฒŒ ์ค„์ž„. - **์‹ ๊ทœ ์„ค์ • `g1nation.chatTemperature`** (๊ธฐ๋ณธ 0.3, 0~2). **Astra Settings ํŒจ๋„ '๊ณ ๊ธ‰' ์„น์…˜**์—์„œ ์กฐ์ ˆ ๊ฐ€๋Šฅ โ€” ๋‚ฎ์ถœ์ˆ˜๋ก ์˜คํƒ€ยทํ™˜๊ฐ์ด ์ค„๊ณ  ์•ˆ์ •์ , ๋†’์ผ์ˆ˜๋ก ํ‘œํ˜„์ด ๋‹ค์–‘. - **ํ•œ๊ณ„:** `๋ถ•์ `์ฒ˜๋Ÿผ ๋ฉ€์ฉกํ•œ ํ•œ๊ธ€ ๋‘ ๊ธ€์ž๋กœ ๋ณด์ด๋Š” ๊นจ์ง์€ ์‚ฌํ›„ ๊ต์ •์ด ๋ถˆ๊ฐ€ โ€” ๊ทผ๋ณธ ํ•ด๊ฒฐ์€ ์–‘์žํ™” ๋“ฑ๊ธ‰ ์ƒํ–ฅ(Q4โ†’Q6/Q8) ๋˜๋Š” ํ•œ๊ตญ์–ด๊ฐ€ ๊ฐ•ํ•œ ๋ชจ๋ธ ์‚ฌ์šฉ. - **์‹ ๊ทœ ํŒจํ‚ค์ง•:** `astra-2.2.63.vsix`. --- ## v2.2.62 (2026-05-22) ### ๐Ÿงน ๋ชจ๋ธ ์ถœ๋ ฅ ๋ถ•๊ดด(degeneration) ๋ฐฉ์–ด โ€” ๊ฐ€๋…์„ฑ ๋ณดํ˜ธ - **๋ฌธ์ œ:** ๊ธด ์„ธ์…˜์˜ ๋ถ„์„ ๋‹ต๋ณ€์—์„œ โ‘ ๊ฐ™์€ ๋ถ„์„์ด ํ†ต์งธ๋กœ ๋‘ ๋ฒˆ ์ƒ์„ฑ๋จ โ‘ก๋ฐ‘์ค„ `___` ์ˆ˜๋ฐฑ ๊ฐœ ๋“ฑ ๋ฌธ์ž ๋ฒฝ โ‘ข`(Note: I am acting as ...)` ๋ฉ”ํƒ€ ๋…ธํŠธ ๋ฐ˜๋ณต โ‘ฃ๋‚ด๋ถ€ ์ง€์‹œ๋ฌธ `Candidate records for this discussion...` ๋ˆ„์ถœ โ‘ค`[ํ•ต์‹ฌ ํ™•์ธ ์งˆ๋ฌธ]`ยท`(์งˆ๋ฌธ ์˜๋„: โ€ฆ)` ๋ˆ„์ถœ. ๋งˆํฌ๋‹ค์šด/ํ…Œ์ด๋ธ”์ด ๊นจ์ ธ ๋ Œ๋”๋ง ๋ถˆ๊ฐ€. - **์›์ธ:** ์†Œํ˜• ๋กœ์ปฌ ๋ชจ๋ธ์ด ๊ธด ์ปจํ…์ŠคํŠธ์—์„œ ๋ถ•๊ดด. ํŠนํžˆ auto-continuation์ด "์ด์–ด์„œ ์“ฐ๋ผ"๋Š” ์ง€์‹œ๋ฅผ ๋ฌด์‹œํ•˜๊ณ  ๋‹ต๋ณ€์„ ์ฒ˜์Œ๋ถ€ํ„ฐ **์žฌ์ƒ์„ฑ** โ†’ `mergeContinuationParts`๊ฐ€ ์ค‘๋ณต์„ ๋ชป ๊ฑธ๋Ÿฌ ํ†ต์งธ๋กœ ์ด์–ด ๋ถ™์ž„. - **์ˆ˜์ • 1 โ€” ์žฌ์‹œ์ž‘ ๊ฐ์ง€.** continuation ๊ฒฐ๊ณผ๊ฐ€ ๊ธฐ์กด ๋‹ต๋ณ€๊ณผ ๊ฐ™์€ ๋„์ž…๋ถ€๋กœ ์‹œ์ž‘ํ•˜๋ฉด(์•ž๋ถ€๋ถ„ 12์ž+ ์ผ์น˜) "์ด์–ด์“ฐ๊ธฐ"๊ฐ€ ์•„๋‹Œ "์žฌ์‹œ์ž‘"์œผ๋กœ ํŒ์ •ํ•ด **๋ฒ„๋ฆผ**. ๋ถ„์„์ด ๋‘ ๋ฒˆ ๋‚˜์˜ค๋Š” ๋ฌธ์ œ ์ œ๊ฑฐ. - **์ˆ˜์ • 2 โ€” degeneration ์ •๋ฆฌ ํŒจ์Šค.** ์ตœ์ข… ์ถœ๋ ฅ์—์„œ ๋ฌธ์ž ๋ฒฝ(๊ฐ™์€ ๊ธฐํ˜ธ 8๊ฐœ+), `(Note: โ€ฆ)` ๋ฉ”ํƒ€ ๋…ธํŠธ, `Candidate recordsโ€ฆ` ๋‚ด๋ถ€ ์ง€์‹œ๋ฌธ, `(์งˆ๋ฌธ ์˜๋„: โ€ฆ)`ยท`[ํ•ต์‹ฌ ํ™•์ธ ์งˆ๋ฌธ]` ๋ˆ„์ถœ, ์—ฐ์† ์ค‘๋ณต ๋ฌธ๋‹จ์„ ์ œ๊ฑฐ. ๋ชจ๋ธ์ด ๋ถ•๊ดดํ•ด๋„ ๋‹ต๋ณ€์€ ์ฝ์„ ์ˆ˜ ์žˆ๊ฒŒ ์œ ์ง€. - **ํ•œ๊ณ„:** ํ•œ๊ธ€-ํ•œ๊ธ€ ํ† ํฐ ๊นจ์ง(`๋ถ•๊ดด`โ†’`๋ถ•์ `, `ํ•ต์‹ฌ`โ†’`ํ•ต์ `)์€ ๋ฉ€์ฉกํ•œ ๋‹จ์–ด์ฒ˜๋Ÿผ ๋ณด์—ฌ ํƒ์ง€ ๋ถˆ๊ฐ€ โ€” ์ด๋Š” ๋ชจ๋ธ ์ž์ฒด ํ•œ๊ณ„. ๊ธด ์„ธ์…˜์—์„œ๋Š” `/newChat`์œผ๋กœ ์ดˆ๊ธฐํ™” ๊ถŒ์žฅ. - **์‹ ๊ทœ ํŒจํ‚ค์ง•:** `astra-2.2.62.vsix`. --- ## v2.2.61 (2026-05-22) ### ๐Ÿ” ์ถœ๋ ฅ ์—†๋Š” ์•ก์…˜์—” 2๋ฒˆ์งธ LLM ํ˜ธ์ถœ ์ƒ๋žต โ€” "๋นˆ ์‘๋‹ต" ๊ทผ๋ณธ ์›์ธ ์ œ๊ฑฐ - **๋ฌธ์ œ:** `git ์ปค๋ฐ‹ํ•ด์ค˜` ํ•œ ๋ฒˆ์— LLM์ด 2๋ฒˆ ํ˜ธ์ถœ๋จ โ€” โ‘ `` ์•ก์…˜์„ ๋ฑ‰๋Š” ํ˜ธ์ถœ, โ‘ก๊ฒฐ๊ณผ๋ฅผ ์ •๋ฆฌํ•˜๋Š” continuation ํ˜ธ์ถœ. 2๋ฒˆ์งธ๊ฐ€ ๋นˆ ์‘๋‹ต(`eosFound`)์œผ๋กœ ์‹คํŒจ. - **์›์ธ:** `run_command`๋Š” ํ„ฐ๋ฏธ๋„ ์ถœ๋ ฅ์„ ์บก์ฒ˜ํ•˜์ง€ ์•Š์•„ ๋Œ€ํ™”์— ์ฃผ์ž…ํ•˜๋Š” ๋‚ด์šฉ์ด ์—†๋Š”๋ฐ๋„, ASTRA๋Š” continuation์—์„œ 26K+ ํ† ํฐ ์ „์ฒด ์ปจํ…์ŠคํŠธ๋ฅผ ๋‹ค์‹œ ์‹ค์–ด "๊ฒฐ๊ณผ๋ฅผ ๋ณด๊ณ  ๋‹ตํ•˜๋ผ"๋Š” ๋ฌด์˜๋ฏธํ•œ 2๋ฒˆ์งธ ํ˜ธ์ถœ์„ ํ•จ. ๋นˆ์•ฝํ•œ ๋กœ์ปฌ ๋ชจ๋ธ์ด 81% ์ฐฌ ์ปจํ…์ŠคํŠธ์—์„œ ๋ถ•๊ดด(์ฒซ ํ† ํฐ๋ถ€ํ„ฐ EOS). ํƒ€์ด๋ฐ race๊ฐ€ ์•„๋‹ˆ๋ผ ๋ถˆํ•„์š”ํ•˜๊ฒŒ ๋ฌด๊ฑฐ์šด 2๋ฒˆ์งธ ํ˜ธ์ถœ์ด ์›์ธ. - **์ˆ˜์ •:** ์•ก์…˜์ด ๋ชจ๋ธ์ด ํ•ด์„ํ•  ๋‚ด์šฉ์„ ์‹ค์ œ๋กœ ์ฃผ์ž…ํ–ˆ๋Š”์ง€(`read_file`/`list_files`/`read_brain`/`read_sheet`๋Š” ์‹œ์Šคํ…œ ๋ฉ”์‹œ์ง€ ์ฃผ์ž…, `run_command`ยทํŒŒ์ผ ์ƒ์„ฑ/์ˆ˜์ •/์‚ญ์ œ๋Š” ์ฃผ์ž… ์—†์Œ) ํŒ์ •. **์ฃผ์ž…์ด ์—†์œผ๋ฉด continuation LLM ํ˜ธ์ถœ์„ ์ƒ๋žต**ํ•˜๊ณ  ๊ฒฐ์ •๋ก ์  ํ™•์ • ๋ฉ”์‹œ์ง€("์‹คํ–‰ํ•œ ์ž‘์—…: โ€ฆ")๋งŒ ์ถœ๋ ฅ. ์ฝ๊ธฐ ๊ณ„์—ด ์•ก์…˜์—” continuation ์œ ์ง€. - ํšจ๊ณผ: `run_command`ยทํŒŒ์ผ ์“ฐ๊ธฐ ํ›„ ๋นˆ ์‘๋‹ต์ด ์‚ฌ๋ผ์ง€๊ณ , ๋” ๋น ๋ฅด๊ณ (๋ถˆํ•„์š”ํ•œ 26K ํ† ํฐ ํ˜ธ์ถœ ์ œ๊ฑฐ) ์‹ค์ œ ์‹คํ–‰๋œ ๋ช…๋ น์„ ๊ทธ๋Œ€๋กœ ํ™•์ธ ๊ฐ€๋Šฅ. - **์‹ ๊ทœ ํŒจํ‚ค์ง•:** `astra-2.2.61.vsix`. --- ## v2.2.60 (2026-05-22) ### ๐Ÿ”ง `&&` ๋ช…๋ น ์ฒด์ด๋‹ โ€” ์ฝ”๋“œ ๋ ˆ๋ฒจ์—์„œ PowerShell ๋ฌธ๋ฒ•์œผ๋กœ ์ž๋™ ๋ณ€ํ™˜ - **๋ฌธ์ œ:** v2.2.59์—์„œ ํ”„๋กฌํ”„ํŠธ๋กœ "`&&` ์“ฐ์ง€ ๋ง๋ผ"๊ณ  ์ง€์‹œํ–ˆ์œผ๋‚˜, ๋ชจ๋ธ์ด ์—ฌ์ „ํžˆ `cd ... && git add . && git commit ... && git push`๋ฅผ ์ถœ๋ ฅ โ†’ PowerShell 5.1์—์„œ `'&&' ํ† ํฐ์€ ์˜ฌ๋ฐ”๋ฅธ ๋ฌธ ๊ตฌ๋ถ„ ๊ธฐํ˜ธ๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค` ํŒŒ์„œ ์˜ค๋ฅ˜๋กœ **๋ช…๋ น ์ „์ฒด๊ฐ€ ์‹คํ–‰ ์‹คํŒจ**. - **์›์ธ:** ๋ชจ๋“  git/npm ํŠœํ† ๋ฆฌ์–ผ์ด `&&`๋ฅผ ์“ฐ๋ฏ€๋กœ, ์‹œ์Šคํ…œ ํ”„๋กฌํ”„ํŠธ ๊ทœ์น™๋งŒ์œผ๋กœ๋Š” ์†Œํ˜• ๋กœ์ปฌ ๋ชจ๋ธ์˜ `&&` ์ถœ๋ ฅ์„ ์‹ ๋ขฐ์„ฑ ์žˆ๊ฒŒ ๋ง‰์„ ์ˆ˜ ์—†์Œ. - **์ˆ˜์ •:** `sanitizeCommand`๊ฐ€ ํ„ฐ๋ฏธ๋„๋กœ ๋ณด๋‚ด๊ธฐ ์ง์ „ **`&&` ์ฒด์ธ์„ PowerShell ์กฐ๊ฑด๋ถ€ ์ฒด์ธ์œผ๋กœ ๊ฒฐ์ •๋ก ์  ๋ณ€ํ™˜**. `A && B && C` โ†’ `A; if ($?) { B; if ($?) { C } }`. `$?`๋กœ ๋‹จ์ถ• ํ‰๊ฐ€(short-circuit)๋ฅผ ๋ณด์กด โ€” ์˜ˆ: `cd` ์‹คํŒจ ์‹œ `git`์ด ์—‰๋šฑํ•œ ๋””๋ ‰ํ„ฐ๋ฆฌ์—์„œ ์‹คํ–‰๋˜์ง€ ์•Š์Œ. ๋”ฐ์˜ดํ‘œ ์•ˆ์˜ `&&`(์ปค๋ฐ‹ ๋ฉ”์‹œ์ง€ ๋“ฑ)๋Š” ๋ถ„๋ฆฌ ๋Œ€์ƒ์—์„œ ์ œ์™ธ. - ์ด์ œ ๋ชจ๋ธ์ด `&&`๋ฅผ ์ถœ๋ ฅํ•ด๋„ git add/commit/push ๋‹ค๋‹จ๊ณ„ ๋ช…๋ น์ด ์ •์ƒ ์‹คํ–‰๋จ. - **์‹ ๊ทœ ํŒจํ‚ค์ง•:** `astra-2.2.60.vsix`. --- ## v2.2.59 (2026-05-22) ### ๐Ÿฉน ๊ธด ๋Œ€ํ™”์—์„œ "๋นˆ ์‘๋‹ต" ์ฐจ๋‹จ โ€” ์ถœ๋ ฅ ํ† ํฐ ์˜ˆ์‚ฐ ํ™•๋ณด - **๋ฌธ์ œ:** ๊ธด ์„ธ์…˜(์˜ˆ: 34๊ฐœ ๋ฉ”์‹œ์ง€, ~29.6K ํ† ํฐ)์—์„œ ๋ชจ๋ธ์ด ๋นˆ ์‘๋‹ต์„ ๋ฐ˜ํ™˜ํ•˜๊ณ  "AI ์—”์ง„์ด ๋นˆ ์‘๋‹ต์„ ๋ฐ˜ํ™˜ํ–ˆ์Šต๋‹ˆ๋‹ค / Output budget: 1,073 tokens" ์˜ค๋ฅ˜ ์ถœ๋ ฅ. - **์›์ธ:** ๋Œ€ํ™” ๊ธฐ๋ก ์••์ถ•(`trimHistoryToBudget`)์ด ์ถœ๋ ฅ์šฉ์œผ๋กœ **๋‹จ 512ํ† ํฐ(`minOutputTokens`)๋งŒ ์˜ˆ์•ฝ**ํ–ˆ์Œ. ๊ทธ๋ž˜์„œ 32K ์œˆ๋„์šฐ๊ฐ€ ๊ฑฐ์˜ ๋‹ค ์ฐฐ ๋•Œ๊นŒ์ง€ ํ”„๋กฌํ”„ํŠธ๊ฐ€ ์ž๋ผ๋„๋ก ํ—ˆ์šฉ โ†’ ๋‹ต๋ณ€์— ~1K ํ† ํฐ๋งŒ ๋‚จ์Œ. gemma 4B-active ๊ฐ™์€ ์†Œํ˜•/MoE ๋กœ์ปฌ ๋ชจ๋ธ์€ ์ด ์••๋ฐ•์—์„œ ์ฒซ ํ† ํฐ๋ถ€ํ„ฐ EOS๋ฅผ ๋ฑ‰์–ด **๋นˆ ์‘๋‹ต**์„ ๋ƒ„. - **์ˆ˜์ •:** ๊ธฐ๋กยท์‹œ์Šคํ…œ ํ”„๋กฌํ”„ํŠธ๋ฅผ ์ž๋ฅด๊ธฐ ์ „์— **์‹ค์ œ ๋‹ต๋ณ€์šฉ ์˜ˆ์‚ฐ(`preferredOutputReserve`)์„ ์ปจํ…์ŠคํŠธ์˜ ~10%, ์ตœ์†Œ 2048ํ† ํฐ ํ™•๋ณด**(์ƒํ•œ์€ `maxOutputTokens`)ํ•˜๋„๋ก ๋ณ€๊ฒฝ. ์ด์ œ ํ”„๋กฌํ”„ํŠธ๊ฐ€ ํ•ญ์ƒ ๋‹ต๋ณ€ ๊ณต๊ฐ„์„ ๋‚จ๊ธฐ๊ณ  ์ž˜๋ ค, 32K ๋ชจ๋ธ์—์„œ๋„ ์ถœ๋ ฅ ์˜ˆ์‚ฐ์ด 3K+ ๋ณด์žฅ๋จ. `minOutputTokens`(512)๋Š” ์ ˆ๋Œ€ ํ•˜ํ•œ clamp ์šฉ๋„๋กœ๋งŒ ์œ ์ง€. - **์ถ”๊ฐ€:** `[EXECUTION RULE]`์— PowerShell ์ฒด์ด๋‹ ๊ทœ์น™ ๋ช…์‹œ โ€” ๋ช…๋ น ์—ฐ๊ฒฐ์€ `;` ์‚ฌ์šฉ, `&&` ๊ธˆ์ง€(PowerShell 5.1 ๊ตฌ๋ฌธ ์˜ค๋ฅ˜). git add/commit/push ๊ฐ™์€ ๋‹ค๋‹จ๊ณ„ ๋ช…๋ น์ด ํ„ฐ๋ฏธ๋„์—์„œ ์ •์ƒ ์‹คํ–‰๋จ. - **์‹ ๊ทœ ํŒจํ‚ค์ง•:** `astra-2.2.59.vsix`. --- ## v2.2.58 (2026-05-22) ### ๐Ÿ“‹ ๋‹ต๋ณ€์€ "ํ•ต์‹ฌ ์š”์•ฝ ๋จผ์ €, ์ƒ์„ธ ์•„๋ž˜" โ€” ํ•œ๋ˆˆ์— ๋“ค์–ด์˜ค๋Š” ์ถœ๋ ฅ ํฌ๋งท - **๋ฌธ์ œ:** ๋‹ต๋ณ€ ๋‚ด์šฉ ํ€„๋ฆฌํ‹ฐ๋Š” ์ข‹์œผ๋‚˜ ๋ถ„๋Ÿ‰์ด ๊ธธ์–ด ํ•œ๋ˆˆ์— ์•ˆ ๋“ค์–ด์˜ด. ๊ฒŒ๋‹ค๊ฐ€ ์š”์•ฝ(`## ์š”์•ฝ`)์ด ๋งจ ์œ„๊ฐ€ ์•„๋‹ˆ๋ผ **๋งจ ์•„๋ž˜**์— ์ถœ๋ ฅ๋˜๊ณ , `## ## ์š”์•ฝ`์ฒ˜๋Ÿผ ํ—ค๋”ฉ ์ ‘๋‘์‚ฌ๊ฐ€ ์ค‘๋ณต๋˜๋ฉฐ, ์ด๋ฏธ ๊ธˆ์ง€๋œ "ํ•ต์‹ฌ ํ™•์ธ ์งˆ๋ฌธ" ์„น์…˜์ด ๋ˆ„์ถœ๋จ. - **์›์ธ:** `[OUTPUT FORMAT]`์ด "๊ธฐ์ˆ  ๋ถ„์„/์•„ํ‚คํ…์ฒ˜/ํŠธ๋Ÿฌ๋ธ”์ŠˆํŒ…/์ „๋žต ๊ธฐํš์ผ ๋•Œ๋งŒ" 3์„น์…˜์„ ์“ฐ๋ผ๋Š” **๋ชจํ˜ธํ•œ ์นดํ…Œ๊ณ ๋ฆฌ ๊ฒŒ์ดํŠธ**๋ผ, ์ผ๋ฐ˜ ์ƒ๋‹ดํ˜• ์งˆ๋ฌธ์—์„œ ๋ชจ๋ธ์ด ํฌ๋งท์„ ์ œ๋ฉ‹๋Œ€๋กœ ํ•ด์„ํ•จ. - **์ˆ˜์ • 1 โ€” ๊ธธ์ด ๊ฒŒ์ดํŠธ.** ์นดํ…Œ๊ณ ๋ฆฌ ๋Œ€์‹  **๊ธธ์ด ๊ธฐ์ค€**์œผ๋กœ ์ „ํ™˜: ๋‹ต๋ณ€์ด ~4๋ฌธ์žฅ์„ ๋„˜์œผ๋ฉด ๋ฌด์กฐ๊ฑด `## ํ•ต์‹ฌ ์š”์•ฝ`(๋ถˆ๋ฆฟ 2~4๊ฐœ, ์ „์ฒด๋ฅผ ๊ด€ํ†ตํ•˜๋Š” ์Šค์บ” ๊ฐ€๋Šฅํ•œ ์š”์•ฝ)์„ **๋งจ ์œ„**์— ์ถœ๋ ฅํ•˜๊ณ  ๊ทธ ์•„๋ž˜ `## ์ƒ์„ธ ์„ค๋ช…`. ์š”์•ฝ ์•ž ์ธํŠธ๋กœ ๋ฌธ๋‹จ ๊ธˆ์ง€. ์งง์€ ๋‹ต๋ณ€์€ ํ—ค๋”ฉ ์—†์ด ๋ฐ”๋กœ ๋‹ต๋ณ€. - **์ˆ˜์ • 2 โ€” ํ—ค๋”ฉ ๊ทœ์น™.** ๋ชจ๋“  ๋งˆํฌ๋‹ค์šด ํ—ค๋”ฉ์€ ์ •ํ™•ํžˆ `## ` ํ•˜๋‚˜๋กœ ์‹œ์ž‘(`## ##` ์ค‘๋ณต ๊ธˆ์ง€). - **์ˆ˜์ • 3 โ€” ํ›„์† ์งˆ๋ฌธ ๊ทœ์น™ ๊ฐ•ํ™”.** ํ›„์† ์งˆ๋ฌธ์€ ํ•œ ๋ฌธ์žฅยทํ•œ ์ค„ยท๋ผ๋ฒจ ์—†์Œ. ์„น์…˜ ํ—ค๋”ฉยท"์งˆ๋ฌธ ์˜๋„" ์„ค๋ช…ยท๋ณต์ˆ˜ ์งˆ๋ฌธ ๊ธˆ์ง€ โ†’ "ํ•ต์‹ฌ ํ™•์ธ ์งˆ๋ฌธ" ์„น์…˜ ๋ˆ„์ถœ ์ฐจ๋‹จ. - **์‹ ๊ทœ ํŒจํ‚ค์ง•:** `astra-2.2.58.vsix`. --- ## v2.2.57 (2026-05-22) ### ๐Ÿš€ ์‹คํ–‰ ์š”์ฒญ์€ ์„ค๋ช… ๋Œ€์‹  ์ฆ‰์‹œ ์‹คํ–‰ โ€” `[EXECUTION RULE]` ์ถ”๊ฐ€ - **๋ฌธ์ œ:** "E:\Wiki\Datacollect ์„œ๋ฒ„ ์‹คํ–‰ํ•ด์ค˜" ๊ฐ™์€ ์š”์ฒญ์— ASTRA๊ฐ€ ์ง์ ‘ ์‹คํ–‰ํ•˜์ง€ ์•Š๊ณ , `npm run platform` ๋“ฑ ์ถ”์ธก์„ฑ ๋ช…๋ นยท์กด์žฌํ•˜์ง€ ์•Š๋Š” ํฌํŠธ(`8787`)ยทํ™˜๊ฒฝ๋ณ€์ˆ˜(`GEMINI_API_KEY`)๋ฅผ ์ง€์–ด๋‚ด๋ฉฐ "์ด๋ ‡๊ฒŒ ํ•˜์‹œ๊ธฐ ๋ฐ”๋ž๋‹ˆ๋‹ค" ์‹ ํŠœํ† ๋ฆฌ์–ผ๋งŒ ์ถœ๋ ฅํ–ˆ์Œ. - **์›์ธ:** ์‹œ์Šคํ…œ ํ”„๋กฌํ”„ํŠธ์˜ `[LOCAL PATH RULE]`์ด "review/analysis/debugging"๋งŒ ๋‹ค๋ค„, "์‹คํ–‰/๊ตฌ๋™/์‹œ์ž‘" ์š”์ฒญ์— ๋ฐœ๋™๋˜๋Š” ๊ทœ์น™์ด ์ „๋ฌดํ–ˆ์Œ. ๋ชจ๋ธ์ด ํ•™์Šต prior๋Œ€๋กœ ์‚ฐ๋ฌธ ์„ค๋ช…์œผ๋กœ ํšŒ๊ท€. - **์ˆ˜์ • 1 โ€” ํ”„๋กฌํ”„ํŠธ.** `[EXECUTION RULE]` ์‹ ์„ค: ์‹คํ–‰/๊ตฌ๋™/์‹œ์ž‘/run/start ํ‚ค์›Œ๋“œ โ†’ ํŠœํ† ๋ฆฌ์–ผ ๊ธˆ์ง€, ๋ช…๋ น์„ ๋ชจ๋ฅด๋ฉด ``๋กœ package.json์„ ๋จผ์ € ์ฝ๊ณ  ๊ทธ ๋‹ค์Œ ``๋กœ ์‹ค์ œ ์Šคํฌ๋ฆฝํŠธ ์‹คํ–‰. ์ถ”์ธกํ•œ ์Šคํฌ๋ฆฝํŠธ๋ช…ยทํฌํŠธยทํ™˜๊ฒฝ๋ณ€์ˆ˜ ๋‹จ์ • ๊ธˆ์ง€. Few-shot ์˜ˆ์‹œ 1๊ฑด ํฌํ•จ(์ž‘์€ ๋กœ์ปฌ ๋ชจ๋ธ์˜ ํƒœ๊ทธ ์ค€์ˆ˜์œจ ํ–ฅ์ƒ). - **์ˆ˜์ • 2 โ€” ๊ฒฝ๋กœ ๊ฒฝ๊ณ„.** ``/``๊ฐ€ ์›Œํฌ์ŠคํŽ˜์ด์Šค ์•ˆ์œผ๋กœ๋งŒ ์ œํ•œ๋ผ ํ˜•์ œ ํ”„๋กœ์ ํŠธ(`E:\Wiki\Datacollect` ๋“ฑ)์˜ package.json์„ ๋ชป ์ฝ๋˜ ๋ฌธ์ œ ํ•ด๊ฒฐ. `security.ts`๊ฐ€ ์›Œํฌ์ŠคํŽ˜์ด์Šค์˜ **์ƒ์œ„ ๋””๋ ‰ํ„ฐ๋ฆฌ 1๋‹จ๊ณ„**๊นŒ์ง€ ์‹ ๋ขฐ ๋ฃจํŠธ๋กœ ํฌํ•จ(๋“œ๋ผ์ด๋ธŒ ๋ฃจํŠธ๋กœ๋Š” ํ™•์žฅ ์•ˆ ํ•จ). ์ด๋กœ์จ ํ˜•์ œ ํ”„๋กœ์ ํŠธ๋ฅผ ์ฝ์–ด ์ •ํ™•ํ•œ ์‹คํ–‰ ๋ช…๋ น์„ ์ฐพ์„ ์ˆ˜ ์žˆ์Œ โ†’ ํ™˜๊ฐ ์ œ๊ฑฐ. - **์‹ ๊ทœ ํŒจํ‚ค์ง•:** `astra-2.2.57.vsix`. --- ## v2.2.56 (2026-05-22) ### โšก ์ฝ”๋“œ ๋ฆฌ๋ทฐ ๊ธฐ๋ฐ˜ ์„ฑ๋Šฅยท๋ฉ”๋ชจ๋ฆฌ ์ตœ์ ํ™” (12๊ฑด, ๋™์ž‘ ๋ณ€๊ฒฝ ์—†์Œ) - **๐Ÿ”ด ๋ธŒ๋ ˆ์ธ ์ฝ”ํผ์Šค ๋””์Šคํฌ ์žฌ์ฝ๊ธฐ ์ œ๊ฑฐ.** `secondBrainTrace`๋Š” ๋ฉ”์‹œ์ง€๋งˆ๋‹ค ๋ธŒ๋ ˆ์ธ ์ „์ฒด๋ฅผ ๋””์Šคํฌ์—์„œ ๋‹ค์‹œ ์ฝ์–ด ์žฌ๋ถ„๋ฅ˜ํ–ˆ์Œ โ†’ mtime+size ํ‚ค ์Šค์บ” ์บ์‹œ๋กœ ๋ณ€๊ฒฝ(ํŒŒ์ผ์ด ์‹ค์ œ๋กœ ๋ฐ”๋€” ๋•Œ๋งŒ ์žฌ์ฝ๊ธฐ). `scopedBrainRetriever`(ํ…”๋ ˆ๊ทธ๋žจ ๊ฒฝ๋กœ)๋„ ๋™์ผ ์•ˆํ‹ฐํŒจํ„ด โ†’ ์บ์‹œ๋œ `getBrainTokenIndex()` + `scoreTfIdfPreTokenized` ๊ฒฝ๋กœ๋กœ ๋ผ์šฐํŒ…. ์ ์ˆ˜ ๊ฒฐ๊ณผ๋Š” ๋ฐ”์ดํŠธ ๋‹จ์œ„๋กœ ๋™์ผ. - **๐ŸŸก ๋ฉ”๋ชจ๋ฆฌ ๋ˆ„์ˆ˜ยท์ค‘๋ณต ์ž‘์—… ์ •๋ฆฌ.** `agent.ts` `chatHistory` ๋ฌด์ œํ•œ ์ฆ๊ฐ€ โ†’ ์ตœ๊ทผ 40๊ฐœ ์œ ์ง€ยท์˜ค๋ž˜๋œ ๋„๊ตฌ ๊ฒฐ๊ณผ ๋ณธ๋ฌธ ์ถ•์•ฝ. `EpisodicMemory` ์—ํ”ผ์†Œ๋“œ JSON ๋ฉ”์‹œ์ง€๋งˆ๋‹ค ์žฌ์ฝ๊ธฐ โ†’ ๋””๋ ‰ํ„ฐ๋ฆฌ mtime ํ‚ค ์บ์‹œ. `_walkBrainFiles` โ†’ `readdirSync({withFileTypes})`ยท๋‹จ์ผ ๋ˆ„์‚ฐ๊ธฐ(`concat` ์ œ๊ฑฐ). TF-IDF `termFrequency` โ†’ ๋ฌธ์„œ๋ณ„ term-count `Map` 1ํšŒ ์‚ฌ์ „ ๊ณ„์‚ฐ. `getConfig()` ์ค‘๋ณต ํ˜ธ์ถœ 1ํšŒ๋กœ ํ†ตํ•ฉ. - **๐ŸŸข ๋ˆ„์ˆ˜ยท์ •๋ฆฌ ๋ณด๊ฐ•.** `clearBrainTokenIndex()`๋ฅผ `deactivate()`ยท๋ธŒ๋ ˆ์ธ ํ”„๋กœํ•„ ์ „ํ™˜ ์‹œ ํ˜ธ์ถœ. ์›น๋ทฐ ๋ฉ”์‹œ์ง€ ๋ฆฌ์Šค๋„ˆ dispose ๋ฐฐ์„ . `LongTermMemory` `longTermMaxEntries`(100) ๊ฐ•์ œ. Pixel Office ์ธํ„ฐ๋ฒŒ์€ ๋ทฐ ๋น„ํ‘œ์‹œ ์‹œ ์ผ์‹œ์ •์ง€. `/ping`์€ ํ•‘๋งˆ๋‹ค ๋ธŒ๋ ˆ์ธ ์ „์ฒด ํƒ์ƒ‰ ๋Œ€์‹  5์ดˆ TTL ์บ์‹œ ์‘๋‹ต. - ์ „ ํ•ญ๋ชฉ ๋™์ž‘ ๋ณด์กด โ€” ๊ธฐ๋Šฅยท์ถœ๋ ฅ ๋ณ€๊ฒฝ ์—†์Œ. ํƒ€์ž… ์ฒดํฌ(`tsc --noEmit`) ๋ฌด์˜ค๋ฅ˜, ํ…Œ์ŠคํŠธ 400/400 ํ†ต๊ณผ. - **์‹ ๊ทœ ํŒจํ‚ค์ง•:** `astra-2.2.56.vsix`. --- ## v2.2.55 (2026-05-21) ### ๐Ÿ“… /meet โ€” ํšŒ์˜๋ก ์•ก์…˜ ์•„์ดํ…œ โ†’ Google ์บ˜๋ฆฐ๋” ์ž๋™ ๋“ฑ๋ก (Phase 1) - `/meet`์ด ํšŒ์˜๋ก ํ•ฉ์„ฑยท์ €์žฅ ํ›„, **์•ก์…˜ ์•„์ดํ…œ ํ‘œ๋ฅผ ํŒŒ์‹ฑํ•ด task๋ณ„ ์ข…์ผ ์ผ์ •์œผ๋กœ Google Calendar์— ์ž๋™ ๋“ฑ๋ก**ํ•œ๋‹ค. - ๋‚ ์งœ ๊ทœ์น™(์‚ฌ์šฉ์ž ์ •์˜): ๋ช…์‹œ ๋‚ ์งœ(`YYYY-MM-DD`/`YYYY๋…„ M์›” D์ผ`)โ†’๊ทธ๋Œ€๋กœ / "์ฐจ์ฃผยท๋‹ค์Œ ์ฃผ"โ†’ํšŒ์˜์ผ +6์ผ / "์ฆ‰์‹œยท๋‹น์ผ"โ†’๋“ฑ๋ก์ผ / ๋ณ€ํ™˜ ๋ถˆ๊ฐ€ยท๋นˆ ๊ฐ’โ†’๋“ฑ๋ก์ผ +์˜์—…์ผ 5์ผ(ํ† ยท์ผ ์ œ์™ธ, ๊ณตํœด์ผ ๋ฌด์‹œ) + ์ œ๋ชฉ์— **"(๋ฏธํ™•์ •)"** ๊ผฌ๋ฆฌํ‘œ. - ์บ˜๋ฆฐ๋” ์ด๋ฒคํŠธ ์„ค๋ช…์— ํšŒ์˜ ์ œ๋ชฉยท๋‹ด๋‹นยท์›๋ž˜ ๊ธฐํ•œ ํ‘œ๊ธฐ๋ฅผ ๊ธฐ๋ก. Google Calendar OAuth(์“ฐ๊ธฐ)๊ฐ€ ์—ฐ๊ฒฐ๋ผ ์žˆ์–ด์•ผ ํ•˜๋ฉฐ, ๋ฏธ์—ฐ๊ฒฐ ์‹œ ํšŒ์˜๋ก ์ €์žฅ๋งŒ ํ•˜๊ณ  ์•ˆ๋‚ดํ•œ๋‹ค. - `handleSlashCommand`์— `ExtensionContext` ๋ฐฐ์„  ์ถ”๊ฐ€(`/meet`๋งŒ ์‚ฌ์šฉ). - **์‹ ๊ทœ ํŒจํ‚ค์ง•:** `astra-2.2.55.vsix`. --- ## v2.2.54 (2026-05-21) ### ๐Ÿ”ง ํ•œยท์˜ ํ† ํฐ ๊นจ์ง ์ถ”๊ฐ€ ๊ฐœ์„  โ€” ์ƒ˜ํ”Œ๋ง ์กฐ์ • + ๊ต์ • ํŒจ์Šค - **์ƒ˜ํ”Œ๋ง ํŒŒ๋ผ๋ฏธํ„ฐ ์กฐ์ •.** ์Šฌ๋ž˜์‹œ ํ•ฉ์„ฑ LLM ํ˜ธ์ถœ์— `top_p`(0.85)ยท`top_k`(20)ยท`repeat_penalty`(1.1) ์ถ”๊ฐ€ โ€” ๊นจ์ง„ ์ €ํ™•๋ฅ  ํ† ํฐ("ํ•ตess" ๋“ฑ)์˜ ์ƒ˜ํ”Œ๋ง ์ž์ฒด๋ฅผ ์–ต์ œ. - **์กฐ๊ฑด๋ถ€ ๊ต์ • ํŒจ์Šค.** ํ•ฉ์„ฑ ๊ฒฐ๊ณผ์— ํ•œยท์˜ ๊นจ์ง(`ํ•œ๊ธ€+์˜๋ฌธ ์†Œ๋ฌธ์ž ์กฐ๊ฐ`)์ด ๊ฐ์ง€๋˜๋ฉด LLM ๊ต์ • ํŒจ์Šค๋ฅผ 1ํšŒ ๋Œ๋ ค ๊นจ์ง„ ํ‘œ๊ธฐ๋งŒ ์ž์—ฐ์Šค๋Ÿฌ์šด ํ•œ๊ตญ์–ด๋กœ ๊ต์ •. ๊นจ์ง์ด ์—†์œผ๋ฉด ์ถ”๊ฐ€ ํ˜ธ์ถœ ์—†์Œ. ๊ต์ • ๊ฒฐ๊ณผ๊ฐ€ ์›๋ณธ๋ณด๋‹ค ๋น„์ •์ƒ์ ์œผ๋กœ ์งง์œผ๋ฉด(์ž˜๋ผ๋จน์Œ) ์›๋ณธ์„ ์œ ์ง€ํ•˜๋Š” ์•ˆ์ „์žฅ์น˜ ํฌํ•จ. - ์ ์šฉ ๋ฒ”์œ„: `/benchmark`ยท`/youtube`ยท`/wikify`ยท`/meet` ๋ชจ๋“  ์Šฌ๋ž˜์‹œ ํ•ฉ์„ฑ. - **์‹ ๊ทœ ํŒจํ‚ค์ง•:** `astra-2.2.54.vsix`. --- ## v2.2.53 (2026-05-20) ### ๐Ÿ“ ์‹ ๊ทœ /meet โ€” ํšŒ์˜ ๋…น์ทจ txt โ†’ ์‚ฌ์‹ค ๊ธฐ๋ฐ˜ ๊ตฌ์กฐํ™” ํšŒ์˜๋ก - **์‹ ๊ทœ ์Šฌ๋ž˜์‹œ ๋ช…๋ น `/meet [๋ฉ”ํƒ€๋ฐ์ดํ„ฐ]`.** ๋กœ์ปฌ ํšŒ์˜ ๋…น์ทจ ํ…์ŠคํŠธ ํŒŒ์ผ์„ ASTRA๊ฐ€ ์ง์ ‘ ์ฝ์–ด(๋กœ์ปฌ ํŒŒ์ผ์ด๋ผ Bridge ๋ถˆํ•„์š”), ์‚ฌ์‹ค ๊ธฐ๋ฐ˜ ๊ตฌ์กฐํ™” ํšŒ์˜๋ก(Actionable Minutes)์œผ๋กœ LLM ํ•ฉ์„ฑยท์ €์žฅํ•œ๋‹ค. - ์ฒ˜๋ฆฌ ๊ทœ์น™: Deconstruction(์žก๋‹ด ์ œ๊ฑฐ) โ†’ Classification(Fact/Discussion/Decision/Risk/Action) โ†’ Decision Logic โ†’ Structuring. ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ(์ฐธ์„์žยท๋‚ ์งœ)๊ฐ€ ๋…น์ทจ๋ก๊ณผ ์ถฉ๋Œํ•˜๋ฉด ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ ์šฐ์„ . - ์ถœ๋ ฅ ๊ตฌ์กฐ: ์š”์•ฝ ๋ณด๊ณ  / ์ฃผ์š” ๋…ผ์˜ ์‚ฌํ•ญ / ๋ฆฌ์Šคํฌยท์ด์Šˆ / ๊ฒฐ์ • ์‚ฌํ•ญ / ์˜คํ”ˆ ์ด์Šˆ / ์•ก์…˜ ์•„์ดํ…œ(๋‹ด๋‹นยท์ž‘์—…ยท๊ธฐํ•œ ํ‘œ). - ๊ฒฝ๋กœ์— ๊ณต๋ฐฑ์ด ์žˆ์œผ๋ฉด ๋”ฐ์˜ดํ‘œ๋กœ ๊ฐ์Œ€ ์ˆ˜ ์žˆ์Œ. ๊ฒฐ๊ณผ๋ฌผ์€ `.md`๋กœ `WIKI_RAW_PATH`(`E:\Wiki\2nd\00_Raw`)์— ์ €์žฅ. - **์‹ ๊ทœ ํŒจํ‚ค์ง•:** `astra-2.2.53.vsix`. --- ## v2.2.52 (2026-05-20) ### ๐Ÿ“ฆ ์žฌํŒจํ‚ค์ง• (v2.2.51 ๋™์ผ ๋‚ด์šฉ) - ๊ธฐ๋Šฅ ๋ณ€๊ฒฝ ์—†์Œ โ€” v2.2.51 ์ž‘์—… ํŠธ๋ฆฌ๋ฅผ ๋ฒ„์ „๋งŒ ์˜ฌ๋ ค ์žฌํŒจํ‚ค์ง•. ๋ฒ„์ „ ์ •ํ•ฉ์„ฑ ์ •๋ฆฌ๋ฅผ ์œ„ํ•ด `package-lock.json` ๋ฒ„์ „๋„ ํ•จ๊ป˜ 2.2.52๋กœ ๋™๊ธฐํ™”. - **์‹ ๊ทœ ํŒจํ‚ค์ง•:** `astra-2.2.52.vsix`. --- ## v2.2.51 (2026-05-20) ### ๐Ÿ› ์ฑ„ํŒ… ๊ธฐ๋ก ๋ชฉ๋ก ๋ˆ„๋ฝ ์ˆ˜์ • + Python/tsc ๊ฒ€์ฆ ํฌ๋กœ์Šคํ”Œ๋žซํผํ™” - **๊ธฐ๋ก(Chat History) ๋ชฉ๋ก์— ์ตœ๊ทผ ๋Œ€ํ™”๊ฐ€ ์•ˆ ๋œจ๋˜ ๋ฌธ์ œ ์ˆ˜์ •.** ๋‹ต๋ณ€์„ ๋‹ค ๋ฐ›์€ ๋’ค ํ›„์ฒ˜๋ฆฌ ๋‹จ๊ณ„(์•„ํ‚คํ…์ฒ˜ ๊ฐ์ง€ยทSelf-ReflectorยทChronicle ์ž๋™๊ธฐ๋ก ๋“ฑ)์—์„œ ์˜ˆ์™ธ๊ฐ€ ํ•œ ๋ฒˆ์ด๋ผ๋„ ๋‚˜๋ฉด `_saveCurrentSession()`์ด ํ†ต์งธ๋กœ ๊ฑด๋„ˆ๋›ฐ์–ด์ ธ ํ™”๋ฉด์—” ๋‹ต๋ณ€์ด ๋ณด์—ฌ๋„ ๊ธฐ๋ก ๋ชฉ๋ก์—” ์•ˆ ๋“ค์–ด๊ฐ€๋˜ ํšŒ๊ท€. ์ผ๋ฐ˜ ์ฑ„ํŒ…ยทํšŒ์‚ฌ ๋ชจ๋“œ ๊ฐ€๋ฒผ์šด ๋Œ€ํ™” ๊ฒฝ๋กœ๋ฅผ `try/finally`๋กœ ๊ฐ์‹ธ ์ €์žฅ์„ **ํ•ญ์ƒ** ๋ณด์žฅํ•˜๊ณ , `_saveCurrentSession()` ์ž์ฒด๋„ ์ ˆ๋Œ€ throwํ•˜์ง€ ์•Š๊ฒŒ ๋ฐฉ์–ด ์ฒ˜๋ฆฌ. - **1์ธ ๊ธฐ์—… ๋ชจ๋“œ ์—…๋ฌด ํ„ด๋„ ๊ธฐ๋ก ๋ชฉ๋ก์— ๊ธฐ๋ก.** `_runCompanyTurn`์€ dispatcher๋กœ ๋Œ์•„ `_agent` ํžˆ์Šคํ† ๋ฆฌ๋ฅผ ์ฑ„์šฐ์ง€ ์•Š์•„ ๊ธฐ๋ก ๋ชฉ๋ก์— ์˜์˜ ์•ˆ ๋‚จ๋˜ ๋ฌธ์ œ โ€” ์™„๋ฃŒ๋œ ์—…๋ฌด ํ„ด(`report-done`)์„ `์š”์ฒญ/๋ณด๊ณ ์„œ` ํ•œ ์Œ์œผ๋กœ ๋…๋ฆฝ ํ•ญ๋ชฉ ์ €์žฅ(`_saveCompanyTurnSession`). ์ด์ œ ์–ด๋А ๋ชจ๋“œ๋“  ์ตœ๊ทผ ๋Œ€ํ™”๊ฐ€ ๋น ์ง์—†์ด ๊ธฐ๋ก๋จ. - **Self-Reflector ์‹คํ–‰ ๊ฒ€์ฆ ํฌ๋กœ์Šคํ”Œ๋žซํผํ™”.** `.py` ๊ฒ€์ฆ์„ `python`โ†’`python3`(Windows๋Š” `python` ์šฐ์„ )๋กœ ์ž๋™ ํƒ์ง€, `.ts` ๊ฒ€์ฆ์„ `npx tsc` ๋Œ€์‹  ๋กœ์ปฌ `node_modules/typescript/bin/tsc`๋ฅผ `node`๋กœ ์ง์ ‘ ํ˜ธ์ถœ โ€” macOS 12.3+/Windows์—์„œ ๊ฒ€์ฆ์ด ํ—›๋Œ๋˜ ๋ฌธ์ œ ํ•ด๊ฒฐ. - **์‹ ๊ทœ ํŒจํ‚ค์ง•:** `astra-2.2.51.vsix`. --- ## v2.2.48 (2026-05-20) ### ๐Ÿงน ์ถœ๋ ฅ ํ’ˆ์งˆ โ€” ๋‚ด๋ถ€ ์ฒดํฌ ๋กœ๊ทธ ์ฐจ๋‹จ + ํ•œ์˜ ํ† ํฐ ๊นจ์ง ์ •์ œ - **`[Self-Reflector Check]` ๋‚ด๋ถ€ ๊ฒ€์ฆ ๋กœ๊ทธ ๋…ธ์ถœ ์ฐจ๋‹จ.** Self-Reflector Phase A๋ฅผ ๊ธฐ๋ณธ ๋น„ํ™œ์„ฑํ™”(`g1nation.selfReflector.enabled` ๊ธฐ๋ณธ๊ฐ’ `true`โ†’`false`). ๋‹ต๋ณ€ ๋์— `Consistency/Completeness/Accuracy` ๋‚ด๋ถ€ ์ฒดํฌ ๋ธ”๋ก์ด ๋” ์ด์ƒ ๋ถ™์ง€ ์•Š๋Š”๋‹ค โ€” ์ผ๋ฐ˜ ์ฑ„ํŒ…ยทํšŒ์‚ฌ ๋ชจ๋“œ ๋ชจ๋‘ ์ ์šฉ. ๊ธฐ๋Šฅ ์ž์ฒด๋Š” ๋‚จ์•„ ์„ค์ •์—์„œ ์ผค ์ˆ˜ ์žˆ์Œ. - **ํ•œ์˜ ํ† ํฐ ๊นจ์ง ์ •์ œ.** ์Šฌ๋ž˜์‹œ ํ•ฉ์„ฑ(`callLmSynthesis`)ยท์ผ๋ฐ˜ ์ฑ„ํŒ…(`getSystemPrompt`) ์‹œ์Šคํ…œ ํ”„๋กฌํ”„ํŠธ์— ์ถœ๋ ฅ ์œ„์ƒ ๊ทœ์น™ ์ถ”๊ฐ€ โ€” ํ•œ ๋‹จ์–ด ์•ˆ์— ํ•œ๊ธ€ยท์˜๋ฌธ ์•ŒํŒŒ๋ฒณ ํ˜ผ์šฉ ๊ธˆ์ง€(`๊ฒฐently`ยท`์ธorp` ๊ฐ™์€ ๊นจ์ง„ ํ•ฉ์„ฑ ํ‘œ๊ธฐ ์ฐจ๋‹จ), ์™ธ๋ž˜์–ด๋Š” ์™„์ „ ํ•œ๊ธ€ ๋˜๋Š” ์™„์ „ ์˜๋ฌธ์œผ๋กœ ์ผ๊ด€๋˜๊ฒŒ. - **์•ˆ์ „๋ง.** ์Šฌ๋ž˜์‹œ ํ•ฉ์„ฑ ๊ฒฐ๊ณผ์— ๋‚ด๋ถ€ ๊ฒ€์ฆ ๋กœ๊ทธ๊ฐ€ ์ƒˆ์–ด ๋‚˜์˜ค๋ฉด ํ›„์ฒ˜๋ฆฌ ์ •๊ทœ์‹์œผ๋กœ ์ž๋™ ์ œ๊ฑฐ. - **์‹ ๊ทœ ํŒจํ‚ค์ง•:** `astra-2.2.48.vsix`. --- ## v2.2.47 (2026-05-20) ### ๐Ÿ”— /wikify ๋‹ค์ค‘ ๋งํฌ ๋ฐฐ์น˜ ์ฒ˜๋ฆฌ - `/wikify`์— **์—ฌ๋Ÿฌ ๋งํฌ๋ฅผ ๊ณต๋ฐฑ์œผ๋กœ ๊ตฌ๋ถ„ํ•ด ํ•œ ๋ฒˆ์—** ๋„ฃ์œผ๋ฉด 1๊ฐœ์”ฉ ์ˆœ์ฐจ ์œ„ํ‚คํ™”ํ•œ๋‹ค. ์˜ˆ: `/wikify url1 url2 โ€ฆ url10` โ†’ 10๊ฐœ ์œ„ํ‚ค ๋ฌธ์„œ ์ƒ์„ฑ. - ์ง„ํ–‰ ํ‘œ์‹œ `[i/N]`, ํ•œ ๊ฑด์ด ์‹คํŒจํ•ด๋„ ๋‚˜๋จธ์ง€๋Š” ๊ณ„์† ์ง„ํ–‰, ์™„๋ฃŒ ์‹œ `N/M๊ฐœ ์„ฑ๊ณต` ์š”์•ฝ. - URL๊ณผ ์ฃผ์ œ๋ช… ์ž๋™ ๋ถ„๋ฅ˜ โ€” URL ํŒจํ„ด ํ† ํฐ์€ ๋ชจ๋‘ ์ฒ˜๋ฆฌ ๋Œ€์ƒ, ๋น„-URL ํ† ํฐ์€ ๊ณตํ†ต ์ฃผ์ œ๋ช…์œผ๋กœ. - ๋‹จ์ผ ๋งํฌ ์ž…๋ ฅ์€ ๊ธฐ์กด๊ณผ ๋™์ผํ•˜๊ฒŒ ๋™์ž‘. - **์‹ ๊ทœ ํŒจํ‚ค์ง•:** `astra-2.2.47.vsix`. --- ## v2.2.46 (2026-05-20) ### ๐Ÿ”ง /wikify ์ •ํ™•๋„ ๊ฐœ์„  โ€” ๋ช…์„ธ ๋ฌธ์„œ ์™„์ „์„ฑ + ์œ„ํ‚ค๋งํฌ ๊ต์ • - **๋ช…์„ธ/์Šคํ‚ค๋งˆ ๋ฌธ์„œ ์™„์ „์„ฑ ๊ฐ•ํ™”.** `buildWikifyPrompt`์— ๊ทœ์น™ ์ถ”๊ฐ€ โ€” ์›๋ฌธ์ด JSON SchemaยทAPI ๋ช…์„ธยท๊ธฐ์ˆ  ์ŠคํŽ™์ด๋ฉด `๐Ÿ“– ์„ธ๋ถ€ ๋‚ด์šฉ`์— ๋ชจ๋“  ํ•„๋“œยท์†์„ฑ์„ ๋ˆ„๋ฝ ์—†์ด ๋งˆํฌ๋‹ค์šด ํ‘œ(`[ํ•„๋“œ|ํƒ€์ž…|ํ•„์ˆ˜/์„ ํƒ|์ œ์•ฝ]`)๋กœ ์ •๋ฆฌํ•˜๊ณ , ์›๋ฌธ `required` ๋ฐฐ์—ด์„ ์ž„์˜ ๋ณ€๊ฒฝ ๊ธˆ์ง€, `additionalProperties`ยท`enum`ยท์ค‘์ฒฉ ๊ตฌ์กฐ๋„ ์›๋ฌธ ๊ทธ๋Œ€๋กœ ๋ฐ˜์˜. (์ด์ „์—” LLM์ด `extra`ยท`models` ๋“ฑ ์ตœ์ƒ์œ„ ํ•„๋“œ๋ฅผ ๋ˆ„๋ฝํ•˜๋˜ ๋ฌธ์ œ โ€” ์ถ”์ถœ์€ ์ •ํ™•ํ–ˆ์œผ๋‚˜ ํ•ฉ์„ฑ ๋‹จ๊ณ„ ์†์‹ค) - **์œ„ํ‚ค๋งํฌ `[[ ]]` ์ž๋™ ๊ต์ •.** LLM์ด ๋‹ซ๋Š” ๋Œ€๊ด„ํ˜ธ๋ฅผ ํ•˜๋‚˜ ๋น ๋œจ๋ฆฌ๋Š” ๊นจ์ง(`[[rfcs repo]`)์„ ํ›„์ฒ˜๋ฆฌ ์ •๊ทœ์‹์œผ๋กœ ์ž๋™ ๋ณด์ •. - **์‹ ๊ทœ ํŒจํ‚ค์ง•:** `astra-2.2.46.vsix`. --- ## v2.2.45 (2026-05-20) ### ๐Ÿ“š ์‹ ๊ทœ /wikify โ€” ์›น์‚ฌ์ดํŠธ ๋ณธ๋ฌธ์„ P-Reinforce v3.0 ์œ„ํ‚ค ๋ฌธ์„œ๋กœ - **์‹ ๊ทœ ์Šฌ๋ž˜์‹œ ๋ช…๋ น `/wikify [์ฃผ์ œ๋ช…]`.** ์‚ฌ์ดํŠธ ๋ณธ๋ฌธ ํ…์ŠคํŠธ๋ฅผ ์ถ”์ถœํ•ด Datacollect Research(`/research`)์™€ ๋™์ผํ•œ **P-Reinforce v3.0 ๊ทœ๊ฒฉ ์œ„ํ‚ค ๋ฌธ์„œ**๋กœ LLM ํ•ฉ์„ฑยท์ €์žฅํ•œ๋‹ค โ€” YAML frontmatter + `๐ŸŽฏ ํ•œ ์ค„ ํ†ต์ฐฐ / ๐Ÿง  ํ•ต์‹ฌ ๊ฐœ๋… / ๐Ÿงฉ ์ถ”์ถœ๋œ ํŒจํ„ด / ๐Ÿ“– ์„ธ๋ถ€ ๋‚ด์šฉ / โš–๏ธ ๋ชจ์ˆœ / ๐Ÿ› ๏ธ ์ ์šฉ ์‚ฌ๋ก€ / โœ… ๊ฒ€์ฆ ์ƒํƒœ / ๐Ÿ”— ๊ด€๋ จ ๋ฌธ์„œ ๋งํฌ([[์œ„ํ‚ค๋งํฌ]]) / ๐Ÿ“ ๋ณ€๊ฒฝ ์ด๋ ฅ`. - **Bridge์— ๋ณธ๋ฌธ ์ถ”์ถœ ์—”๋“œํฌ์ธํŠธ `/api/web-extract` ์‹ ๊ทœ** โ€” Playwright readability ๋ฐฉ์‹์œผ๋กœ `main`/`article` ๋ณธ๋ฌธ ํ…์ŠคํŠธ๋งŒ ์ถ”์ถœ(navยทheaderยทfooter ๋“ฑ ๋…ธ์ด์ฆˆ ์ œ๊ฑฐ), ๋ณธ๋ฌธ 32000์ž ์ƒํ•œ. - `/benchmark`(๋””์ž์ธ ๋ฒค์น˜๋งˆํ‚น)์™€ ๋‹ฌ๋ฆฌ `/wikify`๋Š” ์‚ฌ์ดํŠธ **์ฝ˜ํ…์ธ ๋ฅผ ์ง€์‹ ๋ฌธ์„œํ™”**ํ•œ๋‹ค. ๊ฒฐ๊ณผ๋ฌผ์€ `datacollectSavePath`(๋˜๋Š” Bridge `WIKI_RAW_PATH`)์— ์ €์žฅ. - **์‹ ๊ทœ ํŒจํ‚ค์ง•:** `astra-2.2.45.vsix`. --- ## v2.2.44 (2026-05-20) ### ๐Ÿ“œ /youtube โ€” ๋ณด๊ณ ์„œ ์•ž์— ์˜์ƒ ์ „์ฒด ์Šคํฌ๋ฆฝํŠธ ์ถœ๋ ฅ - `/youtube` ๊ฒฐ๊ณผ๋ฌผ ๋งจ ์•ž์— ์˜์ƒ ์ „์ฒด ์ž๋ง‰(Full Script) ์„น์…˜์„ ์ถ”๊ฐ€. 30์ดˆ ๋ฒ„ํ‚ท์œผ๋กœ ๋ฌถ์–ด `[mm:ss] ๋ฌธ์žฅโ€ฆ` ํ˜•ํƒœ๋กœ ์ •๋ฆฌ โ€” ์ž˜๊ฒŒ ๋Š๊ธด ์ž๋™์ž๋ง‰์„ ๊ฐ€๋…์„ฑ ์žˆ๊ฒŒ ํ•ฉ์ณ, ๋ถ„์„ ๋ณด๊ณ ์„œ์™€ ์›๋ฌธ ๋Œ€๋ณธ์„ ํ•œ ๋ฌธ์„œ์—์„œ ํ•จ๊ป˜ ๋ณธ๋‹ค. - ํ™”๋ฉด ์ถœ๋ ฅยท์ €์žฅ markdown ์–‘์ชฝ ๋ชจ๋‘ `๐Ÿ“œ ์ „์ฒด ์Šคํฌ๋ฆฝํŠธ` โ†’ `---` โ†’ `๋Œ€๋ณธ ์—ญ๊ธฐํš์„œ` ์ˆœ์„œ๋กœ ์ ์šฉ. - **์‹ ๊ทœ ํŒจํ‚ค์ง•:** `astra-2.2.44.vsix`. --- ## v2.2.43 (2026-05-20) ### โœ๏ธ /youtube ์ถœ๋ ฅ ํฌ๋งท ๊ฐœํŽธ โ€” "๋Œ€๋ณธ ์—ญ๊ธฐํš์„œ" - `/youtube` ๋ถ„์„ ๋ฆฌํฌํŠธ๋ฅผ ์˜์ƒ ์ œ์ž‘ ๊ฐ€์ด๋“œ(4-๋ Œ์ฆˆ)์—์„œ **๋Œ€๋ณธ(์Šคํฌ๋ฆฝํŠธ) ์—ญ๊ธฐํš์„œ**๋กœ ์ „๋ฉด ๊ฐœํŽธ. BGMยท์ž๋ง‰ยท์ปท ์ „ํ™˜ ๋“ฑ ์˜์ƒ ์—ฐ์ถœ ํ•ญ๋ชฉ์„ ๊ฑท์–ด๋‚ด๊ณ  ์Šคํฌ๋ฆฝํŠธ(ํ…์ŠคํŠธ)ยท์–ธ์–ด ๊ตฌ์กฐ์—๋งŒ ์ง‘์ค‘ํ•œ๋‹ค. - ์ƒˆ ๋ ˆ์ด์•„์›ƒ 5์ข…: ๐ŸŽฌ ํ•œ ์ค„ ์ธ์ƒ / 1. ์Šคํฌ๋ฆฝํŠธ ๋ผˆ๋Œ€ ๊ตฌ์กฐ๋„(ํ‘œ) / 2. ๋ง์˜ ๋ง› & ํ†ค์•ค๋งค๋„ˆ / 3. ๋‚ด ๋Œ€๋ณธ์— ๋ฐ”๋กœ ์“ฐ๋Š” ์•ก์…˜ ์ฒดํฌ๋ฆฌ์ŠคํŠธ / โœ‚๏ธ ๋นˆ์นธ ์ฑ„์šฐ๊ธฐ์‹ ๋Œ€๋ณธ ํ…œํ”Œ๋ฆฟ. - ์–ธ์–ด์  ์žฅ์น˜๋ฅผ ๊ณ ์ • ํƒœ๊ทธ ์–ดํœ˜(`#FOMO #๊ถŒ์œ„๋ถ€์—ฌ #ํ˜ธ๊ธฐ์‹ฌ๊ฐญ #๋ธŒ๋ฆฟ์ง€๋ฉ˜ํŠธ` ๋“ฑ)๋กœ ๋ผ๋ฒจ๋ง. '์ „๋ฌธ์šฉ์–ด โ†’ ์‰ฌ์šด ๋น„์œ ' ๋ถ„์„ ํ•ญ๋ชฉ ์‹ ์„ค โ€” ํ™”์ž์˜ ๊ตฌ์–ด์ฒด '๋ง์˜ ๋ง›'์„ ๋ช…์‹œ์ ์œผ๋กœ ์ถ”์ถœํ•œ๋‹ค. - **์‹ ๊ทœ ํŒจํ‚ค์ง•:** `astra-2.2.43.vsix`. --- ## v2.2.42 (2026-05-20) ### ๐ŸŽฌ /youtube โ€” Datacollect youtube insight 4-๋ Œ์ฆˆ ๋ถ„์„ ์ด์‹ - **`/youtube`๊ฐ€ ์ด์ œ LLM 4-๋ Œ์ฆˆ ์ฝ˜ํ…์ธ  ์ œ์ž‘ ๊ฐ€์ด๋“œ๋ฅผ ์ƒ์„ฑํ•œ๋‹ค.** ๊ทธ๋™์•ˆ transcript/๋ฉ”ํƒ€๋ฐ์ดํ„ฐ ๋คํ”„๋งŒ ํ–ˆ์œผ๋‚˜, ์ด์ œ Datacollect ์›น์•ฑ(YoutubePanel)์˜ `build4LensPrompt`๋ฅผ ๊ทธ๋Œ€๋กœ ์ด์‹ โ€” 10์ดˆ ํ›… / ์Šคํฌ๋ฆฝํŠธ ๊ตฌ์กฐ(๊ธฐ์Šน์ „๊ฒฐ ํƒ€์ž„๋ผ์ธ) / ์ œ์ž‘ ๋ฆฌ์†Œ์ŠคยทํŽธ์ง‘ ์Šคํƒ€์ผ / ์ธ๋„ค์ผยท์ œ๋ชฉ CTR 4-๋ Œ์ฆˆ ๋ถ„์„ + ์—ญ๊ธฐํš์„œ + ๋Œ€๋ณธ ํ…œํ”Œ๋ฆฟ์„ ์ƒ์„ฑํ•œ๋‹ค. - **extract ํ•„๋“œ ๋ฒ„๊ทธ ์ˆ˜์ •.** Bridge `/api/youtube/extract`๋Š” `source` ํ•„๋“œ๋ฅผ ์š”๊ตฌํ•˜๋Š”๋ฐ ASTRA๊ฐ€ `url`์„ ๋ณด๋‚ด "source URL์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค" ์—๋Ÿฌ๊ฐ€ ๋‚˜๋˜ ๋ฌธ์ œ. ์ด์ œ `{ source, withMetadata, limit }` ๋กœ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ํ˜ธ์ถœํ•œ๋‹ค. - **๊ฒฐ๊ณผ๋ฌผ ์ž๋™ ์ €์žฅ.** ๋ถ„์„ markdown์„ `/benchmark`์™€ ๋™์ผํ•˜๊ฒŒ raw ํด๋”(`datacollectSavePath` > Bridge `WIKI_RAW_PATH`)์— ์ €์žฅ. - **๋ช…๋ น์–ด ๋ณด์กฐ ์ปจํ…์ŠคํŠธ.** `/youtube <์šฐ๋ฆฌ ์ฑ„๋„ ์„ค๋ช…>` ํ˜•ํƒœ๋กœ URL ๋’ค ์ž์—ฐ์–ด๋Š” "์šฐ๋ฆฌ๊ฐ€ ๋งŒ๋“ค ์ฝ˜ํ…์ธ " ์ปจํ…์ŠคํŠธ๋กœ ๋ถ„์„์— ๋ฐ˜์˜๋œ๋‹ค. - **์‹ ๊ทœ ํŒจํ‚ค์ง•:** `astra-2.2.42.vsix`. --- ## v2.2.41 (2026-05-20) ### ๐ŸŽ›๏ธ /benchmark ํ•ฉ์„ฑ Temperature ์„ค์ • ์ถ”๊ฐ€ - **`g1nation.datacollectSynthesisTemperature` ์‹ ์„ค** (๊ธฐ๋ณธ 0.1). `/benchmark` LLM 4-๋ Œ์ฆˆ ํ•ฉ์„ฑ์˜ temperature๋ฅผ Astra Settings ํŒจ๋„ 'Datacollect' ์„น์…˜์—์„œ ์กฐ์ ˆ ๊ฐ€๋Šฅ โ€” ๊ทธ๋™์•ˆ ์ฝ”๋“œ์— `0.3`์œผ๋กœ ํ•˜๋“œ์ฝ”๋”ฉ๋ผ ์žˆ์—ˆ๋‹ค. ๋‚ฎ์ถœ์ˆ˜๋ก(0.1) ํ•œ๊ตญ์–ด ์ƒ์„ฑ ์ค‘ ์„ž์ด๋Š” ๊นจ์ง„ ๋ฌธ์žยทํ™˜๊ฐ์ด ์ค„๊ณ  ๊ฒฐ๊ณผ๊ฐ€ ๊ฒฐ์ •์ ์ด๋‹ค. 0~2 ๋ฒ”์œ„๋กœ ํด๋žจํ”„. - **์‹ ๊ทœ ํŒจํ‚ค์ง•:** `astra-2.2.41.vsix`. --- ## v2.2.40 (2026-05-20) ### ๐Ÿ“ฆ ์žฌํŒจํ‚ค์ง• (์ฝ”๋“œ ๋ณ€๊ฒฝ ์—†์Œ) - v2.2.39์™€ ์ฝ”๋“œยท๊ธฐ๋Šฅ ์™„์ „ ๋™์ผ. ๋ฒ„์ „ ๋ฒˆํ˜ธ๋งŒ ๊ฐฑ์‹ ํ•œ ์žฌํŒจํ‚ค์ง• ๋นŒ๋“œ โ€” v2.2.39์˜ ๋ณ€๊ฒฝ์‚ฌํ•ญ(/benchmark LLM 4-๋ Œ์ฆˆ ํ•ฉ์„ฑ, ํฌ๋กค ๊นŠ์ด/ํŽ˜์ด์ง€ ์„ค์ •)์ด ๋ชจ๋‘ ๊ทธ๋Œ€๋กœ ํฌํ•จ๋œ๋‹ค. - **์‹ ๊ทœ ํŒจํ‚ค์ง•:** `astra-2.2.40.vsix`. --- ## v2.2.39 (2026-05-20) ### โœจ /benchmark LLM 4-๋ Œ์ฆˆ ํ•ฉ์„ฑ + ํฌ๋กค ๊นŠ์ด/ํŽ˜์ด์ง€ ์„ค์ • - **LLM 4-๋ Œ์ฆˆ ํ•ฉ์„ฑ ์ถ”๊ฐ€ โ€” ๊ฒฐ๊ณผ๋ฌผ์ด Datacollect ์›น์•ฑ๊ณผ ๋™๋“ฑํ•ด์ง.** ๊ทธ๋™์•ˆ `/benchmark`๋Š” Playwright ์Šค์บ” ๋ฐ์ดํ„ฐ๋ฅผ ๊ทธ๋Œ€๋กœ ๋คํ”„๋งŒ ํ–ˆ๋‹ค(๋””์ž์ธ ํ† ํฐ raw ๋ชฉ๋ก). ์ด์ œ Datacollect ์›น์•ฑ(WebBenchmarkPanel)๊ณผ ๋™์ผํ•˜๊ฒŒ `scan โ†’ LLM 3๋‹จ๊ณ„ ํ•ฉ์„ฑ(Visual/Layout/Interaction/Voice 4-๋ Œ์ฆˆ + IAยทํŽ˜์ด์ง€ ํ…œํ”Œ๋ฆฟ + ์›๋ณธ ์žฌ๊ตฌ์ถ• ๋ช…์„ธ) โ†’ ์™„์„ฑ๋œ ๋งˆํฌ๋‹ค์šด ๋ฆฌํฌํŠธ`๋ฅผ ์ƒ์„ฑํ•œ๋‹ค. Bridge `/api/lm` ํ”„๋ก์‹œ ๊ฒฝ์œ , Astra ๊ธฐ๋ณธ ๋ชจ๋ธ(`g1nation.defaultModel`/`ollamaUrl`)์„ ์‚ฌ์šฉ. ํ•ฉ์„ฑ ์‹คํŒจ ์‹œ raw ์Šค์บ” ์š”์•ฝ์œผ๋กœ ์ž๋™ fallback. - **ํฌ๋กค ๊นŠ์ดยท์ตœ๋Œ€ ํŽ˜์ด์ง€ ์„ค์ • ์ถ”๊ฐ€.** `g1nation.datacollectCrawlDepth`(๊ธฐ๋ณธ 1)ยท`g1nation.datacollectMaxPages`(๊ธฐ๋ณธ 8) ์‹ ์„ค โ€” Astra Settings ํŒจ๋„ 'Datacollect' ์„น์…˜์—์„œ ํŽธ์ง‘. ๋ช…๋ น์–ด์—์„œ `/benchmark depth=2 pages=12` ๋กœ ๊ทธ๋•Œ๊ทธ๋•Œ ๋ฎ์–ด์“ฐ๊ธฐ ๊ฐ€๋Šฅ (์šฐ์„ ์ˆœ์œ„: ๋ช…๋ น์–ด > ์„ค์ • > ๊ธฐ๋ณธ๊ฐ’). - **๋ช…๋ น์–ด ๋ณด์กฐ ์ปจํ…์ŠคํŠธ.** `/benchmark [depth=N] [pages=N] <์ž์—ฐ์–ด ์„ค๋ช…>` ํ˜•ํƒœ๋กœ URL ๋’ค์— ๋ถ™์ธ ์ž์—ฐ์–ด๋Š” ํ•ฉ์„ฑ part 1ยท2์˜ ํ†ค ์ถ”์ • ๋ณด์กฐ ์ปจํ…์ŠคํŠธ๋กœ ์ „๋‹ฌ๋œ๋‹ค. - **์‹ ๊ทœ ํŒจํ‚ค์ง•:** `astra-2.2.39.vsix`. --- ## v2.2.38 (2026-05-20) ### ๐Ÿ› /benchmark URL ํŒŒ์‹ฑ fix โ€” ์ž์—ฐ์–ด ์„ž์ธ ์ž…๋ ฅ + ๋นˆ ๊ฒฐ๊ณผ ๊ฒฝ๊ณ  - **URL ํ† ํฐ๋งŒ ์ถ”์ถœ.** `/benchmark www.caliverse.io ๋ถ„์„ํ•ด์ค˜` ์ฒ˜๋Ÿผ URL ๋’ค์— ์ž์—ฐ์–ด๋ฅผ ๋ถ™์ด๋ฉด "๋ถ„์„ํ•ด์ค˜"๊นŒ์ง€ URL์— ์„ž์—ฌ `https://www.caliverse.io ๋ถ„์„ํ•ด์ค˜.` ๋ผ๋Š” ๋ฌดํšจ URL์ด ๋˜๊ณ , Playwright๊ฐ€ ํŽ˜์ด์ง€๋ฅผ ๋ชป ์—ด์–ด metaยท๋””์ž์ธยท๋งˆ์ดํฌ๋กœ์นดํ”ผ๊ฐ€ ์ „๋ถ€ `(์—†์Œ)`์œผ๋กœ ๋‚˜์˜ค๋˜ ๋ฌธ์ œ. ์ด์ œ arg์˜ ์ฒซ ๊ณต๋ฐฑ ์ „ ํ† ํฐ๋งŒ URL๋กœ ์‚ฌ์šฉํ•œ๋‹ค. (์Šค์บ”์€ Playwright ๊ฒฐ์ •๋ก ์  ์ถ”์ถœ์ด๋ผ local LLM๊ณผ ๋ฌด๊ด€ โ€” ๋นˆ ๊ฒฐ๊ณผ๋Š” LLM ๋ฌธ์ œ๊ฐ€ ์•„๋‹ˆ๋ผ URL ์˜ค์—ผ์ด์—ˆ๋‹ค.) - **๋นˆ ์Šค์บ” ๊ฒฐ๊ณผ ๊ฒฝ๊ณ .** ์Šค์บ”์ด ์—๋Ÿฌ ์—†์ด ๋๋‚˜๋„ metaยทdesignยทmicrocopy๊ฐ€ ๋ชจ๋‘ ๋น„๋ฉด โš ๏ธ ๊ฒฝ๊ณ ๋ฅผ ํ‘œ์‹œ โ€” URL ์˜คํƒ€ยท๋ด‡ ์ฐจ๋‹จยทJS ์ „์šฉ ๋ Œ๋”๋ง์„ ์‚ฌ์šฉ์ž๊ฐ€ ์ฆ‰์‹œ ์ธ์ง€. - **์‹ ๊ทœ ํŒจํ‚ค์ง•:** `astra-2.2.38.vsix`. --- ## v2.2.37 (2026-05-20) ### โœ… Slash ๊ฒฐ๊ณผ๋ฌผ ๋ฏธํ‘œ์‹œ ๊ทผ๋ณธ fix + /benchmark ์ง„ํ–‰ ํ‘œ์‹œยท๊ฒฐ๊ณผ๋ฌผ ์ €์žฅ - **`streamStart` ๋ˆ„๋ฝ ์ˆ˜์ • โ€” slash ๋ช…๋ น ๊ฒฐ๊ณผ๊ฐ€ ํ™”๋ฉด์— ์•ˆ ๋ณด์ด๋˜ ์ง„์งœ ์›์ธ.** v2.2.30์ด `streamEnd`(input ์ž ๊ธˆ ํ•ด์ œ)๋งŒ ๋ณด๋ƒˆ๊ณ  `streamStart`๋Š” ๋น ๋œจ๋ ธ๋‹ค. webview๋Š” `streamStart`๋ฅผ ๋ฐ›์•„์•ผ assistant ๋ฉ”์‹œ์ง€ ๋ฒ„๋ธ”(`streamBody`)์„ ๋งŒ๋“ค๊ณ , ๊ทธ๊ฒŒ ์—†์œผ๋ฉด ์ดํ›„ ๋ชจ๋“  `streamChunk`(=๊ฒฐ๊ณผ ํ…์ŠคํŠธ, ์—๋Ÿฌ ๋ฉ”์‹œ์ง€ ํฌํ•จ)๋ฅผ silently dropํ•œ๋‹ค. `handleSlashCommand` ์‹œ์ž‘๋ถ€์—์„œ `streamStart`๋ฅผ ๋ช…์‹œ์ ์œผ๋กœ ๋ณด๋‚ด๋„๋ก ์ˆ˜์ • โ€” `/research`ยท`/benchmark`ยท`/youtube`ยท`/blog` ๋ชจ๋‘ ๊ฒฐ๊ณผ๊ฐ€ ์ •์ƒ ํ‘œ์‹œ๋จ. - **`/benchmark` ์ง„ํ–‰ ํ‘œ์‹œ.** scan์€ ๋‹จ์ผ ๋™๊ธฐ ํ˜ธ์ถœ์ด๋ผ ์ง„ํ–‰๋ฅ  ์ŠคํŠธ๋ฆผ์ด ์—†์–ด ์‚ฌ์šฉ์ž๊ฐ€ ๋ฉˆ์ถ˜ ์ค„ ์˜คํ•ดํ•˜๋˜ ๋ฌธ์ œ โ†’ 4์ดˆ๋งˆ๋‹ค ๊ฒฝ๊ณผ ์‹œ๊ฐ„(`ยท4s ยท8s โ€ฆ`)์„ ํ•œ ์ค„์— ๋ˆ„์  ํ‘œ์‹œํ•˜๊ณ , ์™„๋ฃŒ ์‹œ `โœ… ์Šค์บ” ์™„๋ฃŒ (Ns ์†Œ์š”)` ์ถœ๋ ฅ. - **`/benchmark` ๊ฒฐ๊ณผ๋ฌผ ์ž๋™ ์ €์žฅ.** scan ๊ฒฐ๊ณผ๋ฅผ markdown ๋ฆฌํฌํŠธ๋กœ ํ•ฉ์„ฑํ•ด Bridge `/api/wiki/save`๋กœ ์ €์žฅ. ์ €์žฅ ์œ„์น˜๋Š” ์‹ ๊ทœ ์„ค์ • `g1nation.datacollectSavePath`(๋น„์šฐ๋ฉด Bridge์˜ `WIKI_RAW_PATH` ํ™˜๊ฒฝ๋ณ€์ˆ˜๊ฐ€ ๊ฒฐ์ • โ€” ์ฝ”๋“œ์— ์ ˆ๋Œ€๊ฒฝ๋กœ ํ•˜๋“œ์ฝ”๋”ฉ ์—†์Œ). - **Settings ํŒจ๋„์— "Datacollect" ์„น์…˜ ์ถ”๊ฐ€.** Bridge URL๊ณผ ๊ฒฐ๊ณผ๋ฌผ ์ €์žฅ ํด๋”๋ฅผ Astra Settings ํŒจ๋„์—์„œ ์ง์ ‘ ํŽธ์ง‘ ๊ฐ€๋Šฅ. - **์‹ ๊ทœ ํŒจํ‚ค์ง•:** `astra-2.2.37.vsix`. --- ## v2.2.36 (2026-05-20) ### ๐Ÿ› ๏ธ Antigravity ๋นŒํŠธ์ธ "Connect AI"์™€์˜ view ์ถฉ๋Œ ํ•ด์†Œ - **์‚ฌ์šฉ์ž ๋ณด๊ณ  console์— `Connect AI extension activated` + ์šฐ๋ฆฌ `[ASTRA-DEBUG]` ๋กœ๊ทธ 0๊ฐœ** โ†’ ์šฐ๋ฆฌ vsix activate ํ•จ์ˆ˜๊ฐ€ ํ˜ธ์ถœ์กฐ์ฐจ ์•ˆ ๋˜๊ณ  ์žˆ๋‹ค๋Š” ๊ฒฐ์ •์  ์ฆ๊ฑฐ. Antigravity๊ฐ€ ๋นŒํŠธ์ธ์œผ๋กœ ๊ฐ€์ง„ "Connect AI" extension์ด ์šฐ๋ฆฌ view container id `astra-activity` / view id `astra-launcher` / title `Astra` ์˜์—ญ๊ณผ ์ถฉ๋Œํ•ด ์šฐ๋ฆฌ ์ฝ”๋“œ๋ฅผ ๋ฎ์€ ๊ฒƒ์œผ๋กœ ์ถ”์ •. - **view container/view id๋ฅผ uniqueํ•˜๊ฒŒ ๋ณ€๊ฒฝ**: `astra-activity` โ†’ `g1nation-astra-activity`, `astra-launcher` โ†’ `g1nation-astra-launcher`, title `Astra` โ†’ `Astra (g1nation)`. ์ขŒ์ธก ํ™œ์„ฑ๋ฐ”์— ๋นŒํŠธ์ธ๊ณผ ๋ณ„๋„์˜ ์šฐ๋ฆฌ ์•„์ด์ฝ˜์ด ํ‘œ์‹œ๋˜๋ฉฐ, ๊ทธ ์•„์ด์ฝ˜ ํด๋ฆญ ์‹œ ์šฐ๋ฆฌ activate๊ฐ€ ํ˜ธ์ถœ๋จ. - **์‹ ๊ทœ ํŒจํ‚ค์ง•:** `astra-2.2.36.vsix`. --- ## v2.2.35 (2026-05-20) ### ๐Ÿ› ๏ธ Slash ๋ฏธ๋™์ž‘ ๊ฒฐ์ •์  fix: globalState ์ด์ „ ์ง„์ž… + DevTools console ์ง„๋‹จ - **globalState write๋ณด๋‹ค *๋จผ์ €* slash ๋ถ„๊ธฐ๋ฅผ ์žก๋„๋ก ๋ณ€๊ฒฝ.** `g1nation.astra` global state๊ฐ€ ~917KB๋กœ ๋ˆ„์ ๋œ ํ™˜๊ฒฝ์—์„œ `globalState.update` ํ˜ธ์ถœ์ด ์ฒซ prompt๋ฅผ ์ง€์—ฐ/hang์‹œํ‚ค๋Š” ์‚ฌ๋ก€ ๋ณด๊ณ ๋จ. slash ๋ช…๋ น์€ LLM/blank-chat state ๊ฐฑ์‹ ๊ณผ ๋ฌด๊ด€ํ•˜๋ฏ€๋กœ update๋ฅผ ๊ฑด๋„ˆ๋›ด๋‹ค. - **DevTools console์— ASTRA-DEBUG trace.** OutputChannel(`logInfo`)ยทpopupยทstatusbar์— ๋”ํ•ด `console.error`๋กœ `[ASTRA-DEBUG] activate vX.Y.Z`, `[ASTRA-DEBUG] prompt case entered`, `[ASTRA-DEBUG] slash check matched=โ€ฆ`, `[ASTRA-DEBUG] slashRouter handleSlashCommand`์„ ์ถœ๋ ฅ. ์‚ฌ์šฉ์ž๊ฐ€ F12 DevTools console์„ ๋ณผ ๋•Œ ์šฐ๋ฆฌ ์ฝ”๋“œ ์‹คํ–‰ ๋‹จ๊ณ„๊ฐ€ ์ฆ‰์‹œ ๋ณด์ž„. - **์‹ ๊ทœ ํŒจํ‚ค์ง•:** `astra-2.2.35.vsix`. --- ## v2.2.34 (2026-05-19) ### ๐Ÿšจ ๊ฒฐ์ •์  ์ง„๋‹จ: activate / slash ์ง„์ž… popup notification - **Activation ์‹œ์  popup:** VS Code/Antigravity๊ฐ€ ์‹œ์ž‘๋  ๋•Œ ํ™”๋ฉด ์šฐ์ธก ํ•˜๋‹จ์— `๐Ÿ“ก Astra vX.Y.Z activated (PID=...)` ์•Œ๋ฆผ. ์šฐ๋ฆฌ vsix๊ฐ€ ์‹ค์ œ๋กœ ํ™œ์„ฑํ™”๋๋Š”์ง€ 1์ดˆ ์•ˆ์— ํ™•์ธ ๊ฐ€๋Šฅ. ๊ฐ™์€ ์ด๋ฆ„์˜ ๋นŒํŠธ์ธ extension์ด ์šฐ๋ฆฌ ์ฝ”๋“œ๋ฅผ ๊ฐ€๋ฆฌ๋Š” ์ผ€์ด์Šค ๋ฐœ๊ฒฌ์šฉ. - **Slash ์ง„์ž… popup:** `/research`, `/benchmark`, `/youtube`, `/blog` ๋ช…๋ น์ด slashRouter์— ๋„๋‹ฌํ•˜๋ฉด `๐Ÿ“ป Datacollect Radio: /benchmark ์ง„์ž…` ์•Œ๋ฆผ. OutputChannel ์•ˆ ๋ณด๊ณ ๋„ ๊ฒฐ์ •. - **์‹ ๊ทœ ํŒจํ‚ค์ง•:** `astra-2.2.34.vsix`. --- ## v2.2.33 (2026-05-19) ### ๐Ÿ” Slash ๋ช…๋ น ์ง„๋‹จ: dispatch root ๋กœ๊น… + StatusBar toast - **dispatch root ์ง„์ž… trace:** webview์—์„œ ๋“ค์–ด์˜ค๋Š” ๋ชจ๋“  ๋ฉ”์‹œ์ง€(type + value preview)๋ฅผ OutputChannel(Astra)์— log. "๋ฉ”์‹œ์ง€๊ฐ€ ์ง„์งœ๋กœ Astra์— ๋„์ฐฉํ–ˆ๋Š”์ง€"๋ถ€ํ„ฐ ๊ฒฐ์ •์ ์œผ๋กœ ํŒ๋ณ„ ๊ฐ€๋Šฅ. - **StatusBar 5์ดˆ toast:** `/research`, `/benchmark`, `/youtube`, `/blog` ๋ช…๋ น์ด slashRouter์— ์ง„์ž…ํ•˜๋ฉด VS Code ํ•˜๋‹จ StatusBar์— `๐Ÿ“ป Datacollect Radio: /benchmark ์ฒ˜๋ฆฌ ์ค‘โ€ฆ` ํ‘œ์‹œ. OutputChannel ๋ชป ๋ด๋„ ์ง„์ž… ์ž์ฒด๋ฅผ ์ฆ‰์‹œ ํ™•์ธ. - **์‹ ๊ทœ ํŒจํ‚ค์ง•:** `astra-2.2.33.vsix` ํŒจํ‚ค์ง€๋กœ ๋ฐฐํฌํ•ฉ๋‹ˆ๋‹ค. --- ## v2.2.32 (2026-05-19) ### ๐Ÿ”ฌ Datacollect Radio: ์Šฌ๋ž˜์‹œ ๋ช…๋ น ์ง„๋‹จ ๋กœ๊น… ๊ฐ•ํ™” - **OutputChannel(Astra)์— ๋‹จ๊ณ„๋ณ„ trace ์ถ”๊ฐ€:** `[SLASH] prompt received`, `[SLASH] handleSlashCommand start/finished/error` ๋ผ์ธ์„ logInfo๋กœ ์ถœ๋ ฅ. "/benchmark ์ž…๋ ฅํ–ˆ๋Š”๋ฐ ์•„๋ฌด ์‘๋‹ต ์—†์Œ" ๊ฐ™์€ ๋ณด๊ณ ๊ฐ€ ๋“ค์–ด์™”์„ ๋•Œ ์–ด๋””์„œ ๋ง‰ํ˜”๋Š”์ง€ (๋ถ„๊ธฐ ์ง„์ž… ์—ฌ๋ถ€ / webview ๋ถ€์žฌ / bridge ํ˜ธ์ถœ ์‹คํŒจ) ์ฆ‰์‹œ ํŒ๋ณ„ ๊ฐ€๋Šฅ. - **webview ๋ถ€์žฌ ์‹œ ์ฆ‰์‹œ ์‚ฌ์šฉ์ž ์•Œ๋ฆผ:** `provider._view`๊ฐ€ undefined๋ฉด chunk ๋ฉ”์‹œ์ง€๊ฐ€ silently drop๋˜์–ด ์‚ฌ์šฉ์ž๊ฐ€ ๋ฌดํ•œ ๋กœ๋”ฉ์œผ๋กœ ๋ณด์˜€์Šต๋‹ˆ๋‹ค. ์ด์ œ ๊ทธ ๊ฒฝ์šฐ VS Code notification์œผ๋กœ *"์ฑ„ํŒ… webview๊ฐ€ ํ™œ์„ฑ ์ƒํƒœ๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค"* ์•ˆ๋‚ด. - **์‹ ๊ทœ ํŒจํ‚ค์ง•:** `astra-2.2.32.vsix` ํŒจํ‚ค์ง€๋กœ ๋ฐฐํฌํ•ฉ๋‹ˆ๋‹ค. --- ## v2.2.30 (2026-05-19) ### ๐Ÿ”“ Datacollect Radio: ์Šฌ๋ž˜์‹œ ๋ช…๋ น ํ›„ ์ฑ„ํŒ… input ์ž๋™ ํ•ด์ œ - **์Šฌ๋ž˜์‹œ ๋ช…๋ น(`/research`, `/benchmark`, `/youtube`, `/blog`) ์ข…๋ฃŒ ์‹œ `streamEnd` ์‹ ํ˜ธ ๋ˆ„๋ฝ ์ˆ˜์ •.** Astra ์ฑ„ํŒ… input์€ streamEnd ๋ฉ”์‹œ์ง€๋กœ ์ž ๊ธˆ์ด ํ’€๋ฆฌ๋Š”๋ฐ, ์šฐ๋ฆฌ slashRouter๋Š” ์ผ๋ฐ˜ LLM streamer๋ฅผ ์šฐํšŒํ•ด bridge๋ฅผ ์ง์ ‘ ํ˜ธ์ถœํ•˜๋ฏ€๋กœ ์ž๋™์œผ๋กœ ์‹ ํ˜ธ๊ฐ€ ์•ˆ ๊ฐ€๋˜ ์ƒํƒœ. ์‚ฌ์šฉ์ž๊ฐ€ `/benchmark`๋ฅผ ์ž…๋ ฅํ•˜๋ฉด ๊ฒฐ๊ณผ๊ฐ€ ์ฑ„ํŒ…์— ํ‘œ์‹œ๋ผ๋„ input์ด ์˜์›ํžˆ ์ž ๊ธด ์ฑ„ ๋ฌดํ•œ ๋กœ๋”ฉ์œผ๋กœ ๋ณด์˜€์Šต๋‹ˆ๋‹ค. - **`try/finally`๋กœ streamEnd ๋ณด์žฅ.** timeout / ์—๋Ÿฌ / ์ •์ƒ ์ข…๋ฃŒ ์–ด๋–ค ๊ฒฝ๋กœ๋“  input์ด ํ’€๋ฆฌ๋„๋ก ๊ฐ•์ œ. - **์‹ ๊ทœ ํŒจํ‚ค์ง•:** `astra-2.2.30.vsix` ํŒจํ‚ค์ง€๋กœ ๋ฐฐํฌํ•ฉ๋‹ˆ๋‹ค. --- ## v2.2.29 (2026-05-19) ### โฑ๏ธ Datacollect Radio: NotebookLM ๋ฆฌ์„œ์น˜ ํƒ€์ž„์•„์›ƒ ์™„ํ™” - **`/research` ๋ช…๋ น์˜ `import` ๋‹จ๊ณ„ ํƒ€์ž„์•„์›ƒ์„ 120s โ†’ 300s๋กœ ํ™•๋Œ€**: NotebookLM์ด deep research ๊ฒฐ๊ณผ๋ฅผ ๋…ธํŠธ๋ถ ์†Œ์Šค๋กœ ์˜ฎ๊ธธ ๋•Œ ํฐ ๋ฆฌํฌํŠธ๋Š” 2~5๋ถ„์ด ๊ฑธ๋ ค ๊ธฐ์กด 120s cap์—์„œ `TRANSIENT_TIMEOUT`์œผ๋กœ ๋–จ์–ด์ง€๊ณ  ์ •์ž‘ ๋ฐฑ์—”๋“œ๋Š” ์ •์ƒ ์ฒ˜๋ฆฌ ์ค‘์ธ race๊ฐ€ ๋ณด๊ณ ๋ผ ์ˆ˜์ •. - **`synthesize` ๋‹จ๊ณ„ ํƒ€์ž„์•„์›ƒ 300s โ†’ 600s**: ํฐ ๋…ธํŠธ๋ถ์˜ LLM ํ•ฉ์„ฑ์ด 5~10๋ถ„ ๊ฑธ๋ฆฌ๋Š” ๊ฒฝ์šฐ cover. - **`status` polling ํƒ€์ž„์•„์›ƒ 30s โ†’ 60s**: MCP ์ž์‹ ํ”„๋กœ์„ธ์Šค๊ฐ€ stale์ผ ๋•Œ 30s ์•ˆ์— ์‘๋‹ต ๋ชป ํ•˜๋Š” ์‚ฌ๋ก€ ์™„ํ™”. (๊ฐ™์€ ์ด์Šˆ๋Š” [Wiki/Datacollect ํ”„๋กœ์ ํŠธ](e:\Wiki\Datacollect)์˜ [engine.ts](e:\Wiki\Datacollect\src\lib\engine.ts)์—๋„ ๋™์ผํ•œ ๊ฐ’์œผ๋กœ ์ˆ˜์ • ์™„๋ฃŒ) - **์‹ ๊ทœ ํŒจํ‚ค์ง•:** `astra-2.2.29.vsix` ํŒจํ‚ค์ง€๋กœ ๋ฐฐํฌํ•ฉ๋‹ˆ๋‹ค. --- ## v2.2.28 (2026-05-19) ### ๐Ÿ“ป Datacollect Radio: ์ฑ„ํŒ… ์Šฌ๋ž˜์‹œ ๋ช…๋ น์œผ๋กœ ์™ธ๋ถ€ ๋„๊ตฌ ํ†ตํ•ฉ - **์ƒˆ UI ๋ฒ„ํŠผ ์—†์ด ์ฑ„ํŒ… ํ•œ ์ค„๋กœ ์™ธ๋ถ€ ํŒŒ์ดํ”„๋ผ์ธ ํ˜ธ์ถœ:** Astra ์ฑ„ํŒ…์—์„œ `/research`, `/benchmark`, `/youtube`, `/blog` ์Šฌ๋ž˜์‹œ ๋ช…๋ น์œผ๋กœ ๋ณ„๋„์˜ [Wiki/Datacollect ํ”„๋กœ์ ํŠธ](e:\Wiki\Datacollect) bridge(๊ธฐ๋ณธ `http://127.0.0.1:3002`)์˜ ๋ฌด๊ฑฐ์šด ๊ธฐ๋Šฅ์„ ์ง์ ‘ ๋ผ์šฐํŒ…ํ•ฉ๋‹ˆ๋‹ค. - **/research \<์ฃผ์ œ\>:** NotebookLM Deep Research ์ „์ฒด ํŒŒ์ดํ”„๋ผ์ธ(notebook ์ƒ์„ฑ โ†’ status polling โ†’ import โ†’ synthesize)์„ ์ฑ„ํŒ…์—์„œ ํ•œ ๋ฒˆ์— ์‹คํ–‰ํ•˜๊ณ  ๊ฒฐ๊ณผ ๋งˆํฌ๋‹ค์šด์„ ์ŠคํŠธ๋ฆฌ๋ฐ์œผ๋กœ ๋ฐ›์Šต๋‹ˆ๋‹ค. - **/benchmark \:** Playwright ๊ธฐ๋ฐ˜ ์›น์‚ฌ์ดํŠธ ๋ถ„์„ โ€” ๋””์ž์ธ ํ† ํฐ, ์ปฌ๋Ÿฌ ํŒ”๋ ˆํŠธ, ์‚ฌ์ดํŠธ๋งต ASCII ๋‹ค์ด์–ด๊ทธ๋žจ, ๋งˆ์ดํฌ๋กœ์นดํ”ผ๋ฅผ ์š”์•ฝํ•ด ์ฑ„ํŒ…์— ํ‘œ์‹œ. - **/youtube \:** ์˜์ƒ metadata + transcript๋ฅผ ์ถ”์ถœํ•ด ์ฑ•ํ„ฐ/ํƒœ๊ทธ/๋ณธ๋ฌธ ๋ฏธ๋ฆฌ๋ณด๊ธฐ๊นŒ์ง€ ํ•œ ๋ฒˆ์—. - **/blog \<ํ‚ค์›Œ๋“œ\>:** Datacollect Blog Pipeline ํŽ˜์ด์ง€(http://127.0.0.1:8787/blog/)๋ฅผ ์ž๋™ ์˜คํ”ˆ (Bridge์— ๋Œ€์‘ API๊ฐ€ ์ถ”๊ฐ€๋˜๋ฉด ์ฑ„ํŒ… ์ง์ ‘ ์‹คํ–‰๋„ ์ง€์› ์˜ˆ์ •). - **LLM ํ† ํฐ ์ ˆ์•ฝ:** ์Šฌ๋ž˜์‹œ ๋ช…๋ น์€ ํšŒ์‚ฌ ๋ชจ๋“œ/์ผ๋ฐ˜ chat ๋ถ„๊ธฐ *์ „์—* ์žกํžˆ๋ฏ€๋กœ ๋ชจ๋ธ ๋น„์šฉ ์—†์ด ์ฒ˜๋ฆฌ๋ฉ๋‹ˆ๋‹ค. ์ง„ํ–‰์ƒํ™ฉยท๊ฒฐ๊ณผ๋Š” ์ผ๋ฐ˜ LLM ์‘๋‹ต๊ณผ ๊ฐ™์€ ์ž๋ฆฌ(`streamChunk`)์— ํ‘œ์‹œ. - **์„ค์ • ์ถ”๊ฐ€:** `g1nation.datacollectBridgeUrl` (default `http://127.0.0.1:3002`)๋กœ bridge ์œ„์น˜ override ๊ฐ€๋Šฅ. Datacollect๋Š” `npm run bridge`๋กœ ๋ฏธ๋ฆฌ ๋„์›Œ ๋‘์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. - **์‹ ๊ทœ ํŒจํ‚ค์ง•:** `astra-2.2.28.vsix` ํŒจํ‚ค์ง€๋กœ ๋ฐฐํฌํ•ฉ๋‹ˆ๋‹ค. --- ## v2.2.19 (2026-05-16) ### โ˜๏ธ Cloud Model Providers Support: OpenRouter, Anthropic, Gemini - **ํด๋ผ์šฐ๋“œ ๋ชจ๋ธ ํ”„๋กœ๋ฐ”์ด๋” ํ†ตํ•ฉ:** ์ด์ œ ๋กœ์ปฌ ๋ชจ๋ธ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ OpenRouter, Anthropic, Gemini ๋“ฑ ์ฃผ์š” ํด๋ผ์šฐ๋“œ AI ๋ชจ๋ธ์„ ์ง์ ‘ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. - **๋ชจ๋ธ ์ ‘๋‘์‚ฌ ๋ผ์šฐํŒ…(Prefix Routing) ๋„์ž…:** ๋ชจ๋ธ๋ช… ์•ž์— `openrouter:`, `anthropic:`, `gemini:` ์ ‘๋‘์‚ฌ๋ฅผ ๋ถ™์—ฌ ์›ํ•˜๋Š” ์„œ๋น„์Šค๋กœ ์ž๋™ ๋ผ์šฐํŒ…๋˜๋Š” ์ง€๋Šฅํ˜• ์—”์ง„์„ ํƒ‘์žฌํ–ˆ์Šต๋‹ˆ๋‹ค. - **OpenAI ํ˜ธํ™˜ ์ŠคํŠธ๋ฆฌ๋ฐ ์–ด๋Œ‘ํ„ฐ:** ํด๋ผ์šฐ๋“œ ๊ฐ์‚ฌ์˜ ๋…์ž์ ์ธ ์‘๋‹ต ํ˜•์‹์„ OpenAI ํ˜ธํ™˜ SSE ์ŠคํŠธ๋ฆผ์œผ๋กœ ๋ณ€ํ™˜ํ•˜์—ฌ, ๊ธฐ์กด ์•„์ŠคํŠธ๋ผ์˜ ๋ชจ๋“  ๋ถ„์„ ๊ธฐ๋Šฅ์„ ํด๋ผ์šฐ๋“œ ๋ชจ๋ธ์—์„œ๋„ ๋™์ผํ•˜๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ๊ตฌํ˜„ํ–ˆ์Šต๋‹ˆ๋‹ค. - **ํ•˜์ด๋ธŒ๋ฆฌ๋“œ ์ถ”๋ก  ํ™˜๊ฒฝ ๊ตฌ์ถ•:** ์ง€๋Šฅ์ด ํ•„์š”ํ•œ ์ž‘์—…์€ ํด๋ผ์šฐ๋“œ ๋Œ€ํ˜• ๋ชจ๋ธ๋กœ, ๋ณด์•ˆ์ด ์ค‘์š”ํ•œ ์ฝ”๋”ฉ ์ž‘์—…์€ ๋กœ์ปฌ ๋ชจ๋ธ๋กœ ์ˆ˜ํ–‰ํ•˜๋Š” ์œ ์—ฐํ•œ ์›Œํฌํ”Œ๋กœ์šฐ ๊ธฐ๋ฐ˜์„ ๋งˆ๋ จํ–ˆ์Šต๋‹ˆ๋‹ค. - **์‹ ๊ทœ ํŒจํ‚ค์ง•:** `astra-2.2.19.vsix` ํŒจํ‚ค์ง€๋ฅผ ํ†ตํ•ด ๋กœ์ปฌ๊ณผ ํด๋ผ์šฐ๋“œ๋ฅผ ์•„์šฐ๋ฅด๋Š” ํ•˜์ด๋ธŒ๋ฆฌ๋“œ ์ง€๋Šฅํ˜• ๋ ˆ์ด์•„์›ƒ์„ ๋ฐฐํฌํ•ฉ๋‹ˆ๋‹ค. --- ## v2.2.18 (2026-05-16) ### ๐Ÿ—๏ธ Dynamic Office Auto-Layout & Legacy Cleanup - **๋™์  ์˜คํ”ผ์Šค ๋ ˆ์ด์•„์›ƒ(Dynamic Auto-Layout) ์—”์ง„ ๋„์ž…:** ํŒ€์› ์ˆ˜์— ๋”ฐ๋ผ ์ฑ…์ƒ ๋ฐฐ์น˜๋ฅผ 1~3์—ด๋กœ ์ž๋™ ์ •๋ ฌํ•˜๋Š” ์ง€๋Šฅํ˜• ๋ ˆ์ด์•„์›ƒ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ํƒ‘์žฌํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด์ œ ํŒ€์› ์ˆ˜์— ๊ด€๊ณ„์—†์ด ์ตœ์ ํ™”๋œ ์˜คํ”ผ์Šค ๋ทฐ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. - **๋ ˆ๊ฑฐ์‹œ ๋ ˆ์ด์•„์›ƒ ๊ฐ์ง€ ๋ฐ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜:** ๊ตฌ ๋ฒ„์ „์˜ ๊ณ ์ •ํ˜•(8์„) ๋ ˆ์ด์•„์›ƒ์„ ์ž๋™์œผ๋กœ ๊ฐ์ง€ํ•˜์—ฌ ์ตœ์‹  ๋™์  ๋ ˆ์ด์•„์›ƒ์œผ๋กœ ์ „ํ™˜ํ•˜๋Š” ๋กœ์ง์„ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค. - **์Šคํ…Œ์ด์ง€ ๋ฐธ๋Ÿฐ์Šค ์กฐ์ •:** CEO ์ฑ…์ƒ ์œ„์น˜๋ฅผ ์ค‘์•™ ํ•˜๋‹จ์œผ๋กœ ์žฌ๋ฐฐ์น˜ํ•˜๊ณ , ์ „๋ฐ˜์ ์ธ ์˜ค๋ธŒ์ ํŠธ ํฌ๊ธฐ์™€ ๊ฐ„๊ฒฉ์„ ์กฐ์ •ํ•˜์—ฌ ์‹œ๊ฐ์  ์•ˆ์ •์„ฑ์„ ๋†’์˜€์Šต๋‹ˆ๋‹ค. - **์˜คํ”ผ์Šค ๋™๊ธฐํ™” ๋กœ์ง ๊ฐ•ํ™”:** ์ž‘์—… ํ๋ฆ„(Pipeline)์ด ์—†์„ ๋•Œ๋„ ํ™œ์„ฑ ํŒ€์›(Roster) ๊ธฐ๋ฐ˜์œผ๋กœ ์˜คํ”ผ์Šค๊ฐ€ ์ž๋™ ๊ตฌ์„ฑ๋˜๋„๋ก ๋™๊ธฐํ™” ์—”์ง„์„ ๊ฐœ์„ ํ–ˆ์Šต๋‹ˆ๋‹ค. - **์‹ ๊ทœ ํŒจํ‚ค์ง•:** `astra-2.2.18.vsix` ํŒจํ‚ค์ง€๋ฅผ ํ†ตํ•ด ํŒ€ ๊ทœ๋ชจ์— ๋”ฐ๋ผ ์œ ์—ฐํ•˜๊ฒŒ ๋ณ€ํ•˜๋Š” ์ง€๋Šฅํ˜• ์˜คํ”ผ์Šค ํ™˜๊ฒฝ์„ ๋ฐฐํฌํ•ฉ๋‹ˆ๋‹ค. --- ## v2.2.17 (2026-05-16) ### โš™๏ธ Google Service Control & Astra Office Flow Layer - **๊ตฌ๊ธ€ ์„œ๋น„์Šค ์„ค์ • ํŒจ๋„(Google Control) ๋„์ž…:** ์„ค์ • ํŒจ๋„ ๋‚ด์— ๊ตฌ๊ธ€ ์บ˜๋ฆฐ๋” OAuth ์—ฐ๊ฒฐ, iCal ๋™๊ธฐํ™”, ํด๋ผ์ด์–ธํŠธ ์ž๊ฒฉ ์ฆ๋ช… ๊ด€๋ฆฌ๋ฅผ ์œ„ํ•œ ์ „์šฉ ์„น์…˜์„ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค. - **์•„์ŠคํŠธ๋ผ ์˜คํ”ผ์Šค ํ”Œ๋กœ์šฐ ๋ ˆ์ด์–ด(Flow Layer) ํƒ‘์žฌ:** ์˜คํ”ผ์Šค ์Šคํ…Œ์ด์ง€ ์ƒ๋‹จ์— SVG ๊ธฐ๋ฐ˜์˜ ํ”Œ๋กœ์šฐ ๋ ˆ์ด์–ด๋ฅผ ์ถ”๊ฐ€ํ•˜์—ฌ ์—์ด์ „ํŠธ ๊ฐ„์˜ ๊ด€๊ณ„๋‚˜ ์ž‘์—… ํ๋ฆ„์„ ์‹œ๊ฐํ™”ํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ์ˆ ์  ๊ธฐ๋ฐ˜์„ ๋งˆ๋ จํ–ˆ์Šต๋‹ˆ๋‹ค. - **๋ฐฐ๊ฒฝ ์ตœ์ ํ™”:** ์•„์ŠคํŠธ๋ผ ์˜คํ”ผ์Šค V2 ์ „์šฉ ๋ฐฑ๋“œ๋กญ ์ž์‚ฐ์„ ์ถ”๊ฐ€ํ•˜๊ณ  ๋””์ž์ธ ๋””ํ…Œ์ผ์„ ๊ฐœ์„ ํ–ˆ์Šต๋‹ˆ๋‹ค. - **์‹ค์‹œ๊ฐ„ ๋™๊ธฐํ™” ๊ฐ•ํ™”:** ์„ค์ • ๋ณ€๊ฒฝ ์‹œ ์ฆ‰์‹œ ์˜คํ”ผ์Šค ์ƒํƒœ์™€ ์บ˜๋ฆฐ๋” ์บ์‹œ์— ๋ฐ˜์˜๋˜๋„๋ก ๋ฐฑ์—”๋“œ ํ•ธ๋“ค๋Ÿฌ๋ฅผ ์ •๊ตํ™”ํ–ˆ์Šต๋‹ˆ๋‹ค. - **์‹ ๊ทœ ํŒจํ‚ค์ง•:** `astra-2.2.17.vsix` ํŒจํ‚ค์ง€๋ฅผ ํ†ตํ•ด ๊ตฌ๊ธ€ ์—ฐ๋™ ์ œ์–ด๊ถŒ์ด ๊ฐ•ํ™”๋œ ์ตœ์‹  ๋ฒ„์ „์„ ๋ฐฐํฌํ•ฉ๋‹ˆ๋‹ค. --- ## v2.2.16 (2026-05-16) ### ๐Ÿข Astra Office UI Overhaul: Operations Floor Experience - **์ฐจ์„ธ๋Œ€ ์˜คํ”ผ์Šค UI ๋„์ž…:** ๋‹จ์ˆœํ•œ ๋ทฐ์–ด๋ฅผ ๋„˜์–ด ์‹ค์ œ ์šด์˜ ๋ณธ๋ถ€(Operations Floor)์˜ ๋А๋‚Œ์„ ์ฃผ๋Š” ๋Œ€๋Œ€์ ์ธ ์ธํ„ฐํŽ˜์ด์Šค ๊ฐœํŽธ์„ ๋‹จํ–‰ํ–ˆ์Šต๋‹ˆ๋‹ค. - **๋ฐ์ดํ„ฐ ๊ธฐ๋ฐ˜ ์‚ฌ์ด๋“œ ํŒจ๋„:** ์—์ด์ „ํŠธ ๋ผ์ธ์—…(Team), ์šด์˜ ๋ธŒ๋ฆฌํ”„(Signal), ํ™œ๋™ ๋„ํฌ(Activity Dock) ๋“ฑ ์ „๋ฌธ์ ์ธ ์ •๋ณด ๋ ˆ์ด์•„์›ƒ์„ ํƒ‘์žฌํ–ˆ์Šต๋‹ˆ๋‹ค. - **๋น„์ฃผ์–ผ ๊ฒฝํ—˜ ๊ณ ๋„ํ™”:** ๊ธ€๋ž˜์Šค๋ชจํ”ผ์ฆ˜(Glassmorphism)๊ณผ ๊ทธ๋ผ๋ฐ์ด์…˜ ๋ฐฑ๊ทธ๋ผ์šด๋“œ, ์ •๊ตํ•œ ์ƒํƒœ ๋ฐฐ์ง€(Pills)๋ฅผ ํ†ตํ•ด ๋”์šฑ ํ”„๋ฆฌ๋ฏธ์—„ํ•œ ๋ฃฉ์•คํ•„์„ ๊ตฌํ˜„ํ–ˆ์Šต๋‹ˆ๋‹ค. - **์ง„ํ–‰ ์ƒํ™ฉ ๊ฐ€์‹œํ™”:** ๋ฏธ์…˜๋ณ„ ์ง„ํ–‰๋ฅ , ๋‹จ๊ณ„ ๋ณด๊ณ , ์ฃผ์˜ ์‹ ํ˜ธ ๊ฐ์ง€ ๋“ฑ ์—์ด์ „ํŠธ์˜ ์ž‘์—… ํ๋ฆ„์„ ํ•œ๋ˆˆ์— ํŒŒ์•…ํ•  ์ˆ˜ ์žˆ๋Š” ๋Œ€์‹œ๋ณด๋“œ ๊ธฐ๋Šฅ์„ ๊ฐ•ํ™”ํ–ˆ์Šต๋‹ˆ๋‹ค. - **๊ตฌ๊ธ€ ์บ˜๋ฆฐ๋” OAuth ์—ฐ๋™ ๊ธฐ๋ฐ˜ ๋งˆ๋ จ:** ๊ตฌ๊ธ€ ์บ˜๋ฆฐ๋”์™€์˜ ์ •์‹ ์—ฐ๋™์„ ์œ„ํ•œ ์ธ์ฆ ์‹œ์Šคํ…œ ๋ฐ ๊ตฌํ˜„ ๊ธฐ๋ก์„ ํ†ตํ•ฉํ–ˆ์Šต๋‹ˆ๋‹ค. - **์‹ ๊ทœ ํŒจํ‚ค์ง•:** `astra-2.2.16.vsix` ํŒจํ‚ค์ง€๋ฅผ ํ†ตํ•ด ๋”์šฑ ๊ฐ•๋ ฅํ•˜๊ณ  ์•„๋ฆ„๋‹ค์›Œ์ง„ ์•„์ŠคํŠธ๋ผ ์˜คํ”ผ์Šค๋ฅผ ๋ฐฐํฌํ•ฉ๋‹ˆ๋‹ค. --- ## v2.2.15 (2026-05-16) ### ๐Ÿ’Ž Astra Office Refactor & Multi-Service Integration (Calendar, Sheets, Tasks) - **์•„์ŠคํŠธ๋ผ ์˜คํ”ผ์Šค(Astra Office) ๋Œ€๊ทœ๋ชจ ๋ฆฌํŒฉํ† ๋ง:** ๋ชจ๋†€๋ฆฌ์‹ ๊ตฌ์กฐ์—์„œ ๊ธฐ๋Šฅ ๊ธฐ๋ฐ˜ ๋ชจ๋“ˆ ๊ตฌ์กฐ(`src/features/astraOffice/`)๋กœ ์ „๋ฉด ๊ฐœํŽธํ–ˆ์Šต๋‹ˆ๋‹ค. `OfficeSnapshot` ๋ฐ์ดํ„ฐ ๋ชจ๋ธ ๋„์ž…์„ ํ†ตํ•ด ์—์ด์ „ํŠธ์˜ ํ™œ๋™ ๊ฐ€์‹œ์„ฑ๊ณผ ๋ ˆ์ด์•„์›ƒ ๊ด€๋ฆฌ ๋Šฅ๋ ฅ์„ ํ˜์‹ ์ ์œผ๋กœ ๊ฐœ์„ ํ–ˆ์Šต๋‹ˆ๋‹ค. - **์บ˜๋ฆฐ๋”(Calendar) ์—ฐ๋™:** ICS ํŒŒ์ผ ๋ถ„์„ ๋ฐ ์ผ์ • ๊ด€๋ฆฌ ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ•˜์—ฌ ์—์ด์ „ํŠธ๊ฐ€ ์ผ์ • ๊ธฐ๋ฐ˜์˜ ๋งฅ๋ฝ์„ ์ธ์ง€ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ–ˆ์Šต๋‹ˆ๋‹ค. - **์‹œํŠธ(Sheets) ๋ฐ ํƒœ์Šคํฌ(Tasks) ๊ด€๋ฆฌ:** ๊ตฌ๊ธ€ ์‹œํŠธ ์Šคํƒ€์ผ์˜ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ์™€ ๊ณ„์ธต์  ์ž‘์—… ๊ด€๋ฆฌ(Task Store) ์—”์ง„์„ ํƒ‘์žฌํ•˜์—ฌ ์ƒ์‚ฐ์„ฑ ๋„๊ตฌ๋กœ์„œ์˜ ๊ธฐ๋Šฅ์„ ๊ฐ•ํ™”ํ–ˆ์Šต๋‹ˆ๋‹ค. - **์—์ด์ „ํŠธ ์—”์ง„ ๋ณต์›๋ ฅ ๊ณ ๋„ํ™”:** ๋””์ŠคํŒจ์ฒ˜์™€ ํ”„๋กฌํ”„ํŠธ ๋นŒ๋”์˜ ์ •ํ•ฉ์„ฑ์„ ๊ฐœ์„ ํ•˜๊ณ , ๋ณตํ•ฉ ํŒŒ์ดํ”„๋ผ์ธ ์ˆ˜ํ–‰ ์‹œ์˜ ์•ˆ์ •์„ฑ์„ ๋†’์˜€์Šต๋‹ˆ๋‹ค. - **์‹ ๊ทœ ํŒจํ‚ค์ง•:** `astra-2.2.15.vsix` ํŒจํ‚ค์ง€๋ฅผ ํ†ตํ•ด ์ฐจ์„ธ๋Œ€ ์˜คํ”ผ์Šค ์•„ํ‚คํ…์ฒ˜์™€ ์ƒˆ๋กœ์šด ์—ฐ๋™ ๊ธฐ๋Šฅ๋“ค์„ ๋ฐฐํฌํ•ฉ๋‹ˆ๋‹ค. --- ## v2.2.14 (2026-05-16) ### ๐ŸŽญ Advanced Pixel Office Customization & Face Directions - **์บ๋ฆญํ„ฐ ๋ฐฉํ–ฅ์„ฑ ๊ณ ๋„ํ™”:** ๊ธฐ์กด ์ขŒ์šฐ(Left/Right) ๋ฐฉํ–ฅ์— ๋”ํ•ด ์ƒํ•˜(Up/Down) ๋ฐฉํ–ฅ ์Šคํ”„๋ผ์ดํŠธ ์ง€์›์„ ์ถ”๊ฐ€ํ•˜์—ฌ ๋”์šฑ ๋‹ค์ฑ„๋กœ์šด ์‚ฌ๋ฌด์‹ค ์—ฐ์ถœ์ด ๊ฐ€๋Šฅํ•ด์กŒ์Šต๋‹ˆ๋‹ค. - **์บ๋ฆญํ„ฐ-์ฑ…์ƒ ๋…๋ฆฝ ์ œ์–ด:** ์ฑ…์ƒ์€ ์œ ์ง€ํ•˜๋ฉด์„œ ์บ๋ฆญํ„ฐ๋งŒ ์‚ญ์ œํ•˜๊ฑฐ๋‚˜, ์บ๋ฆญํ„ฐ๊ฐ€ ์—†๋Š” ์ฑ…์ƒ์— ์ƒˆ ํŒ€์›์„ ๋‹ค์‹œ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋Šฅ์„ ๋„์ž…ํ–ˆ์Šต๋‹ˆ๋‹ค. - **๋ ˆ์ด์•„์›ƒ ์Šคํ‚ค๋งˆ V2 ๋„์ž…:** ์บ๋ฆญํ„ฐ ์กด์žฌ ์—ฌ๋ถ€ ๋ฐ ์ •๋ฐ€ํ•œ ์œ„์น˜/ํšŒ์ „ ์ •๋ณด๋ฅผ ๋ณด์กดํ•˜๋Š” ์ตœ์‹  ๋ ˆ์ด์•„์›ƒ ์Šค๋ƒ…์ƒท ์—”์ง„์„ ์ ์šฉํ–ˆ์Šต๋‹ˆ๋‹ค. - **UI/UX ํŽธ์˜์„ฑ ๊ฐœ์„ :** ์†์„ฑ ํŒจ๋„์—์„œ ๋ฐฉํ–ฅ ์ „ํ™˜๊ณผ ์บ๋ฆญํ„ฐ ์ถ”๊ฐ€/์‚ญ์ œ๊ฐ€ ์ฆ‰์‹œ ๋ฐ˜์˜๋˜๋„๋ก ์ธํ„ฐ๋ž™์…˜์„ ๊ฐ•ํ™”ํ–ˆ์Šต๋‹ˆ๋‹ค. - **์‹ ๊ทœ ํŒจํ‚ค์ง•:** `astra-2.2.14.vsix` ํŒจํ‚ค์ง€๋ฅผ ํ†ตํ•ด ๋”์šฑ ์œ ์—ฐํ•ด์ง„ ์‚ฌ๋ฌด์‹ค ๋ชจ๋ธ๋ง ํ™˜๊ฒฝ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. --- ## v2.2.13 (2026-05-16) ### ๐Ÿ—๏ธ Pixel Office Interactive Editor & Core Refinement - **ํ”ฝ์…€ ์˜คํ”ผ์Šค ํŽธ์ง‘ ๋ชจ๋“œ ๋„์ž…:** ์ฑ…์ƒ ์ถ”๊ฐ€/์‚ญ์ œ, ์—์ด์ „ํŠธ ๋งคํ•‘ ๋ณ€๊ฒฝ, ๊ฐ€๊ตฌ(ํ”„๋ž) ๋ฐฐ์น˜ ๋ฐ ํฌ๊ธฐ ์กฐ์ ˆ์ด ๊ฐ€๋Šฅํ•œ ์ธํ„ฐ๋ž™ํ‹ฐ๋ธŒ ํŽธ์ง‘ ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค. - **์†์„ฑ ํŒจ๋„(Property Panel) ๊ตฌํ˜„:** ์„ ํƒํ•œ ํŒ€์›์ด๋‚˜ ๊ฐ€๊ตฌ์˜ ์ƒ์„ธ ์†์„ฑ(๋ผ๋ฒจ, ๋ฐฉํ–ฅ, ์Šคํ”„๋ผ์ดํŠธ ์ข…๋ฅ˜ ๋“ฑ)์„ ์‹ค์‹œ๊ฐ„์œผ๋กœ ์ˆ˜์ •ํ•  ์ˆ˜ ์žˆ๋Š” UI๋ฅผ ํƒ‘์žฌํ–ˆ์Šต๋‹ˆ๋‹ค. - **ํ”„๋กœ์ ํŠธ ์ปจํ…์ŠคํŠธ ๋™๊ธฐํ™” ์ตœ์ ํ™”:** ๋กœ์ปฌ ํ™˜๊ฒฝ์— ๋งž๊ฒŒ `chronicle.config.json`์˜ ๊ฒฝ๋กœ ์ •๋ณด๋ฅผ ์ตœ์‹ ํ™”ํ•˜๊ณ  ํ”„๋กœ์ ํŠธ ์ธ์ง€ ๋Šฅ๋ ฅ์„ ์•ˆ์ •ํ™”ํ–ˆ์Šต๋‹ˆ๋‹ค. - **์‹ ๊ทœ ํŒจํ‚ค์ง•:** `astra-2.2.13.vsix` ํŒจํ‚ค์ง€๋ฅผ ํ†ตํ•ด ๋”์šฑ ๊ฐ•๋ ฅํ•ด์ง„ ํ”ฝ์…€ ์˜คํ”ผ์Šค ์ปค์Šคํ„ฐ๋งˆ์ด์ง• ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. --- ## v2.2.12 (2026-05-16) ### ๐Ÿš€ Sync & Visual Polish Expansion - **ํ”ฝ์…€ ์˜คํ”ผ์Šค(Pixel Office) ์ž์‚ฐ ๋ฐ ๋ ˆ์ด์•„์›ƒ ํ™•์žฅ:** ๋‹ค์–‘ํ•œ ๋ฐฉํ–ฅ์˜ ์บ๋ฆญํ„ฐ ์• ๋‹ˆ๋ฉ”์ด์…˜๊ณผ ์‚ฌ๋ฌด์‹ค ๋ ˆ์ด์•„์›ƒ ํ”„๋ฆฌ๋ทฐ ์ž์‚ฐ์„ ๋Œ€ํญ ํ™•์ถฉํ•˜์—ฌ ์‹œ๊ฐ์  ํ”ผ๋“œ๋ฐฑ์˜ ์™„์„ฑ๋„๋ฅผ ๋†’์˜€์Šต๋‹ˆ๋‹ค. - **์˜๋„ ์ •๋ ฌ ๋ฐ ์ƒํƒœ ์—”์ง„ ์•ˆ์ •ํ™”:** ์‚ฌ์šฉ์ž ์˜๋„๋ฅผ ๋ถ„์„ํ•˜๊ณ  ๊ณ„์•ฝ(Contract)์„ ์ฒด๊ฒฐํ•˜๋Š” ํŒŒ์ดํ”„๋ผ์ธ๊ณผ ์‹ค์‹œ๊ฐ„ ์ƒํƒœ๋ฅผ ๋ฐ˜์˜ํ•˜๋Š” ์—”์ง„์˜ ์ตœ์‹  ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ์ตœ์ข… ๋™๊ธฐํ™”ํ–ˆ์Šต๋‹ˆ๋‹ค. - **์•„ํ‚คํ…์ฒ˜ ๊ฒฐ์ • ๊ธฐ๋ก(ADR) ์ตœ์‹ ํ™”:** ํ”„๋กœ์ ํŠธ์˜ ๊ตฌ์กฐ์  ์ง„ํ™”์™€ ์„ค๊ณ„ ๊ฒฐ์ •์„ ๋‹ด์€ ์‹ ๊ทœ ADR(0013, 0014)์„ ํ†ตํ•ฉํ–ˆ์Šต๋‹ˆ๋‹ค. - **์‹ ๊ทœ ํŒจํ‚ค์ง•:** `astra-2.2.12.vsix` ํŒจํ‚ค์ง€๋ฅผ ํ†ตํ•ด ์ตœ์‹  ์‹œ๊ฐ์  ์ž์‚ฐ๊ณผ ๊ธฐ๋Šฅ์ด ํ†ตํ•ฉ๋œ ๋ฒ„์ „์„ ๋ฐฐํฌํ•ฉ๋‹ˆ๋‹ค. --- ## v2.2.11 (2026-05-15) ### ๐Ÿ›ก๏ธ Cross-Project Build Optimization & Stability Enforcement - **๋ฉ€ํ‹ฐ ๋นŒ๋“œ ๋„๊ตฌ ๋Œ€์‘ ๊ฐ•ํ™”:** Vite์™€ CRA ๋“ฑ ์„œ๋กœ ๋‹ค๋ฅธ ๋นŒ๋“œ ํ™˜๊ฒฝ ๊ฐ„์˜ ์„ค์ • ํ˜ผ์„ ์„ ๊ฐ์ง€ํ•˜๊ณ , ํ”„๋กœ์ ํŠธ ์„ฑ๊ฒฉ์— ๋งž๋Š” ์ตœ์ ํ™”๋œ ์ธํ”„๋ผ(package.json)๋กœ ์ž๋™ ๋ณต๊ตฌ ๋ฐ ์ •๋ ฌํ•˜๋Š” ๋กœ์ง์„ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค. - **์˜์กด์„ฑ ๋ฌด๊ฒฐ์„ฑ ๊ฒ€์‚ฌ ๊ณ ๋„ํ™”:** ํŒจํ‚ค์ง€ ์„ค์น˜ ์‹œ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋Š” ํ™˜๊ฒฝ ๋ณ€์ˆ˜ ์ถฉ๋Œ ๋ฐ ๋ช…๋ น์–ด ํ•ด์„ ์˜ค๋ฅ˜(PowerShell && ๋“ฑ)์— ๋Œ€ํ•œ ์‚ฌ์ „ ๋ฐฉ์–ด ์ฒด๊ณ„๋ฅผ ๊ฐ•ํ™”ํ–ˆ์Šต๋‹ˆ๋‹ค. - **์„ฑ๋Šฅ ํ”„๋กœํŒŒ์ผ๋ง ๊ฐœ์„ :** ๋นŒ๋“œ ๊ณผ์ •์—์„œ์˜ ๋ฆฌ์†Œ์Šค ์ ์œ ์œจ์„ ์‹ค์‹œ๊ฐ„์œผ๋กœ ๋ชจ๋‹ˆํ„ฐ๋งํ•˜์—ฌ, ๋Œ€๊ทœ๋ชจ ํ”„๋กœ์ ํŠธ ๋ฐฐํฌ ์‹œ์˜ ์•ˆ์ •์„ฑ์„ ํ•œ์ธต ๋Œ์–ด์˜ฌ๋ ธ์Šต๋‹ˆ๋‹ค. - **์‹ ๊ทœ ํŒจํ‚ค์ง•:** `astra-2.2.11.vsix` ํŒจํ‚ค์ง€๋ฅผ ํ†ตํ•ด ๋”์šฑ ๊ฒฌ๊ณ ํ•˜๊ณ  ์œ ์—ฐํ•œ ํ”„๋กœ์ ํŠธ ๊ด€๋ฆฌ ํ™˜๊ฒฝ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. --- ## v2.2.10 (2026-05-15) ### ๐Ÿ—๏ธ Advanced Technical Design Alignment & Architecture Refinement - **๊ธฐ์ˆ  ์„ค๊ณ„ ๋ฌธ์„œ(Technical Design) ๋™๊ธฐํ™”:** `tetris/technical_design.md`์™€ ๊ฐ™์€ ๊ณ ์ฐจ์› ์„ค๊ณ„ ๋ฌธ์„œ๋ฅผ ๋ถ„์„ํ•˜์—ฌ, ์‹ค์ œ ๊ตฌํ˜„ ๋กœ์ง(Custom Hooks, Component Architecture)๊ณผ์˜ ์ •ํ•ฉ์„ฑ์„ ์œ ์ง€ํ•˜๋Š” ๋Šฅ๋ ฅ์„ ๊ฐ•ํ™”ํ–ˆ์Šต๋‹ˆ๋‹ค. - **์•„ํ‚คํ…์ฒ˜ ๊ฐ€์ด๋“œ๋ผ์ธ ์ค€์ˆ˜:** FSD(Feature-Sliced Design) ๋“ฑ ํ˜„๋Œ€์ ์ธ ์•„ํ‚คํ…์ฒ˜ ํŒจํ„ด์„ ์ธ์‹ํ•˜๊ณ , ์ด์— ๋ถ€ํ•ฉํ•˜๋Š” ์ฝ”๋“œ ๊ตฌ์กฐ๋ฅผ ์ œ์•ˆํ•˜๋Š” ์ง€๋Šฅํ˜• ๊ฐ€์ด๋“œ๋ฅผ ๊ณ ๋„ํ™”ํ–ˆ์Šต๋‹ˆ๋‹ค. - **๊ฒŒ์ž„ ์—”์ง„ ๋กœ์ง ์ตœ์ ํ™” ์ง€์›:** ๋ณต์žกํ•œ ์ƒํƒœ ๊ด€๋ฆฌ(Single Source of Truth) ๋ฐ ๋ Œ๋”๋ง ์ตœ์ ํ™”(Canvas API)๋ฅผ ์œ„ํ•œ ํ•ต์‹ฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์„ค๊ณ„ ์ง€์› ๋Šฅ๋ ฅ์„ ๋Œ€ํญ ํ–ฅ์ƒ์‹œ์ผฐ์Šต๋‹ˆ๋‹ค. - **์‹ ๊ทœ ํŒจํ‚ค์ง•:** `astra-2.2.10.vsix` ํŒจํ‚ค์ง€๋ฅผ ํ†ตํ•ด ์„ค๊ณ„์™€ ๊ตฌํ˜„์˜ ๊ฒฝ๊ณ„๋ฅผ ํ—ˆ๋ฌด๋Š” ๊ฐ•๋ ฅํ•œ ์•„ํ‚คํ…์ฒ˜ ํŒŒํŠธ๋„ˆ์‹ญ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. --- ## v2.2.9 (2026-05-15) ### ๐Ÿš€ Strategic Project Scaffolding & Core Engine Expansion - **ํ•˜์ดํผ-์„ผ์„œ๋ฆฌ ํ”„๋กœ์ ํŠธ ์Šค์บํด๋”ฉ:** `Tetris Modernized`์™€ ๊ฐ™์€ Canvas ๊ธฐ๋ฐ˜ ๋ฌผ๋ฆฌ ๊ฒŒ์ž„ ํ”„๋กœ์ ํŠธ์˜ ์ž๋™ ์ธํ”„๋ผ ๊ตฌ์ถ•(Vite, React, Tailwind, Framer Motion) ๋กœ์ง์„ ์ •๊ตํ™”ํ–ˆ์Šต๋‹ˆ๋‹ค. - **์ปจํ…์ŠคํŠธ ์—”์ง„ ๋„๋ฉ”์ธ ํ™•์žฅ:** ๊ฒŒ์ž„ ๊ฐœ๋ฐœ, ๋ฌผ๋ฆฌ ์—ฐ์‚ฐ, UI ์ธํ„ฐ๋ž™์…˜ ์„ค๊ณ„ ๋“ฑ ์ „๋ฌธ์ ์ธ ๋„๋ฉ”์ธ์— ๋Œ€ํ•œ ์ฝ”๋“œ ์ƒ์„ฑ ๋ฐ ๋ถ„์„ ๋Šฅ๋ ฅ์„ ๊ฐ•ํ™”ํ–ˆ์Šต๋‹ˆ๋‹ค. - **๋นŒ๋“œ ๋ฐ ๋ฐฐํฌ ์ž๋™ํ™” ๊ฐ•ํ™”:** ํ”„๋กœ์ ํŠธ ์ƒ์„ฑ๋ถ€ํ„ฐ ๋นŒ๋“œ, ํŒจํ‚ค์ง•๊นŒ์ง€ ์ด์–ด์ง€๋Š” ์›Œํฌํ”Œ๋กœ์šฐ๋ฅผ ์ตœ์ ํ™”ํ•˜์—ฌ ๊ฐœ๋ฐœ ์ƒ์‚ฐ์„ฑ์„ ๊ทน๋Œ€ํ™”ํ–ˆ์Šต๋‹ˆ๋‹ค. - **์‹ ๊ทœ ํŒจํ‚ค์ง•:** `astra-2.2.9.vsix` ํŒจํ‚ค์ง€๋ฅผ ํ†ตํ•ด ๋”์šฑ ๊ด‘๋ฒ”์œ„ํ•œ ํ”„๋กœ์ ํŠธ ์ง€์› ๋Šฅ๋ ฅ์„ ๊ฐ–์ถ˜ ์ตœ์‹  ๋ฒ„์ „์„ ๋ฐฐํฌํ•ฉ๋‹ˆ๋‹ค. --- ## v2.2.8 (2026-05-15) ### ๐Ÿง  Cognitive Architecture & Telemetry Refinement - **์ปจํ…์ŠคํŠธ ์ธ์‹ ์—”์ง„ ๊ณ ๋„ํ™”:** ๋ณต์žกํ•œ ๋ฉ€ํ‹ฐ ํ”„๋กœ์ ํŠธ ํ™˜๊ฒฝ์—์„œ์˜ ์—ฐ๊ด€ ์ง€์‹ ์ถ”์ถœ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ๊ฐœ์„ ํ•˜์—ฌ, `Test_0303`๊ณผ ๊ฐ™์€ ๊ฒŒ์ž„ ์—”์ง„ ๊ฐœ๋ฐœ ์‹œ์˜ ๋งฅ๋ฝ ์œ ์ง€ ๋Šฅ๋ ฅ์„ ๊ฐ•ํ™”ํ–ˆ์Šต๋‹ˆ๋‹ค. - **ํ…”๋ ˆ๋ฉ”ํŠธ๋ฆฌ ๋ฐ์ดํ„ฐ ์ •๋ฐ€ํ™”:** ์—์ด์ „ํŠธ์˜ ์˜์‚ฌ๊ฒฐ์ • ๊ณผ์ •์„ ์ถ”์ ํ•˜๋Š” ๋กœ๊ทธ ์‹œ์Šคํ…œ์„ ์ •๊ตํ™”ํ•˜์—ฌ, ์ž๊ฐ€ ์„ฑ์ฐฐ(Self-Reflection)์˜ ๊ทผ๊ฑฐ ๋ฐ์ดํ„ฐ๋ฅผ ๋”์šฑ ๋ช…ํ™•ํ•˜๊ฒŒ ํ™•๋ณดํ•ฉ๋‹ˆ๋‹ค. - **์ธํ„ฐํŽ˜์ด์Šค ์‘๋‹ต์„ฑ ์ตœ์ ํ™”:** ์‚ฌ์ด๋“œ๋ฐ”์™€ ์—๋””ํ„ฐ ๊ฐ„์˜ ๋ฐ์ดํ„ฐ ํ†ต์‹  ํ”„๋กœํ† ์ฝœ์„ ๊ฒฝ๋Ÿ‰ํ™”ํ•˜์—ฌ, ๋Œ€๊ทœ๋ชจ ์ฝ”๋“œ๋ฒ ์ด์Šค ๋ถ„์„ ์ค‘์—๋„ ๋ถ€๋“œ๋Ÿฌ์šด UI ์ธํ„ฐ๋ž™์…˜์„ ๋ณด์žฅํ•ฉ๋‹ˆ๋‹ค. - **์‹ ๊ทœ ํŒจํ‚ค์ง•:** `astra-2.2.8.vsix` ํŒจํ‚ค์ง€๋ฅผ ํ†ตํ•ด ์ธ์ง€ ์•„ํ‚คํ…์ฒ˜๊ฐ€ ํ•œ ๋‹จ๊ณ„ ์ง„ํ™”ํ•œ ์ตœ์‹  ๋ฒ„์ „์„ ๋ฐฐํฌํ•ฉ๋‹ˆ๋‹ค. --- ## v2.2.7 (2026-05-15) ### ๐Ÿ› ๏ธ Performance & Pipeline Refinement - **๋นŒ๋“œ ํŒŒ์ดํ”„๋ผ์ธ ์ตœ์ ํ™”:** ํŒจํ‚ค์ง• ๊ณผ์ •์—์„œ์˜ ๋ฆฌ์†Œ์Šค ์ ์œ ์œจ์„ ๊ฐœ์„ ํ•˜๊ณ , ๋ถˆํ•„์š”ํ•œ ์บ์‹œ ๋ฐ์ดํ„ฐ๋ฅผ ์ •๋ฆฌํ•˜์—ฌ ๋นŒ๋“œ ์ •ํ•ฉ์„ฑ์„ ๋†’์˜€์Šต๋‹ˆ๋‹ค. - **๋ชจ๋“ˆ ๋กœ๋”ฉ ํšจ์œจํ™”:** ์ต์Šคํ…์…˜ ํ™œ์„ฑํ™” ์‹œ์˜ ์ดˆ๊ธฐ ๋กœ๋”ฉ ์ง€์—ฐ ์‹œ๊ฐ„์„ ๋‹จ์ถ•ํ•˜๊ธฐ ์œ„ํ•ด ํ•ต์‹ฌ ๊ธฐ๋Šฅ๋“ค์˜ ์ดˆ๊ธฐํ™” ์ˆœ์„œ๋ฅผ ์žฌ์กฐ์ •ํ–ˆ์Šต๋‹ˆ๋‹ค. - **์•ˆ์ •์„ฑ ๊ฐ•ํ™”:** ์žฅ๊ธฐ ์‹คํ–‰ ํ™˜๊ฒฝ์—์„œ์˜ ๋ฉ”๋ชจ๋ฆฌ ๋ˆ„์ˆ˜ ๋ฐฉ์ง€๋ฅผ ์œ„ํ•œ ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰์…˜ ํŠธ๋ฆฌ๊ฑฐ ํฌ์ธํŠธ๋ฅผ ์ตœ์ ํ™”ํ–ˆ์Šต๋‹ˆ๋‹ค. - **์‹ ๊ทœ ํŒจํ‚ค์ง•:** `astra-2.2.7.vsix` ํŒจํ‚ค์ง€๋ฅผ ํ†ตํ•ด ์ „๋ฐ˜์ ์ธ ์„ฑ๋Šฅ๊ณผ ์•ˆ์ •์„ฑ์ด ๊ฐœ์„ ๋œ ์ตœ์‹  ๋ฒ„์ „์„ ๋ฐฐํฌํ•ฉ๋‹ˆ๋‹ค. --- ## v2.2.6 (2026-05-15) ### ๐Ÿงฎ Gugudan Master Engine & Global Standards - **๊ตฌ๊ตฌ๋‹จ ๋งˆ์Šคํ„ฐ(Test_0303) ์—”์ง„ ์ตœ์ ํ™”:** `useGameEngine.js`์˜ ์ค‘๋ณต ์„ ์–ธ ๋ฐ ๋ฏธ์™„์„ฑ ๋ฌผ๋ฆฌ ๋ฃจํ”„ ๋กœ์ง์„ ์™„๋ฒฝํ•˜๊ฒŒ ๋ณต๊ตฌํ•˜๊ณ , `App.jsx`์˜ ์• ๋‹ˆ๋ฉ”์ด์…˜ ์˜คํƒ€๋ฅผ ์ˆ˜์ •ํ•˜์—ฌ '๊ตฌ๊ตฌ๋‹จ ํ•™์Šต ์ธํ„ฐ๋ž™์…˜'์„ ์™„์„ฑํ–ˆ์Šต๋‹ˆ๋‹ค. - **Vite ์ธํ”„๋ผ ํ‘œ์ค€ํ™”:** `postcss.config.js`, `vite.config.js`, `main.jsx` ๋“ฑ ๋ฆฌ์•กํŠธ ์•ฑ ๊ตฌ๋™์„ ์œ„ํ•œ ํ•„์ˆ˜ ํ‘œ์ค€ ์„ค์ • ํŒŒ์ผ์„ ์ž๋™ํ™”ํ•˜์—ฌ ๋ฉ€ํ‹ฐ ํ”„๋กœ์ ํŠธ ์Šค์บํด๋”ฉ ์•ˆ์ •์„ฑ์„ ํ™•๋ณดํ–ˆ์Šต๋‹ˆ๋‹ค. - **์˜์กด์„ฑ ๊ฒฐํ•ฉ๋„ ์ตœ์ ํ™”:** Tailwind CSS์™€ Framer Motion์˜ ์—ฐ๋™ ์„ค์ •์„ ๊ฐ•ํ™”ํ•˜์—ฌ ์ €์‚ฌ์–‘ ํ™˜๊ฒฝ์—์„œ๋„ '์ซ€๋“ํ•œ' UX๋ฅผ ๋ณด์žฅํ•ฉ๋‹ˆ๋‹ค. - **์‹ ๊ทœ ํŒจํ‚ค์ง•:** `astra-2.2.6.vsix` ํŒจํ‚ค์ง€๋ฅผ ํ†ตํ•ด ํ•™์Šต์šฉ ๊ฒŒ์ž„ ์—”์ง„ ์ง€์› ๊ธฐ๋Šฅ์ด ๊ณ ๋„ํ™”๋œ ์ตœ์‹  ๋ฒ„์ „์„ ๋ฐฐํฌํ•ฉ๋‹ˆ๋‹ค. --- ## v2.2.5 (2026-05-15) ### ๐ŸŽฎ Multi-Project Synergy & Infrastructure - **ํ•™์Šต ๊ฒŒ์ž„ ์ƒํƒœ๊ณ„ ๊ตฌ์ถ•:** `Test_0303`(๊ตฌ๊ตฌ๋‹จ ๋งˆ์Šคํ„ฐ) ๋ฐ `Hangeul Puzzle Game`์˜ ๊ธฐ์ดˆ ์ธํ”„๋ผ(Vite, Tailwind, Framer Motion)๋ฅผ ์™„๋ฒฝํ•˜๊ฒŒ ๊ตฌ์ถ•ํ•˜๊ณ  ์—”์ง„ ์˜คํƒ€๋ฅผ ์ˆ˜์ •ํ•˜์—ฌ ์ฆ‰์‹œ ์‹คํ–‰ ๊ฐ€๋Šฅํ•œ ์ƒํƒœ๋กœ ์ตœ์ ํ™”ํ–ˆ์Šต๋‹ˆ๋‹ค. - **Vite-React ์Šค์บํด๋”ฉ ์•ˆ์ •ํ™”:** ์‹ ๊ทœ ํ”„๋กœ์ ํŠธ ์ƒ์„ฑ ์‹œ `postcss.config.js`, `vite.config.js` ๋“ฑ ํ•„์ˆ˜ ์„ค์ • ํŒŒ์ผ ์ž๋™ ๊ตฌ์„ฑ ๋กœ์ง์„ ๊ฐ•ํ™”ํ–ˆ์Šต๋‹ˆ๋‹ค. - **์ฝ”์–ด ์—”์ง„ ์•ˆ์ •์„ฑ ์œ ์ง€:** ์ตœ๊ทผ ์ถ”๊ฐ€๋œ ์˜๋„ ์ •๋ ฌ(Intent Alignment) ๋ฐ ํ”ฝ์…€ ์˜คํ”ผ์Šค ์ƒํƒœ ์—”์ง„์˜ ์—ฐ๋™ ์•ˆ์ •์„ฑ์„ ์žฌ๊ฒ€์ฆํ–ˆ์Šต๋‹ˆ๋‹ค. - **์‹ ๊ทœ ํŒจํ‚ค์ง•:** `astra-2.2.5.vsix` ํŒจํ‚ค์ง€๋ฅผ ํ†ตํ•ด ๋ฒ”์šฉ ํ”„๋กœ์ ํŠธ ์ง€์› ๊ธฐ๋Šฅ์ด ๊ฐ•ํ™”๋œ ์ตœ์‹  ๋ฒ„์ „์„ ๋ฐฐํฌํ•ฉ๋‹ˆ๋‹ค. --- ## v2.2.4 (2026-05-15) ### โš™๏ธ Intent Alignment & Pixel Office Engine - **์˜๋„ ์ •๋ ฌ ์‹œ์Šคํ…œ(Intent Alignment) ๊ณต์‹ํ™”:** `intentAlignment.ts`์™€ `intentClassifier.ts`๋ฅผ ํ†ตํ•ด ์‚ฌ์šฉ์ž ๋ฉ”์‹œ์ง€์˜ ์˜๋„๋ฅผ ์ž๋™ ๋ถ„๋ฅ˜ํ•˜๊ณ , ํŒŒ์ดํ”„๋ผ์ธ ์‹คํ–‰ ์ „ ์š”๊ตฌ์‚ฌํ•ญ ๊ณ„์•ฝ(Requirement Contract)์„ ์ฒด๊ฒฐํ•˜๋Š” C-G-C-F-Q ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ์•ˆ์ •ํ™”ํ–ˆ์Šต๋‹ˆ๋‹ค. - **ํ”ฝ์…€ ์˜คํ”ผ์Šค ์ƒํƒœ ์—”์ง„ ๊ตฌ์ถ•:** `pixelOfficeState.ts`๋ฅผ ํ†ตํ•ด ์—์ด์ „ํŠธ ํŒŒ์ดํ”„๋ผ์ธ ์ƒํƒœ(๋ถ„์„ ์ค‘, ์‹คํ–‰ ์ค‘, ๋Œ€๊ธฐ ๋“ฑ)๋ฅผ ์‹ค์‹œ๊ฐ„์œผ๋กœ ๋ฐ˜์˜ํ•˜๋Š” ๋น„์ฃผ์–ผ ํ”ผ๋“œ๋ฐฑ ๋ ˆ์ด์–ด๋ฅผ ์™„์„ฑํ–ˆ์Šต๋‹ˆ๋‹ค. - **Self-Reflector ์„œ๋ธŒ ๋ชจ๋“ˆ ์•ˆ์ •ํ™”:** `selfReflectorExecution`, `selfReflectorVerifier`, `selfReflectorPrompt`, `selfReflectorHollow` 4๊ฐœ ๋ชจ๋“ˆ์˜ ์ƒํ˜ธ์ž‘์šฉ ๋กœ์ง์„ ์ •๊ตํ™”ํ•˜์—ฌ ์„ฑ์ฐฐ ๋‹จ๊ณ„์˜ ์‹ ๋ขฐ์„ฑ์„ ๋†’์˜€์Šต๋‹ˆ๋‹ค. - **์‹ ๊ทœ ํŒจํ‚ค์ง•:** `astra-2.2.4.vsix` ํŒจํ‚ค์ง€๋ฅผ ํ†ตํ•ด ์ตœ์‹  ์˜๋„ ์ •๋ ฌ ๋ฐ ์„ฑ์ฐฐ ์—”์ง„์„ ๋ฐฐํฌํ•ฉ๋‹ˆ๋‹ค. --- ## v2.2.3 (2026-05-15) ### ๐Ÿš€ Stability & Packaging Refinement - **ํŒจํ‚ค์ง€ ์ •ํ•ฉ์„ฑ ๊ฐ•ํ™”:** ์ตœ์‹  ์ฝ”๋“œ๋ฒ ์ด์Šค ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ๋ฐ˜์˜ํ•˜์—ฌ ๋นŒ๋“œ ํŒŒ์ดํ”„๋ผ์ธ์„ ์žฌ๊ฒ€์ฆํ•˜๊ณ  ๋ฐฐํฌ ์•ˆ์ •์„ฑ์„ ํ™•๋ณดํ–ˆ์Šต๋‹ˆ๋‹ค. - **์ง€์†์  ํ’ˆ์งˆ ๊ด€๋ฆฌ:** 298๊ฐœ ์ „์ฒด ํ…Œ์ŠคํŠธ ์Šค์œ„ํŠธ ํ†ต๊ณผ๋ฅผ ์žฌํ™•์ธํ•˜์—ฌ ์—”์ง„ ์‹ ๋ขฐ์„ฑ์„ ์œ ์ง€ํ•ฉ๋‹ˆ๋‹ค. - **์‹ ๊ทœ ํŒจํ‚ค์ง•:** `astra-2.2.3.vsix` ํŒจํ‚ค์ง€๋ฅผ ํ†ตํ•ด ์ตœ์‹  ์•ˆ์ •ํ™” ์ƒํƒœ๋ฅผ ๋ฐฐํฌํ•ฉ๋‹ˆ๋‹ค. --- ## v2.2.2 (2026-05-15) ### ๐Ÿง  Intelligent Reflection & Knowledge Consolidation - **์ž๊ฐ€ ์„ฑ์ฐฐ ๊ฒฐ๊ณผ์˜ ์˜์†์„ฑ(Reflection Persistence) ๊ฐ•ํ™”:** `reflectionPersister.ts`๋ฅผ ํ†ตํ•ด ์—์ด์ „ํŠธ์˜ ๋น„ํ‰(Critique)๊ณผ ์„ฑ์ฐฐ ๋‚ด์šฉ์„ ์ง€์‹ ๋ฒ ์ด์Šค์— ์˜๊ตฌ์ ์œผ๋กœ ๊ธฐ๋กํ•˜๊ณ , ํ–ฅํ›„ ๋ฏธ์…˜์—์„œ ์ด๋ฅผ ์ž๊ฐ€ ํ•™์Šต ๋ฐ์ดํ„ฐ๋กœ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋ฐ˜์„ ๋งˆ๋ จํ–ˆ์Šต๋‹ˆ๋‹ค. - **์ž‘์—… ์žฌ๊ฐœ ๋กœ์ง ์•ˆ์ •ํ™”:** `resumeStore.ts` ์‹œ์Šคํ…œ์„ ์ตœ์ข… ์ •๋น„ํ•˜์—ฌ ๋น„์ฆˆ๋‹ˆ์Šค ํŒŒ์ดํ”„๋ผ์ธ ์ค‘๋‹จ ์‹œ์˜ ๋ณต๊ตฌ ์‹ ๋ขฐ๋„๋ฅผ ๊ทน๋Œ€ํ™”ํ–ˆ์Šต๋‹ˆ๋‹ค. - **์‚ฌ์ด๋“œ๋ฐ” ์ œ๊ณต ๋กœ์ง ์ตœ์ ํ™”:** `sidebarProvider.ts` ๋Œ€๊ทœ๋ชจ ๋ฆฌํŒฉํ† ๋ง์„ ํ†ตํ•ด ๋ฉ”์‹œ์ง€ ํ•ธ๋“ค๋ง ์„ฑ๋Šฅ์„ ๊ฐœ์„ ํ•˜๊ณ  UI ๋ฐ˜์‘์„ฑ์„ ๋†’์˜€์Šต๋‹ˆ๋‹ค. - **์•„ํ‚คํ…์ฒ˜ ๋ฌธ์„œ ๋ฐ ๊ธฐํš ์ž์‚ฐ ์ตœ์‹ ํ™”:** ํ”„๋กœ์ ํŠธ ๊ตฌ์กฐ ๋ถ„์„ ๊ฒฐ๊ณผ์™€ ๊ธฐํš ๋ ˆ์ฝ”๋“œ๋ฅผ ๋™๊ธฐํ™”ํ•˜์—ฌ ์—์ด์ „ํŠธ์˜ ์ƒํ™ฉ ์ธ์ง€ ๋Šฅ๋ ฅ์„ ํ–ฅ์ƒ์‹œ์ผฐ์Šต๋‹ˆ๋‹ค. --- ## v2.2.1 (2026-05-14) ### ๐Ÿ”„ Autonomous Task Resumption & Engine Resilience - **์ž‘์—… ์ค‘๋‹จ ํ›„ ์ž์œจ ์žฌ๊ฐœ ๊ธฐ๋Šฅ ๋„์ž…:** ์˜ˆ๊ธฐ์น˜ ์•Š์€ ์˜ค๋ฅ˜๋‚˜ ์ค‘๋‹จ ์ƒํ™ฉ์—์„œ๋„ ์ด์ „์— ์ง„ํ–‰ํ•˜๋˜ ์ž‘์—… ํ๋ฆ„(Company Mission)์„ ๋งˆ์ง€๋ง‰ ์„ฑ๊ณต ๋‹จ๊ณ„๋ถ€ํ„ฐ ์ฆ‰์‹œ ์ด์–ด์„œ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” `resumeStore` ์‹œ์Šคํ…œ์„ ๊ตฌ์ถ•ํ–ˆ์Šต๋‹ˆ๋‹ค. - **์ƒํƒœ ๋ณด์กด ์ •๊ตํ™”:** `_resume.json`์„ ํ†ตํ•ด ๊ฐ ๋‹จ๊ณ„๋ณ„ ํŒ€์›์˜ ๊ฒฐ๊ณผ๋ฌผ๊ณผ ๋‚จ์€ ์ž‘์—…๋“ค์„ ์‹ค์‹œ๊ฐ„์œผ๋กœ ์ €์žฅํ•˜๋ฉฐ, ์›์ž์ (Atomic) ์“ฐ๊ธฐ ๋ฐฉ์‹์„ ํ†ตํ•ด ๋ฐ์ดํ„ฐ ์ผ๊ด€์„ฑ์„ ๋ณด์žฅํ•ฉ๋‹ˆ๋‹ค. - **์›Œํฌํ”Œ๋กœ์šฐ ์•ˆ์ •์„ฑ ๊ฐ•ํ™”:** `dispatcher.ts` ๋‚ด์˜ ๋ณต๊ตฌ ๋กœ์ง์„ ๊ฐ•ํ™”ํ•˜์—ฌ ๋‹ค๋‹จ๊ณ„ ํ˜‘์—… ๋ฏธ์…˜ ์ˆ˜ํ–‰ ์ค‘ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋Š” ๋ ˆ์ด์Šค ์ปจ๋””์…˜๊ณผ ์ƒํƒœ ๋ถˆ์ผ์น˜ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ–ˆ์Šต๋‹ˆ๋‹ค. - **UI ๋ฐ ํ”ผ๋“œ๋ฐฑ ๊ฐœ์„ :** ์ž‘์—… ์žฌ๊ฐœ ์‹œ ํ˜„์žฌ ์ƒํ™ฉ์„ ๋ช…ํ™•ํžˆ ์ธ์ง€ํ•  ์ˆ˜ ์žˆ๋„๋ก ์‚ฌ์ด๋“œ๋ฐ”์™€ ๋Œ€ํ™” ํ•ธ๋“ค๋Ÿฌ์˜ ์ƒํƒœ ๋ณด๊ณ  ๊ธฐ๋Šฅ์„ ์ตœ์ ํ™”ํ–ˆ์Šต๋‹ˆ๋‹ค. --- ## v2.2.0 (2026-05-14) ### ๐Ÿ’Ž Milestone: Human-Centric UI & Workflow Evolution - **UI ์šฉ์–ด ๋ฐ ์ธํ„ฐ๋ž™์…˜ ์ „๋ฉด ํ•œ๊ธ€ํ™”:** '์—์ด์ „ํŠธ', 'ํŒŒ์ดํ”„๋ผ์ธ' ๋“ฑ ๋”ฑ๋”ฑํ•œ ์šฉ์–ด๋ฅผ 'ํŒ€์›', '์ž‘์—… ํ๋ฆ„' ๋“ฑ ์ง๊ด€์ ์ธ ํ•œ๊ธ€๋กœ ์ˆœํ™”ํ•˜์—ฌ ์นœ์ˆ™๋„๋ฅผ ๋†’์˜€์Šต๋‹ˆ๋‹ค. - **์‹ ๊ทœ ์‚ฌ์šฉ์ž ๊ฐ€์ด๋“œ ๊ณ ๋„ํ™”:** ์‹œ์ž‘ ์ฒดํฌ๋ฆฌ์ŠคํŠธ์™€ ์˜ˆ์‹œ ์งˆ๋ฌธ ์นฉ์„ ํ†ตํ•ด ์ฒซ ์‚ฌ์šฉ์ž๊ฐ€ Astra์˜ ๊ฐ•๋ ฅํ•œ ๊ธฐ๋Šฅ์„ ์ฆ‰์‹œ ์ฒดํ—˜ํ•  ์ˆ˜ ์žˆ๋„๋ก ์„ค๊ณ„ํ–ˆ์Šต๋‹ˆ๋‹ค. - **์ž‘์—… ํ๋ฆ„(Pipeline) ์—๋””ํ„ฐ ๊ฐœ์„ :** ๋ณต์žกํ•œ ์„ค์ • ์—†์ด๋„ ํ…œํ”Œ๋ฆฟ์„ ํ†ตํ•ด '๋Œ€ํ‘œ์—๊ฒŒ ๋งก๊ธฐ๊ฑฐ๋‚˜', '์‚ฌ์šฉ์ž๊ฐ€ ์ง์ ‘ ์ •ํ•œ ์ˆœ์„œ๋Œ€๋กœ' ํŒ€์›์ด ์ด์–ด์„œ ์ž‘์—…ํ•˜๊ฒŒ ๋งŒ๋“ญ๋‹ˆ๋‹ค. - **ํŒ€์› ๊ด€๋ฆฌ ์ธํ„ฐํŽ˜์ด์Šค ์ตœ์ ํ™”:** ์ƒˆ๋กœ์šด ํŒ€์›์„ ์ถ”๊ฐ€ํ•  ๋•Œ ๋‚ด๋ถ€ ID์™€ ํ…Œ๋งˆ ์ƒ‰์ƒ, ์‘๋‹ต ์Šคํƒ€์ผ ๋“ฑ์„ ๋”์šฑ ์„ธ๋ฐ€ํ•˜๊ฒŒ ์„ค์ •ํ•  ์ˆ˜ ์žˆ๋„๋ก UI๋ฅผ ์ •๊ตํ™”ํ–ˆ์Šต๋‹ˆ๋‹ค. - **์‹œ๊ฐ์  ์ผ๊ด€์„ฑ ๊ฐ•ํ™”:** ์‚ฌ์ด๋“œ๋ฐ” ์ „๋ฐ˜์˜ ๋””์ž์ธ ํ† ํฐ์„ ์žฌ๊ฒ€ํ† ํ•˜์—ฌ ๋”์šฑ ํ”„๋ฆฌ๋ฏธ์—„ํ•˜๊ณ  ์ผ๊ด€๋œ ๋ฃฉ์•คํ•„์„ ์™„์„ฑํ–ˆ์Šต๋‹ˆ๋‹ค. --- ## v2.1.9 (2026-05-14) ### ๐Ÿš€ Immersive Onboarding & UX Transformation - **์‹ ๊ทœ ์‚ฌ์šฉ์ž ์˜จ๋ณด๋”ฉ ํ”„๋กœ์„ธ์Šค ๋„์ž…:** ์‚ฌ์ด๋“œ๋ฐ”์— 3๋‹จ๊ณ„ ์ฒดํฌ๋ฆฌ์ŠคํŠธ(๋‘๋‡Œ ์—ฐ๊ฒฐ, ๋ชจ๋ธ ์„ ํƒ, ์ฒซ ์งˆ๋ฌธ)๋ฅผ ์ถ”๊ฐ€ํ•˜์—ฌ ์ดˆ๊ธฐ ์„ค์ • ๊ณผ์ •์„ ์ง๊ด€์ ์œผ๋กœ ๊ฐœ์„ ํ–ˆ์Šต๋‹ˆ๋‹ค. - **์˜ˆ์‹œ ์งˆ๋ฌธ ์นฉ(Sample Prompt Chips) ์ถ”๊ฐ€:** ์ฝ”๋“œ ๋ฆฌ๋ทฐ, ๋‹จ์œ„ ํ…Œ์ŠคํŠธ, ์•„ํ‚คํ…์ฒ˜ ๋ถ„์„ ๋“ฑ ์ž์ฃผ ์“ฐ์ด๋Š” ์งˆ๋ฌธ์„ ํ•œ ๋ฒˆ์˜ ํด๋ฆญ์œผ๋กœ ์ž…๋ ฅ์ฐฝ์— ์ฑ„์šธ ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋Šฅ์„ ๋„์ž…ํ–ˆ์Šต๋‹ˆ๋‹ค. - **์›ฐ์ปด ํŒจ๋„ ์ „๋ฉด ๊ฐœํŽธ:** ์ƒํƒœ์— ๋”ฐ๋ผ ๋™์ ์œผ๋กœ ๋ณ€ํ•˜๋Š” ํ™˜์˜ ๋ฉ”์‹œ์ง€์™€ ํŒ์„ ํ†ตํ•ด ๋”์šฑ ๊ฐœ์ธํ™”๋œ ์‚ฌ์šฉ์ž ๊ฒฝํ—˜์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. - **์—์ด์ „ํŠธ ์—ญํ•  ์ •๋ฐ€ ํŠœ๋‹:** ๋ ˆ์˜ค, ๋ฃจ๋‚˜, ์•„๋ผ ๋“ฑ ์‹ ๊ทœ ์—์ด์ „ํŠธ๋“ค์˜ ํŽ˜๋ฅด์†Œ๋‚˜์™€ ์ „๋ฌธ ๋ถ„์•ผ ์„ค๋ช…์„ ๋”์šฑ ๋งค๋„๋Ÿฝ๊ฒŒ ๋‹ค๋“ฌ์—ˆ์Šต๋‹ˆ๋‹ค. --- ## v2.1.8 (2026-05-14) ### ๐Ÿข Company Agent Roster Overhaul & UI Polish - **์—์ด์ „ํŠธ ๋กœ์Šคํ„ฐ ์ „๋ฉด ๊ฐœํŽธ:** 1์ธ ๊ธฐ์—… ๋ชจ๋“œ์— ๋ฃจ๋‚˜(์‚ฌ์šด๋“œ), ๋ ˆ์˜ค(์œ ํŠœ๋ธŒ), ์•„๋ผ(์ธ์Šคํƒ€) ๋“ฑ ํŠนํ™”๋œ ์—์ด์ „ํŠธ๋ฅผ ์ถ”๊ฐ€ํ•˜๊ณ  ์—ญํ• ์„ ๋”์šฑ ์„ธ๋ถ„ํ™”ํ–ˆ์Šต๋‹ˆ๋‹ค. - **์ œํ’ˆ ๊ฐœ๋ฐœ ํŒŒ์ดํ”„๋ผ์ธ ์ตœ์ ํ™”:** ๊ธฐํš โ†’ ๋””์ž์ธ โ†’ ๊ฐœ๋ฐœ โ†’ QA โ†’ ๊ฐ๋ฆฌ๋กœ ์ด์–ด์ง€๋Š” ํ•ต์‹ฌ ์›Œํฌํ”Œ๋กœ์šฐ๋ฅผ ๊ฐ•ํ™”ํ•˜๊ณ  ๊ธฐ๋ณธ ํ™œ์„ฑ ์—์ด์ „ํŠธ ๊ตฌ์„ฑ์„ ์กฐ์ •ํ–ˆ์Šต๋‹ˆ๋‹ค. - **์‚ฌ์ด๋“œ๋ฐ” UI ๋ฐ ์ธํ„ฐ๋ž™์…˜ ์ •๊ตํ™”:** `sidebar.js`์™€ ์Šคํƒ€์ผ์‹œํŠธ๋ฅผ ๊ฐœ์„ ํ•˜์—ฌ ๋Œ€ํ™” ํ๋ฆ„์˜ ์‹œ๊ฐ์  ์•ˆ์ •์„ฑ๊ณผ ๋ฐ˜์‘์„ฑ์„ ๋†’์˜€์Šต๋‹ˆ๋‹ค. - **๋น„์ฆˆ๋‹ˆ์Šค ์—”์ง„ ๊ณ ๋„ํ™”:** `companyConfig.ts` ๋ฐ ํ•ธ๋“ค๋Ÿฌ ๋กœ์ง ์ˆ˜์ •์„ ํ†ตํ•ด ๋‹ค์ค‘ ์—์ด์ „ํŠธ ํ˜‘์—… ์‹œ์˜ ์ปจํ…์ŠคํŠธ ์œ ์ง€ ๋Šฅ๋ ฅ์„ ๊ฐ•ํ™”ํ–ˆ์Šต๋‹ˆ๋‹ค. --- ## v2.1.7 (2026-05-14) ### ๐Ÿš€ Version Up & Packaging Stabilization - **๋ฒ„์ „ ์ƒํ–ฅ ๋ฐ ํŒจํ‚ค์ง•:** ํ”„๋กœ์ ํŠธ ๋ฒ„์ „์„ `v2.1.7`๋กœ ์—…๋ฐ์ดํŠธํ•˜๊ณ  ์‹ ๊ทœ VSIX ํŒจํ‚ค์ง€๋ฅผ ์ƒ์„ฑํ–ˆ์Šต๋‹ˆ๋‹ค. - **Git ์ถฉ๋Œ ํ•ด๊ฒฐ:** `git pull` ๊ณผ์ •์—์„œ ๋ฐœ์ƒํ•œ ์ž๋™ ์ƒ์„ฑ ํŒŒ์ผ(`.astra/project-context/architecture.md` ๋“ฑ)์˜ ์ปจํ”Œ๋ฆญํŠธ๋ฅผ ๋ฆฌ๋ชจํŠธ ์šฐ์„  ๋ฐฉ์‹์œผ๋กœ ํ•ด๊ฒฐํ•˜์—ฌ ์ƒํƒœ๋ฅผ ์•ˆ์ •ํ™”ํ–ˆ์Šต๋‹ˆ๋‹ค. - **ํŒจํ‚ค์ง€ ์ •ํ•ฉ์„ฑ ํ™•๋ณด:** ์ตœ์‹  ๋นŒ๋“œ ๊ฒฐ๊ณผ๋ฌผ์„ ํฌํ•จํ•œ `astra-2.1.7.vsix` ๋ฐฐํฌ ์ค€๋น„๋ฅผ ์™„๋ฃŒํ–ˆ์Šต๋‹ˆ๋‹ค. --- ## v2.1.6 (2026-05-14) ### ๐Ÿ› ๏ธ Sidebar Polish & Configuration Refinement - **์‚ฌ์ด๋“œ๋ฐ” ์ƒํ˜ธ์ž‘์šฉ ์ตœ์ ํ™”:** `sidebar.js`์™€ `chatHandlers.ts`๋ฅผ ํŠœ๋‹ํ•˜์—ฌ ๋น„๋™๊ธฐ ๋ฉ”์‹œ์ง€ ์ฒ˜๋ฆฌ ์‹œ์˜ UI ์ง€์—ฐ ํ˜„์ƒ์„ ์ตœ์†Œํ™”ํ•˜๊ณ  ์‚ฌ์šฉ์ž ํ”ผ๋“œ๋ฐฑ ๋ฃจํ”„๋ฅผ ๊ฐ•ํ™”ํ–ˆ์Šต๋‹ˆ๋‹ค. - **Company Suite ์„ค์ • ์ •๊ตํ™”:** `companyConfig.ts`์˜ ๊ธฐ๋ณธ ์„ค์ •์„ ๋ณด์™„ํ•˜์—ฌ ๋ฉ€ํ‹ฐ ํ”„๋กœ์ ํŠธ ํ™˜๊ฒฝ์—์„œ์˜ ์—์ด์ „ํŠธ ์ „ํ™˜ ์•ˆ์ •์„ฑ์„ ๋†’์˜€์Šต๋‹ˆ๋‹ค. - **ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค ๋™๊ธฐํ™”:** ์ŠคํŠธ๋ ˆ์Šค ํ…Œ์ŠคํŠธ ์ค‘ ๋ฐœ์ƒํ•œ ์ปจํ”Œ๋ฆญํŠธ ๋ฏธ์…˜ ํŒŒ์ผ์„ ์ •๋ฆฌํ•˜๊ณ  ์บ์‹œ ์ •ํ•ฉ์„ฑ์„ ํ™•๋ณดํ–ˆ์Šต๋‹ˆ๋‹ค. - **ํŒจํ‚ค์ง• ์•ˆ์ •ํ™”:** `astra-2.1.6.vsix`๋ฅผ ํ†ตํ•ด ๋”์šฑ ์„ธ๋ฐ€ํ•˜๊ฒŒ ์กฐ์ •๋œ ์ œ์–ด ๋ ˆ์ด์–ด๋ฅผ ๋ฐฐํฌํ•ฉ๋‹ˆ๋‹ค. --- ## v2.1.5 (2026-05-14) ### ๐Ÿš€ Orchestration Pipeline & Immersive Synergy - **Pipeline Templates ๋„์ž…:** 1์ธ ๊ธฐ์—… ๋ชจ๋“œ์˜ ์—…๋ฌด ํ๋ฆ„์„ ํ…œํ”Œ๋ฆฟํ™”ํ•˜์—ฌ `pipelineTemplates.ts`๋ฅผ ํ†ตํ•ด ๊ณ ์ •๋œ ๋น„์ฆˆ๋‹ˆ์Šค ์‹œ๋‚˜๋ฆฌ์˜ค๋ฅผ ๋น ๋ฅด๊ฒŒ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ๊ตฌ์กฐ๋ฅผ ๊ตฌ์ถ•ํ–ˆ์Šต๋‹ˆ๋‹ค. - **Orchestration ๋กœ์ง ์ •๊ตํ™”:** `CEO Planner`์™€ `Dispatcher` ๊ฐ„์˜ ๋ฐ์ดํ„ฐ ํ๋ฆ„์„ ์ตœ์ ํ™”ํ•˜์—ฌ, ๋ณตํ•ฉ์ ์ธ ๋ฏธ์…˜ ์ˆ˜ํ–‰ ์‹œ์˜ ์ปจํ…์ŠคํŠธ ์œ ์ง€ ๋Šฅ๋ ฅ์„ ๊ฐ•ํ™”ํ–ˆ์Šต๋‹ˆ๋‹ค. - **UI/UX ๋ฏธ์„ธ ์กฐ์ •:** ์‚ฌ์ด๋“œ๋ฐ”์˜ ๋ฐ˜์‘ํ˜• ์Šคํƒ€์ผ๊ณผ ์ƒํ˜ธ์ž‘์šฉ ๋กœ์ง์„ ๊ฐœ์„ ํ•˜์—ฌ ๋”์šฑ ์พŒ์ ํ•œ ์—์ด์ „ํŠธ ์ œ์–ด ํ™˜๊ฒฝ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. - **๋น„์ฆˆ๋‹ˆ์Šค ์ •ํ•ฉ์„ฑ ๊ฐ•ํ™”:** ๋กฏ๋ฐ์›”๋“œ ์ด๋จธ์‹œ๋ธŒ ํ”„๋กœ์ ํŠธ์™€ ๊ฐ™์€ ์‹ค์ œ ๊ธฐ์ˆ  ๊ฒ€ํ†  ์‹œ๋‚˜๋ฆฌ์˜ค๋ฅผ ์ˆ˜์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ์—์ด์ „ํŠธ์˜ ์ง€์‹ ํ™œ์šฉ ๋ฒ”์œ„๋ฅผ ์กฐ์ •ํ–ˆ์Šต๋‹ˆ๋‹ค. --- ## v2.1.4 (2026-05-14) ### ๐Ÿข Enterprise Multi-Agent Suite & Reflector Stabilization - **Company Suite ๊ณ ๋„ํ™”:** `CEO Planner`, `CEO Reporter` ๋“ฑ 1์ธ ๊ธฐ์—… ๋ชจ๋“œ๋ฅผ ์œ„ํ•œ ๋น„์ฆˆ๋‹ˆ์Šค ์˜ค์ผ€์ŠคํŠธ๋ ˆ์ด์…˜ ๊ธฐ๋Šฅ์„ ์•ˆ์ •ํ™”ํ•˜๊ณ , ๋ถ€์„œ ๊ฐ„ ํ˜‘์—… ๋กœ์ง์„ ๊ฐ•ํ™”ํ–ˆ์Šต๋‹ˆ๋‹ค. - **Self-Reflection (Reflector) ๊ณต์‹ ๋„์ž…:** Researcher์™€ Writer ์‚ฌ์ด์— ๋น„ํ‰(Critique) ๋‹จ๊ณ„๋ฅผ ์ถ”๊ฐ€ํ•˜์—ฌ, ๋ฆฌ์„œ์น˜ ๊ฒฐ๊ณผ์˜ ๋ˆ„๋ฝ์ด๋‚˜ ๋ชจ์ˆœ์„ ์‚ฌ์ „์— ๊ฒ€์ฆํ•˜๋Š” ์ธํ…”๋ฆฌ์ „์Šค ๋ฃจํ”„๋ฅผ ์™„์„ฑํ–ˆ์Šต๋‹ˆ๋‹ค. - **์ง€์‹ ์ž์‚ฐ(ADR/Bug) ์ฒด๊ณ„ํ™”:** ์‹ ๊ทœ ADR ๋ฐ ๋ฒ„๊ทธ ๋ ˆ์ฝ”๋“œ๋ฅผ ํ†ตํ•ฉํ•˜์—ฌ ํ”„๋กœ์ ํŠธ์˜ ์˜์‚ฌ๊ฒฐ์ • ์ด๋ ฅ๊ณผ ๊ธฐ์ˆ ์  ๋ถ€์ฑ„ ๊ด€๋ฆฌ ๋Šฅ๋ ฅ์„ ํ–ฅ์ƒ์‹œ์ผฐ์Šต๋‹ˆ๋‹ค. - **์ธํ”„๋ผ ํ™˜๊ฒฝ ์ •๋น„:** ํ”„๋กœ์ ํŠธ ๋ฃจํŠธ ๋ฐ ํ•˜์œ„ ๋ชจ๋“ˆ ๊ฐ„์˜ ํ™˜๊ฒฝ ์„ค์ • ์ถฉ๋Œ์„ ํ•ด๊ฒฐํ•˜๊ณ  ๋นŒ๋“œ ํŒŒ์ดํ”„๋ผ์ธ์˜ ๊ฒฌ๊ณ ํ•จ์„ ํ™•๋ณดํ–ˆ์Šต๋‹ˆ๋‹ค. --- ## v2.1.3 (2026-05-14) ### ๐Ÿš€ Core Synergy & Distribution Alignment - **์ข…์†์„ฑ ์ •ํ•ฉ์„ฑ ์™„๊ฒฐ:** `package-lock.json`์„ ์ตœ์‹  ์—”์ง„ ์‚ฌ์–‘์— ๋งž์ถฐ ๋™๊ธฐํ™”ํ•˜์—ฌ ๋นŒ๋“œ ์‹œ์˜ ์˜์กด์„ฑ ์ถฉ๋Œ ๊ฐ€๋Šฅ์„ฑ์„ ์›์ฒœ ์ฐจ๋‹จํ–ˆ์Šต๋‹ˆ๋‹ค. - **ํ…”๋ ˆ๋ฉ”ํŠธ๋ฆฌ ๋ฐ ์‹œ๋งจํ‹ฑ ์ธ๋ฑ์‹ฑ ํ†ตํ•ฉ:** ์‹ ๊ทœ ๋„์ž…๋œ `telemetry.ts`์™€ `embeddings.ts`๋ฅผ ํ†ตํ•ด ์‹œ์Šคํ…œ ์ง„๋‹จ ๋Šฅ๋ ฅ์„ ๊ฐ•ํ™”ํ•˜๊ณ  ์ง€์‹ ๊ฒ€์ƒ‰์˜ ์˜๋ฏธ๋ก ์  ์ •ํ™•๋„๋ฅผ ๋†’์˜€์Šต๋‹ˆ๋‹ค. - **์—”์ง„ ์•ˆ์ •์„ฑ ๊ฐ•ํ™”:** ํ•˜์ด๋ธŒ๋ฆฌ๋“œ ์ง€์‹ ๊ฒ€์ƒ‰(TF-IDF + Vector) ๋กœ์ง์˜ ์„ฑ๋Šฅ์„ ํŠœ๋‹ํ•˜์—ฌ ๋Œ€๊ทœ๋ชจ ์ฝ”๋“œ๋ฒ ์ด์Šค์—์„œ์˜ ์‘๋‹ต ์†๋„๋ฅผ ๊ฐœ์„ ํ–ˆ์Šต๋‹ˆ๋‹ค. - **์‹ ๊ทœ ํŒจํ‚ค์ง•:** `astra-2.1.3.vsix` ํŒจํ‚ค์ง€๋ฅผ ํ†ตํ•ด ๋”์šฑ ๊ฐ•๋ ฅํ•ด์ง„ ์ธํ…”๋ฆฌ์ „์Šค ๋ ˆ์ด์–ด๋ฅผ ๋ฐฐํฌํ•ฉ๋‹ˆ๋‹ค. --- ## v2.1.2 (2026-05-14) ### ๐Ÿ›๏ธ Chronicle Repair & Context Stability - **ํ”„๋กœ์ ํŠธ ๋ฃจํŠธ ์ž๋™ ๋ณต๊ตฌ ๋กœ์ง ๋„์ž…:** ์ด์ „ ๋ฒ„์ „์—์„œ ์›Œํฌ์ŠคํŽ˜์ด์Šค ์ƒ์œ„ ํด๋”๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์ž˜๋ชป ์ €์žฅ๋œ ์„œ๋ธŒํ”„๋กœ์ ํŠธ ๋ฃจํŠธ ์ •๋ณด๋ฅผ ์ž๋™์œผ๋กœ ํƒ์ง€ํ•˜๊ณ  ์ˆ˜์ •ํ•˜๋Š” ๋ณต๊ตฌ(`_repairCorruptedChronicleProjectRoots`) ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค. - **์ปจํ…์ŠคํŠธ ์ „ํ™˜ ์ •๊ตํ™”:** ์—๋””ํ„ฐ ํฌ์ปค์Šค ๊ธฐ๋ฐ˜์˜ ์ž๋™ ํ”„๋กœ์ ํŠธ ์ „ํ™˜ ๋กœ์ง์„ ๊ฐœ์„ ํ•˜์—ฌ, ์‚ฌ์šฉ์ž๊ฐ€ ์ˆ˜๋™์œผ๋กœ ์ง€์ •ํ•œ ํ”„๋กœ์ ํŠธ ์ปจํ…์ŠคํŠธ๊ฐ€ ์˜๋„์น˜ ์•Š๊ฒŒ ์ดˆ๊ธฐํ™”๋˜์ง€ ์•Š๋„๋ก ์•ˆ์ •์„ฑ์„ ๊ฐ•ํ™”ํ–ˆ์Šต๋‹ˆ๋‹ค. - **์•„ํ‚คํ…์ฒ˜ ์ธ์ง€ ๊ณ ๋„ํ™”:** ์„œ๋ธŒํ”„๋กœ์ ํŠธ ์ธ์‹ ์‹คํŒจ ์‹œ ์›Œํฌ์ŠคํŽ˜์ด์Šค ๋ฃจํŠธ๋กœ ํด๋ฐฑํ•˜๋Š” ๋™์ž‘์„ ๋ณด์™„ํ•˜์—ฌ ๋‹ค์ค‘ ํ”„๋กœ์ ํŠธ ํ™˜๊ฒฝ์—์„œ์˜ ์ผ๊ด€์„ฑ์„ ํ™•๋ณดํ–ˆ์Šต๋‹ˆ๋‹ค. - **์‹ ๊ทœ ํŒจํ‚ค์ง•:** `astra-2.1.2.vsix` ํŒจํ‚ค์ง€๋ฅผ ํ†ตํ•ด ๋”์šฑ ์•ˆ์ •ํ™”๋œ ํ”„๋กœ์ ํŠธ ๊ด€๋ฆฌ ํ™˜๊ฒฝ์„ ๋ฐฐํฌํ•ฉ๋‹ˆ๋‹ค. --- ## v2.1.1 (2026-05-14) ### ๐Ÿ›๏ธ Multi-Subproject Awareness & Context Precision - **์„œ๋ธŒํ”„๋กœ์ ํŠธ ์ž๋™ ์ธ์‹ ๊ธฐ๋Šฅ ๋„์ž…:** ์ƒ์œ„ ํด๋”๋ฅผ ์—ด์–ด ์—ฌ๋Ÿฌ ํ”„๋กœ์ ํŠธ๋ฅผ ๋™์‹œ์— ์ž‘์—…ํ•  ๋•Œ, ํ˜„์žฌ ํ™œ์„ฑํ™”๋œ ํŒŒ์ผ์˜ ์œ„์น˜๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ๊ฐœ๋ณ„ ํ”„๋กœ์ ํŠธ(ConnectAI, Datacollector ๋“ฑ)์˜ ๋ฃจํŠธ๋ฅผ ์ •ํ™•ํžˆ ์‹๋ณ„ํ•ฉ๋‹ˆ๋‹ค. - **์‹ค์‹œ๊ฐ„ ์ปจํ…์ŠคํŠธ ์žฌ๋™๊ธฐํ™”:** ์—๋””ํ„ฐ์—์„œ ๋‹ค๋ฅธ ํ”„๋กœ์ ํŠธ์˜ ํŒŒ์ผ์„ ํด๋ฆญํ•  ๋•Œ๋งˆ๋‹ค ์•„ํ‚คํ…์ฒ˜ ์ •๋ณด์™€ ์ง€์‹ ๋ฒ ์ด์Šค ๋ฒ”์œ„๋ฅผ ์ฆ‰์‹œ ๋™๊ธฐํ™”ํ•˜์—ฌ, ํ˜ผ์„  ์—†๋Š” ์ •ํ™•ํ•œ ๋‹ต๋ณ€์ด ๊ฐ€๋Šฅํ•˜๋„๋ก ๊ฐœ์„ ํ–ˆ์Šต๋‹ˆ๋‹ค. - **์›Œํฌํ”Œ๋กœ์šฐ ์•ˆ์ •ํ™”:** ์„œ๋ธŒํ”„๋กœ์ ํŠธ ์ „ํ™˜ ์‹œ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋Š” ๋ ˆ์ด์Šค ์ปจ๋””์…˜์„ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด ์ƒํƒœ ์—…๋ฐ์ดํŠธ ๋กœ์ง์— ๋””๋ฐ”์šด์Šค(Debounce)๋ฅผ ์ ์šฉํ–ˆ์Šต๋‹ˆ๋‹ค. - **์‹ ๊ทœ ํŒจํ‚ค์ง•:** `astra-2.1.1.vsix` ํŒจํ‚ค์ง€๋ฅผ ํ†ตํ•ด ๋ณต์žกํ•œ ํด๋” ๊ตฌ์กฐ์—์„œ๋„ ์™„๋ฒฝํ•˜๊ฒŒ ์ž‘๋™ํ•˜๋Š” ๊ฐœ๋ฐœ ํ™˜๊ฒฝ์„ ๋ฐฐํฌํ•ฉ๋‹ˆ๋‹ค. --- ## v2.1.0 (2026-05-14) ### ๐Ÿง  Self-Reflection & Multi-Agent Intelligence - **์ž๊ฐ€ ์„ฑ์ฐฐ(Self-Reflection) ๋‹จ๊ณ„ ๋„์ž…:** Researcher์™€ Writer ์‚ฌ์ด์— `Reflector` ์—์ด์ „ํŠธ๋ฅผ ์ถ”๊ฐ€ํ•˜์—ฌ ์ˆ˜์ง‘๋œ ๋ฐ์ดํ„ฐ์˜ ๋ฌด๊ฒฐ์„ฑ๊ณผ ๋…ผ๋ฆฌ์  ์ •ํ•ฉ์„ฑ์„ ์ž๋™์œผ๋กœ ๊ฒ€ํ† ํ•˜๋Š” ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ–ˆ์Šต๋‹ˆ๋‹ค. - **๋ฉ”ํƒ€ ์ธ์ง€ ๊ธฐ๋ฐ˜ ํ’ˆ์งˆ ๋ณด์ฆ:** Reflector๊ฐ€ ๋ถ„์„ ๋‹จ๊ณ„์—์„œ์˜ ๋ˆ„๋ฝ ์‚ฌํ•ญ์ด๋‚˜ ๋ชจ์ˆœ์ ์„ ์‹๋ณ„ํ•˜์—ฌ Writer์—๊ฒŒ ๊ตฌ์ฒด์ ์ธ ๋ณด์ • ์ง€์‹œ(Critique)๋ฅผ ์ „๋‹ฌํ•จ์œผ๋กœ์จ ์ตœ์ข… ๋‹ต๋ณ€์˜ ํ’ˆ์งˆ์„ ๋น„์•ฝ์ ์œผ๋กœ ํ–ฅ์ƒ์‹œ์ผฐ์Šต๋‹ˆ๋‹ค. - **์„ค์ • ์ œ์–ด ๊ธฐ๋Šฅ:** `g1nation.enableReflection` ์˜ต์…˜์„ ํ†ตํ•ด ์„ฑ๋Šฅ ์šฐ์„  ๋ชจ๋“œ์™€ ์ง€๋Šฅ ์šฐ์„  ๋ชจ๋“œ๋ฅผ ์„ ํƒํ•  ์ˆ˜ ์žˆ๋„๋ก ์œ ์—ฐ์„ฑ์„ ๋ถ€์—ฌํ–ˆ์Šต๋‹ˆ๋‹ค. - **๋ฒ„๊ทธ ์ˆ˜์ •:** ์•„ํ‚คํ…์ฒ˜ ๋ฌธ์„œ ์—ฐ๊ฒฐ(Attach) ์‹œ ์ƒํƒœ ๋™๊ธฐํ™”๊ฐ€ ๊ฐ„ํ—์ ์œผ๋กœ ์‹คํŒจํ•˜๋˜ ๋กœ์ง์„ ์ˆ˜์ •ํ•˜์—ฌ ์•ˆ์ •์„ฑ์„ ๊ฐ•ํ™”ํ–ˆ์Šต๋‹ˆ๋‹ค. - **์‹ ๊ทœ ํŒจํ‚ค์ง•:** `astra-2.1.0.vsix` ํŒจํ‚ค์ง€๋ฅผ ํ†ตํ•ด ๋”์šฑ ๊ณ ๋„ํ™”๋œ ์ถ”๋ก  ์—”์ง„์„ ๋ฐฐํฌํ•ฉ๋‹ˆ๋‹ค. --- ## v2.0.9 (2026-05-14) ### ๐Ÿ›ก๏ธ System Synchronization & Distribution - **์ „์—ญ ์ €์žฅ์†Œ ๋™๊ธฐํ™” ์™„๋ฃŒ:** Wiki, Datacollector, Agent ๋“ฑ ๋ชจ๋“  ๊ด€๋ จ ์ €์žฅ์†Œ์˜ ๋Œ€๊ทœ๋ชจ ๋ฆฌํŒฉํ† ๋ง ๋ฐ ์—…๋ฐ์ดํŠธ ์‚ฌํ•ญ์„ ์ต์Šคํ…์…˜ ํ™˜๊ฒฝ์— ์ตœ์ข… ๋™๊ธฐํ™”ํ–ˆ์Šต๋‹ˆ๋‹ค. - **๋ฐฐํฌ ์•ˆ์ •์„ฑ ๊ฐ•ํ™”:** ๋ฉ€ํ‹ฐ ์ €์žฅ์†Œ ๋™๊ธฐํ™” ์ดํ›„์˜ ํŒจํ‚ค์ง€ ๋ฌด๊ฒฐ์„ฑ์„ ๊ฒ€์ฆํ•˜๊ณ , ์ตœ์‹  ์ง€์‹ ๋ฒ ์ด์Šค ๊ตฌ์กฐ(.agent/ ๋“ฑ)์™€์˜ ํ˜ธํ™˜์„ฑ์„ ํ™•๋ณดํ–ˆ์Šต๋‹ˆ๋‹ค. - **์‹ ๊ทœ ํŒจํ‚ค์ง•:** `astra-2.0.9.vsix` ํŒจํ‚ค์ง€๋ฅผ ํ†ตํ•ด ๋ชจ๋“  ํ”„๋กœ์ ํŠธ ์ž์‚ฐ์ด ์ตœ์‹ ํ™”๋œ ์•ˆ์ •๋œ ์‹คํ–‰ ํ™˜๊ฒฝ์„ ๋ฐฐํฌํ•ฉ๋‹ˆ๋‹ค. --- ## v2.0.8 (2026-05-14) ### ๐Ÿš€ UX Persistence & Per-Agent Knowledge Mix - **Astra Launcher ๋„์ž…:** ์‹ค์ˆ˜๋กœ ์ฑ„ํŒ… ํƒญ์„ ๋‹ซ์•˜์„ ๋•Œ ์‚ฌ์ด๋“œ๋ฐ”์—์„œ ์ฆ‰์‹œ ๋‹ค์‹œ ์—ด ์ˆ˜ ์žˆ๋Š” ์ „์šฉ ๋Ÿฐ์ฒ˜ ๋ทฐ๋ฅผ ์ถ”๊ฐ€ํ•˜์—ฌ ์ ‘๊ทผ์„ฑ์„ ๋†’์˜€์Šต๋‹ˆ๋‹ค. - **์—์ด์ „ํŠธ๋ณ„ ์ง€์‹ ๋ฏน์Šค(Knowledge Mix) ์˜ค๋ฒ„๋ผ์ด๋“œ:** ๋น„์ฆˆ๋‹ˆ์Šค ์—์ด์ „ํŠธ๋งˆ๋‹ค '์„ธ์ปจ๋“œ ๋ธŒ๋ ˆ์ธ' ์ง€์‹ ํ™œ์šฉ ๋น„์ค‘์„ ๊ฐœ๋ณ„์ ์œผ๋กœ ์„ค์ •ํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋Šฅ์„ ๋„์ž…ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด์ œ ๊ฐ ์ „๋ฌธ๊ฐ€ ์—์ด์ „ํŠธ์˜ ํŠน์„ฑ์— ๋งž์ถฐ ์ง€์‹ ๊ฒ€์ƒ‰ ๊นŠ์ด๋ฅผ ์กฐ์ ˆํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. - **์‚ฌ์ด๋“œ๋ฐ” UI ๋ฐ ์ธํ„ฐ๋ž™์…˜ ์ •๊ตํ™”:** ์‚ฌ์ด๋“œ๋ฐ”(`sidebar.js`, `sidebar.css`)์˜ ๋””์ž์ธ์„ ๊ฐœ์„ ํ•˜๊ณ , ๋น„์ฆˆ๋‹ˆ์Šค ์›Œํฌํ”Œ๋กœ์šฐ์—์„œ์˜ ์ƒํƒœ ์‹œ๊ฐํ™”๋ฅผ ์ตœ์ ํ™”ํ–ˆ์Šต๋‹ˆ๋‹ค. - **์‹œ์Šคํ…œ ์•ˆ์ •์„ฑ ๊ฐ•ํ™”:** ์ต์Šคํ…์…˜ ์ฝ”์–ด์™€ ์‚ฌ์ด๋“œ๋ฐ” ๊ฐ„์˜ ์ƒํƒœ ๋™๊ธฐํ™” ๋กœ์ง์„ ๋ณด์™„ํ•˜์—ฌ ์žฅ์‹œ๊ฐ„ ์‚ฌ์šฉ ์‹œ์˜ ์‹ ๋ขฐ์„ฑ์„ ํ™•๋ณดํ–ˆ์Šต๋‹ˆ๋‹ค. - **์‹ ๊ทœ ํŒจํ‚ค์ง•:** `astra-2.0.8.vsix` ํŒจํ‚ค์ง€๋ฅผ ํ†ตํ•ด ์‚ฌ์šฉ์ž ํŽธ์˜์„ฑ์ด ๊ทน๋Œ€ํ™”๋œ ์ƒˆ๋กœ์šด ๋ฒ„์ „์„ ๋ฐฐํฌํ•ฉ๋‹ˆ๋‹ค. --- ## v2.0.7 (2026-05-14) ### ๐Ÿ“ข Enhanced Telegram Reporting & File Visibility - **ํ…”๋ ˆ๊ทธ๋žจ ๊ฒฐ๊ณผ๋ฌผ ์ถ”์  ๊ฐ•ํ™”:** ํ…”๋ ˆ๊ทธ๋žจ ๋ณด๊ณ ์„œ์— ์—์ด์ „ํŠธ๊ฐ€ ์ƒ์„ฑํ•œ ํŒŒ์ผ ๊ฒฝ๋กœ(`*๊ฒฐ๊ณผ๋ฌผ:*`)์™€ ์„ธ์…˜ ํด๋” ์œ„์น˜๋ฅผ ๋ช…์‹œ์ ์œผ๋กœ ํฌํ•จํ•˜์—ฌ, ์ƒ์„ฑ๋œ ์ž์‚ฐ์„ ์ฆ‰์‹œ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋„๋ก ๊ฐœ์„ ํ–ˆ์Šต๋‹ˆ๋‹ค. - **์•ก์…˜ ๋ฆฌํฌํŒ… ์‹œ์Šคํ…œ ๊ณ ๋„ํ™”:** `AgentTurnOutput`์— `actionReport` ํ•„๋“œ๋ฅผ ์ถ”๊ฐ€ํ•˜์—ฌ ์‹คํ–‰๋œ ์•ก์…˜ ํƒœ๊ทธ์˜ ๊ฒฐ๊ณผ๋ฅผ ์ฒด๊ณ„์ ์œผ๋กœ ์ถ”์ ํ•˜๊ณ  ๋‹ค๋ฅธ ์„œ๋น„์Šค์—์„œ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ์ •๊ตํ™”ํ–ˆ์Šต๋‹ˆ๋‹ค. - **๋””์ŠคํŒจ์ฒ˜ ์•ˆ์ •์„ฑ ํ–ฅ์ƒ:** `dispatcher.ts` ๋‚ด์˜ ์•ก์…˜ ์‹คํ–‰ ๋กœ์ง์„ ๊ฐœ์„ ํ•˜์—ฌ ํƒœ๊ทธ ์‹คํ–‰ ๊ฒฐ๊ณผ์™€ ์‘๋‹ต ๋ณธ๋ฌธ์˜ ์ •ํ•ฉ์„ฑ์„ ํ™•๋ณดํ–ˆ์Šต๋‹ˆ๋‹ค. - **ํƒ€์ž… ์•ˆ์ •์„ฑ ๋ณด๊ฐ•:** ๋น„์ฆˆ๋‹ˆ์Šค ์—”์ง„ ์ „๋ฐ˜์˜ ์ธํ„ฐํŽ˜์ด์Šค์™€ ํƒ€์ž…์„ ๋ณด๊ฐ•ํ•˜์—ฌ ์œ ์ง€๋ณด์ˆ˜์„ฑ๊ณผ ํ™•์žฅ์„ฑ์„ ๋†’์˜€์Šต๋‹ˆ๋‹ค. - **์‹ ๊ทœ ํŒจํ‚ค์ง•:** `astra-2.0.7.vsix` ํŒจํ‚ค์ง€๋ฅผ ํ†ตํ•ด ๊ฐ•ํ™”๋œ ํ…”๋ ˆ๊ทธ๋žจ ๋ฆฌํฌํŒ…๊ณผ ์•ˆ์ •ํ™”๋œ ์—”์ง„์„ ๋ฐฐํฌํ•ฉ๋‹ˆ๋‹ค. --- ## v2.0.6 (2026-05-14) ### ๐Ÿš€ Intelligence & UX Optimization - **UI & UX ์ •๊ตํ™”:** ์‚ฌ์ด๋“œ๋ฐ”(`sidebar.js`, `sidebar.css`)์˜ ์ธํ„ฐ๋ž™์…˜๊ณผ ์Šคํƒ€์ผ์„ ๊ฐœ์„ ํ•˜์—ฌ ๋”์šฑ ๋งค๋„๋Ÿฌ์šด ์‚ฌ์šฉ์ž ๊ฒฝํ—˜์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. - **ํ…”๋ ˆ๊ทธ๋žจ ๋Œ€ํ™” ๊ธฐ๋ก ๊ด€๋ฆฌ:** `conversationHistory.ts`๋ฅผ ๋„์ž…ํ•˜์—ฌ ํ…”๋ ˆ๊ทธ๋žจ ์—ฐ๋™ ์‹œ์˜ ๋Œ€ํ™” ๋งฅ๋ฝ ์œ ์ง€ ๊ธฐ๋Šฅ์„ ๊ฐ•ํ™”ํ–ˆ์Šต๋‹ˆ๋‹ค. - **๋น„์ฆˆ๋‹ˆ์Šค ์—”์ง„ ๊ณ ๋„ํ™”:** `dispatcher.ts` ๋ฐ `promptBuilder.ts` ์ตœ์ ํ™”๋ฅผ ํ†ตํ•ด CEO ์—์ด์ „ํŠธ์˜ ์˜์‚ฌ๊ฒฐ์ • ๋ฐ ์ž‘์—… ํ• ๋‹น ์ •๋ฐ€๋„๋ฅผ ๋†’์˜€์Šต๋‹ˆ๋‹ค. - **์•„ํ‚คํ…์ฒ˜ ๋ถ„์„ ๊ฐ•ํ™”:** ํ”„๋กœ์ ํŠธ ๊ตฌ์กฐ ์Šค์บ” ๋ฐ ์ปจํ…์ŠคํŠธ ์ฃผ์ž… ๋กœ์ง์„ ๋ณด์™„ํ•˜์—ฌ ๋” ๊นŠ์€ ์ฝ”๋“œ ์ดํ•ด๊ฐ€ ๊ฐ€๋Šฅํ•˜๋„๋ก ๊ฐœ์„ ํ–ˆ์Šต๋‹ˆ๋‹ค. - **์‹ ๊ทœ ํŒจํ‚ค์ง•:** `astra-2.0.6.vsix` ํŒจํ‚ค์ง€๋ฅผ ํ†ตํ•ด ํ†ตํ•ฉ๋œ ์„ฑ๋Šฅ ๋ฐ ์ธํ„ฐํŽ˜์ด์Šค ๊ฐœ์„  ์‚ฌํ•ญ์„ ๋ฐฐํฌํ•ฉ๋‹ˆ๋‹ค. --- ## v2.0.5 (2026-05-13) ### ๐Ÿ“ข Telegram Business Reporting & Core Resilience - **ํ…”๋ ˆ๊ทธ๋žจ ๋น„์ฆˆ๋‹ˆ์Šค ๋ฆฌํฌํŒ… ๋„์ž…:** ๋น„์ฆˆ๋‹ˆ์Šค ์—์ด์ „ํŠธ์˜ ์„ฑ๊ณผ๋ฅผ ์‹ค์‹œ๊ฐ„์œผ๋กœ ๋ณด๊ณ ํ•˜๋Š” `telegramReport.ts`๋ฅผ ์ถ”๊ฐ€ํ•˜์—ฌ ์›๊ฒฉ ๋ชจ๋‹ˆํ„ฐ๋ง ๊ธฐ๋Šฅ์„ ๊ฐ•ํ™”ํ–ˆ์Šต๋‹ˆ๋‹ค. - **์—์ด์ „ํŠธ ์—”์ง„ ๋ณต์›๋ ฅ ๊ฐ•ํ™”:** `agent.ts` ๋ฐ `dispatcher.ts` ๋‚ด์˜ ์˜ˆ์™ธ ์ฒ˜๋ฆฌ ๋กœ์ง์„ ๋ณด๊ฐ•ํ•˜์—ฌ ๋ณต์žกํ•œ ์ž์œจ ๋ฏธ์…˜ ์ˆ˜ํ–‰ ์‹œ์˜ ์•ˆ์ •์„ฑ์„ ๋†’์˜€์Šต๋‹ˆ๋‹ค. - **์‚ฌ์ด๋“œ๋ฐ” ์ƒํƒœ ๊ด€๋ฆฌ ์ตœ์ ํ™”:** `sidebarProvider.ts`์™€ `sidebar.js`๋ฅผ ์ˆ˜์ •ํ•˜์—ฌ ์„ธ์…˜ ์ „ํ™˜ ๋ฐ ๋Œ€ํ™” ์ดˆ๊ธฐํ™” ์‹œ์˜ ๋ฐ˜์‘์„ฑ์„ ๊ฐœ์„ ํ–ˆ์Šต๋‹ˆ๋‹ค. - **์‹ ๊ทœ ํŒจํ‚ค์ง•:** `astra-2.0.5.vsix` ํŒจํ‚ค์ง€๋ฅผ ํ†ตํ•ด ํ…”๋ ˆ๊ทธ๋žจ ์—ฐ๋™ ๋ณด๊ณ ์™€ ๊ฐ•ํ™”๋œ ์—”์ง„ ์•ˆ์ •์„ฑ์„ ํ†ตํ•ฉ ๋ฐฐํฌํ•ฉ๋‹ˆ๋‹ค. --- ## v2.0.4 (2026-05-13) ### โšก Advanced Business Orchestration & UI Polishing - **๋น„์ฆˆ๋‹ˆ์Šค ์—์ด์ „ํŠธ ๊ณ ๋„ํ™”:** `companyConfig.ts` ๋ฐ `promptBuilder.ts` ์ˆ˜์ •์„ ํ†ตํ•ด CEO ์—์ด์ „ํŠธ์˜ ๋ชฉํ‘œ ์„ค์ • ๋ฐ ์ปจํ…์ŠคํŠธ ์ฃผ์ž… ๋กœ์ง์„ ์ •๊ตํ™”ํ–ˆ์Šต๋‹ˆ๋‹ค. - **์‚ฌ์ด๋“œ๋ฐ” ์‚ฌ์šฉ์ž ๊ฒฝํ—˜ ๊ฐœ์„ :** `sidebar.css`์™€ `sidebar.js`๋ฅผ ๊ฐฑ์‹ ํ•˜์—ฌ ๋น„์ฆˆ๋‹ˆ์Šค ์›Œํฌํ”Œ๋กœ์šฐ ์ง„ํ–‰ ์ƒํƒœ ์‹œ๊ฐํ™”๋ฅผ ์ตœ์ ํ™”ํ–ˆ์Šต๋‹ˆ๋‹ค. - **๋Œ€ํ™” ํ•ธ๋“ค๋Ÿฌ ์•ˆ์ •ํ™”:** `chatHandlers.ts` ๋ฐ `sidebarProvider.ts` ๋‚ด์˜ ๋น„๋™๊ธฐ ๋ฉ”์‹œ์ง€ ์ฒ˜๋ฆฌ ๋ฐ ์ƒํƒœ ๋™๊ธฐํ™” ๋กœ์ง์„ ๊ฐ•ํ™”ํ–ˆ์Šต๋‹ˆ๋‹ค. - **์‹ ๊ทœ ํŒจํ‚ค์ง•:** `astra-2.0.4.vsix` ํŒจํ‚ค์ง€๋ฅผ ํ†ตํ•ด ๋”์šฑ ์•ˆ์ •์ ์ธ ๋น„์ฆˆ๋‹ˆ์Šค ์ž๋™ํ™” ํ™˜๊ฒฝ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. --- ## v2.0.3 (2026-05-13) ### ๐Ÿข AI 1-Person Company Engine & Business Intelligence - **AI 1์ธ ๊ธฐ์—…(Company) ์—”์ง„ ๋„์ž…:** ๋น„์ฆˆ๋‹ˆ์Šค ์ „๋žต ์ˆ˜๋ฆฝ๋ถ€ํ„ฐ ์ž๋™ํ™” ์‹คํ–‰๊นŒ์ง€ ์•„์šฐ๋ฅด๋Š” `src/features/company/` ๋ชจ๋“ˆ์„ ์‹ ๊ทœ ๋„์ž…ํ–ˆ์Šต๋‹ˆ๋‹ค. - **CEO ์—์ด์ „ํŠธ ์›Œํฌํ”Œ๋กœ์šฐ:** `ceoPlanner`์™€ `ceoReporter`๋ฅผ ํ†ตํ•ด ๋น„์ฆˆ๋‹ˆ์Šค ๋ชฉํ‘œ ์„ค์ •๊ณผ ๊ฒฐ๊ณผ ๋ถ„์„์„ ์ž์œจ์ ์œผ๋กœ ์ˆ˜ํ–‰ํ•˜๋Š” ์ง€๋Šฅํ˜• ์›Œํฌํ”Œ๋กœ์šฐ๋ฅผ ๊ตฌ์ถ•ํ–ˆ์Šต๋‹ˆ๋‹ค. - **๋น„์ฆˆ๋‹ˆ์Šค ํ”„๋กฌํ”„ํŠธ ์ž์‚ฐํ™”:** ๋น„์ฆˆ๋‹ˆ์Šค ์ปจํ…์ŠคํŠธ์— ์ตœ์ ํ™”๋œ ํ”„๋กฌํ”„ํŠธ ๊ด€๋ฆฌ ์‹œ์Šคํ…œ(`promptAssets.ts`, `promptBuilder.ts`)์„ ํ†ตํ•ฉํ–ˆ์Šต๋‹ˆ๋‹ค. - **์‚ฌ์ด๋“œ๋ฐ” UI ๋ฐ ์ธํ„ฐ๋ž™์…˜ ์ตœ์ ํ™”:** ๋น„์ฆˆ๋‹ˆ์Šค ์—์ด์ „ํŠธ์™€์˜ ๋งค๋„๋Ÿฌ์šด ์†Œํ†ต์„ ์œ„ํ•ด ์‚ฌ์ด๋“œ๋ฐ” ๊ตฌ์„ฑ ์š”์†Œ์™€ ๋Œ€ํ™” ํ•ธ๋“ค๋Ÿฌ๋ฅผ ์ •๊ตํ™”ํ–ˆ์Šต๋‹ˆ๋‹ค. - **์‹ ๊ทœ ํŒจํ‚ค์ง•:** `astra-2.0.3.vsix` ํŒจํ‚ค์ง€๋ฅผ ํ†ตํ•ด '์ง€๋Šฅํ˜• ๋น„์ฆˆ๋‹ˆ์Šค' ์ž๋™ํ™” ๊ธฐ๋Šฅ์ด ํ†ตํ•ฉ๋œ ๋ฒ„์ „์„ ๋ฐฐํฌํ•ฉ๋‹ˆ๋‹ค. --- ## v2.0.2 (2026-05-13) ### ๐Ÿ›๏ธ Structural Integrity & Automated Context Management - **ํ”„๋กœ์ ํŠธ ์ปจํ…์ŠคํŠธ ์ž๋™ ๊ด€๋ฆฌ:** `.astra/project-context/architecture.md`๋ฅผ ํ†ตํ•ด ํ”„๋กœ์ ํŠธ ๊ตฌ์กฐ, ์Šคํƒ, ์ฃผ์š” ๋ชจ๋“ˆ ์ •๋ณด๋ฅผ ์ž๋™์œผ๋กœ ์Šค์บ”ํ•˜๊ณ  ๊ด€๋ฆฌํ•˜๋Š” ๊ธฐ๋Šฅ์„ ๋„์ž…ํ–ˆ์Šต๋‹ˆ๋‹ค. - **์•„ํ‚คํ…์ฒ˜ ์‹œ๊ฐํ™” ์—”์ง„ ๊ฐ•ํ™”:** `mermaid.ts` ๋ฐ `scanner.ts`๋ฅผ ์ถ”๊ฐ€ํ•˜์—ฌ ํ”„๋กœ์ ํŠธ ๊ตฌ์กฐ๋ฅผ ๋‹ค์ด์–ด๊ทธ๋žจ์œผ๋กœ ์‹œ๊ฐํ™”ํ•˜๊ณ  ์‹ฌ์ธต ์Šค์บ๋‹ํ•˜๋Š” ๊ธฐ๋ฐ˜์„ ๊ตฌ์ถ•ํ–ˆ์Šต๋‹ˆ๋‹ค. - **์˜์‚ฌ๊ฒฐ์ • ๊ธฐ๋ก(ADR) ๋™๊ธฐํ™”:** `ADR-0009`๋ฅผ ํฌํ•จํ•œ ์ตœ์‹  ์ „๋žต์  ์˜์‚ฌ๊ฒฐ์ • ์‚ฌํ•ญ์„ ํ”„๋กœ์ ํŠธ ์ง€์‹ ๋ฒ ์ด์Šค์— ํ†ตํ•ฉํ–ˆ์Šต๋‹ˆ๋‹ค. - **์‚ฌ์ด๋“œ๋ฐ” ์ธํ„ฐ๋ž™์…˜ ์ •๊ตํ™”:** ๋Œ€๊ทœ๋ชจ ํ”„๋กœ์ ํŠธ ๋ถ„์„ ์‹œ์˜ UI ์•ˆ์ •์„ฑ์„ ๋†’์ด๊ณ  ์‚ฌ์šฉ์ž ํ”ผ๋“œ๋ฐฑ ๋ฃจํ”„๋ฅผ ๊ฐœ์„ ํ–ˆ์Šต๋‹ˆ๋‹ค. - **์‹ ๊ทœ ํŒจํ‚ค์ง•:** `astra-2.0.2.vsix` ํŒจํ‚ค์ง€๋ฅผ ํ†ตํ•ด ์ž๋™ํ™”๋œ ์ปจํ…์ŠคํŠธ ๊ด€๋ฆฌ์™€ ๊ฐ•ํ™”๋œ ์•„ํ‚คํ…์ฒ˜ ๋ถ„์„ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. --- ## v2.0.1 (2026-05-13) ### ๐Ÿง  Advanced Knowledge Mix & Architectural Intelligence - **์ง€์‹ ๋ฏน์Šค(Knowledge Mix) ์—”์ง„ ๋„์ž…:** ์—์ด์ „ํŠธ๊ฐ€ ๋‹ต๋ณ€ ์‹œ '์„ธ์ปจ๋“œ ๋ธŒ๋ ˆ์ธ' ์ง€์‹๊ณผ ์ž์ฒด ํ•™์Šต ์ง€์‹์„ ์‚ฌ์šฉํ•˜๋Š” ๋น„์ค‘์„ ์ •๊ตํ•˜๊ฒŒ ์กฐ์ ˆํ•  ์ˆ˜ ์žˆ๋Š” `knowledgeMix.ts`๋ฅผ ๊ตฌํ˜„ํ–ˆ์Šต๋‹ˆ๋‹ค. - **ํ”„๋กœ์ ํŠธ ์•„ํ‚คํ…์ฒ˜ ์ธํ…ํŠธ ๊ฐ์ง€:** ํ”„๋กœ์ ํŠธ์˜ ๊ตฌ์กฐ์  ์งˆ๋ฌธ์„ ์ž๋™์œผ๋กœ ์‹๋ณ„ํ•˜๊ณ  ๋Œ€์‘ํ•˜๋Š” `projectArchitecture` ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ•˜์—ฌ ์‹ฌ์ธต ๋ถ„์„ ๋Šฅ๋ ฅ์„ ๊ฐ•ํ™”ํ–ˆ์Šต๋‹ˆ๋‹ค. - **์‚ฌ์ด๋“œ๋ฐ” UI ๋ฐ ์ธํ„ฐ๋ž™์…˜ ์ตœ์ ํ™”:** ์‚ฌ์ด๋“œ๋ฐ”์˜ ์‹œ๊ฐ์  ์š”์†Œ์™€ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ๊ฐœ์„ ํ•˜์—ฌ ๋Œ€ํ™” ํ๋ฆ„์˜ ๋งค๋„๋Ÿฌ์›€์„ ๋”ํ–ˆ์Šต๋‹ˆ๋‹ค. - **์‹ ๊ทœ ํŒจํ‚ค์ง•:** `astra-2.0.1.vsix` ํŒจํ‚ค์ง€๋ฅผ ํ†ตํ•ด ์ตœ์‹  ์ง€๋Šฅ ์ตœ์ ํ™”์™€ ์•„ํ‚คํ…์ฒ˜ ๋ถ„์„ ๊ธฐ๋Šฅ์ด ํ†ตํ•ฉ๋œ ๋ฒ„์ „์„ ๋ฐฐํฌํ•ฉ๋‹ˆ๋‹ค. --- ## v2.0.0 (2026-05-13) ### ๐Ÿš€ Major Milestone & Intelligence Evolution - **์ง€์‹ ๊ฒ€์ƒ‰ ์—”์ง„ ๊ณ ๋„ํ™”:** `embeddings.ts` ๋ฐ `scoring.ts`๋ฅผ ํ†ตํ•ด ์‹œ๋งจํ‹ฑ ๊ฒ€์ƒ‰๊ณผ ํ‚ค์›Œ๋“œ ๊ฒ€์ƒ‰์ด ๊ฒฐํ•ฉ๋œ ํ•˜์ด๋ธŒ๋ฆฌ๋“œ ๊ฒ€์ƒ‰ ๊ธฐ๋Šฅ์„ ๊ฐ•ํ™”ํ–ˆ์Šต๋‹ˆ๋‹ค. - **ํ…”๋ ˆ๊ทธ๋žจ ํ†ตํ•ฉ ์•ˆ์ •ํ™”:** ์›๊ฒฉ ์—์ด์ „ํŠธ ์‹คํ–‰ ๋ฐ ๋ชจ๋‹ˆํ„ฐ๋ง์„ ์œ„ํ•œ ํ…”๋ ˆ๊ทธ๋žจ ์„œ๋น„์Šค ๋กœ์ง์„ ๊ณ ๋„ํ™”ํ–ˆ์Šต๋‹ˆ๋‹ค. - **์„ฑ๋Šฅ ๋ถ„์„ ํ…”๋ ˆ๋ฉ”ํŠธ๋ฆฌ ๋„์ž…:** ์—์ด์ „ํŠธ์˜ ์‘๋‹ต ํ’ˆ์งˆ๊ณผ ์ฒ˜๋ฆฌ ์†๋„๋ฅผ ์ •๋ฐ€ํ•˜๊ฒŒ ์ธก์ •ํ•˜๋Š” ํ…”๋ ˆ๋ฉ”ํŠธ๋ฆฌ ์‹œ์Šคํ…œ์„ ๊ตฌ์ถ•ํ–ˆ์Šต๋‹ˆ๋‹ค. - **์‚ฌ์ด๋“œ๋ฐ” UI ์ตœ์ ํ™”:** ๋Œ€๊ทœ๋ชจ ๋Œ€ํ™” ์„ธ์…˜์—์„œ์˜ ์ธํ„ฐ๋ž™์…˜ ์„ฑ๋Šฅ์„ ๊ฐœ์„ ํ•˜๊ณ  ์‹œ๊ฐ์  ๊ฐ€๋…์„ฑ์„ ๋†’์˜€์Šต๋‹ˆ๋‹ค. --- ## v2.80.43 (2026-05-13) ### ๐Ÿ›ก๏ธ Resilience & Advanced Logic Integration - **์ž์œจ ๋ณต๊ตฌ ๋กœ์ง ์ตœ์ ํ™”:** ์—์ด์ „ํŠธ ์‹คํ–‰ ์ค‘ ๋ฐœ์ƒํ•˜๋Š” ๋น„์ •์ƒ์  ์ƒํƒœ๋ฅผ ๊ฐ์ง€ํ•˜๊ณ  ์ž๋™์œผ๋กœ ์„ธ์…˜์„ ๋ณต๊ตฌํ•˜๋Š” `Resilience Matrix`๋ฅผ ๊ณ ๋„ํ™”ํ–ˆ์Šต๋‹ˆ๋‹ค. - **์‹ ๊ทœ ํŒจํ‚ค์ง•:** `astra-2.80.43.vsix` ํŒจํ‚ค์ง€๋ฅผ ํ†ตํ•ด ์ตœ์‹  ๋งˆ์ด๋„ˆ ๊ฐœ์„  ์‚ฌํ•ญ์„ ํ†ตํ•ฉ ๋ฐฐํฌํ•ฉ๋‹ˆ๋‹ค. --- ## v2.80.42 (2026-05-13) ### ๐Ÿš€ Core Intelligence & Extension Maintenance - **์—”์ง„ ์•ˆ์ •์„ฑ ๊ฐ•ํ™”:** ๋Œ€๊ทœ๋ชจ ๋Œ€ํ™” ์„ธ์…˜์—์„œ์˜ ์ปจํ…์ŠคํŠธ ๊ด€๋ฆฌ ํšจ์œจ์„ ๋†’์ด๊ณ  ๋ฉ”๋ชจ๋ฆฌ ๋ˆ„์ˆ˜ ๋ฐฉ์ง€ ๋กœ์ง์„ ๊ฐ•ํ™”ํ–ˆ์Šต๋‹ˆ๋‹ค. - **์‹ ๊ทœ ํŒจํ‚ค์ง•:** `astra-2.80.42.vsix` ํŒจํ‚ค์ง€๋ฅผ ํ†ตํ•ด ์ตœ์‹  ๋งˆ์ด๋„ˆ ๊ฐœ์„  ์‚ฌํ•ญ์„ ํ†ตํ•ฉ ๋ฐฐํฌํ•ฉ๋‹ˆ๋‹ค. --- ## v2.80.41 (2026-05-13) ### ๐Ÿš€ Distribution & Build Stabilization - **์‹ ๊ทœ ํŒจํ‚ค์ง•:** `astra-2.80.41.vsix` ํŒจํ‚ค์ง€๋ฅผ ์ƒ์„ฑํ•˜์—ฌ ์ตœ์‹  ๊ธฐ๋Šฅ๊ณผ ์•„ํ‚คํ…์ฒ˜ ๊ฐœ์„  ์‚ฌํ•ญ์„ ํ†ตํ•ฉ ๋ฐฐํฌํ•ฉ๋‹ˆ๋‹ค. - **๋ฒ„์ „ ์ •๊ทœํ™”:** ์‹œ์Šคํ…œ ์ „๋ฐ˜์˜ ๋ฒ„์ „์„ `v2.80.41`๋กœ ๋™๊ธฐํ™”ํ•˜์—ฌ ๋ฐฐํฌ ์ •ํ•ฉ์„ฑ์„ ํ™•๋ณดํ–ˆ์Šต๋‹ˆ๋‹ค. --- ## v2.80.40 (2026-05-13) ### ๐Ÿ›๏ธ Strategic Architecture & Core Optimization - **์•„ํ‚คํ…์ฒ˜ ๊ฒฐ์ • ๊ธฐ๋ก(ADR) ๋„์ž…:** `ADR-0008`์„ ํ†ตํ•ด ํ”„๋กœ์ ํŠธ์˜ ๋ถ€์กฑํ•œ ์  ๋ถ„์„๊ณผ ํ–ฅํ›„ ๊ฐœ์„  ๋ฐฉํ–ฅ์— ๋Œ€ํ•œ ์ „๋žต์  ์˜์‚ฌ๊ฒฐ์ •์„ ๋ฌธ์„œํ™”ํ–ˆ์Šต๋‹ˆ๋‹ค. - **์—์ด์ „ํŠธ ์—”์ง„ ์ •๋ฐ€ ํŠœ๋‹:** `agent.ts` ๋ฐ `config.ts` ์ˆ˜์ •์„ ํ†ตํ•ด ๋ณต์žกํ•œ ๋‹ค๋‹จ๊ณ„ ์ถ”๋ก  ๊ณผ์ •์—์„œ์˜ ์•ˆ์ •์„ฑ๊ณผ ์‘๋‹ต ํ’ˆ์งˆ์„ ์ตœ์ ํ™”ํ–ˆ์Šต๋‹ˆ๋‹ค. - **์—ฐ๋Œ€๊ธฐ ๋ฐ ํƒ€์ž„๋ผ์ธ ๋™๊ธฐํ™”:** ์ตœ์‹  ์•„ํ‚คํ…์ฒ˜ ๊ฒฐ์ • ์‚ฌํ•ญ๊ณผ ๊ฐœ๋ฐœ ๋งˆ์ผ์Šคํ†ค์„ `chronicle.config.json`๊ณผ `timeline.md`์— ๋ฐ˜์˜ํ–ˆ์Šต๋‹ˆ๋‹ค. - **์‹ ๊ทœ ํŒจํ‚ค์ง•:** `astra-2.80.40.vsix` ํŒจํ‚ค์ง€๋ฅผ ์ƒ์„ฑํ•˜์—ฌ ์ „๋žต์  ์•„ํ‚คํ…์ฒ˜ ๊ฐœ์„ ์•ˆ๊ณผ ์ตœ์ ํ™”๋œ ์—”์ง„์„ ํ†ตํ•ฉํ–ˆ์Šต๋‹ˆ๋‹ค. --- ## v2.80.39 (2026-05-13) ### ๐ŸŽจ UI Polish & Core Logic Tuning - **์‚ฌ์ด๋“œ๋ฐ” ์‹œ๊ฐ์  ์ •๊ตํ™”:** `sidebar.css`๋ฅผ ์—…๋ฐ์ดํŠธํ•˜์—ฌ ๋‹คํฌ ๋ชจ๋“œ์—์„œ์˜ ๊ฐ€๋…์„ฑ๊ณผ ์ „๋ฐ˜์ ์ธ ๋””์ž์ธ ์ •๋ฐ€๋„๋ฅผ ๋†’์˜€์Šต๋‹ˆ๋‹ค. - **์—์ด์ „ํŠธ ๊ตฌ์„ฑ ์ตœ์ ํ™”:** `agent.ts` ๋ฐ `config.ts` ๋‚ด์˜ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ํŠœ๋‹ํ•˜์—ฌ ๋ณต์žกํ•œ ์ง€์‹ ๊ฒ€์ƒ‰ ์ž‘์—…์—์„œ์˜ ์‘๋‹ต ์ผ๊ด€์„ฑ์„ ๊ฐœ์„ ํ–ˆ์Šต๋‹ˆ๋‹ค. - **์—ฐ๋Œ€๊ธฐ ๋ฐ ํƒ€์ž„๋ผ์ธ ์ตœ์‹ ํ™”:** ํ”„๋กœ์ ํŠธ ์ง„ํ–‰ ์ƒํ™ฉ์„ ๋ฐ˜์˜ํ•˜์—ฌ `chronicle.config.json`๊ณผ `timeline.md`๋ฅผ ๊ฐฑ์‹ ํ–ˆ์Šต๋‹ˆ๋‹ค. - **์‹ฌ์ธต ๊ตฌํ˜„ ๊ธฐ๋ก ์ถ”๊ฐ€:** ๊ธฐ์ˆ ์  ํ•œ๊ณ„ ๊ทน๋ณต๊ณผ ๊ฐœ์„  ๊ณผ์ •์„ ์ƒ์„ธํžˆ ๊ธฐ์ˆ ํ•œ ์‹ ๊ทœ ๊ตฌํ˜„ ๋ฌธ์„œ๋ฅผ ํ†ตํ•ฉํ–ˆ์Šต๋‹ˆ๋‹ค. - **์‹ ๊ทœ ํŒจํ‚ค์ง•:** `astra-2.80.39.vsix` ํŒจํ‚ค์ง€๋ฅผ ์ƒ์„ฑํ•˜์—ฌ ์‹œ๊ฐ์  ๊ฐœ์„ ๊ณผ ๋กœ์ง ํŠœ๋‹์ด ์™„๋ฃŒ๋œ ๋ฒ„์ „์„ ํ†ตํ•ฉํ–ˆ์Šต๋‹ˆ๋‹ค. --- ## v2.80.38 (2026-05-13) ### ๐Ÿ›ก๏ธ Response Recovery & Stability Overhaul - **์‘๋‹ต ๋ณต๊ตฌ ๋ฉ”์ปค๋‹ˆ์ฆ˜ ๋„์ž…:** `responseRecovery.ts` ๋ฐ ๊ด€๋ จ ํ…Œ์ŠคํŠธ ์ฝ”๋“œ๋ฅผ ํ†ตํ•ด AI ๋ชจ๋ธ์˜ ๋น„์ •์ƒ ์‘๋‹ต์ด๋‚˜ ์ŠคํŠธ๋ฆฌ๋ฐ ์ค‘๋‹จ ์‹œ ์ž๋™์œผ๋กœ ์ƒํƒœ๋ฅผ ๋ณต๊ตฌํ•˜๊ณ  ์žฌ์‹œ๋„ํ•˜๋Š” ๊ฐ•๋ ฅํ•œ ํšŒ๋ณต ํƒ„๋ ฅ์„ฑ์„ ๊ตฌ์ถ•ํ–ˆ์Šต๋‹ˆ๋‹ค. - **์ปจํ…์ŠคํŠธ ๋งค๋‹ˆ์ € ๊ณ ๋„ํ™”:** `contextManager.ts`๋ฅผ ์ˆ˜์ •ํ•˜์—ฌ ๋Œ€๊ทœ๋ชจ ํ”„๋กœ์ ํŠธ ๋ถ„์„ ์‹œ ํ† ํฐ ์‚ฌ์šฉ ํšจ์œจ์„ ๋†’์ด๊ณ  ์ปจํ…์ŠคํŠธ ๋ˆ„๋ฝ์„ ์ตœ์†Œํ™”ํ–ˆ์Šต๋‹ˆ๋‹ค. - **์—์ด์ „ํŠธ ์‹คํ–‰ ์•ˆ์ •์„ฑ ๊ฐ•ํ™”:** `agent.ts` ๋ฐ `config.ts` ๋‚ด์˜ ํƒ€์ž„์•„์›ƒ ๋ฐ ์—๋Ÿฌ ์ฒ˜๋ฆฌ ๋กœ์ง์„ ๊ฐœ์„ ํ•˜์—ฌ ๊ณ ๋ถ€ํ•˜ ์ƒํ™ฉ์—์„œ์˜ ์ž‘๋™ ์•ˆ์ •์„ฑ์„ ํ™•๋ณดํ–ˆ์Šต๋‹ˆ๋‹ค. - **์‹ ๊ทœ ํŒจํ‚ค์ง•:** `astra-2.80.37.vsix` ํŒจํ‚ค์ง€๋ฅผ ์ƒ์„ฑํ•˜์—ฌ ๋ถˆํ™•์‹คํ•œ AI ์‘๋‹ต ํ™˜๊ฒฝ์—์„œ๋„ ์‹ ๋ขฐํ•  ์ˆ˜ ์žˆ๋Š” ์‹คํ–‰ ํ™˜๊ฒฝ์„ ํ†ตํ•ฉํ–ˆ์Šต๋‹ˆ๋‹ค. --- ## v2.80.37 (2026-05-12) ### ๐Ÿ›ก๏ธ Response Recovery & Stability Overhaul - **์‘๋‹ต ๋ณต๊ตฌ ๋ฉ”์ปค๋‹ˆ์ฆ˜ ๋„์ž…:** `responseRecovery.ts` ๋ฐ ๊ด€๋ จ ํ…Œ์ŠคํŠธ ์ฝ”๋“œ๋ฅผ ํ†ตํ•ด AI ๋ชจ๋ธ์˜ ๋น„์ •์ƒ ์‘๋‹ต์ด๋‚˜ ์ŠคํŠธ๋ฆฌ๋ฐ ์ค‘๋‹จ ์‹œ ์ž๋™์œผ๋กœ ์ƒํƒœ๋ฅผ ๋ณต๊ตฌํ•˜๊ณ  ์žฌ์‹œ๋„ํ•˜๋Š” ๊ฐ•๋ ฅํ•œ ํšŒ๋ณต ํƒ„๋ ฅ์„ฑ์„ ๊ตฌ์ถ•ํ–ˆ์Šต๋‹ˆ๋‹ค. - **์ปจํ…์ŠคํŠธ ๋งค๋‹ˆ์ € ๊ณ ๋„ํ™”:** `contextManager.ts`๋ฅผ ์ˆ˜์ •ํ•˜์—ฌ ๋Œ€๊ทœ๋ชจ ํ”„๋กœ์ ํŠธ ๋ถ„์„ ์‹œ ํ† ํฐ ์‚ฌ์šฉ ํšจ์œจ์„ ๋†’์ด๊ณ  ์ปจํ…์ŠคํŠธ ๋ˆ„๋ฝ์„ ์ตœ์†Œํ™”ํ–ˆ์Šต๋‹ˆ๋‹ค. - **์—์ด์ „ํŠธ ์‹คํ–‰ ์•ˆ์ •์„ฑ ๊ฐ•ํ™”:** `agent.ts` ๋ฐ `config.ts` ๋‚ด์˜ ํƒ€์ž„์•„์›ƒ ๋ฐ ์—๋Ÿฌ ์ฒ˜๋ฆฌ ๋กœ์ง์„ ๊ฐœ์„ ํ•˜์—ฌ ๊ณ ๋ถ€ํ•˜ ์ƒํ™ฉ์—์„œ์˜ ์ž‘๋™ ์•ˆ์ •์„ฑ์„ ํ™•๋ณดํ–ˆ์Šต๋‹ˆ๋‹ค. - **์‹ ๊ทœ ํŒจํ‚ค์ง•:** `astra-2.80.37.vsix` ํŒจํ‚ค์ง€๋ฅผ ์ƒ์„ฑํ•˜์—ฌ ๋ถˆํ™•์‹คํ•œ AI ์‘๋‹ต ํ™˜๊ฒฝ์—์„œ๋„ ์‹ ๋ขฐํ•  ์ˆ˜ ์žˆ๋Š” ์‹คํ–‰ ํ™˜๊ฒฝ์„ ํ†ตํ•ฉํ–ˆ์Šต๋‹ˆ๋‹ค. --- ## v2.80.36 (2026-05-12) ### ๐ŸŽจ UI/UX Refinement & Agent Logic Optimization - **์‚ฌ์ด๋“œ๋ฐ” UI ์ „๋ฉด ๊ณ ๋„ํ™”:** `sidebar.html`, `sidebar.js`, `sidebar.css`๋ฅผ ๊ฐฑ์‹ ํ•˜์—ฌ ๋” ๋งค๋„๋Ÿฌ์šด ์• ๋‹ˆ๋ฉ”์ด์…˜๊ณผ ์ง๊ด€์ ์ธ ์ปดํฌ๋„ŒํŠธ ์ธํ„ฐ๋ž™์…˜์„ ๊ตฌํ˜„ํ–ˆ์Šต๋‹ˆ๋‹ค. - **์—์ด์ „ํŠธ ์ถ”๋ก  ๋กœ์ง ์ตœ์ ํ™”:** `agent.ts` ๋‚ด์˜ ์ปจํ…์ŠคํŠธ ์ฃผ์ž… ๋ฐ ์‘๋‹ต ์ƒ์„ฑ ํŒŒ์ดํ”„๋ผ์ธ์„ ๊ฐœ์„ ํ•˜์—ฌ ๋” ์ •ํ™•ํ•˜๊ณ  ๋น ๋ฅธ ๋‹ต๋ณ€์ด ๊ฐ€๋Šฅํ•˜๋„๋ก ์กฐ์ •ํ–ˆ์Šต๋‹ˆ๋‹ค. - **๋กœ์ปฌ ๊ฒฝ๋กœ ํ”„๋ฆฌํ”Œ๋ผ์ดํŠธ ๊ฐ•ํ™”:** `localPathPreflight.test.ts` ์ˆ˜์ •์„ ํ†ตํ•ด ๋‹ค์–‘ํ•œ ์ž‘์—… ํ™˜๊ฒฝ์—์„œ์˜ ๊ฒฝ๋กœ ์ธ์‹ ์•ˆ์ •์„ฑ์„ ์žฌ๊ฒ€์ฆํ–ˆ์Šต๋‹ˆ๋‹ค. - **์‹ ๊ทœ ํŒจํ‚ค์ง•:** `astra-2.80.36.vsix` ํŒจํ‚ค์ง€๋ฅผ ์ƒ์„ฑํ•˜์—ฌ ์ตœ์‹  UI ๊ฐœ์„  ์‚ฌํ•ญ๊ณผ ๋กœ์ง ์ตœ์ ํ™”๋ฅผ ํ†ตํ•ฉํ–ˆ์Šต๋‹ˆ๋‹ค. --- ## v2.80.35 (2026-05-12) ### ๐Ÿง  Experience Memory & Architectural Lessons - **๊ฒฝํ—˜ ๋ฉ”๋ชจ๋ฆฌ(Experience Memory) ์„ค๊ณ„:** `EXPERIENCE_MEMORY_PLAN.md`๋ฅผ ํ†ตํ•ด ์—์ด์ „ํŠธ๊ฐ€ ์ˆ˜ํ–‰ํ•œ ์ž‘์—…์˜ ์„ฑ๊ณต/์‹คํŒจ ์‚ฌ๋ก€๋ฅผ '๋ ˆ์Šจ'์œผ๋กœ ์ž์‚ฐํ™”ํ•˜๋Š” ์ฒด๊ณ„๋ฅผ ์„ค๊ณ„ํ–ˆ์Šต๋‹ˆ๋‹ค. - **๋ ˆ์Šจ ํ—ฌํผ ๋„์ž…:** `lessonHelpers.ts` ๋ฐ ๊ด€๋ จ ํ…Œ์ŠคํŠธ๋ฅผ ํ†ตํ•ด ๊ณผ๊ฑฐ์˜ ๊ตํ›ˆ์„ ๋™์ ์œผ๋กœ ๊ฒ€์ƒ‰ํ•˜๊ณ  ํ”„๋กฌํ”„ํŠธ์— ์ฃผ์ž…ํ•˜๋Š” ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค. - **๋ธŒ๋ ˆ์ธ ์ธ๋ฑ์Šค ํƒ€์ž… ์ •๊ตํ™”:** `types.ts` ๋ฐ `brainIndex.ts` ์ˆ˜์ •์„ ํ†ตํ•ด ์ง€์‹ ๊ฒ€์ƒ‰์˜ ํƒ€์ž… ์•ˆ์ •์„ฑ๊ณผ ํ•„ํ„ฐ๋ง ์ •ํ™•๋„๋ฅผ ๊ฐœ์„ ํ–ˆ์Šต๋‹ˆ๋‹ค. - **์ต์Šคํ…์…˜ ์ฝ”์–ด ์ตœ์ ํ™”:** `extension.ts` ๋‚ด์˜ ๋ฆฌ์†Œ์Šค ๊ด€๋ฆฌ ๋ฐ ๋ผ์ดํ”„์‚ฌ์ดํด ๋กœ์ง์„ ๋ณด๊ฐ•ํ•˜์—ฌ ์žฅ์‹œ๊ฐ„ ์‚ฌ์šฉ ์‹œ์˜ ์•ˆ์ •์„ฑ์„ ๋†’์˜€์Šต๋‹ˆ๋‹ค. - **์‚ฌ์ด๋“œ๋ฐ” UI ์ •๋ฐ€ ๊ฐœ์„ :** ์‚ฌ์ด๋“œ๋ฐ”์˜ ์‹œ๊ฐ์  ์š”์†Œ์™€ ์ธํ„ฐ๋ž™์…˜ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์ตœ์ ํ™”ํ•˜์—ฌ ์กฐ์ž‘๊ฐ์„ ๊ฐœ์„ ํ–ˆ์Šต๋‹ˆ๋‹ค. - **์‹ ๊ทœ ํŒจํ‚ค์ง•:** `astra-2.80.35.vsix` ํŒจํ‚ค์ง€๋ฅผ ์ƒ์„ฑํ•˜์—ฌ ๊ฒฝํ—˜ ๊ธฐ๋ฐ˜ ํ•™์Šต ๋Šฅ๋ ฅ์ด ๊ฐ•ํ™”๋œ ์—์ด์ „ํŠธ ํ™˜๊ฒฝ์„ ํ†ตํ•ฉํ–ˆ์Šต๋‹ˆ๋‹ค. --- ## v2.80.34 (2026-05-12) ### ๐Ÿง  Advanced Context Management & Brain Indexing - **์‹ ๊ทœ ์ปจํ…์ŠคํŠธ ๋งค๋‹ˆ์ € ๋„์ž…:** `contextManager.ts`๋ฅผ ํ†ตํ•ด ๋Œ€๊ทœ๋ชจ ํŒŒ์ผ ๋ฐ ๋Œ€ํ™” ๋‚ด์—ญ์˜ ์šฐ์„ ์ˆœ์œ„๋ฅผ ์ง€๋Šฅ์ ์œผ๋กœ ๊ด€๋ฆฌํ•˜๊ณ  ํ† ํฐ ์˜ˆ์‚ฐ์„ ์ตœ์ ํ™”ํ•˜๋Š” ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค. - **๋ธŒ๋ ˆ์ธ ์ธ๋ฑ์‹ฑ ๊ณ ๋„ํ™”:** `brainIndex.ts` ๋ฐ ๊ด€๋ จ ํ…Œ์ŠคํŠธ ์ฝ”๋“œ๋ฅผ ๋„์ž…ํ•˜์—ฌ ์ง€์‹ ๋ฒ ์ด์Šค ๊ฒ€์ƒ‰ ์†๋„์™€ ์ •ํ™•๋„๋ฅผ ํ–ฅ์ƒ์‹œ์ผฐ์Šต๋‹ˆ๋‹ค. - **LM Studio ์ŠคํŠธ๋ฆฌ๋ฐ ์•ˆ์ •ํ™”:** `streamer.ts` ๋‚ด์˜ ์‘๋‹ต ์ฒ˜๋ฆฌ ๋กœ์ง์„ ๊ฐœ์„ ํ•˜์—ฌ ๊ธด ์‘๋‹ต ์ƒ์„ฑ ์‹œ์˜ ์—ฐ๊ฒฐ ์•ˆ์ •์„ฑ์„ ํ™•๋ณดํ–ˆ์Šต๋‹ˆ๋‹ค. - **์‚ฌ์ด๋“œ๋ฐ” UI/UX ์ •๋ฐ€ ํŠœ๋‹:** ์‚ฌ์ด๋“œ๋ฐ”์˜ ์ธํ„ฐ๋ž™์…˜ ๋กœ์ง(HTML/JS/CSS)์„ ๊ฐœ์„ ํ•˜์—ฌ ์‚ฌ์šฉ์ž ๊ฒฝํ—˜์„ ํ•œ์ธต ๋” ๊ฐ•ํ™”ํ–ˆ์Šต๋‹ˆ๋‹ค. - **ํ…”๋ ˆ๊ทธ๋žจ ์›๊ฒฉ ์‹คํ–‰ ์„ค๊ณ„:** `TELEGRAM_REMOTE_EXECUTION_PLAN.md`๋ฅผ ํ†ตํ•ด ํ–ฅํ›„ ํ…”๋ ˆ๊ทธ๋žจ์„ ํ†ตํ•œ ์›๊ฒฉ ์—์ด์ „ํŠธ ์‹คํ–‰ ๋ฐ ๋ชจ๋‹ˆํ„ฐ๋ง์„ ์œ„ํ•œ ์ฒญ์‚ฌ์ง„์„ ์ˆ˜๋ฆฝํ–ˆ์Šต๋‹ˆ๋‹ค. - **์‹ ๊ทœ ํŒจํ‚ค์ง•:** `astra-2.80.34.vsix` ํŒจํ‚ค์ง€๋ฅผ ์ƒ์„ฑํ•˜์—ฌ ์ตœ์‹  ๊ธฐ๋Šฅ๊ณผ ์•ˆ์ •์„ฑ ๊ฐœ์„  ์‚ฌํ•ญ์„ ํ†ตํ•ฉํ–ˆ์Šต๋‹ˆ๋‹ค. --- ## v2.80.33 (2026-05-11) ### ๐Ÿ›๏ธ Agent Repository Reorganization & Sync - **์—์ด์ „ํŠธ ์ €์žฅ์†Œ ๊ตฌ์กฐ ๊ฐœํŽธ ๋Œ€์‘:** `Agent` ์ €์žฅ์†Œ์˜ ํ•ต์‹ฌ ์Šคํ‚ฌ ๋ฐ ์ง€์‹ ๋ฒ ์ด์Šค๊ฐ€ `.agent/`์—์„œ `_agent/` ํด๋”๋กœ ๋Œ€ํญ ์žฌ๋ฐฐ์น˜๋จ์— ๋”ฐ๋ผ, ์ด๋ฅผ ์ต์Šคํ…์…˜์˜ ์Šคํ‚ฌ ๋กœ๋”ฉ ์—”์ง„ ๋ฐ ๊ฒฝ๋กœ ํƒ์ƒ‰ ๋กœ์ง์— ๋™๊ธฐํ™”ํ–ˆ์Šต๋‹ˆ๋‹ค. - **์Šคํ‚ฌ ๊ฒฝ๋กœ ์ •ํ•ฉ์„ฑ ํ™•๋ณด:** ์™ธ๋ถ€ ์Šคํ‚ฌ ๋กœ๋” ๋ฐ ๋ฒ”์šฉ ์—์ด์ „ํŠธ๊ฐ€ ๊ฐœํŽธ๋œ `_agent/skills` ๊ตฌ์กฐ๋ฅผ ์ •ํ™•ํžˆ ์ฐธ์กฐํ•˜๋„๋ก ๋‚ด๋ถ€ ๋งคํ•‘์„ ๊ฐฑ์‹ ํ–ˆ์Šต๋‹ˆ๋‹ค. - **์ €์žฅ์†Œ ๊ฐ„ ์ผ๊ด€์„ฑ ์œ ์ง€:** ์—์ด์ „ํŠธ ์ž์‚ฐ ์žฌ๋ฐฐ์น˜์— ๋”ฐ๋ฅธ ์ฃผ์š” ์›Œํฌํ”Œ๋กœ์šฐ์˜ ์ž‘๋™ ์œ ๋ฌด๋ฅผ ์žฌ๊ฒ€์ฆํ•˜๊ณ , ๊ด€๋ จ ์„ค์ •์„ ์ตœ์ ํ™”ํ–ˆ์Šต๋‹ˆ๋‹ค. - **์‹ ๊ทœ ํŒจํ‚ค์ง•:** `astra-2.80.33.vsix` ํŒจํ‚ค์ง€๋ฅผ ์ƒ์„ฑํ•˜์—ฌ ๊ฐœํŽธ๋œ ์—์ด์ „ํŠธ ์ž์‚ฐ๊ณผ์˜ ํ˜ธํ™˜์„ฑ์„ ํ™•๋ณดํ–ˆ์Šต๋‹ˆ๋‹ค. --- ## v2.80.32 (2026-05-11) ### ๐Ÿ›ก๏ธ LM Studio SDK Resilience & Auto-Recovery - **LM Studio SDK ์•ˆ์ •์„ฑ ๊ฐ•ํ™”:** ๋ชจ๋ธ ํ•ธ๋“ค์ด "disposed" ์ƒํƒœ๋กœ ๋ฐฉ์น˜๋˜์–ด ๋ฐœ์ƒํ•˜๋Š” ์ŠคํŠธ๋ฆฌ๋ฐ ์‹คํŒจ๋ฅผ ๊ฐ์ง€ํ•˜๊ณ , SDK ํด๋ผ์ด์–ธํŠธ๋ฅผ ์ž๋™์œผ๋กœ ์žฌ์ƒ์„ฑ(`resetHandle`)ํ•˜์—ฌ ๋ณต๊ตฌํ•˜๋Š” ๋กœ์ง์„ ๋„์ž…ํ–ˆ์Šต๋‹ˆ๋‹ค. - **2๋‹จ๊ณ„ ์ŠคํŠธ๋ฆฌ๋ฐ ๋ณต๊ตฌ ํ”„๋กœ์„ธ์Šค:** ๋นˆ ์‘๋‹ต ๊ฐ์ง€ ์‹œ (1) ํ•ธ๋“ค ์ดˆ๊ธฐํ™” ํ›„ ์ŠคํŠธ๋ฆฌ๋ฐ ์žฌ์‹œ๋„, (2) ์‹คํŒจ ์‹œ ๋น„์ŠคํŠธ๋ฆฌ๋ฐ(POST) ํด๋ฐฑ์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๋‹ค๋‹จ๊ณ„ ๋ณต๊ตฌ ์ฒด๊ณ„๋ฅผ ๊ตฌ์ถ•ํ–ˆ์Šต๋‹ˆ๋‹ค. - **์ง€๋Šฅํ˜• ์ง„๋‹จ ๊ฐ€์ด๋“œ:** ์†Œํ˜• ๋ชจ๋ธ(3B ์ดํ•˜) ๋ฐ ๋Œ€๊ทœ๋ชจ ์ปจํ…์ŠคํŠธ ์ƒํ™ฉ์—์„œ ์ฒซ ํ† ํฐ๋ถ€ํ„ฐ EOS๋ฅผ ๋ฑ‰๋Š” ํ˜„์ƒ์— ๋Œ€ํ•œ ๊ตฌ์ฒด์ ์ธ ํ•ด๊ฒฐ ๊ฐ€์ด๋“œ(LM Studio ๋กœ๊ทธ ๋ถ„์„ ๊ธฐ๋ฐ˜)๋ฅผ ์—๋Ÿฌ ๋ฉ”์‹œ์ง€์— ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค. - **์‹ ๊ทœ ํŒจํ‚ค์ง•:** `astra-2.80.32.vsix` ํŒจํ‚ค์ง€๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ๊ณ ๋ถ€ํ•˜ ์ŠคํŠธ๋ฆฌ๋ฐ ๋ณต๊ตฌ ์‹œ๋‚˜๋ฆฌ์˜ค์— ๋Œ€ํ•œ ๊ฒ€์ฆ์„ ์™„๋ฃŒํ–ˆ์Šต๋‹ˆ๋‹ค. --- ## v2.80.31 (2026-05-11) ### ๐Ÿง  Logic Optimization & Skill Integration - **์—์ด์ „ํŠธ ์‘๋‹ต ๋กœ์ง ๊ฐ„์†Œํ™”:** `src/agent.ts` ๋‚ด์˜ ๋ณต์žกํ•œ ํ•˜๋“œ์ฝ”๋”ฉ ํด๋ฐฑ ๋ฐ ๋ฆฌ๋ทฐ ํŒ๋‹จ ๋กœ์ง์„ ์ œ๊ฑฐํ•˜์—ฌ ๋ชจ๋ธ ๊ธฐ๋ฐ˜์˜ ์œ ์—ฐํ•œ ์‘๋‹ต ์ƒ์„ฑ์„ ๊ฐ•ํ™”ํ–ˆ์Šต๋‹ˆ๋‹ค. - **๋ฒ”์šฉ ์—์ด์ „ํŠธ ์Šคํ‚ฌ ํ™•์žฅ:** `General` ์—์ด์ „ํŠธ์— ๋Œ€ํ•œ ์™ธ๋ถ€ ์Šคํ‚ฌ ํด๋”(`Agent/_agent/skills`) ์—ฐ๋™ ๊ตฌ์กฐ๋ฅผ ์ตœ์ ํ™”ํ•˜์—ฌ ๋ฒ”์šฉ ์ž‘์—… ์ฒ˜๋ฆฌ ๋Šฅ๋ ฅ์„ ํ–ฅ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค. - **์›Œํฌ์ŠคํŽ˜์ด์Šค ์—ฐ๋™ ๊ฐ•ํ™”:** `.astra/agent-knowledge-map.json` ์„ค์ •์„ ํ†ตํ•œ ์—์ด์ „ํŠธ๋ณ„ ์ง€์‹ ๋ฐ ์Šคํ‚ฌ ๋ฒ”์œ„ ์ •์˜์˜ ์ •ํ•ฉ์„ฑ์„ ๊ฐœ์„ ํ–ˆ์Šต๋‹ˆ๋‹ค. - **์‹ ๊ทœ ํŒจํ‚ค์ง•:** `astra-2.80.31.vsix` ํŒจํ‚ค์ง€๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ์ฃผ์š” ๊ธฐ๋Šฅ์˜ ์ž‘๋™ ์œ ๋ฌด๋ฅผ ์žฌ๊ฒ€์ฆํ–ˆ์Šต๋‹ˆ๋‹ค. --- ## v2.80.30 (2026-05-11) ### ๐Ÿ› ๏ธ External Skills & Sidebar UX Enhancement - **์™ธ๋ถ€ ์Šคํ‚ฌ ๋กœ๋”ฉ ์ง€์› (External Skill Loading):** `externalSkillLoader.ts` ์‹ ๊ทœ ๋„์ž… ๋ฐ `agentKnowledgeMap.ts` ๊ณ ๋„ํ™”๋ฅผ ํ†ตํ•ด ์™ธ๋ถ€ ์ •์˜ ์Šคํ‚ฌ์„ ๋™์ ์œผ๋กœ ๋กœ๋“œํ•˜๊ณ  ํ™œ์šฉํ•˜๋Š” ๊ธฐ๋ฐ˜์„ ๊ตฌ์ถ•ํ–ˆ์Šต๋‹ˆ๋‹ค. - **์‚ฌ์ด๋“œ๋ฐ” UI ์ •๊ตํ™”:** `sidebar.html`, `sidebar.js`, `sidebar.css` ์ „๋ฉด ๊ฐฑ์‹ ์„ ํ†ตํ•ด ์Šคํ‚ฌ ์„ ํƒ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ฐœ์„ ํ•˜๊ณ  ์‹œ๊ฐ์  ํ”ผ๋“œ๋ฐฑ์„ ๊ฐ•ํ™”ํ–ˆ์Šต๋‹ˆ๋‹ค. - **์—์ด์ „ํŠธ ์‹คํ–‰ ๋กœ์ง ์ตœ์ ํ™”:** `agentHandlers.ts` ๋‚ด์˜ ์Šคํ‚ฌ ์ปจํ…์ŠคํŠธ ์ฃผ์ž… ๋ฐ ๋ฉ”์‹œ์ง€ ์ฒ˜๋ฆฌ ํŒŒ์ดํ”„๋ผ์ธ์„ ๊ฐœ์„ ํ•˜์—ฌ ์‹คํ–‰ ์•ˆ์ •์„ฑ์„ ํ™•๋ณดํ–ˆ์Šต๋‹ˆ๋‹ค. - **์‹ ๊ทœ ํŒจํ‚ค์ง•:** `astra-2.80.30.vsix` ํŒจํ‚ค์ง€๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ํ•ต์‹ฌ ์›Œํฌํ”Œ๋กœ์šฐ์— ๋Œ€ํ•œ ํšŒ๊ท€ ํ…Œ์ŠคํŠธ๋ฅผ ์™„๋ฃŒํ–ˆ์Šต๋‹ˆ๋‹ค. --- ## v2.80.29 (2026-05-10) ### ๐Ÿ›ก๏ธ Service Reliability & Telegram Integration - **ํ…”๋ ˆ๊ทธ๋žจ ๋ด‡ ์•ˆ์ •ํ™” (Telegram Bot Stabilization):** `telegramBot.ts` ๋‚ด์˜ ํด๋ง ๋ฐ ์‘๋‹ต ๋กœ์ง์„ ๊ฐœ์„ ํ•˜์—ฌ ๋ฉ”์‹œ์ง€ ๋ˆ„๋ฝ ๋ฐ ์—ฐ๊ฒฐ ์ง€์—ฐ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ–ˆ์Šต๋‹ˆ๋‹ค. - **์„œ๋น„์Šค ๊ณ„์ธต ๋ฆฌํŒฉํ† ๋ง:** `services.ts` ๋‚ด์˜ ํ•ต์‹ฌ ์ธํ”„๋ผ ์„œ๋น„์Šค ์ดˆ๊ธฐํ™” ๋ฐ ์ข…์†์„ฑ ๊ด€๋ฆฌ ๋ฐฉ์‹์„ ์ตœ์ ํ™”ํ•˜์—ฌ ์‹œ์Šคํ…œ ๋ถ€ํŒ… ์†๋„๋ฅผ ํ–ฅ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค. - **์ต์Šคํ…์…˜ ์ฝ”์–ด ๊ฐ•ํ™”:** `extension.ts` ๋‚ด์˜ ์ปค๋งจ๋“œ ๋“ฑ๋ก ๋ฐ ๋ฆฌ์†Œ์Šค ํ•ด์ œ ์‚ฌ์ดํด์„ ์ •๊ตํ™”ํ•˜์—ฌ ๋ฉ”๋ชจ๋ฆฌ ๋ˆ„์ˆ˜๋ฅผ ๋ฐฉ์ง€ํ•˜๊ณ  ์‹คํ–‰ ์•ˆ์ •์„ฑ์„ ๋†’์˜€์Šต๋‹ˆ๋‹ค. - **์‹ ๊ทœ ํŒจํ‚ค์ง•:** `astra-2.80.29.vsix` ํŒจํ‚ค์ง€๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ์ „์ฒด ํ…Œ์ŠคํŠธ ์Šค์œ„ํŠธ๋ฅผ ์žฌ๊ฒ€์ฆํ–ˆ์Šต๋‹ˆ๋‹ค. --- ## v2.80.28 (2026-05-10) ### ๐Ÿ›๏ธ Knowledge Architecture & Skill Scoping - **์ง€์‹ ๋งตํ•‘ ๊ณ ๋„ํ™” (Knowledge Mapping):** `agentKnowledgeMap.ts` ๋ฐ `scopedBrainRetriever.ts` ๋„์ž…์„ ํ†ตํ•ด ์—์ด์ „ํŠธ๋ณ„๋กœ ๊ฒ€์ƒ‰ํ•  ์ง€์‹ ๋ฒ”์œ„๋ฅผ ์ •๊ตํ•˜๊ฒŒ ์ œํ•œํ•˜๊ณ  ๊ด€๋ฆฌํ•˜๋Š” ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค. - **์‚ฌ์ด๋“œ๋ฐ” UI ์•ˆ์ •ํ™”:** ๋ฏธ๋””์–ด ํด๋”์˜ `sidebar.html`, `sidebar.js`๋ฅผ ๊ฐฑ์‹ ํ•˜์—ฌ ์‚ฌ์šฉ์ž ์ธํ„ฐ๋ž™์…˜๊ณผ ์ƒํƒœ ๋™๊ธฐํ™”์˜ ์ •ํ•ฉ์„ฑ์„ ๊ฐœ์„ ํ–ˆ์Šต๋‹ˆ๋‹ค. - **ํŒจํ‚ค์ง• ์ตœ์ ํ™”:** ์ตœ์‹  ๋นŒ๋“œ ํŒŒ์ดํ”„๋ผ์ธ์„ ํ†ตํ•ด `astra-2.80.28.vsix` ํŒจํ‚ค์ง€๋ฅผ ์ƒ์„ฑํ•˜๊ณ , ์ŠคํŠธ๋ ˆ์Šค ํ…Œ์ŠคํŠธ๋ฅผ ํ†ตํ•ด ์—”์ง„์˜ ๋ณต์›๋ ฅ์„ ์žฌ๊ฒ€์ฆํ–ˆ์Šต๋‹ˆ๋‹ค. - **์‹œ์Šคํ…œ ์•ˆ์ •์„ฑ ๊ฐ•ํ™”:** `extension.ts` ๋ฐ `agentHandlers.ts` ๋‚ด์˜ ๋น„๋™๊ธฐ ์ฒ˜๋ฆฌ ๋กœ์ง์„ ๋ณด์™„ํ•˜์—ฌ ๋‹ค์ค‘ ์—์ด์ „ํŠธ ์‹คํ–‰ ์‹œ์˜ ์•ˆ์ •์„ฑ์„ ํ™•๋ณดํ–ˆ์Šต๋‹ˆ๋‹ค. --- ## v2.64.0 (2026-05-04) ### ๐Ÿ›ก๏ธ Resilient Pipeline & Stability Overhaul - **์ƒํƒœ ์˜์†์„ฑ ๋ฐ ์žฌ๊ฐœ (State Persistence & Resume):** ๋ฏธ์…˜ ์ง„ํ–‰ ์ƒํƒœ๋ฅผ ๋””์Šคํฌ(`.astra/missions/`)์— ์‹ค์‹œ๊ฐ„ ์ €์žฅํ•˜๋ฉฐ, ํฌ๋ž˜์‹œ๋‚˜ ์˜ค๋ฅ˜ ๋ฐœ์ƒ ์‹œ ๋งˆ์ง€๋ง‰ ๋‹จ๊ณ„๋ถ€ํ„ฐ ์ž์œจ ์žฌ๊ฐœํ•˜๋Š” ๊ธฐ๋Šฅ ๋„์ž…. - **์ค‘๋ณต ์ˆ˜์ง‘ ๋ฐฉ์ง€ (Deduplication):** ๋™์ผํ•œ ํ”„๋กฌํ”„ํŠธ์™€ ์ปจํ…์ŠคํŠธ์— ๋Œ€ํ•œ LLM ์‘๋‹ต์„ ํ•ด์‹œ ๊ธฐ๋ฐ˜์œผ๋กœ ์บ์‹ฑํ•˜์—ฌ ๋ถˆํ•„์š”ํ•œ ์ค‘๋ณต ํ˜ธ์ถœ์„ ์ฐจ๋‹จํ•˜๋Š” `CacheManager` ํƒ‘์žฌ. - **์‹คํŒจ ์›์ธ ๋ช…์‹œ์  ๊ธฐ๋ก:** Transient(์ผ์‹œ์ ) ๋ฐ Permanent(์˜๊ตฌ์ ) ์˜ค๋ฅ˜ ๋ถ„๋ฅ˜์™€ ํ•จ๊ป˜ ์„ธ๋ถ€ ์‹คํŒจ ์›์ธ์„ ๋กœ๊ทธ์— ๊ธฐ๋กํ•˜์—ฌ ์ง„๋‹จ ํŽธ์˜์„ฑ ๊ฐ•ํ™”. - **์ˆ˜์ง‘ ๊ฒฐ๊ณผ ํ’ˆ์งˆ ์ ์ˆ˜ํ™” (Quality Scoring):** ๋ฐ์ดํ„ฐ์˜ ๊ธธ์ด, ๊ตฌ์กฐ, ์ •๋ณด ๋ฐ€๋„๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์ˆ˜์ง‘ ๊ฒฐ๊ณผ์˜ ํ’ˆ์งˆ์„ ์ž๋™ ํ‰๊ฐ€ํ•˜๋Š” `QualityScorer` ๋„์ž…. - **์œ„ํ‚ค ํฌ๋งท ํ‘œ์ค€ํ™” (Standardization):** ์ตœ์ข… ๊ฒฐ๊ณผ๋ฌผ์— P-Reinforce v3.0 ํ‘œ์ค€ ํ”„๋ก ํŠธ๋งคํ„ฐ ๋ฐ ํ—ค๋”๋ฅผ ์ž๋™ ์ฃผ์ž…ํ•˜๋Š” `WikiFormatter` ์—ฐ๋™. --- ## v2.63.0 (2026-05-04) ### ๐Ÿ›ก๏ธ Agent Handoff Tracing & Diagnostics - **๋ฐ์ดํ„ฐ ๋ฌด๊ฒฐ์„ฑ ๊ฒ€์ฆ (Data Integrity):** ์—์ด์ „ํŠธ ๊ฐ„(Planner โ†’ Researcher โ†’ Writer) ํ•ธ๋“œ์˜คํ”„ ์‹œ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐ์ดํ„ฐ ๋ˆ„๋ฝ์„ ๊ฐ์ง€ํ•˜๊ณ  ์ฐจ๋‹จํ•˜๋Š” `AgentDataValidator` ๊ธฐ๋Šฅ ๋„์ž…. - **์„ฑ๋Šฅ ํ”„๋กœํŒŒ์ผ๋ง (LLM Latency Profiling):** ์—์ด์ „ํŠธ๋ณ„ LLM ์ฒ˜๋ฆฌ ์‹œ๊ฐ„(ms) ๋ฐ ์ดˆ๋‹น ํ† ํฐ ์ƒ์„ฑ ์†๋„๋ฅผ ์ธก์ •ํ•˜์—ฌ ์ž ์žฌ์ ์ธ ๋น„๋™๊ธฐ ๋ณ‘๋ชฉ ํ˜„์ƒ์„ ์ง„๋‹จํ•˜๋Š” ๊ธฐ๋Šฅ ์ถ”๊ฐ€. - **ํ”„๋กฌํ”„ํŠธ ํฌ๋งท ํ•œ๊ธ€ํ™”:** Inferred user intent ๋ฐ Blocking Questions ๋“ฑ ์˜์–ด๋กœ ์ถœ๋ ฅ๋˜๋˜ ๋งˆํฌ๋‹ค์šด ํ—ค๋”๋ฅผ ๋ช…ํ™•ํ•œ ํ•œ๊ธ€(`## ์‚ฌ์šฉ์ž ์˜๋„ ์ถ”๋ก `, `## ํ•ต์‹ฌ ํ™•์ธ ์งˆ๋ฌธ`)๋กœ ๊ฐœ์„ . --- ## v2.62.0 (2026-05-04) ### ๐Ÿš€ Astra Autonomous Loop (AAL) ๊ธฐ์ดˆ ๊ตฌ์ถ• - **๋ฐ์ดํ„ฐ ์ค‘์•™ํ™”:** `.astra` ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ํ”„๋กœ์ ํŠธ ๋ฃจํŠธ์—์„œ `ConnectAI/.astra/` ๋‚ด๋ถ€๋กœ ์ด์ „ํ•˜์—ฌ ํ”„๋กœ์ ํŠธ ์‘์ง‘๋„ ํ–ฅ์ƒ. - **AAL ํ”„๋กœํ† ์ฝœ ๋„์ž…:** ์—์ด์ „ํŠธ ๊ฐ„ ์ž์œจ ํ˜‘์—…์„ ์œ„ํ•œ `protocol.json` ๋ฐ `tasks.json` ์Šคํ‚ค๋งˆ ๊ตฌ์ถ•. - **๊ฒฝ๋กœ ํ•ด๊ฒฐ๊ธฐ(Path Resolver):** ํ™•์žฅ ํ”„๋กœ๊ทธ๋žจ ์„ค์น˜ ๊ฒฝ๋กœ ๊ธฐ๋ฐ˜์˜ ๋ฐ์ดํ„ฐ ๊ด€๋ฆฌ ์‹œ์Šคํ…œ(`astraPath.ts`) ๋„์ž…. ### ๐Ÿ” ํŒŒ์ผ ์ง์ ‘ ๋ถ„์„ ๊ธฐ๋Šฅ ๊ฐ•ํ™” - **๊ฒฝ๋กœ ๊ฐ์ง€ ๋ฒ”์šฉํ™”:** ํ•˜๋“œ์ฝ”๋”ฉ๋œ ๊ฒฝ๋กœ ๋Œ€์‹  `/Volumes/`, `/Users/`, `/home/`, `~/` ๋“ฑ ๋ชจ๋“  ์ ˆ๋Œ€ ๊ฒฝ๋กœ ๊ฐ์ง€ ์ง€์›. - **๋ถ„์„ ํ‚ค์›Œ๋“œ ํ™•์žฅ:** "์ฝ์–ด์ค˜", "์—ด์–ด์ค˜", "ํŒŒ์ผ ๋‚ด์šฉ", "์ฝ”๋“œ ๋ถ„์„" ๋“ฑ ์ง๊ด€์ ์ธ ํ•œ๊ตญ์–ด/์˜์–ด ํŠธ๋ฆฌ๊ฑฐ ์ถ”๊ฐ€. - **๋Œ€์šฉ๋Ÿ‰ ํ”„๋ฆฌ๋ทฐ ์ง€์›:** ์ฝ”๋“œ/๋ฌธ์„œ ํŒŒ์ผ ๋ถ„์„ ์‹œ ํ”„๋ฆฌ๋ทฐ ์ œํ•œ์„ 1,200์ž์—์„œ **8,000์ž**๋กœ ๋Œ€ํญ ์ƒํ–ฅํ•˜์—ฌ ์ •๋ฐ€ ๋ถ„์„ ๊ฐ€๋Šฅ. --- # Patch Notes - v2.61.0 (2026-05-04) ## ๐Ÿ›ก๏ธ Resilient Engine & Monitoring (๋ณต์›๋ ฅ ๊ฐ•ํ™”) - **Error Recovery Matrix:** ์—๋Ÿฌ ์œ ํ˜•์„ Transient(์ผ์‹œ์ )์™€ Permanent(์˜๊ตฌ์ )๋กœ ์ž๋™ ๋ถ„๋ฅ˜ํ•˜๋Š” ๋ณต๊ตฌ ๋งคํŠธ๋ฆญ์Šค๊ฐ€ ์ „๋ฉด ๋„์ž…๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋„คํŠธ์›Œํฌ ์˜ค๋ฅ˜ ์‹œ ์ง€์ˆ˜ ๋ฐฑ์˜คํ”„ ์žฌ์‹œ๋„๋ฅผ ์ž๋™ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค. - **Mission Control Dashboard:** `toStructuredLog()` ๊ธฐ๋ฐ˜์˜ ํ”„๋ฆฌ๋ฏธ์—„ ์‹œ๊ฐํ™” ๋Œ€์‹œ๋ณด๋“œ(`assets/mission_control.html`)๊ฐ€ ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์—์ด์ „ํŠธ์˜ ํ๋ฆ„๊ณผ ์ง€์—ฐ ์‹œ๊ฐ„์„ ํ•œ๋ˆˆ์— ํŒŒ์•…ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. - **์„ฑ๋Šฅ ๋ฐ ๋ณ‘๋ ฌํ™” ์ตœ์ ํ™”:** ๋‹จ๊ณ„๋ณ„ 500ms ๊ฐ•์ œ ์ง€์—ฐ์„ ์ œ๊ฑฐํ•˜๊ณ , Researcher์™€ Writer ์ค€๋น„ ๊ณผ์ •์„ ๋ณ‘๋ ฌํ™”ํ•˜์—ฌ ์ „์ฒด ์›Œํฌํ”Œ๋กœ์šฐ ์ฒ˜๋ฆฌ ์†๋„๋ฅผ ๋Œ€ํญ ํ–ฅ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค. - **์‹ ๋ขฐ์„ฑ ๊ฒ€์ฆ:** 37์ข…์˜ ํ†ตํ•ฉ ํ…Œ์ŠคํŠธ ๋ฐ ์„ฑ๋Šฅ ๋ฒค์น˜๋งˆํฌ ์Šค์œ„ํŠธ๋ฅผ ํ†ตํ•ด ์—”์ง„์˜ ์•ˆ์ •์„ฑ๊ณผ ๋ณต๊ตฌ ๋ฉ”์ปค๋‹ˆ์ฆ˜์„ ์™„๋ฒฝํžˆ ๊ฒ€์ฆํ–ˆ์Šต๋‹ˆ๋‹ค. --- # Patch Notes - v2.60.0 (2026-05-04) ## ๐Ÿง  Memory & Knowledge Search (Unified RAG Pipeline) - **Retrieval Orchestrator:** ํ†ตํ•ฉ RAG ํŒŒ์ดํ”„๋ผ์ธ(`src/retrieval`)์ด ์ „๋ฉด ๋„์ž…๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋ฌด๊ฑฐ์šด ์™ธ๋ถ€ ํ”„๋ ˆ์ž„์›Œํฌ(LlamaIndex ๋“ฑ) ์—†์ด ์ž์ฒด์ ์œผ๋กœ ์ดˆ๊ฒฝ๋Ÿ‰ TF-IDF ์Šค์ฝ”์–ด๋ง ๋ฐ ์ปจํ…์ŠคํŠธ ์˜ˆ์‚ฐ ์ตœ์ ํ™”๋ฅผ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค. - **2nd Brain (Obsidian) ์—ฐ๋™:** ํ”„๋กœ์ ํŠธ ๋ฌธ์„œ ๋ฐ ์˜ต์‹œ๋””์–ธ ์ง€์‹ ๊ธฐ์ง€์—์„œ ์งˆ๋ฌธ๊ณผ ์—ฐ๊ด€๋œ ํ•ต์‹ฌ ๋ฌธ๋‹จ์„ ์ž๋™ ์ถ”์ถœํ•˜์—ฌ AI ํ”„๋กฌํ”„ํŠธ์— ์ฃผ์ž…ํ•ฉ๋‹ˆ๋‹ค. - **๋‹ค์ค‘ ๋ฉ”๋ชจ๋ฆฌ ๊ณ„์ธต ๋™์‹œ ํƒ์ƒ‰:** ๊ณผ๊ฑฐ ๋Œ€ํ™”(Episodic), ํ”„๋กœ์ ํŠธ ๊ฒฐ์ • ์‚ฌํ•ญ(Project), ๋ฌธ์ œ ํ•ด๊ฒฐ ์ ˆ์ฐจ(Procedural) ๋“ฑ ๋‹ค์–‘ํ•œ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์œตํ•ฉํ•˜์—ฌ ์ž…์ฒด์ ์ธ ๋‹ต๋ณ€์„ ์ œ๊ณตํ•˜๋„๋ก ๊ฐ•ํ™”๋˜์—ˆ์Šต๋‹ˆ๋‹ค. --- # Patch Notes - v2.59.0 (2026-05-03) ## ๐ŸŽจ UI/UX Polish & Stability - **Visual Consistency:** Refined the sidebar layout to ensure 100% alignment with the latest design guidelines. - **Error Handling:** Improved the clarity of diagnostic messages during agent execution failures. - **Workflow Persistence:** Fixed a minor edge case where the multi-agent execution state was not correctly reset after cancellation. --- # Patch Notes - v2.58.0 (2026-05-03) ## ๐Ÿ› ๏ธ Performance & Core Refinement - **Workflow Orchestration:** Further optimized the agent handoff logic for smoother transition between reasoning stages. - **Resource Management:** Enhanced memory cleanup during intensive multi-agent tasks to prevent UI lag. - **System Stability:** Finalized the synchronization between core logic and UI event handlers. --- # Patch Notes - v2.37.0 (2026-05-03) ## ๐Ÿš€ Orchestration & System Stability - **Version Normalization:** Synchronized system-wide versioning to v2.37.0 to align with the latest architectural refinements. - **Build Pipeline Optimization:** Streamlined the VSIX packaging process for consistent distribution across environments. - **Git Sync Strategy:** Enhanced the automated commit & push workflow to ensure 100% repository integrity after major updates. --- # Patch Notes - v2.36.9 (2026-05-02) ## โœ๏ธ Content Engineering: Blog Automation Standard - **Blog Production Standard Manual:** Integrated the authoritative guide for structure, layout, and SEO-optimized headline design into the agent's reasoning core. - **Tone & Manner Refinement:** Established the "Ryuri-style" persona (Friendly Expert) as the default for content-centric tasks to ensure high engagement and trust. - **Knowledge Pipeline:** Synced the latest blog writing patterns from the Wiki into the extension's knowledge retrieval layer. --- # Patch Notes - v2.36.8 (2026-05-02) ## ๐Ÿ” Intelligence & Stability: Review Preflight - **Code Review Preflight:** Implemented a local path validation layer that verifies workspace integrity before initiating deep autonomous code analysis. - **System Prompt Testing:** Added a suite of automated tests for system prompts to ensure consistent agent behavior across diverse reasoning tasks. --- # Patch Notes - v2.36.7 (2026-05-02) ## ๐ŸŽจ UX & Search Refinement - **Answer Format Tuning:** Optimized response formatting to improve readability and visual clarity of synthesized information. - **Query Intent Search:** Enhanced the intent-based search logic to provide more contextually relevant results from the knowledge base. --- # Patch Notes - v2.36.6 (2026-05-02) ## ๐Ÿ›ก๏ธ Reliability Upgrade: Project Claim Output Brake - **Output Brake Mechanism:** Introduced a strict filtering layer that prevents the agent from making unverified project claims. - **Evidentiary Reasoning:** Refined the core logic to enforce a "No Evidence, No Claim" policy for higher architectural integrity. --- # Patch Notes - v2.36.5 (2026-05-02) ## ๐Ÿ›ก๏ธ Project Governance: Guard Policy Enforcement - **Project Chronicle Guard:** Implemented strict validation logic for project claims, ensuring all assertions are backed by verifiable evidence. - **Trace Optimization:** Enhanced `SecondBrainTrace` for more precise knowledge tracking and context synthesis. --- # Patch Notes - v2.36.4 (2026-05-02) ## ๐Ÿ›๏ธ Knowledge Integration: Datacollector Sync - **Wiki Expansion:** Integrated 43 high-density technical artifacts from the Datacollector (Software Engineering, Architecture, DevOps). - **v3.1 Standard Compliance:** All new artifacts processed with enhanced validation and duplicate check metadata. --- # Patch Notes - v2.36.3 (2026-05-02) ## โš™๏ธ Core Orchestration Tuning - **Signal Handling Optimization:** Refined the internal event bus to ensure smoother transitions between autonomous reasoning steps. - **Distribution Integrity:** Final validation of build artifacts and metadata consistency for the v2.36 series. --- # Patch Notes - v2.36.2 (2026-05-02) ## ๐Ÿ“ Documentation Fix - **Repository URL Correction:** Fixed incorrect GitHub repository URLs in `README.md` and `package.json` to point to the authoritative `g1nations/locallm` repository. --- # Patch Notes - v2.36.1 (2026-05-02) ## ๐Ÿ› ๏ธ Stability & Refinement - **Action Queue Optimization:** Refined the `ActionQueue` to handle rapid succession of wiki-grounded reasoning tasks without state overlap. - **Distribution Prep:** Finalized build artifacts for the standardized P-Reinforce v3.0 knowledge base integration. --- # Patch Notes - v2.36.0 (2026-05-02) ## ๐Ÿ›๏ธ Knowledge Ecosystem: P-Reinforce v3.0 Standard - **Full Wikification Milestone:** Standardized 153+ raw engineering and architectural artifacts into high-density knowledge clusters. - **Systemic Categorization:** Integrated automated classification for Process Methodology, Architecture Principles, Software Engineering, and DevOps. - **Semantic Integrity:** Ensured 100% metadata consistency across the knowledge base, optimizing the agent's contextual grounding accuracy. --- # Patch Notes - v2.35.1 (2026-05-02) ## ๐ŸŽจ UI & UX Optimization - **Second Brain Trace: Collapsible UI:** Integrated `
` blocks for Trace evidence to reduce visual noise while maintaining transparency. - **Trace Summary:** Added a compact usage summary showing note counts and grounding status at a glance. - **Improved Readability:** Optimized the layout of referenced notes and debug JSON within the expanded section. --- # Patch Notes - v2.35.0 (2026-05-02) ## ๐Ÿ›๏ธ Milestone: Knowledge Resilience & Standardization - **Authoritative Knowledge Base:** Completed the full synthesis of all raw engineering artifacts into the `10_Wiki` system, establishing a single source of truth for Cognitive Engineering, Agentic Coding, and Security Governance. - **Zero-Ghost Integrity:** Finalized global graph cleanup, ensuring the Obsidian brain remains 100% free of broken nodes and fragmented stubs. - **VSIX Distribution:** Optimized packaging for the new standardized environment, ensuring seamless integration with the latest knowledge clusters. --- # Patch Notes - v2.34.1 (2026-05-02) ## ๐Ÿง  Knowledge Base Standardized (P-Reinforce v3.0) - **High-Density Wikification:** Synthesized 148+ raw cognitive engineering and software maintenance artifacts into 9 authoritative, cross-linked clusters. - **Graph Integrity Purge:** Executed global regex-based cleanup to eliminate all broken links (Ghost Nodes) and empty stubs, ensuring 100% structural reliability. - **Topic Architecture:** Reorganized knowledge into standardized categories (Cognitive Engineering, AI/Agentic Coding, Security/Quality, etc.) for optimized discovery. --- # Patch Notes - v2.33.9 (2026-05-01) ## ๐Ÿš€ Core Engine Upgrade - **Agent Workflow Optimization:** Enhanced `AgentWorkflowManager` and `AgentFactory` for more robust multi-agent orchestration. - **Utility Refinement:** Core utilities and configuration logic updated for improved reliability and performance. - **UI/UX Sync:** Further alignment between sidebar provider and core agent logic for a seamless experience. --- # Patch Notes - v2.33.8 (2026-05-01) ## ๐Ÿ› ๏ธ Performance & Stability - **Agent Execution Refinement:** Further stabilized task orchestration and response validation. - **Workflow Stabilization:** Minor internal logic updates to ensure consistent agent performance. --- # Patch Notes - v2.33.7 (2026-05-01) ## โš™๏ธ Logic Refinement - **Multi-Agent Routing:** Optimized workflow to prioritize local project analysis over general multi-agent execution when explicit projects are referenced. - **Intent Detection:** Expanded analysis intent keywords for better project-level understanding triggers. - **Error Handling:** Improved diagnostic details for empty AI responses to help troubleshoot local server issues. - **Default Config:** Set `multiAgentEnabled` to `false` by default for a leaner initial experience. - **UI Polish:** Enhanced Multi-Agent button UI with dynamic tooltips and state synchronization. --- # Patch Notes - v2.33.6 (2026-05-01) ## ๐Ÿ› ๏ธ Critical Bug Fixes - **Chat Persistence Overhaul:** Resolved an issue where chat history disappeared after switching sidebar tabs. - **Webview State Management:** Implemented `vscode.setState` for instant UI restoration. - **Internal Message Logic:** Refined message filtering to ensure intermediate agent steps are visible to the user. --- # Patch Notes - v2.33.5 (2026-05-01) ## ๐ŸŽจ UI Refinement - **Sidebar Provider Update:** Optimized sidebar rendering and event handling for smoother navigation. --- # Patch Notes - v2.33.4 (2026-05-01) ## ๐Ÿ› ๏ธ Manual Refinement & Stabilization - **Core Agent Logic Update:** Manually refined `agent.ts` and `AgentWorkflowManager.ts` for improved task orchestration. - **Workflow Factory Optimization:** Updated `factory.ts` to support more robust agent instantiation. - **Configuration & UI Polish:** Fine-tuned `config.ts` and `sidebarProvider.ts` for a better user experience. --- # Patch Notes - v2.32.0 (2026-04-30) ## ๐Ÿ›๏ธ Modernization: Actor/Queue Model & Monitoring ### 1. Actor/Queue ๊ธฐ๋ฐ˜ ๋น„๋™๊ธฐ ์›Œ์ปค ๋„์ž… - **Asynchronous Worker Pool:** `queue_worker.py`๋ฅผ ๊ตฌ์ถ•ํ•˜์—ฌ ๋ฐ์ดํ„ฐ ์ˆ˜์ง‘๊ณผ ์ถ”๋ก  ์ฒ˜๋ฆฌ๋ฅผ ์™„์ „ํžˆ ๋ถ„๋ฆฌํ–ˆ์Šต๋‹ˆ๋‹ค. - **Traffic Spiking Handling:** ๋ฉ”์‹œ์ง€ ํ๋ฅผ ํ†ตํ•œ ๋ฒ„ํผ๋ง์œผ๋กœ ๊ฐ‘์ž‘์Šค๋Ÿฌ์šด ํŠธ๋ž˜ํ”ฝ ์ฆ๊ฐ€์—๋„ ์‹œ์Šคํ…œ ์•ˆ์ •์„ฑ์„ ๋ณด์žฅํ•ฉ๋‹ˆ๋‹ค. ### 2. ์‹ค์‹œ๊ฐ„ ์„ฑ๋Šฅ ๋ชจ๋‹ˆํ„ฐ๋ง ๋ฐ SLO ์ถ”์  - **SLO Monitoring Hub:** `monitoring.py`๋ฅผ ํ†ตํ•ด ํ•ต์‹ฌ ์ถ”๋ก  ๊ฒฝ๋กœ์˜ ์ง€์—ฐ ์‹œ๊ฐ„์„ ์‹ค์‹œ๊ฐ„ ์ธก์ •ํ•ฉ๋‹ˆ๋‹ค. - **P95 Latency Tracking:** ๋ชฉํ‘œ ์ง€์—ฐ ์‹œ๊ฐ„(200ms) ์ค€์ˆ˜ ์—ฌ๋ถ€๋ฅผ ๋ชจ๋‹ˆํ„ฐ๋งํ•˜๊ณ  ๊ฐ€์‹œ์„ฑ์„ ํ™•๋ณดํ–ˆ์Šต๋‹ˆ๋‹ค. ### 3. ์•„ํ‚คํ…์ฒ˜ ํ˜„๋Œ€ํ™” ์™„๊ฒฐ (Phase 1~3) - **Actor ๋ชจ๋ธ ์ง€ํ–ฅ:** ๋ชจ๋†€๋ฆฌ์‹ ๋™๊ธฐ ์ฒ˜๋ฆฌ์—์„œ ๋น„๋™๊ธฐ ์ด๋ฒคํŠธ ๊ธฐ๋ฐ˜ ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค ์ง€ํ–ฅ ์•„ํ‚คํ…์ฒ˜๋กœ์˜ ๊ทผ๋ณธ์  ์ „ํ™˜์„ ๋‹ฌ์„ฑํ–ˆ์Šต๋‹ˆ๋‹ค. --- # Patch Notes - v2.31.0 (2026-04-30) ## ๐Ÿง  Intelligent Optimization & Scalable Parallelization ### 1. ์ง€๋Šฅํ˜• ํŒŒ๋ผ๋ฏธํ„ฐ ์ตœ์ ํ™” ์—”์ง„ ๋„์ž… - **Simulated Annealing Optimizer:** ๋ธŒ๋ฃจํŠธ ํฌ์Šค ๋ฐฉ์‹์„ ๋Œ€์ฒดํ•˜๋Š” ์‹œ๋ฎฌ๋ ˆ์ดํ‹ฐ๋“œ ์–ด๋‹๋ง ์—”์ง„(`optimizer.py`)์„ ๊ตฌ์ถ•ํ•˜์—ฌ ์ตœ์ ์˜ ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ์ตœ์†Œํ•œ์˜ ๊ณ„์‚ฐ์œผ๋กœ ๋„์ถœํ•ฉ๋‹ˆ๋‹ค. - **Adaptive Search Strategy:** ์ˆ˜๋ ด ์†๋„๋ฅผ ๋น„์•ฝ์ ์œผ๋กœ ํ–ฅ์ƒ์‹œ์ผœ ํ”„๋กœ๋•์…˜ ํ™˜๊ฒฝ์—์„œ์˜ ์‹ค์‹œ๊ฐ„ ํŠœ๋‹ ํšจ์œจ์„ ๊ทน๋Œ€ํ™”ํ–ˆ์Šต๋‹ˆ๋‹ค. ### 2. P3 ๋ณ‘๋ ฌ ์ฒ˜๋ฆฌ ์—”์ง„ ๊ณ ๋„ํ™” - **Multi-core Scaling:** `match_features_parallel` ๊ธฐ๋Šฅ์„ ํ†ตํ•ด ๋Œ€๊ทœ๋ชจ ๋ฐฐ์น˜ ์ฒ˜๋ฆฌ๋ฅผ ๋ฉ€ํ‹ฐ CPU ์ฝ”์–ด์— ๋ถ„์‚ฐํ•˜์—ฌ ์ฒ˜๋ฆฌ๋Ÿ‰(Throughput)์„ ๋น„์•ฝ์ ์œผ๋กœ ํ–ฅ์ƒ์‹œ์ผฐ์Šต๋‹ˆ๋‹ค. - **Efficient Task Distribution:** ํ”„๋กœ์„ธ์Šค๋ณ„ ๋…๋ฆฝ์ ์ธ ๋ฒกํ„ฐ ์—ฐ์‚ฐ ์ˆ˜ํ–‰์œผ๋กœ ๋ฐ์ดํ„ฐ ๊ฒฝํ•ฉ ์—†๋Š” ์ˆœ์ˆ˜ ์„ฑ๋Šฅ ํ™•์žฅ์„ ๋‹ฌ์„ฑํ–ˆ์Šต๋‹ˆ๋‹ค. ### 3. P2 ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ ์ „๋ฉด ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ - **NumPy Core Storage:** ๋‚ด๋ถ€ ์ˆ˜์น˜ ๋ฐ์ดํ„ฐ๋ฅผ Python ๋ฆฌ์ŠคํŠธ์—์„œ NumPy ๋ฐฐ์—ด๋กœ ์ „ํ™˜ํ•˜์—ฌ ๋ฉ”๋ชจ๋ฆฌ ์—ฐ์†์„ฑ๊ณผ ์บ์‹œ ํšจ์œจ์„ฑ์„ ํ™•๋ณดํ–ˆ์Šต๋‹ˆ๋‹ค. - **Memory Footprint Reduction:** ๋ถˆํ•„์š”ํ•œ ์ž„์‹œ ๊ฐ์ฒด ์ƒ์„ฑ์„ ์ตœ์†Œํ™”ํ•˜์—ฌ ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰์…˜ ๋ถ€ํ•˜๋ฅผ ํš๊ธฐ์ ์œผ๋กœ ์ค„์˜€์Šต๋‹ˆ๋‹ค. --- # Patch Notes - v2.30.0 (2026-04-30) ## ๐Ÿ—๏ธ Next-Gen Engine & Architectural Modernization ### 1. ์ฐจ์„ธ๋Œ€ Python ์ฝ”์–ด ์—”์ง„ ๊ตฌ์ถ• (Phase 1~3) - **Vectorized Inference:** NumPy ํ–‰๋ ฌ ์—ฐ์‚ฐ์„ ํ™œ์šฉํ•œ $O(N)$ ํŠน์ง• ๋งค์นญ ์—”์ง„(`core_py/inference.py`) ๋„์ž…์œผ๋กœ ์—ฐ์‚ฐ ์†๋„ ๊ทน๋Œ€ํ™”. - **Asynchronous Data Loader:** `asyncio` ๊ธฐ๋ฐ˜์˜ ๋น„์ฐจ๋‹จ I/O ํŒŒ์ดํ”„๋ผ์ธ(`core_py/loader.py`)์„ ํ†ตํ•ด ๋ฐ์ดํ„ฐ ๋กœ๋”ฉ ๋ณ‘๋ชฉ ํ˜„์ƒ(65% ๋Œ€๊ธฐ ์‹œ๊ฐ„) ์ œ๊ฑฐ. - **Observer Pattern Integration:** ์ค‘์•™ ์ด๋ฒคํŠธ ๋ฒ„์Šค(`core_py/events.py`)๋ฅผ ํ†ตํ•œ ๋ชจ๋“ˆ ๋””์ปคํ”Œ๋ง์œผ๋กœ ์‹œ์Šคํ…œ ์œ ์—ฐ์„ฑ ํ™•๋ณด. ### 2. TypeScript ์„œ๋น„์Šค ์ „๋ฉด ๋น„๋™๊ธฐํ™” - **Non-blocking I/O:** `agent.ts` ๋‚ด์˜ ๋ชจ๋“  ๋™๊ธฐ์‹ ํŒŒ์ผ ์ž‘์—…์„ `fs.promises`๋กœ ์ „ํ™˜ํ•˜์—ฌ ๋Œ€๊ทœ๋ชจ ํ”„๋กœ์ ํŠธ ๋ถ„์„ ์‹œ์˜ UI ํ”„๋ฆฌ์ง• ๋ฌธ์ œ ํ•ด๊ฒฐ. - **Async Project Search:** ๋ณ‘๋ ฌ ์žฌ๊ท€ ํƒ์ƒ‰ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ๋„์ž…ํ•˜์—ฌ ํ”„๋กœ์ ํŠธ ๊ตฌ์กฐ ํŒŒ์•… ์†๋„ ํ–ฅ์ƒ. ### 3. ์•ˆ์ •์„ฑ ๋ฐ ์œ ์ง€๋ณด์ˆ˜์„ฑ ๊ฐ•ํ™” - **DIP ์‹คํ˜„:** `AgentEvents` ํ—ˆ๋ธŒ๋ฅผ ํ†ตํ•œ ์ด๋ฒคํŠธ ๊ธฐ๋ฐ˜ ์•„ํ‚คํ…์ฒ˜๋กœ ์ „ํ™˜ํ•˜์—ฌ ๋ชจ๋“ˆ ๊ฐ„ ๊ฐ•ํ•œ ๊ฒฐํ•ฉ ํ•ด์†Œ. - **TypeScript ์ •๋ฐ€ ํƒ€์ž…ํ™”:** ๋น„๋™๊ธฐ ํ˜ธ์ถœ ๋ฐ Null ์•ˆ์ •์„ฑ์— ๋Œ€ํ•œ ์—„๊ฒฉํ•œ ํƒ€์ž… ์ฒดํฌ ์ ์šฉ. --- # Patch Notes - v2.29.0 (2026-04-30) ## ๐Ÿš€ Performance Leap & Structural Decoupling ### 1. Algorithmic Optimization (O(N) Core) - **DataProcessor Implementation:** ํ•ต์‹ฌ ์ง‘๊ณ„ ๋กœ์ง์„ $O(N^2)$์—์„œ **$O(N)$ ์„ ํ˜• ๋ณต์žก๋„**๋กœ ์ตœ์ ํ™”ํ•˜์—ฌ ๋Œ€๊ทœ๋ชจ ๋ฐ์ดํ„ฐ์…‹ ์ฒ˜๋ฆฌ๋Ÿ‰์„ ๋น„์•ฝ์ ์œผ๋กœ ํ–ฅ์ƒ์‹œ์ผฐ์Šต๋‹ˆ๋‹ค. - **Adaptive Indexing:** ๋ฐ์ดํ„ฐ ๋ถ„ํฌ์— ๋ฏผ๊ฐํ•˜๊ฒŒ ๋ฐ˜์‘ํ•˜๋Š” ํšจ์œจ์ ์ธ ์ธ๋ฑ์‹ฑ ๊ตฌ์กฐ๋ฅผ ์ ์šฉํ–ˆ์Šต๋‹ˆ๋‹ค. ### 2. Strategic Architecture Separation - **Bridge Refactoring:** `BridgeServer`์— ์ง‘์ค‘๋œ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์„ `AIService`์™€ `BrainService`๋กœ ์™„์ „ํžˆ ๋ถ„๋ฆฌ(SRP/DIP)ํ•˜์—ฌ ์ˆœํ™˜ ๋ณต์žก๋„๋ฅผ ๋Œ€ํญ ๋‚ฎ์ท„์Šต๋‹ˆ๋‹ค. - **Service-Oriented Design:** ์ธํ”„๋ผ ์˜์กด์„ฑ์„ ์ธํ„ฐํŽ˜์ด์Šค ๋’ค๋กœ ๊ฒฉ๋ฆฌํ•˜์—ฌ ์ฝ”๋“œ์˜ ์ดํ•ด๋„์™€ ์œ ์ง€๋ณด์ˆ˜์„ฑ์„ ๊ทน๋Œ€ํ™”ํ–ˆ์Šต๋‹ˆ๋‹ค. ### 3. Quantitative Validation - **Benchmark Suite:** ๋ฐ์ดํ„ฐ ๊ทœ๋ชจ ํ™•๋Œ€์— ๋”ฐ๋ฅธ ์„ฑ๋Šฅ ํ–ฅ์ƒ์„ ์ •๋Ÿ‰์ ์œผ๋กœ ์ž…์ฆํ•˜๋Š” ๋ฒค์น˜๋งˆํฌ ํ…Œ์ŠคํŠธ๋ฅผ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค. --- # Patch Notes - v2.28.0 (2026-04-30) ## ๐Ÿ—๏ธ Next-Gen Engine Architecture & Stability ### 1. New AgentEngine Core (Producer-Consumer) - **Architecture Refactor:** ๋ฉ€ํ‹ฐ ์—์ด์ „ํŠธ ์›Œํฌํ”Œ๋กœ์šฐ์˜ ํ•ต์‹ฌ ๋กœ์ง์„ `AgentEngine`์œผ๋กœ ์™„์ „ํžˆ ๋ถ„๋ฆฌํ–ˆ์Šต๋‹ˆ๋‹ค. - **Producer-Consumer Pipeline:** ๋ชจ๋“  ๋ฏธ์…˜์„ ๋น„๋™๊ธฐ ํ(`ActionQueue`)๋ฅผ ํ†ตํ•ด ์ฒ˜๋ฆฌํ•˜์—ฌ ๊ณ ๋ถ€ํ•˜ ์ƒํ™ฉ์—์„œ๋„ ์‹œ์Šคํ…œ ์•ˆ์ •์„ฑ์„ ๋ณด์žฅํ•ฉ๋‹ˆ๋‹ค. - **Dependency Injection (DI):** ์—์ด์ „ํŠธ ๊ฐ„ ๊ฒฐํ•ฉ๋„๋ฅผ ๋‚ฎ์ถ”์–ด ์œ ์ง€๋ณด์ˆ˜์„ฑ๊ณผ ํ™•์žฅ์„ฑ์„ ๊ทน๋Œ€ํ™”ํ–ˆ์Šต๋‹ˆ๋‹ค. ### 2. Explicit Synchronization (Mutex Locking) - **Race Condition Protection:** `lockManager`๋ฅผ ์ด์šฉํ•œ ๋ช…์‹œ์  ๋ฎคํ…์Šค(Mutex) ๋ฝ์„ ๋„์ž…ํ•˜์—ฌ, ๋™์ผ ๋ฏธ์…˜์ด ์ค‘๋ณต ์‹คํ–‰๋˜๊ฑฐ๋‚˜ ๋ฐ์ดํ„ฐ๊ฐ€ ์ถฉ๋Œํ•˜๋Š” ๋ฌธ์ œ๋ฅผ ์›์ฒœ ์ฐจ๋‹จํ–ˆ์Šต๋‹ˆ๋‹ค. ### 3. High-Resolution Telemetry - **Stage Tracking:** `Planner` โ†’ `Researcher` โ†’ `Writer`๋กœ ์ด์–ด์ง€๋Š” ํŒŒ์ดํ”„๋ผ์ธ ๋‹จ๊ณ„๋ฅผ ์‹ค์‹œ๊ฐ„์œผ๋กœ ์ถ”์ ํ•˜๊ณ  UI์— ์ •ํ™•ํ•˜๊ฒŒ ๋ณด๊ณ ํ•ฉ๋‹ˆ๋‹ค. --- # Patch Notes - v2.27.0 (2026-04-30) ## ๐Ÿ›  Stability & IDE Integrity Enhancements ### 1. Sidebar UX & Session Management - **Persistence:** ์„ธ์…˜ ๋ณต๊ตฌ ๋ฐ ์ฑ„ํŒ… ํžˆ์Šคํ† ๋ฆฌ ์ •ํ•ฉ์„ฑ ๋กœ์ง์„ ๊ฐ•ํ™”ํ–ˆ์Šต๋‹ˆ๋‹ค. - **Brain Integration:** Second Brain ํ”„๋กœํ•„ ์ „ํ™˜ ์‹œ ์‹œ๊ฐ์  ํ”ผ๋“œ๋ฐฑ(์‹œ์Šคํ…œ ๋ฉ”์‹œ์ง€)์„ ์ถ”๊ฐ€ํ•˜์—ฌ ํ™œ์„ฑ ์ง€์‹ ๋ฒ ์ด์Šค๋ฅผ ๋ช…ํ™•ํžˆ ์ธ์ง€ํ•  ์ˆ˜ ์žˆ๋„๋ก ๊ฐœ์„ ํ–ˆ์Šต๋‹ˆ๋‹ค. - **Negative Prompt:** ์—์ด์ „ํŠธ๋ณ„ ๋ถ€์ • ํ”„๋กฌํ”„ํŠธ(Negative Prompt) ์ €์žฅ ๊ธฐ๋Šฅ์„ ์•ˆ์ •ํ™”ํ•˜์—ฌ ์Šคํƒ€์ผ ๋ฐ ์ œ์•ฝ ์‚ฌํ•ญ ์œ ์ง€๋ฅผ ๋ณด์žฅํ•ฉ๋‹ˆ๋‹ค. ### 2. Multi-Agent & Proactive Suggestions - **Tips Engine:** ์‚ฌ์šฉ์ž ์ธํ„ฐ๋ž™์…˜ ๊ธฐ๋ฐ˜์˜ ๋Šฅ๋™์  ํŒ(Proactive Suggestion) ๊ธฐ๋Šฅ์„ ๊ณ ๋„ํ™”ํ•˜์—ฌ ํšจ์œจ์ ์ธ ์„ค์ •์„ ์ œ์•ˆํ•ฉ๋‹ˆ๋‹ค. - **Workflow:** ์—์ด์ „ํŠธ ๊ฐ„ ๋ฐ์ดํ„ฐ ์ „๋‹ฌ ์‹œ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋Š” ์ž ์žฌ์  ๋ ˆ์ด์Šค ์ปจ๋””์…˜์„ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด ๋™๊ธฐํ™” ๋กœ์ง์„ ๋ณด์™„ํ–ˆ์Šต๋‹ˆ๋‹ค. ### 3. Cleanup & Optimization - **Logs:** ๋ถˆํ•„์š”ํ•œ ๋นŒ๋“œ ๋กœ๊ทธ ๋ฐ ๋””๋ฒ„๊ทธ ๋ฉ”์‹œ์ง€๋ฅผ ์ •๋ฆฌํ•˜์—ฌ ํ™•์žฅ ํ”„๋กœ๊ทธ๋žจ ์„ฑ๋Šฅ์„ ์ตœ์ ํ™”ํ–ˆ์Šต๋‹ˆ๋‹ค. --- # Patch Notes - v2.26.0 (2026-04-30) ## ๐Ÿ’Ž Release Candidate - Production Ready ### 1. Final Build & Packaging Optimization - **Cleanup:** `.vscodeignore` ์„ค์ •์„ ์žฌ๊ฒ€ํ† ํ•˜์—ฌ ๋ถˆํ•„์š”ํ•œ ์†Œ์Šค ํŒŒ์ผ(`src/**`)๊ณผ ์ด์ „ ๋นŒ๋“œ ์‚ฐ์ถœ๋ฌผ(`*.vsix`)์ด ํŒจํ‚ค์ง€์— ํฌํ•จ๋˜์ง€ ์•Š๋„๋ก ์ตœ์ ํ™”ํ–ˆ์Šต๋‹ˆ๋‹ค. - **Consistency:** ์ตœ์‹  ๋“œ๋ž˜๊ทธ ์•ค ๋“œ๋กญ ๋™๊ธฐํ™” ๋กœ์ง์ด ํฌํ•จ๋œ `out/extension.js`๋ฅผ ์žฌ์ƒ์„ฑํ–ˆ์Šต๋‹ˆ๋‹ค. ### 2. Risk Orchestration (SOP #1) - ๋ฐฐํฌ ์ „ ํŠธ๋ฆฌ๋‹ˆํ‹ฐ ๋ฆฌ๋ทฐ(Trinity Review) ๊ด€์ ์—์„œ ์ฝ”๋“œ ์•ˆ์ •์„ฑ์„ ์žฌํ™•์ธํ–ˆ์Šต๋‹ˆ๋‹ค. - ๋ณด์•ˆ ๋ฐ ๋ฆฌ์†Œ์Šค ๊ด€๋ฆฌ ์ธก๋ฉด์—์„œ ํ™œ์„ฑํ™” ์ด๋ฒคํŠธ(`activationEvents`) ์ตœ์ ํ™”๊ฐ€ ์ •์ƒ ์ž‘๋™ํ•จ์„ ๊ฒ€์ฆํ–ˆ์Šต๋‹ˆ๋‹ค. --- # Patch Notes - v2.25.0 (2026-04-30) ## ๐Ÿš€ UX Optimization & Stability (Kodari Approved) ### 1. Drag & Drop Input Synchronization - **Fix:** ๋“œ๋กญ๋œ ํŒŒ์ผ์„ ๋‚ด๋ถ€ ๋ฐฐ์—ด๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ์‹ค์ œ HTML ํŒŒ์ผ ์ž…๋ ฅ ์š”์†Œ(`fileInput.files`)์™€ ๊ฐ•์ œ ๋™๊ธฐํ™”ํ•˜๋„๋ก ๋กœ์ง์„ ๊ฐ•ํ™”ํ–ˆ์Šต๋‹ˆ๋‹ค. - **Verification:** ์„ฑ๊ณต์ ์ธ ๋™๊ธฐํ™” ์‹œ ๊ฐœ๋ฐœ์ž ์ฝ˜์†”์— ํ™•์ธ ๋กœ๊ทธ๋ฅผ ์ถœ๋ ฅํ•˜์—ฌ ์‹ ๋ขฐ์„ฑ์„ ๋†’์˜€์Šต๋‹ˆ๋‹ค. ### 2. Multi-Project IDE Problems Resolved - **Performance:** `Wonseok_AI_original` ํŒจํ‚ค์ง€์˜ ํ™œ์„ฑํ™” ์ด๋ฒคํŠธ๋ฅผ ์ตœ์ ํ™”ํ•˜์—ฌ VS Code ์ดˆ๊ธฐ ์‹คํ–‰ ์†๋„๋ฅผ ๊ฐœ์„ ํ–ˆ์Šต๋‹ˆ๋‹ค. - **Build Fix:** `Datacollect` ํ”„๋กœ์ ํŠธ์˜ Vite ์„ค์ • ๋‚ด ํƒ€์ž… ๋ถˆ์ผ์น˜ ์—๋Ÿฌ๋ฅผ ํ•ด๊ฒฐํ•˜์—ฌ ๋นŒ๋“œ ํŒŒ์ดํ”„๋ผ์ธ์„ ์ •์ƒํ™”ํ–ˆ์Šต๋‹ˆ๋‹ค. ### 3. Syntax Stability - ์ค‘์ฒฉ ํ…œํ”Œ๋ฆฟ ๋ฆฌํ„ฐ๋Ÿด ๋‚ด์˜ ์ด์Šค์ผ€์ดํ”„ ์ฒ˜๋ฆฌ๋ฅผ ์ตœ์ข… ์ ๊ฒ€ํ•˜์—ฌ ๋นŒ๋“œ ์‹œ ๊ตฌ๋ฌธ ์˜ค๋ฅ˜ ๋ฐœ์ƒ ๊ฐ€๋Šฅ์„ฑ์„ ์›์ฒœ ์ฐจ๋‹จํ–ˆ์Šต๋‹ˆ๋‹ค. --- # Patch Notes - v2.24.0 (2026-04-30) ## ๐Ÿš€ New Features & Enhancements ### 1. Webview Drag & Drop File Upload - **Feature:** ์‚ฌ์šฉ์ž๊ฐ€ ํŒŒ์ผ์ด๋‚˜ ํด๋”๋ฅผ ์‚ฌ์ด๋“œ๋ฐ” ์ฑ„ํŒ…์ฐฝ์œผ๋กœ ์ง์ ‘ ๋“œ๋ž˜๊ทธํ•˜์—ฌ ์—…๋กœ๋“œํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค. - **UX:** ๋“œ๋ž˜๊ทธ ์‹œ ์‹œ๊ฐ์  ์˜ค๋ฒ„๋ ˆ์ด์™€ ๋ธ”๋Ÿฌ ํšจ๊ณผ๋ฅผ ์ œ๊ณตํ•˜์—ฌ ์ง๊ด€์ ์ธ ํ”ผ๋“œ๋ฐฑ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. - **Reliability:** ํŒŒ์ผ ๋“œ๋กญ ์‹œ ์ž๋™์œผ๋กœ Base64 ์ธ์ฝ”๋”ฉ์„ ๊ฑฐ์ณ ์•ˆ์ „ํ•˜๊ฒŒ ๋ฐฑ์—”๋“œ๋กœ ์ „๋‹ฌ๋ฉ๋‹ˆ๋‹ค. ### 2. Webview Stability & Syntax Fix - **Bug Fix:** ์ค‘์ฒฉ ํ…œํ”Œ๋ฆฟ ๋ฆฌํ„ฐ๋Ÿด ๋‚ด์—์„œ ๋ฐœ์ƒํ•˜๋˜ ๋ฐฑํ‹ฑ(`) ๋ฐ ๋ณด๊ฐ„๋ฒ•(${}) ์ด์Šค์ผ€์ดํ”„ ์˜ค๋ฅ˜๋ฅผ ์ˆ˜์ •ํ•˜์—ฌ ๋นŒ๋“œ ์•ˆ์ •์„ฑ์„ ํ™•๋ณดํ–ˆ์Šต๋‹ˆ๋‹ค. - **Feedback:** ํŒŒ์ผ ์ถ”๊ฐ€ ์‹œ Toast ์•Œ๋ฆผ ๋ฐ ํšจ๊ณผ์Œ์„ ์ถ”๊ฐ€ํ•˜์—ฌ ์กฐ์ž‘ ํŽธ์˜์„ฑ์„ ๋†’์˜€์Šต๋‹ˆ๋‹ค. --- # Patch Notes - v2.2.46 ## ๐Ÿš€ Key Improvements & Bug Fixes ### 1. AI Communication Protocol Fix - **Issue:** Previously, when a file was attached, the text prompt was completely overwritten by the `visionContent` structure, leading to empty messages being sent to LM Studio. - **Fix:** Merged the text prompt with the vision content array so that both text and file metadata are correctly transmitted. ### 2. Autonomous Loop Optimization - **Issue:** Broad keyword matching (e.g., "์กฐ์‚ฌ", "์„ค๋ช…") triggered local file analysis tasks even for general questions, causing the agent to bypass the LLM and give incomplete answers. - **Fix:** Refined the `isProjectAnalysisRequest` patterns to be more conservative, ensuring generic conversational requests are always handled by the AI model. ### 3. Second Brain Profile Management - **Issue:** Adding new brain profiles was inconsistent because a virtual "default-brain" (injected in memory) was being saved into the permanent settings, causing profile list corruption. - **Fix:** - Decoupled runtime virtual profiles from persistence logic. - Implemented direct settings access for profile addition to avoid stale config caches. - Fixed UI sync issues immediately after adding a new brain folder. ### 4. Build & Reliability - Removed premature empty stream chunks that were causing UI flickering. - Verified build stability with `v2.2.46` VSIX package. --- ## v2.8.0 (2026-04-29) - Intelligent Collaborative System Evolution ### ๐Ÿค– Multi-Agent Workflow (MAW) - **Planner Agent:** ์ „๋žต ์ˆ˜๋ฆฝ ๋ฐ ์ž‘์—… ๋‹จ๊ณ„ ์ž๋™ ์„ค๊ณ„. - **Researcher Agent:** ์ง€์‹ ๋ฒ ์ด์Šค(Second Brain) ์‹ฌ์ธต ๋ถ„์„ ๋ฐ ๋ฐ์ดํ„ฐ ์ •์ œ. - **Writer Agent:** ์ตœ์ข… ๋ณด๊ณ ์„œ ํ˜•ํƒœ์˜ ๊ณ ํ’ˆ์งˆ ๋‹ต๋ณ€ ์ƒ์„ฑ ๋ฐ ํ†ตํ•ฉ. - ๋ณต์žกํ•œ ์š”์ฒญ(๋ถ„์„, ๋ณด๊ณ ์„œ ๋“ฑ) ๊ฐ์ง€ ์‹œ ์ž๋™์œผ๋กœ ๋ฉ€ํ‹ฐ ์—์ด์ „ํŠธ ๋ชจ๋“œ ํ™œ์„ฑํ™”. ### ๐Ÿ”ฎ Proactive Suggestion Engine - **Behavioral Tracking:** ์‚ฌ์šฉ์ž UI ์ฒด๋ฅ˜ ์‹œ๊ฐ„(Dwell Time) ๊ธฐ๋ฐ˜ ์˜๋„ ๊ฐ์ง€. - **Smart Tips:** ์„ค์ •, ์ง€์‹ ๋™๊ธฐํ™”, ์—์ด์ „ํŠธ ์„ ํƒ ๋“ฑ ์ƒํ™ฉ์— ๋งž๋Š” ๋Šฅ๋™์  ๋„์›€๋ง ์ œ๊ณต. ### ๐ŸŽจ UX & Reliability Improvements - **Visual Feedback:** ๊ฐ€์ด๋“œ๋ผ์ธ์— ๋”ฐ๋ฅธ ์ƒํƒœ๋ณ„ ์•„์ด์ฝ˜ ๋ฐ ํ”ผ๋“œ๋ฐฑ ์ผ๊ด€์„ฑ ๊ฐ•ํ™”. - **Model Fix:** ๋ชจ๋ธ ์„ ํƒ ๋ฐ ์ €์žฅ ๋กœ์ง ์•ˆ์ •ํ™” ์™„๋ฃŒ. - **Agent Handoff:** ๊ฐ ์—์ด์ „ํŠธ ๊ฐ„ ๋ฐ์ดํ„ฐ ์ „๋‹ฌ ๋ฐ ์ง„ํ–‰ ์ƒํ™ฉ ์‹œ๊ฐํ™” ๊ฐœ์„ . --- *Date: 2026-04-25* *Version: 2.2.46*