ConnectAI(Astra)는 "로컬 LLM 을 두뇌로 쓰는 VS Code 확장형 자기진화 지식 OS"이며, 기능별 폴더 경계 + 얇은 entry point + 핵심 인프라(core) 위에 도메인(features)을 쌓는 계층형 모듈 아키텍처로 308개 파일을 조직한다 [S1][S2].
🧠 핵심 개념 (Core concepts)
Feature-based 구조:src/features/ 아래 각 폴더가 독립 기능(stocks, calendar, company, datacollect, devilAgent…). 기능 간 결합을 최소화하고, 공통 인프라만 core//lib/ 에서 공유 [S2].
계층 분리:core(인프라) → lib/memory/retrieval/intelligence(역량) → features(기능) → extension.ts(조립). 아래 계층은 위를 모른다 [S2].
얇은 entry point:extension.ts 의 activate() 는 조립과 등록만 한다 — 객체 생성, 의존성 주입, 명령 등록, 워처 시작. 로직은 전부 모듈에 위임 [S1].
God-class 분해: 거대해지는 orchestrator(agent.ts)를 handlePrompt/, llm/, actions/, multiAgent/, sessions/ 하위 모듈로 쪼개 함수 단위로 추출하고, orchestrator 는 이들을 호출만 한다 [참조: Agent 오케스트레이터 분해].
인터페이스 우선 서비스:IAIService/IBrainService 인터페이스를 두고 구현(AIService)을 분리 — 엔진 폴백 같은 정책을 구현체에 캡슐화 [S3].
자기등록 핸들러: slashRouter 에 핸들러가 side-effect import 로 자기 등록 — 새 명령 추가 시 중앙 등록표를 건드리지 않음 [S1].
부트스트랩 분리: 활성화 시 필요한 초기화(brain 디렉터리, 임베딩 감지, 기능 인벤토리)를 extension/*Bootstrap.ts 로 분리해 entry point 를 얇게 유지 [S1].
disposable 수명 관리: 생성한 모든 자원을 context.subscriptions.push(...) 로 등록해 확장 종료 시 일괄 정리 [S1].