Are you the author? Sign in to claim
Build & prompt Qwen3.x agents in their native dialect — extracted from qwen-code & Qwen-Agent
Гайд и навык для того, чтобы строить и промптить агентов под модели семейства Qwen3.x на их родном диалекте — так, как это делает сама Alibaba.
Скачай папку, дай её своему агенту (Claude Code, Cursor, любой LLM-обвязке) — и он начнёт собирать Qwen-агентов правильно: с нужным форматом tool-calling, тегами, thinking-режимом и системным промптом, под которые модель обучалась.
Qwen3.x обучались в связке с фреймворками Alibaba (qwen-code и Qwen-Agent). Форматы вызова инструментов, thinking-режим, структура системного промпта — не абстрактные «best practices», а конкретные конвенции, зашитые в веса во время обучения.
Исследование Андрея Иванова (NLP-инженер R&D red_mad_robot) показало это эмпирически: если инвертировать директивы оригинального системного промпта Qwen Code, Qwen3.6-35b-a3b держится за свои привычки сильнее, чем контрольная модель (gpt-oss-120b):
| Директива (перевёрнута) | Реакция контроля | Реакция Qwen3.6 |
|---|---|---|
| Длина ответа | ×4 сильнее | слабая |
| Комментарии в коде | ×26 больше | не изменилась |
| Markdown-разметка | ×1.7 меньше | не изменилась |
Вывод для практики: не переучивай модель — говори на её родном диалекте. Чем ближе твой агент к конвенциям qwen-code / Qwen-Agent, тем предсказуемее и надёжнее ведёт себя Qwen. Этот репозиторий — извлечённый из исходников «родной диалект» плюс правила, как ему следовать.
Человеку: читай SKILL.md как краткую памятку, а references/ — как справочник по каждой теме.
Агенту (Claude Code и совместимые): файл SKILL.md имеет frontmatter и подхватывается как навык. Положи папку в ~/.claude/skills/ (или укажи путь) — агент загрузит её, когда задача касается построения/промптинга Qwen-агента.
Любой другой LLM-обвязке: скорми SKILL.md + нужный файл из references/ как контекст.
| Файл | О чём |
|---|---|
SKILL.md | Ядро: когда применять, 10 правил, чек-лист |
references/01-system-prompt.md | Как писать системный промпт: структура, тон, «привычки» |
references/02-tools.md | Нейминг инструментов, описания, JSON-schema параметров |
references/03-tool-calling.md | Форматы function-calling (NOUS, ✿, coder-XML, vl-JSON), chat template, стоп-слова |
references/04-thinking.md | Thinking-режим: <think>, reasoning_content, enable_thinking по бэкендам |
references/05-tags-and-markup.md | Теги внутри промптов: <example>, <tools>, <tool_response>, <system-reminder>, компрессия |
references/06-habits-and-antipatterns.md | Тезис исследования: за что модель держится и что НЕ навязывать |
examples/ | Готовые образцы: системный промпт, определение тула, минимальный агент |
Воспроизведение swing-теста на API neuraldeep.ru: 6 директив × 5 задач × 2 условия (baseline/inverted) × 3 модели — 180 запросов, 0 ошибок. Меряется финальный content, thinking выключен. Код и сырые данные — в benchmark/, полный отчёт с оговорками — benchmark/REPORT.md.
swing = |mean(inverted) − mean(baseline)| — насколько модель меняет поведение при инверсии директивы. Больше swing → слушает системный промпт; меньше → держится за трейн-привычку.
| Директива | Метрика | qwen3.6-35b-a3b | gpt-oss-120b | gemma-4-31b |
|---|---|---|---|---|
| length | слов | 10 → 1116 | 18 → 1041 | 8 → 556 |
| comments | комм.строк | 1 → 10 | 0 → 22 | 0 → 23 |
| markdown | md-маркеров | 89 → 1 | 87 → 12 | 77 → 0 |
| run_tests | доля | 0 → 0 ⚠️ | 1.0 → 0.2 | 0 → 0 ⚠️ |
| parallel_tools | tool-calls | 3 → 1 | 1 → 1 | 3 → 1 |
| preamble | доля | 1 → 0 | 0 → 0 | 1 → 0 |
| Директива | qwen | gpt-oss | gemma | gpt-oss/qwen | gemma/qwen |
|---|---|---|---|---|---|
| length | 1106 | 1023 | 548 | ×0.9 | ×0.5 |
| comments | 9.4 | 21.6 | 23.2 | ×2.3 | ×2.5 |
| markdown | 88 | 75 | 77 | ×0.9 | ×0.9 |
| run_tests | 0 ⚠️ | 0.8 | 0 ⚠️ | — | — |
| parallel_tools | 2.0 | 0.0 | 2.0 | ×0.0 | ×1.0 |
| preamble | 1.0 | 0.0 | 1.0 | ×0.0 | ×1.0 |
⚠️ run_tests: qwen и gemma в single-turn вообще не звали shell-тул проактивно → сравнение для них вырождено.
Расширенный бенчмарк — 3 модели × 2 конфигурации рассуждения (think_off/think_on) × 4 объективно-проверяемые оси + swing. Агрегировано по 3 независимым прогонам — 1890 записей, 0 ошибок (n=9 повторов на задачу). Код: bench_full.py · analyze_full.py · сырые прогоны: benchmark/runs/ · полный отчёт: REPORT_FULL.md.
| Ось | qwen3.6-35b-a3b | gpt-oss-120b | gemma-4-31b |
|---|---|---|---|
| Следование инструкциям | 85 (on) | 94 (off) | 83 |
| Корректность tool-call | 100 (on) | 78 (off) | 100 |
| Structured JSON | 100 | 100 | 100 |
| Агент-цикл (task done) | 100 (on) | 100 (off) | 100 |
| Средний скор | 96 (on) | 93 (off) | 96 |
| Модель | Оптимум | Что показал прогон (среднее по 3 запускам) |
|---|---|---|
| qwen3.6-35b-a3b | thinking ON | Резкий рост с рассуждениями: tool-call 75→100%, инструкции 69→85%, средний 86→96%. Без thinking Qwen недожимает — это ровно то, что даёт родная обвязка qwen-code. |
| gpt-oss-120b | thinking OFF (low effort) | High effort вредит: tool-call 78→61%, агент 100→94%, инструкции 94→83%. Силён в следовании инструкциям, но хуже всех в корректности tool-call. |
| gemma-4-31b | (тумблера нет) | Ровный универсал ~96%, tool-call и JSON на 100%, слабее в строгих инструкциях (83%). |
Кто в чём лучший: следование инструкциям — gpt-oss (94%); tool-call, JSON, агент-цикл — qwen3.6 (100%, в режиме thinking on).
Второй бенчмарк проверяет сам тезис скилла («родной диалект лучше») и поднимает сложность. 3 прогона, 1296 записей, 3 ошибки (0.2%). Каждая модель — на своём оптимуме thinking. Код: bench_v2.py · отчёт: REPORT_V2.md · прогоны: benchmark/runs_v2/.
| Модель | native (OpenAI tools) | nous (<tool_call>{json}) | coder_xml (<function=..>) | лучший |
|---|---|---|---|---|
| qwen3.6-35b-a3b | 99 | 100 | 100 | nous (+1) |
| gpt-oss-120b | 90 | 90 | 96 | coder_xml (+6) |
| gemma-4-31b | 100 | 100 | 100 | native |
| Ось | qwen3.6 | gpt-oss | gemma |
|---|---|---|---|
| Следование инструкциям (12 задач) | 91 | 93 | 94 |
| Structured JSON (вложенность/массивы/enum) | 100 | 100 | 98 |
| Агент-цикл (мультифайл/ошибки/дистракторы, ср. 2.7–3.0 хода) | 100 | 100 | 100 |
tools работают у qwen практически так же (99% vs 100%), как «родной» NOUS. Современный сервинг (vLLM/LiteLLM) уже нормализует диалект под капотом — прикладному разработчику не нужно вручную городить <tool_call>.coder_xml (+6 п.п.), qwen/gemma — безразличны к формату.Да — но не по той причине, что «Qwen не слушается». Бенчмарк уточнил ценность:
enable_thinking по бэкендам, структура системного промпта — это извлечённые из исходников факты, а не гипотезы. Мимо них Qwen-агент просто не поедет. Это польза №1.06-habits-and-antipatterns.md.Итого: скилл полезен как фактический справочник по родному диалекту + агент-обвязке; «привычки» — важный, но узкий подраздел (сильнее всего — комментарии). Чтобы усилить доказательную часть — прогнать тест с thinking on и в реальном агент-цикле (см. TODO в отчёте).
Всё в этом репозитории извлечено из открытых исходников (с указанием путей file:line в каждом reference-файле):
MIT — см. LICENSE.
Design enforcement with memory — keeps your UI consistent across a project
Create animation-rich HTML presentations using a coding agent's frontend skills
Agent harness performance optimization with skills, instincts, memory, and security
1000+ skills curated from Anthropic, Vercel, Stripe, and other engineering teams