`codex`
1
# `codex`
2
3
## 仓库定位
4
5
`codex` 里的 `context / memory` 相关实现主要分成三层:`core` 负责每个 turn 的可见上下文组装,`state` 负责 thread / memory 的 SQLite 持久状态,`core/memories` 负责 stage1 / phase2 memory 启动管线与文件系统同步。
6
7
## 源码架构树
8
9
```text
10
codex
11
├─ codex-rs/core/src/codex.rs
12
│ ├─ build_initial_context()
13
│ ├─ record_context_updates_and_set_reference_context_item()
14
│ └─ run_turn()
15
├─ codex-rs/core/src/context_manager/
16
│ ├─ history.rs
17
│ ├─ normalize.rs
18
│ └─ updates.rs
19
├─ codex-rs/core/src/memories/
20
│ ├─ start.rs
21
│ ├─ phase1.rs
22
│ ├─ phase2.rs
23
│ ├─ storage.rs
24
│ └─ prompts.rs
25
├─ codex-rs/state/src/runtime/
26
│ ├─ threads.rs
27
│ └─ memories.rs
28
└─ codex-rs/core/src/message_history.rs
29
```
30
31
## 关键结论摘要
32
33
- `ContextManager` 保存的不是原始聊天记录,而是一个会规范化、截断、回滚修剪的 turn 历史容器。
34
- turn 级 context 是“首次全量注入,之后按基线做增量更新”,基线由 `reference_context_item` 决定。
35
- `memory` 不是单一长期库,而是 startup 时跑起来的 phase1 / phase2 管线:先抽取 stage1 输出,再做全局 consolidation,并同步到 `codex_home/memories/`。
36
- `state` 与 `history` 是分层的:SQLite 负责 thread / job / stage1 outputs 等结构化状态,`history.jsonl` 则是全局 append-only 消息历史。
37
38
## 专题文档
39
40
- [01-架构与范围](./codex/01-%E6%9E%B6%E6%9E%84%E4%B8%8E%E8%8C%83%E5%9B%B4.md)
41
- [02-context管理](./codex/02-context%E7%AE%A1%E7%90%86.md)
42
- [03-memory实现](./codex/03-memory%E5%AE%9E%E7%8E%B0.md)
43
- [04-存储与状态](./codex/04-%E5%AD%98%E5%82%A8%E4%B8%8E%E7%8A%B6%E6%80%81.md)
44
- [05-调用链、压缩与边界](./codex/05-%E8%B0%83%E7%94%A8%E9%93%BE%E3%80%81%E5%8E%8B%E7%BC%A9%E4%B8%8E%E8%BE%B9%E7%95%8C.md)
45
46
## 关键源码索引
47
48
- `codex-rs/core/src/codex.rs:1654-2091`
49
- `codex-rs/core/src/codex.rs:3744-3991`
50
- `codex-rs/core/src/codex.rs:6146-6795`
51
- `codex-rs/core/src/context_manager/history.rs:34-452`
52
- `codex-rs/core/src/context_manager/updates.rs:14-224`
53
- `codex-rs/core/src/memories/mod.rs:3-120`
54
- `codex-rs/core/src/memories/phase1.rs:81-211`
55
- `codex-rs/core/src/memories/phase2.rs:41-160`
56
- `codex-rs/state/src/runtime.rs:91-216`
57
- `codex-rs/state/src/runtime/memories.rs:32-544`
58
59
## 阅读提示
60
61
先读 `02-context管理`,再读 `03-memory实现`。`codex` 最容易混淆的不是“有没有 memory”,而是 turn context、thread history、memory pipeline 和 SQLite state 其实是四个不同层次。
62