smirki/qwen3.5-4b-terminal-v1
A Qwen3.5-4B variant for terminal and coding-agent use. Full merged weights in
bf16, same architecture, tokenizer, chat template, and native XML tool-call
format as Qwen/Qwen3.5-4B. Drop-in replacement wherever the base model runs.
Terminal-Bench 2.1
Harbor terminus-2 harness, k=2 attempts per task, 65,536-token context with
8,192 output tokens per turn, thinking on, shipped per-task timeouts, at most
24 concurrent trials per H100. The stock model was run under the identical
setup. 76 of the 89 tasks (the 13 with agent budgets of 60 minutes or more
were not run for either column).
| Qwen3.5-4B | this model | |
|---|---|---|
| mean reward (152 trials) | 0.145 | 0.211 |
| tasks solved at least once | 15 / 76 | 21 / 76 |
| tasks solved both attempts | 7 | 11 |
| trials timed out | 95 | 83 |
| median output tokens per trial | 29.1k | 29.6k |
Per task: 10 improved, 1 regressed, 65 unchanged (sign test p = 0.012).
Running it
vllm serve smirki/qwen3.5-4b-terminal-v1 \
--max-model-len 65536 \
--language-model-only \
--enable-auto-tool-choice --tool-call-parser qwen3_xml \
--reasoning-parser qwen3
--language-model-only drops the unused vision tower. The tool-call parser
name is qwen3_xml (alias qwen3_coder) in vLLM 0.28; the hermes parser
does not understand this model's tool-call format.
Sampling defaults from the Qwen3.5 model card apply unchanged: thinking mode
temperature 1.0 / top_p 0.95 / top_k 20 / presence_penalty 1.5; non-thinking
mode temperature 0.7 / top_p 0.8 / top_k 20. Non-thinking mode is selected by
passing enable_thinking=False to the chat template, exactly as for the base
model.
from openai import OpenAI
client = OpenAI(base_url="http://localhost:8000/v1", api_key="EMPTY")
r = client.chat.completions.create(
model="smirki/qwen3.5-4b-terminal-v1",
messages=[{"role": "user", "content": "List the largest files under /var/log."}],
tools=[{"type": "function", "function": {
"name": "bash",
"description": "Run a shell command",
"parameters": {"type": "object",
"properties": {"command": {"type": "string"}},
"required": ["command"]}}}],
)
print(r.choices[0].message.tool_calls)
Files
model.safetensors (bf16, 9.1 GB), config.json, generation_config.json,
tokenizer files, and the preprocessor configs inherited from the base model.
License
Apache-2.0, inheriting the license of Qwen/Qwen3.5-4B by the Qwen team,
Alibaba Cloud.