Skip to main content

Branch Merging

Problem

We can create branches from a conversation to explore different ideas. However, when we've reached a useful point in both the original (parent) thread and a branched thread, there's no easy way to bring the latest progress from the branch back into the parent conversation. We have to manually copy things over.

Proposed Solution

Add an option to combine the latest message of a branched thread with the latest message of its parent thread.

  • When viewing either the parent or the branch, there should be a simple "Combine Latest with Parent/Branch" action.

  • This action should update the parent thread so that it reflects the combined information or outcome based on the very last message from both threads.

Benefits

  • Makes it simple to bring the final result of an exploration in a branch back into the main conversation.

  • Keeps the main (parent) thread up-to-date with conclusions reached in parallel branches.

  • Avoids manual copying and pasting to merge the latest findings.

Status: Gathering Interest5 comments

Log in to comment and vote

Comments5

  • Harlequin Orbitron

    I wonder if more feasible feature that might cover some of the use cases would be to select multiple agents to answer the question at the same time and then have the current/parent branch conclude the findings of the multiple agents. Kind of an automated multiple and then condensed branch kind of thing.

  • Ivory Gust

    I don’t believe this will work for several reasons.

    1. The parent chat may be a branch

    2. The parent chat may have multiple children from different branch points in its thread

    3. Removing messages between the branch point and the last response removes context which I believe is important. I remember Theo saying something about T3 being so fast because the state is retained in the client and submitted directly. (I could be wrong)

    Perhaps a better way to define this request is to split it into two requests:

    1. Provide the ability to hide and/or collapse sets of prompts and responses.

    2. Provide the ability to “delete parent”. If the parent has other branches then the delete fails. Otherwise, the current chat removes it’s parent chat ID.

    I very much like the spirt of the request. I like being able to experiment and then keep the experiment and delete the original thread.


    FYI, I did some playing around and documented the following

    • Parent ID stored in chat
      Chats currently store a parent ID and the name of the parent chat. If the parent ID is set then we know it is a branch so the branch icon can be displayed.

    • Tool tip tells you name of parent
      Hovering over the branch icon shows you the current name of the parent chat.

    • Complex branches are not handled
      The UI doesn’t understand branches of branches and does not store branch points. It only stores the parent ID and doesn’t handle updating children. e.g. If 1.3 is deleted, 1.3.1 still points to 1.3. If the parent chat is deleted, hovering over the branch icon says the <old name> chat has been deleted.

    • Shortcut to parent chat
      You can click the branch icon to jump to the parent chat. (Nice feature!)

    • Tan Milkshake

      @Mark Florkowski what do you think?

      • Mark Florkowski

        Team

        These are many of my same concerns. It is a really cool concept, but the execution will be difficult to get right.

        If you are a developer, think about how merging branches in git is usually very simple, but when it isn’t, it can get very complicated, and conflict resolution is still left to the developer.

        > Provide the ability to “delete parent”. If the parent has other branches then the delete fails. Otherwise, the current chat removes it’s parent chat ID.

        due to how branching currently works, this sounds like it would basically end up with the state you described:

        This action should update the parent thread so that it reflects the combined information or outcome based on the very last message from both threads.


        If there is newer information in the parent post-branch, that is a merge conflict, and can’t be simply concatenated together

        I definitely think that there is more exploration to be done with branching functionality both in terms of UI and UX. Will keep thinking on it.

  • Mark Florkowski

    Team

    This is a very cool idea 👀