Open Emasoft opened 2 months ago
@Emasoft , wanted to mention - the original idea of /ask
was an actual non-modify mode. So the tasklist edit has to be done somehow else.
I wish there was a tasklist implementation, that would be super helpful. FYI there is a workaround I found on the web where people create a webpage with the tasks and add it to the context of Aider. Since it is a webpage - Aider can't modify it and it stays intact while you can refer to it saying work on task 1, fix the issue 6 etc.. But that isn't very convenient.
Thanks for trying aider and filing this issue.
Why not just have aider use a file like TASKS.md
to create the task list? Then ask it work on items and mark them as done, etc?
No, for it to work it is necessary to implement a ‘function calling’ of some sort. The AI should be able to select and retrieve the description of each task, and read its status. Or (maybe better) Aider should provide that content to the AI programmatically. It is true that a tasklist should be saved in an external YAML file (each YAML file could represent a project, but not explicitly). They can just be loaded by aider with aider --tasklist aider_tasks.yaml
, but this file is going to be too big to be loaded in the context entirely. Only the selected task details should be loaded at any time. Do not be confused by my example above: the true descriptions of features can be very long, and can include files and links to docs or web pages. By default at start the AI should be setup by Aider by adding to the chat the description of the first open task in the tasklist.
Also to be effective, a task list should also include a list of the resources necessary to complete the task.
Lets call it “task resources”. The Task Resources is a list of paths and urls. Each task should have this dedicated list called Task Resources that must be added to the chat before start working on the task. Each tasklist yaml file should be saved in the root of each corresponding project. In this way, useless files will be dropped, while only the files or docs/html that are strictly needed for the task are added to the chat to minimize the consumption of the context tokens.
The tasklist in this way would be an efficient way to partition the project in small manageable chunks, saving tons of tokens. No more adding all project files to the chat everytime. The user will just switch from a task to another, and Aider should automatically clear the context, and load in the chat the selected task DESCRIPTION plus ONLY the RESOURCES (code & data files, web urls, docs) needed to complete the task. Once you select a task, you should be able to see a tag (on screen or in the prompt) with written: “Working on Task 234”. All files and web resources added to the chat while working on a specific task will be saved as the Task Resources list for that task, and restored when working on that task.
In this way working with Aider would be much more efficient and simple. Just imagine loading Aider and seeing the list of tasks to complete, each with the already defined description and attached resources, and you should only select the number to see Aider automatically add the task prompt and the required resources to the chat and start working on it. Sweet!
NOTE: I strongly suggest using StrictYAML instead of YAML for storing the task lists, because is type-safe and has less issues with escaping characters (something useful with coding related prompts). And aider should parse it, not the AI. See here: https://github.com/crdoconnor/strictyaml/blob/0.13.0/FAQ.rst
Issue
Aider needs a task list. This will help the progress and keeping track of with the code changes we need. The best would be taking the example from Github: we need just three things:
The user should be able to create those with two new aider commands:
“/task feature” : add a feature request description
“/task bug ” : add a bug report
Also the AI should be able to create those entries by itself in the /ask mode if the user asks for new features, or if the user report a bug.
Those two kind of entries could also be imported from the github repo issues list, with a command like this:
“/github-sync repo url”
You should also be able to specify if you want just to sync the bugs and/or the features:
“/github-sync repo url features bugs”
When you need to have a overview of the project progress, you should be able to call a command like:
“/task list”
...and getting a result like:
TASKLIST:
Project Status Summary:
Write a task number and the new status (Example: “21 solved”). “n drop” to delete a task. C to clear all tasks:
> 8 solved
In Aider help: You can show the tasklist with the command /task list You can delete a task with the command /task drop n You can change the status of a task with the command /task status n new-status You can create new bug report with the command /task bug description You can create new feature request with the command /task feature description
You can sync bug reports and feature requests with your Github repo with /github-sync URL
NOTE: The AI can create tasks, but only the user can change the status of a task. Until a task is not marked as solved the AI will try to complete it, starting with fixing bugs, and only when all bugs are fixed it will start adding new features. Of course the user can ask the AI to focus on a certain task number.
What do you think?
Version and model info
No response