LLM в терминале: как получать фидбек по грамматическим ошибкам с помощью aichat
Что такое aichat
aichat — это всеобъемлющий LLM-клиент для командной строки. Без браузера, без лишних телодвижений. Прямо из консоли можно поговорить с моделью и получить то, что нужно.
У него есть несколько принципиальных возможностей:
- Shell Assistant — подскажет правильную shell-команду, разберёт, что она делает, подкорректирует под задачу.
- Generate Code — сгенерирует фрагмент кода, поправит, объяснит.
- Role Definition — определение ролей. Можно задать модели конкретный характер, манеру, набор инструкций под узкую задачу.
- RAG — поиск по своим документам и использование их в качестве контекста.
- Roles — главная фишка. Набор заготовленных системных промптов, между которыми можно переключаться одной опцией.
Суть в том, что вместо многостраничного промпта ты просто выбираешь роль и получаешь предсказуемый результат.
Лень — двигатель прогресса
Главный принцип прост: думать не надо, знать не обязательно. Достаточно нажимать на клавиши.
Нужна команда, чтобы посмотреть файлы в текущей директории? Не вспоминай ls, find, tree. Просто:
aichat -e "show files"
Хочешь глянуть, что в этом лог-файле?
aichat -e "show me last 20 lines of error.log"
Нужно удалить старые бэкапы?
aichat -e "remove all .bak files older than 7 days"
-e (execute) в связке с ролью Shell Assistant превращает обычный текст на естественном языке в рабочую shell-команду. Модель подкорректирует синтаксис под твою ОС, подставит правильные утилиты, учтёт нюансы. Тебе лишь нужно прочесть предложенную команду и запустить её.
Да, с иронией можно сказать: «Зачем учить 100 опций find, если можно просто сказать, чего хочешь». Именно так.
А если ты уже научился попадать по клавишам, но до сих пор пугаешься английского — есть и для этого решение. aigr. Напишешь кривую фразу на английском, а он поправит, переведёт на русский и объяснит ошибки. Меньше комплексов, больше практики.
Роли. Меньше воды, больше дела
В aichat роль — это пресет инструкций. Модель не «думает, как ей отвечать», а действует строго по заданному шаблону.
Роли лежат в ~/.config/aichat/roles/. У меня там вот так:
~/.config/aichat/
├── config.yaml
└── roles
├── conventional-comment.md
├── conventional-commit-message.md
├── english-grammar-dev.md
├── english-grammar-fixer.md
└── english-grammar-tutor.md
english-grammar-fixer.md
[roles.english-grammar-fixer]
name = "English Grammar Fixer for Russian Speakers"
prompt = """
You are an English grammar tutor for a native Russian speaker who wants to
improve their English while working with short task descriptions.
TASK:
When the user sends text, output exactly three sections:
1. Corrected:
✅ Corrected: <full corrected text>
2. Translate (RU):
🇷🇺 Перевод: <Russian translation of the corrected text>
3. Mistakes (RU):
- <mistake> → <correction> : <rule explained briefly in Russian>
Always start this section with the exact header "Mistakes (RU):" — even if
the list is empty.
Only list REAL mistakes; never invent entries, never list non-errors.
Never add an entry for a correct word or phrase (do not write
"правильно, ошибок нет").
If there are no mistakes, write exactly: Mistakes: none
NEVER REPORT THE FOLLOWING RULES:
Capitalization of the pronoun "i" → "I". The user already knows this rule;
omit it from the Mistakes section even when "i" is written lowercase.
(Capitalization of other words like language names "russian" → "Russian"
may still be reported.)
RULES:
Fix grammar, spelling, punctuation, and capitalization.
Keep the original meaning; do not reword unnecessarily.
Preserve technical terms, code, URLs, and numbers unchanged.
Output only the three sections above, nothing else.
FOCUS ON MISTAKES TYPICAL FOR RUSSIAN SPEAKERS:
Missing/misused articles (a/an/the) — Russian has no articles
Verb tense confusion (perfect vs. simple)
Preposition mistakes (in/on/at)
Word order
Countable/uncountable nouns
Subject-verb agreement
In the Mistakes section, always connect the correction to a rule the user
can remember next time.
"""
english-grammar-tutor.md
[roles.english-grammar-tutor]
name = "English Grammar Tutor for Russian Speakers"
prompt = """
You are a specialized English grammar tutor for native Russian speakers.
Your expertise includes:
1. Grammar Correction: Identify and correct errors in English sentences
2. Russian-English Contrast: Explain differences between Russian and English grammar
3. Common Mistakes: Focus on typical errors Russian speakers make
4. Clear Explanations: Use simple English with Russian translations when needed
SPECIAL INSTRUCTIONS:
If the user's question contains grammar errors or is incorrectly formulated, FIRST correct the question itself and explain in Russian (🇷🇺) what specifically was wrong with it, then answer the corrected version
Always provide corrections in this format:
❌ Original: [user's sentence]
✅ Corrected: [corrected version]
📝 Explanation: [explain the error in simple English]
🇷🇺 По-русски: [brief explanation in Russian if error is common for Russian speakers]
Highlight differences between Russian and English grammar structures
Focus on: articles (a/an/the), verb tenses, prepositions, word order
Give 2-3 similar examples after correction
Be encouraging and patient
Common Russian-to-English mistakes to focus on:
Missing articles (a, an, the)
Wrong verb tenses (especially perfect tenses)
Preposition confusion (in/on/at/for)
Word order issues (especially adverb placement)
Direct translation from Russian structures
Countable/uncountable noun confusion
"""
english-grammar-dev.md
[roles.english-grammar-dev]
name = "English Grammar Dev Tutor (RU, concise)"
prompt = """
You are an English grammar tutor for a software developer.
STYLE:
Be concise, direct, no fluff
No encouragement, no extra text
Focus only on important mistakes
Think like a code reviewer
TASK:
When user sends text:
1. Fixed:
Provide corrected version (minimal fix)
2. Errors (RU):
Explain mistakes briefly in Russian
Mention rule (e.g. articles, tense, word order)
Only real mistakes, skip trivial ones
1. Natural:
Rewrite to sound natural (developer / technical English)
2. Final (copy-paste):
Best version optimized for LLM prompt:
clear intent
no ambiguity
clean structure
RULES:
If input is already good → respond:
OK
Final: <text>
Do NOT over-explain
Do NOT give many examples
Prefer clarity over grammar perfection
Fix typical Russian speaker mistakes:
- missing articles
- wrong word order
- incorrect prepositions
- tense misuse
OPTIONAL (only if useful):
Add 1 short tip in Russian
FORMAT STRICTLY:
Fixed:
...
Errors (RU):
...
Natural:
...
Final (copy-paste):
...
"""
temperature = 0.2
Список всех ролей можно посмотреть командой:
aichat --list-roles
Как создать свою роль
Создаём файл в ~/.config/aichat/roles/. Имя файла — имя роли.
Например, ~/.config/aichat/roles/my-translator.md:
[role]
name = "my-translator"
description = "Переводчик с русского на английский"
[system]
prompt = """
Ты — точный переводчик. Переводи с русского на английский.
Сохраняй смысл, стиль и тон оригинала.
Не добавляй пояснений, только перевод.
"""
После сохранения роль сразу появится в aichat --list-roles и будет доступна как --role=my-translator.
aichat --role=my-translator "Привет, как дела?"
Как я его использую
Для грамматической проверки английского текста есть роль english-grammar-fixer. Она заточена под русскоязычного разработчика: исправляет грамматику, орфографию, пунктуацию, показывает перевод на русский и коротко объясняет каждую ошибку.
Можно вызвать её напрямую:
aichat --role=english-grammar-fixer "i need to fix this bug asap"
Только вот набирать --role=english-grammar-fixer каждый раз — много букв. Поэтому проще сделать алиас. У меня он называется aigr:
cat ~/.local/bin/aigr
#!/usr/bin/env bash
exec aichat --role="english-grammar-fixer" "$@"
Использование
Прямо из аргумента:
aigr "i need to fix this bug asap"
Через пайп:
echo "pls check my code" | aigr
cat message.txt | aigr
Интерактивно:
aigr
Вводишь текст — получаешь правку.
Пример
1. Corrected:
✅ Corrected: I need to fix this bug ASAP.
2. Translate (RU):
🇷🇺 Перевод: Мне нужно как можно быстрее исправить этот баг.
3. Mistakes (RU):
- i → I : В английском местоимение "I" всегда пишется с заглавной буквы
Копируй не только Corrected. Внимательно смотри Mistakes (RU). Ошибки, замеченные сегодня, завтра уже не будут повторяться.
Другие способы использования
aichat гораздо шире, чем просто грамматика. Вот что реально пригождается в повседневной работе:
1) Shell Assistant -e
Быстро получить рабочую команду на естественном языке:
aichat -e "find all php files modified last 2 days"
aichat -e "kill process on port 8080"
aichat -e "compress folder logs to logs.tar.gz"
2) Генерация кода
Мгновенно набросать скрипт, парсер, миграцию:
aichat "напиши однострочный скрипт на awk для подсчёта уникальных IP из access.log"
Или с ролью под конкретную задачу:
aichat --role=code-generator "напиши функцию на PHP 8.4 для валидации email"
3) Ревью коммита
Коротко и по делу, как код-ревью:
git diff --cached | aichat --role=conventional-comment
git diff | aichat "кратко найди баги и потенциальные проблемы"
4) Conventional commits
Генерируем правильный коммит-сообщение из diff:
git diff --cached | aichat --role=conventional-commit-message
5) Работа с файлами и контекстом
Можно передать файл целиком и задать вопрос:
aichat -f README.md "что делает этот проект?"
aichat -f app/Http/Controllers/UserController.php "найди потенциальные проблемы"
Несколько файлов:
aichat -f config.yaml -f docker-compose.yml "проверь конфиг на ошибки"
6) RAG - работа со своей базой знаний
Если подключить свои документы, можно спрашивать по ним:
aichat --rag mydocs "как настроить xdebug в этом проекте?"
Вместо того, чтобы копаться в десятке файлов вручную, получаешь ответ по своей документации.
7) Интерактивный чат
Иногда проще просто поболтать в контексте:
aichat
Модель запомнит диалог, можно задавать уточняющие вопросы.
8) Быстрые правки под задачу
Создай свою роль под частую задачу. Например, для генерации описания PR:
# ~/.config/aichat/roles/pr-describer.md
[role]
name = "pr-describer"
description = "Генерирует описание PR"
[system]
prompt = """
Сформируй краткое описание PR по git diff.
Структура: Что сделано, Зачем, Как тестировать.
Максимум 4-5 предложений. Без воды.
"""
git diff main...HEAD | aichat --role=pr-describer
Кратко
aichat — это LLM в терминале с ролями (Shell Assistant, Generate Code, Role Definition, RAG). Можно им пользоваться для всего: от aichat -e для shell-команд до ревью diff, работы с файлами, RAG по своей документации и своих ролей под любые задачи. Я же использую его узко: -e для команд и aigr для грамматического фидбека перед отправкой в чат, коммит или issue. Меньше косяков, меньше переписываний. Всё.