开源工具 Unfucked:本地版本化管理代码改动
开源工具可追踪记录任何工具对代码的改动,实现本地版本管理。对需要跟踪多工具链改动的开发者有实用价值。
开源工具可追踪记录任何工具对代码的改动,实现本地版本管理。对需要跟踪多工具链改动的开发者有实用价值。
你的 AI Agent 刚刚清空了整个工作区。而你还没有 commit。
UNF* 记录了每一个版本。可以把任意文件恢复到任意一秒。不需要 commit。
开源 · MIT / Apache-2.0 · 在 GitHub 上给我们点个 Star
一条命令,几秒即可完成安装。
文件会在两次 commit 之间消失。
Git 帮不了你,因为你没有 commit。
Ctrl+Z 也帮不了你,因为你已经关闭了编辑器。
Time Machine 同样帮不了你,因为它每小时才运行一次。
UNF* 持续记录。每次保存,每一秒,都不会错过。
只要你的文件系统见过,UNF* 就保存过。
真实的 unf 输出。Agent 在上下文压缩后的工作流程。
macOS 使用 FSEvents,Linux 使用 inotify。遵循 .gitignore,跳过二进制文件,并采用 3 秒智能防抖。
使用 BLAKE3 进行内容哈希。SQLite 提供 ACID 保证。采用内容寻址,相同文件只存储一次。始终仅保存在本地。
支持将任意文件恢复到任意一秒的状态。可以使用 unf prune 手动清理,释放存储空间。
绝对时间:ISO 8601 时间戳
--json — 所有命令均可输出机器可读的数据
--project <PATH> — 无论身处何处,都能操作任意项目
递归处理所有文本文件。遵循 .gitignore。通过 magic number 检测并跳过二进制文件。
默认存储在 ~/.unfudged/。可以使用 unf config --move-storage 将其移动到任意位置。项目目录内不会写入任何内容。所有内容都会去重存储。
然后运行:unf watch。就这么简单。
Agent 批量覆盖了你的源代码
你的 AI Agent 重构了 30 个 Rust 文件,在处理第 27 个文件时遇到错误,然后把所有文件都恢复成了过时版本。三个小时的有效工作——全没了。
Agent 删除了你的 .env
Agent 认定 .env 是“生成文件”,于是将它删除了。API keys、数据库 URL、本地配置,全都不在 git 里,也不存在于其他任何地方。
Agent 的清理脚本出了问题
你让 Agent“清理构建产物”。它写了一个 shell 脚本,执行 rm -rf 时删掉的却是 src/,而不是 dist/。
Agent“修复”了你的依赖
Agent 从 Cargo.toml 中删除了 6 个“未使用”的 crate,其中 4 个其实位于 feature flags 之后。现在 CI 全红了。
Agent 重新格式化了所有文件
Agent 使用了错误的配置运行 Prettier,重写了 200 个 TypeScript 文件。等你发现时,它已经 commit 了。git revert 只能让你回退一个 commit,而 UNF* 保存着每个文件的所有版本。
Agent 替换了你的测试 fixtures
你精心编写的 SQL seed data 和 JSON fixtures 被通用占位内容覆盖了。一周积累的边界情况,就这样全没了。
Agent 删除了你的 migration 文件
Agent 看到 47 个 SQL migration 文件,认为它们“重复多余”,于是将其删除。但生产环境依赖这些文件按顺序执行。
Squash merge 吞掉了中间工作
你通过 squash merge 合并了一个 feature branch。Git 只保留最终结果。三天内产生的 40 个中间版本呢?Git 根本不知道它们曾经存在过。
Agent 在会话中途丢失了上下文
上下文窗口溢出。Agent 在横跨 4 个 repo 的重构进行两小时后崩溃。新的 Agent 需要从旧 Agent 停下的位置精确接手。
你离开期间发生了什么?
你让一个 Agent 通宵运行。它修改了 3 个项目中的 80 个文件。它究竟做了什么?