es
Feedback

¡No caigas en manos de tramposos! Telemetrio encuentra y marca estos canales 👉 Si quieres ver la etiqueta, suscríbete

Алексей | AI PROKA4

Алексей | AI PROKA4

Ir al canal en Telegram

AI Transformation Lead Из 8 лет QA-автоматизации - в интеграцию AI решений в процессы разработки и бизнеса на уровне всей компании.

Mostrar más
El país no está especificadoLa categoría no está especificada
676
Suscriptores
-224 horas
+17 días
+1530 días
Archivo de publicaciones
🙌Завтра-послезавтра постараюсь выпустить второй урок!

🔥 Модель забывает середину! Почему? Странный факт: если спрятать нужный факт в начале или в конце длинного контекста - модел
🔥 Модель забывает середину! Почему? Странный факт: если спрятать нужный факт в начале или в конце длинного контекста - модель его найдёт. Спрячьте ровно тот же факт в середине - и она его теряет. Это называют lost in the middle. Точность по позиции идёт U-образной кривой (на картинке попробовал изобразить): высокая по краям, проседает в середине на 20-30 пунктов. Почему так? Внимание модели не размазано ровно по контексту. Механизм внимания системно недовешивает то, что далеко от краёв - начало и конец получают больше веса, середина проваливается. Дальше самое интересное. Окна выросли до миллиона токенов, и все ждали, что проблема исчезнет. Она не исчезла - просто переехала: 🟢модели проходят тест «найди иголку в стоге» почти на 100%, но это тест на «процитируй одно предложение». Реальная задача - рассуждать по нескольким разбросанным кускам, и вот там всё сыпется 🟢у большинства фронтир-моделей эффективный контекст - 200-400 тысяч токенов, дальше качество заметно падает. Заявленный миллион и рабочий миллион - разные вещи 🟢деградация есть даже когда факт лежит удобно, просто от длины входа. Это отдельно назвали context rot - «гниение контекста» Отсюда практический вывод, который меняет привычки: 🟢контекст - не архив, а рабочий стол. Чем меньше на нём лишнего, тем точнее ответ 🟢важное держите ближе к краям - в начале запроса или в конце. Не в середине простыни 🟢набитое окно - это не «ещё есть место», это уже просевшее качество Так что /clear и /compact - это не про экономию токенов. Это про то, чтобы модель вообще видела то, что вы ей дали.

⚡️Методические материалы к уроку

⚡️ Это первый ролик на канале. И первый урок курса по Claude Code. Никаких «подпишись, потом что-нибудь выложу» — контент уже здесь: 9 минут, после которых у вас стоит Claude Code и вы понимаете сессию и контекст - то, без чего агентом пользуются наугад, а потом жалуются, что «ИИ тупит». Внутри: установка с нуля, первый запрос, /clear и /compact без сжигания токенов впустую. 📎 Методичка в PDF прилагается: конспект + домашка. Такая будет к каждому уроку. ▶️ https://youtu.be/5lNjosbbWdM?is=84lrezUQxXfuy24A Подписка и лайк и следующий урок про CLAUDE.md выйдет быстрее.

Mensaje de video00:12

🔥 Plan mode: сначала план, потом правки По умолчанию Claude часто начинает менять файлы сразу - и «быстрый фикс» иногда расп
🔥 Plan mode: сначала план, потом правки По умолчанию Claude часто начинает менять файлы сразу - и «быстрый фикс» иногда расползается на 12 файлов не туда. Plan mode это лечит. В режиме плана Claude только читает и анализирует, ничего не трогает. Показывает пошаговый план - что и в каких файлах собирается сделать - и ждёт вашего «ок». Запрет на правки жёсткий, на уровне инструмента, а не на честном слове. Как включить: 🟢 Shift+Tab дважды (Default → Auto-accept → Plan). Внизу загорится ⏸ plan mode on 🟢 или команда /plan в начале запроса Дальше вы читаете план и правите или апрувите, ну или отклоняете) Когда включать: 🟢 да - рефакторинг, правки в 3+ файлах, миграции, незнакомый код, размытая задача 🟢 нет - один файл, мелочь, легко откатить: план только мешает Смысл в двух вещах: план ловит «а почему он лезет в этот файл?» до того, как файл тронут, и вскрывает масштаб - вы просили «добавь рейт-лимит на эндпоинты», а Claude собрался переписать весь пайплайн. 30 секунд на чтение плана экономят полчаса на разгребание. Я в свое время настрадался) #claude_code

🔥 Закончили задачу - почистите контекст Контекст - рабочая память Claude на сессию. Она не резиновая, и качество падает ещё до того, как окно переполнится: чем больше лишнего, тем хуже Claude держит важное. Поэтому чистить нужно по ходу, а не «когда упёрлись». Две команды под две ситуации: 🟢 /clear - стирает историю полностью, старт с чистого листа (CLAUDE.md и правки в файлах остаются). Используйте, когда уходите на другую, не связанную задачу. 🟢 /compact - сворачивает историю в резюме: нить цела, место освобождается. Используйте, когда продолжаете по той же тебе, но окно уже забивается.
Правило: не связано с предыдущим - /clear, связано но тяжело - /compact. Проверить загрузку - /context (перевалило за 80% - пора).
Чистый контекст - это прямее ответы и меньше токенов на ветер. #claude_code

⚡️⚡️⚡️Ееее бой!
⚡️⚡️⚡️Ееее бой!

🤟🏻А вот и вышел Sonnet 5 Пытаются, хотя бы что-то выпустить после запрета Fable 5🙂 По кодингу не плохо, почти как Opus, на
🤟🏻А вот и вышел Sonnet 5 Пытаются, хотя бы что-то выпустить после запрета Fable 5🙂 По кодингу не плохо, почти как Opus, на практике тоже в целом хорошо, могу подтвердить близость к опусу!

Это уже диагноз?) «Клодуууу заплатите чеканной монетой, чеканной монетой, о-о-оу»
Это уже диагноз?) «Клодуууу заплатите чеканной монетой, чеканной монетой, о-о-оу»

🔥 Раскидайте раздутый CLAUDE.md по rules Как писать rule мы уже разобрали. Теперь применим это к жизни! У вас наверняка есть CLAUDE.md, который уже оброс - стиль кода, правила API, требования к тестам, заметки про БД, инструкции по деплою. И всё это грузится каждую сессию, даже когда вы правите одну кнопку на фронте. Разносим за три шага. Шаг 1. Решите, что остаётся в CLAUDE.md. Сюда - только то, что нужно всегда и везде: 🟢 архитектура и структура проекта 🟢 команды: сборка, тесты, линт 🟢 общие договорённости - язык, формат коммитов, стиль Шаг 2. Всё, что про конкретную область кода - выносите в rules с привязкой к путям:
.claude/
  CLAUDE.md          # only project-wide essentials
  rules/
    api.md           # paths: src/api/**/*.ts
    testing.md       # paths: "**/*.test.ts"
    db.md            # paths: src/db/**/*.ts
Теперь правила API подтянутся, только когда Claude работает в src/api/. Если работаете над фронтом - то в контексте их нет. (Как именно писать paths: и маски - мы разбирали в прошлом посте.) Шаг 3. Выпилите перенесённое из CLAUDE.md. Это важно: если правило уехало в rule, не оставляйте его копию в CLAUDE.md. Иначе при конфликте двух версий поведение становится непредсказуемым. Как понять, что куда - простой критерий: 🟢 нужно всегда → CLAUDE.md (или rule без paths:) 🟢 нужно только в части кода → rule с paths: 🟢 одна тема - один файл, не сваливайте API и тесты в кучу Один момент при разносе. Правило, которое должно срабатывать при СОЗДАНИИ файла («у каждого нового модуля - такой-то заголовок»), через paths: не выстрелит - триггер срабатывает на чтении, а не на создании. Такое оставляйте в CLAUDE.md. Проверьте результат. Команда /memory покажет, что реально подгрузилось. И живой тест: откройте файл из src/api/ - правило про API должно появиться в контексте. Откройте фронт - не должно. Выхлоп простой: CLAUDE.md худеет, контекст не забит тем, что сейчас не нужно, а Claude видит ровно то, что относится к текущей задаче, - и меньше путается. #rules

🔥 Как написать свой rule (на примере) В прошлый раз разобрали, зачем нужна папка .claude/rules/. Теперь - как реально написа
🔥 Как написать свой rule (на примере) В прошлый раз разобрали, зачем нужна папка .claude/rules/. Теперь - как реально написать правило, чтобы оно срабатывало именно там, где надо. Допустим, ты каждый раз напоминаешь Claude одно и то же про свой API-слой: валидируй вход, держи единый формат ошибки. Выноси это в правило. Шаг 1. Создай файл .claude/rules/api.md и опиши правила:
---
paths:
  - "src/api/**/*.ts"
---

# API rules

- Validate every request body with Zod
- Return errors as { error: string, code: number }
- Log each request with a correlation id
Шаг 2. Разберись, как оно грузится. Всё решает frontmatter: 🟢 без paths: - правило грузится всегда, каждую сессию, как кусок CLAUDE.md 🟢 с paths: - подтянется только когда Claude откроет файл, попадающий под маску То есть правило про API не висит в контексте, пока ты пилишь фронт. Тронул файл из src/api/ - правило включилось. Про маски - тут чаще всего и спотыкаются: 🟢 ** - любая вложенность, * - один уровень. src/*.ts не достанет src/api/users.ts, а src/**/*.ts достанет 🟢 кавычки обязательны: пиши "**/*.ts", а не **/*.ts - YAML ругается на * и { без кавычек 🟢 несколько типов разом - через фигурные скобки: "src/**/*.{ts,tsx}"
Одна важная засада. Path-правило срабатывает, когда Claude ЧИТАЕТ подходящий файл, а не когда создаёт новый. Поэтому правило «у каждого нового файла должен быть такой-то заголовок» при создании не выстрелит. Такие вещи держи в CLAUDE.md или в правиле без paths:.
Пара принципов: • один файл - одна тема: api.md, testing.md, security.md. Не вали всё в кучу • пиши только сами правила, коротко, как в CLAUDE.md - без длинных «почему» • не дублируй между CLAUDE.md и rules: при конфликте поведение непредсказуемо Проверка: команда /memory показывает, какие правила реально подгрузились. Нет твоего файла в списке - значит маска не совпала. И главное правило - это не закон, а сильная подсказка. Если что-то должно выполняться железно всегда - это уже про хуки, а не про rules. #rules

🔥 rules - когда CLAUDE.md раздулся Как вы помните CLAUDE.md - это память проекта и ограничения. Claude читает её в начале ка
🔥 rules - когда CLAUDE.md раздулся Как вы помните CLAUDE.md - это память проекта и ограничения. Claude читает её в начале каждой сессии. Удобно, пока файл небольшой (~200 строк). Но он пухнет: стиль кода, правила API, требования к тестам, заметки про БД - и всё это грузится каждую сессию, даже когда ты правишь одну кнопку на фронте. Решение - папка .claude/rules/ Вместо одного раздутого файла - несколько маленьких, по темам:
.claude/
  CLAUDE.md
  rules/
    api.md
    testing.md
    security.md
    db.md
Каждый файл - обычный markdown с инструкциями, как кусок CLAUDE.md, только вынесенный отдельно. ➡️Главное - понять, как они грузятся: • правило без привязки к путям грузится всегда, каждую сессию - то же, что писать в CLAUDE.md, просто аккуратнее разложено • правило можно привязать к части кода - тогда оно подтянется, только когда Claude работает с этими файлами. Не трогаешь БД - правила про БД не висят в контексте Вот второе и даёт главный выигрыш: контекст не забивается тем, что сейчас не нужно, а нужное включается ровно в тему. Как это укладывается в общую картину: • CLAUDE.md - что нужно всегда (архитектура, команды сборки, общие договорённости) • rules - что нужно в конкретной части кода (для API - правила API, для тестов - про тесты) • skills - что нужно под конкретную задачу (грузится, когда позвал) Запомните практическое правило: если кусок CLAUDE.md длиннее ~15-20 строк и касается одной области - пора выносить его в отдельный rule. 🙌А как именно написать правило и привязать к нужным файлам - в следующем посте. #rules

Как и обещал, по итогу постов про Skills дропаю вам методичку, чтобы было все в одном месте🤟🏻

🔥 Фишка: скилл, который сам тебя спрашивает (полный разбор) Скилл можно сделать интерактивным - чтобы он остановился, спроси
🔥 Фишка: скилл, который сам тебя спрашивает (полный разбор) Скилл можно сделать интерактивным - чтобы он остановился, спросил, что тебе нужно, и пошёл по выбранной ветке. Отвечает за это встроенный инструмент AskUserQuestion (нужен Claude Code от 2.0.21). Он рисует в терминале структурированный вопрос с вариантами, ты выбираешь стрелками. Разберём, как им пользоваться в работе. КАК УСТРОЕН ОДИН ВЫЗОВ За один вызов можно задать до 4 вопросов сразу. У каждого вопроса: 🟢question - сам вопрос 🟢header - короткая подпись-чип, до 12 символов 🟢options - от 2 до 4 вариантов, у каждого label (1-5 слов) и description (что это значит) 🟢multiSelect - разрешить выбрать несколько вариантов или нет Вариант «Other» инструмент добавляет сам - всегда можно вписать свой ответ текстом, ты его не прописываешь. Например, спросить язык и базу одним вызовом:
questions:
  - header: "Language"
    question: "Which language for the new service?"
    multiSelect: false
    options:
      - label: "TypeScript"
        description: "Node + TS, strict mode."
      - label: "Python"
        description: "FastAPI, type hints."
  - header: "DB"
    question: "Which database?"
    multiSelect: false
    options:
      - label: "Postgres"
        description: "Relational, default choice."
      - label: "SQLite"
        description: "Zero-config, local and dev."
МОЖНО ОТМЕТИТЬ НЕСКОЛЬКО ВАРИАНТОВ РАЗОМ Если у вопроса стоит multiSelect:true, он превращается из «выбери одно» в «отметь сколько нужно» - чекбоксы вместо радиокнопок. Отмечаешь нужные, подтверждаешь - и скилл получает список ответов, а не один. Когда это в тему - когда ответ по природе «несколько сразу»: 🟢какие тесты поднять: unit + e2e 🟢какие части системы аудитить: API + воркеры + БД 🟢какие проверки прогнать перед релизом А для взаимоисключающего выбора (язык, уровень объёма) оставляй multiSelect: false - одно и только одно.
- header: "Surfaces"
  question: "Which surfaces should the audit cover?"
  multiSelect: true
  options:
    - label: "API"
      description: "HTTP routes and handlers."
    - label: "Workers"
      description: "Background jobs and queues."
    - label: "DB"
      description: "Schema and migrations."
Тут пользователь отметит, скажем, API и DB - и скилл пройдётся ровно по ним, не трогая остального. МОЖНО НЕСКОЛЬКО ВЫЗОВОВ ПОДРЯД Один вызов - не предел. Скилл умеет спрашивать пошагово и ветвиться: сначала узнать объём, а если выбрал «Full» - задать второй вопрос, по каким частям системы идти. Диалог получается адаптивный, а не один экран на всё. В скилле это просто несколько шагов с вопросами:
# Execution flow

0. Ask the audit scope (AskUserQuestion).
1. If scope == "Full":
     Ask which surfaces to cover (AskUserQuestion, multiSelect).
2. Apply ONLY the chosen scope and surfaces.
3. Write docs/architecture.md and print a short summary.
КАК ЗВАТЬ ЕГО В СКИЛЛЕ Два способа: 🟢Человеческим языком: «спроси у пользователя объём аудита, предложи Overview / Overview+risks / Full». Claude сам соберёт вызов и придумает варианты. 🟢Структурой, как выше: пишешь question / header / options руками. Дольше, зато предсказуемо и одинаково каждый раз. Пара советов: 🟢header - до 12 символов, иначе обрежется 🟢держи 2-4 варианта, не вываливай десять 🟢хочешь подсказать выбор - поставь рекомендуемый вариант первым и допиши «(Recommended)» в label 🟢«Other» уже есть из коробки, руками не добавляй И ограничение, чтоб не словить сюрприз: в фоновых сабагентах и headless-режиме (без терминала) AskUserQuestion не сработает - ему нужен живой ввод. Плюс на ответ есть таймаут порядка минуты. Перебери свои скиллы, которые делают «всё и сразу», и поставь в начало вопрос. Где надо - дай выбрать несколько галочками. А где ветвится - второй вопрос по итогам первого. #skills

Быстренько прошелся, в целом мини-ачивка) Как говорится "Why not?" Практически все я уже знал до курса🤟

🔥 Скилл-дроп: разбор ошибки по стектрейсу Первый готовый скилл. Кидаешь агенту простыню стектрейса - получаешь причину и минимальный фикс, без «давайте посмотрим, возможно, наверное» Вот он целиком, клади в ~/.claude/skills/explain-error/SKILL.md:
---
name: explain-error
description: Explains an error or stack trace: finds the cause
  and suggests a minimal fix. Trigger when the user pastes a
  trace, a failure log, or an error message.
---

# What to do:

1. Find the lowest line of your own code in the trace (not libraries)
2. State the cause in one sentence, no fluff
3. Give a minimal fix - only what fixes the error
4. If info is missing (versions, code snippet) - ask, don't guess
5. No "you could also try" and no ten-item lists
Пункт 4 даёт больше всего - вместо уверенной чуши агент задаёт один уточняющий вопрос. Адаптируй под себя: впиши в шаги свой стек (куда смотреть в твоём фреймворке) - и точность вырастет. #skills

⚡️Как только закрою серию постов про #skills , выложу обьедененную методичку!

Эмм, они еще и 1млн контекста забрали🙃
Эмм, они еще и 1млн контекста забрали🙃