feat: v2.2.92 → v2.2.158 — god-file 분해 + Stocks feature + 대화 연속성
R56–R59: agent.ts 2731→1529줄 god-file 분해 (25 modules) · attrParsers + LLM 메서드 8개 (callNonStreaming, streamChatOnce 등) · executeActions 415줄 → 8 handler 그룹 (file/run/list/brain/calendar/sheets/tasks) · handlePrompt 1100줄 → 7 phase 모듈 (system prompt + budget + autoContinue 등) R50–R55: extension.ts 1145→349줄 (telegram/settings/provider commands 분리) Stocks feature 신규: /stocks slash command (v2.2.152~158) · .astra/stocks.json 저장소 + Yahoo Finance 현재가 갱신 · 8 키워드 필터 (ROE/성장성/유동성/수익성/영업효율/기술력/안정성/PBR) · Naver 시가총액 페이지 JSON API (m.stock.naver.com) 발굴 · LLM Top 5 매력도 분석 + Telegram 자동 보고서 · KST 09:00/15:00 watcher 자동 모니터링 대화 연속성 (v2.2.150~157): · [PRIOR TURN CONCLUSION] block 으로 직전 결론 anchor · thin follow-up 분류 → boilerplate 헤더 suppression · slash 명령 결과 chatHistory mirror (capture wrapper) · echo/parrot 금지 system prompt rule 기타: /stocks 슬래시 자동완성 dropdown UI, Naver JSON API 전환 (cheerio 제거) Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
+47
-4
@@ -2,7 +2,7 @@
|
||||
"name": "astra",
|
||||
"displayName": "Astra",
|
||||
"description": "The personal intelligence layer for Antigravity and VS Code. A private cognitive partner for deep project context, memory, and proactive strategic decision-making.",
|
||||
"version": "2.2.91",
|
||||
"version": "2.2.158",
|
||||
"publisher": "g1nation",
|
||||
"license": "MIT",
|
||||
"icon": "assets/icon.png",
|
||||
@@ -549,13 +549,17 @@
|
||||
},
|
||||
"g1nation.workflow.multiAgentMode": {
|
||||
"type": "string",
|
||||
"enum": ["auto", "always", "off"],
|
||||
"enum": [
|
||||
"auto",
|
||||
"always",
|
||||
"off"
|
||||
],
|
||||
"default": "auto",
|
||||
"markdownDescription": "Multi-Agent(5단계) 파이프라인 발동 모드.\n\n- `auto` (기본): 작은 모델(≤4B) 감지, 큰 prompt(컨텍스트의 30%+), 명시적 키워드(보고서/리뷰/심층 분석…), 또는 사용자가 `multiAgentEnabled`를 켰을 때 자동으로 발동. 짧은 인사·잡담은 제외.\n- `always`: 인사·잡담을 제외한 모든 요청에 5단계 파이프라인 사용. 작은 모델로도 답변이 한 번에 끝나지 않는다면 이 모드가 안정적.\n- `off`: 기존 키워드/길이 휴리스틱 + 수동 `multiAgentEnabled` 토글만 사용 (legacy 동작)."
|
||||
},
|
||||
"g1nation.workflow.autoCtxFractionThreshold": {
|
||||
"type": "number",
|
||||
"default": 0.30,
|
||||
"default": 0.3,
|
||||
"minimum": 0.05,
|
||||
"maximum": 0.95,
|
||||
"markdownDescription": "`workflow.multiAgentMode = auto` 일 때, prompt 토큰이 효과적 context window 의 이 비율(0~1)을 넘으면 5단계 파이프라인을 강제 발동. 기본 0.30 — 작은 모델이 input으로 컨텍스트의 30% 이상을 먹기 시작하면 한 번에 답하려다 EOS/잘림이 잘 발생한다."
|
||||
@@ -573,6 +577,12 @@
|
||||
"maximum": 10,
|
||||
"markdownDescription": "**Chunked 파이프라인이 답변을 쪼갤 수 있는 최대 섹션 수.**\n\n실제 LLM 호출 횟수 = `1 (outline) + N (sections) + 1 (polish)` = **2 + N 회**.\n- `1` → 총 3회 (가장 빠름, 답변이 단순할 때만 적합)\n- `3` (기본) → 총 5회\n- `5` → 총 7회 (세분화 필요할 때만)\n\n작을수록 답변 속도 빠름, 클수록 답변이 더 세분화돼서 복잡한 보고서·기획서에 유리. 기본 3 — 일반 채팅에 적합."
|
||||
},
|
||||
"g1nation.polishPersonaOverride": {
|
||||
"type": "string",
|
||||
"default": "",
|
||||
"editPresentation": "multilineText",
|
||||
"markdownDescription": "**ChunkedWriter 의 polish 단계 system prompt 를 직접 정의** — 답변 톤·구조를 도메인에 맞게 커스텀.\n\n비워두면 기본 polish persona (한 줄 요약 + subheading + 5-check self-review) 사용. 텍스트를 입력하면 그 내용이 그대로 polish 단계의 system prompt 로 들어갑니다.\n\n사용 예: 격식체 답변, 반말 답변, 법률·마케팅·의료 등 도메인 특화 톤. 사용자가 Astra Settings 패널 textarea 로 편집 권장."
|
||||
},
|
||||
"g1nation.liveStreamTokens": {
|
||||
"type": "boolean",
|
||||
"default": true,
|
||||
@@ -580,7 +590,10 @@
|
||||
},
|
||||
"g1nation.outputFormat": {
|
||||
"type": "string",
|
||||
"enum": ["plain", "markdown"],
|
||||
"enum": [
|
||||
"plain",
|
||||
"markdown"
|
||||
],
|
||||
"default": "plain",
|
||||
"markdownDescription": "최종 답변 표시 방식.\n\n- `plain` (기본): 모델이 무심코 내보낸 마크다운 마커(`##`, `**`, `__`, `> `, `* ` 등)를 후처리로 모두 제거. 섹션 라벨 텍스트(예: `핵심 요약`)는 유지되지만 헤더 마커는 사라져 깔끔한 plain text 로 보임. 작은 로컬 모델이 학습된 습관으로 `## 다음 한 수` 같은 마커를 흘리는 문제 차단.\n- `markdown`: legacy 동작. 모델 출력을 그대로 렌더러에 넘김."
|
||||
},
|
||||
@@ -717,6 +730,36 @@
|
||||
"type": "boolean",
|
||||
"default": false,
|
||||
"markdownDescription": "**Devil's Advocate (도현) 활성화** — 매 답변 직후 별도 LLM 호출로 *비판적 sparring partner* 가 한 문단 반박. 사용자의 사고를 *수동적 수용 → 능동적 방어* 로 전환시키는 게 목표. Local LLM 동일 모델 재사용, ~10-15% 추가 비용."
|
||||
},
|
||||
"g1nation.stocks.watcherEnabled": {
|
||||
"type": "boolean",
|
||||
"default": true,
|
||||
"markdownDescription": "**주식 자동 모니터링 활성화** — VS Code 시작 시 watcher 가동. KST 09:00 / 15:00 자동 트리거: Yahoo 현재가 갱신 → Google Sheets 동기화 → 텔레그램 보고서. false 면 슬래시 명령으로만 수동 실행."
|
||||
},
|
||||
"g1nation.stocks.spreadsheetId": {
|
||||
"type": "string",
|
||||
"default": "",
|
||||
"markdownDescription": "**Stocks Google Sheets ID** — `https://docs.google.com/spreadsheets/d/<여기>/...` URL 의 ID 부분. 미설정이면 watcher / `/stocks sync` 가 silent skip. OAuth scope 은 calendar 와 공유 (sheets scope 이미 포함)."
|
||||
},
|
||||
"g1nation.stocks.sheetSwing": {
|
||||
"type": "string",
|
||||
"default": "Sheet1",
|
||||
"markdownDescription": "**스윙/중기 종목 시트 탭 이름.** 기본 'Sheet1'. spreadsheet 안에 이 이름의 탭이 미리 존재해야 함."
|
||||
},
|
||||
"g1nation.stocks.sheetLong": {
|
||||
"type": "string",
|
||||
"default": "Sheet2",
|
||||
"markdownDescription": "**장기투자 종목 시트 탭 이름.** 기본 'Sheet2'."
|
||||
},
|
||||
"g1nation.stocks.sheetUltraLow": {
|
||||
"type": "string",
|
||||
"default": "Sheet3",
|
||||
"markdownDescription": "**저평가우량주 시트 탭 이름.** 기본 'Sheet3'."
|
||||
},
|
||||
"g1nation.stocks.telegramChatId": {
|
||||
"type": "number",
|
||||
"default": 0,
|
||||
"markdownDescription": "**Stocks 보고서 전용 텔레그램 chatId** — fallback. `g1nation.telegram.allowedChatIds` 가 비어있을 때만 사용. 0 = 미설정."
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user