Hacktoberfest 2026 : les issues que les mainteneurs ont marquées pour octobre, ouvertes et accessibles aux débutants. Parcourir les issues Hacktoberfest

Add a non-blocking, async `ask_user` tool in addition to the blocking `ask_user`

Ouverte
#4,879 0 commentaires 0 réactions 0 personnes assignées Voir sur GitHub

Personne n'a encore pris cette issue.

Évaluation

Difficulté
5/5
Temps estimé
Plus d'une semaine
Accessibilité débutants
35/100
Type d'issue
Fonctionnalité
Clarté
Plutôt claire
Activité
Active
Stack technique
shell
Domaine
cli

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

triage
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

  1. Lisez l'issue en entier, puis le guide de contribution du projet.
  2. Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
  3. Forkez le dépôt et travaillez sur une branche.
  4. Ouvrez une pull request qui référence le numéro de l'issue.

Autres issues de github/copilot-cli

Toutes les issues de github/copilot-cli

Issues similaires

Plus d'issues Shell/Bash

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.