Files
connectai/PATCHNOTES.md
T
koriweb ebfce17b03 fix: v2.2.203 — 기업모드 dev-impl 빈 깡통 99% 버그 (hollow check 기본 ON)
증상: 사용자가 기획서 + 폴더 주고 "여기 개발해줘" 요청 → ASTRA 가 파일 만들고
"개발 완료" 보고 → 실제 파일을 열면 class/함수 본문이 비어 있음
(def foo(): pass · 빈 class · imports only). 99% 확률 재발.

원인:
- 안전망 이미 존재 (selfReflectorHollow.ts 가 정규식으로 빈 깡통 감지)
- BUT 두 개 config 모두 OFF — selfReflectorEnabled (Phase A) +
  selfReflectorExternalEnabled (Phase B)
- Phase A 켜면 [Self-Reflector Check] 블록이 답변에 노출 (UX 부작용),
  Phase B 는 +1 LLM 호출 비용 — 부작용 때문에 기본 OFF
- 결과: 다수 사용자가 안전망 전혀 없는 상태로 코드 작성 → 빈 깡통 통과

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 와 분리.
   - dispatcher.ts 게이트 조건 교체

2. dev-impl 프롬프트 강화 (pipelineTemplates.ts) — [빈 깡통 금지] 5개 규칙:
   - 파일은 하나씩 생성, 모든 함수 본문 완전 구현 후 다음 파일로
   - 금지 패턴 명시: pass · ... · NotImplementedError · # TODO · 빈 class
   - 인터페이스/추상 메서드만 빈 본문 OK
   - 각 파일 생성 직후 자가 검증
   - 최종 요약에 파일별 핵심 동작 한 줄씩

3. 기본값 변경 — 사용자 행동 없이 안전망 작동. 옛 selfReflector Phase A/B 는
   그대로 OFF (UX 부작용 보존).

예상 효과: ~70-85% stub 감소. 남은 ~15% (작은 모델 attention 한계 / 큰 프로젝트)
는 per-file 순차 생성으로 v2.2.204+ 검토.

모델 한계 vs 로직 fix: 대부분 로직 fix 가능. 매우 작은 모델 (≤4B) 은 한계 더
빠름 — 더 큰 모델 (gemma-12b, qwen-32b) 권장.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-06-02 11:52:12 +09:00

3084 lines
210 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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<T>(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<E>({ 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<CustomerEvent>({ 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<string, string>`
- [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` 사용자 편집 파일**
- **위치**: `<workspace>/.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>` — 최근 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% 미만 → 매출 기반 약함
**데이터 출처:**
- `<workspace>/.astra/customers.jsonl` (add/renew/churn timestamp 그룹핑)
- `<workspace>/.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 <id-prefix> <YYYY-MM-DD>` — 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:**
- `<workspace>/.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 <이름> <MRR> [갱신일] [요금제]` — 신규
- `/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:**
- `<workspace>/.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:**
- `<workspace>/.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):**
- 저장 위치: `<workspace>/.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 이 쌓고 있는 결정 기록(`<recordRoot>/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 &lt;심볼&gt; — 단일 종목 심층 분석
- **신규 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``<div class="records-line">` 통째로 삭제. 그 안에 있던 모든 요소 (자동 기록 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`/`<think>` 마커가 잠시라도 화면에 노출되는 누설 원천 차단. `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번 호출됨 — ①`<run_command>` 액션을 뱉는 호출, ②결과를 정리하는 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 키워드 → 튜토리얼 금지, 명령을 모르면 `<read_file>`로 package.json을 먼저 읽고 그 다음 `<run_command>`로 실제 스크립트 실행. 추측한 스크립트명·포트·환경변수 단정 금지. Few-shot 예시 1건 포함(작은 로컬 모델의 태그 준수율 향상).
- **수정 2 — 경로 경계.** `<read_file>`/`<list_files>`가 워크스페이스 안으로만 제한돼 형제 프로젝트(`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 <txt 파일 경로> [메타데이터]`.** 로컬 회의 녹취 텍스트 파일을 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 <url> [주제명]`.** 사이트 본문 텍스트를 추출해 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> <우리 채널 설명>` 형태로 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 <url> depth=2 pages=12` 로 그때그때 덮어쓰기 가능 (우선순위: 명령어 > 설정 > 기본값).
- **명령어 보조 컨텍스트.** `/benchmark <url> [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 \<url\>:** Playwright 기반 웹사이트 분석 — 디자인 토큰, 컬러 팔레트, 사이트맵 ASCII 다이어그램, 마이크로카피를 요약해 채팅에 표시.
- **/youtube \<url\>:** 영상 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 `<details>` 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*