mirror of
https://github.com/Youzini-afk/ST-Bionic-Memory-Ecology.git
synced 2026-05-15 22:30:38 +08:00
Fix: passive MVU sanitize mode for task input fields
用户原文字段(recentMessages/charDescription/userPersona/candidateNodes 等)
现在使用 passive mode 清洗——只剥离 MVU 容器/宏,不整段 drop。
这修复了含 MVU 状态栏角色卡时提取 LLM 收到空 context 的问题。
- mvu-compat.js: 导出 MVU_SANITIZE_MODES 常量,passive 分支显式注释
- prompt-builder.js: 加 INPUT_CONTEXT_FIELD_MODE 策略表,
sanitizePromptContextInputs 按字段族查表传 mode;
关键字段 omit 时 warn(兜底告警)
- 世界书条目路径(sanitizeWorldInfoEntries)保持 aggressive,守卫 6cec031 正收益
- 新增 6 条测试:passive 字段族不被整段 drop + worldInfo 仍 aggressive + warn 路径
Refs: mvu-aggressive-strip-regression-plan.md
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -2,6 +2,13 @@
|
||||
// These rules are intentionally narrow so we strip MVU artifacts without
|
||||
// disturbing normal prompt or world info content.
|
||||
|
||||
export const MVU_SANITIZE_MODES = Object.freeze({
|
||||
/** 整段 drop likely MVU 内容(用于世界书条目)。 */
|
||||
AGGRESSIVE: "aggressive",
|
||||
/** 只剥离 MVU 容器/宏,不整段 drop(用于用户原文、角色描述等任务输入字段)。 */
|
||||
PASSIVE: "passive",
|
||||
});
|
||||
|
||||
export const MVU_ENTRY_COMMENT_REGEX = /\[(mvu_update|mvu_plot|initvar)\]/i;
|
||||
|
||||
const MVU_UPDATE_BLOCK_REGEX =
|
||||
@@ -215,7 +222,8 @@ export function sanitizeMvuContent(
|
||||
|
||||
let text = blockedResult.text;
|
||||
let dropped = false;
|
||||
if (sanitizedMode === "aggressive") {
|
||||
if (sanitizedMode === MVU_SANITIZE_MODES.AGGRESSIVE) {
|
||||
// 整段 drop:用于世界书条目,不用于用户原文字段
|
||||
if (
|
||||
isLikelyMvuWorldInfoContent(originalCollapsed) ||
|
||||
isLikelyMvuWorldInfoContent(text)
|
||||
@@ -225,6 +233,7 @@ export function sanitizeMvuContent(
|
||||
reasons.push("likely_mvu_content");
|
||||
}
|
||||
}
|
||||
// MVU_SANITIZE_MODES.PASSIVE:只做 artifact 剥离 + blocked 过滤,不整段 drop。
|
||||
|
||||
return {
|
||||
text: collapseWhitespace(text),
|
||||
|
||||
Reference in New Issue
Block a user