Add a non-blocking, async `ask_user` tool in addition to the blocking `ask_user`
まだ誰も着手していません。
評価
調査の方向性
ファイルやテストは指定されていません。まず、既存のブロッキング ask_user ツールと、そのリクエスト処理のエントリーポイントを見つけ、次に、提案されている ask_user_async リクエストがキューまたは Requests/Sessions ビューにどのように表示される可能性があるかを確認してください。作業を続けながら非同期の質問をキューに入れ、後で回答し、必要に応じてブロッキング入力に変換できれば完了です。
索引モデルが issue の本文から書いたものです。
説明
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.
- 主要言語
- Shell
- スター
- 11.2k
- フォーク
- 1.9k
- 平均マージ
- 14時間 16分
- マージ済み PR(30日)
- 6
コントリビューションガイド
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
github/copilot-cli のほかの issue
-
triage
難易度 2/5 1〜3時間 初心者へのやさしさ 72/100
github/copilot-cli#4848 ·
-
area:agents area:mcp
難易度 2/5 1〜3時間 初心者へのやさしさ 72/100
github/copilot-cli#4729 ·
-
area:sessions
難易度 2/5 1〜3時間 初心者へのやさしさ 72/100
github/copilot-cli#4712 ·
-
triage
難易度 2/5 1〜3時間 初心者へのやさしさ 75/100
github/copilot-cli#4638 ·
-
Expose large_output_file_path on TaskShellProgress so clients can read complete shell-task output オープンarea:tools
難易度 2/5 1〜3時間 初心者へのやさしさ 78/100
github/copilot-cli#4630 · コメント 1 件 ·
github/copilot-cli の issue をすべて見る
似ている issue
-
area: compat bug
難易度 2/5 1〜3時間 初心者へのやさしさ 72/100
-
intake mcp-intake needs-ac needs-human-review priority:medium type:bug
難易度 2/5 1〜3時間 初心者へのやさしさ 84/100
Ikalus1988/MisakaNet#2019 · コメント 2 件 ·
-
type:content-error
難易度 2/5 1〜3時間 初心者へのやさしさ 72/100
stephrobert/blog-roadmap#15 ·
-
enhancement
難易度 2/5 1〜3時間 初心者へのやさしさ 74/100
-
難易度 2/5 1〜3時間 初心者へのやさしさ 85/100
hust-open-atom-club/hustmirror-cli#52 · コメント 1 件 ·