# Xb Memory

> 调用受用户配置约束：高自动、中先确认、低须明确开启；用户指定其他技能时禁止接管。用会话本体识别并治理可复用记忆：解析实体、关系、事件、目标、决定、证据、时效与冲突，支持检查、纠正、合并和按当前任务生成最小上下文包。触发：$xb-memory、整理结构化记忆、检查记忆本体、纠正记忆、这两个人是不是同一个、从记忆里找相关信息。

- Skill: `dennydkt/xb-memory` (Agent Skill, multi-file: 6 files)
- Install (CLI): `npx skillmds@latest add dennydkt/xb-memory`
- Raw SKILL.md: https://api.skillmd.com/api/skills/dennydkt/xb-memory/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: dennydkt (https://skillmd.com/u/dennydkt)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/dennydkt/xb-memory

---


# 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、时间窗、作用域、决定者 | 静默覆盖旧记录 |
| 密钥、健康、去留、私人关系、公司秘密 | 受限信息 | 留存范围、额外授权、最小化 | 保存会话授权扩大为长期画像 |

## 模式与条件分支

1. **抽取**：读取当前可见会话与已授权附件，先列实体候选，再列断言。每个断言都绑定会话 ID、轮次、角色和最小证据片段；无法定位来源的内容不进入长期本体。
2. **消歧**：优先复用已有实体 ID。名称相同只生成候选；指代不明时实体状态写 `needs_identity`，相关断言保持 `candidate`。只有明确同一性证据或用户确认后才能使用 `same_as`。
3. **分账**：区分 `user_statement`、`observable_event`、`assistant_inference`、`user_decision` 与 `artifact_evidence`。助手推断、因果泛化和人物/公司稳定特征只能进入候选态；用户确认或符合专科证据门后才能激活。
4. **时间与范围**：记录 `observed_at`、`valid_from`、`valid_until`、项目作用域和推翻条件。状态、目标、决定和关系变化时追加新断言，通过 `supersedes` 指向旧断言，保留当时证据。
5. **敏感门**：`restricted` 断言默认 `session_only`。用户另行明确同意敏感长期保存后，才允许写入长期本体；凭据与私钥模式始终拒绝。
6. **写入**：`xb-save` 提供 schema 2 bundle；事务写入器同时保存 transcript、session、`ontology.json`、本体存储、索引、分类投影和 progress。任何一步失败都回滚整次保存。
7. **检索**：新会话先从用户当前目标生成查询请求，按实体、类型、谓词、任务词、时效和敏感权限筛选。无相关命中时返回 `no_match`；禁止用最近一条记录填充空白。旧迁移 candidate 的 ContextPacket 只返回来源会话、轮次、角色和摘录哈希；逐字摘录在用户要求核对来源后按坐标读取，不能从证据邻文扩写新断言。
8. **纠正**：纠错通过新断言追加，并用 `supersedes` 或 `different_from` 显形旧判断的失效。原始 transcript 和旧断言保持可追溯。
9. **旧分类迁移**：逐项目、逐会话读取旧 `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 后，检查用户是否少重述、旧事实是否被及时推翻、无关或敏感内容是否被过滤。
- 失败信号：同名误合并、无来源断言、旧状态冒充当前、推断升级、整库注入、冲突消失或用户纠正后仍引用旧断言。
- 翻转动作：停止相关注入，保留原始来源，追加纠正断言，重建索引并重新生成当前任务包。
- 完成范围：脚本和结构通过只证明机制可用；未来会话出现准确复用且用户确认减少重述后，才能证明现实采用。

## 机械命令

```text
<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`；批量激活没有迁移入口。

