Log memory searcher
Records agent logs with structured markdown files. Invoke when completing complex tasks, learning new knowledge, making serious errors, when self-deemed necessary, or when user requests logging.
npx -y skills add WhizZest/agent-logger --skill log-memory-searcherAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
2 things to look at
- no licenseNo license file was found in the repository. Code published without one is not open source by default, so using it at work is a question for whoever answers licensing questions where you are.
- 0 stars0 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
What its author says it does
Copied from the file, not written here
智能日志回忆与搜索助手 - 当需要回忆过去事件、查找历史记录或整理某段时间的工作时使用。通过元数据索引快速定位相关日志文件。支持做梦模式,模拟人类做梦整理记忆的效果。支持入梦提示集管理,维护可复用的分析视角和一次性续梦提示。
The file declares its own license as MIT. That is the author’s claim about this one file, and it is not the same thing as the license GitHub reports for the repository, which is listed with the other numbers below.
SKILL.md
12.5 KB, as published. Nobody here has run it
Log Memory Searcher - 日志回忆与搜索助手
触发条件
在以下场景自动使用此 skill:
- 回忆请求:用户询问"你还记得xx吗?"、"你回忆一下xx",但你没有相关记忆或记忆不准确时
- 历史查找:用户要求查找某些事情的记录、某个功能的实现过程、某个问题的解决方案等
- 时间回顾:用户想了解某段时间做过的事情、某个项目的进展历程等
- 信息整理:需要整理分散在多天的相关工作记录时
- 做梦模式:用户说"做个梦"、"dream"、"整理一下记忆"等,触发做梦模式,模拟人类做梦整理记忆的效果
- 入梦提示管理:用户说"添加入梦提示"、"管理入梦提示"、"查看入梦提示"等,触发入梦提示集的维护
核心能力
- 📚 智能检索:基于 YAML front matter 元数据快速筛选相关日志
- 🔍 多维度搜索:支持关键词、时间范围、类型、标签等多条件组合
- 🔗 关联探索:自动追踪日志中引用的其他文档或日志
- 📊 结构化输出:按时间线或主题整理相关信息
- 🧠 做梦模式:模拟人类做梦整理记忆,无目标自由联想,发现隐藏关联,迭代提炼经验
工作流程
第一步:分析用户需求
理解用户想要回忆/查找的内容,提取关键信息:
- 关键词:涉及的技术、功能、问题等
- 时间范围:大概的时间段(如果用户提供)
- 上下文:相关的背景信息
第二步:构建搜索策略
根据需求选择合适的搜索参数:
场景 1:已知关键词
python <skill_dir>/scripts/extract-log-metadata.py \
--path <workspace>/.log/ \
--search <关键词1> <关键词2> \
--fields title description file_path created type tags
场景 2:指定时间范围
# 最近 N 天
python <skill_dir>/scripts/extract-log-metadata.py \
--path <workspace>/.log/ \
--recent-days 7 \
--fields title description file_path created
# 指定日期范围,如果不指定--to-date,则默认为当前日期
python <skill_dir>/scripts/extract-log-metadata.py \
--path <workspace>/.log/ \
--from-date 2026-03-01 \
--to-date 2026-03-31 \
--fields title description file_path created
场景 3:OR 逻辑搜索(多个同义词)
python <skill_dir>/scripts/extract-log-metadata.py \
--path <workspace>/.log/ \
--search "weread|微信读书|wxread" \
--fields title description file_path created
场景 4:混合逻辑(A或B)且 C
python <skill_dir>/scripts/extract-log-metadata.py \
--path <workspace>/.log/ \
--search "weread|微信读书" \
--search debug \
--fields title description file_path created
场景 5:浏览所有日志(无明确关键词)
python <skill_dir>/scripts/extract-log-metadata.py \
--path <workspace>/.log/ \
--fields title description file_path created type \
--limit 20
第三步:执行搜索并分析结果
- 运行脚本:执行
<skill_dir>/scripts/extract-log-metadata.py获取元数据索引 - 查看索引文件:读取脚本输出的索引文件(脚本会显示准确的文件路径)
- 初步筛选:根据标题、描述、标签判断哪些日志可能相关
- 调整策略:如果结果不理想,调整搜索参数重新执行
第四步:深入阅读相关日志
对于筛选出的相关日志:
-
读取完整内容:使用适当的工具读取日志全文
-
提取关键信息:关注问题解决过程、技术方案、经验教训等
-
"用进废退"原则:如果认为日志有用、有价值,则添加或更新 YAML front matter 元数据中的
last_accessed字段,让该日志不容易随时间而被遗忘,无用的日志则会随时间的推移而被遗忘- 获取当前真实时间(ISO 8601 format with timezone),精确到秒,不要毫秒!
- 如果存在
last_accessed字段,更新其值 - 如果不存在
last_accessed字段,添加该字段 - ⚠️ 重要:必须使用系统当前时间,不要猜测
-
评估充分性:如果已获得足够信息,可以停止;如有必要,再按以下方法追踪关联文档:
追踪关联文档方法:日志正文中可能包含
[[]]双向链接(wikilink)指向其他日志或文件。追踪步骤如下:- 提取链接:从当前日志正文找出所有
[[]]格式的 wikilink - 统一用
fd验证,不做预先分类(如未安装fd,需先安装):- Windows:
winget install sharkdp.fd - macOS:
brew install fd - Linux: 检查包管理器中的
fd-find或从 GitHub releases 下载
# 将 [[path/to/file]] 转为 fd 模式 # .md 文件:追加 .md$ 锚定到文件名末尾 # 非 .md 文件:保留原后缀 + $ # 路径分隔符用 (\\|/) 替代,跨平台兼容(匹配 \ 和 /) # 文件名前必须加 (\\|/) 锚定,避免误匹配(如 [[dream-mode]] 不应匹配 pr-dream-mode.md) # 正则安全:若链接目标含正则元字符(. ( ) [ ] + ?),需用 \ 转义(实践中 wikilink 目标很少包含这些字符) fd -p "(\\|/)path(\\|/)to(\\|/)file.md$" <workspace> --hidden --no-ignore --max-results 5 - Windows:
- 根据结果自然分流:
- 0 匹配 → 目标文件不存在,可能是概念/主题型前向引用,跳过该链接 ❌
- 1 匹配 → 链接有效且唯一,读取目标文档 ✅
- 2+ 匹配 → 歧义!立即修复源日志中的 wikilink,改为更具体的路径(如将
[[SKILL]]改为[[gh-cli/SKILL]]),确保唯一性后再继续 ⚠️
- 递归深入:对确认存在的关联文档重复上述过程,直到信息充分或无更多可追踪的文件引用
- 提取链接:从当前日志正文找出所有
第五步:整理并回答
将找到的信息整理成清晰的回答:
- 时间线:按时间顺序梳理事件发展
- 关键点:突出重要的决策、发现、解决方案
- 引用来源:注明信息来源的日志文件
- 关联信息:如果有相关文档,一并提供
使用示例
示例 1:回忆某个功能的实现
用户:"你还记得微信读书的章节提取是怎么实现的吗?"
执行:
python <skill_dir>/scripts/extract-log-metadata.py \
--path <workspace>/.log/ \
--search weread chapter extract \
--fields title description file_path created tags
分析:查看索引文件,找到相关日志如:
- "WeRead Chapter Extraction via Outline API"
- "WeRead DOM-based Content Extraction"
然后读取这些日志文件获取详细实现方案。
示例 2:查找某段时间的工作
用户:"我上个月做了哪些工作?"
执行:
python <skill_dir>/scripts/extract-log-metadata.py \
--path <workspace>/.log/ \
--from-date 2026-03-01 \
--to-date 2026-03-31 \
--fields title description file_path created type
分析:查看所有日志,按类型分类整理(learning、log、analysis 等)。
示例 3:查找问题的解决过程
用户:"之前遇到的编码问题是怎么解决的?"
执行:
python <skill_dir>/scripts/extract-log-metadata.py \
--path <workspace>/.log/ \
--search encoding decode garbled \
--fields title description file_path created tags
分析:找到相关日志,读取详细内容了解解决方案。
示例 4:追踪某个技术的发展历程
用户:"CDP 插件系统是怎么一步步开发出来的?"
执行:
python <skill_dir>/scripts/extract-log-metadata.py \
--path <workspace>/.log/ \
--search cdp plugin \
--oldest-first \
--fields title description file_path created
分析:按时间顺序(从旧到新)查看所有相关日志,梳理发展历程。
🧠 做梦模式
做梦模式模拟人类做梦时整理记忆的效果:用户不给出具体指令或目标,Agent 自主在日志间自由联想游走,发现隐藏关联,提炼经验与模式。
触发词:"做个梦"、"dream"、"整理一下记忆"
📖 完整工作流程、输出模板、关系类型参考表、约束详情:见 [[references/dream-mode.md]]
最佳实践
1. 优先使用元数据过滤
- ✅ 先用
--fields限制返回字段,减少数据量 - ✅ 用
--limit限制结果数量,避免信息过载 - ✅ 结合
--search精准定位
2. 灵活调整搜索策略
- 如果第一次搜索结果太少 → 放宽关键词或使用 OR 逻辑
- 如果搜索结果太多 → 增加关键词或使用 AND 逻辑
- 如果找不到相关内容 → 尝试同义词或相关概念
3. 善用时间范围
- 用户提到"最近" → 使用
--recent-days 7或--recent-days 30 - 用户提到具体月份 → 使用
--from-date和--to-date - 不确定时间 → 先不限制时间,从结果中判断
4. 适度探索关联内容
- 日志中提到的关联文档(双向链接) → 根据需要决定是否查看
- 技术方案的演进 → 如果当前信息已足够,不必追溯所有历史
- 问题的根因分析 → 优先查看直接相关的日志
- 重要原则:避免无限深入,当信息足够回答问题时即可停止
5. 及时更新时间戳
- 何时更新:阅读日志后认为其内容对当前任务有实质价值("用进废退"原则)
- 如何更新:获取当前真实时间(ISO 8601 format with timezone),在 YAML front matter 中更新或添加
last_accessed字段 - 重要原则:必须使用系统当前时间,严禁猜测时间
- 目的:保持元数据的准确性,便于后续按访问时间排序和筛选
- ⚠️ "修改了日志"不等于"日志有用"——修改只是操作行为,不代表日志内容本身有实质贡献。
last_accessed的判断标准是内容价值,不是是否碰过这个文件。
6. 输出格式选择
- 默认 MD 格式:适合人类阅读,结构清晰
- JSON 格式:适合程序处理,使用
--format json
注意事项
⚠️ 路径配置:
- 默认日志路径为
<workspace>/.log/ - 必须使用
--path参数指定路径 - 可以使用相对路径(相对于当前工作目录)或绝对路径
⚠️ 性能考虑:
- 日志文件较多时,先用
--limit限制数量 - 复杂搜索可以先缩小时间范围
- 避免一次性加载所有日志的完整内容
⚠️ 信息准确性:
- 元数据中的
title和description可能不够详细 - 重要信息需要阅读日志全文确认
- 注意日志的时间戳(created vs last_accessed)
⚠️ 时间戳更新:
- 阅读或编辑日志后,如果认为其内容对当前任务有实质价值,更新或添加 YAML front matter 中的
last_accessed字段 - 必须获取系统当前真实时间(ISO 8601 format with timezone)
- 严禁猜测时间或使用过期时间
附录:<skill_dir>/scripts/extract-log-metadata.py 参数速查
# 必需参数
--path, -p 指定扫描的日志目录路径
# 字段控制
--fields 指定要提取的字段(默认:title, description, file_path)
--all, -a 提取所有字段
# 搜索过滤
--search, -s 搜索关键词(支持多个,AND 逻辑)
使用 | 分隔符实现 OR 逻辑
# 时间范围
--recent-days, -r 最近 N 天
--from-date 起始日期(YYYY-MM-DD)
--to-date 结束日期(YYYY-MM-DD)
# 排序
--oldest-first 从旧到新排序(默认从新到旧)
# 数量限制
--limit, -l 限制结果数量(默认 50,0 表示不限制)
# 输出格式
--format 输出格式:md(默认)或 json
# 调试
--debug, -d 显示详细处理过程
--help 显示帮助信息
相关技能
- [[agent-logger/SKILL]]:记录新的 agent 日志
- [[everything-search/SKILL]]:根据关键词搜索文档所在路径,仅适用于Windows