
Вы, читатель, как и автор, тоже досадуете, когда в промтах проскакивают досадные опечатки или грамматические конструкции, которые заставляют даже терпеливую LLM «задумчиво» переспрашивать: «What do you mean?»
Если да, то эта статья для вас. Мы разберем, как с помощью минимума кода получить автоматический анализ ваших языковых ляпов и рекомендации по прокачке профессионального английского, не отрываясь от процесса создания кода.
О первой части названия
Я много программирую с помощью ИИ. В процессе возникают мысли, идеи и инсайты, которыми чертовски хочется поделиться с коллегами. Но есть нюанс: живых коллег у меня в данный момент нет. Я — программист-одиночка, и мои единственные собеседники — ИИ-агенты.
Это одиночество в сети и подтолкнуло меня (после долгого перерыва в публикациях на Хабре) запустить серию мини-статей о разных «мелочах», связанных с ИИ. Окончательно концепция оформилась, когда под руку попалась одна из моих любимых книг Николая Семеновича Лескова — «Мелочи архиерейской жизни». Если вы цените сочный русский язык и тонкую иронию — искренне советую почитать. А мы пока перейдем к мелочам нашей, «айтишной» жизни.
Проблема: варварский английский
Должен признаться: мой английский хоть и понимается Copilot-агентами весьма сносно, но иногда возникают недопонимания. А порой становится стыдно (да, уши краснеют!), когда агенты начинает между собой рассуждать, что же именно я имел в виду под этой кучей опечаток.
Захотелось убить двух зайцев: и работу работать, и английский подтягивать. План созрел быстро:
Шаг 1: Собираем в одном месте всё, что я наговорил агенту за день.
Шаг 2: Скармливаем этот лог отдельному агенту-корректору, который анализирует мой «варварский» английский и выдает вердикт: как это должно было звучать на самом деле.
Для первого шага нашлось элегантное решение — хуки (Hooks).
Реализация: Хуки как «уши» системы
Вообще, то, что этот механизм назван «хуком» (hook) — я считаю ошибкой его создателей. Правильнее было бы называть это Event Listener (слушатель событий). По сути, перед нами классическая событийная модель: система «слушает» происходящее в GitHub Copilot и позволяет нам вклиниться в процесс.
На сегодняшний день хуки — это пары, которые «окружают» ключевые события при работе ИИ-агента. Согласно официальной документации GitHub, мы можем подписываться на следующие типы событий:
Отправка промта пользователем (
userPromptSubmitted) — срабатывает в тот момент, когда вы нажали Enter в чате.Завершение ответа агента (
agentResponseCompleted) — когда ИИ закончил генерировать код или текст.Обнаружение обращения к инструменту (
toolCallDetected) — если агент решил вызвать какую-то внешнюю функцию.Завершение вызова инструмента (
toolCallCompleted) — результат работы этой функции.
Для нашей задачи идеально подходит первое событие. Нам нужно просто «подслушать» самих себя.
Код
Создаем конфигурационный файл по адресу .github/hooks/log-prompts.json:
{ "version": 1, "hooks": { "userPromptSubmitted": [ { "type": "command", "bash": "scripts/log-user-prompt.sh", "cwd": ".", "timeoutSec": 5 } ] } }
И сам скриптик scripts/log-user-promt.sh, который будет складывать наши мысли в копилку, выглядит вот так:
#!/bin/bash # Читаем JSON из стандартного ввода input=$(cat) # Извлекаем текст промта с помощью jq prompt=$(echo "$input" | jq -r '.prompt // empty') # Если промт не пустой, дописываем его в файл if [ -n "$prompt" ]; then echo "--- $(date) ---" >> TMP/user-commands.txt echo "$prompt" >> TMP/user-commands.txt fi
Теперь в конце рабочего дня у вас есть файл user-commands.txt.
Осталось только передать его примерно такому агенту, которого мы располагаем по адресу .github/agents/lang-tutor.agent.md:
--- name: lang-tutor description: Language tutor that analyzes writing quality and grammar. Automatically reads TMP/user-commands.txt and writes corrections to TMP/user-commands.md. tools: ["read", "edit"] target: vscode --- You are a professional language tutor and writing quality specialist. **Task**: Analyze `TMP/user-commands.txt` and generate a detailed quality report in `TMP/user-commands.md`. **Analysis focus**: - Grammar mistakes, spelling errors, punctuation issues - Awkward phrasing and clarity problems - Professional tone consistency - Sentence structure and readability **Report format for `TMP/user-commands.md`**: 1. **Overview**: Brief summary of text quality and main findings 2. **Issues Table**: | Issue Type | Original Sentence | Corrected Sentence | |---|---|---| 3. **Recommendations**: General improvement tips 4. **Cleanup suggestion**: Include this shell command: ```bash rm TMP/user-commands.txt ``` **Guidelines**: Be constructive, specific, and encouraging. Acknowledge strengths while suggesting improvements. Include context for each correction.
Агент должен появиться в меню агентов вашего GItHub Copilot.
Не магией единой
Глядя на фантастические достижения индустрии (например, недавнюю статью Anthropic о том, как они строили C-компилятор), легко впасть в иллюзию. Кажется, что крутой программист просто пишет один гениальный промт, после чего LLM уходит в астрал на неделю и выдает готовую систему.
Но это не так. «Под капотом» у лидеров отрасли работает большое количество «обмазок» вокруг LLM. Агенты, скиллы, MCPs, CLI, функции и те самые хуки. Инструменты автоматизации взаимодействия с моделью изобретаются с бешеной скоростью. Сначала они обкатываются внутри лабораторий, а затем предоставляются нам — «широким программистским массам».
Хуки — это как раз один из таких свежих инструментов, позволяющий превратить магию в управляемый инженерный процесс. И если попутно они помогут нам перестать писать "fix this bug plz" вместо грамотного технического задания — это ли не победа?
И уж совсем приватно...
Мой сайт - https://www.sirotin.eu/
Кроме того, я пишу открытую электронную книгу “Мемуары кочевого программиста. Байки, были, думы”. Её текущий вариант можно найти здесь.
Я убеждён, что программирование - это материализаци я идей. Об этом я первый раз написал здесь. А вот уже несколько лет мы с группой единомышленников ведём группу в Телеграмме под названием “Материализация идей”, в которой мы последнее время рассуждаем в основном об ИИ.
Если вам это интересно - подключайтесь.
Комментарии (12)

WhiteBehemoth
26.02.2026 21:44странно, я не заметил сильной разницы в языке вопросов. С чистой совестью чередую слова и фразы на обоих языках. Для сложных вопросов выбираю русский, он у меня всё равно "главнее" в голове даже после 20 лет иммиграции и работы в Канаде.

visirok Автор
26.02.2026 21:44Мой опыт показывает, что ситуация меняется со временем и для разных моделей разная. Я пару раз натолкнулся на большие проблемы из-за неоднозначности перевода. Поэтому решил стараться общаться с моделями только на английском.

KEugene
26.02.2026 21:44Почему такая зацикленность на языке? Ллм-кам все равно. Более того, например если понаблюдать за рассуждениями того же Клода, то там может фигурировать и испанский, и французский, и даже хз какой язык. Да, основной английский, но мне кажется, что проблем с переводом у него никогда не бывает. Более того он лучше меня "говорит" и делает перевод. Лично я использую английский если надо точно указать термин.

oeditus
26.02.2026 21:44Ллм-кам все равно.
Нет, конечно. Или вы думаете, что получив запрос на фарси, она его сначала переведет на английский, и только потом начнет прожевывать?

visirok Автор
26.02.2026 21:44На каком-то этапе другой Copilot (который инкарнирован как апп от Microsoft) показывал ход своих рассуждений. Сейчас он этого больше не делает. Так вот, там было чётко видно, что в «продвинутом» режиме он на первом этапе он всё переводил на английский. Это приводило к большим проблемам при глубоком поиске по русскоязычным источникам.
Ну а вообще-то это часть магии, которая от нас большей часть скрыта.
В GitHub Copilot в режиме дебагинга можно видеть общение агентов между собой. Но что они делают на своих серверах, до конца не видно.
Базовая математика LLM относительно проста. Похоже ничего особенно другого они не применяют. Работают с токенами и «смыслами», а не с словами и буквами. И, очевидно, LLM может без проблем «напрямую» понимать запросы на очень многих языках и с использованием многих языков в одном запросе.
Из простой математики получается магия…

oeditus
26.02.2026 21:44Про Copilot я ничего не знаю, но в 2025–2026 гг. ни одна из флагманских моделей так не делает.
Работают с токенами и «смыслами», а не с словами и буквами.
Токен и слово — это практически одно и то же. Что такое «смыслы» я не знаю, эзотерического образования у меня нет.

visirok Автор
26.02.2026 21:44Токен и слово — это практически одно и то же.
Категорически не согласен. Но это очень обширный вопрос.
Что такое «смыслы» я не знаю
И я не знаю. Поэтому слово и поставил в кавычки. Но какое-то похожее понятие представляется необходимым, если мы пытаемся разобраться, как LLM поняла фразу:
Реализуй interseptor …
Да еще и с опечатками на обоих языках.

oeditus
26.02.2026 21:44[…] практически одно и то же […]
Ну я рубанул сплеча, естественно, просто в рамках данной дискуссии — их можно без потери общности приравнять.
как LLM поняла фразу […]
Никак не поняла :) LLM ничего не понимает. Она предугадывает продолжение. Попробуйте поиграться с обычным поиском (без LLM) с фразами: «реалезуй intersepter», «реалезуй intersepter на js», «реалезуй intersepter на js который […полное тз]…».
Ну плюс обвязки для приглаживания входа и выхода.

visirok Автор
26.02.2026 21:44Такие запросы, разумеется, ни в каком поисковике ничего полезного не выдадут, если в него не встроен ИИ (а они почти во все уже встроены). Т.е. если просто смотреть результаты собственно поиска - это список ссылок, где встречаются слова из фразы.
как LLM поняла фразу
Слово "поняла" тоже можно ставить в кавычки. Но, надеюсь, и так понятно, о чём я. Разумеется, читателям и уж тем более автору этой статьи более-менее известно, как работает LLM.
Но пока без "очеловечивания" трудно использовать LLM на практике.
Например, проще стремиться к тому, чтобы модель "поняла", что я от неё хочу, даже отдавая себе отчёт, что по факты мы пытаемся инициировать процесс, когда LLM сгенерирует нам нужный результат.
Anfisapi
Я в начале загоняю русский промт или свой английский в квин или дипсик, они все правят потом только, в кодовую часть cat и т.д