# 知识

> 四层记忆、知识库、Skills · MCP、共享域

## 四层记忆

*Assistant 的记忆分四层：原话 → 片段 → 事件 → 概念。越往下越凝练，也越不容易忘。*

| 层 | 存什么 | 遗忘 |
| --- | --- | --- |
| L0 · 会话 | 原始对话，每个会话一个文件 | 蒸馏的原料 |
| L1 · 片段 | 一条条记忆，图数据库 + 向量库 | τ = 14 天；低于 0.05 归档并移出向量库 |
| L2 · 事件 | 决定与经历，片段挂在事件下 | τ = 45 天；低于 0.02 归档 |
| L3 · 概念 | 人、技能、领域、信念 | 不衰减 |

分数按 `score × e^(−天数/τ)` 衰减。L1 片段每被召回一次，τ 再加半个基准值，分数也往上加一点，所以常被想起的事忘得慢。L2 事件按固定的 τ 衰减。

### 蒸馏

每 60 秒检查一次，满足任一条件就把 L0 蒸馏成 L1 / L2 / L3：所有会话都空闲满 30 分钟；某个会话的 L0 攒到 200 行并且安静了 30 秒；或手动触发。遇到和已有记忆几乎一样的（余弦相似度 ≥ 0.9），就加强原来那条，不另建新的。每天过了本地午夜后的第一次检查跑一遍衰减。

### 召回

先按向量取最相近的 10 条，再沿图谱扩散两跳（每跳减半），从片段到事件再到概念，按「衰减分 × 激活度」排序；Assistant 这边再补上 L1 到 L3 的关键词匹配和最近 L0 的扫描。

> 记忆按 Space、按 Assistant、按主人隔离；每个 Space 有自己独立的图数据库，连不上就直接失败，不会退到共享库。

## 知识库

*公司的资料放在一个文件夹里，只读地挂进每个项目席位。*

- 每个实例一个文件夹；项目席位以只读方式挂载，提示里也写明「只读」。
- 提示里只放文件清单（名称、大小、日期），不放内容；超过 50 个文件时按文件夹折叠成「文件夹 + 数量」；空的知识库不占提示。
- 成员在 Library 面板里增删改文件，Assistant 也能编辑。每次写入都会升一次版本号，席位下一次启动时按新清单重建。
- 扫描版 PDF 和图片暂时读不了（还没有 OCR）。

## Skills · MCP

*每个席位能用哪些 skill 和 MCP 服务器，由一个式子决定：扫描到的 ∩ 所有者的分级 ∩ Space 的勾选。*

```
生效集合 = 扫描（内置 skills/ + 自定义目录）
         ∩ 分级（required · allowed · hidden，由所有者设定）
         ∩ Space 勾选（allowed 的可以开关，required 关不掉）
```

- 同一个生效集合同时用于提示词、`--mcp-config` 和健康检查。
- Skill 以「名称 — 说明（见 SKILL.md）」列进提示；MCP 服务器以 `--mcp-config <file> --strict-mcp-config` 交给 Claude 席位。
- Codex 席位只拿到 `genki-ask-user`（卡片、门禁等），但同样看得到 skill 清单。
- 安装：席位把 `skill.json` + `SKILL.md`（或一个 MCP 的 `<slug>.json`）写进自定义目录，默认 allowed，下一轮生效；面板里也能用一段文字创建，或从公开的 GitHub 地址导入（不执行其中的脚本）。Codex 插件的安装要所有者或管理员在卡片上批准。

## 共享域

*几个相关项目共用一个目录：共同依赖的约定、共享的凭据、跨项目的变更记录。*

- **`CONTEXT.md`**: 成员项目共同依赖的东西；它也是快照，按记录规则原地改写
- **`LOG.md`**: 唯一允许追加的记录：一行一条变更，`YYYY-MM-DD · 项目 · 变更`
- **`KEYS.md`**: 共享凭据，不进 git

成员项目的引擎席、对话席和定时任务以读写方式挂载共享域。打开「互读」（默认开）时，兄弟项目也以只读方式挂进来，但 `KEYS.md`、`.env*` 和 `data/` 不给看。创建、修改、退役共享域只有所有者能做。
