chore: version up to 2.80.36 and package with UI/UX refinement
This commit is contained in:
+36
-7
@@ -334,6 +334,11 @@ export class AgentExecutor {
|
||||
this.activeRunId = runId;
|
||||
this.currentTaskId = `task_${Date.now()}`;
|
||||
await this.context.workspaceState.update('lastActionStr', undefined);
|
||||
// Clear last-turn retrieval telemetry up front: when a casual turn (or anything else) skips
|
||||
// buildMemoryContext, the previous turn's value would otherwise leak into this turn's
|
||||
// "참조 범위" footer (the exact "안녕 → 🔎 참조: 에피소드기억" bug).
|
||||
this._lastRetrievalInfo = null;
|
||||
this._lastLessonContents = [];
|
||||
}
|
||||
|
||||
// 1. Prepare Context
|
||||
@@ -503,7 +508,9 @@ export class AgentExecutor {
|
||||
const astraStanceCtx = prompt && !isCasualConversation
|
||||
? `\n\n${this.buildAstraStanceContext(prompt, localPathContext)}`
|
||||
: '';
|
||||
const v4PolicyCtx = [
|
||||
// The v4 knowledge-management policy only matters when knowledge is actually in play —
|
||||
// skip it for greetings/small talk so it doesn't dilute the [CASUAL CONVERSATION MODE] directive.
|
||||
const v4PolicyCtx = isCasualConversation ? '' : [
|
||||
"\n### 🏛️ 지식 관리 정책 v4.0 (Knowledge Management Policy Applied)",
|
||||
"- [신뢰도] '의도적으로 작성된 글'은 Medium 이상의 신뢰도를 부여하여 최우선 근거로 활용할 것.",
|
||||
"- [품질] 데이터의 양보다 '추론 기여 밀도'를 중시하여 핵심 위주로 깊이 있게 서술할 것.",
|
||||
@@ -1505,19 +1512,41 @@ export class AgentExecutor {
|
||||
return /(어떤\s*거?\s*같|어때|어떻게\s*생각|의견|판단|방향|설계|아키텍처|구조|자비스|생각.*정리|갈림길|architecture|design|direction|opinion|think|judge)/i.test(prompt);
|
||||
}
|
||||
|
||||
/**
|
||||
* Standalone greetings / acknowledgements / fillers — must match the *whole* (normalized) message.
|
||||
* "안녕, 이 프로젝트 분석해줘" is NOT here because the work intent makes it longer than one phrase.
|
||||
*/
|
||||
private static readonly CASUAL_PHRASES = new Set<string>([
|
||||
// greetings
|
||||
'안녕', '안녕하세요', '안녕하십니까', '안뇽', '하이', '하잉', '헬로', '헬로우', 'hello', 'hi', 'hii', 'hey', 'yo', 'ㅎㅇ', 'ㅎㅇㅎㅇ', '굿모닝', 'good morning', 'morning', 'gm',
|
||||
// farewells
|
||||
'잘가', '잘가요', '안녕히', '안녕히가세요', '안녕히계세요', '바이', '바이바이', 'bye', 'byebye', 'bye bye', 'goodbye', 'good bye', '굿바이', '잘자', '잘자요', '굿나잇', 'good night', 'gn',
|
||||
// acknowledgements / affirmations
|
||||
'네', '넵', '넹', '예', '응', '웅', '음', '흠', '엄', '그래', '그렇구나', '그렇군', '그렇네', '오케이', '오케', 'ok', 'okay', 'okey', 'k', 'ㅇㅋ', 'ㅇㅇ', '알겠어', '알겠습니다', '알겠어요', '알았어', '알았다', '알았어요', 'yes', 'yeah', 'yep', 'yup', 'sure', '좋아', '좋아요', '좋네', '좋다', 'good', 'fine',
|
||||
// negations (still small talk — needs no RAG; the prior turn is already in the chat history)
|
||||
'아니', '아니요', '아니오', 'ㄴㄴ', 'no', 'nope', 'nah',
|
||||
// thanks / praise
|
||||
'고마워', '고마워요', '고맙습니다', '감사', '감사해요', '감사합니다', 'thanks', 'thank you', 'thx', 'ty', '굿', '굳', '굿잡', 'good job', '잘했어', '잘했네', '훌륭', '훌륭해', '대박', 'nice', 'cool', 'great', 'awesome', 'perfect', '완벽', '수고', '수고했어', '수고하셨습니다', '고생했어', '고생많았어',
|
||||
// laughs / fillers
|
||||
'lol', 'haha', 'hmm', 'hmmm', 'umm', 'uh',
|
||||
]);
|
||||
|
||||
private isCasualConversationPrompt(prompt: string): boolean {
|
||||
const normalized = (prompt || '')
|
||||
.trim()
|
||||
.replace(/[~!?.。!?\s]+$/g, '')
|
||||
.replace(/\s+/g, ' ')
|
||||
.replace(/[~!?.,,。!?·…\s]+$/g, '')
|
||||
.toLowerCase();
|
||||
if (!normalized) return false;
|
||||
if (normalized.length > 40) return false;
|
||||
|
||||
// Greetings, acknowledgements, and light conversational nudges should
|
||||
// not trigger Second Brain/RAG. Otherwise a single "안녕" can retrieve
|
||||
// old project records and the model answers that stale context instead
|
||||
// of the user's actual greeting.
|
||||
return /^(안녕|안녕하세요|하이|헬로|hello|hi|hey|yo|ㅎㅇ|좋아|오케이|ok|okay|ㅇㅋ|고마워|감사|thanks|thank you|넵|네|응|음|흠|그래)$/.test(normalized);
|
||||
// Greetings, acknowledgements, and light conversational nudges should not trigger
|
||||
// Second Brain/RAG. Otherwise a single "안녕" can retrieve old project records and the
|
||||
// model answers that stale context instead of the user's actual greeting.
|
||||
if (AgentExecutor.CASUAL_PHRASES.has(normalized)) return true;
|
||||
if (/^[ㅋㅎ]{2,}$/.test(normalized)) return true; // ㅋㅋ, ㅎㅎㅎ, ㅋㅎㅋㅎ
|
||||
if (/^(?:ha){2,}h?$|^(?:he){2,}h?$/.test(normalized)) return true; // haha, hahaha, hehe
|
||||
return false;
|
||||
}
|
||||
|
||||
private isAstraModeArchitectureQuestion(prompt: string): boolean {
|
||||
|
||||
Reference in New Issue
Block a user