zhiyuanhucs/agentic-sft-v4-teacher-v1
Agentic SFT trajectories from DeepSeek-V4-Flash (v1) 2,230 verified-correct agent trajectories over 1,208 distinct tasks, collected by running DeepSeek-V4-Flash as a teacher against four task sources and keeping only runs whose own test suites passed. This is v1: teacher-side filtering only. A v2 will additionally exclude tasks that the intended student model already solves; that baseline is still running. Composition Source Trajectories Tasks kept Median… See the full description on the dataset page: https://huggingface.co/datasets/zhiyuanhucs/agentic-sft-v4-teacher-v1.
Agentic SFT trajectories from DeepSeek-V4-Flash (v1)
2,230 verified-correct agent trajectories over 1,208 distinct tasks, collected by running DeepSeek-V4-Flash as a teacher against four task sources and keeping only runs whose own test suites passed.
This is v1: teacher-side filtering only. A v2 will additionally exclude tasks that the intended student model already solves; that baseline is still running.
Composition
The three sources teach different things and the step counts show it. The swe-rebench halves are bug fixes where the model writes a patch and verifies it against a test suite, so nearly every trajectory runs tests. TMax is terminal work -- configuring, installing, repairing -- which is often a handful of commands with no suite to run. Mixing them is deliberate; the ratio is not, so weight them to taste.
How the tasks were chosen
swe-rebench-v2 is sampled to SWE-bench Pro's language mix (38% Go, 36% Python, 22% JS, 2% TS) with at most two instances per repository. The 2025-12 swe-rebench release is Python only, which is why both appear here: the older one alone cannot represent a multi-language target.
TMax is apportioned to Terminal-Bench 2.1's category distribution rather than sampled flat. TMax balances its own nine domains at ~11% each, but TB2.1 is 29% software engineering, so a uniform sample under-represents the target by a factor of three. Difficulty is apportioned within each domain to TB2.1's shape as well (33% hard / 61% medium / 6% easy).
How trajectories were filtered
A run must first pass the task's own verifier. Beyond that:
- Runs longer than 120 steps are dropped.
- Runs that write far more often than they read are dropped as thrashing -- that pattern is a model brute-forcing its way out of being stuck, not a demonstration worth imitating.
- Runs under 2 steps are dropped as trivial.
- Runs where most commands are literal repeats are dropped.
- At most 2 runs per task survive, preferring ones that ran tests, then shorter ones.
Fields
Each line is one trajectory:
messages is complete enough to train on directly; nothing needs to be joined back to the source datasets.
Looking a task up upstream
task is the upstream ID verbatim, so an exact match works:
For example 20c__ctl-3 is an instance_id in SWE-rebench and task_000029_21fde3c1 is a task_id in TMax-15K.
Caveats
- Correct-by-tests is not the same as good. The filters above remove the worst of it, but a passing patch can still be ugly.
- TMax verifiers are generated alongside the tasks, so they check what the generator thought mattered.
- Nothing here is deduplicated against any benchmark you may want to evaluate on. swe-rebench and TMax are both synthetic-adjacent and drawn from public repositories.
