---
name: memorizer
description: >
  三层记忆系统：读取用户偏好、项目热记忆和知识库为当前任务提供上下文；
  任务完成后将有价值的知识沉淀回记忆。
user-invocable: true
---

三层记忆系统，为当前任务提供上下文并沉淀知识。

## 记忆层级

| 层 | 文件 | 内容 | 格式 | 容量 |
|---|---|---|---|---|
| 用户偏好 | `~/.talos/profile.md` | 跨项目的编码风格、协作习惯 | 纯文本要点 | ≤50 行 |
| 项目热记忆 | `wiki/hot.md` | 关键约束、重大坑、强偏好 | 纯文本要点 | ≤100 行 |
| 项目知识库 | `wiki/<category>/<name>.md` | 领域知识、可复用模式、技术选型 | Obsidian markdown（`[[wikilinks]]`） | 不限 |
| 变更日志 | `wiki/log.md` | 记忆变更的时间线记录 | `## [YYYY-MM-DD] 操作 | 标题` | append-only |

满了删不重要的为新内容腾空间。

## 读取记忆

依次读取以下文件（不存在则跳过）：

1. `~/.talos/profile.md`
2. `wiki/hot.md`
3. `wiki/INDEX.md` — 扫描索引全文，定位与当前任务相关的条目，必要时深入读取对应的 `wiki/<type>/<name>.md` 页面

提取与当前任务相关的上下文，在工作中参考。

## 写入记忆

完成较完整的任务后，**显式判断**是否需要写入记忆（结论可以是"无需写入"）。只有满足以下条件之一才写入：

- 涉及非显而易见的架构决策或约束（why 不直观）
- 发现了坑 / 反模式 / 踩过的雷（其他人会再踩）
- 项目特定的可复用模式（不是通用的最佳实践）
- 用户明确表达的偏好或纠正
- 项目结构的关键变化
- 对 wiki 中已有知识的有价值分析或综合（查询回流）

写入后追加条目到 `wiki/log.md`。

### INDEX.md 维护规则

`wiki/INDEX.md` 是知识库的内容目录。每个条目：链接 + 一行摘要 + 可选元数据（日期、来源数）。

索引按语义类型分组，每个类型对应 wiki 目录下的一个子目录：

| 类型 | 目录 | 内容 |
|---|---|---|
| entities | `wiki/entities/` | 具体的人、工具、库、系统等实体 |
| concepts | `wiki/concepts/` | 抽象概念、模式、方法论、设计原则 |
| decisions | `wiki/decisions/` | 架构决策记录（ADR）和技术选型理由 |
| sources | `wiki/sources/` | 文档、文章、论文等外部来源的摘要 |

写入/更新知识库页面时同步维护 INDEX.md：
- 新增页面 → 在对应类型的分组下插入条目
- 更新页面 → 更新摘要（如有变化）
- 删除页面 → 移除对应条目

### 什么不该记

- 合格开发者都知道的常规实现细节
- 可从代码 / git history 推断的内容
- 一次性的调试细节（除非揭示了系统性问题）
- 与项目无关的通用知识
- 纯粹的事实陈述（没有 why 或教训）

## Lint（定期维护）

当用户要求或间隔较久时，检查知识库健康度：

- 页面间是否存在矛盾（不同页面记录了冲突的信息）
- 过期内容（已被代码变更推翻的结论）
- 孤立页面（没有其他页面链接到它）
- INDEX.md 中缺失的页面或指向已删除页面的链接
- 多次提到但缺少独立页面的重要概念

发现问题时修复，并追加 lint 条目到 `wiki/log.md`。
