Mnemosyne:8⭐的本地代码历史工具,捕捉 Git 之外的每一次保存
Mnemosyne:捕捉 Git 之外的每一次保存
| 项目 | Mnemosyne |
|---|---|
| 语言 | Rust |
| Stars | 8 |
| 许可证 | Apache 2.0 |
| GitHub | alessandrobrunoh/Mnemosyne |
痛点:Git 提交之间的空白
日常开发中,我们习惯性地依赖 Git 来管理代码版本。但 Git 的粒度是「提交」——每次 git commit 才创建一个检查点。问题在于:
- 两次提交之间可能经过数小时,期间大量修改无法回溯
- 实验性代码被覆盖后想找回,却不在任何提交里
- IDE 的 Local History 功能好用,但换编辑器就失效
Mnemosyne 正是为填补这个空白而生。
核心功能
自动快照
Mnemosyne 以守护进程方式运行,监听文件系统变化。每次保存文件,它自动创建快照——无需手动提交,零干扰。
# 启动守护进程
mnemosyne daemon
# 监控指定目录
mnemosyne watch /path/to/project
高度去重存储
采用内容寻址存储(类似 Git 的对象模型),相同内容只存一份。即使频繁保存,磁盘占用也控制在合理范围。
全文搜索
# 搜索包含特定代码的历史版本
mnemosyne search "function calculateTotal"
# 按文件路径过滤
mnemosyne search "useState" --path "*.tsx"
即时恢复
# 查看文件历史
mnemosyne log src/components/Button.tsx
# 恢复到 10 分钟前的版本
mnemosyne restore src/components/Button.tsx --ago 10m
# 恢复到指定时间点
mnemosyne restore src/components/Button.tsx --at "2026-04-21 10:30:00"
与 Git 的关系
| 特性 | Git | Mnemosyne |
|---|---|---|
| 粒度 | 提交级别 | 保存级别 |
| 触发方式 | 手动 | 自动 |
| 用途 | 版本发布、协作 | 本地开发保护 |
| 存储位置 | .git 目录 | ~/.local/share/mnemosyne |
| 保留策略 | 永久 | 可配置自动清理 |
两者不是竞争关系,而是互补。Mnemosyne 保护开发过程中的每一个瞬间,Git 管理有意义的版本节点。
技术亮点
- Rust 编写:性能优秀,内存安全
- TUI 界面:基于
ratatui的终端交互界面 - 守护进程架构:后台静默运行,不影响工作流程
- 跨平台:支持 Linux、macOS、Windows
使用场景
| 场景 | Mnemosyne 如何解决 |
|---|---|
| 重构后测试失败想回退 | restore 秒级恢复 |
| 想对比 30 分钟前的实现 | diff 查看变更 |
| 找回被覆盖的实验代码 | search 全文检索 |
| 意外删除文件 | restore 完整恢复 |
| 回顾代码演进过程 | log 查看时间线 |
安装
# 从源码构建
git clone https://github.com/alessandrobrunoh/Mnemosyne.git
cd Mnemosyne
cargo build --release
# 二进制将位于 target/release/mnemosyne
个人评价
| 维度 | 评分 | 说明 |
|---|---|---|
| 创新性 | ⭐⭐⭐⭐⭐ | 精准定位 Git 的空白地带 |
| 实用性 | ⭐⭐⭐⭐☆ | 开发者日常高频需求 |
| 完成度 | ⭐⭐⭐☆☆ | 8 stars 新项目,功能初具规模 |
| 技术实现 | ⭐⭐⭐⭐☆ | Rust + 守护进程架构合理 |
这是一个典型的「小而美」工具——不试图取代 Git,而是解决一个被忽视但真实存在的痛点。对于经常重构、实验新想法的开发者来说,相当于拥有了一个无限撤销的安全网。
相关资源
| 资源 | 链接 |
|---|---|
| 仓库 | https://github.com/alessandrobrunoh/Mnemosyne |
| 问题反馈 | https://github.com/alessandrobrunoh/Mnemosyne/issues |
| 许可证 | Apache 2.0 |
Mnemosyne(摩涅莫辛涅)是希腊神话中的记忆女神,项目命名颇为贴切。