v2.2.292-296: 메모리·발열 최적화 + Pixel Office 완전 제거 + 소형 모델 추론 강화(calculate/run_code/지식 스코프)
- v2.2.292 메모리·발열: 헬스체크 워크스페이스 쓰기→fs.access(워처 연쇄 제거)·git 검사 비동기 30분 주기, 웹뷰 retainContextWhenHidden 정리(채팅만 유지), 브레인 인덱스 유휴 30분 TTL 해제, 채팅 DOM 200개 상한, @lmstudio/sdk 지연 로드 - v2.2.293 Pixel Office 시각화 폐기: astraOffice 모듈·사이드바 매니저 3종·스프라이트 17MB 삭제, sidebarProvider collector 섹션 통삭제 (기업 모드 판단 로직 무변경, vsix 12.2MB→1.3MB) - v2.2.294 도구 메뉴 'NotebookLM 백엔드 실행/종료' 버튼: OS 자동 감지, 프로젝트 자동 탐색+폴더 선택 저장, 포트 정리 폴백 (터미널 없이 Research 백엔드 켜고 끄기) - v2.2.295 추론 강화 1탄: [ACTION 16] <calculate> Python 계산 위임(결과 재주입·자가수정 루프), 단계별 지식 스코프(General+Specialty, 결정적 도메인 분류, 설정 지식·기억 탭 UI) - v2.2.296 추론 강화 2탄: [ACTION 17] <run_code> 실행 확인(stdout 회수→수정→재실행 루프), 문법 오류 재주입 자가수정, 도구 라우팅 힌트(dynamicBlocks), Grounding rescue 도메인 스코프 확장 - 검증: jest 818 통과(신규 29개), tsc 무오류, esbuild 정상 Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
+24
-6
@@ -812,9 +812,28 @@
|
||||
msgEl.appendChild(head); msgEl.appendChild(body);
|
||||
msgEl.appendChild(actions);
|
||||
chat.appendChild(msgEl); chat.scrollTop = chat.scrollHeight;
|
||||
trimChatDom();
|
||||
return { body, msgEl };
|
||||
}
|
||||
|
||||
// [메모리 개선] 채팅 DOM 상한 — 이 웹뷰는 retainContextWhenHidden 이라 하루 종일 켜두면
|
||||
// 메시지 노드가 무한히 쌓여 메모리가 단조 증가한다. 최근 MAX_CHAT_DOM_MESSAGES 개만
|
||||
// DOM 에 유지하고 오래된 것부터 제거한다 (내용이 필요한 메시지는 Copy/Export 로 보존).
|
||||
const MAX_CHAT_DOM_MESSAGES = 200;
|
||||
let _trimNotice = null;
|
||||
function trimChatDom() {
|
||||
const msgs = chat.querySelectorAll(':scope > .msg');
|
||||
const excess = msgs.length - MAX_CHAT_DOM_MESSAGES;
|
||||
if (excess <= 0) return;
|
||||
for (let i = 0; i < excess; i++) msgs[i].remove();
|
||||
if (!_trimNotice || !_trimNotice.isConnected) {
|
||||
_trimNotice = document.createElement('div');
|
||||
_trimNotice.style.cssText = 'text-align:center;opacity:.55;font-size:11px;padding:6px 0;';
|
||||
_trimNotice.textContent = '⏳ 오래된 메시지는 메모리 절약을 위해 화면에서 정리되었습니다';
|
||||
}
|
||||
chat.insertBefore(_trimNotice, chat.firstChild);
|
||||
}
|
||||
|
||||
window.addEventListener('message', e => {
|
||||
const msg = e.data;
|
||||
switch(msg.type) {
|
||||
@@ -1119,12 +1138,6 @@
|
||||
chatEl.scrollTop = chatEl.scrollHeight;
|
||||
break;
|
||||
}
|
||||
case 'pixelOfficeUpdate':
|
||||
case 'officeSnapshot': {
|
||||
// Pixel Office 채팅 배너는 v2.2.267 에서 제거 — 백엔드가 여전히 보내는
|
||||
// 상태 메시지는 조용히 무시 (풀스크린 Astra Office 패널은 별도 webview 로 수신).
|
||||
break;
|
||||
}
|
||||
case 'devilRebuttal': {
|
||||
// Devil Agent (도현) 카드. main assistant 답변 직후 chat 하단에 한 장 추가.
|
||||
// 사용자가 '재반박' 누르면 그 텍스트가 다음 user prompt 로 가서 main turn 한 번 더 돌고,
|
||||
@@ -1928,6 +1941,11 @@
|
||||
const syncBrain = () => { Sound.play(550, 'sine', 0.1); vscode.postMessage({ type: 'syncBrain' }); };
|
||||
document.getElementById('brainBtn').onclick = syncBrain;
|
||||
saveWikiRawBtn.onclick = () => vscode.postMessage({ type: 'saveWikiRaw' });
|
||||
// NotebookLM 로컬 백엔드 (Datacollector Research 용) 실행/종료 — 터미널 없이 버튼으로.
|
||||
const nlmBridgeStartBtn = document.getElementById('nlmBridgeStartBtn');
|
||||
if (nlmBridgeStartBtn) nlmBridgeStartBtn.onclick = () => vscode.postMessage({ type: 'startNotebookLmBridge' });
|
||||
const nlmBridgeStopBtn = document.getElementById('nlmBridgeStopBtn');
|
||||
if (nlmBridgeStopBtn) nlmBridgeStopBtn.onclick = () => vscode.postMessage({ type: 'stopNotebookLmBridge' });
|
||||
addBrainBtn.onclick = () => vscode.postMessage({ type: 'addBrain' });
|
||||
// v2.2.67 — 만약 dropdown 이 'new' 상태로 굳어있어도 수정/삭제는 직전 유효 선택(또는 첫 실제 옵션)
|
||||
// 을 기준으로 동작하도록 폴백. 이전엔 'new' 인 순간 그냥 early-return 해서 "수정 안 됨" 버그 발생.
|
||||
|
||||
Reference in New Issue
Block a user