feat: keep the main chat responsive while subagents run
The main session and subagents share the same model backend; when that backend serializes requests (cloud rate limits or a local server), subagent streams queue the main chat. Adds two config knobs: - agent_concurrency (default 3): a semaphore in AgentTree.start caps how many subagent sessions stream simultaneously (slot is released on completion, timeout, or setup error so failures cannot deadlock the queue). - subagent_model (optional): routes spawned agents to a different model or backend, e.g. ollama/gemma4:e4b, so subagents never contend with the main session at all. Wired through the spawn tool, the main-session tools, and the per-agent runtime tools. Documents both in .hypothesis-machine.example.yaml and adds a concurrency-cap test (43 tests passing, tsc clean).
This commit is contained in:
@@ -4,6 +4,14 @@ max_active_agents: 32
|
||||
max_total_agents_per_run: 200
|
||||
max_iterations_without_progress: 3
|
||||
max_research_iterations: 12
|
||||
agent_timeout_seconds: 1800
|
||||
# Maximum number of subagent sessions streaming at the same time. Lower it if
|
||||
# the main chat stalls while subagents run on the same model backend.
|
||||
agent_concurrency: 3
|
||||
# Route subagents to a different model/backend so they never contend with the
|
||||
# main session, e.g. "ollama/gemma4:e4b" or "deepseek/deepseek-v4-flash".
|
||||
# "inherit" (unset) uses the caller's model.
|
||||
# subagent_model: "ollama/gemma4:e4b"
|
||||
allow_recursive_spawning: true
|
||||
searxng_url: http://127.0.0.1:8888
|
||||
firecrawl_url: http://127.0.0.1:3002
|
||||
|
||||
Reference in New Issue
Block a user