记忆与上下文
记忆与上下文
OpenClaw 通过其网关控制平面跨会话维护对话上下文。这使得代理能够记住之前的对话,实现自然的上下文交互。
记忆工作原理
OpenClaw 的记忆系统内置于网关架构中:
用户消息 → 网关 → 会话管理器 → 代理(带上下文)
↓
上下文存储
(对话历史)
网关自动:
- 跟踪对话会话
- 维护消息历史
- 向代理提供上下文
- 跨重启持久化会话
会话管理
查看活动会话
列出所有活动的对话会话:
openclaw session list
查看会话详情
获取特定会话的详细信息:
openclaw session info <会话ID>
重置会话
开始新对话(清除上下文):
openclaw session reset <会话ID>
或在聊天中使用 /new 或 /reset 命令:
/reset
上下文配置
配置代理维护的上下文量:
{
"context": {
"maxMessages": 100,
"maxTokens": 8000,
"summarization": true,
"summaryThreshold": 50
}
}
配置选项
- maxMessages: 上下文中保留的最大消息数
- maxTokens: 上下文窗口中包含的最大令牌数
- summarization: 启用旧消息的自动摘要
- summaryThreshold: 在 N 条消息后进行摘要
上下文策略
滑动窗口
仅保留最近的消息:
{
"context": {
"strategy": "sliding-window",
"maxMessages": 20
}
}
摘要
自动摘要对话的旧部分:
{
"context": {
"strategy": "summarization",
"summarization": true,
"summaryThreshold": 50,
"summaryModel": "claude-sonnet-4-6"
}
}
混合
结合最近的消息和摘要:
{
"context": {
"strategy": "hybrid",
"recentMessages": 20,
"summarizeOlder": true
}
}
多会话上下文
OpenClaw 可以为不同的渠道或用户维护单独的上下文:
{
"sessions": {
"isolation": "per-channel",
"persistence": true,
"ttl": 86400
}
}
隔离模式
- per-channel: 每个通信渠道单独的上下文
- per-user: 每个用户单独的上下文
- per-conversation: 每个对话线程单独的上下文
- global: 所有交互共享上下文
持久化记忆
启用持久化
将对话历史存储到磁盘:
{
"memory": {
"persistence": {
"enabled": true,
"path": "~/.openclaw/sessions",
"format": "json"
}
}
}
备份会话
备份对话历史:
openclaw session backup --output ./backup.json
恢复会话
从备份恢复:
openclaw session restore --input ./backup.json
多代理路由中的上下文
使用多代理路由时,每个代理维护自己的上下文:
{
"routing": {
"whatsapp:+1234567890": {
"agent": "personal",
"context": {
"maxMessages": 50
}
},
"slack:#work": {
"agent": "work",
"context": {
"maxMessages": 100,
"summarization": true
}
}
}
}
记忆命令
在聊天中使用这些命令管理上下文:
/status- 查看当前会话状态和上下文大小/new或/reset- 清除上下文并重新开始/verbose on- 在响应中显示上下文信息
示例:
/status
当前会话: abc123
上下文中的消息: 45
使用的令牌: 3,200
上下文优化
减少上下文大小
为了更快的响应和更低的成本:
{
"context": {
"maxMessages": 20,
"maxTokens": 4000,
"compression": true
}
}
为复杂任务增加上下文
对于需要更多历史的任务:
{
"context": {
"maxMessages": 200,
"maxTokens": 16000,
"summarization": true
}
}
隐私与安全
清除敏感数据
从上下文中删除敏感信息:
openclaw session clear <会话ID>
自动过期
自动使旧会话过期:
{
"sessions": {
"ttl": 86400,
"autoCleanup": true,
"cleanupInterval": 3600
}
}
加密
加密存储的会话数据:
{
"memory": {
"persistence": {
"enabled": true,
"encryption": true,
"encryptionKey": "env:OPENCLAW_ENCRYPTION_KEY"
}
}
}
最佳实践
- 设置适当的上下文限制:在记忆和性能之间取得平衡
- 使用摘要:压缩旧对话以节省令牌
- 启用持久化:不要丢失重要的对话
- 隔离上下文:使用按渠道或按用户隔离以保护隐私
- 定期清理:删除旧会话以节省存储空间
- 加密敏感数据:在生产环境中启用加密
故障排除
上下文过大
如果响应缓慢或成本高昂:
{
"context": {
"maxMessages": 30,
"maxTokens": 4000
}
}
丢失上下文
如果代理不记得之前的消息:
# 检查会话状态
openclaw session info <会话ID>
# 验证持久化已启用
openclaw config get memory.persistence.enabled
内存泄漏
如果内存使用随时间增长:
{
"sessions": {
"ttl": 86400,
"autoCleanup": true,
"maxSessions": 1000
}
}