44
55Six-phase workflow:
66 1. Mode Selection - Analyze user request to determine design/code/both
7- 2. Dispatch - Launch parallel Explore agents (one per randomly selected target)
7+ 2. Dispatch - Launch parallel exploration sub- agents (one per randomly selected target)
88 3. Triage - Review findings, structure as smells with IDs
99 4. Cluster - Group smells by shared root cause
1010 5. Contextualize - Extract user intent, prioritize issues
@@ -205,7 +205,7 @@ def select_targets(n: int = DEFAULT_CATEGORY_COUNT, mode_filter: str = "both") -
205205
206206
207207def build_explore_dispatch (n : int = DEFAULT_CATEGORY_COUNT , mode_filter : str = "both" , scope : str | None = None ) -> str :
208- """Build parallel dispatch block for explore agents.
208+ """Build parallel dispatch block for exploration sub- agents.
209209
210210 Each category uses the same 5-step explore workflow; only the category reference differs.
211211 Uses TemplateDispatchNode for SIMD-style dispatch: single instruction, multiple data.
@@ -223,7 +223,7 @@ def build_explore_dispatch(n: int = DEFAULT_CATEGORY_COUNT, mode_filter: str = "
223223 for t in selected
224224 )
225225
226- # Scope propagation to explore agents
226+ # Scope propagation to exploration sub- agents
227227 scope_arg = f" --scope { shlex .quote (scope )} " if scope else ""
228228
229229 # Template prompt with $var placeholders
@@ -238,12 +238,12 @@ def build_explore_dispatch(n: int = DEFAULT_CATEGORY_COUNT, mode_filter: str = "
238238 command = f'<invoke working-dir="{ _SKILLS_DIR } " cmd="python3 -m { EXPLORE_MODULE_PATH } --step 1 --category $ref --mode $mode{ scope_arg } " />'
239239
240240 node = TemplateDispatchNode (
241- agent_type = "general-purpose " ,
241+ agent_type = "exploration-capable " ,
242242 template = template ,
243243 targets = targets ,
244244 command = command ,
245- model = "haiku " ,
246- instruction = f"Launch { len (selected )} general-purpose sub-agents for code smell exploration." ,
245+ model = "fast lightweight model suitable for high-fanout pattern scanning " ,
246+ instruction = f"Launch { len (selected )} exploration sub-agents for code smell exploration." ,
247247 )
248248
249249 return render_template_dispatch (node )
@@ -273,7 +273,7 @@ def format_expected_output(sections: dict[str, str]) -> str:
273273 },
274274 2 : {
275275 "title" : "Dispatch / Category Selection" ,
276- "brief" : "Non-custom: dispatch explore agents. Custom: LLM selects categories." ,
276+ "brief" : "Non-custom: dispatch exploration sub- agents. Custom: LLM selects categories." ,
277277 },
278278 3 : {
279279 "title" : "Category Verification" ,
@@ -287,7 +287,7 @@ def format_expected_output(sections: dict[str, str]) -> str:
287287 "title" : "Triage" ,
288288 "brief" : "Structure smell findings with IDs for synthesis" ,
289289 "actions" : [
290- "REVIEW all smell_report outputs from explore agents." ,
290+ "REVIEW all smell_report outputs from exploration sub- agents." ,
291291 "" ,
292292 "STRUCTURE each finding as a smell object with unique ID:" ,
293293 "" ,
@@ -1190,7 +1190,7 @@ def format_step_2_dispatch(n: int, info: dict, mode_filter: str, scope: str | No
11901190 "" ,
11911191 format_expected_output ({
11921192 "Per target" : "smell_report with severity (none/low/medium/high) and findings" ,
1193- "Format" : "<smell_report> blocks from each Explore agent" ,
1193+ "Format" : "<smell_report> blocks from each exploration sub- agent" ,
11941194 })
11951195 ]
11961196
@@ -1357,23 +1357,23 @@ def format_step_4_dispatch_custom(info: dict, scope: str | None = None) -> str:
13571357 invoke_cmd = f'<invoke working-dir="{ _SKILLS_DIR } " cmd="python3 -m { EXPLORE_MODULE_PATH } --step 1 --category $CATEGORY_REF --mode code{ scope_arg } " />'
13581358
13591359 actions = [
1360- "DISPATCH explore agents for verified categories." ,
1360+ "DISPATCH exploration sub- agents for verified categories." ,
13611361 "" ,
13621362 "Using the <verified_categories> from Step 3:" ,
13631363 "" ,
1364- '<parallel_dispatch agent="Explore " count="N">' ,
1364+ '<parallel_dispatch agent="exploration-capable " count="N">' ,
13651365 " <instruction>" ,
1366- " Launch one general-purpose sub-agent per verified category." ,
1366+ " Launch one exploration-capable sub-agent per verified category." ,
13671367 " </instruction>" ,
13681368 "" ,
13691369 ' <execution_constraint type="MANDATORY_PARALLEL">' ,
13701370 " You MUST dispatch ALL agents in ONE assistant message." ,
13711371 " FORBIDDEN: Waiting for any agent before dispatching the next." ,
1372- ' FORBIDDEN: Using "Explore" subagent_type. Use "general-purpose".' ,
13731372 " </execution_constraint>" ,
13741373 "" ,
13751374 " <model_selection>" ,
1376- " Use HAIKU (default) for all agents." ,
1375+ " Prefer a fast lightweight model for high-fanout exploration." ,
1376+ " If unavailable, use your environment's default model." ,
13771377 " </model_selection>" ,
13781378 "" ,
13791379 " <template>" ,
@@ -1578,9 +1578,9 @@ def main(
15781578 default = "both" ,
15791579 help = "Category selection mode. custom: LLM selects based on problem statement" )
15801580
1581- # Filesystem constraint propagated to all explore agents
1581+ # Filesystem constraint propagated to all exploration sub- agents
15821582 parser .add_argument ("--scope" , type = str , default = None ,
1583- help = "Filesystem scope constraint (e.g., 'src/planner/'). Propagates to explore agents." )
1583+ help = "Filesystem scope constraint (e.g., 'src/planner/'). Propagates to exploration sub- agents." )
15841584
15851585 # Verification loopback counter (custom mode only, internal)
15861586 parser .add_argument ("--retry" , type = int , default = 0 ,
0 commit comments