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:
@@ -327,10 +327,18 @@ describe('AgentEngine — single-pass routing', () => {
|
||||
expect(AgentEngine.isObviouslySimple('hello world')).toBe(true);
|
||||
});
|
||||
|
||||
test('isObviouslySimple: 분석/리서치 키워드 포함 → false', () => {
|
||||
expect(AgentEngine.isObviouslySimple('이거 분석해줘')).toBe(false);
|
||||
expect(AgentEngine.isObviouslySimple('보고서 작성 부탁')).toBe(false);
|
||||
expect(AgentEngine.isObviouslySimple('아키텍처 설계 좀')).toBe(false);
|
||||
test('isObviouslySimple: 짧은 키워드 입력은 fast-path 허용 (v2 완화)', () => {
|
||||
// 80자 미만 + 키워드는 fast-path 통과 — "이거 분석해줘" 같은 짧은 요청에 chunked
|
||||
// 과잉 적용하던 옛 룰 완화.
|
||||
expect(AgentEngine.isObviouslySimple('이거 분석해줘')).toBe(true);
|
||||
expect(AgentEngine.isObviouslySimple('보고서 작성 부탁')).toBe(true);
|
||||
expect(AgentEngine.isObviouslySimple('아키텍처 설계 좀')).toBe(true);
|
||||
});
|
||||
|
||||
test('isObviouslySimple: 길고 키워드 포함은 chunked (≥80자 + 키워드)', () => {
|
||||
const longWithKw = '이 프로젝트의 전체 아키텍처를 종합적으로 분석해서 핵심 개선점을 보고서로 정리하고, 코드 베이스 전반을 꼼꼼히 살펴본 뒤 시니어 엔지니어 관점의 리뷰와 개선 제안까지 부탁드립니다.';
|
||||
expect(longWithKw.length).toBeGreaterThanOrEqual(80); // sanity
|
||||
expect(AgentEngine.isObviouslySimple(longWithKw)).toBe(false);
|
||||
});
|
||||
|
||||
test('isObviouslySimple: 본문 첨부 흔적 (코드 펜스 / 빈줄 다수) → false', () => {
|
||||
@@ -338,8 +346,8 @@ describe('AgentEngine — single-pass routing', () => {
|
||||
expect(AgentEngine.isObviouslySimple('첫 줄\n\n\n둘째 줄')).toBe(false);
|
||||
});
|
||||
|
||||
test('isObviouslySimple: 길이 200자 이상 → false', () => {
|
||||
const long = '가나다라마바사아자차카타파하'.repeat(20);
|
||||
test('isObviouslySimple: 길이 400자 이상은 키워드 무관하게 chunked', () => {
|
||||
const long = '가나다라마바사아자차카타파하'.repeat(40);
|
||||
expect(AgentEngine.isObviouslySimple(long)).toBe(false);
|
||||
});
|
||||
|
||||
|
||||
Reference in New Issue
Block a user