0a97324f1b
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>
21 lines
833 B
TypeScript
21 lines
833 B
TypeScript
/**
|
|
* 사용자 지정 modelName 으로 추론 호출 시도할 때, 첫 호출이 404 / not-loaded
|
|
* 류로 실패할 가능성에 대비한 fallback 후보 목록을 만든다.
|
|
*
|
|
* LM Studio 한정: `gemma3:4b` 같은 ":quant suffix" 형태가 안 먹히면 base name
|
|
* (`gemma3`) 도 시도하게 한 줄 더 push. Ollama 는 항상 정확한 이름을 요구하므로
|
|
* candidates 는 1개.
|
|
*
|
|
* Stateless — agent.ts 의 private 메서드 그대로 추출.
|
|
*/
|
|
export function buildModelCandidates(modelName: string, engine: 'lmstudio' | 'ollama'): string[] {
|
|
const candidates = [modelName];
|
|
if (engine === 'lmstudio') {
|
|
const baseModel = modelName.replace(/:\d+$/, '');
|
|
if (baseModel && baseModel !== modelName) {
|
|
candidates.push(baseModel);
|
|
}
|
|
}
|
|
return candidates;
|
|
}
|