feat: add optional model override for spawn subagents (#1)
Some checks failed
Build Nanobot OAuth / build (push) Has been cancelled

Co-authored-by: Nanobot Agent <nanobot@wylab.me>
Co-committed-by: Nanobot Agent <nanobot@wylab.me>
This commit was merged in pull request #1.
This commit is contained in:
2026-02-14 03:13:47 +01:00
committed by Code Server
parent ea5bf4cf5d
commit 7c659bc0fe
2 changed files with 10 additions and 3 deletions

View File

@@ -50,6 +50,7 @@ class SubagentManager:
self,
task: str,
label: str | None = None,
model: str | None = None,
origin_channel: str = "cli",
origin_chat_id: str = "direct",
) -> str:
@@ -75,7 +76,7 @@ class SubagentManager:
# Create background task
bg_task = asyncio.create_task(
self._run_subagent(task_id, task, display_label, origin)
self._run_subagent(task_id, task, display_label, origin, model=model)
)
self._running_tasks[task_id] = bg_task
@@ -91,6 +92,7 @@ class SubagentManager:
task: str,
label: str,
origin: dict[str, str],
model: str | None = None,
) -> None:
"""Execute the subagent task and announce the result."""
logger.info(f"Subagent [{task_id}] starting task: {label}")
@@ -129,7 +131,7 @@ class SubagentManager:
response = await self.provider.chat(
messages=messages,
tools=tools.get_definitions(),
model=self.model,
model=model or self.model,
)
if response.has_tool_calls:

View File

@@ -51,15 +51,20 @@ class SpawnTool(Tool):
"type": "string",
"description": "Optional short label for the task (for display)",
},
"model": {
"type": "string",
"description": "Optional model override for the subagent (e.g. 'claude-sonnet-4-20250514'). Defaults to the main agent's model.",
},
},
"required": ["task"],
}
async def execute(self, task: str, label: str | None = None, **kwargs: Any) -> str:
async def execute(self, task: str, label: str | None = None, model: str | None = None, **kwargs: Any) -> str:
"""Spawn a subagent to execute the given task."""
return await self._manager.spawn(
task=task,
label=label,
model=model,
origin_channel=self._origin_channel,
origin_chat_id=self._origin_chat_id,
)