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.

Downloads last month
23
Safetensors
Model size
5B params
Tensor type
BF16
·
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support

Model tree for smirki/qwen3.5-4b-terminal-v1

Finetuned
Qwen/Qwen3.5-4B
Finetuned
(1098)
this model