xb-memory:会话本体记忆
调用前先读 ../xbskill/references/interaction-settings.md,按用户已选调用强度和保存提示执行;明确指定其他技能或拒绝 XB 时退出。未初始化时只允许配置与说明,禁止代选或先执行后确认。
直调时先读取 ../xbskill/references/contracts.md、../xbskill/references/resolution-standard.md、../xbskill/references/session-memory-protocol.md、../xbskill/references/context-protocol.md、../xbskill/references/runtime-compatibility.md、references/conversation-ontology.md 与 references/predicate-registry.json;任何文件缺失时报告绝对路径并停止受影响步骤。机器结构按 references/ontology.schema.json,写入和查询统一调用 scripts/memory_ontology.py。
触发与核心模型
本 Skill 处理四类用户主结果:检查一次会话的本体拆解、纠正实体或断言、治理跨会话冲突、从已有记忆生成当前任务的最小上下文包。用户只说“保存对话”时,当前专科保持 xb-save,本 Skill 作为支持调用返回 OntologyDelta;用户只说“接着上次”时保持 xb-restore,本 Skill 只返回查询包。
会话本体采用四层模型:原始会话保留逐字来源;实体层标识人、组织、项目、目标、任务、产物、决定、事件、约束和能力证据;断言层表达带来源与时间的关系或属性;检索层只把当前任务相关、仍有效、权限允许的最小切片送入新会话。任何摘要、分类页或人物档案都属于投影视图,不能覆盖会话来源与本体断言。
完成标准:用户能从一个结构化项回到会话轮次,能看出它是陈述、事件、决定或推断,能知道当前是否有效、与什么冲突、何种新证据会推翻,并能在新任务中得到有边界的相关上下文。
可观察信号词典
| 信号 | 候选对象 | 必查字段 | 常见误判 |
|---|---|---|---|
| “我、领导、同事、客户、他们” | 人或待消歧实体 | 稳定 ID、别名、组织范围、指代证据 | 同名或代词直接合并 |
| 项目名、产品名、公司名 | 项目、产物、组织 | 类型、所属范围、版本、时间 | 把工作副本当稳定实体 |
| “要、准备、已经决定” | 目标或决定 | 决定者、对象、状态、有效期、授权 | 把计划写成已执行结果 |
| “总是、通常、风格、能力” | 偏好或能力候选 | 事件数量、场景差异、反例、置信度 | 单次事件固化为画像 |
| “完成、卡住、等待、过期” | 状态断言 | 观察时间、状态 owner、下一变化信号 | 旧状态长期保持 active |
| “因为、导致、所以” | 因果候选 | 竞争解释、证据、翻转条件 | 相关性升级为因果事实 |
| 与旧记录不一致 | 冲突集合 | 断言 ID、时间窗、作用域、决定者 | 静默覆盖旧记录 |
| 密钥、健康、去留、私人关系、公司秘密 | 受限信息 | 留存范围、额外授权、最小化 | 保存会话授权扩大为长期画像 |
模式与条件分支
- 抽取:读取当前可见会话与已授权附件,先列实体候选,再列断言。每个断言都绑定会话 ID、轮次、角色和最小证据片段;无法定位来源的内容不进入长期本体。
- 消歧:优先复用已有实体 ID。名称相同只生成候选;指代不明时实体状态写
needs_identity,相关断言保持candidate。只有明确同一性证据或用户确认后才能使用same_as。 - 分账:区分
user_statement、observable_event、assistant_inference、user_decision与artifact_evidence。助手推断、因果泛化和人物/公司稳定特征只能进入候选态;用户确认或符合专科证据门后才能激活。 - 时间与范围:记录
observed_at、valid_from、valid_until、项目作用域和推翻条件。状态、目标、决定和关系变化时追加新断言,通过supersedes指向旧断言,保留当时证据。 - 敏感门:
restricted断言默认session_only。用户另行明确同意敏感长期保存后,才允许写入长期本体;凭据与私钥模式始终拒绝。 - 写入:
xb-save提供 schema 2 bundle;事务写入器同时保存 transcript、session、ontology.json、本体存储、索引、分类投影和 progress。任何一步失败都回滚整次保存。 - 检索:新会话先从用户当前目标生成查询请求,按实体、类型、谓词、任务词、时效和敏感权限筛选。无相关命中时返回
no_match;禁止用最近一条记录填充空白。旧迁移 candidate 的 ContextPacket 只返回来源会话、轮次、角色和摘录哈希;逐字摘录在用户要求核对来源后按坐标读取,不能从证据邻文扩写新断言。 - 纠正:纠错通过新断言追加,并用
supersedes或different_from显形旧判断的失效。原始 transcript 和旧断言保持可追溯。 - 旧分类迁移:逐项目、逐会话读取旧
classification.md与transcript.md,先生成待审阅 delta。旧条目统一写成低置信度assistant_inference + candidate;旧证据等级进入限定字段,同名主体使用会话隔离 ID。迁移命令只生成候选文件,复核后再用apply写入。
分支闸门:
- 用户主结果是保存当前会话:交给
xb-save,本 Skill 返回结构化增量; - 用户主结果是恢复一项工作:交给
xb-restore,本 Skill返回最小查询包; - 用户主结果是审阅、纠错、合并或查询结构化记忆:本 Skill 保持唯一当前专科;
- 缺项目根、会话轮次、实体身份、额外敏感授权或本体依赖时,停止受影响写入并报告精确缺口;
- 删除、批量迁移、跨项目合并和外发仍需单独授权。
- 旧分类缺 transcript、表头不完整、来源轮次不存在、含凭据模式或已有
ontology.json时,迁移响亮失败;受限信息只进入会话范围。
直接产物
OntologyDelta
必须包含:会话 ID、生成时间、当前会话授权、实体列表、断言列表和显式空结果。实体含稳定 ID、类型、名称、别名、作用域、敏感级别、状态与来源;断言含主语、谓词、对象、证据类型、置信度、生命周期、留存级别、时间窗、来源轮次、推翻条件和被替代断言。
ContextPacket
必须包含:查询目标、命中实体、命中断言、冲突、时效、显式省略、来源坐标和刷新触发器。它只服务当前任务,不成为新的长期真源;默认不写查询日志和包文件。
CorrectionDelta
必须包含:新断言、被替代断言 ID、纠正依据、适用时间和仍未解决的歧义。无法确定时保留并列候选,交给用户决定实体同一性或事实取舍。
正例、反例与边界例
正例:用户说“我在 A 项目负责周报,领导周五只看结论;今天决定下周改成一页版。”拆为用户、A 项目、周报产物、领导代号和决定事件;记录 works_on、owns、prefers 与 decides,每条绑定原轮次。新会话询问“A 项目周报”时返回这些项,并标领导偏好只代表用户当时陈述。
反例:一次会话里用户说“领导今天很暴躁”。只能保存当天事件和用户解释;禁止直接生成“领导性格暴躁”的 active 断言。
边界例:用户说“他让我继续”,且会话中有两名男性同事。建立 needs_identity 实体与候选断言,不更新任何人物档案。新会话查询该关系时显示歧义和所需辨别信息。
验证、失败与翻转
- 校验:运行
memory_ontology.py validate-delta、apply、validate-store和query;正例应可追溯,歧义例应停在候选,敏感例应留在会话范围,冲突例应显形。 - 现实反馈:未来新会话使用 ContextPacket 后,检查用户是否少重述、旧事实是否被及时推翻、无关或敏感内容是否被过滤。
- 失败信号:同名误合并、无来源断言、旧状态冒充当前、推断升级、整库注入、冲突消失或用户纠正后仍引用旧断言。
- 翻转动作:停止相关注入,保留原始来源,追加纠正断言,重建索引并重新生成当前任务包。
- 完成范围:脚本和结构通过只证明机制可用;未来会话出现准确复用且用户确认减少重述后,才能证明现实采用。
机械命令
<PYTHON3> -B <xb-memory目录>/scripts/memory_ontology.py validate-delta --delta <绝对路径>
<PYTHON3> -B <xb-memory目录>/scripts/memory_ontology.py apply --project-root <项目绝对路径> --delta <绝对路径>
<PYTHON3> -B <xb-memory目录>/scripts/memory_ontology.py validate-store --project-root <项目绝对路径>
<PYTHON3> -B <xb-memory目录>/scripts/memory_ontology.py query --project-root <项目绝对路径> --request <绝对路径>
<PYTHON3> -B <xb-memory目录>/scripts/memory_ontology.py migrate-legacy --project-root <项目绝对路径> --session-id <旧会话ID> --output <候选delta绝对路径>
apply 仅供已授权、独立的本体维护操作。保存当前会话时统一由 xb-save/scripts/session_store.py 调用同一模块并纳入一笔事务,禁止先写会话、后补本体。
migrate-legacy 不改旧文件和本体存储。复核候选里的原分类行、精确 transcript 摘录、敏感级别和作用域后,再单独执行 apply;批量激活没有迁移入口。