big-AGI icon indicating copy to clipboard operation
big-AGI copied to clipboard

[Feature Request] pinned messages ⭐

Open harlanlewis opened this issue 1 year ago • 3 comments

Writing this as a FR before I make an attempt at it.

I often find myself keeping an entire conversation in my history or exporting a full conversation just to keep an individual message or two for reference. The conversation context is not important.

I'm thinking of adding:

  • [ ] a pin message action for each user and assistant message
  • [ ] a pinned messages view, accessed from the conversations menu, that displays each pinned message.
    • with some exceptions, this view is effectively a read-only conversation
    • no link or other reference to original conversation, pinned messages are preserved even if original conversation is deleted
    • pinned messages can be manually removed using existing Clean up or Delete
    • messages cannot be run again, retry, etc
    • Composer is not available in pinned messages view
    • because this "conversation" contains only existing messages, it doesn't need to be subject to any context limits or other LLM API constraints
    • potential enhancement (haven't thought about where/how): an LLM-labeled nav list of all pinned messages

Update:

  • [x] Starring messages, and attaching starred messages in #475

harlanlewis avatar May 08 '23 17:05 harlanlewis

This is a very interesting idea, and thanks for posting it here for feedback (note: the same could be posted on discord, it is quite active).

A couple of feedback items for your consideration. Feel free to ignore tho.

  • relation to 'visibility'. To overcome the context window limitation, people floated the idea of having a 'hide' (per-message) flag, users could set a message to be transparent (hidden) when it can be skipped for the context window. And when the user doesn't set the flag, the system may, when sending a new chat. Where does it relate to yours: this could be a per-message flag/enum that may or may not related to a 'pinned' flag

  • DConversation? DConversation is the data structure of the 10 conversations, contained in the Chat-Store (local storage). One way to implement your idea is to add a separate DConversation in that list, with a special ID that changes the UI behavior (menus, composer, ..) when that conversation is active. Alternatively it could be a new object in the Chat-Store, or could be a new Store altogether, just with pinned-messages state

  • in any case, I feel like the Pin/Unpin message menu button should toggle the flag of an individual message (of a conversation), and add/remove that message to the "Pinned messages" conversation

I like the idea, and I'm curious about the impl!

enricoros avatar May 09 '23 02:05 enricoros

I often find myself keeping an entire conversation in my history or exporting a full conversation just to keep an individual message or two for reference. The conversation context is not important.

Just realized the brilliance of this FR. Did you look into it? This should be on the roadmap. Substitutes the needs for pinecone (for chats) entirely, by transferring the "selection and filtering" task to the human "pinner".. love it.

enricoros avatar Aug 13 '23 10:08 enricoros

Added to the roadmap. This depends on #202 . A Pinned message will be copied as a piece of text to an internal store, to be referred upon by later.

enricoros avatar Nov 16 '23 10:11 enricoros