The "Tool calling, server-side tools, thinking on/off" step was the
single largest cost in the inference smoke jobs:
Mac: 338s (the user complaint)
Linux: 176s
Windows: 85s (variance bounded; macos runner is ~10 tok/s vs ~30 tok/s)
Two surgical cuts that preserve all distinct coverage axes:
(1) Drop the dedicated "Server-side bash (terminal) tool" axis. The
python-tool axis above already exercises the same server-side
agentic-loop wiring (SSE streaming + tool dispatch + tool-result
re-prompting); the only difference between the two axes is which
entry of the tool registry resolves: python_run vs terminal_run.
Studio's terminal tool has its own unit tests under
tests/studio/test_terminal_tool*.py; the smoke axis was duplicated
coverage. Saves one full SSE round per job (~30 s on macos, ~12 s
on linux/windows).
(2) Halve max_tokens on the remaining 4 axes. The previous numbers
(300-600 across the board) were 2-4x what each prompt actually
needs to land an answer. New caps:
function calling: 300/120/600 -> 128/96/128 (mac/linux/win)
python tool: 256/600/600 -> 128/320/320
web_search: 200/400/400 -> 96/192/192
thinking on/off: 150/300/300 -> 80/160/160
All assertions are unchanged. function calling stays grammar-
constrained by tool_choice='required'; python tool stays gated on
"56088" appearing in the SSE stream; web_search stays a
non-blocking probe; thinking on/off stays gated on the think
marker behaviour.
Expected wallclock:
Mac 338 -> ~170 s (target: -50%)
Linux 176 -> ~80 s
Windows 85 -> ~50 s
If a real Studio regression slips through, the linux/windows axis
still has the hard `assert "56088" in content` (python tool agentic
loop). The python axis remains the canonical proof that tool dispatch
+ tool-result re-prompting both work.
|
||
|---|---|---|
| .. | ||
| ISSUE_TEMPLATE | ||
| workflows | ||
| CODEOWNERS | ||
| dependabot.yml | ||
| FUNDING.yml | ||