vikrant69g blog

ThoughtDAG lets you edit LLM conversation history as a graph

A new interface shows chat threads as directed acyclic graphs where you can rewrite nodes and re-run paths. Fixes the branching problem most chat UIs ignore.

Directed acyclic graph diagram showing conversation nodes with multiple branching paths and merge points

Most LLM chat interfaces treat conversation history as a linear append-only log. You ask a question, the model answers, you ask another question. If you want to try a different path, you start a new chat or copy-paste context around. ThoughtDAG renders the conversation as a directed acyclic graph where each message is a node. You can edit any node in the middle of a thread and re-run the model from that point. The interface keeps all branches visible. If you ask three follow-up questions from the same parent message, you see three paths, not three separate chats. The demo shows editing a node where the model gave a wrong answer, then watching the correction propagate forward through the rest of the conversation. That is the interesting bit. Most chat UIs give you no way to fix a bad turn without losing everything that came after it.

Why graphs instead of trees

A tree would let you branch. A DAG lets you merge. If two conversation paths converge on the same conclusion, you can join them back into a single node. The paper calls this “thought merging”. I have not seen another interface that treats chat history as something you can reshape after the fact. The rendering is messy once you have more than a dozen nodes. The authors know this. They mention automatic layout algorithms in the limitations section. But the core idea holds: conversation state is a graph, not a list, and the UI should admit that. I would use this for debugging prompt chains. Right now I keep a text file of iterations and manually track which version led where. A graph view would make that legible.


Source: Show HN: ThoughtDAG – An editable context graph for LLM conversations