内容
-Layer
**7 层。1 个内存。零混乱。**
将 AI 代理的内存组织成治理层 — 从不可变的规则0)到事件复盘(P6)。每一层都有一个契约:谁可以写入,何时查询,如何维护。
```python
pip install p-layers # 仓库:p-layer,PyPI:p-layers,导入:p_layer
python3 -m p_layer.mcp.server # 使用 SQLite 启动 MCP 服务器(零配置)
```
## 7 层
| 层级 | 名称 | 目的 | 查询 | 写权限 |
|-------|------|---------|-------|-------------|
| **P0** | 脑干 | 不可变规则 | 每个会话开始 | 仅系统 |
| **P1** | 边缘系统 | 身份和角色 | 会话开始 + 输出 | 仅人类 |
| **P2** | 海马体 | 原始会话存档 | **最后手段** | 仅追加 |
| **P3** | 传感器 | 工具集成 | 调试时 | 系统 + cron |
| **P4** | 大脑皮层 | 技能和成长 | 技能选择 | 代理 + 手动 |
| **P5** | 自我 | **编译维基** | **首要优先级** | 自动生成 |
| **P6** | 前额叶 | 事件和 RCA | 事件发生期间 | 代理 + 手动 |
## 现实流程
一个 AI 助手在构建管道中发现了一个错误:
1. **P6** — 编写带有时间线和根本原因的事件报告
2. **P0** — 如果根本原因是规则违反,则建议 P0 修正
3. **`knowledge_recall`** — 当类似症状在几周后出现时,MCP 服务器根据置信度 + 新鲜度 + 偶然性对事件进行排序
4. **`wiki_compile.py`** — 每天结束时,所有事件 + 修复程序被编译成 P5 维基页面
5. **查询路由** — 在下一个会话中,编译后的知识立即被找到(先查找 P5,再查找 P2)
同一个错误不会发生两次 — 不是因为代理记住,而是因为治理层已经学习。
## MCP 服务器
7 种工具,全部包含:
| 工具 | 功能 |
|------|-------------|
| `knowledge_remember` | 存储一个事实,带有置信度、TTL 和版本标签 |
| `knowledge_recall` | 排名搜索 — 置信度 + 新鲜度 + 5% 偶然性 |
| `knowledge_forget` | 软删除(取代,永不销毁) |
| `knowledge_update` | 按 ID 更新 — 旧版本被取代,历史被保留 |
| `knowledge_memory-stats` | 按层级的条目计数 |
| `knowledge_snapshot-create` | 在版本标签下冻结当前状态 |
| `knowledge_snapshot-rollback` | 取代快照后创建的条目 |
### MCP 客户端配置
**opencode** (`opencode.jsonc`):
```json
{
"mcp": {
"p-layer": {
"type": "local",
"command": ["python3", "-m", "p_layer.mcp.server"],
"env": { "KNOWLEDGE_PG_DSN": "{env:KNOWLEDGE_PG_DSN}" },
"enabled": true
}
}
}
```
**Claude Desktop** (`claude_desktop_config.json`):
```json
{
"mcpServers": {
"p-layer": {
"command": "python3",
"args": ["-m", "p_layer.mcp.server"],
"env": { "KNOWLEDGE_PG_DSN": "" }
}
}
}
```
## 架构
```
P0-脑干(规则) ─────────── 治理所有层级的写入权限
P1-边缘系统(角色) ──────────── 定义代理声音
│
P2-海马体(原始数据) ──────────────┤
│ │
├──→ 会话/(仅追加日志) │
├──→ 记忆/(提取的条目) │
└──→ 知识/(摄入的工件) │
▼
P3-传感器 ──→ MCP 配置 ──→ P_LAYER 知识库 ←── P4-大脑皮层 技能索引
(Pg + SQLite) │
│ │
┌──────────────────────────┤ │
▼ ▼ ▼
knowledge_recall P5-自我/维基/编译/ P6-前额叶
(排名 FTS + 向量) (每天自动生成) (事件 + RCA)
│
wiki_lint.py
(断链检查)
```
### 后端选择
| 变量 | 效果 |
|----------|--------|
| `KNOWLEDGE_PG_DSN` 未设置 | SQLite 模式(`.knowledge/knowledge.db`) |
| `KNOWLEDGE_PG_DSN=dbname=...` | PostgreSQL 主节点,SQLite 备用 |
| `KNOWLEDGE_DB_DIR=/path` | 自定义 SQLite 目录 |
## 查询路由(优先级)
当代理搜索信息时:
```
1. P5-自我/维基/编译/ ← 编译维基(首先检查)
2. P5-自我/内存/ ← 保存的偏好
3. P2-海马体/知识/ ← 原始摄入知识
4. P2-海马体/记忆/ ← 原始会话内存
5. P2-海马体/会话/ ← 原始会话日志(最后手段)
6. 知识库(SQLite/Pg) ← 跨切备用
```
步骤 1-2 应涵盖约 80% 的查询。步骤 3+ 是空白 → 下一个维基编译周期。
## 在您的项目中使用 p-layers
`p-layers/` 目录包含规范的治理合约。每个映射到项目中的运行时目录:
```
your-project/
├── p-layers/ ← 合约文档(规范,只读)
│ ├── P0-脑干/README.md
│ └── ...
├── P2-海马体/ ← 运行时数据(您的会话,存档)
│ └── 会话/
├── P5-自我/
│ └── 维基/编译/ ← 由 wiki_compile.py 自动生成
└── P6-前额叶/
└── 事件/ ← 您的事件报告
```
**复制** → `cp-layers/ your-project/`(您拥有它们,可以自由定制)\
**子模块** → `git <url>`(保持同步)\
**引用** → 将代理的初始化工作流指向 `p-layers/P0-脑干/README.md`
## 脚本
| 脚本 | 目的 |
|--------|---------|
| `scripts/ontology_setup.py` | 初始化实体类型层次结构 + 关系约束 |
| `scripts/seed_knowledge_db.py` | 用模式 + 种子启动 knowledge.db |
| `scripts/ingest_fact.py` | 从 CLI 插入单个事实 |
| `scripts/ingest_instructions.py` | 批量摄入 `.md` 文件到知识库 |
| `scripts/inference.py` | 传递闭包,追溯,矛盾检测 |
| `scripts/wiki_compile.py` | 知识库 → Markdown 维基页面 + INDEX.json |
| `scripts/wiki_lint.py` | 断链检测,INDEX 一致性 |
## 本体层
6 个根类别下的 24 个实体类型:
```
工 → 文档,代码,项目
代理 → 角色,工具,脚本,技能
决策 → 模式,偏好
事件 → 事件,会话
知识 → 概念,论文,引用
元数据 → 类别,_任务,事实
```
关系约束在插入时强制执行类型安全:
| 关系 | 源 → 目标 |
|----------|----------------|
| `depends_on` | 任意 → 工具/脚本/技能 |
| `fixed_by` | 事件 → 模式/决策 |
| `caused` | 决策/模式 → 事件 |
| `led_to` | 决策 → 决策 |
| `cites` | 论文 → 论文 |
| `contradicts` | 决策/模式 → 决策/模式 |
## 许可证
MIT