aider
aider copied to clipboard
Multiple Conversation Threads, Prompt Customization, and Conversation Templates
Another feature that could enhance the flexibility and organization of using Aider in complex or multi-faceted projects is the support for multiple conversation threads.
Feature Request:
Please add support for multiple conversation threads in Aider, enabling users to maintain separate discussions or sessions on different aspects of the same repository without interference. This feature could be managed through a --thread command line parameter, which defaults to "main" but can be set to other names to switch between independent conversation histories and file selections.
Use Case:
In projects where different components or features require distinct but simultaneous development focus, having the ability to switch contexts within the same repository environment can be invaluable. For example, one might want to discuss database issues in one thread and UI enhancements in another, without mixing the conversations and relevant file edits.
Proposed Implementation:
Introduce a --thread parameter that specifies the active conversation thread.
Store conversation-specific data like .aider.input.history and other session files in thread-specific subdirectories or encode the thread name in the file names. For instance, using an .alder directory at the top level for global configurations, and thread-XXX subdirectories for each conversation thread's data, could help keep project directories organized and avoid clutter, while enabling future extensibility and per-thread customization.
Questions for Consideration:
Version Control for .alder Files: Is it considered good practice to check in .alder files into the repo to maintain conversation history across different development environments? What are the implications for privacy and clutter in version control, and uses of pre-configured thread templates for particular tasks like chatting about documentation, apis, porting, internationalization, etc.
Customizing Prompts per Conversation: Beyond simply including files with instructions, is there a mechanism to customize or augment the built-in AI prompts based on the conversation thread? This could tailor the assistance more closely to the context of each thread. Could there be an /instruct command like /add that adds those files as system prompts instead of user input?
Saved conversation threads could be used as Conversation Templates that are pre-configured, parameterized, and start private conversation threads that may or may not be ignored and checked into source code control.
Conversation Templates could included pre-configured sets of files, wildcards, or dynamic procedural selections (like dependencies on .h files from selections of .c files, so a conversation about documentation could include all the header files, and a conversation about user interface could include all of the header files and all of the user interface .c files, and user interface api documentation).
Selecting files per thread could be partially accomplished by threads having their own .alderignore files (including white lists) layered on top of the global repo wide alder white list. But procedure file selection by running shell commands or scripts would also be powerful. Also save and restore named sets of selected files on a per-conversation basis. So three layers of file name globbing + ignoring: repo, conversation thread, named file list.
This enhancement would not only make it easier to manage multiple development streams within a single repository but also align Aider with more complex development workflows where multitasking across different components is necessary.
I would also love a "/foreach [list of files] [instructions]" command whose behavior could be specialized in each conversation.
Thank you for considering this feature. I believe it could significantly enhance the practicality of Aider in more complex projects. I look forward to your insights and hopefully seeing this capability in a future release!
I am excited about the potential for this feature and how it could improve Aider!
System Info:
Aider version: v0.21.2-dev Model being used: gpt-4-0613 Operating environment: Mac