Привет, Хабр!
С моей первой статьи прошло чуть больше недели, я не ждал, что её вообще одобрят, у меня до этого даже аккаунта на Хабре не было.
Программированием я никогда не занимался, хотя интересно было всегда, а потом пришли новые технологии, и код за тебя теперь могут писать роботы.
Пересказывать, как я решился сделать Писаря, не буду, про это была первая статья, здесь хочу подвести небольшой итог.
Если коротко: увидел, как GigaAM от Сбера распознаёт русскую речь, офигел и сделал диктовку для себя, а вам спасибо за такую высокую оценку, я её не ожидал.
Теперь к цифрам, не знаю, много это или мало, но кроме одной статьи на Хабре я нигде про Писаря не рассказывал, просмотры вы и так видите под первой статьёй, а установок уже больше четырёх сотен. Приятно.
Ещё меня заметили на Хабре и предложили вести блог, я с удовольствием согласился, мне это ничего не стоит, и мне это интересно, а вам, возможно, будет полезно посмотреть, как не программист дорабатывает приложение и как оно расходится по людям, какие хотелки появляются, на какие сложности я натыкаюсь и как их решаю.
Скачать и обновиться
После статьи посыпались баги, я разумеется их правил, и версии пошли одна за другой, а значит, нужно было как-то обновляться, тут была первая засада, так как опыта у меня не было, сначала я сделал как проще: приложение сообщало, что вышла новая версия, и отправляло человека на страницу GitHub, а там список файлов с непонятными названиями, разработчику, даже начинающему, всё ясно, человек с улицы привык нажать одну кнопку «Установить», а тут надо угадать, какой из файлов качать.
Переделал, на сайте теперь кнопка «Скачать для macOS» которая сразу отдаёт образ, открываешь его, перетаскиваешь Писаря в Программы, как любое приложение на маке, жалобы на установку после этого прекратились.
Разрешения
С разрешениями вышло похоже, Писарю нужны два доступа: микрофон, чтобы слышать, и «Универсальный доступ», чтобы вставлять текст в чужие приложения, сначала я сделал окно с одной кнопкой «Разрешить». Она перекидывала в системные настройки, а там длинный список приложений, где надо найти Писаря и включить тумблер, опять же, для человека с улицы вещь неочевидная, многие на этом застревали.
Переделал, теперь у каждого доступа своя кнопка. Микрофон даётся одним нажатием прямо в окне, с «Универсальным доступом» так нельзя Apple не разрешает приложениям выдавать его самим себе, поэтому перед переходом в настройки Писарь показывает подсказку с нарисованным тумблером: найди вот такой и включи, когда доступ дан, кнопка зеленеет, а в конце появляется поле, где можно сразу попробовать первую диктовку.
Папка «Загрузки»
Третья история про папку «Загрузки». Человек скачал архив, распаковал и запустил Писаря прямо оттуда, так делают почти все, я сам так делаю. Оказалось, macOS запускает такие приложения из скрытой временной копии, снаружи всё работает, но заменить само себя приложение уже не может, а когда приходит обновление, человек жмёт «Обновить», а в ответ получает ошибку «нет прав», выглядит так, будто баг
Об это мне тоже написали, тоесть нужно было удалять старую копию и ставить заново
Теперь Писарь при запуске сам замечает, что лежит не в Программах, и предлагает переехать одной кнопкой, а новые пользователи получают образ, где сразу нарисовано: перетащи сюда, обе дороги ведут в Программы, и дальше обновления ставятся сами.
Если у вас обновление падает с ошибкой про права, это оно. Старая версия сама себя уже не вылечит, скачайте образ с сайта заново, перетащите в Программы и запускайте оттуда, модель и настройки останутся на месте.
Мозг и маки с 8 ГБ
Самая долгая история случилась с Мозгом, напомню так в Писаре называется нейронка, которая правит текст по голосовой команде никуда его не отправляя, надиктовал сумбурно, сказал в конце «Писарь, исправь», и получил нормальный текст. Можно попросить сократить, перевести, сделать мягче. Все локально, наружу ничего не уходит.
Сначала Мозг умел только это: надиктовал, в конце добавил «Писарь» и команду. Например, говоришь: «Короче, я тут посмотрел отчёт, ну, в общем, там цифры не сходятся, надо бы перепроверить. Писарь, исправь». А в документе появляется: «Я посмотрел отчёт, цифры не сходятся, надо перепроверить».
Следом появилась правка уже написанного текста, выделяешь любой кусок в любом приложении, зажимаешь клавишу диктовки и говоришь, что с ним сделать: «сделай короче», «переведи на английский», «перепиши вежливее». Результат встаёт на место выделенного. Не понравилось, жмёшь отмену, и старый текст возвращается. Работает это везде, кроме терминалов.
Но тут меня ждала еще одна засада, у меня то мак с 16 ГБ памяти, и у меня всё летало, а потом товарищ с маком на 8 ГБ написал что мозг долго думает и отвечает «не справился», стал разбираться, модель Qwen целиком грузилась в память и занимала там около 3 ГБ, когда открыт браузер и пара программ, свободных трёх гигов на таком маке может не быть, запуск растягивается на минуты, а Писарь ждал сорок секунд и сдавался.
Сначала починил очевидное, перед первым запуском нейронки Писарь смотрит, сколько памяти свободно. Если мало, говорит прямо: свободно 2 ГБ, нужно 3, запускать или нет, пока нейронка стартует, на экране идут секунды и процент занятой памяти, если что-то сломалось, пишет причину.
Потом решил взять модель поменьше, нашёл лёгкую версию той же Qwen, которая весит около гига и стартует за две секунды, прогнал на своих командах. Оказалась быстрая, но бестолковая, выкинул.
Помогло другое. Ту же самую умную модель можно сжать сильнее. Было 2,5 ГБ, стало 1,9, в памяти занимает на 0,65 ГБ меньше, на тех же командах сжатая отвечает не хуже, попробовал сжать ещё сильнее, и тут модель поплыла, остановился на середине.
Заодно выключил у модели привычку рассуждать вслух перед ответом, размышления не нужны, а ответ стал приходить заметно быстрее, на том самом маке с 8 ГБ теперь всё работает.
Отдельно про GigaChat. В Мозге на выбор две модели, вторая как раз от Сбера. Добавил я её из уважения к команде, которая выложила GigaAM, но объективно она большая: файл 6,5 ГБ, в памяти занимает около семи. На маке с 8 ГБ её даже пробовать не стоит, а на 16 она заметно теснит всё остальное, в настройках она остаётся, кому интересно, включайте. сам я погонял обе и советую Qwen: он шустрее и влезает почти везде, и если Сбер когда-нибудь выложит версию поменьше, с удовольствием поставлю её первой.
Пулреквест
И напоследок приятное, мне прилетел пулреквест со стороны, с очень полезной доработкой, если у тебя играет музыка и ты начинаешь диктовать, звук на компьютере замолкает, а когда отпускаешь клавишу, возвращается обратно, включается галочкой в меню, по умолчанию выключено.
Для меня это отдельная радость, одно дело, когда ты сам что-то ковыряешь. Другое, когда кто то сел, разобрался в твоём коде и прислал готовую вещь.
Что дальше, если вам всё это интересно, пишите в комментариях: чего не хватает, что работает криво, что бы вы добавили. Я всё читаю. И подписывайтесь на блог, я тут что-то разошёлся и буду дальше рассказывать, как развиваю проект.
Делаю я Писаря один, так что любые пулреквесты приветствуются, мыслей, куда его вести дальше, сейчас очень много. Про них в следующий раз.
Скачать Писаря: gigapisar.github.io Код: github.com/moznoazachem/giga-pisar
Local_AI-agent
Вы это про Гига-Чат?))
ladapriora Автор
Не совсем