Fix token limitation properly by reducing background context size and parsing the error explicitly
This commit is contained in:
+22
-3
@@ -30,7 +30,7 @@ const EXCLUDED_DIRS = new Set([
|
|||||||
'.next', '.cache', '__pycache__', '.DS_Store', 'coverage',
|
'.next', '.cache', '__pycache__', '.DS_Store', 'coverage',
|
||||||
'.turbo', '.nuxt', '.output', 'vendor', 'target'
|
'.turbo', '.nuxt', '.output', 'vendor', 'target'
|
||||||
]);
|
]);
|
||||||
const MAX_CONTEXT_SIZE = 40_000; // chars
|
const MAX_CONTEXT_SIZE = 12_000; // chars
|
||||||
|
|
||||||
const SYSTEM_PROMPT = `You are "Connect AI", a premium agentic AI coding assistant running 100% offline on the user's machine.
|
const SYSTEM_PROMPT = `You are "Connect AI", a premium agentic AI coding assistant running 100% offline on the user's machine.
|
||||||
|
|
||||||
@@ -638,7 +638,7 @@ class SidebarChatProvider implements vscode.WebviewViewProvider {
|
|||||||
'src/main.ts', 'src/main.js'
|
'src/main.ts', 'src/main.js'
|
||||||
];
|
];
|
||||||
let totalRead = 0;
|
let totalRead = 0;
|
||||||
const MAX_AUTO_READ = 15_000; // chars total
|
const MAX_AUTO_READ = 6_000; // chars total
|
||||||
|
|
||||||
for (const kf of keyFiles) {
|
for (const kf of keyFiles) {
|
||||||
if (totalRead >= MAX_AUTO_READ) { break; }
|
if (totalRead >= MAX_AUTO_READ) { break; }
|
||||||
@@ -1011,12 +1011,31 @@ class SidebarChatProvider implements vscode.WebviewViewProvider {
|
|||||||
const isLM = ollamaBase.includes('1234') || ollamaBase.includes('v1');
|
const isLM = ollamaBase.includes('1234') || ollamaBase.includes('v1');
|
||||||
const targetName = isLM ? "LM Studio" : "Ollama";
|
const targetName = isLM ? "LM Studio" : "Ollama";
|
||||||
|
|
||||||
const errMsg = error.code === 'ECONNREFUSED'
|
let errMsg = error.code === 'ECONNREFUSED'
|
||||||
? `⚠️ ${targetName} 서버에 연결할 수 없습니다.\n앱에서 로컬 서버가 켜져 있는지(Start Server) 확인해주세요.`
|
? `⚠️ ${targetName} 서버에 연결할 수 없습니다.\n앱에서 로컬 서버가 켜져 있는지(Start Server) 확인해주세요.`
|
||||||
: (error.response?.status === 400 || error.response?.status === 413)
|
: (error.response?.status === 400 || error.response?.status === 413)
|
||||||
? `⚠️ 컨텍스트 용량 초과: 입력이 너무 깁니다. 새 대화(+)를 시작하거나 질문을 줄여주세요.`
|
? `⚠️ 컨텍스트 용량 초과: 입력이 너무 깁니다. 새 대화(+)를 시작하거나 질문을 줄여주세요.`
|
||||||
: `⚠️ 오류: ${error.message}`;
|
: `⚠️ 오류: ${error.message}`;
|
||||||
|
|
||||||
this._view.webview.postMessage({ type: 'error', value: errMsg });
|
this._view.webview.postMessage({ type: 'error', value: errMsg });
|
||||||
|
|
||||||
|
// 파싱된 실제 에러 표출 (LM Studio / Ollama Stream HTTP 에러)
|
||||||
|
if (error.response?.data?.on) {
|
||||||
|
let buf = '';
|
||||||
|
error.response.data.on('data', (c: any) => buf += c.toString());
|
||||||
|
error.response.data.on('end', () => {
|
||||||
|
try {
|
||||||
|
const parsed = JSON.parse(buf);
|
||||||
|
let detail = parsed.error?.message || parsed.error || '';
|
||||||
|
if (detail.includes('greater than the context length')) {
|
||||||
|
detail = '프로젝트 정보가 모델의 Context Length(기억력 한계)를 초과합니다.\n💡 해결책: LM Studio에서 모델을 불러올 때 오른쪽 설정 패널에서 [Context Length] 슬라이더를 8192 수정 후 리로드하세요.';
|
||||||
|
}
|
||||||
|
if (detail) {
|
||||||
|
this._view!.webview.postMessage({ type: 'error', value: `💡 가이드: ${detail}` });
|
||||||
|
}
|
||||||
|
} catch { /* ignore */ }
|
||||||
|
});
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user