Content last updated 2026-10-20

人の関与

非同期 Workplan フローがワークアイテムのディスカッションで明確化のための質問を行い、人が回答する方法の設計。

SDD の詳細は、Spec-Driven Developmentを参照してください。

成熟度:定義中

概要

非同期 Workplan フローで、単独では下すべきでない判断が必要になった場合、ワークアイテムのディスカッションで明確化のための質問をします。人がそこで回答すると、フローはその回答を取り込んで続行します。たとえば、無料か有料か、誰が閲覧できるか、変更が既存の動作を壊すかといった判断です。誤った推測に基づく計画は、計画がないよりも悪いものです。

エピック:WS-4:HITL と通知

デザイン:Figma の SDD イテレーションパス

ワークアイテムのディスカッションを使う理由

  • ディスカッションの質問は永続的に残ります。チャットセッションはそうではありません。
  • 他の人が質問を確認し、意見を述べられます。
  • ワークアイテムには、その作業に関するその他すべての情報がすでにあるため、決定をその影響先のそばに置けます。
  • Workplan の生成に限らず、何かを尋ねる必要があるすべてのフローで、同じ場所を利用できます。

操作

  1. フローは質問を含むコメントを投稿し、質問、選択肢、推奨する回答を記述した、小さな機械可読のペイロードを添付します。
  2. ワークアイテムは、スレッド内に質問をカードとして表示します。カードには、最大 5 つの選択肢と、フローがどれを推奨しているかを表示します。カードは、Duo ボットが作成したノートでのみ表示します。
  3. ユーザーは、選択肢を選んで回答します。一部の質問では、複数の回答を受け付けます。自由記述で回答することもできます。
  4. 適切な選択肢がない場合、ユーザーはそれらを却下できます。フローが次に何をするかの判断材料となるため、説明が必要です。
  5. 回答すると、選択内容を通常の返信として投稿し、スレッドを解決します。スレッドは、ユーザーが解決する権限を持っている場合にのみ解決します。選択した回答は表示されたままになります。選択しなかった選択肢は、解決後も無効な状態で展開できます(マージリクエスト 260428)。
  6. ユーザーは Implementation ウィジェットで Continue を選択し、回答を使ってフローを再開するとともに、Duo ドロワーでセッションを開きます。

再開する権限と、回答を提供する資格は別です。再開サービスは、ワークアイテムの更新権限と、プロジェクトでのリモートフローの利用可否を確認し、元のフロー所有者の ID を使用します。新しい CI フローの開始には、別途 Developer レベルの権限チェックがあります。ロールポリシーの整合は、Issue 634208で追跡しています。再開サービスが含めるのは、プロジェクトで Guest より上のロールを持つユーザーの返信のみです。Guest 以下のロールからの返信は、その作成者がワークアイテムを更新して Continue を選択できる場合でも除外します。

再開するために、スレッドを解決する必要はありません。サービスは、解決済みと未解決の両方のスレッドから、質問のペイロードに対する有効な返信を収集します。未回答の質問は再開を妨げません。有効な返信がない場合、フローには、最も妥当と考えられる仮定に基づいて続行するよう指示します。説明の追加を求めるリクエストは、別の経路に従います。ユーザーが説明を編集し、Continue によって元の目標で調査を再開します。

回答は通常のコメントであり、スレッドの解決も通常のものなので、すべてが見える状態で残ります。ノートの通知メールからは、ペイロードを取り除きます。

質問間の移動

フローが入力を待っている間、Implementation ウィジェットは、未解決の質問の件数と、前後の質問への移動機能を表示します。固定ヘッダーにも、質問間の移動機能を表示します。解決済みのスレッドはスキップします。カードから回答すると、次のポーリングを待たずにウィジェットを更新します(Issue 608855、Issue 628347、Issue 631032)。

バックエンドは、すべての実行を通じて未解決のフローノートのスレッドを集計する一方、移動機能では質問のペイロードで絞り込みます。そのため、進捗ノートや背景情報のリクエストが件数を水増しする可能性があります。また、Guest は、返信が再開時の目標に含まれないスレッドでも解決できます。カウンターは質問間の移動を補助するもので、権限チェックや再開の前提条件ではありません。

通知

フローが入力を求めて一時停止すると、ユーザーに通知します。これは、マージリクエスト 6711で AI Gateway に実装されました。

意思決定ログとの関係

明確化のための質問とその回答を意思決定ログに自動記録する機能は、次の 2 つの部分で実装されています。

  1. フローが明確化のための質問を投稿すると、バックエンドは、質問、選択肢、ディスカッション ID を持つ未解決の決定を作成します(Issue 630439)。
  2. ワークアイテムの UI でスレッドを解決すると、フロントエンドはその決定を解決します。選択した選択肢または自由記述の理由を記録し、回答の返信にリンクします(マージリクエスト 259195)。

この連携には、ワークアイテムのライセンスとタイプで意思決定ログが利用可能である必要があります。古い質問など、対応する決定がない場合、フロントエンドは記録をスキップします。回答せずに解決すると、選択肢を選ぶ代わりに定型の理由を記録します。スレッドを再オープンして再度解決しても、最初の決定の解決は置き換えません。この UI の外でスレッドを解決しても、その決定は自動的には解決しません。

未解決の決定は保存しますが、解決するまでは意思決定ログのパネルには表示しません。決定の記録とフローの再開は別です。Continue はスレッドや決定を解決しません。また、意思決定ログのミューテーションが失敗しても、回答の投稿は妨げられません。

未解決の質問

  • 承認リクエスト:1 回の実行で、実際の質問と、ツール呼び出しの承認リクエストの両方が生じる可能性があります。現在の考えでは、ディスカッションには質問のみを載せ、承認はフローを実行している人が確認できる場所に残します。
  • 仕様の更新:解決済みの Duo の決定に基づいて説明を自動更新する機能は、開発中です(Issue 633224)。提案中のバックエンドのイベントとワーカーは、AI が生成した編集を適用し、その説明のバージョンを決定にリンクします。フロントエンドでの差分表示と、手動の決定でも説明を更新すべきかどうかは、Issue 629471で引き続き議論中です。
  • 未回答の質問:フローは、明示的な Continue アクションを待ちます。このアクションでは、回答なしでも再開できます。未回答の質問を追跡して回答を促したり、片付けたりする機能はありません。
  • 返信せずに解決すること:現在、フローは通常のコメントを投稿し、返信後に解決可能なスレッドとなります。ディスカッションを直接投稿する作業は、Issue 633575で追跡しています。これは、すべての質問を解決する機能の前提条件です。
  • 回答の資格:解決済みの質問の件数を、再開サービスの返信に関する権限と整合させることです(Issue 631546)。