refactor: simplify response language retry logic in iop-rule-loader

This commit is contained in:
toki 2026-07-04 10:49:54 +09:00
parent fa3eb5f939
commit 25b171c295

View file

@ -43,7 +43,6 @@ const responseLanguageUserPrefix = `[IOP 응답 언어: 이번 요청에서 사
const responseLanguageUserSuffix = `[응답 전 확인: 자연어 설명이 한국어인지 확인하고, 한국어가 아니면 한국어로 다시 작성한다.]`;
const responseLanguageRetryPrefix = "[IOP language retry]";
const nonKoreanCJKPattern = /[\u3040-\u30ff\u3400-\u4dbf\u4e00-\u9fff]/;
const commonRequiredSessionRules: RuleSpec[] = [
@ -304,8 +303,6 @@ function injectResponseLanguagePolicy(payload: ProviderPayload): ProviderPayload
export default function iopRuleLoader(pi: ExtensionAPI) {
let projectRoot = "";
let loadedRules: LoadedRule[] = [];
let lastUserPrompt = "";
let languageRetryUsed = false;
pi.on("session_start", async (_event, ctx) => {
projectRoot = findProjectRoot(ctx.cwd);
@ -318,11 +315,6 @@ export default function iopRuleLoader(pi: ExtensionAPI) {
});
pi.on("before_agent_start", async (event, ctx) => {
lastUserPrompt = event.prompt;
if (!lastUserPrompt.startsWith(responseLanguageRetryPrefix)) {
languageRetryUsed = false;
}
const root = projectRoot || findProjectRoot(ctx.cwd);
const rules = loadEntryRules(root);
@ -355,27 +347,10 @@ ${buildRulesPrompt(projectRoot, loadedRules)}`,
return;
}
if (!languageRetryUsed && lastUserPrompt && !lastUserPrompt.startsWith(responseLanguageRetryPrefix)) {
languageRetryUsed = true;
pi.sendUserMessage(
`${responseLanguageRetryPrefix}
.
, .
, , , .
${lastUserPrompt}`,
{ deliverAs: "followUp" },
);
return {
message: replaceMessageText(message, "응답 언어 정책에 맞게 다시 작성하겠습니다."),
};
}
return {
message: replaceMessageText(
message,
"응답 언어 정책에 맞지 않는 출력이 다시 감지되었습니다. 이 요청은 한국어 응답 안정성이 더 높은 모델로 전환해 다시 실행해야 합니다.",
"응답 언어 정책에 맞지 않는 출력이 감지되어 답변을 차단했습니다. 같은 요청을 새로 실행하거나 한국어 응답 안정성이 더 높은 모델로 전환해 다시 실행해야 합니다.",
),
};
});