Hacker News new | ask | show | jobs
by Zambyte 38 days ago
People in this thread seem to be too focused on the agent creating a git log. This seems to be solving a different problem than that does.

When you're interacting with agents, multiple prompts may reasonable culminate in a single commit. It may be useful to track or undo things between commits - at the prompt level. I personally have a workflow when I use Jujutsu (jj) for git already, and this slotted in very nicely to solve this problem. The auto-committing in jj makes it very easy and natural to compare diffs between prompts, and undo specific chunks or restore previous states without making a new commit every prompt. I only finish a commit, giving it a message and advancing the branch, once I've iteratively dialed in the changes I want.

I probably won't use this tool since I already have a flow that works for me, but maybe this will help people see why such a tool can be helpful.

Edit: fixed typo

2 comments

That's actually the one feature of cursor that i really miss in claude, even though I need it a lot less often.
Hit ESC-ESC in the Claude Code terminal.
- hopefully after a /compact. - what happens if want to undo, and then redo? i found the /rewind functionality in claude very lean in that matter.
Oh it is shit. TFA's approach is much better. But it does exist. Not sure what the relationship is to /compact ? I never use /compact anyway.
tnx for the honest feedback! really, appreciate it! would you mine sharing more details about your workflow with jj?
Sure. I was a bit loose with my vocab in my previous comment - I'm going to try to be more specific by using the terms as defined in the jj glossary[0] (particularly "change" vs "commit").

  - I start by using jj new to create a new change where I want to start working.
  - I open codex, and prompt it to do something.
  - Roughly every prompt, I will naturally check the cumulative diff using jj diff.
  - If I want to check the diff log of the working change, I'll use jj evolog.
  - If I want to check the diff from the previous prompt, I'll use jj diff -f xx/1, where xx is the short change ID for the working change, and 1 is how many prompts ago I want to look at the diff for (jj evolog can help with finding the change I'm interested in)
  - If I want to undo all or some of what a prompt did, I'll use jj restore -f xx/1, potentially with -i or a fileset.
  - When I've prompted / restored / made changes myself to the point where I am happy with a change, I'll usually ask codex to write a conventional commit message for <commit_id>. Codex will then use *git* to look at the diff in that commit (which has no commit message), and give it will usually give an appropriate commit message[1] (sometimes I'll tweak this if there are details I want to add or remove). I use jj ci (short for jj commit) to finish the change and add the commit message.
  - I'll then advance bookmarks as necessary with jj b m (short for jj bookmark move) and probably push.
[0] https://www.jj-vcs.dev/v0.41.0/glossary/

[1] https://www.conventionalcommits.org/en/v1.0.0/

cool approach, i havent used jj actually in my workflow, ill try to adopt