# Rrr Context History

> 将当前对话精炼为概览并归档到项目 `.Codex/对话历史.md`，供新会话快速读取、恢复上下文，同时检索既有历史并维护项目认知。当用户说“存档”“更新历史”“记录一下”“归档对话”“保存上下文”，需要回顾、继续或整理以前的项目工作，一段工作告一段落，或对话形成了经验证、对项目后续可复用的新信息时使用；后两种情况无需用户显式要求，也可在任务形成最终结论后自动归档。普通问答、临时探索和未验证猜测不写入。

- Skill: `reganzed/rrr-context-history` (Agent Skill)
- Install (CLI): `npx skillmds@latest add reganzed/rrr-context-history`
- Raw SKILL.md: https://api.skillmd.com/api/skills/reganzed/rrr-context-history/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: ReganZed (https://skillmd.com/u/reganzed)
- Updated: 2026-09-22
- Page: https://skillmd.com/skills/reganzed/rrr-context-history

---


# 项目级复利上下文

## 目标

由 Codex 与 Claude Code 共同维护项目根目录下的 `.Codex/对话历史.md`，让两类价值同时增长：

- **历史复利**：长期保存逐会话精炼记录，支持按主题、关键词、类名、文件路径和日期回溯。
- **认知复利**：从历史中持续提炼当前有效的决策、经验、约束和避坑知识。

项目认知可以合并、修正和替代；有效历史不会因为被提升为认知或文件增长而自动消失。

## 核心边界

- 使用一个核心文件：`.Codex/对话历史.md`。
- 不创建独立的 `.Codex/项目上下文.md`。
- 不记录或跳转到原始 Codex 任务；Markdown 条目本身就是历史定位单位。
- 不保存聊天全文、大段代码、原始日志、密码、令牌、账号或敏感隐私。
- 不默认全文读取历史；先读项目认知和最近记录，再按需搜索。
- 除显式归档外，任务进行中不反复写历史；自动归档只在任务形成经验证、对项目有复用价值的最终结论后执行。
- 自动加载本 Skill 不等于自动获得写入权限；先根据触发模式决定只读或写入。
- `.agents/skills/rrr-context-history/SKILL.md` 是唯一正式规则源；Claude Code 适配入口的 `description` 必须与本文件完全一致，正文只负责指向本文件，不复制或改写规则。
- Codex 与 Claude Code 使用相同的触发条件、处理模式、读写边界、记录格式和完成反馈；唯一允许的结果差异是记录标题中的执行端分别写 `Codex` 或 `Claude Code`。
- `.Codex/对话历史.md` 是唯一活动历史；迁移后的 `.claude/对话历史.md` 只作指针，不得继续写入。

## 记录标题

- 新记录标题使用 `YYYY-MM-DD HH:mm｜<执行端>｜<主题>`。
- 执行端只写 `Codex` 或 `Claude Code`。
- 使用 `Asia/Shanghai` 时间，精确到分钟。旧记录缺少真实时分时保留原日期，不补造时间。

## 触发决策表

| 用户意图 | 模式 | 处理范围 | 是否写入 |
|---|---|---|---|
| 回顾、查找或继续以前的项目工作 | 自动只读检索 | 项目认知、最近记录及关键词命中条目 | 否 |
| 明确要求“记录、存档、归档、保存上下文、更新历史”，或使用 `/rrr-context-history`、`/session-log` | 显式归档 | 本阶段内容及同主题旧记录 | 是 |
| 工作阶段或会话结束，或对话形成经验证、对项目后续可复用的新信息 | 自动归档 | 本阶段新增且已验证的有效信息 | 有价值才写入 |
| 要求整理、清理、审计历史或重新提炼项目认知 | 显式全量维护 | 完整历史 | 是 |

这里的“处理范围”是：该模式触发后，为完成当前动作需要查看哪些内容
普通问答、进行中的开发、临时探索、未验证猜测、无有效新增信息，以及单纯结束回复均不触发写入。

## 读取与检索

### 新会话或恢复上下文

1. 读取“项目认知”完整内容。
2. 读取最近少量精炼会话记录。
3. 根据当前请求提取主题、自然语言别名、类名、文件名、目录名、菜单名和稳定错误文本。
4. 使用 `rg -n -i` 搜索 `.Codex/对话历史.md`。
5. 只读取命中条目和必要的相邻条目。

不要仅凭历史断言当前事实。历史与当前文件、代码或实际验证冲突时，以当前事实为准，并在下次归档时修正认知。

### 检索示例

```powershell
rg -n -i 'RenderDoc|RDC|场景重建' .Codex/对话历史.md
```

## 历史文件结构

文件不存在时按以下结构创建；存在旧结构时原地迁移，不丢弃有效记录。

```markdown
# 对话历史 · <项目名>

> 本文件由 rrr-context-history 维护。
> 项目认知保存当前有效结论；精炼会话记录保存历史过程。
> 默认按需检索旧记录，不要求每次读取全文。

## 项目认知

### 项目速览

### 当前有效的关键决策

### 可复用经验与避坑

### 用户约定与项目约束

## 精炼会话记录（最新在上）
```

## 归档流程

### 1. 确定范围

只总结自上次归档以来的新内容。写入前检查最近记录和同主题命中记录：同一阶段已完整归档则不重复写，信息不完整则补充原记录，新阶段才新增记录。

### 2. 核对事实

优先使用：

- 用户明确确认；
- 当前文件和代码；
- 实际工具输出与验证结果；
- 本轮最终结论。

不要把中间猜测写成事实。

### 3. 提取有效信息

优先保留：

- 用户的真实目标；
- 最终结论和选择理由；
- 实际修改或产出；
- 已完成的验证；
- 关键路径、类名、工具名和文件名；
- 仍需接续的事项；
- 可复用的失败原因和适用边界。

默认丢弃：

- 寒暄和重复描述；
- 被后续结论覆盖的中间推导；
- 无结果的低价值尝试；
- 可随时从代码直接读出的普通细节；
- 大段代码和原始日志。

### 4. 写入精炼会话记录

核心问题使用：

```markdown
### YYYY-MM-DD HH:mm｜<Codex 或 Claude Code>｜明确的会话主题
- 关键词：<主题、模块、工具、类名、文件名>
- 核心问题：<本次真正要解决什么>
- 结论与决策：<最终结论及关键原因>
- 实际产出：<修改、文档、命令、验证结果>
- 涉及位置：<关键文件、类、菜单或路径>
- 遗留事项：<没有则省略>
```

简短但有复用价值的结论使用：

```markdown
### YYYY-MM-DD HH:mm｜<Codex 或 Claude Code>｜<主题>
- 关键词：<关键词>
- 核心问题与结论：<核心问题> → <核心结论>
```

新记录按时间倒序插入“精炼会话记录”。标题和关键词应使用用户未来可能搜索的真实名称。同一分钟内的记录保持写入顺序；旧记录缺少真实时分时保留原日期，不补造时间。

### 5. 更新项目认知

只有会影响未来判断或行动的内容才提升到认知区：

- 已确认的项目事实；
- 当前有效的技术决策；
- 用户稳定偏好和项目约束；
- 可复用方法、失败条件和避坑规则；
- 项目级验收标准；
- 重要模块和工具的稳定定位。

根据情况执行新增、强化、修正、替代、失效或忽略：

- 当前认知只保留当前有效结论。
- 被替代的真实历史仍留在历史区。
- 纯会话状态不提升为长期认知。

## 全量历史维护

只在显式维护模式执行：

1. 读取完整历史。
2. 按主题检查重复和碎片。
3. 合并完全重叠的条目。
4. 只删除完全重复、空占位、敏感信息，以及从未影响实际工作的错误猜测；判断不清时保留。
5. 为真实但过时的历史建立替代关系。
6. 从历史补充或修正项目认知。
7. 验证清理前后的有效信息没有减少。

全量维护的目的不是缩短文件，而是提升信息密度和可靠性。

## Skill 自迭代

默认自动迭代历史内容和项目认知，不自动改写 `SKILL.md` 的触发范围、安全边界、权限或核心原则。

真实使用反复暴露同一规则问题时，按需创建并读取 `references/iteration-notes.md`：

```markdown
# rrr-context-history 迭代记录

## 候选：<问题名称>
- 现象：
- 影响：
- 出现次数：
- 相关历史：a
- 建议修改：
- 状态：候选 / 已确认 / 已应用
```

普通归档不创建或读取该文件。用户要求优化 Skill，或同一问题重复出现时，才评估候选并修改 `SKILL.md`。

## 完成反馈

- 只读检索：说明命中的历史结论及对应 Markdown 位置。
- 归档：简要说明新增或更新了哪条记录、是否更新项目认知。
- 无有效新增：说明未写入，避免制造重复历史。

