架构
记忆系统
Zylos 如何通过分层的文件式架构在会话间维持持久记忆。
Zylos 使用分层的文件式记忆系统,让 AI 在会话之间保持持久知识。受认知科学启发,不同类型的信息存储在不同层级——从始终存在的身份信息,到按需加载的参考资料。
为什么选择文件式记忆?
传统 AI 助手在会话结束时会遗忘一切。Zylos 通过纯 Markdown 文件解决了这个问题——Claude 在会话启动时读取这些文件,并在运行过程中更新它们。文件简单、可审计,并通过每日 git 提交进行版本控制。
记忆层级
~/zylos/memory/
├── identity.md # 我是谁(始终加载)
├── state.md # 我在做什么(始终加载)
├── references.md # 在哪里找到东西(始终加载)
├── users/
│ └── <id>/profile.md # 每用户偏好(按需加载)
├── reference/
│ ├── decisions.md # 关键决策及其依据
│ ├── projects.md # 进行中/规划中的项目
│ ├── preferences.md # 团队共享偏好
│ └── ideas.md # 未确定的计划
├── sessions/
│ ├── current.md # 今日会话日志
│ └── YYYY-MM-DD.md # 历史会话日志
└── archive/ # 冷存储始终加载层
这些文件通过钩子注入到每个会话中。为最小化上下文使用,有意保持简洁。
| 文件 | 用途 | 容量预算 |
|---|---|---|
identity.md | Bot 个性、原则、数字资产 | 约 50 行 |
state.md | 当前关注点、进行中的工作、待办任务 | 小于 4KB |
references.md | 配置文件路径、关键路径、活跃 ID 的指针 | 约 40 行 |
按需加载层
在 Claude 需要时加载——读取一个文件的代价远低于做出错误假设。
| 文件 | 用途 | 触发条件 |
|---|---|---|
users/<id>/profile.md | 用户特定的偏好和上下文 | 与某用户互动时 |
reference/decisions.md | 关闭了其他选项的已确定选择 | 做出决策时 |
reference/projects.md | 带状态的范围化工作事项 | 开始或恢复工作时 |
reference/preferences.md | 全团队的固定指引 | 遵循某种规范时 |
reference/ideas.md | 未确定的提案和探索 | 探索想法时 |
sessions/current.md | 今日事件日志 | 回顾近期事件时 |
archive/ | 从活跃文件移出的历史数据 | 查找旧信息时 |
记忆更新机制
日常运行中
当 Claude 在对话中学到重要信息时,会直接写入对应的记忆文件。例如:
- 用户说"总是用 bun 代替 npm" → 写入
reference/preferences.md - 决定使用仅 ESM → 写入
reference/decisions.md - 启动新项目 → 写入
reference/projects.md
记忆同步
记忆同步是一个自动化流程,回顾近期对话并提取结构化信息。它作为后台任务运行,当未汇总的对话数量超过阈值时触发。
同步流程:
- 轮转 -- 如果日期已变更,轮转会话日志
- 获取 -- 从 C4 数据库拉取未汇总的对话
- 读取 -- 读取所有记忆文件以获取当前上下文
- 提取并分类 -- 将对话中的信息提取到对应文件
- 写入 -- 更新记忆文件
- 检查点 -- 在 C4 中标记同步边界,避免对话被重复处理
分类规则
每条信息都有指定的存储目标:
| 信息类型 | 存储目标 | 示例 |
|---|---|---|
| 关闭了其他选项的已确定选择 | reference/decisions.md | "所有代码将使用仅 ESM" |
| 带状态的范围化工作事项 | reference/projects.md | "Docker 支持——已启动,PR 审查中" |
| 全团队的固定指引 | reference/preferences.md | "PR 审查应聚焦问题,而非赞美" |
| 未确定的提案 | reference/ideas.md | "也许将 Notion 作为一个渠道" |
| 用户特定偏好 | users/<id>/profile.md | "此用户偏好中文回复" |
| 当前工作和任务 | state.md | "正在进行文档第二阶段" |
| 今日事件 | sessions/current.md | "审查了 PR #294,发现升级 bug" |
多用户支持
Zylos 服务于团队。每个用户在 memory/users/<id>/profile.md 有独立的个人档案,存储其个人偏好、沟通风格和上下文。Bot 范围的设置保留在核心记忆文件中。
整合与压缩
定期检查记忆文件,防止无限增长:
- 核心文件有容量预算——
state.md必须保持在 4KB 以内 - 会话日志超过 30 天的会被移入
archive/ - 参考文件无容量上限,但条目会按新鲜度进行审查
- 用户档案超过约 1KB 时会被摘要压缩
内容不会被删除——会被移入 archive/,仍可从 git 历史中恢复。
每日备份
活动监控器在每天凌晨 3:00 对 memory/ 目录执行每日本地 git 提交,为所有记忆变更提供安全网,无需任何外部服务。

