v2.2.299~307: 아키텍처 수렴 + 채팅 정리 + 벤치마킹 강화 + Claude 구독 엔진

- v2.2.299 아키텍처 수렴: coreChat 통일(엔진 휴리스틱 3벌 제거), 기업 모드
  검색 오케스트레이터 승격, lib/execUtil(실행 래퍼 6곳·Python 탐지 3벌 단일화),
  lib/kstSchedule(워처 4개 nowInKst 통합), estimateTokens 통합, 설정 접근 규칙 명문화
- v2.2.300 채팅 화면 정리: LiveReasoningFilter(스트리밍 중 <think>/Harmony 추론
  토큰 단위 차단), 확신도·검토요청 footer 기본 숨김(계산·Reflection 은 유지)
- v2.2.301 문맥·의도 이해: [답변 전 이해 원칙] 상시 주입, 워크플로우 의도 브리핑,
  Report QA 루프(규칙 레지스트리+실측치+회귀 게이트, 블로그_v3 개념 이식)
- v2.2.302 /benchmark 비즈니스 렌즈(가격·수익·운영)+빌드 프롬프트 모드+QA 연계
- v2.2.303 handoff 모드(측정치 무손실 인수인계 문서)+/claude(Claude Code 터미널 위임)
- v2.2.304 이식성: 지식 경로 두뇌-상대 규약(pickWikiDir 상대 해석), 이사 체크리스트
- v2.2.305 Claude 구독 엔진: claude: 프로바이더(CLI 위임, 모델 드롭다운 자동 노출,
  coreChat 지원 — 워크플로우·QA도 구독 모델 가능)
- v2.2.306 Tone Guard: AI 상투어 금지 레지스트리(상담사 화법 실사례 8종+대조 예시)
- v2.2.307 /benchmark 레이아웃 골격(sectionRoles 결정론 분석, 롤링 배너 즉답),
  파트별 실패 격리, 합성 타임아웃 120→300초

검증: tsc 무오류 + jest 888 통과 + esbuild 정상

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
2026-07-11 21:02:15 +09:00
parent 98d533f045
commit 47b3b9f93a
66 changed files with 2421 additions and 459 deletions
+27 -4
View File
@@ -143,6 +143,16 @@ export interface IAgentConfig {
* 깨끗한 답변에는 안 돈다 (latency 보호). 기본 true. (Phase 1 / Track 2-3)
*/
criticLoopEnabled: boolean;
/**
* Report QA Loop — 조사·보고서형 워크플로우 답변에 블로그_v3 방식 품질 루프 적용:
* 의도 브리핑(왜 묻는지 분석) → 초안 → QA 채점(규칙 레지스트리+실측치 주입) →
* 피드백 재작성 → 회귀 게이트(점수 하락 시 재작성본 폐기). 기본 true. (v2.2.301)
*/
reportQaEnabled: boolean;
/** Report QA 통과 점수 임계 (이 미만이면 재작성). 기본 80. */
reportQaThreshold: number;
/** Report QA 최대 재작성 횟수 (로컬 모델 latency 보호). 기본 2. */
reportQaMaxRevisions: number;
/**
* Reflection — 업무 turn 의 결정론적 회고(확신도·누락 요소·에스컬레이션)를
* <brain>/.astra/growth/reflections.jsonl 에 기록. 성장 추이·반복 실수 집계의
@@ -394,8 +404,8 @@ export interface IAgentConfig {
// ─── Stream 표시 ───
/**
* 모델 토큰을 받는 즉시 채팅 버블에 흘려보낼지 여부.
* - false(기본): 토큰은 내부에서만 누적, sanitize 끝난 최종 답변만 한 번에 표시 → Harmony/think 마커 누설 원천 차단.
* - true: legacy 라이브 스트리밍. 모델 출력에 control token 이 섞여 나오면 잠깐 화면에 보일 수 있음.
* - true(기본): 실시간 표시. 추론 구간(<think>/Harmony thought)은 LiveReasoningFilter 가 토큰 단위로 차단.
* - false: 토큰은 내부에서만 누적, sanitize 끝난 최종 답변만 한 번에 표시.
*/
liveStreamTokens: boolean;
/**
@@ -460,6 +470,15 @@ function toBrainProfile(raw: Partial<BrainProfile> | undefined, fallbackIndex: n
}
// ─── VS Code 설정에서 읽어오는 값 (통합 구현) ───
//
// [설정 접근 규칙 — 2026-07-11 아키텍처 감사에서 명문화]
// IAgentConfig 에 이미 있는 값(엔진 URL·모델·컨텍스트 한계·두뇌 프로필 등
// "코어 계약"에 속하는 값)은 반드시 getConfig() 를 통해 읽는다 — 기본값·클램프·
// 레거시 마이그레이션이 여기 한 곳에 있기 때문. 반대로 특정 기능 전용 설정
// (예: g1nation.stocks.*, dailyBriefing.time)은 그 기능 파일에서
// vscode.workspace.getConfiguration('g1nation') 직접 접근이 허용된다 —
// 기능 하나 추가할 때마다 이 인터페이스를 비대하게 만들지 않기 위한 의도적 분리.
// 판단 기준: "둘 이상의 모듈이 읽는 값인가?" → 그렇다면 IAgentConfig 로 승격할 것.
export function getConfig(): IAgentConfig {
const cfg = vscode.workspace.getConfiguration('g1nation');
@@ -535,9 +554,13 @@ export function getConfig(): IAgentConfig {
requirementGraphEnabled: cfg.get<boolean>('requirementGraphEnabled', true),
requirementCoverageEnabled: cfg.get<boolean>('requirementCoverageEnabled', true),
epistemicGuardEnabled: cfg.get<boolean>('epistemicGuardEnabled', true),
confidenceEngineEnabled: cfg.get<boolean>('confidenceEngineEnabled', true),
escalationEnabled: cfg.get<boolean>('escalationEnabled', true),
// v2.2.300: footer 기본 비표시 (사용자 피드백) — 계산·Reflection 은 항상 수행.
confidenceEngineEnabled: cfg.get<boolean>('confidenceEngineEnabled', false),
escalationEnabled: cfg.get<boolean>('escalationEnabled', false),
criticLoopEnabled: cfg.get<boolean>('criticLoopEnabled', true),
reportQaEnabled: cfg.get<boolean>('reportQaEnabled', true),
reportQaThreshold: Math.max(50, Math.min(95, cfg.get<number>('reportQaThreshold', 80))),
reportQaMaxRevisions: Math.max(0, Math.min(5, cfg.get<number>('reportQaMaxRevisions', 2))),
reflectionEnabled: cfg.get<boolean>('reflectionEnabled', true),
orgMemoryEnabled: cfg.get<boolean>('orgMemoryEnabled', true),
actionabilityEnabled: cfg.get<boolean>('actionabilityEnabled', true),