Add a non-blocking, async `ask_user` tool in addition to the blocking `ask_user`
Personne n'a encore pris cette issue.
Évaluation
- Difficulté
- 5/5
- Temps estimé
- Plus d'une semaine
- Accessibilité débutants
- 35/100
Piste de recherche
Aucun fichier ni test n’est nommé. Commencez par localiser l’outil bloquant ask_user existant et son point d’entrée de gestion des requêtes, puis examinez comment les requêtes ask_user_async proposées pourraient apparaître dans la file d’attente ou dans la vue Requests/Sessions. La tâche est terminée lorsque les questions asynchrones peuvent être mises en file d’attente pendant que le travail se poursuit, recevoir une réponse ultérieurement et être converties en entrée bloquante lorsque cela est nécessaire.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Description
Describe the feature or problem you'd like to solve
Instead of making every ask_user blocking, give instructions to the agent to do all it can without input and ask questions as they come up using a non-blocking request and have a tab (like Current/Requests/Sessions etc.) or queue (liked /queue where I can go into it and select a question to answer and when it is collapsed I see there is a queue near the text input) where I can take my time to do input and agent is not blocked while it waits for me.
Proposed solution
Sometimes I want the AI to solve all the problems it can without waiting on input. Sometimes I give it a big green pasture and ask it to solve it and then leave for a few minutes come back and see its asking some clarifying question about a tiny edge case, but it's blocking progress. It can't build the basic service skeleton because it needs to know how to handle one specific edge case. I would rather it by default builds what it can without my input and can ask questions as it goes and they get queued up and I can answer them at my leisure. When it is done doing all it can, it should convert the async questions into blocking questions if it needs to, but as I get to them, I can answer them and it can keep working on any that have been answered. That said, sometimes it does need to present a blocking question if the answer will fundamentally change all subsequent parts.
I like this over Autopilot which just tells the Agent to pick whatever the crap it wants which somehow often includes doing something really stupid. But if I don't use Autopilot it feels like it needs me to hand hold it through every decision and it can't do anything on it's own until I give it a big pep talk and approve it's every concern.
Example prompts or workflows
Example: Building a new service
- Agent: does some work and realizes that there is a major ambiguity in one of the http methods
- Agent: [ask_user_async] "How do you want to resolve this issue? A or B or C?"
- Agent: keeps working on the other 95% of the service that is straightforward
- User: [sometime later] "Do option B"
- Agent: finishes whatever task it was on and sees the user has responded. Picks up option B work
Example: When to use blocking/sync ask_user
- Agent: [ask_user (not async)] "Do you want to use framework A or framework B". This is a major architectural decision that blocks other decisions so it should not be done async
Example: Building a game
- Agent: builds a few subsystems, has questions about how the next one interfaces with existing ones. Still has three other subsystems to implement
- Agent: [ask_user_async] "How do you want to handle inventory..."
- Agent: starts working on other subsystems and in one notices another issue about inventory
- Agent: [ask_user_async]: "And what about this case with the inventory"
- Agent: does all the work it can do without user input. Takes the queued messages and either rewrites as one ask_user or just converts most pressing one to be blocking ask_user. Latter is easier so let's assume that.
- User: responds to new blocking question
- Agent: starts working
- User: responds to second "queued" request
- Agent: finishes first and auto picks up second and eventually finishes everything.
Additional context
I think its important that we help make it as easy as possible for AI to do what it safely can without needing to go full-blown autopilot or needing to always be present to nudge the agent along. I think some people want to use either of those options but most are probably in the middle. Giving more tools to the middle group will improve their experience. I can add custom instructions to tell the agent what it should consider blocking vs not and your instructions should just indicate that blockers get ask_user and non-blocking get ask_user_async.
- Langage dominant
- Shell
- Étoiles
- 11.2k
- Forks
- 1.9k
- Merge moyen
- 14 h 16 min
- PR mergées (30 j)
- 6
Guide de contribution
Ouvrir le guide de contribution
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Autres issues de github/copilot-cli
-
triage
Difficulté 2/5 1-3 heures Accessibilité débutants 75/100
github/copilot-cli#4932 ·
-
triage
Difficulté 2/5 1-3 heures Accessibilité débutants 78/100
github/copilot-cli#4909 ·
-
triage
Difficulté 2/5 1-3 heures Accessibilité débutants 76/100
github/copilot-cli#4906 ·
-
triage
Difficulté 2/5 1-3 heures Accessibilité débutants 72/100
github/copilot-cli#4848 ·
-
area:agents area:mcp
Difficulté 2/5 1-3 heures Accessibilité débutants 72/100
github/copilot-cli#4729 ·
Toutes les issues de github/copilot-cli
Issues similaires
-
Bob Shell support Ouverteenhancement
Difficulté 2/5 1-3 heures Accessibilité débutants 65/100
-
tooling
Difficulté 2/5 1-3 heures Accessibilité débutants 75/100
-
Difficulté 2/5 1-3 heures Accessibilité débutants 70/100
openSUSE/python-rpm-macros#219 ·
-
Difficulté 2/5 1-3 heures Accessibilité débutants 70/100
YunoHost-Apps/adguardhome_ynh#258 ·
-
steam-short-session-tracker: incorrect registry backup path resets settings during automatic repair Ouverte
Difficulté 2/5 1-3 heures Accessibilité débutants 80/100
ValveSoftware/SteamOS#2829 ·