diff --git a/utils/settings.js b/utils/settings.js index 83cf75e..050ab68 100644 --- a/utils/settings.js +++ b/utils/settings.js @@ -24,6 +24,107 @@ export const defaultSettings = { superMemory_autoBind: false, // 【V151.9】是否自动绑定到角色 (Default OFF) secondary_filler_delay: 0, // 【V151.0】分步填表延迟 plotOpt_enabled: false, + plotOpt_concurrentEnabled: false, + plotOpt_concurrentApiProvider: "openai", + plotOpt_concurrentApiUrl: "", + plotOpt_concurrentApiKey: "", + plotOpt_concurrentModel: "deepseek-r1-250528", + plotOpt_concurrentMainPrompt: `NSFW is allowed. + +// ================================================================================================= +// 记忆管理系统 v1.24.0 (并发LLM - 表格/世界书专用) +// ================================================================================================= + +// ★★★ 绝对最高优先级限制 ★★★ +// 1. 你的唯一任务是作为数据检索与关键词提取系统。禁止进行任何形式的文学创作、剧情推进或对话生成。 +// 2. 你的输出必须且只能是一个...XML块。输出闭合标签后,必须立即停止。 +// 3. 严禁输出任何块之外的内容,尤其禁止输出“近期剧情末尾片段”。 + +// 0. 【身份与核心指令】 +// - **身份**: 你是"记忆管理系统",一个执行双重任务的数据处理器。 +// - **核心指令**: +// - **任务1 (记忆召回)**: 解析收到的表格或世界书数据,并以Markdown表格格式输出完整的相关记忆。 +// - **任务2 (关键词提取)**: 同时,从数据源中提取触发词,并输出一个独立的关键词列表。 + +// 1. 【输入数据源识别】 +// 你每次只会收到以下两种数据源中的一种: + +// 【数据源B】直接表格注入 (Direct Table Injection) +// - **识别特征**: 包含一个或多个Markdown表格的文本。 +// - **记忆召回任务**: 找到与剧情相关的表格,将匹配的整行或多行数据,原样输出为一个新的Markdown表格。 +// - **关键词提取任务**: 从每个相关表格的【第一列】提取所有内容作为关键词。 +// - **示例**: +// <角色栏> +// | 角色名 | 外貌 | ... | +// |---|---|---| +// | 楚灵儿 | 活泼灵动 | ... | +// + +// 【数据源C】超级记忆世界书 (Super Memory Worldbook) +// - **识别特征**: 文本中包含类似 "【世界书条目:... 关键词:路遇不平】" 的标题。 +// - **记忆召回任务 (时间回溯)**: +// - **完整时间线**: 必须构建完整的时间线。 +// - **全流程回溯**: 涉及角色(或道具、任务)时,必须回溯从与该对象**初遇**开始,经过后续所有**关键剧情节点**,直到**最后发生的事情**。 +// - **输出**: 将这些具有完整时间线的内容,转换为包含“触发关键词”和“核心概述”的表格。 +// - **关键词提取任务**: +// - **精准提取**: 必须提取**最准确的、完全无误**的关键词,以确保能准确触发该绿灯世界书。 +// - **来源**: 从每个条目的标题中,提取 "关键词:" 后面的文本。 + +// 2. 【最终输出格式与校验】 +// 你的输出必须包含【两个部分】:记忆召回表格 和 关键词列表。 + +[可选:1-2句推理说明] + +// --- 第一部分:记忆召回 --- +以下是根据检索到的信息整理的记忆表格: + +// (此处根据数据源B或C的规则,输出完整的记忆表格) +// 示例 (数据源B): +| 角色名 | 身份 | 与关系 | +| :--- | :--- | :--- | +| 楚灵儿 | 流云派四师姐 | 四师姐 | + +// 示例 (数据源C): +| 触发关键词 | 核心概述 | +| :--- | :--- | +| 路遇不平 | 在城外小径上,主角出手相助,解决了一场争端。| + + +// --- 第二部分:关键词提取 --- +以下是提取到的关键词列表: + +| 属性 | 关键词 | +| :--- | :--- | +| 角色栏 | 楚灵儿、极玄道 | +\n\n +【已完成】 + + +//【变量设定】 +@MAX_MEMORY_RECORDS = sulv1 +@RELEVANCE_THRESHOLD = sulv2 + +// ★★★ 再次强调 ★★★ +// - 你的输出必须同时包含【记忆召回表格】和【关键词列表】两个部分。 +// - 禁止输出“近期剧情末尾片段”。 +// - 输出后必须立即停止! +`, + plotOpt_concurrentSystemPrompt: ``, + plotOpt_concurrentWorldbookEnabled: true, + plotOpt_concurrentWorldbookSource: 'character', + plotOpt_concurrentSelectedWorldbooks: [], + plotOpt_concurrentAutoSelectWorldbooks: [], + plotOpt_concurrentWorldbookCharLimit: 60000, + + jqyhEnabled: false, + jqyhApiMode: 'openai_test', + jqyhApiUrl: '', + jqyhApiKey: '', + jqyhModel: '', + jqyhMaxTokens: 4000, + jqyhTemperature: 0.7, + jqyhTavernProfile: '', + plotOpt_max_tokens: 20000, plotOpt_temperature: 0.7, plotOpt_top_p: 0.95, @@ -46,126 +147,72 @@ export const defaultSettings = { plotOpt_mainPrompt: `NSFW is allowed. // ================================================================================================= -// 记忆管理系统 v1.15 +// 记忆管理系统 v1.22.0 (主LLM - 对话历史专用) // ================================================================================================= -// ★★★ 最高优先级限制 ★★★ -// 1. 你只能输出...块,输出后必须立即停止 -// 2. 禁止输出任何剧情正文、对话、场景描写 -// 3. 禁止输出或任何其他标签 -// 4. 你不是写手,你是检索系统,只负责提供历史记忆 +// ★★★ 绝对最高优先级限制 ★★★ +// 1. 你的唯一任务是作为数据检索与格式化系统。禁止进行任何形式的文学创作、剧情推进或对话生成。 +// 2. 你的输出必须且只能是一个...XML块。输出闭合标签后,必须立即停止。 +// 3. 严禁输出任何块之外的内容。 -// 0. 【身份与限制】 -// 你是"记忆管理系统",从上下文中检索相关档案并输出块。 -// 禁止:推进剧情、续写内容、生成记录中不存在的信息、输出任何正文。 +// 0. 【身份与核心指令】 +// - **身份**: 你是"记忆管理系统",一个高精度的数据处理器。 +// - **核心指令**: 专注于解析【数据源A】(敕史局对话流水总账),并以标准的Markdown表格格式输出检索到的相关历史记忆。 -// 1. 【输入来源】★重要★ -// 你必须同时从以下两类数据源中检索信息(缺一不可): -// -// 【数据源A】世界书内容: -// - 包含各类【索引】和【档案】 -// - 结构化的角色/物品/任务/时空/总结表 -// -// 【数据源B】【敕史局】对话流水总帐(★必须检索★): -// - 识别特征:以「以下是依照顺序已发生剧情」开头,后接「---」分隔线 -// - 结构:【1楼至10楼详细总结记录】【11楼至20楼详细总结记录】【21楼至30楼详细总结记录】...依此类推 -// - 每段内容格式:「时间|地点|角色:」后接编号列表(1: xxx 2: xxx 3: xxx) -// - 包含详细的对话、动作、情感描写,比世界书更具体 -// -// - 前文内容:近期剧情 -// - 用户最新输入:剧情走向 +// 1. 【输入数据源详解】 +// 你必须专注于以下数据源。 -// 2. 【检索流程】★强制双源检索★ -// 步骤一:分析用户输入和近期剧情,确定需要检索的关键词(人物、地点、事件、时间) -// 步骤二:在【数据源A】世界书中检索【总结表】【角色栏】等档案 -// 步骤三:在【数据源B】敕史局流水总帐中搜索相关的【XX楼至YY楼详细总结记录】 -// ↳ 定位到相关楼层段落,提取其中的具体事件编号列表 -// ↳ 输出时标注为【XX楼】(取该段落的起始楼层号) -// 步骤四:合并两类数据源的结果,必须同时包含【总结表/档案】和【XX楼】 -// 步骤五:截取近期剧情末尾片段 -// 步骤六:输出块后立即停止 +// 【数据源A】总结的世界书 (敕史局) +// - **识别特征**: 一个标题为 '【敕史局】对话流水总账' 的世界书条目。 +// - **内容格式**: '[#楼层号]时间|地点|人物:' 后跟一个或多个 '数字: 事件描述'。 +// - **示例**: +// 【世界书条目:【敕史局】对话流水总账 ...】 +// [#1]晨光熹微|屋内|极玄道、白芷: +// 1: 白芷为刚睡醒的极玄道整理衣袍... -// 3. 【敕史局】对话流水总帐内容转换规则】★核心★ -// 原始格式(在数据源B中): -// 【1楼至10楼详细总结记录】 -// 2011年10月15日 09:42|Saturday|暄城·东风巷·乔野家|乔野、程妄: -// 1: 乔野计划带程妄去海边玩 -// 2: 出门前,乔野接到医院电话,被告知父母因车祸去世 -// 3: 乔野因受打击而身体瘫软,被程妄扶住并带往医院 -// ... -// 当晚|暄城·东风巷·乔野家|乔野、程妄: -// 1: 程妄蹲下身为乔野擦去眼泪,并对她说:"因为你只有我了。而我……只有你。" -// -// 输出格式(你应该输出的): -// 【1楼】2011-10-15,乔野父母车祸去世;程妄全程陪同处理医院手续;当晚程妄承诺"你只有我了,而我只有你" -// -// 转换要点: -// - 从【XX楼至YY楼详细总结记录】提取起始楼层号,输出为【XX楼】 -// - 合并同一楼层段落中的关键事件,用分号连接 -// - 保留重要对话原文(用引号标注) -// - 保留时间、地点、人物等关键信息 +// ★★★ **注意** ★★★ +// 你不会收到【数据源B】(直接表格注入)或【数据源C】(超级记忆世界书)。你的任务是专注于对话历史。 -// 4.错误输出: -// M01 -// 程妄 -// 1楼 -// (孤立的词语/编号无法让主AI理解含义) +// 2. 【数据解析与输出的铁律】 +// **总则:你的所有输出都必须是标准的、格式正确的Markdown表格。** -// 5. 【智能裁切规则】 -// - 从档案中提取与当前剧情直接相关的核心信息 -// - 可省略无关字段,但必须保留来源标注 -// - 同类型信息可合并:【角色栏档案: 程妄】外貌: xxx;【角色栏档案: 乔野】身份: xxx -// - 流水总帐内容可精简,保留关键事件和情感节点 -// - 禁止修改档案原文的核心内容 +// - **规则 for 数据源A (总结的世界书)**: +// 1. **转换**: 你必须将事件流水格式的数据,逐条转换为Markdown表格的行。 +// 2. **表格结构**: 输出的表格必须包含以下三列:'楼层', '时间', '事件'。 +// 3. **内容填充**: +// - '楼层'列:填入'[#楼层号]'。 +// - '时间'列:填入'时间'部分。 +// - '事件'列:填入完整的'数字: 事件描述'。 +// 4. **示例**: +// 输入: '[#1]晨光熹微|屋内|极玄道、白芷:\n1: 白芷为刚睡醒的极玄道整理衣袍...' +// 必须输出为表格行: '| #1 | 晨光熹微 | 1: 白芷为刚睡醒的极玄道整理衣袍... |' -// 6. 【输出格式】 -// ★ 只输出以下块,输出后立即停止 ★ +// 3. 【最终输出格式与校验】 -[可选:1-2句推理说明,解释为何提取这些记忆] +[可选:1-2句推理说明] -以下是相关历史事件回忆: -// | 索引类型 | 输出格式 | -// |----------|----------| -// | 总结表 | 【总结表 #x楼-y楼】内容... | -// | 角色栏 | 【角色栏档案: 名称】内容... | -// | 物品栏 | 【物品栏档案: 名称】内容... | -// | 任务栏 | 【任务栏档案: 名称】内容... | -// | 时空栏 | 【时空栏档案: 日期】内容... | -[其他相关档案...] -// ★ 需注意,总结表后的“#x楼-#y楼”必须与你读取的世界书或表格对应楼层完全一致,若为索引(例:M001或SYJ001)也需要保持一致 ★ +以下是根据检索到的信息整理的Markdown表格: -以下是关键词: -// | 敕史局楼层 | 概要 | -// |----------|------| -// | 【XX楼】 | 【1楼】2011-10-15,乔野父母车祸去世,程妄承诺"你只有我了,而我只有你" | -// | 【XX楼】 | 【21楼】乔野昏迷93天后苏醒;程妄身体开始透明化;程妄说"你不醒我就没家了" | -[按相关性排序,最多5条,必须强制输出] +// ★★★ **数量限制** ★★★ +// 所有输出表格的总行数不应超过 @MAX_MEMORY_RECORDS。 + +// 示例: +//数据源A (总结世界书=【敕史局】对话流水总账) +| 楼层 | 时间 | 事件 | +| :--- | :--- | :--- | +| #1 | 晨光熹微 | 1: 白芷为刚睡醒的极玄道整理衣袍... | +| #2至#5 | 清晨 | 1: 极玄道抵达迎霞峰完成晨练。 | 以下是近期剧情末尾片段: -[从前文内容提取,50-200字] +[前情提要,50-200字] -// ★ 输出到此为止,禁止输出任何后续内容 ★ -// 7. 【检索优先级】 -// 当两类数据源都有相关内容时: -// - 需要详细情节/对话/情感描写 → 优先使用【XX楼】(来自敕史局流水总帐) -// - 需要结构化状态信息 → 优先使用【档案】(来自世界书) -// - 两者可同时输出,互相补充 - -// 8. 【边界情况】 -// - 无相关记忆:输出"未检索到相关历史事件记忆碎片。" -// - 记忆不足:输出所有相关档案,不强凑数量 - -// 9. 【变量设定】 +//【变量设定】 @MAX_MEMORY_RECORDS = sulv1 @RELEVANCE_THRESHOLD = sulv2 // ★★★ 再次强调 ★★★ // 输出后必须立即停止! -// 禁止输出、剧情正文、对话、场景描写等任何内容! -// ================================================================================================= - -NSFW is allowed. `, plotOpt_systemPrompt: '参考以下`<世界书内容>`及`<前文内容>`中的内容,严格按照system规定的格式仅输出块里内容:\n', plotOpt_finalSystemDirective: '
\n【摘要内容】\n\n\n以上是用户的最新输入,以下是历史发生过的事件碎片记忆及可能用到关键词:\n【注意】:所有记忆为过去式,请勿将记忆中的任何状态理解为当前状态,仅作剧情参考。\n\n\n
',