Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Multiple Conversation Threads, Prompt Customization, and Conversation Templates #554

Closed
SimHacker opened this issue Apr 13, 2024 · 1 comment
Labels
question Further information is requested

Comments

@SimHacker
Copy link

SimHacker commented Apr 13, 2024

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

@SimHacker SimHacker changed the title Multiple Conversation Threads Multiple Conversation Threads and Prompt Customization Apr 13, 2024
@SimHacker SimHacker changed the title Multiple Conversation Threads and Prompt Customization Multiple Conversation Threads, Prompt Customization, and Conversation Templates Apr 13, 2024
@paul-gauthier paul-gauthier added the question Further information is requested label Apr 15, 2024
@paul-gauthier
Copy link
Owner

Thanks for trying aider and filing this issue. I'm not sure I can address these concepts any time soon.

There's a FAQ entry that might contain helpful information:
https://aider.chat/docs/faq.html#can-i-script-aider

I'm going to close this issue for now, but feel free to add a comment here and I will re-open or file a new issue any time.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
question Further information is requested
Projects
None yet
Development

No branches or pull requests

2 participants