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).
26 lines
870 B
YAML
26 lines
870 B
YAML
max_depth: 6
|
|
max_children_per_agent: 8
|
|
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
|
|
# browser_use_url: http://127.0.0.1:3010
|
|
web_timeout_ms: 45000
|
|
max_download_bytes: 10485760
|
|
experiment:
|
|
image: python:3.12-slim
|
|
cpus: 1
|
|
memory_mb: 1024
|
|
timeout_seconds: 300
|