Skip to content

[Feature]: Message Editing, Branching, and Regeneration for Conversations #18766

Description

@imrshohel

Issue Checklist

  • I understand that issues are for reporting problems and requesting features, not for off-topic comments, and I will provide as much detail as possible to help resolve the issue.
  • I have checked the pinned issues and searched through the existing open issues, closed issues, and discussions and did not find a similar suggestion.
  • I have provided a short and descriptive title so that developers can quickly understand the issue when browsing the issue list, rather than vague titles like "A suggestion" or "Stuck."
  • The latest version of Cherry Studio does not include the feature I am suggesting.

Platform

Windows

Version

2.0.7

Is your feature request related to an existing issue?

No

Desired Solution

Feature: Message Editing, Branching, and Regeneration for Conversations

Problem

The current chat interface makes it difficult to recover from a conversation that has gone in the wrong direction.

In a long conversation, a user may realize that:

  • An earlier instruction was incorrect or incomplete.
  • The user wants to change an earlier request and see how the conversation would develop from that point.
  • The model misunderstood an instruction and started going in the wrong direction.
  • The model began hallucinating or drifting away from the original task.
  • The latest assistant response is poor and the user wants to retry it without manually starting a new conversation.

Currently, users have limited ability to go back to a specific point in the conversation, modify the message, and continue from that point while preserving the original conversation.

This is particularly important for agentic workflows, where an error several messages earlier can affect every subsequent response.

Desired Solution

Add message-level Edit, Regenerate, and Branch functionality similar to the interaction model available in ChatGPT and Claude.

1. Edit any previous user message

Users should be able to select an existing user message and edit its content.

For example:

User: Research the top 10 SEO tools and compare their pricing.

Assistant: ...

User: Now recommend the best one for a small agency.

Assistant: ...

If the user later realizes that the first instruction should have been:

Research the top 10 SEO tools specifically for enterprise agencies.

they should be able to edit that historical message and regenerate the conversation from that point.

The edited message should not destroy the original conversation.

Instead, it should create a new branch:

Original conversation
        |
        +---- Original path
        |
        +---- Edited message
                  |
                  +---- New regenerated path

The user should be able to switch between the original and new paths.

2. Regenerate / Retry an assistant response

Every assistant response should have a clear Regenerate / Retry action.

If the user does not like a response, they should not have to send another message such as:

"Try again."

Instead, they should be able to click Regenerate and have Cherry Studio generate another response using the same conversation context and user instruction.

Ideally, multiple generated responses should be navigable, for example:

Response 1 of 3

< Previous    1 / 3    Next >

This allows users to compare different generations without losing the previous response.

3. Regenerate from a historical point

The user should also be able to select an earlier message and choose something such as:

  • Edit & Regenerate
  • Regenerate from here
  • Branch from here

This would allow users to recover from conversation drift without starting an entirely new topic.

For example:

Message 1
Message 2
Message 3  ← Model started drifting here
Message 4
Message 5
Message 6

The user could select Message 3, modify it, and create:

Original Branch
Message 1 → Message 2 → Message 3 → Message 4 → Message 5 → Message 6

New Branch
Message 1 → Message 2 → Edited Message 3 → New Response → New Response

Important Requirement: Preserve Original History

Editing a historical message should not overwrite or delete the original conversation.

The original branch should remain accessible.

This is important because users may want to compare:

  • What happened with the original instruction
  • What happens after correcting the instruction
  • Which approach produced the better result

This also prevents users from accidentally losing useful conversation history.

User Experience

Each user message could expose actions such as:

  • Edit
  • Branch from here
  • Regenerate from here

Each assistant message could expose:

  • Regenerate
  • Branch from here
  • Copy
  • Existing available actions

The exact UI can follow Cherry Studio's existing design language.

Example Use Case

A user is working with an AI agent to create a technical implementation plan.

After 15 messages, the agent starts producing irrelevant recommendations.

The user realizes that the problem originated from an instruction given 6 messages earlier.

Instead of starting a completely new conversation, the user should be able to:

  1. Find the problematic historical message.
  2. Click Edit.
  3. Correct the instruction.
  4. Select Regenerate.
  5. Cherry Studio creates a new branch from that point.
  6. The original conversation remains intact.
  7. The user can switch between the original and corrected branches.

This would make long-running AI conversations much easier to recover, experiment with, and iterate on.

Why This Matters

AI conversations are iterative. Users frequently discover that an earlier instruction was wrong only after seeing several subsequent responses.

Without message editing and branching, the practical solution is often to start over or manually reconstruct the conversation.

A proper message branching system would make Cherry Studio much more suitable for:

  • Long-running conversations
  • Prompt iteration
  • Agent workflows
  • Debugging AI behavior
  • Comparing different instructions
  • Recovering from hallucination or model drift
  • Experimenting with alternative conversation paths

Related Issue

This request appears closely related to #14561, which proposes preserving the original conversation when editing a historical message and creating a new branch from that point.

This feature request expands that concept to also include assistant-response regeneration/retry and a more complete conversation branching workflow.

Acceptance Criteria

  • Users can edit previously sent user messages.
  • Editing a historical message does not destroy the original conversation.
  • Editing a historical message can create a new conversation branch.
  • Users can switch between the original and edited branches.
  • Users can regenerate an assistant response without sending a new user message.
  • Multiple regenerated responses can be retained and navigated.
  • Users can regenerate/branch from a historical point in the conversation.
  • The original conversation remains accessible after branching.
  • The feature works for both normal Chat and Agent conversations where technically applicable.

Alternative Solutions

No response

Additional Information

No response

Metadata

Metadata

Assignees

No one assigned

    Labels

    ui-uxRelated to visual design, layout, interaction, or usability

    Projects

    Status
    No status

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions