本帖使用社区开源推广,符合推广要求。我申明并遵循社区要求的以下内容:
- 我的帖子已经打上 开源推广 标签: 是
- 我的开源项目完整开源,无未开源部分: 是
- 我的开源项目已链接认可 LINUX DO 社区: 是
- 我帖子内的项目介绍,AI生成、润色内容部分已截图发出: 是
- 以上选择我承诺是永久有效的,接受社区和佬友监督: 是
以下为项目介绍正文内容,AI生成、润色内容已使用截图方式发出
各位佬好,附链接:
写在前面
关于是怎么被agent坑到的
上周收尾项目堆了二十来个一次性脚本,就让 Codex把 scripts 目录收拾一下,package.json 里用不上的脚本也删掉
一轮下来动了30个文件吧应该,scripts清到剩了1个、package.json也改了、src里几个文件的 import也排了序
问题在于让Agent改之前,这些文件一个都没提交过啊 ^-^感觉有点炸肛啊
我下意识去找撤销,但对话一多,具体的某轮的撤销就会覆盖掉找不着,codex上没找到解决方案
但如果直接让Agent改回去,又怕没有100%还原,越改越乱
于是开始传统艺能:
- git checkout .?连我自己上午没提交的改动一起冲掉了
- 让 Agent 自己改回去?它不知道改前是什么样的,只是写脚本批量做了但是没有读,越改越乱
- 一个个文件手动比对,啊
去翻issue,发现不是只有我 ^-^
去翻了下Codex的issue列表,第一条相关的是这个:

Codex #9203:「Please make “/undo” back」——2026-01-14 开的,482 个赞、93 条评论,至今仍是 open。原帖作者写得很直白
底下的评论基本是同款。Codex 原本是有 /undo 的,4月被移除了(PR #19481 “Remove ghost snapshots”)。官方给的理由是使用量低,而且原实现给很多用户(包括没用这个功能的人)带来了严重问题;如果要回归,得重新设计 ^-^
同类的/rewind需求(#11626)也有 228 个赞
然后我又去看了 Claude Code 那边,这个场景的话我在 CC 上也遇到过:

三家现状:

于是有了 oops
oops —— Agent 的 Ctrl+Z:一键精准撤销/重做。
思路简单直接在文件系统这层看。通过各家Agent的hook来,每一轮开始前和结束后各拍一次增量快照,两者的差就是这一轮的全部改动——不管它是用内置Edit工具、sed、Python heredoc,还是 rm -rf干的,也不管这些文件有没有进git

那个30个文件现在可以这样:
$ oops undo
✓ Undid turn #42 · codex · "clean up the build scripts"
restored 28 files scripts/ (26), src/ (2)
removed 1 file scripts/build.mjs
reverted 1 file package.json
Changed your mind? oops redo
src/里我自己上午改的那两个文件,都可以不动
演示
1. 不用切窗口,在对话里直接打 /oops
在 Claude Code 的对话框里敲 /oops,这一轮的改动就全撤回了;想反悔就敲 /oops redo。

在本地执行,不发给模型,不消耗 token(你也可以直接发给agent让它用oops撤销或者重做)。Claude Code 会把这段回复显示成 hook 拦截(“operation blocked by hook”)——以 ✓ oops 开头的那一行才是结果,不是报错 ^-^
目前支持 Claude Code、Codex、Gemini CLI、Cursor CLI 四家。别的工具(opencode、自研 harness)的话暂时用 oops run -- <你的命令> 包一层,效果其实一样
2. 完整时间线,撤销和重做可以来回切
终端里直接敲 oops,会打开时间线:每一轮是谁做的、什么时候、提示词是什么、改了几个文件、加了多少行减了多少行,都是有的

选中哪一轮,回车撤销,R 重做,d 看 diff,r 直接回到这一轮之前,/ 过滤。按回车之前看预览——这一轮要还原哪些文件、要删掉哪个新增文件
3. 最在意的一点,不误伤自己的改动
Agent 改完之后,如果你又手动改过同一个文件,oops 认得出来这是你改的,撤销时原样保留,并且明确告诉你保留了哪个、为什么
最后提一点是 项目是Go语言写的,性能还不错,然后运行是静默的不会常驻内存
更多功能不赘述了,大家可以去看README吧~
写在最后
项目很热乎嗯
现在也许佬会认为这个功能不太用得到,或者现有的agent能力已经可以解决 ^-^
但希望有一天佬们也许遇到类似于我遇到的情况的时候,找不到解决方案的时候,能够想到这个项目,也希望这个项目能够带来一点便利 ^-^
欢迎佬友们试用、提issue、拍砖、PR,多^-^多^-^
链接: