OpenClaw 日志记忆:memory/YYYY-MM-DD.md

目录

    • 摘要
    • [1. 引言 - 为什么需要每日日志?](#1. 引言 - 为什么需要每日日志?)
      • [1.1 每日日志的作用](#1.1 每日日志的作用)
      • [1.2 每日日志 vs 长期记忆](#1.2 每日日志 vs 长期记忆)
      • [1.3 日志系统架构](#1.3 日志系统架构)
    • [2. 日志文件结构](#2. 日志文件结构)
      • [2.1 标准日志模板](#2.1 标准日志模板)
      • [2.2 日志内容分类](#2.2 日志内容分类)
      • [2.3 日志写入时机](#2.3 日志写入时机)
    • [3. 日志写入规范](#3. 日志写入规范)
      • [3.1 写入原则](#3.1 写入原则)
      • [3.2 任务状态标记](#3.2 任务状态标记)
      • [3.3 时间戳使用](#3.3 时间戳使用)
    • [4. 日志读取与查询](#4. 日志读取与查询)
      • [4.1 读取当天日志](#4.1 读取当天日志)
      • [4.2 读取历史日志](#4.2 读取历史日志)
      • [4.3 语义搜索日志](#4.3 语义搜索日志)
      • [4.4 日志查询场景](#4.4 日志查询场景)
    • [5. 日志维护策略](#5. 日志维护策略)
      • [5.1 自动归档流程](#5.1 自动归档流程)
      • [5.2 归档目录结构](#5.2 归档目录结构)
      • [5.3 日志清理规则](#5.3 日志清理规则)
    • [6. 实战案例](#6. 实战案例)
      • [6.1 案例一:任务跟踪](#6.1 案例一:任务跟踪)
      • [6.2 案例二:问题追踪](#6.2 案例二:问题追踪)
      • [6.3 案例三:决策追溯](#6.3 案例三:决策追溯)
    • [7. 日志与其他系统的协作](#7. 日志与其他系统的协作)
      • [7.1 日志 + MEMORY.md](#7.1 日志 + MEMORY.md)
      • [7.2 日志 + 语义搜索](#7.2 日志 + 语义搜索)
      • [7.3 日志 + Heartbeat](#7.3 日志 + Heartbeat)
    • [8. 自动化日志管理](#8. 自动化日志管理)
      • [8.1 自动创建日志](#8.1 自动创建日志)
      • [8.2 自动归档脚本](#8.2 自动归档脚本)
      • [8.3 日志摘要生成](#8.3 日志摘要生成)
    • [9. 常见问题与解决](#9. 常见问题与解决)
    • [10. 总结](#10. 总结)
      • [10.1 核心要点](#10.1 核心要点)
      • [10.2 最佳实践清单](#10.2 最佳实践清单)
      • [10.3 下一步](#10.3 下一步)
    • 参考资料

摘要

本文详细介绍 OpenClaw 的每日日志系统 memory/YYYY-MM-DD.md。从日志文件结构、写入时机、内容规范到自动化管理,全面解析如何通过每日日志实现 AI Agent 的短期记忆能力。通过实际案例演示日志的创建、更新、查询流程,帮助开发者构建具有时间连续性的智能应用,实现任务跟踪和上下文恢复。📅


1. 引言 - 为什么需要每日日志?

1.1 每日日志的作用

作用 说明 示例
任务跟踪 记录当天完成的任务 完成第41篇文章
上下文恢复 帮助 AI 恢复之前的工作状态 昨天写到哪了?
问题记录 记录遇到的问题和解决方案 编译错误已修复
决策追溯 记录临时决策的原因 为什么选择这个方案
进度监控 追踪长期任务的进展 项目完成度 40%

1.2 每日日志 vs 长期记忆

生命周期
记忆层次
提取重要信息
归档
定期清理
当天
7天内
超过7天
长期记忆

MEMORY.md
每日日志

YYYY-MM-DD.md
历史日志
删除
活跃使用
可检索
归档/删除

1.3 日志系统架构

复制代码
memory/
├── 2026-04-13.md    # 今天的日志
├── 2026-04-12.md    # 昨天的日志
├── 2026-04-11.md    # 前天的日志
├── ...
└── 2026-03-01.md    # 更早的日志

2. 日志文件结构

2.1 标准日志模板

markdown 复制代码
# 2026-04-13 工作记录

## 完成的任务

### 1. [任务名称]
- 具体内容
- 完成状态
- 相关链接

### 2. [任务名称]
- 具体内容
- 完成状态

## 进行中的任务
- 任务A:进度 60%
- 任务B:进度 30%

## 重要决策
- 决策内容
- 决策原因

## 遇到的问题
- 问题描述
- 解决方案

## 明日计划
- [ ] 待办事项1
- [ ] 待办事项2

## 备注
- 其他需要记录的信息

2.2 日志内容分类

分类 内容 示例
完成的任务 当天完成的工作 写完第41篇文章
进行中的任务 未完成的任务进度 文章写到一半
重要决策 临时决策及原因 选择方案A而非B
遇到的问题 问题和解决方案 编译错误已修复
明日计划 下一步工作安排 继续写第42篇
备注 其他信息 用户心情不错

2.3 日志写入时机

任务完成
问题遇到
决策做出
会话结束
用户要求
事件发生
事件类型
写入完成任务
写入问题和解决方案
写入决策
写入会话摘要
写入指定内容
更新日志文件


3. 日志写入规范

3.1 写入原则

原则 说明 正确示例 错误示例
及时性 事件发生后立即记录 任务完成后马上写 第二天才记录
准确性 信息准确无误 "完成第41篇文章" "写了篇文章"
简洁性 提取关键信息 "修复编译错误:缺少依赖" "遇到了一个编译错误,找了半天..."
可追溯 包含必要上下文 "选择方案A(性能更好)" "选择方案A"

3.2 任务状态标记

markdown 复制代码
## 任务状态标记规范

✅ 已完成
🔄 进行中
⏳ 待开始
❌ 已取消
⚠️ 有问题

3.3 时间戳使用

markdown 复制代码
## 带时间戳的日志

### 2026-04-13 09:00
- 开始撰写第41篇文章

### 2026-04-13 11:30
- 完成文章摘要和引言

### 2026-04-13 14:00
- 用户反馈:需要调整结构
- 已按要求修改

4. 日志读取与查询

4.1 读取当天日志

python 复制代码
# AI 内部操作
read("memory/2026-04-13.md")

4.2 读取历史日志

python 复制代码
# 读取昨天的日志
read("memory/2026-04-12.md")

# 读取最近7天的日志
for i in range(7):
    date = today - timedelta(days=i)
    read(f"memory/{date.strftime('%Y-%m-%d')}.md")

4.3 语义搜索日志

python 复制代码
# 搜索特定内容
memory_search(
    query="用户反馈",
    maxResults=5
)

4.4 日志查询场景

场景 查询方式
今天做了什么 读取当天日志
昨天写到哪了 读取昨天日志
最近的任务进度 读取最近7天日志
某个问题的解决方案 语义搜索
某个决策的原因 语义搜索

5. 日志维护策略

5.1 自动归档流程







每日检查
日志超过7天?
保留
有重要内容?
提取到MEMORY.md
归档到archive/
超过30天?
删除
保留归档

5.2 归档目录结构

复制代码
memory/
├── 2026-04-13.md        # 最近7天
├── 2026-04-12.md
├── ...
├── archive/              # 归档目录
│   ├── 2026-03/
│   │   ├── 2026-03-01.md
│   │   ├── 2026-03-02.md
│   │   └── ...
│   └── 2026-02/
│       └── ...

5.3 日志清理规则

规则 时间 操作
活跃期 0-7天 保留原位置
归档期 7-30天 移动到archive/
清理期 超过30天 删除(重要内容已提取)

6. 实战案例

6.1 案例一:任务跟踪

场景:用户正在撰写系列文章,需要跟踪进度

日志记录

markdown 复制代码
# 2026-04-13 工作记录

## 完成的任务

### 1. 撰写第41篇文章:记忆系统
- ✅ 完成摘要和引言
- ✅ 完成 MEMORY.md 章节
- ✅ 完成语义搜索章节
- ✅ 完成实战案例
- 📝 文章下载链接:https://...

## 进行中的任务
- 第42篇文章:日志记忆系统
  - 进度:0%
  - 预计明天开始

## 项目进度
- 总目标:100篇文章
- 已完成:41篇
- 完成率:41%

第二天恢复

复制代码
用户:昨天写到哪了?

AI:(读取 memory/2026-04-12.md)
昨天你完成了第41篇文章(记忆系统),
当前项目进度是41/100,完成率41%。
今天应该继续写第42篇:日志记忆系统。

6.2 案例二:问题追踪

场景:用户遇到问题,需要记录解决方案

日志记录

markdown 复制代码
# 2026-04-13 工作记录

## 遇到的问题

### 问题:Gateway 启动失败
- **现象**:`openclaw gateway start` 报错
- **原因**:端口 18800 被占用
- **解决方案**:
  1. 检查端口占用:`lsof -i :18800`
  2. 终止占用进程:`kill -9 <PID>`
  3. 重新启动:`openclaw gateway start`
- **状态**:✅ 已解决

## 参考资料
- Gateway 文档:https://docs.openclaw.ai/gateway

后续查询

复制代码
用户:之前 Gateway 启动失败是怎么解决的?

AI:(搜索 memory/)
根据 2026-04-13 的日志,问题是端口 18800 被占用。
解决方案是:
1. 检查端口占用:lsof -i :18800
2. 终止占用进程:kill -9 <PID>
3. 重新启动:openclaw gateway start

6.3 案例三:决策追溯

场景:用户需要回顾之前的决策

日志记录

markdown 复制代码
# 2026-04-10 工作记录

## 重要决策

### 决策:文章采用 5 阶段结构
- **背景**:需要规划 100 篇技术文章
- **选项**:
  - A:按主题分类(10个主题各10篇)
  - B:按难度递进(5个阶段各20篇)
  - C:按功能模块(20个模块各5篇)
- **选择**:方案 B
- **原因**:
  1. 由浅入深更符合学习曲线
  2. 读者可以按阶段学习
  3. 便于后续扩展
- **时间**:2026-04-10 14:30

后续追溯

复制代码
用户:我们为什么选择 5 阶段结构?

AI:(搜索 memory/)
根据 2026-04-10 的决策记录,选择 5 阶段结构的原因是:
1. 由浅入深更符合学习曲线
2. 读者可以按阶段学习
3. 便于后续扩展
当时考虑了 3 个方案,最终选择了方案 B。

7. 日志与其他系统的协作

7.1 日志 + MEMORY.md

提取规则
提取重要信息
提供长期记忆
每日日志
MEMORY.md
用户偏好
重要决策
项目上下文

7.2 日志 + 语义搜索

python 复制代码
# 搜索日志中的特定内容
results = memory_search(
    query="Gateway 启动失败",
    maxResults=3
)

# 结果可能来自多个日志文件
# memory/2026-04-13.md
# memory/2026-04-10.md
# memory/2026-04-05.md

7.3 日志 + Heartbeat

markdown 复制代码
# HEARTBEAT.md

# 心跳检查时更新日志

## 检查项
- [ ] 更新今日日志
- [ ] 检查是否有遗漏的任务
- [ ] 记录当前进度

8. 自动化日志管理

8.1 自动创建日志

python 复制代码
# 每日自动创建日志文件
import datetime

def create_daily_log():
    today = datetime.date.today()
    log_path = f"memory/{today.strftime('%Y-%m-%d')}.md"
    
    template = f"""# {today.strftime('%Y-%m-%d')} 工作记录

## 完成的任务
(待记录)

## 进行中的任务
(待记录)

## 明日计划
(待记录)
"""
    
    write(log_path, template)

8.2 自动归档脚本

bash 复制代码
#!/bin/bash
# archive_old_logs.sh

# 将超过7天的日志移动到归档目录
find memory/ -name "*.md" -mtime +7 -exec mv {} memory/archive/ \;

# 删除超过30天的归档
find memory/archive/ -name "*.md" -mtime +30 -delete

8.3 日志摘要生成

python 复制代码
# 从日志中提取摘要
def generate_summary(log_content):
    """从日志内容中提取关键信息"""
    summary = {
        "completed_tasks": extract_tasks(log_content, "完成的任务"),
        "in_progress": extract_tasks(log_content, "进行中的任务"),
        "decisions": extract_decisions(log_content),
        "problems": extract_problems(log_content)
    }
    return summary

9. 常见问题与解决

Q1:日志文件太多怎么办?

解决方案

  1. 启用自动归档
  2. 定期清理旧日志
  3. 只保留重要内容的摘要

Q2:如何避免日志内容重复?

解决方案

  1. 使用时间戳区分
  2. 同类任务合并记录
  3. 定期整理和去重

Q3:日志内容太长怎么办?

解决方案

  1. 只记录关键信息
  2. 使用链接引用详细内容
  3. 定期提取摘要到 MEMORY.md

Q4:如何保护日志中的敏感信息?

解决方案

  1. 不记录敏感个人信息
  2. 使用占位符替代敏感数据
  3. 限制日志文件访问权限

10. 总结

10.1 核心要点

要点 说明
及时记录 事件发生后立即写入日志
结构清晰 使用标准模板组织内容
定期维护 归档旧日志,提取重要信息
语义检索 使用 memory_search 快速定位

10.2 最佳实践清单

  • 每天创建新的日志文件
  • 及时记录完成的任务
  • 记录问题和解决方案
  • 记录重要决策及原因
  • 定期归档旧日志
  • 提取重要信息到 MEMORY.md

10.3 下一步

  • 第43篇:OpenClaw memory_search:语义搜索实战
  • 第44篇:OpenClaw 记忆维护:自动整理与归档
  • 第45篇:OpenClaw 上下文管理:Token 优化策略

参考资料

相关推荐
only_Klein7 小时前
openclaw pairing required
openclaw
沪漂阿龙7 小时前
大模型全链路追踪怎么做?从用户提问到模型回答,一次请求到底经历了什么
人工智能·日志
YJlio8 小时前
OpenClaw v2026.4.9 更新解析:Memory Dreaming、Control UI、安全修复、插件依赖与升级避坑
gateway·memory·自动化运维·版本更新·ai agent·openclaw·dreaming
AI小鱼哥9 小时前
【把Claude Code和Hermes搞在一起是个什么体验】
claude code·openclaw·养龙虾·hermes·cowork
YJlio10 小时前
OpenClaw v2026.4.12 入门实战:核心概念、运行机制、部署流程与常见问题排查
开源项目·环境搭建·配置文件·技术教程·运行机制·日志排查·openclaw
YJlio10 小时前
OpenClaw v2026.4.11 更新解析:Dreaming 导入、结构化 WebChat、视频生成增强、Ollama 缓存与升级避坑
自动化运维·视频生成·版本更新·ai agent·openclaw·dreaming·memory-wiki
YJlio10 小时前
OpenClaw v2026.4.10 更新解析:Active Memory、Codex Provider、本地 MLX 语音与升级验证指南
memory·codex·版本更新·ai agent·active·openclaw·本地语音 自动化运维
YJlio10 小时前
OpenClaw v2026.4.5 更新解析:视频/音乐生成、ComfyUI 工作流、多语言控制台、Memory Dreaming 与升级避坑
memory·自动化运维·comfyui·视频生成·版本更新·ai agent·openclaw
二流子学程序1 天前
深度解析 Hermes Agent GEPA 自我进化引擎:让 AI Agent 学会“自我迭代“
openclaw·hermes agent