`letta`
1
# `letta`
2
3
## 仓库定位
4
5
`letta` 是平台型 agent 系统。和本任务相关的主线至少有四层:`AgentState.memory/blocks` 的核心记忆、`MessageManager + ConversationManager` 的会话上下文、`ArchiveManager + PassageManager` 的长期检索记忆,以及可选的 git-backed memory。
6
7
## 源码架构树
8
9
```text
10
letta
11
├─ schemas/
12
│ ├─ agent.py
13
│ ├─ memory.py
14
│ ├─ message.py
15
│ ├─ conversation.py
16
│ └─ passage.py
17
├─ prompts/prompt_generator.py
18
├─ services/
19
│ ├─ context_window_calculator/
20
│ ├─ message_manager.py
21
│ ├─ conversation_manager.py
22
│ ├─ archive_manager.py
23
│ ├─ passage_manager.py
24
│ ├─ block_manager.py
25
│ └─ block_manager_git.py
26
├─ services/memory_repo/*
27
└─ server/server.py
28
```
29
30
## 关键结论摘要
31
32
- `letta` 的 system prompt 是 `Memory.compile()` 与 `PromptGenerator` 共同生成,再由 `ContextWindowCalculator` 做 token 级拆解和统计。
33
- 会话上下文的真实顺序由 `conversation_messages` 关系表维护,conversation 创建或分叉时会重建并持久化 system message。
34
- 长期记忆由 `Archive` + `Passage` 实现;这条路径与 core blocks memory 并行存在。
35
- 在配置允许时,`BlockManager` 会切换成 `GitEnabledBlockManager`,把 memory 写到 memfs/git repo,再同步 Postgres cache。
36
37
## 专题文档
38
39
- [01-架构与范围](./letta/01-%E6%9E%B6%E6%9E%84%E4%B8%8E%E8%8C%83%E5%9B%B4.md)
40
- [02-context管理](./letta/02-context%E7%AE%A1%E7%90%86.md)
41
- [03-memory实现](./letta/03-memory%E5%AE%9E%E7%8E%B0.md)
42
- [04-存储与状态](./letta/04-%E5%AD%98%E5%82%A8%E4%B8%8E%E7%8A%B6%E6%80%81.md)
43
- [05-调用链、压缩与边界](./letta/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)
44
45
## 关键源码索引
46
47
- `letta/schemas/agent.py:67-206`
48
- `letta/schemas/memory.py:68-688`
49
- `letta/prompts/prompt_generator.py:22-181`
50
- `letta/services/context_window_calculator/context_window_calculator.py:167-249`
51
- `letta/services/conversation_manager.py:222-320`
52
- `letta/services/message_manager.py:122-1262`
53
- `letta/services/block_manager_git.py:30-485`
54
- `letta/services/passage_manager.py:543-640`
55
- `letta/services/archive_manager.py:502-542`
56
- `letta/server/server.py:426-446`
57
58
## 阅读提示
59
60
先看 `02-context管理`,再看 `03-memory实现`。`letta` 里最容易混淆的是 core blocks memory、archive/passage 和记忆仓库 git 路径,它们是并行层,不是同一个对象的三种叫法。
61