mirror of
https://github.com/zhayujie/chatgpt-on-wechat.git
synced 2026-06-02 09:48:22 +08:00
docs: make English the default docs language and fix link paths
This commit is contained in:
81
docs/zh/memory/context.mdx
Normal file
81
docs/zh/memory/context.mdx
Normal file
@@ -0,0 +1,81 @@
|
||||
---
|
||||
title: 短期记忆
|
||||
description: 对话上下文 — 消息管理、压缩策略和上下文操作
|
||||
---
|
||||
|
||||
对话上下文是 Agent 的短期记忆,包含当前会话中的所有消息(用户输入、Agent 回复、工具调用及结果)。合理管理上下文对于 Agent 的推理质量和成本控制至关重要。
|
||||
|
||||
## 上下文结构
|
||||
|
||||
每一轮对话由以下消息组成:
|
||||
|
||||
```
|
||||
用户消息 → Agent 思考 → 工具调用 → 工具结果 → ... → Agent 最终回复
|
||||
```
|
||||
|
||||
一轮中可能包含多次工具调用(Agent 的决策步数由 `agent_max_steps` 控制),所有工具调用和结果都会保留在上下文中,直到被压缩或裁剪。
|
||||
|
||||
## 关键配置
|
||||
|
||||
| 参数 | 说明 | 默认值 |
|
||||
| --- | --- | --- |
|
||||
| `agent_max_context_tokens` | 上下文最大 token 预算 | `50000` |
|
||||
| `agent_max_context_turns` | 上下文最大对话轮次 | `20` |
|
||||
| `agent_max_steps` | 单轮对话最大决策步数(工具调用次数) | `15` |
|
||||
|
||||
可通过 `config.json` 或对话中的 `/config` 命令修改。
|
||||
|
||||
## 压缩策略
|
||||
|
||||
当上下文超出限制时,系统会自动执行压缩以释放空间。整个过程分为多个阶段:
|
||||
|
||||
### 1. 工具结果截断
|
||||
|
||||
在每次决策循环开始前,系统会检查历史轮次中的工具调用结果。超过 **20000 字符** 的工具结果会被截断,仅保留首尾内容和截断说明。当前轮次的工具结果不受影响。
|
||||
|
||||
### 2. 轮次裁剪
|
||||
|
||||
当对话轮次超过 `agent_max_context_turns` 时:
|
||||
|
||||
- 裁剪 **最早一半** 的完整轮次(保证工具调用链的完整性)
|
||||
- 被裁剪的消息会通过 LLM 总结后**写入当天的日级记忆文件**
|
||||
- LLM 摘要完成后,同时将摘要**注入到保留消息的第一条用户消息开头**,帮助模型在后续对话中保持上下文连贯性
|
||||
- 摘要注入在后台异步完成,不阻塞当前回复;注入的摘要在下一轮对话时生效
|
||||
|
||||
### 3. Token 预算裁剪
|
||||
|
||||
裁剪轮次后,如果 token 数仍超出预算:
|
||||
|
||||
- **轮次 < 5 时**:对所有轮次进行**文本压缩** — 每轮只保留第一条用户文本和最后一条 Agent 回复,去掉中间的工具调用链
|
||||
- **轮次 ≥ 5 时**:再次裁剪**前半轮次**,被丢弃内容同样写入记忆并注入上下文摘要
|
||||
|
||||
### 4. 溢出应急处理
|
||||
|
||||
当模型 API 返回上下文溢出错误时:
|
||||
|
||||
1. 先将当前所有消息总结写入记忆
|
||||
2. 执行激进裁剪(工具结果限制 10K 字符、用户文本限制 10K、最多保留 5 轮)
|
||||
3. 如果仍然溢出,清空整个对话上下文
|
||||
|
||||
## 会话持久化
|
||||
|
||||
对话消息会持久化到本地数据库,服务重启后自动恢复。恢复策略:
|
||||
|
||||
- 恢复最近的 **`max(3, max_context_turns / 6)`** 轮对话
|
||||
- 只保留每轮的**用户文本和 Agent 最终回复**,不恢复中间工具调用链
|
||||
- 超过 **30 天**的历史会话自动清理
|
||||
|
||||
## 操作命令
|
||||
|
||||
在对话中可以使用以下命令管理上下文:
|
||||
|
||||
| 命令 | 说明 |
|
||||
| --- | --- |
|
||||
| `/context` | 查看当前上下文统计(消息数、角色分布、总字符数) |
|
||||
| `/context clear` | 清空当前会话上下文 |
|
||||
| `/config agent_max_context_tokens 80000` | 调整上下文 token 预算 |
|
||||
| `/config agent_max_context_turns 30` | 调整上下文轮次上限 |
|
||||
|
||||
<Tip>
|
||||
清空上下文后,Agent 会"忘记"之前的对话内容。被裁剪和清空的内容如果已经写入长期记忆,仍可通过记忆检索找回。
|
||||
</Tip>
|
||||
94
docs/zh/memory/deep-dream.mdx
Normal file
94
docs/zh/memory/deep-dream.mdx
Normal file
@@ -0,0 +1,94 @@
|
||||
---
|
||||
title: 梦境蒸馏
|
||||
description: Deep Dream — 从对话到永久记忆的自动蒸馏机制
|
||||
---
|
||||
|
||||
梦境蒸馏(Deep Dream)是 CowAgent 记忆系统的核心整理机制,负责将分散的天级记忆蒸馏为精炼的长期记忆,并生成梦境日记。
|
||||
|
||||
## 记忆流转
|
||||
|
||||
CowAgent 的记忆从短期到长期经历三个阶段:
|
||||
|
||||
```
|
||||
对话上下文(短期)→ 天级记忆(中期)→ MEMORY.md(长期)
|
||||
```
|
||||
|
||||
### 1. 对话 → 天级记忆
|
||||
|
||||
当对话上下文被裁剪或每日定时总结时,系统使用 LLM 将对话内容摘要为关键事件,写入当天的天级记忆文件 `memory/YYYY-MM-DD.md`。
|
||||
|
||||
触发时机:
|
||||
- **上下文裁剪** — 轮次或 token 超限时,裁剪的内容被总结写入
|
||||
- **每日定时** — 23:55 自动触发全量总结
|
||||
- **API 溢出** — 紧急保存当前对话摘要
|
||||
|
||||
### 2. 天级记忆 → MEMORY.md(蒸馏)
|
||||
|
||||
每日总结完成后,Deep Dream 自动执行蒸馏:
|
||||
|
||||
1. **读取材料** — 当前 `MEMORY.md` + 当天的天级记忆
|
||||
2. **LLM 蒸馏** — 去重、合并、修剪、提取新信息
|
||||
3. **覆写 MEMORY.md** — 输出精炼后的长期记忆
|
||||
4. **生成梦境日记** — 记录整理过程的发现和洞察
|
||||
|
||||
### 3. MEMORY.md 的作用
|
||||
|
||||
`MEMORY.md` 会被注入到每次对话的系统提示词中,让 Agent 始终了解用户的偏好、决策和关键事实。因此它必须保持精炼——Deep Dream 会控制在约 30 条以内。
|
||||
|
||||
## 蒸馏规则
|
||||
|
||||
Deep Dream 遵循以下整理规则:
|
||||
|
||||
| 操作 | 说明 |
|
||||
| --- | --- |
|
||||
| **合并提炼** | 含义相近的多条合并为一条高密度表述 |
|
||||
| **新增萃取** | 从天级记忆中提取偏好、决策、人物、经验等 |
|
||||
| **冲突更新** | 新信息与旧条目矛盾时,以新信息为准 |
|
||||
| **清理无效** | 删除临时性记录、空白条目、格式残留 |
|
||||
| **删除冗余** | 已被更精炼表述涵盖的旧条目删除 |
|
||||
|
||||
## 梦境日记
|
||||
|
||||
每次蒸馏会生成一篇梦境日记,保存在 `memory/dreams/YYYY-MM-DD.md`,用叙事风格记录:
|
||||
|
||||
- 发现了哪些重复或矛盾
|
||||
- 从天级记忆中提取了什么新洞察
|
||||
- 做了哪些清理和优化
|
||||
- 整体感受和观察
|
||||
|
||||
梦境日记可在 Web 控制台的「记忆管理 → 梦境日记」tab 中查看。
|
||||
|
||||
<Frame>
|
||||
<img src="https://cdn.link-ai.tech/doc/20260414110032.png" width="800" />
|
||||
</Frame>
|
||||
|
||||
## 手动触发
|
||||
|
||||
除了每日自动执行外,也可以在对话中手动触发:
|
||||
|
||||
```text
|
||||
/memory dream [N]
|
||||
```
|
||||
|
||||
- `N`:整理近 N 天的记忆(默认 3 天,最大 30 天)
|
||||
- 蒸馏在后台异步执行,完成后在对话中通知结果
|
||||
- Web 端通知包含可点击链接,直接跳转查看 MEMORY.md 和梦境日记
|
||||
- 无需 Agent 初始化,首次对话前即可使用
|
||||
|
||||
<Frame>
|
||||
<img src="https://cdn.link-ai.tech/doc/20260414120158.png" width="800" />
|
||||
</Frame>
|
||||
|
||||
<Tip>
|
||||
首次部署后可以手动执行一次 `/memory dream 30`,将历史天级记忆全量蒸馏到 MEMORY.md。
|
||||
</Tip>
|
||||
|
||||
## 安全机制
|
||||
|
||||
| 机制 | 说明 |
|
||||
| --- | --- |
|
||||
| **无新内容跳过** | 没有天级记忆时不执行蒸馏,避免空覆写 |
|
||||
| **输入去重** | 定时任务中,输入材料未变化时自动跳过 |
|
||||
| **异步执行** | 蒸馏在后台线程运行,不阻塞对话 |
|
||||
| **顺序保证** | 定时任务中,天级 flush 全部完成后才启动蒸馏 |
|
||||
| **禁止编造** | 提示词明确约束只能基于已有材料整理,不得推测或添加 |
|
||||
71
docs/zh/memory/index.mdx
Normal file
71
docs/zh/memory/index.mdx
Normal file
@@ -0,0 +1,71 @@
|
||||
---
|
||||
title: 长期记忆
|
||||
description: CowAgent 的长期记忆系统 — 文件持久化、自动写入与混合检索
|
||||
---
|
||||
|
||||
长期记忆保存在工作空间文件中,跨会话持久存在。Agent 在对话中通过检索工具按需加载历史记忆,也会在上下文裁剪时自动将对话摘要写入长期记忆。
|
||||
|
||||
<img src="https://cdn.link-ai.tech/doc/memory-architecture-zh.jpeg" alt="Memory Architecture" />
|
||||
|
||||
## 记忆类型
|
||||
|
||||
### 核心记忆(MEMORY.md)
|
||||
|
||||
存储在 `~/cow/MEMORY.md` 中,包含用户的长期偏好、重要决策、关键事实等不会随时间淡化的信息。Agent 可通过工具读写此文件来维护长期知识。
|
||||
|
||||
### 日级记忆(memory/YYYY-MM-DD.md)
|
||||
|
||||
存储在 `~/cow/memory/` 目录下,按日期命名(如 `2026-03-08.md`),记录每天的对话摘要和关键事件。仅在首次写入时创建,避免生成空文件。
|
||||
|
||||
### 梦境日记(memory/dreams/YYYY-MM-DD.md)
|
||||
|
||||
Deep Dream(记忆蒸馏)过程的副产物,记录每次整理的发现、去重合并操作和新洞察。存储在 `~/cow/memory/dreams/` 目录下,按日期命名。
|
||||
|
||||
## 自动写入
|
||||
|
||||
Agent 通过以下机制自动将对话内容持久化为长期记忆:
|
||||
|
||||
- **上下文裁剪时** — 当对话轮次或 token 超出配置上限时,裁剪最早一半的上下文,使用 LLM 将被裁剪的内容总结为关键信息写入当天记忆文件,并将摘要异步注入到保留的上下文中,帮助模型保持对话连贯性
|
||||
- **每日定时总结** — 每天 23:55 自动触发一次全量总结,防止低活跃日无记忆留存(内容无变化时自动跳过)
|
||||
- [梦境蒸馏(Deep Dream)](/zh/memory/deep-dream) — 每日总结完成后自动执行,将天级记忆蒸馏合并到 MEMORY.md,并生成梦境日记
|
||||
- **API 上下文溢出时** — 当模型 API 返回上下文溢出错误时,紧急保存当前对话摘要
|
||||
|
||||
所有记忆写入均在后台异步执行(LLM 总结 + 文件写入),不阻塞正常对话回复。
|
||||
|
||||
## 记忆检索
|
||||
|
||||
记忆系统支持混合检索模式:
|
||||
|
||||
- **关键词检索** — 基于 FTS5 全文索引匹配历史记忆,支持 BM25 排序
|
||||
- **向量检索** — 基于 embedding 语义相似度搜索,即使表述不同也能找到相关记忆
|
||||
|
||||
Agent 会在对话中根据需要自动触发记忆检索,将相关历史信息纳入上下文。检索结果按混合评分排序(默认向量权重 0.7、关键词权重 0.3),日级记忆会随时间衰减(半衰期 30 天),核心记忆不衰减。
|
||||
|
||||
## 相关文件
|
||||
|
||||
工作空间(默认 `~/cow`)中与记忆相关的文件:
|
||||
|
||||
| 文件 | 说明 |
|
||||
| --- | --- |
|
||||
| `AGENT.md` | Agent 的人格和行为设定 |
|
||||
| `USER.md` | 用户身份信息和偏好 |
|
||||
| `RULE.md` | 自定义规则和约束 |
|
||||
| `MEMORY.md` | 核心记忆(长期) |
|
||||
| `memory/YYYY-MM-DD.md` | 日级记忆(按需创建) |
|
||||
| `memory/dreams/YYYY-MM-DD.md` | 梦境日记(Deep Dream 自动生成) |
|
||||
|
||||
## Web 控制台
|
||||
|
||||
在 Web 控制台的记忆管理页面中,可浏览记忆文件和梦境日记,支持通过 Tab 切换查看:
|
||||
|
||||
<Frame>
|
||||
<img src="https://cdn.link-ai.tech/doc/20260414171014.png" width="800" />
|
||||
</Frame>
|
||||
|
||||
## 相关配置
|
||||
|
||||
| 参数 | 说明 | 默认值 |
|
||||
| --- | --- | --- |
|
||||
| `agent_workspace` | 工作空间路径,记忆文件存储在此目录下 | `~/cow` |
|
||||
| `agent_max_context_tokens` | 最大上下文 token 数,超出时裁剪并总结写入记忆 | `50000` |
|
||||
| `agent_max_context_turns` | 最大上下文轮次,超出时裁剪并总结写入记忆 | `20` |
|
||||
Reference in New Issue
Block a user