Cursor AI — практический опыт и выводы
Cursor AI — это IDE на базе Visual Studio Code, ориентированная на программирование с использованием ИИ. Это не единственное решение на рынке — аналогов сегодня достаточно много.
На практике мне удалось поработать с разными агентами и инструментами:
Cursor AI
Cline
GitHub Copilot
различные LLM-провайдеры
локальный LLM-сервер (по возможностям — довольно слабый)
---
Общие впечатления
В целом Cursor AI — мощный инструмент. Всё, что было запланировано, удавалось реализовывать поэтапно и достаточно аккуратно.
Ключевой момент — почувствовать, как правильно “вести LLM” к нужному результату. Когда это получается, эффективность становится заметно выше.
При этом важно понимать:
code review после работы LLM обязателен
поверхностные правки почти всегда нужны
это касается и inline-команд ИИ
ИИ сильно ускоряет работу, но не отменяет ответственность разработчика.
---
Unity3D + C#
Я очень рекомендую Cursor AI для программирования под Unity3D и C#.
С высокой вероятностью вы не пожалеете. Более того, не использовать Cursor AI или аналогичные инструменты сегодня — потенциальная ошибка. Работая с ними, действительно можно многому научиться.
В отличие от классического общения с ИИ через чат:
агент часто сам быстро вносит правки в код
меньше ручного копирования и вставки
быстрее итерации
Программировать можно практически всё — вплоть до CE Lua-плагинов, которыми я планирую заняться в ближайшее время и выложить новую версию. Пока они находятся на стадии тестирования.
---
Стоимость и порог входа
Да, всё это не бесплатно, но в большинстве случаев оно того стоит.
Если вы ещё не пробовали:
просто попробуйте
даже безлимитного тарифа на первое время достаточно
этого хватит, чтобы понять, подходит ли инструмент под ваш workflow
---
Куда всё движется
В перспективе привычные чаты в стиле ChatGPT, в том виде, в каком мы их знаем сейчас, будут всё менее интересны.
Настоящий прирост эффективности дают:
ИИ-агенты
оркестрация
MCP-серверы
Простой пример:
тысяча правок через чат с постоянным копированием и вставкой
vs
тысяча правок, где агент сам вносит изменения в код
Разница в эффективности — колоссальная.
---
Итог
Каждому разработчику в итоге придётся:
выстраивать собственный workflow
адаптироваться к ценам и инструментам
выбирать оптимальные модели и подходы
Цель одна — максимальная производительность при минимальных затратах времени и ресурсов.
---
Ниже — сравнительная таблица, оформленная в Markdown для NodeBB. Я опирался на практический опыт пользователей и типовые сценарии Unity/C#-разработки, без маркетинговых искажений.
---
Сравнение инструментов: Cursor AI / GitHub Copilot / Cline
Критерий
Cursor AI
GitHub Copilot
Cline
Тип инструмента
IDE (fork VS Code) с ИИ-агентами
Плагин автодополнения
Агент для VS Code
Работа с проектом
🟢 Контекст всего workspace
🟡 Ограниченный контекст
🟢 Глубокий доступ к файлам
Агентное редактирование
🟢 Да (правит файлы сам)
Нет
🟢 Да
Inline-команды
🟢 Развитые (Ctrl+K)
🟡 Ограниченные
🟢 Да
Многофайловые правки
🟢 Стабильно
Практически нет
🟢 Да
Code review
🟢 Удобно встроен
🟡 Частично
🟡 Зависит от модели
Unity3D / C#
🟢 Отлично подходит
🟡 Нормально
🟡 Рабоче, но шумно
Контроль правок
🟢 Diff перед применением
🟡 Через git
🟡 Через git
Поддержка LLM
🟢 Много встроенных моделей
🟡 Ограничено Copilot
🟢 Любые (в т.ч. локальные)
Локальные модели
Нет
Нет
🟢 Да
Простота входа
🟢 Высокая
🟢 Очень высокая
🟡 Средняя
Риск «сломать проект»
🟡 Есть, но контролируем
🟢 Минимальный
Высокий без опыта
Подходит для новичков
🟢 Да
🟢 Да
Скорее нет
Скорость итераций
🟢 Высокая
🟡 Средняя
🟢 Высокая
Стоимость
🟡 Подписка
🟡 Подписка
🟢 Оплата токенов
---
Краткие выводы
Cursor AI
Лучший баланс мощности, контроля и удобства
Оптимален для Unity3D и C#
Подходит как для одиночной, так и для сложной проектной разработки
Требует дисциплины и code review
GitHub Copilot
Отличный автокомплит
Минимальные риски
Почти не подходит для сложных архитектурных правок
Cline
Максимальная гибкость и контроль
Поддержка локальных моделей
Высокий риск ошибок без опыта
Больше подходит для экспериментальных workflow
---
Итоговая рекомендация
Unity3D / C# / production → Cursor AI
Подсказки и автокомплит → Copilot
Эксперименты, локальные LLM, кастомные пайплайны → Cline
Шаблон скрипта для проверки MD5 в Cheat Engine с авто-активацией чита
Сначала дается краткий сжатый код.
function onOpenProcess(processid)
reinitializeSymbolhandler()
local md5Process = GetMd5Process(processid)
PrintMd5Process(process, md5Process)
local isSupportedVersion = CheckingMd5CurrentProcess(md5Process)
local lineResult = isSupportedVersion and 'Is supported version. Activating cheat...' or 'Is not supported version.'
if not isSupportedVersion then
speakEnglish(lineResult, false)
messageDialog('Error', lineResult, mtError, mbClose)
else
speakEnglish(lineResult, true)
-- Активация простого чита: поиск и заморозка адреса здоровья
autoAssemble([[
alloc(newmem,2048)
label(code)
label(return)
"Base.exe"+123456:
code:
mov [eax],(int)999
return:
jmp return
newmem:
jmp "Base.exe"+123456
nop
jmp return
]])
messageDialog('Success', 'Cheat activated for health: 999', mtInformation, mbOK)
end
end
А потом дается объяснение. Все нужно в формате nodebb
ce_md5_cheat.lua
md5 - это алгоритм хэширования exe-файла, который позволяет точно идентифицировать версию игры или приложения. Это критично для .CT таблиц в Cheat Engine, чтобы избежать ошибок из-за обновлений, меняющих смещения структур памяти.
В случае несоответствия MD5 версии показывается диалог ошибки и звуковое оповещение. Если версия поддерживается, скрипт автоматически активирует простой чит (в примере - заморозка здоровья на 999 по смещению "Base.exe"+123456; замените на реальные значения для вашей игры).
Обязательно проверяйте MD5 перед использованием таблиц, чтобы смещения структур не сдвинулись из-за патчей!
Получить md5 открытого процесса и записать его в MD5_CHEKING вручную
\-- Функция для ручного вывода md5 ранее подключенного процесса. Для установки MD5_CHEKING
PrintMd5CurrentProcess()
Пример проверки md5 с авто-активацией
function onOpenProcess(processid)
reinitializeSymbolhandler()
local md5Process = GetMd5Process(processid)
PrintMd5Process(process, md5Process)
local isSupportedVersion = CheckingMd5CurrentProcess(md5Process)
local lineResult = isSupportedVersion and 'Is supported version. Activating cheat...' or 'Is not supported version.'
if not isSupportedVersion then
speakEnglish(lineResult, false)
messageDialog('Error', lineResult, mtError, mbClose)
else
speakEnglish(lineResult, true)
-- Активация простого чита: поиск и заморозка адреса здоровья
autoAssemble([[
alloc(newmem,2048)
label(code)
label(return)
"Base.exe"+123456:
code:
mov [eax],(int)999
return:
jmp return
newmem:
jmp "Base.exe"+123456
nop
jmp return
]])
messageDialog('Success', 'Cheat activated for health: 999', mtInformation, mbOK)
end
end
Мультимодальные LLM: когда ИИ видит, слышит и понимает контекст
Что это?
Модели, способные одновременно обрабатывать текст, изображения, аудио и видео. Это не просто "распознавание картинок", а глубокое понимание связей между разными типами данных.
Пример работы:
Загружаете фото схемы электронной платы + текстовый запрос: "Найди ошибку в разводке конденсатора C7 и предложи исправление в формате KiCad".
Модель:
1️⃣ Анализирует изображение,
2️⃣ Сопоставляет с текстовым контекстом,
3️⃣ Генерирует инструкцию с исправлением.
---
Ключевые возможности и применение
Тип данных
Что умеет модель
Практическое применение
Текст + Изображение
Описание сцен, анализ графиков, чтение рукописных заметок
Автоматизация документооборота, генерация ALT-текста, поиск дефектов на чертежах
Текст + Аудио
Транскрибация с контекстным анализом, генерация эмоциональной речи
Виртуальные ассистенты с "характером", анализ колл-центров, озвучка презентаций
Видео + Текст
Понимание сюжета, поиск ключевых моментов, аннотирование
Автосуммаризация записей встреч, модерация контента, создание монтажных листов
---
️ Как работать с мультимодальностью?
Выбор инструментов:
OpenAI GPT-4o (vision + text + voice) — через API или ChatGPT.
Google Gemini 1.5 — поддерживает до 1 млн токенов контекста (включая видео!).
Open-source: LLaVA, Fuyu-8B (можно запустить локально с GPU).
Специфика промтов:
Четко указывайте тип данных:
"Проанализируй скриншот ошибки (вложение 1) и лог-файл (вложение 2). Предложи 3 решения."
Управляйте фокусом:
"Сравни графики продаж за 2023 и 2024 (PDF-страница 5). Сосредоточься на падении в Q3."
Используйте ролевые модели:
"Ты инженер-электронщик. По фото прототипа определи, где перегревается компонент."
Технические требования:
Для локальных моделей: GPU с 8+ GB VRAM (например, LLaVA-1.6 требует NVIDIA RTX 3090).
В облаке: API с поддержкой multipart/form-data (для загрузки бинарных файлов).
---
Зачем это технарю?
- Автоматизация сложных задач:
Запрос: "По видео сборки робота составь checklist для тестирования (вывод в Markdown)".
Результат: Готовый чеклист с привязкой к временным меткам.
- Работа с документацией:
Анализ сканов ТУ, схем, диаграмм без ручного ввода данных.
- Быстрый прототипинг:
"Сгенерируй UI для приложения по этому наброску на салфетке (фото) + описание функционала (текст)".
---
️ Ограничения (на 2025 год):
- Точность распознавания: Может ошибаться в деталях (например, номера микросхем на фото).
- Контекстное окно: Видео длительностью >10 мин часто требуют препроцессинга.
- Стоимость: Мультимодальные API в 3-5x дороже текстовых (например, GPT-4o vision — $5-15 за 1к запросов).
---
Как начать?
Поэкспериментируйте в Google Gemini (бесплатно) с загрузкой PDF/изображений.
Для кода: Llama 3 с LLaVA (туториал).
Протестируйте API через OpenRouter (поддержка >30 мультимодальных моделей).
Главный принцип: Мультимодальность — не замена текстовым LLM, а мощное расширение для задач, где контекст требует визуала или звука.
Премии, связанные с Transformer и глубоким обучением
1. Премия Тьюринга (Turing Award) — «Нобелевка» в Computer Science
- За что дают?
За выдающийся вклад в области информатики.
- Кто получил за Transformer и deep learning?
В 2023 году премию получили:
Йошуа Бенджио (Yoshua Bengio)
Джеффри Хинтон (Geoffrey Hinton)
Ян Лекун (Yann LeCun)
(Но не авторы Transformer! Они получили её за более ранние работы по нейросетям.)
Однако авторы Transformer (Васуани, Шейзер и др.) тоже могут её получить в будущем — их работа считается революционной.
2. ACL Test of Time Award (премия за долгосрочное влияние)
- За что дают?
Награждают статьи, которые сильно повлияли на NLP через 10+ лет после публикации.
- Кто получил?
Пока "Attention Is All You Need" (2017) ещё не получила (ей всего 7 лет), но, скорее всего, получит в 2027–2030 годах.
3. NeurIPS Best Paper (премия за лучшую статью на конференции NeurIPS)
- За что дают?
За самые значимые исследования в machine learning.
- Получал ли Transformer?
Нет, статья вышла в arXiv (2017), а не на NeurIPS. Но если бы подавали — точно бы выиграла.
---
Почему авторы Transformer ещё не получили Тьюринга?
Премию Тьюринга дают с задержкой (обычно через 10–20 лет после открытия).
В 2023 наградили "отцов deep learning" (Хинтона и др.) — их работы 1980–2000-х сделали возможным появление Transformer.
Transformer ещё "слишком молод" (2017), но его авторы — главные кандидаты на премию в 2030-х.
---
Какие ещё награды получили авторы Transformer?
- Google Research Awards (внутренние премии).
- Упоминания в топ-конференциях (ICML, ACL, NeurIPS) как одна из самых влиятельных работ.
- Цитирования (более 80 000+ ссылок на статью — это гигантский показатель).
---
Вывод
- Пока авторы Transformer не получили Тьюринга, но их работа изменила всю NLP-индустрию.
- Скорее всего, их наградят в будущем — как Бенджио, Хинтона и ЛеКуна.
- Сейчас они получают признание через цитирования и внедрение их идей в ChatGPT, Gemini и другие ИИ.
Transformer — это как изобретение транзистора для ИИ: пока не всегда награждают, но без него ничего не работает.
Вот детальный анализ недочетов текущего подхода, направления для улучшений и инновационные способы интеграции ИИ:
---
1. Что не учли в текущей реализации
1.1 Динамическое изменение структур
- Проблема: Игры с procedural generation (например, Starfield) могут менять расположение полей во время выполнения.
- Решение: Добавить мониторинг паттернов доступа:
function TrackStructureChanges(baseAddr)
while true do
local newLayout = AnalyzeStructure(baseAddr)
CompareLayouts(lastLayout, newLayout) -- Алерт при изменениях
sleep(1000)
end
end
1.2 Мультиплатформенная поддержка
- Упущение: Нет оптимизации под ARM (Android/iOS) и консоли (PS5/Xbox).
- Исправление: Добавить детектор ABI:
function GetPlatformType()
if readMemory(0x10000, 4) == 0x7F454C46 then
return "ELF" -- Android/Linux
elseif readString(0, 4) == "XBOX" then
return "XBOX"
end
end
1.3 Обработка сетевых структур
- Пробел: Не анализируются пакеты сетевого протокола, хотя они часто дублируют игровые структуры.
- Доработка: Интеграция сниффера пакетов:
function HookNetworkPackets()
-- Фильтрация пакетов, содержащих координаты игроков
PacketSniffer.filter("PlayerPosition", "xx xx ?? ?? xx FF")
end
---
2. Ключевые направления для улучшений
2.1 Гибридный статико-динамический анализ
- Идея: Комбинировать результаты CE с Ghidra:
graph LR
CE[Динамический анализ в CE] -->|Экспорт| Ghidra
Ghidra[Статический анализ] -->|Импорт паттернов| CE
2.2 Система предсказания смещений
- Метод: Использовать статистику обращений для предсказания важных полей:
function PredictImportantOffsets()
local stats = CollectAccessStats()
return {
health = stats.mostAccessed[1].offset,
ammo = stats.mostWritten[3].offset
}
end
2.3 Визуализация в 3D
- Инновация: Отображение структур как графа в 3D-пространстве (используя Cheat Engine's OpenGL):
function Draw3DStructureGraph()
for addr, links in pairs(graph) do
RenderNode(addr, links, GetStructureColor(addr))
end
end
---
3. Интеграция ИИ: конкретные применения
3.1 Классификация типов данных через ML
- Подход: Нейросеть анализирует паттерны памяти:
# Образец модели PyTorch
class TypeClassifier(nn.Module):
def forward(self, x):
# x: [значения памяти, контекст инструкций]
return torch.softmax(self.layers(x), dim=1) # Вероятности типов
- Использование в Lua:
function AIDetectType(address)
local tensor = MemoryToTensor(address, 64)
local result = ExecutePyScript("model.predict", tensor)
return {"float", "int", "pointer"}[result]
end
3.2 Генерация эксплойтов через ИИ
- Пример: Автоматический поиск уязвимостей:
function FindVulnerabilities()
local patterns = AI_GenerateCrashPatterns()
for _, pattern in ipairs(patterns) do
if TryCorruptMemory(pattern) then
LogExploit(pattern)
end
end
end
3.3 NLP для анализа игрового кода
- Применение: Автоматическое комментирование структур:
function GenerateComments()
local code = Disassemble(0x123456, 50)
local comment = AI_AnalyzeCode(code)
SetComment(0x123456, comment) -- Например: "Рендеринг частиц, цикл из 12 итераций"
end
---
4. Практические примеры улучшений
4.1 Для читеров
- Авто-определение уязвимостей:
-- ИИ ищет паттерны для телепортации
local teleportCheat = AI_FindMemoryPattern({
"float x,y,z",
"write frequency > 1Hz",
"range -1000..1000"
})
4.2 Для моддеров
- Генерация SDK для модов:
GenerateModSDK({
structures = analyzed_graph,
hooks = FindCodeHooks(),
api = AI_GenerateAPI()
})
4.3 Для разработчиков
- Детектор багов:
-- ИИ находит некорректные указатели
local bugReports = AI_ScanFor(
"dangling pointers",
memory_ranges,
expected_patterns
)
---
5. Что еще можно улучшить?
5.1 Оптимизация
Проблема
Решение
Медленный поиск
Кэширование + параллельные потоки
Ложные срабатывания
Ансамбли ИИ-моделей
5.2 Безопасность
function AntiAntiCheat()
-- Маскировка брейкпоинтов под легитимные вызовы
HideDebugger({
stealth_mode = "SYSTEM_CALL",
fake_patterns = GetNormalTrafficSamples()
})
end
5.3 Пользовательский опыт
\-- Голосовое управление читами
RegisterVoiceCommand("дай бессмертие", function()
SetGodMode(true)
end)
---
Итог: дорожная карта улучшений
Срочные доработки (1-2 недели):
Динамический трекинг структур
ARM/консольная поддержка
Среднесрочные (1-3 месяца):
Интеграция ИИ для классификации
3D-визуализация
Долгосрочные (6+ месяцев):
Полный AI-ассистент для реверса
Генерация читов через NLP
Пример коммита для начала работ:
\+ function AI_Integration() {
\+ // Добавляем вызов Python ML-модели
\+ local result = ExecutePython("predict_type.py", memoryDump)
\+ }
Готов реализовать любое из этих улучшений в вашем форке. Какое направление наиболее приоритетно?
Основная:
CeWiki
Исчерпывающая:
Lua.txt (обновление 2023)
Форум:
cheatengine.org
Сайт:
cheatengine.org
Использовать CE можно разными способами. Самый простой - ничего не програмировать, а искать адреса в памяти процесса игры по правилам поиска, замораживать их значения. Посложнее - искать и использовать указатели на адреса памяти, чтобы после перезапуска уровня или игрового процесса таблица с адресами правильно работала. Посложнее будет правка дизассемблированного кода с помощью скриптов cheat engine, что даст гораздо больше управления над значениями адресов памяти, например, записать здоровье дружественным юнитам и даже создание предметов на карте или в инвентаре.
Работа с cheat engine это один из самых интересных способов познакомиться с программированием на асемблере через асемблерные вставки и через прогон отладочного кода в пошаговой отладке (или без прогона через брейкпонты). Также можно ознакомиться с програмированием на lua, программированием dll-ок на c++. На C++, reclass и IDA можно построить классы и управлять игровым поцесссом более гибко и масштабно. Также есть инструменты под определенные игровые движки, которые облегчают реализацию читов, например, поиск функций (отладочных, декомпилированных) для читов и их создания. Скорее всего, если поискать, то можно много новых инструментов найти в Интернете.
Также ознакомиться с программированием можно на уровнях игровых движков (unity, unreal engine, cry engine и других) через поиск в Интернете. Так можно получить представление о древовидной связи игровых обьектов сущностей и связи этих обьектов с обьектами классов-поведений. Часть классов-поведений(компоненты) являются частью игрового движка, а часть является особенностью определеной игры. Например, создание, удаление, копирование обьекта-сущности с его компонентами - это прерогатива функций игрового движка, на котором делают множество игр. А, например, управление игровой механикой это уже связь с конкретной игрой или даже конкретной версии игры. Когда, работаешь с игровым движком, то прекрасно понимаешь почему динамические указатели имеют место быть. И это и сцена, которая хранит дерево обьектов, это само дерево обьектов и это место в динамическом списке компонентов и сам компонент, который может работать с переменной локальной или же обращаться к обьектам других компонентов или классов не на основе компонентов.
Короче говоря, если планируешь изучать прогоаммирование, то ничего нет интересней начать с программирования читов и изучения архитектуры операционной системы (начиная с процессов, потоков, памяти и т.п.). Также изучая готовые примеры скриптов, кодов, исходников игр и трейнеров. Написание трейнеров и обхода защит от трейнеров, тоже очень поможет в изучении программирования.
После использования Obsidian более месяца понял, что пока не нашел лучше программы для ведения базы знаний.
При чем чем больше пользуешься тем вероятнее изменить стратегию ведения базы. Например, я отказался от множества vault в пользу трех: для работы на рабочем ПК, на смартфоне и на ноутбуке. Пока они все составляются не зная друг про друга. Большое их кол-во неудобная штука, т.к. переключаться между ними долго, искать в каждом отдельном так себе... Граф поможет искать все связи и ссылки. Возможно, что-то еще напишу по Obsidian. Думаю, что я изучил по Obsidian все, что мне нужно и по его основным плагинам, кроме написания сами плагинов (пока не потребовалось)
Предлагаю поделиться своими ТОП горячими клавишами в Visual Studio.
ctrl + ] найти закрывающие скобки функции, класса. С shift можно выбрать внутри.
shift + alt + (. или <) перемещение по выделенными словам как f3 вперед или назад
alt + лев. кнопка мышки установка мульти курсора. После выбор по shift или в пункт 2, 4.
shift +u или ctl +u сделать выделенный текст строчными или прописными
ctrl + R + G - удалить неиспользуемые пространства имен
ctrl + shift + v кольцевой буфер обмена
ctrl + K + S обернуть строки (в регион, namespace, if и т.п.)
ctrl + alt + X окно элементов (перетаскиваем туда выделенные строки в своим папки. Это для хранения истории своих строк кода)
ctrl + K поставить закладку
ctrl +K+K создать/убрать закладку
ctrl +K+N / CTRL+K+P перемещение по закладкам
ctrl +K+L удалить все закладки
ctrl + T показать список задач.
Перемещение строки или выделенных строк
alt +↑ переместить строку вверх
alt +↓ переместить строку вниз
alt + shift +arrow keys(←,↑,↓,→) выбор колонок текста
ctrl +arrow keys(←,→) перемещение по словами
ctrl +arrow keys(↑,↓) движение списка
и т.п.
Права на загрузку файлов выставил всем на группу подтвержденных пользователей. Это делается один раз администратором
У @LIRW, вроде, нет подтверждения. У кого нет подтверждения сколько-то дней, те не смогут писать. При возникновении проблем с регистрацией нужно написать мне. Если нельзя со старой учетки, то - с новой
Статья https://gameserrors.com/baldurs-gate-3-cheat-engine/
Исходники с git hub (или иного репозитория) можно просматривать не скачивая, читать там же описания, делать совместные форки и включать их в разработку большому количеству желающих улучшить скрипт. Также с помощью git можно делать разные ветки, разные версии, делать описание в readme, просматривать историю, выкладывать непротестированные в разработке фичи по одной, править их баги... Это еще удобно потому что, этот сервис дает возможность самому удаленно администрировать управление исходниками, версиями, описаниями и иметь их локальную копию у себя... В отличии от облака типа google drive, на котором лежит релизный файлик это не позволит удобно версионировать с новыми апдейтами, делать ветки, иметь форки, решать issue...
Таблица приведена в пример.
Категории
Метки:
В сети:



