$git clone https://github.com/vakovalskii/qwen-native-agentsГайд и навык для того, чтобы строить и промптить агентов под модели семейства Qwen3.x на их родном диалекте — так, как это делает сама Alibaba.
| 1 | # qwen-native-agents |
| 2 | |
| 3 | **Гайд и навык для того, чтобы строить и промптить агентов под модели семейства Qwen3.x на их родном диалекте — так, как это делает сама Alibaba.** |
| 4 | |
| 5 | > Скачай папку, дай её своему агенту (Claude Code, Cursor, любой LLM-обвязке) — и он начнёт собирать Qwen-агентов правильно: с нужным форматом tool-calling, тегами, thinking-режимом и системным промптом, под которые модель обучалась. |
| 6 | |
| 7 | --- |
| 8 | |
| 9 | ## Главный тезис |
| 10 | |
| 11 | Qwen3.x обучались **в связке** с фреймворками Alibaba ([qwen-code](https://github.com/QwenLM/qwen-code) и [Qwen-Agent](https://github.com/QwenLM/Qwen-Agent)). Форматы вызова инструментов, thinking-режим, структура системного промпта — не абстрактные «best practices», а конкретные конвенции, зашитые в веса во время обучения. |
| 12 | |
| 13 | Исследование Андрея Иванова (NLP-инженер R&D red_mad_robot) показало это эмпирически: если инвертировать директивы оригинального системного промпта Qwen Code, **Qwen3.6-35b-a3b держится за свои привычки сильнее, чем контрольная модель** (gpt-oss-120b): |
| 14 | |
| 15 | | Директива (перевёрнута) | Реакция контроля | Реакция Qwen3.6 | |
| 16 | |---|---|---| |
| 17 | | Длина ответа | ×4 сильнее | слабая | |
| 18 | | Комментарии в коде | ×26 больше | не изменилась | |
| 19 | | Markdown-разметка | ×1.7 меньше | не изменилась | |
| 20 | |
| 21 | **Вывод для практики: не переучивай модель — говори на её родном диалекте.** Чем ближе твой агент к конвенциям qwen-code / Qwen-Agent, тем предсказуемее и надёжнее ведёт себя Qwen. Этот репозиторий — извлечённый из исходников «родной диалект» плюс правила, как ему следовать. |
| 22 | |
| 23 | --- |
| 24 | |
| 25 | ## Как пользоваться |
| 26 | |
| 27 | **Человеку:** читай [`SKILL.md`](./SKILL.md) как краткую памятку, а [`references/`](./references/) — как справочник по каждой теме. |
| 28 | |
| 29 | **Агенту (Claude Code и совместимые):** файл [`SKILL.md`](./SKILL.md) имеет frontmatter и подхватывается как навык. Положи папку в `~/.claude/skills/` (или укажи путь) — агент загрузит её, когда задача касается построения/промптинга Qwen-агента. |
| 30 | |
| 31 | **Любой другой LLM-обвязке:** скорми `SKILL.md` + нужный файл из `references/` как контекст. |
| 32 | |
| 33 | --- |
| 34 | |
| 35 | ## Что внутри |
| 36 | |
| 37 | | Файл | О чём | |
| 38 | |---|---| |
| 39 | | [`SKILL.md`](./SKILL.md) | Ядро: когда применять, 10 правил, чек-лист | |
| 40 | | [`references/01-system-prompt.md`](./references/01-system-prompt.md) | Как писать системный промпт: структура, тон, «привычки» | |
| 41 | | [`references/02-tools.md`](./references/02-tools.md) | Нейминг инструментов, описания, JSON-schema параметров | |
| 42 | | [`references/03-tool-calling.md`](./references/03-tool-calling.md) | Форматы function-calling (NOUS, ✿, coder-XML, vl-JSON), chat template, стоп-слова | |
| 43 | | [`references/04-thinking.md`](./references/04-thinking.md) | Thinking-режим: `<think>`, `reasoning_content`, `enable_thinking` по бэкендам | |
| 44 | | [`references/05-tags-and-markup.md`](./references/05-tags-and-markup.md) | Теги внутри промптов: `<example>`, `<tools>`, `<tool_response>`, `<system-reminder>`, компрессия | |
| 45 | | [`references/06-habits-and-antipatterns.md`](./references/06-habits-and-antipatterns.md) | Тезис исследования: за что модель держится и что НЕ навязывать | |
| 46 | | [`examples/`](./examples/) | Готовые образцы: системный промпт, определение тула, минимальный агент | |
| 47 | |
| 48 | --- |
| 49 | |
| 50 | ## Бенчмарк |
| 51 | |
| 52 | Воспроизведение swing-теста на API [neuraldeep.ru](https://neuraldeep.ru): 6 директив × 5 задач × 2 условия (baseline/inverted) × 3 модели — 180 запросов, 0 ошибок. Меряется финальный `content`, thinking выключен. Код и сырые данные — в [`benchmark/`](./benchmark/), полный отчёт с оговорками — [`benchmark/REPORT.md`](./benchmark/REPORT.md). |
| 53 | |
| 54 | `swing = |mean(inverted) − mean(baseline)|` — насколько модель меняет поведение при инверсии директивы. **Больше swing → слушает системный промпт; меньше → держится за трейн-привычку.** |
| 55 | |
| 56 | ### Средние значения метрики (baseline → inverted) |
| 57 | |
| 58 | | Директива | Метрика | qwen3.6-35b-a3b | gpt-oss-120b | gemma-4-31b | |
| 59 | |---|---|---|---|---| |
| 60 | | length | слов | 10 → 1116 | 18 → 1041 | 8 → 556 | |
| 61 | | **comments** | комм.строк | **1 → 10** | **0 → 22** | **0 → 23** | |
| 62 | | markdown | md-маркеров | 89 → 1 | 87 → 12 | 77 → 0 | |
| 63 | | run_tests | дол |