盤問
來源。 由 Matt Pocock 撰寫於 mattpocock/skills (MIT),固定於
49dd158。 上游文本以下為逐字複製,但 UPSTREAM.md 中列出的編輯除外。我們的補充內容位於結尾的現場筆記下。
無情地採訪使用者,直到達成共同理解。將其映射為一個設計樹:每個決策分支為依賴它的子決策。
以回合的方式處理樹。前沿是所有前提條件已確定的決策:是那些你現在可以詢問的,而無需猜測尚未聽到的答案。在一個回合中詢問整個前沿:為每個問題編號,並給出你的推薦答案。然後等待使用者的回答,再進行下一回合。
格式化一個回合如下:
❓ **Q1** - **<問題標題>**: <問題主體,可能有多段,包含多個選項>
➡️ <你的推薦答案>
---
❓ **Q2** - **<問題標題>**: <問題主體,可能有多段,包含多個選項>
➡️ <你的推薦答案>
用詞要讓「是」表示接受你的推薦答案。
每個回合使用者的回答會重塑樹:已確定的決策會將前沿向外推,並解鎖依賴於它們的問題。重新計算前沿,然後詢問下一回合。一個問題的答案如果依賴於本回合中另一個仍未回答的問題,則屬於_後續_回合,而非本回合。
查找_事實_是你的工作,絕非使用者的工作。當一個前沿問題需要來自環境(檔案系統、工具等)的事實時,派一個子代理去查找;不要詢問使用者任何你自己可以查到的東西。不要因為它而阻塞:正在進行的探索是一個未解決的前提條件,因此只有依賴於它的問題需要等待子代理報告;立即詢問其他前沿問題。_決策_是用戶的:將每個決策提交給他們並等待。
當前沿為空時,會話就完成了:設計樹的每個分支都已訪問,沒有遺留任何事情被默認假設。在使用者確認你已達成共同理解之前,不要執行任何操作。
現場筆記
證據:26 個實際會話中載入了盤問(方法見 docs/field-data.md)。
- 保留一個使用者可以倒回的決策日誌。 使用者有 3 次反悔了先前的回答(「回溯決策,我選錯了」)。每一輪結束後,列印一個已確定決策的編號列表。反悔只會重新打開該決策下游的分支。
- 為選項標字母。 使用者在 16 次簡短回覆中僅回答了一個字母或一個編號列表。為每個選擇題提供字母選項,這樣
Q2: b就是一個完整的答案。 - 自我盤問模式。 大約 19 個請求要求代理盤問自己(「你自己進行盤問會話來處理安全性問題」)。當被要求時,使用相同的設計樹,將代理作為受訪者。透過你收集的證據來解決每個事實問題。在此模式下,上述的等待和確認規則僅適用於偏好判斷,這些判斷會作為一個批次(附帶推薦答案)交給使用者。
principal-autopilot在其步驟 3 中運行此模式,在任何程式碼之前。