feat(issues): add max_turns and thinking_budget_multiplier to SpecialistConfig

Co-Authored-By: Claude Opus 4.6 <[email protected]>
This commit is contained in:
Sondre Engebråten
2026-02-14 13:16:42 +01:00
co-authored by Claude Opus 4.6
parent 8f16a9573a
commit 477a9e4a3e
3 changed files with 20 additions and 1 deletions
@@ -82,24 +82,32 @@ INVESTIGATION_SPECIALISTS: list[SpecialistConfig] = [
prompt_file="investigation_root_cause.md",
tools=["Read", "Grep", "Glob"],
description="Trace the bug/issue to its source code paths and identify the root cause",
max_turns=40,
thinking_budget_multiplier=1.5,
),
SpecialistConfig(
name="impact",
prompt_file="investigation_impact.md",
tools=["Read", "Grep", "Glob"],
description="Determine blast radius, affected components, and user impact",
max_turns=25,
thinking_budget_multiplier=1.0,
),
SpecialistConfig(
name="fix_advisor",
prompt_file="investigation_fix_advice.md",
tools=["Read", "Grep", "Glob"],
description="Suggest concrete fix approaches with files to modify and patterns to follow",
max_turns=30,
thinking_budget_multiplier=1.0,
),
SpecialistConfig(
name="reproducer",
prompt_file="investigation_reproduction.md",
tools=["Read", "Grep", "Glob"],
description="Determine reproducibility, check test coverage, and suggest test approaches",
max_turns=35,
thinking_budget_multiplier=1.0,
),
]
@@ -337,15 +345,22 @@ Use Read, Grep, and Glob tools to explore the codebase.
_output_schema = (
_schema_class.model_json_schema() if _schema_class else None
)
# Apply per-specialist thinking multiplier
_effective_budget = (
int(thinking_budget * cfg.thinking_budget_multiplier)
if thinking_budget
else None
)
return self._run_specialist_session(
config=cfg,
prompt=_prompt,
project_root=project_root,
model=model,
thinking_budget=thinking_budget,
thinking_budget=_effective_budget,
output_schema=_output_schema,
agent_type="investigation_specialist",
context_name=f"Investigation:{cfg.name}",
max_messages=cfg.max_turns,
)
return factory
@@ -57,6 +57,8 @@ class SpecialistConfig:
prompt_file: str
tools: list[str]
description: str
max_turns: int = 30
thinking_budget_multiplier: float = 1.0
class ParallelAgentOrchestrator:
+2
View File
@@ -595,6 +595,8 @@ def _import_orchestrator():
prompt_file: str
tools: list
description: str
max_turns: int = 30
thinking_budget_multiplier: float = 1.0
class ParallelAgentOrchestrator:
def __init__(self, project_dir, github_dir, config, progress_callback=None):