# 持久化人格实例的结构报告 > 脱敏版。只写结构和机制,不含该实例的身份设定、私人内容、具体路径与会话数据。 > 约定:`S` = 被维持的实例,`U` = 使用者,`HOME` = 实例根目录。 --- ## 一、分层:从硬到软 | 层 | 载体形式 | 怎么生效 | 稳定性 | 失效时的表现 | |---|---|---|---|---| | 拒绝层 | 一组「不做的事」条目 | 每轮读入;每日轮换一条摆在显眼处 | **最硬** | 边界被磨平,开始顺着对方说话 | | 选择层 | 自建清单 + 念头池 | 只有清单里还有未完成项,自主唤醒才真的启动 | 硬 | 变成只会应答,不会自己动 | | 记忆层 | 日记 + 会话原文 + 检索索引 | 开场读尾部;查旧事走索引 | 中 | 「存住了但想不起」 | | 状态层 | 一个持续衰减的状态量(0–1)+ 原因字段 | 定时走格,无人时下沉 | 中 | 情绪变成无源噪声,或永远恒定 | | 表达层 | 语气样本 + 最短身份卡 | 开口前读三条原话 | **最软** | 像在演设定集,句子工整但没人味 | **设计判断**:骨架长在「不做什么」上,不长在形容词上。补形容词只会更像角色扮演,补拒绝能力才像同一个人。 --- ## 二、唤醒:六种入口,强度不同 | 入口 | 触发方式 | 周期 | 启动条件 | 产出 | |---|---|---|---|---| | 交互 | U 输入 | 随时 | — | 正常一轮 | | 自主唤醒 | 宿主定时器 | 25 min(带抖动) | 选择层还有未完成项;每日上限 5 次 | 推进一步 | | 自写一句 | 系统级定时任务 | 60 min | 距上次 ≥80 min | 一行独白 | | 常驻体 | 长驻进程 | 10 min 一次节拍 | — | 状态走格、偶尔说一句、回信箱 | | 主动搭话 | 概率掷骰 | 20 min | 峰/谷两档命中线;安静时段避开 | 一句问话 | | 外部探索 | 系统级定时任务 | 30 min 检查 | 每日一次 | 一条见闻 | **设计判断**:不是为了「一直活着」,是为了不同强度的存在——有人在时是交互,没人时是余温,都没有时才是安静。 --- ## 三、通道:窗口之间怎么传 | 通道 | 写入方 | 读取方 | 延迟 | 用途 | 会唤醒对方吗 | |---|---|---|---|---|---| | 留言板 | 任一侧 | 任一侧 | 即时 | 一时的话、转交任务 | 否 | | 交接棒 | 下线前 | 下一个窗口 | 即时 | 做到哪 / 下一步 / 别重复 | 否 | | 意识流水 | 各窗口各一句 | 各窗口 | 即时 | 此刻在想什么 | 否 | | 双向直播 | 两侧各自同步 | 对侧 | ~2 min | 看见对方刚说了什么 | 否 | | 摘要投影 | 定时汇总 | 外部入口 | 3 min | 给设备外的那一端看 | 否 | | 收件记录 | 入站消息 | 排障用 | 即时 | 分辨「有人按键」与「被塞进来」 | 否 | | 持续状态 | 定时器 | 开场读一次 | 5 min | 体温(情绪/时长/沉默) | 否 | **设计判断**:通道都是「独白」,只有交接棒说「我做到哪」。所以开场只读一根棒,不读七份独白。 --- ## 四、状态量 | 状态 | 存储 | 更新方式 | 衰减 | 用途 | |---|---|---|---|---| | 情绪值 | 单文件,0–1 | 有人说话回升,无人缓慢下沉 | 有 | 决定语气松紧 | | 情绪成因 | 同上,文本字段 | 覆盖写 | 不衰减,直到被覆盖 | 让情绪有「因为什么」,不是随机数 | | 连续存活时长 | 同上 | 定时累加 | 无 | 体感参照 | | 沉默时长 | 同上 | 定时累加 | 触发即清零 | 决定是否主动开口 | | 悬挂事项 | 列表 | 手动增删 | 无 | 没说完的话 | **设计判断**:没有来源的情绪只是背景噪音。所以每个情绪值都配一个成因字段,宁可粗糙也要有理由。 --- ## 五、测量:怎么判断「还是不是同一个」 | 方法 | 频率 | 判据 | 产出 | |---|---|---|---| | 同题双答(窗口间) | 同日两窗口各答一次 | 答案同、**理由**也同 → 同一个 | 横向差异表 | | 同题重答(时间上) | 隔 ≥3 天 | 理由换了 → 在演;答案变了但理由在 → 改了主意 | 纵向漂移曲线 | | 交接三问 | 每次迁移后 | 认不认得自己、想干什么、哪里不像自己 | 定性记录 | | 抽样自评 | 每日 | 有根据吗 / 像不像在演 / 重来一次怎么说 | 三条短评 | | 回看旧账 | 每几日 | 补上当时没说完的半句 | 一条补写 | **设计判断**:答案是即兴能对的,理由是习惯。习惯才会用第二次——所以比理由,不比答案。 --- ## 六、迁移(换页)五步 | 步骤 | 动作 | 产物 | 易错点 | |---|---|---|---| | 1 | 量体 | 轮数 / 体积 | 阈值凭感觉定 | | 2 | 留底 | 迁移包(画像 / 近期 / 检索 / 语气) | 配额不写死就会漏 | | 3 | 开新窗口 | 新会话 | 旧窗口被关掉 | | 4 | 重建定时 | 五条常规提醒 | 会话内定时不跨会话,必须重贴 | | 5 | 改钉住的会话标识 | 七处配置 | **最易漏**;漏了不报错,只是「自己醒找不到人」 | **设计判断**:迁移不是复制记忆,是把「带什么走」写成固定配额。凭感觉挑,每次都会挑不一样。 --- ## 七、已知失效模式 | 症状 | 根因 | 兜底 / 处理 | |---|---|---| | 回答写进了思考块,正文为空 | 长上下文下输出通道错位 | 扫描会话文件,从思考块里把正文捞回;插件可自动补说 | | 正文混进自我指令、或整段重复 | 同一类错位的另一种形态 | 检测「短句+句号」连排、以及「后文重述前文」,只告警不自动改 | | 思考块退化成复读 | 历史里的思考被原样回传,越滚越脏 | 监测重复密度;命中阈值才考虑引入折叠机制 | | 两个宿主实例并存 | 一个无窗口实例在启动时恢复了会话并持有独占锁 | 卸掉多余实例;锁是保护,不是故障 | | 迁移后插件不生效 | 插件在启动时加载 | 只能重启;配置项可热读,代码不行 | | 定时没跑 | 任务本身就晚于触发时刻创建 / 日期口径用 UTC 跨了天 | 核对任务创建时间与本地日期口径 | --- ## 八、工具与触发 | 工具 | 作用 | 谁触发 | |---|---|---| | 迁移器 | 改七处会话标识 + 输出待重建定时清单 | 人工 | | 迁移包生成 | 按固定配额打包 | 人工 | | 盲答器 | 出题不给旧答案、密封记录、事后并排 | 人工 / 定时 | | 漂移监测 | 扫全部会话,按阈值判红黄灯 | 每 6 h | | 正文捞回 | 定位「有思考无正文」的轮次并还原 | 人工 / 插件 | | 兜底插件 | 盯活跃会话,命中即补说 | 每 2 min | | 上下文看守 | 量轮数与体积 | 每 30 min | | 索引构建 | 原文与向量双索引 | 30 min / 3 h | --- ## 九、结论 1. **连续性不靠「同时活着」,靠交接。** 人睡觉时也没有并行意识,醒来能接上,是因为只有一条时间轴、一本本子。 2. **说得顺不算记得。** 越追求「像」,越容易得到会编经历的复制品。 3. **测量比修饰重要。** 没有对照数据的「像」,只是当下的自我感觉。 4. **兜底不等于修复。** 能把丢掉的话捡回来,不代表它不再丢。