YAML Metadata Warning:empty or missing yaml metadata in repo card
Check out the documentation for more information.
Qwen3.5/3.6 Agentic Coding Finetune
Produce releasable GGUF models for Kilo Code / OpenCode that emit correct tool calls and avoid Ornith loop/broken-tool-call failures.
Goal
Train an open-source coding agent that works reliably in local IDEs (Kilo/OpenCode/Omp.sh) via XML tool calling. The 4B model trains entirely on consumer hardware (RTX 3060), then GRPO scales it to 27B.
Pipeline: SFT β GRPO β Release
| Stage | Model | Hardware | Data | Purpose |
|---|---|---|---|---|
| V1 | Phhofm/qwen3.5-4b-agentic-local |
RTX 3060 12GB | 8.5K canonical tool traces | Prove pipeline viability locally |
| V2 | Phhofm/qwen3.5-4b-agentic-v2 |
Vast.ai A100 80GB | V1 + multi-turn GRPO | RL-hardened recovery, anti-loop |
| V3 | Phhofm/qwen3.6-27b-agentic |
Vast.ai | V2 scaled to 27B | Beat Ornith on SWE-bench |
Current Status
Training in progress: V1 SFT on RTX 3060
- 8.5K canonical tool traces (all 10 tools)
- LoRA r=32, batch=2, grad_accum=4
- Checkpoint available:
outputs/sft_v1/checkpoint-500/
Canonical Tools (10)
The model emits XML tool calls compatible with Kilo/OpenCode:
<read><path>file.py</path></read>
<edit><path>file.py</path><old_string>x</old_string><new_string>y</new_string></edit>
<bash><command>ls -la</command></bash>
<glob><pattern>**/*.py</pattern></glob>
<grep><pattern>TODO</pattern></grep>
<write><path>out.py</path><content>def f(): pass</content></write>
<websearch><query>python requests api</query></websearch>
<webfetch><url>https://docs.python.org/3/</url></webfetch>
<question><questions>What file should be modified?</questions></todowrite>
Omp.sh compatibility: Uses XML tool calling. Likely compatible with same format. Check their docs at omp.sh for exact param names.
Quick Start
# Setup
uv venv .venv --python 3.12
uv pip install -r requirements.txt
# V1 SFT (local)
./train/run_safe.sh sft_4b --data data/v5_training.jsonl --context 4096 --lora-r 32
# Validate (when training complete)
./train/run_safe.sh post_sft_validate --model outputs/sft_v1 --tasks benchmark/benchmark_tasks.jsonl
# Convert to GGUF
.venv/bin/python train/release.py --model outputs/sft_v1 --output models/
Data
| File | Description |
|---|---|
data/v5_tool_patterns.jsonl |
Converted tool traces (4.8K rows) |
data/v5_synthetic.jsonl |
Recovery/grounding trajectories (25K rows) |
data/v5_training.jsonl |
Merged training set (8.5K unique rows) |
Key Files
| File | Purpose |
|---|---|
IMPLEMENTATION.md |
Full pipeline plan with milestones |
train/sft_4b.py |
SFT training with QLoRA |
train/grpo_4b.py |
GRPO training (future: ART) |
train/kilo_parser.py |
Canonical parser/renderer |
train/post_sft_validate.py |
Validation gate (Β§7) |
train/gen_synthetic.py |
Recovery trajectory generator |
Inference Settings
- Temperature: 1.0 (lower causes repetition loops)
- top_p: 0.95
- KV cache: BF16
Inference Providers NEW
This model isn't deployed by any Inference Provider. π Ask for provider support