活动回顾
unlistedby InfinityBqwq
本地记录打开过的笔记,归并成一份紧凑日志,侧边栏回顾上次/最近/本周/今年,可复制为 AI 提示词
Updated 1mo ago
activity-log 活动回顾
一个本地优先的 Obsidian 插件:自动记录你打开过的笔记,归并成一份紧凑日志,并在侧边栏以「上次打开 / 最近 7 天 / 本周 / 本月 / 今年」的方式回顾你的活动,可一键复制成 AI 提示词。
全程本地运行,不调用任何 AI API,也不向外部发送数据。
功能特性
- 自动记录:监听文件打开事件,按「文件 + 当天」去重写入单一 JSON 日志(
activity-log.json),日志格式紧凑,便于直接喂给 AI 总结。 - 活动回顾面板:侧边栏展示五个时间分区
上次打开(带上一会话开始时间,默认展开)最近 7 天(默认展开)本周(默认折叠)本月(默认折叠)今年(默认折叠) 点击分区标题即可展开/收起。
- 项目分组:记录按顶层文件夹(项目)分组展示,如「回到马克思」「前端学习记录」作为标题。项目默认只显示文件夹,点击标题展开查看具体文件(项目内相对路径);项目按最近活动排序,最上方即最近打开的项目。
- 过去快照,不实时刷新:面板只反映打开 Obsidian 时的状态,不会随着你打开文件实时跳动;需要时点击「刷新」手动更新。实时更新会让回顾失去意义。
- 文件夹屏蔽:默认忽略
06_DRIFT、10_Debug、docs、scripts等噪音目录,打开这些目录下的文件不会产生记录;隐藏目录(.obsidian、.trash等)始终排除。可在设置中自定义。 - 删除记录:悬停文件行出现
×删除该文件的记录;项目标题悬停出现×(带确认弹窗)删除整个项目的记录;工具栏「清空」一键清空全部。 - 复制为 AI 提示词:把日志聚合成紧凑的中文 Markdown(含五个时间分区与统计),一键复制,粘贴给任意 AI 即可总结你最近在做什么。
- 会话边界智能判定:以应用重启划分会话(插件重载不视为新会话),空会话不会挤占「上次打开」的真实记录。
安装
手动安装
- 下载最新 release 中的
main.js、manifest.json、styles.css。 - 放入你的仓库
.obsidian/plugins/activity-log/目录。 - 在 Obsidian 设置 → 第三方插件中启用「活动回顾」。
源码构建
git clone https://github.com/InfinityBqwq/activity-log.git
cd activity-log
npm install
npm run build
将构建产物放入 .obsidian/plugins/activity-log/ 并启用。
使用说明
- 启用插件后,右侧边栏会自动打开「活动回顾」面板;也可通过命令面板或 Ribbon 图标随时打开。
- 打开面板后,顶部有「刷新」按钮用于手动更新,以及「清空」按钮用于删除全部记录。
- 项目(文件夹)默认折叠,点击项目标题展开查看该文件夹下打开过的文件;点击文件条目可在 Obsidian 中打开对应笔记。
设置项
| 设置 | 说明 | 默认值 |
|---|---|---|
| 忽略的文件夹 | 这些文件夹下的笔记打开不记录,每行一个,支持子路径 | 06_DRIFT、10_Debug、docs、scripts |
| 记录的扩展名 | 仅记录这些扩展名的文件,逗号分隔 | md,canvas |
| 保留天数 | 日志只保留最近 N 天,0 为不裁剪 | 180 |
| 停留时长阈值(秒) | 打开不足该秒数不记录,0 关闭 | 3 |
| 启动宽限(秒) | 启动后 N 秒内自动恢复的标签页不算活动 | 15 |
| 会话间隔(分钟) | 距上次记录超过 N 分钟视为新会话(兜底判定) | 15 |
数据与隐私
- 所有数据保存在插件目录下的
activity-log.json,仅含打开过的文件路径、日期与次数,不读取笔记正文。 - 不调用任何网络 API,纯本地运行。
- 日志可随时通过面板或直接删除该文件来清理。
开发
npm install # 安装依赖(esbuild / typescript / obsidian API)
npm run dev # 监听模式构建
npm run build # 类型检查 + 生产构建(产出 main.js)
源码结构:
src/main.ts # 插件入口:事件监听、命令、视图注册
src/logger.ts # 记录器:过滤、去重、会话判定、持久化、删除
src/view.ts # 活动回顾面板(ItemView)
src/format.ts # 聚合为 AI 提示词文本
src/settings.ts # 设置页
src/time.ts # 时间窗口计算
许可
MIT
For plugin developers
Search results and similarity scores are powered by semantic analysis of your plugin's README. If your plugin isn't appearing for searches you'd expect, try updating your README to clearly describe your plugin's purpose, features, and use cases.