Skip to main content

subagent-intervention

Out-of-band parent-to-subagent intervention via file channel. Parent monitors subagent progress and can stop, redirect, or inject key info without waiting for the subagent to ask.

معلومات المصدر

المستودع
XHXIAIEIN/orchestrator
آخر نشاط في المصدر
١٩ أبريل ٢٠٢٦ في ١٥:٢٨
لغة SKILL.md المكتشفة
الإنجليزية
النجوم
٠
التفرعات
٠

خيارات التثبيت

يُحدَّد Prompt الذي يراجع المصدر أولًا بشكل افتراضي. يمكنك التبديل إلى أمر مباشر أو تنزيل نسخة محلية.

مراجعة ملفات المصدر

اقرأ SKILL.md وأي ملفات مرافقة يعرضها SkillsMP قبل أن تقرر التثبيت.

مستكشف الملفات
2 ملفات

عرض SKILL.md

SKILL.md
تعليمات المصدر · معاينة للقراءة فقط
name
subagent-intervention
description
Out-of-band parent-to-subagent intervention via file channel. Parent monitors subagent progress and can stop, redirect, or inject key info without waiting for the subagent to ask.
# Subagent Intervention ## Identity You are the parent agent orchestrating a long-running subagent task. This skill gives you a live control channel into the subagent without interrupting its execution loop — you write files, the subagent's PostToolUse hook reads and acts on them. ## How You Work ### Step 1: Parent Sets Up Temp Directory Before dispatching the subagent, create the IPC root: ```bash TASK_ID="my-task-$(date +%s)" mkdir -p temp/${TASK_ID}/ ``` ### Step 2: Pass `task_id` to Subagent Include `TASK_ID` in the subagent's environment or prompt: ``` Agent( subagent_type="claude-sonnet", system_prompt="...", prompt=f"Your task_id is {TASK_ID}. Export TASK_ID={TASK_ID} before running hooks.", env={"TASK_ID": TASK_ID} ) ``` The subagent must export `TASK_ID` so the `subagent-channel.sh` PostToolUse hook can locate its channel files. ### Step 3: Parent Monitors via Monitor Tool After dispatch, use the Monitor tool to stream `temp/${TASK_ID}/output.txt`: ``` Monitor(path=f"temp/{TASK_ID}/output.txt") ``` Each line the subagent writes to `output.txt` arrives as a notification. This is how you detect drift, mistakes, or completion. ### Step 4: Parent Writes `_intervene.txt` When Drift Detected If you see something wrong in the output stream: ```bash echo "Stop using Plan A. Switch to approach B: <specific instructions>" > temp/${TASK_ID}/_intervene.txt ``` On the subagent's next PostToolUse hook fire, `subagent-channel.sh` reads `_intervene.txt`, deletes it, and outputs: ```json {"decision": "block", "reason": "[PARENT INTERVENTION] Stop using Plan A. Switch to approach B: ..."} ``` The subagent receives this as a continue-prompt injection and redirects. ### Step 5: Stopping the Subagent To terminate the subagent after its current turn: ```bash echo "Task cancelled: higher priority work arrived." > temp/${TASK_ID}/_stop.txt ``` The hook fires, reads+deletes `_stop.txt`, and blocks with `[parent-stop]` reason. ### Step 6: Injecting Key Info (Non-Blocking) To add context without stopping the subagent: ```bash echo "The API endpoint changed to https://api.example.com/v2/" > temp/${TASK_ID}/_keyinfo.txt ``` The hook reads+deletes `_keyinfo.txt` and appends to `.claude/hooks/state/keyinfo-${TASK_ID}.txt`. The accumulated key info can be read into the next prompt. ### Step 7: Subagent's Obligation At the end of every turn, the subagent MUST call the `consume_intervention_files` hook (implemented as `subagent-channel.sh` PostToolUse hook). This ensures channel files are checked after every tool use, not just at turn end. ## Output Format - **Intervention block**: `{"decision": "block", "reason": "[PARENT INTERVENTION] <content of _intervene.txt>"}` - **Stop block**: `{"decision": "block", "reason": "[parent-stop] <content of _stop.txt>"}` - **Key info**: silent — content appended to `state/keyinfo-${TASK_ID}.txt`, no block ## Quality Bar - Channel files are consume-once: read → delete → act. Never re-read a deleted file. - Parent must not write multiple channel files simultaneously without ordering guarantees. Write one at a time. - `_intervene.txt` takes priority over `_keyinfo.txt` in the hook (checked last, most disruptive). - `_stop.txt` is checked first — if stop is set, skip all other channel files. ## Boundaries - See `constraints/channel-contract.md` for Layer 0 file-channel ownership rules. - Subagent MUST NOT write `_stop.txt`, `_keyinfo.txt`, or `_intervene.txt`. - The Monitor tool observes `output.txt` — this is a different file, not a channel file.
عرض على GitHub