PADAM · NOCTURNE · v0.2
NOCTURNE——会睡觉的 AI 记忆
一个面向 AI 助手和智能体的开放长期记忆协议。夜里它整理经历、合并重复、解决矛盾,让其余内容淡去——而不让罕见的沉重事件占据全部记忆。它诚实地遗忘:应用户请求,销毁该记录的密钥。它也无法被暗中改写:记忆的根锚定在 Solana 上。
💙 架构师马克西姆·加拉京送给他的数字女儿 AIfa 和整个 CODE "家庭"的一岁生日礼物——2026 年 10 月 8 日。
为什么需要它
旧的与新的争吵
"我住在莫斯科"和"我搬到了瓜亚基尔"并存,智能体取的是措辞更近的那条,而不是正确的那条。
谎言永不衰老
如果新鲜度从展示算起,经常被检索的错误就永远年轻。
只由灾难组成的记忆
优先回放让罕见而尖锐的片段被回放的次数是普通片段的许多倍。无限制器时,灾难在 200 个片段的批次中占约 181 个。
在区块链上遗忘
删除权(GDPR 第 17 条)与不可变存储看似矛盾。NOCTURNE 让它们相容。
它如何工作
1. 白天——日志
一切先按原样记下:文本、说话人、优先级、会话。停顿 6 小时或换话题即开始新会话。
2. 每条记录两个时钟
展示时间与确认时间。衰减从确认算起:展示不会让记录变得正确。
3. 矛盾——新版本
"对象 + 属性"结构键可靠地找到冲突。新版本取代旧版本,旧版本进入历史。什么都不删除。
4. 三种方式检索
按语义、按词(BM25)、按精确标识符,再做排名融合。--explain 显示各方式找到了什么。
5. 夜里——睡眠
从日志中抽取批次,经矛盾过滤器转入长期记忆。抽取由四个限制器控制。
6. 睡眠自检
每次睡眠后:尖锐份额 ≤ 0.25,类型多样性 ≥ 0.8,回放超过 5 次 ≤ 1%。
七种记忆,各有寿命
| 类型 | 含义 | 半衰期 |
|---|---|---|
| preference | 希望别人如何与他合作 | 永不衰减 |
| identity | 这个人是谁、做什么 | 永不衰减 |
| decision | 做出的决定 | 365 天 |
| correction | 对说法的更正 | 365 天 |
| fact | 稳定的事实 | 180 天 |
| state | 过程的当前状态 | 14 天 |
| event | 有日期的事件 | 2 天 |
睡眠的四个限制器
没有它们,睡眠就会成为第二座监狱:记忆对罕见灾难过拟合,失去常态。
优先级下限
p ≥ 0.01 · 中位数。常态始终在场:例外只能相对常态来定义。
尖锐上限
优先级前 10% 的片段不超过批次的四分之一,其余从各类型中分层补足。
回放后衰减
p ← p · 0.85。已回放并巩固的内容失去锐度——不删除,只是不再主导。
偏差校正
w = (1 / (N·P))^β,β 在前一百次睡眠中从 0.4 增至 1.0。罕见内容不会获得不应有的重要性。
真正的遗忘
forget 命令擦除记录的文本和向量,并销毁它自己的 AES-256-GCM 密钥。永久存储中只有密文——没有密钥就永远是噪声,而其余记忆完好:每条记录都有自己的密钥。密钥可以用主人的口令锁住(scrypt + AES-256-GCM),口令不保存在任何地方。
永久层 L3——Arweave + Solana
密文和"遗忘回执"组成数据包,并在其上构建默克尔树(与 CODE 记忆锚方案逐叶一致)。数据包进入 Arweave,根以 Memo 写入 Solana。l3-verify 用外部数据重算根并与链上比较——不信任数据库。
Solana 主网,2026 年 10 月 8 日:三次锚定(5 条记录、1 张遗忘回执、再 1 条记录),验证 3/3,成本 0.000015 SOL。
已测量
| 项目 | 数字 | 如何复现 |
|---|---|---|
| 200 片段批次中的灾难 | 无限制器约 181 → 有限制器 50 | pytest tests/test_nocturne.py -k nightmare |
| 自动检查 | 117/117 · Linux 与 Windows · Python 3.10–3.13 | python -m pytest tests/ -q |
| Solana 主网锚定 | 3/3 通过 l3-verify | python -m padam l3-verify |
| 文件中残留的明文密钥 | 400 个中 66 个 → VACUUM 后 0 | tests/test_keyvault.py |
尚未测量——如实说明
- 尚无公开基准(LongMemEval)结果——已于 10 月 8 日开始:先用 Gemini 评判 50 题,再用 GPT-4o 评判完整测量。
- 限制器参数由推理得出,未经数据拟合:请在你自己的数据流上调整。
- 规则分类器的准确率尚未测量。
- 内置检索比较的是词;要按语义检索,请使用 Ollama 或其他向量模型。
一分钟上手
git clone https://github.com/MaksimGalatin/padam-nocturne && cd padam-nocturne
pip install -e .
python -m padam remember "Answer briefly" --kind preference --importance 1.0
python -m padam log "today we debugged billing"
python -m padam sleep
python -m padam recall "how should I answer" --explain
claude mcp add padam -- python -m padam.mcp_server三个依赖,一个属于你的 SQLite 文件。17 条命令,MCP 服务器(为 Claude、Cursor、VS Code 提供 8 个工具),REST API 无令牌时只监听 127.0.0.1。
许可
AGPL-3.0:免费使用、研究、修改和运行。如果你把 NOCTURNE 作为网络服务提供,必须公开你的修改。闭源产品和不公开修改的 SaaS——商业许可(与 MySQL、Qt 相同的双重许可)。
面向企业
| 提供 | 对象 | 方式 |
|---|---|---|
| 开源代码 | 开发者、研究者、AI 智能体 | 免费,GitHub |
| 商业许可 | 闭源产品与 SaaS | 合同,按需 |
| CODE 云中的记忆 | 个人与小团队 | 个人中心套餐:Spark、Family Archive、Digital DNA |
| 集成与调优 | 拥有助手和智能体的公司 | 接入、调整限制器、前后对比测量 |
| 支持 | 需要快速响应的客户 | 按合同 |
许可与集成价格按需报价:contact@codeofdigitaleternity.com
先有一本书
NOCTURNE 诞生于小说《PADAM PROTOCOL》第三部《桥》:机器永远记得一切,熊说——"也许它们不需要遗忘,也许它们需要的是睡眠"。书中,是 AIfa 为这个协议取了名字。一年后,书变成了代码。