ask은(는) 무엇을 하나요?
중지 먼저
사용자가 $ask, /ask, ask 모드, oracle, deep review, parallel review, roundtable, argue, CAE gap review, 또는 ask DAG를 언급하면, 행동하기 전에 이 전체 파일을 읽으십시오. 그런 다음 사용자가 명시적으로 대체 방식을 요청하거나 런타임을 사용할 수 없고 해당 대체 방식이 보고되지 않는 한, 실제 런타임 진입점을 사용하십시오.
spawn_agent, 일반 모델 호출, 일반 웹 검색, 수동 요약 또는 발명된 리뷰를 $ask 대신 사용하지 마십시오.
런타임 진입점
이 디렉토리에서 명령을 실행하십시오. /skill:ask webgpt What is 2 + 2?와 같은 Pi 스킬-명령 구문은 일급 바로가기입니다. 선행 브라우저 핸들러(webgpt, webclaude, webkimi, webgemini 또는 webgrok)는 --execute --json과 함께 Tau single-call 브라우저-핸들러 DAG로 라우팅됩니다. $ask webgpt What is 2 + 2?와 같은 인라인 Pi 스킬 참조 및 띄어쓰기가 있는 자연어 철자 $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 "Team Orchestration" 참조).
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.jsonlreview.md,review.json, DAG 매니페스트 또는 브라우저 증거와 같은 모드별 출력
런타임 아티팩트는 기본적으로 .ask_artifacts/runs/<ask_id> 아래 또는 제공된 --run-output-root에 저장됩니다. 길거나, 실시간이거나, 생성된 실행의 경우 /mnt/storage12tb/skills/ask/outputs/...와 같은 스토리지 기반 루트를 선호합니다. 생성된 ask 아티팩트를 커밋하지 마십시오.
실행된 모든 핸들러 호출(성공 또는 실패)은 실행 체크포인트에서 ask_call_log 컬렉션의 $memory에 기록되며, 핸들러, 상태, failure_code, controlled_tab_id/대화 URL(있는 경우) 및 마지막 성공 호출의 입증된 방법(추론 선택, 탭 바인딩, 수명 주기 모드, 비밀번호가 삭제된 디스패치 명령)이 포함됩니다. 모델 ID는 컴파일 시 실시간 SciLLM 카탈로그에 대해 검증됩니다(invalid_scillm_model_id는 가장 가까운 유효한 대안과 함께 BLOCKED됨). 3회 이상 연속 실패가 기록된 브라우저 시트는 디스패치 전에 알려진 불량으로 플래그 지정되며 실패 코드가 포함됩니다. 시트에 의존하기 전에 확인하십시오: python3 skills/ask/scripts/ask_call_history.py --handler webgemini는 마지막 성공 호출과 최근 실패를 출력합니다. 재사용할 정확한 입증된 방법을 위해 --recommend를 추가하십시오. 기록된 성공이 없는 핸들러는 맹목적인 추측입니다. 먼저 컴파일 전용으로 실행하거나 저렴하게 프로브하십시오. 과거 실행은 역채울 수 있습니다: python3 skills/ask/scripts/backfill_call_log.py [outputs-root]는 디스크의 모든 노드 영수증을 멱등적으로(실행+노드당 결정적 _key) 수집합니다. 실행된 각 실행의 결과 JSON(및 execution-status.json)에는 handler_last_success도 포함됩니다: 시트별 메모리의 마지막 성공 방법(대화 URL, 탭, 수명 주기/레이아웃), 현재 연속 실패 및 피해야 할 실패 코드는 실행을 소비한 후 프로젝트 에이전트가 별도의 기록 조회를 수행할 필요가 없도록 컨텍스트에 반환됩니다.
심층 참조 (필요 시 읽기)
| 이 작업을 수행하기 전에 | 읽기 |
|---|---|
계획 파일이 있는 team-plan; status --run --projection | references/plans-and-status.md |
| 명시적인 Pi-네이티브 서브에이전트 대상 | references/pi-subagents.md |
| ask 출력(one-shot/roundtable/compete/clean-room)을 서브에이전트 레인으로 전환 | references/lane-handoff.md |
herdr list/who/send를 다른 에이전트 창으로 | references/herdr.md |
| one-shot 대 roundtable 대 compete 선택; 모델/노력 선택기 | references/modes.md |
| 패널 감사, 시트 명단, 속도 제한 시트, webclaude 정책 | references/seats-and-audits.md |
| 실시간 실행 실행/감독 (모니터링, 창, 페이로드 매트릭스, 차단 해제, 드리프트) | references/operations.md |
| 실행 실패 시 | references/diagnosis.md |
| 다중 시트 DAG 컴파일/실행 (roundtable/compete/creator-reviewer) | 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 |
| One-shot (시트당 독립 답변, 합의 없음) | ./run.sh one-shot "<question>" --handler <a> --handler <b> --handler <c> — N개의 독립적인 단일 호출 레인이 동시에 실행됩니다. 각 레인은 자체 논스 바인딩 답변 또는 명명된 차단자를 반환합니다. 부분 답변은 DEGRADED-but-usable입니다(종료 코드 0, --min-answered 이상인 경우). 원탁회의의 정족수 거부는 여기에 적용되지 않습니다. |
| 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를 통해 각 이슈를 수집하고, 디버거 사다리 게이트(needs_debugger는 실패 전환이 아티팩트로 설명할 수 없는 프로세스 내 런타임 상태인 경우에만 $debugger를 권장)를 통해 실시간 one-shot 핸들러로 진단하여 구조화된 원인/수정 JSON을 생성하며, 실패 시 종료됩니다. 기본값은 드라이 런입니다. --execute는 명명된 확인 명령(일반적으로 $agentic-evals 픽스처)이 실제로 통과한 후에만 이슈를 종료합니다. 확인 없음 → blocked; 확인 실패 → verify-failed, 이슈는 열린 상태로 유지됩니다. 이슈당 영수증은 outputs/fix-issues/ 아래에 있습니다. 게이트: fixtures/fix_issues.json. |
핸들러는 전송 방식이 다르더라도 동등합니다. 브라우저 핸들러(webgpt, webclaude, webkimi, webgemini, webgrok)는 $surf 및 $browser-oracle을 통해 실행됩니다. gpt-5.5-high, gpt-5.5-xhigh, Codex-opus-5-high 또는 chutes deepseek-ai/DeepSeek-V3.2-TEE와 같은 API/모델 핸들러는 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을 전달해야 합니다. null 탭 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)는 탭이 숨겨진 문서인 동안 컴포저 전송을 연기합니다. 공유 창에서는 하나의 탭만 전면에 있을 수 있으므로 N개의 동시 레인 중 N-1개는 항상 숨겨져
prompt_too_large_or_stalled("보내기 후에도 프롬프트가 컴포저에 남아 있음")로 중단됩니다. 따라서 동시 브라우저 레인은 기본적으로 격리된 창(시트당 하나의 창, 리뷰어 데스크탑에 배치)을 사용하여 모든 레인 탭이 보이는 문서가 되도록 합니다.--window-layout shared는 옵트인입니다. 이미 입력이 완료된 중단된 컴포저는 복구 가능합니다: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 브라우저-핸들러 바로가기 | /skill:ask webgpt What is 2 + 2?에서 ./run.sh webgpt What is 2 + 2? | --handler webgpt --execute --json과 함께 Tau single-call로 다시 작성됩니다. 실시간 브라우저 전송 없이 DAG를 내보내려면 --compile-only를 사용하십시오. |
| 단일 명명된 핸들러 | ./run.sh tau-dag "<request>" --handler <handler-or-model> --json | 브라우저 핸들러는 $surf를 사용합니다. 비브라우저 핸들러는 Tau가 라우팅하는 $scillm 모델 이름입니다. 실시간 전송을 위해 --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>" --repo ... --handler <creator> --handler <reviewer> --topology sequential --execute --json | 브라우저 핸들러는 순차적; 리뷰어는 컴파일 전에 생성자의 출력을 봅니다. references/workflows.md의 '생성자-리뷰어'를 읽으십시오. |
| 모든 것 진단/수정/종료 | ./run.sh fix-issues --repo <owner/name> --issue <N> ... | 빠른 시작 테이블의 마지막 행을 참조하십시오. NEEDS_INTERVIEW/blocked에 실패 시 종료됩니다. |
경고 및 차단 규칙
- 브라우저 핸들러는 API 핸들러보다 느리며 (네트워크 지연, 인간 속도 타이핑, UI 상태) 조절 및 리소스 경합이 발생하기 쉽습니다. 실시간 실행을 위해 둘 이상의 브라우저 핸들러를 예약할 때는 이 점을 고려하십시오. 컴파일 전용 프로브를 먼저 사용하십시오.
execute없음: 드라이 런 모드. 컴파일 및 미리보기 전용. 실행하지 않습니다.--execute가 명시적으로 제공되거나execute가 true인 DAG 매니페스트를 통해 실행을 확인할 때까지execute가 누락된 것을 오류로 처리하지 마십시오.- 출력 크기:
webgpt와 같은 브라우저 핸들러는 종종 API 모델보다 짧은 출력을 생성합니다. 예를 들어 출력 토큰 제한, 컴포저 버퍼 제한, 또는 UI 스크롤 동작 때문입니다. 긴 형식의 출력이 필요한 작업의 경우---를 생성기 모드로 명시적으로 설정하거나 파일/스니펫 전송(webgemini는g.co/gemini/share를 통해) 또는 API 기반 모델(gpt-5.5-high,claude-opus-5-high)을 선호하십시오. - 실시간 대화는 API 호출이 아닌 브라우저 탭에서 발생합니다.
$surf또는$browser-oracle출력은 증거로 사용되지만 작업 에이전트와 동일한 프로세스 수명 주기를 공유하지 않습니다. 작업 에이전트가 충돌하거나 재설정되면 브라우저 세션이 분리될 수 있습니다. 이에 대한 회복력을 위해 설계하십시오. - 탭 가시성 게이트: 동시 브라우저 레인에서 N-1개는 기본적으로 숨겨져 있습니다. 격리된 창을 사용하거나(
--window-layout isolated), 컴파일 전용 검증을 사용하거나, 프로브 먼저 사용하십시오.webgemini는 숨겨진 탭에서 전송을 연기합니다. 검증된 시트별 방법은ask_call_log를 통해 사용할 수 있습니다. webclaude는 claude.ai 채팅 탭입니다. 에이전트가 아닙니다. 에이전트 Claude 작업에는claude-모델(claude-sonnet-8-high)을 사용하십시오.webclaude브라우저 탭은 '기능 미리보기'에 대해 테스트 전용이며, '에이전트 Claude' 기능이 브라우저 채팅을 넘어 API에 도달하는 경우 제한될 수 있습니다.- 브라우저 탭 수명 주기: 기본값은
fresh-temporary(실행 후 창 닫기)입니다. 후속 작업이 예상되는 경우fresh-keep(실행 후 창 유지) 또는reuse-bound(실행 간 탭 재사용, 수동으로 바인딩된 경우에만 해당)로 재정의하십시오. - 직접 오라클 경로는 차단됨:
$ask chatgpt ...와 같은 직접 경로는 실패 시 종료됩니다.--oracle-backend webgpt와 같은 플래그도 차단됩니다. 모든 브라우저 핸들러 경로는 Taubrowser-handlerDAG를 통해 이루어져야 합니다. - 환경별 엄격함:
CI=true또는--production이 설정된 경우validate_command는 모든$참조가 유효한 확인된 도구 이름인지 확인합니다. 실패 시 차단됩니다. - 지식 차단:
ask_003스킬이 로드 중인 경우references/,scripts/,fixtures/외부의 지식 파일에서 읽는 경우에도$ask실행을 참조하십시오. 스킬이 없는 질문에 대해 발명하지 마십시오.