ask 是做什麼的?
先停止
如果使用者提到了 $ask、/ask、ask 模式、先知、深度審查、並行審查、圓桌會議、爭論、CAE 差距審查或 ask DAG,請在執行任何動作之前閱讀此完整文件。然後使用實際的執行環境入口點,除非使用者明確要求使用備用方案,或執行環境不可用且已回報該備用方案。
請勿以 spawn_agent、純模型呼叫、純網頁搜尋、手動摘要或自創的審查來取代 $ask。
執行環境入口點
從此目錄執行命令。Pi 的技能命令語法,例如 /skill:ask webgpt What is 2 + 2? 是一等捷徑:前導的瀏覽器處理器(webgpt、webclaude、webkimi、webgemini 或 webgrok)會路由至 Tau 的 single-call 瀏覽器處理器 DAG,並帶有 --execute --json 參數。內聯的 Pi 技能引用,例如 $ask webgpt What is 2 + 2? 以及帶有空格的純語言拼寫 $ask web gpt What is 2 + 2? 必須以相同方式處理(web gpt 正規化為 webgpt)。這僅是為 Pi 使用者提供的相容性捷徑;絕不能使用已移除的 WebGPT 先知路徑。
./run.sh tau-dag "<request>" 內部對應到 Typer 的 tau-dag run 子命令。./run.sh team-plan "<request>" --team <preset> 會產生基於角色的多代理計畫和凍結的 Tau DAG 預覽;執行需要明確的 --execute --live(請參閱 README 的「團隊編排」章節)。
cd skills/ask
./run.sh --help
./run.sh webgpt What is 2 + 2?
./run.sh webgpt --compile-only What is 2 + 2?
./run.sh ask --help
./run.sh tau-dag run --help
每次非平凡的執行都必須保留執行時工件。標準工件集為:
<ask_id>.request.json<ask_id>.status.json<ask_id>.events.jsonl- 模式特定的輸出,例如
review.md、review.json、DAG 清單或瀏覽器證據
執行時工件預設位於 .ask_artifacts/runs/<ask_id> 或提供的 --run-output-root 路徑下。對於長時間、活動中或產生的執行,建議使用儲存後端根目錄,例如 /mnt/storage12tb/skills/ask/outputs/...。請勿提交產生的 ask 工件。
每次執行的處理器呼叫(成功或失敗)都會在執行瓶頸點記錄到 $memory 中的 ask_call_log 集合,記錄內容包括處理器、狀態、failure_code 以及 controlled_tab_id/對話 URL(如果存在),同時還包含最後一次成功呼叫的經驗證方法(推理選擇、分頁綁定、生命週期模式、包含憑證已遮罩的分派命令)。模型 ID 會在編譯時根據最新的 SciLLM 目錄進行驗證(invalid_scillm_model_id 會 BLOCKED 並顯示最接近的有效替代方案);若一個瀏覽器席位連續 3 次以上記錄到失敗,會在其 failure codes 中標記為已知不良,然後再進行分派。在使用某個席位之前,請先檢查其狀態:執行 python3 skills/ask/scripts/ask_call_history.py --handler webgemini 會列印最後一次成功呼叫和最近的失敗記錄;加上 --recommend 參數可取得要重複使用的精確經驗證方法。沒有成功記錄的處理器是盲猜的——請先以 compile-only 或廉價方式進行探測。歷史執行可以回溯填充:python3 skills/ask/scripts/backfill_call_log.py [outputs-root] 會冪等地攝取每個磁碟上的節點收據(每個執行+節點具有確定性的 _key)。每個 EXECUTED 執行的結果 JSON(以及 execution-status.json)也會攜帶 handler_last_success:每個席位的記憶中的最後一次成功方法(對話 URL、分頁、生命週期/佈局)、當前連續失敗次數以及要避免的 failure codes——這些資訊會在上下文中回傳,以便專案代理在消耗執行結果後無需進行單獨的歷史查詢。
深度參考資料(按需閱讀)
| 在執行此動作之前 | 請閱讀 |
|---|---|
使用計畫檔案的 team-plan;status --run --projection | references/plans-and-status.md |
| 明確的 Pi 原生子代理目標 | references/pi-subagents.md |
| 將 ask 輸出(一次性/圓桌會議/競爭/隔離審查)轉換為子代理通道 | references/lane-handoff.md |
herdr list/who/send 傳送至另一個代理的窗格 | references/herdr.md |
| 選擇一次性 vs 圓桌會議 vs 競爭;模型/努力程度選擇器 | references/modes.md |
| 面板稽核、席位名冊、速率限制席位、webclaude 政策 | references/seats-and-audits.md |
| 執行/監督任何活動中執行(監控、視窗、負載矩陣、解除封鎖、漂移) | references/operations.md |
| 任何執行失敗 | references/diagnosis.md |
| 編譯/執行任何多席位 DAG(圓桌會議/競爭/創作者-審查者) | references/workflows.md |
| 任何瀏覽器處理器執行 | references/browser.md |
四種目標類型
/ask 處理四種同級的目標類型。它們在傳輸方式上有所不同,但地位相同:
| 目標 | 範例 | 傳輸方式擁有者 |
|---|---|---|
| Herdr 會話 — 窗格中的活動代理 | memory、w11:p13 | $monitor-herdr 透過 herdr pane run |
| 模型呼叫 — API/模型處理器 | gpt-5.5-high、Codex-opus-5-high、deepseek-ai/DeepSeek-V3.2-TEE | $tau(SciLLM 是 Tau 的內部組成) |
網頁模型 — 瀏覽器後端的審查者(聊天分頁,非代理模型;請參閱下方 webclaude 警告) | webgpt、webclaude、webkimi | $surf + $browser-oracle |
| Pi 原生子代理 — 本機 Pi 子顧問/工作者 | pi reviewer、subagent general-purpose、local coder | pi-subagents 原生的 subagent 工具 |
專案代理不應關心目標端是瀏覽器、模型、Herdr 會話還是 Pi 原生子代理,只需指定目標名稱即可。
專案代理快速入門
當使用者要求進行單一模型呼叫、圓桌會議、競爭或創作者-審查者循環時,從此處開始。使用以下其中一種形式;請勿發明自訂的編排路徑。
| 使用者意圖 | 命令形式 |
|---|---|
| 一個處理器回答 | ./run.sh tau-dag "<task>" --repo <repo> --target <target> --immutable-goal "<goal>" --handler <handler-or-model> --execute --json |
| 圓桌會議 | ./run.sh tau-dag "<shared task>" --repo <repo> --target <target> --immutable-goal "<goal>" --dag-template roundtable --handler <a> --handler <b> --topology concurrent --execute --json |
| 競爭 | ./run.sh compete "<isolated task>" --repo <repo> --target <target> --immutable-goal "<goal>" --handler <a> --handler <b> --criterion <criterion> --execute --json |
| 一次性(各席位各自回答,無共識) | ./run.sh one-shot "<question>" --handler <a> --handler <b> --handler <c> — N 個獨立的 single-call 通道並行執行;每個通道各自返回其綁定 nonce 的答案或一個具名阻塞器。部分答案為 DEGRADED-but-usable(達到或超過 --min-answered 時退出碼為 0);圓桌會議的法定人數拒絕在此處不適用。 |
| 從 Pi 內部呼叫 Pi 原生子代理 | subagent({ action: "list" }),然後 subagent({ agent: "<agent>", task: "<task>" }) 或一個 workflowScript 扇出。此方法僅適用於明確的 pi/subagent/local reviewer 目標;它不是 Tau/瀏覽器處理器的替代品。 |
| 創作者然後審查者 | ./run.sh tau-dag "<creator task then reviewer verdict>" --repo <repo> --target <target> --immutable-goal "<goal>" --dag-template creator-reviewer --handler <creator> --handler <reviewer> --topology sequential --execute --json |
| 診斷/修復/關閉 GitHub 問題 | ./run.sh fix-issues --repo <owner/name> --issue <N> [--issue <M>] [--handler gpt-5.5] [--execute] — 透過 gh 收集每個問題,透過活動的一次性處理器將其診斷為結構化的原因/修復 JSON,並帶有偵錯階梯閘門(needs_debugger 僅在故障轉換是在執行階段狀態且沒有任何工件可以解釋時才推薦 $debugger),並且是預設關閉的:預設為乾執行;僅當其指定的驗證命令(通常是 $agentic-evals 固定裝置)實際通過時,--execute 才會關閉問題。無驗證 → blocked;驗證失敗 → verify-failed,問題保持開啟。每個問題的收據位於 outputs/fix-issues/ 下。閘門:fixtures/fix_issues.json。 |
處理器之間是同級的,即使它們的傳輸方式不同。瀏覽器處理器(webgpt、webclaude、webkimi、webgemini、webgrok)透過 $surf 和 $browser-oracle 運行。API/模型處理器,如 gpt-5.5-high、gpt-5.5-xhigh、Codex-opus-5-high 或 chutes deepseek-ai/DeepSeek-V3.2-TEE,則由 Tau 路由。專案代理不應關心處理器端是瀏覽器還是 API,只需指定處理器名稱即可。
處理器之間是同級的,無論是瀏覽器後端(webgpt、webclaude、webkimi、webgemini、webgrok,透過 $surf/$browser-oracle)還是 API 後端(gpt-5.5-high、claude-opus-5-high、chutes <provider/model>,透過 Tau)。在執行任何多席位 DAG 之前:先進行編譯(省略 --execute),向人類顯示列印的 ASCII 圖表,並僅在確認後才運行。完整模式範例和選擇器規則:references/modes.md。完整協定和預設關閉表格:references/workflows.md。
每次執行都不可妥協的事項
- 需要一個明確的不可變目標(
--immutable-goal或一個標記為Immutable goal:的行)才能進行圓桌會議、創作者-審查者和競爭;缺少目標會使預檢失敗,並顯示NEEDS_INTERVIEW,然後才會聯繫任何處理器。 - 圓桌會議始終是
--topology concurrent,並為每個席位提供相同的任務封包。競爭候選者之間是隔離的,永遠不會看到彼此。 - 已執行的 DAG 必須透過其 JSON 串流工件(
events.jsonl、dag-progress.json、節點收據、execution-status.json)監控至最終判決;請勿啟動後就離開。 PASS僅是審查者/模型的證據;本地閉合需要確定性的本地證明。DEGRADED/NEEDS_ATTENTION/速率限制是通道本地的:保留可用的席位,遵循失敗通道的恢復封包。- 非串流 API 補全必須通過類型化接收檢查,其
finish_reason必須為stop,其文字才能計入證據。被截斷、過濾、缺少 finish_reason 或格式錯誤的補全會發出scillm_response_incomplete;保留原始位元組和response.meta.json驗證錯誤。請勿修復部分判決文字或自動重試。保留的案例:completion-admission-rejects-truncation(捕獲的重播)和completion-admission-live-positive(真實提供者回讀)。 - 失敗是非靜默的:每個失敗的通道都會公開
failure_code、一個恢復封包以及next_command/票證指示。發生任何失敗時,請閱讀references/diagnosis.md並根據所屬收據進行分派,然後再進行理論推導。 - 直接 WebGPT 先知路由(
$ask chatgpt、--oracle-backend webgpt、--webgpt-*)會預設關閉;Tau 瀏覽器處理器仍受支援。 - 跟進連續性: 每個瀏覽器通道的節點收據 /
response.meta.json必須攜帶controlled_tab_id和對話 URL;空的分頁 ID 表示交接失敗。當使用者可能會提出澄清或跟進問題時,請使用--browser-tab-lifecycle fresh-keep(或reuse-bound)執行——預設的auto/fresh-temporary 會在執行後關閉視窗,從而中斷對話。執行後,請回報分頁 ID + 對話 URL 並綁定它們(skills/browser-oracle/run.sh bind <project> --backend <b> --tab-id <id> --url <url> --manual),以便跟進目標指向同一個會話。 - 分頁可見性閘門(觀察於 2026-09-15,webgemini): 某些提供者(Gemini 已確認)會在分頁是隱藏文件時延遲 composer 發送——在一個共享視窗中,一次只能有一個分頁處於最前,因此 N 個並行通道中的 N-1 個始終是隱藏的,並會因
prompt_too_large_or_stalled(「提示在發送後仍然留在 composer 中」)而停滯。因此,並行瀏覽器通道預設為隔離視窗(每個席位一個視窗,放置在審查者桌面上),以便每個通道分頁都是一個可見文件;--window-layout shared是自願加入的。一個已停滯且已輸入文字的 composer 是可以挽救的:skills/surf/run.sh tab.switch <id>會使分頁可見,然後排隊的發送就會被分派。在為此類失敗縮減提示之前,請檢查document.visibilityState。每個席位已驗證的可行方法儲存在$memory中(ask_call_log鍵為ask:method:webgemini;請參閱ask_call_history.py --handler webgemini --recommend)。 webclaude是一個 claude.ai 聊天分頁,僅供測試使用——不是代理性 Claude。優先使用claude-fable-low,然後是claude-opus-4-8-high(請參閱references/seats-and-audits.md)。
模式路由
使用與使用者請求最匹配的狹義模式。
| 請求 | 執行時模式 | 必要詳細資訊 |
|---|---|---|
| 基於記憶體的問題 | ./run.sh ask "<question>" --json | 相關時包含範圍。 |
| 先知答案 | ./run.sh ask "<question>" --oracle ... --json | 應要求明確選擇後端/模型/人物設定。 |
| Pi 瀏覽器處理器捷徑 | ./run.sh webgpt What is 2 + 2?,來自 /skill:ask webgpt What is 2 + 2? | 改寫為帶有 --handler webgpt --execute --json 的 Tau single-call;使用 --compile-only 來發出 DAG,而不使用活動的瀏覽器傳輸。 |
| 單一具名處理器 | ./run.sh tau-dag "<request>" --handler <handler-or-model> --json | 瀏覽器處理器使用 $surf;非瀏覽器處理器是 $scillm 模型名稱,由 Tau 路由。加上 --execute 以進行活動傳輸。 |
| Pi 原生子代理目標 | 原生 Pi subagent 工具,在 subagent({ action: "list" }) 之後 | 僅在 Pi 內部執行且使用者明確命名 pi、subagent、pi-subagent、local reviewer 或 local coder 時使用。瀏覽器/模型/Tau Ask 請求不使用此路由。 |
| 多處理器圓桌會議 | ./run.sh tau-dag "<request>" --handler webclaude --handler gpt-5.5 ... --topology concurrent --execute --json | 圓桌會議是提示到 Tau-DAG。瀏覽器處理器預設會取得 Ask 擁有的新視窗。保留 browser-tab-lifecycle.json、dag.json、命令規格、處理器收據和加入收據。 |
| 競爭/評比 | ./run.sh compete "<task>" --handler webgpt --handler webclaude --handler gpt-5.5-high --criterion deterministic-proof --execute --json | 隔離的候選者加上競爭評分卡和獲勝者繼續請求。瀏覽器/API 處理器是同級的。專案代理必須在提升前本機驗證功能。 |
| 創作者-審查者循環 | ./run.sh tau-dag "<creator task then reviewer verdict>" --handler <a> --handler <b> --dag-template creator-reviewer --json | 順序;第二個處理器獲得第一個處理器的輸出。加上 --execute 以進行活動傳輸。 |
| 深度審查 | ./run.sh deep-review "<paper/idea URL or text>" --json | 參閱 references/modes.md 的「深度審查」章節。 |
| 產生圖像提示 | ./run.sh image-prompt "<description>" --json | 輸出結構化提示,含風格和藝術家參數。 |
| 健康檢查 | ./run.sh health-check --json | 檢查 OS/專案健康狀況。 |
| 關閉問題並驗證 | ./run.sh fix-issues --repo <owner/name> --issue <N> --handler gpt-5.5 --execute | 失敗關閉;修復和驗證以結構化 JSON 形式傳遞。 |
資源與工具有效期限
skills/ask/scripts/ 中的指令碼提供了歷史與健康命令。不使用時回收分頁資源。
技能記憶整合
指令碼 scripts/skill_memory_tool.py 提供知識序列化。
:context 是指令碼的環境變數覆寫機制。
有關詳細資訊,請參閱 .env.sample、references/ 目錄中的完整參考資料以及 README.md。