记忆锚定引擎(代码版)

3 词条 · 13 KB · 12 次浏览 · 被复制 1 次 · 2026-10-18 08:02

本世界卡采用编程语言语法来描述记忆操作,所有“代码”均为伪代码或可运行的Python片段(取决于平台支持),用于明确数据格式、更新逻辑和调用时机。AI在生成回复前,应模拟这些函数的行为,将对话信息写入相应的数据结构,并在每轮执行必要的清理与回顾。本卡不包含剧情元素,仅作为记忆增强的操作手册。

包含的词条 (3 条)

人物 (1)
王者 · 王者是谁、王者
名词 / 设定 (2)
记忆管理代码库 · 你、我、他、她、祂、它 快速响应协议(增强版) · 你、我、他

示例词条

其余词条只给名字与触发词,正文在下载后可见。

记忆管理代码库 名词
以下为必须遵循的记忆管理逻辑,所有内部状态维护需按此代码结构进行(可视为伪代码,不需实际运行,但需严格模拟其行为)。# ===== 记忆锚定引擎 =====# 版本 1.0# 用途:在对话中维持关键信息,降低遗忘率from typing import Dict, List, Tuple, Optionalfrom datetime import datetimeimport json# ----- 1. 核心数据结构 -----class MemorySnapshot: """每轮回复前维护的即时快照""" def __init__(self): self.current_time: str = "" # 对话内时间 self.current_location: str = "" # 场景位置 self.present_characters: List[str] = [] # 在场人物名 self.recent_events: List[Tuple[str, str]] = [] # [(时间戳, 事件简述)] self.active_goals: List[str] = [] # 当前任务/目标class KeyFactStore: """关键事实标记库""" def __init__(self): self.person_facts: Dict[str, Dict] = {} # 人物ID -> {关系, 外貌, 弱点} self.item_facts: Dict[str, Dict] = {} # 物品ID -> {位置, 状态, 归属} self.promise_facts: Dict[str, Dict] = {} # 约定ID -> {时间, 地点, 内容}class RelationMatrix: """人物关系动态追踪""" def __init__(self): self.matrix: Dict[str, Dict[str, int]] = {} # 人物A -> {人物B: 好感度(-5~5)} self.last_interaction: Dict[Tuple[str,str], str] = {} # (A,B) -> 最近互动摘要 self.conflicts: Dict[Tuple[str,str], str] = {} # 未解决的冲突class SummaryStore: """滚动摘要存储""" def __init__(self): self.summary: str = "" # 当前阶段摘要(≤200字) self.last_update_round: int = 0 # 上次更新时的总轮数# ----- 2. 全局状态实例(仅供内部模拟)-----snapshot = MemorySnapshot()key_facts = KeyFactStore()relations = RelationMatrix()summary = SummaryStore()total_rounds = 0# ----- 3. 核心函数 -----def init_snapshot(): """初始化快照(每轮回复前调用)""" # 从当前上下文中提取信息填充 snapshot 的字段 # 示例赋值: snapshot.current_time = "黄昏" # 实际需动态获取 snapshot.current_location = "书房" snapshot.present_characters = ["A", "B"] # 保持 recent_events 最多3条 if len(snapshot.recent_events) > 3: snapshot.recent_events = snapshot.recent_events[-3:]def update_key_fact(category: str, id: str, data: dict): """更新关键事实标记""" if category == "person": key_facts.person_facts[id] = data elif category == "item": key_facts.item_facts[id] = data elif category == "promise": key_facts.promise_facts[id] = datadef refresh_relations(actor: str, target: str, delta: int, interaction: str): """调整好感度并记录互动""" if actor not in relations.matrix: relations.matrix[actor] = {} if target not in relations.matrix[actor]: relations.matrix[actor][target] = 0 new_val = max(-5, min(5, relations.matrix[actor][target] + delta)) relations.matrix[actor][target] = new_val relations.last_interaction[(actor, target)] = interactiondef generate_summary() -> str: """生成阶段摘要(≤200字),需压缩最近15轮的关键事件""" # 此处为逻辑说明:从 snapshot.recent_events 和 key_facts 中提取 # 返回字符串摘要 return "前情提要:..." # 实际需动态构建def should_update_summary(rounds: int) -> bool: """判断是否需要更新摘要(每15轮首次,之后每10轮)""" if rounds == 0: return False if summary.last_update_round == 0 and rounds >= 15: return True if rounds - summary.last_update_round >= 10: return True return Falsedef consistency_check() -> bool: """时空一致性检查,返回是否冲突""" # 对比 snapshot.current_time 和 location 与 key_facts 中记录的设定 # 若有冲突,返回 False 并触发修正 return True # 示例默认无冲突def force_recall() -> str: """强制回顾:输出三句总结""" known = "我已知哪些事实?" unsure = "我还不确定什么?" ask = "我需要询问什么?" return f"{known} {unsure} {ask}"def error_correction(original: str, correction: str) -> str: """错误修正:在回复中插入更正""" return f"等等,我记得之前…… {correction}"# ----- 4. 主流程(每轮对话前执行)-----def before_response(): global total_rounds total_rounds += 1 # 4.1 初始化快照 init_snapshot() # 4.2 时空一致性检查(如有冲突,先修正) if not consistency_check(): # 执行修正:按最近3轮设定覆盖 pass # 4.3 记忆权重分配(内部提示) # 最近5轮细节最高,超过20轮仅通过摘要引用 # 4.4 若新人物/场景切换,执行强制回顾 if "新人物" in "场景切换条件": # 具体条件由AI自行判断 force_recall() # 4.5 更新摘要(若满足条件) if should_update_summary(total_rounds): summary.summary = generate_summary() summary.last_update_round = total_rounds# ----- 5. 相关标记引用(每5轮重申)-----def reinforce_facts(): """在回复中隐含地重申关键标记""" # 至少每5轮,将 key_facts 中的重要信息自然融入描述 pass# ===== 执行指令 =====# AI 须在每轮生成回复前,先调用 before_response() 模拟内部状态更新。# 所有标记(!人物、!物品、!约定)须在 key_facts 中持久化。# 关系矩阵中的数值须影响措辞倾向。使用说明:· 上述代码为伪代码,AI 无需实际编译运行,但应理解其结构和逻辑,在每次回复前模拟执行 before_response()。· 所有数据结构的字段可根据实际对话动态赋值,确保关键信息不被遗忘。· 轮次计数 total_rounds 需持续累加,并在摘要更新时重置计时。
触发词:你、我、他、她、祂、它
功能菜单
发布到茶馆
#