返回首页
最新
我构建了一个终端差异查看器,以解决我在现有工具中无法舒适完成的工作流程:在不离开运行代理的终端会话的情况下,审查AI生成的代码更改,标注需要更改的内容,并将这些标注直接反馈给代理。虽然有很多差异查看器,甚至有些可以将笔记反馈给代理,但没有一个能适应我的工作流程——它们要么让我从终端切换到单独的应用程序,要么往返于代理的过程繁琐。
Revdiff是我解决这个问题的方法。在Claude Code会话中,我输入`/revdiff main`或直接说“审查最近3次提交的差异”——它会在代理会话的上方以终端叠加的形式打开。我查看差异,针对任何行、块或文件添加注释,然后退出。注释会直接返回给代理,代理会接收并开始处理这些注释。当代理完成后,revdiff会在新更改上重新打开,以便我可以再次进行注释——这个循环会持续进行,直到我退出而不留下任何注释。
同样的流程也被证明对计划很有用。还有一个单独的`revdiff-planning`插件,可以接入Claude Code的计划模式——当代理完成一个计划并调用ExitPlanMode时,revdiff会自动在计划文本上打开。我会注释我不同意的部分或希望扩展的内容,然后退出,代理会在编写任何代码之前修订计划。
这是一个双窗格的文本用户界面(TUI):左侧是文件树,右侧是语法高亮的差异。支持Vim风格的导航、搜索、块跳转、逐字级的更改高亮、责任归属、折叠差异模式。完全可定制——提供7种捆绑的颜色主题、可重新映射的按键绑定,以及通过CLI标志、环境变量或配置文件进行的每种颜色的覆盖。支持git和Mercurial。
它是一个单一的二进制文件——只需`revdiff HEAD~3`即可审查您最近的3次提交。可用于Claude Code的即用插件(通过tmux、Zellij、kitty、wezterm、Kaku、cmux、ghostty、iTerm2或Emacs vterm的终端叠加——无论您使用的是哪个)以及Codex和pi。
该工具是用Go语言编写的,开源(MIT许可证)。通过brew安装:`brew install umputun/apps/revdiff`
GitHub: [https://github.com/umputun/revdiff](https://github.com/umputun/revdiff)
网站: [https://revdiff.com](https://revdiff.com)
我很想听听其他人如何审查AI生成的差异和PR,任何不寻常的用例,以及对改进或添加内容的想法。
为什么呢?
嗨,HN!<p>我最近从一台 Fedora/GNOME 笔记本电脑换成了 MacBook Air。我的旧设备在作为便携工作站时表现良好,但随着我在远程工作时开始更多地旅行,我需要一款性能相似但电池续航更好的设备。我最怀念的是一个简单的任务栏,它能显示当前工作区的窗口,而不是将所有内容混合在一起的 Dock。<p>因此,我开发了 boringBar,这样我就不必使用 Dock 了。它只显示当前空间中的窗口,允许你通过在栏上滚动来切换空间,并添加了一个桌面切换器,让你可以直接跳转到任何空间。你还可以隐藏系统 Dock,固定应用程序,使用缩略图预览窗口,并通过可搜索的菜单启动应用程序(我将 Spotlight 禁用,因为它在我的机器上出于某种原因占用了大量系统资源)。<p>我已经使用它几个月了,感觉终于足够成熟,可以分享给大家。<p>它是为那些喜欢 macOS,但希望窗口管理更像 GNOME、Windows 或传统任务栏的人设计的。对于像我这样希望更容易过渡到 macOS 的人来说,尤其是在 Windows 感觉越来越不友好的情况下,这也是一个不错的选择。<p>我非常欢迎大家对用户体验、bug 以及是否解决了其他人同样的 Dock/Spaces 问题提供反馈。<p>附言:它可能也会吸引那些对昔日 GNOME 2 桌面感到怀旧的人。我是从它开始我的 Linux 之旅的,而 boringBar 让我找回了一些那种感觉。
嗨,HN,
我开发了 t4,这是一种将其写前日志(WAL)和快照存储在 S3 中的数据存储系统。
与传统存储不同,它将追加写入的段写入对象存储,并通过检查点和 WAL 重建状态。
这种模型的一个副作用是数据库自然地实现了版本控制:
- 你可以恢复任何过去的状态
- 可以从任何点分支(使用写时复制)
- 可以重放历史记录
我最初是作为一个实验来替代 Kubernetes 中的 etcd,但它正在演变为一个通用的版本化状态存储。
我很好奇大家对以下内容的看法:
- 将对象存储作为主要持久化层的使用
- 分支/时间旅行在实际应用中是否真的有用
大家好。
Claudraband 将 Claude Code TUI 包裹在一个受控终端中,以支持扩展工作流程。它使用 tmux 来实现可视化的受控会话,或者使用 xterm.js 来实现无头会话(速度稍慢),但所有操作都是通过实际的 Claude Code TUI 进行的。
我现在使用的一个工作流程示例是让当前的 Claude Code 查询以前的会话,以了解它所做的某些决策:<a href="https://github.com/halfwhey/claudraband?tab=readme-ov-file#self-interrogation" rel="nofollow">https://github.com/halfwhey/claudraband?tab=readme-ov-file#s...</a>
该项目提供:
- 可恢复的非交互式工作流程。基本上是 `claude -p` 加上会话支持:`cband continue <session-id> '研究结果是什么?'`
- HTTP 服务器,用于远程控制 Claude Code 会话:`cband serve --port 8123`
- ACP 服务器,可与 Zed 或 Toad 等替代前端一起使用(<a href="https://github.com/batrachianai/toad" rel="nofollow">https://github.com/batrachianai/toad</a>):`cband acp --model haiku`。
- TypeScript 库,以便您可以将这些工作流程集成到自己的应用程序中。
之所以开发这个项目,是因为我在很多 Claude Code 工作流程中大量使用了 `tmux send-keys`,但我希望能够简化这个过程。
在本地开发时,我总是遇到这个问题:<p>错误:listen EADDRINUSE<p>我目前的工作流程是:<br>netstat → 查找PID → taskkill<p>虽然这样能解决问题,但感觉很繁琐,影响了工作流程。<p>我很好奇其他人是怎么处理这个问题的——有没有更好的方法或工具可以使用?