Warning: Undefined array key 0 in /var/www/tgoop/function.php on line 65

Warning: Trying to access array offset on value of type null in /var/www/tgoop/function.php on line 65
- Telegram Web
Telegram Web
🧠 Как я выбирал LLM для экранного кота

Когда начал прикручивать локальную LLM к ScreenCat, первым кандидатом была Llama 3.1 8B. Мощная, умная, красивая на бенчмарках… но на MacBook Air с M2 — это ядерный реактор. Интерфейс лагает, фон моргает, котик тормозит. Не вариант.

🔁 Начал перебирать:

- Llama 3.2 1B - лёгкая, запускается быстро, но ответы… странные. То галлюцинирует, то резко переходит на английский, то просто зависает.
- Llama 3.2 3B (Q6\_K) - пока победитель. Более стабильна, держится в русле промта, не путает роли.
- Gemini 1.5 Flash - шикарно говорит по-русски, почти как ChatGPT, но тяжелющая. На Air дико тормозит. Зато на M3 Max - отлично.

💬 Примеры диалогов:

Ты: Привет, котик! Как настроение?
Кот 1B: Meow. Weather is 23C. Я… летаю… мечтаю… 🤖🐱
🤦‍♂️ Русский, английский, полёт во сне и наяву.

Кот 3B: Мрр, всё отлично! Я только что наблюдал за курсором — он такой смешной 😺
Вот это уже похоже на экранного котика.

📦 Использую библиотеку LLM.swift - прикольная, но довольно сырая.
Пришлось допиливать: фиксить логику, добавлять поддержку стоп-токенов, чистку контекста, многопоточность.
Про то, что именно переделал - расскажу отдельно в следующем посте 👨‍💻

🧩 Сейчас в проекте используется кастомный движок с кастомными промтами и автостопами. Вот пример модели:

static var llama3_2_3B = Model(
quantization: .Q6_K,
repoName: "MaziyarPanahi",
modelName: "Llama-3.2-3B-Instruct-GGUF",
fileName: "Llama-3.2-3B-Instruct.Q6_K.gguf"
)


Плюс добавил определение железа, чтобы автоматически выбирать модель:
если MacBook Air - 1B, если MacBook Pro с M3 - 3B или даже Gemini. Ну и настройки использования ядер CPU и GPU тоже зависят от железа.

А вы что используете на слабом железе?
👨‍💻 Как я допиливал LLM.swift под своего экранного кота

В прошлом посте я упоминал, что использую LLM.swift - библиотеку для запуска локальных LLM-моделей на macOS. Концепция крутая, но реализация - сырая. Чтобы ScreenCat стабильно работал, пришлось серьёзно допиливать.

Вот, что именно улучшил:

🔸 1. Чистка контекста между запросами

Без clearContext() модель сохраняла "память" о предыдущих сообщениях. В итоге кот мог отвечать на то, чего не было.
Решается так:

bot.stop()
bot.clearContext()
await bot.respond(to: text)



🔸 2. Очередь запросов и работа в фоне

Если запустить несколько запросов подряд — ответы могли пересекаться.
Добавил очередь на Task, чтобы каждый запрос дожидался предыдущего, с пониженным приоритетом:

let waitFor = tail

let next = Task(priority: .utility) {
if let prev = waitFor {
_ = try await prev.value
}
return try await self.run(text, systemPrompt: systemPrompt)
}

tail = next
return try await next.value



🔸 3. Кастомизация производительности (`n_gpu_layers`, `nThreads`, `nBatch`)

В оригинальной библиотеке LLM.swift всё это было захардкожено.
Я добавил ручной контроль - чтобы под слабое и мощное железо выставлялись оптимальные настройки.

Пример:
let threads = ProcessInfo.processInfo.processorCount / 2

let bot = LLM(
from: modelUrl,
template: template,
topK: 40,
topP: 0.92,
temp: 0.6,
historyLimit: 0,
maxTokenCount: 1024,
nThreads: threads,
nThreadsBatch: threads,
nBatch: 8,
n_gpu_layers: suggestedGPULayers()
)!


И функция:

static func suggestedGPULayers() -> Int32 {
let gb = ProcessInfo.processInfo.physicalMemory / (1024 * 1024 * 1024)

if gb <= 8 { return 0 }
if isHighEndAppleSilicon() { return 20 }
if gb >= 16 { return 10 }
return 0
}



🔸 4. Фикс bot.stop()

В оригинале bot.stop() не работал как надо — генерация продолжалась.
Я пофиксил это: теперь метод реально прерывает вывод, как только нужно (например, по <|eot_id|> или внешнему событию).


🧠 Если кому нужно — могу сделать Pull Request в LLM.swift с этими доработками.
А если интересно попробовать готовый движок из ScreenCat — тоже пишите, соберу демку 🧩
Please open Telegram to view this post
VIEW IN TELEGRAM
Как я попробовал GitHub Copilot в Xcode — и почувствовал себя тимлидом для джуна

Скачал Copilot for Xcode — отдельное бесплатное приложение от GitHub. Вроде штука простая: ставишь, даёшь доступ к проекту — и у тебя внутри Xcode появляется AI-агент, который предлагает подсказки, сам правит код и даже может создавать новые файлы.

Попробовал на живом проекте — ScreenCat (у меня котик бегает по экрану и реагирует на действия). Попросил Copilot сделать надпись с мыслями кота — в виде баббла с emoji. Сначала он выдал что-то странное, но… сам понял и тут же переписал на адекватный вариант. Это было приятно.

Плюсы:
👉 Крутые suggestions, местами реально сэкономили время
👉 Умеет запускать код, искать ошибки, создавать файлы

Минусы:
👉 Иногда мешает обычному автокомплиту Xcode (особенно когда жмёшь tab — и он перехватывает)
👉 Пока что как “агент” работает ограниченно — скорее умный помощник, чем полноценный напарник

Мой вывод:
Я пользуюсь Copilot всего пару дней, но уже приятно. Как друг сказал — чувствуешь себя лидом, который ставит задачи джунам. Только джун никогда не устает и не задаёт лишних вопросов.

Советую попробовать. Особенно если вы хотите чуть-чуть автоматизировать рутину.

Скачать Copilot for Xcode
🚨 Xcode 16.4 RC — багфиксы и ожидание Xcode 17
Apple выкатили Release Candidate Xcode 16.4. Нового почти нет — всё внимание явно на Xcode 17 и WWDC.

Что появилось или поправили:
– Swift 6.1.2 (багфиксы и оптимизации)
– Строки из SwiftUI Preview больше не попадают в локализации
– Исправлены падения при раскрытии макросов
– При сборке fat static libs теперь используется lipo, а не libtool — меньше проблем с размером
– Обновлены SDK: iOS 18.5, macOS 15.5 и др.

⚠️ Что ещё не пофиксили:
– Симуляторы могут грузить CPU через diskimagesiod
– Отладка по Wi-Fi может не видеть включённый Developer Mode

📦 Требуется macOS 15.3+
🛠 Версия: Xcode 16.4 RC (16F6)

Ждём настоящих новинок в Xcode 17 — уже скоро!
🧪 UI-тесты без боли — SwiftLens

Все мы знаем, какие XCUITest бывают:
медленные, флакающие, симуляторы жрут всё.

Автор SwiftLens придумал, как тестировать SwiftUI,
как будто это unit-тест. И это 🔥

Что даёт SwiftLens:
Видит иерархию SwiftUI через PreferenceKey
⚡️ Тесты за 0.06 сек (vs 15 сек в XCUITest)
🧼 Меньше кода — .lensTrack(id:) и поехали
🔁 Работает с async: ждёт views, проверяет текст, нажимает кнопки

Пример — было и стало:

XCUITest:

app.buttons["saveButton"].tap()
XCTAssert(app.staticTexts["successToast"].exists)


SwiftLens:

try await interactor.tap("saveButton")
try await observer.waitForVisible("successToast")



Где особенно полезно:
🚀 На CI — быстро и стабильно
🛠 В pet-проектах — когда важен фидбек
📱 В любом SwiftUI-приложении — без боли

Минусы :
⚠️ Нужно вставлять .lensTrack, .lensSheet
⚠️ PreferenceKey не работает из .sheet — нужен обход
⚠️ Только SwiftUI
⚠️ Авторский проект, не стандарт Apple — но уже юзабельный

Хочешь попробовать?
1️⃣ Добавь .lensTrack(id: "myView")
2️⃣ Подключи LensObserver и LensInteractor
3️⃣ Запусти — и кайфуй от скорости

🎥 Видео
💾 GitHub
🍏 Сегодня в 20:00 по МСК - старт WWDC.
Будет большая презентация Apple.

Ждём новую iOS, новые SDK, апдейты для Xcode и, возможно, что-то новое по AI.
По идее, сразу после презентации выкатят beta версию iOS 19 (26).

Пока не решил — ставить ли её сразу или подождать. Обычно первые беты бывают весёлыми 🐛.
Русский язык в Apple Intelligence не завезли, хотя завезли еще несколько языков #WWDC
Please open Telegram to view this post
VIEW IN TELEGRAM
🛠 Xcode 26 — теперь с AI прямо внутри

Apple на WWDC представила Xcode 26 — и это, пожалуй, самая «умная» версия Xcode за всё время.

👉 Внутри редактора теперь можно прямо подключать ChatGPT или любую другую LLM — по API-ключу или даже локально (если у вас Mac на Apple Silicon).
👉 Можно писать код, тесты, доку, фиксить баги, улучшать дизайн — и всё это в привычном Xcode, не прыгая по чатам.
👉 ChatGPT встроен сразу, можно начинать без аккаунта. А если есть подписка — подключаете её и получаете больше возможностей.

Кроме этого:
Новый интерфейс Coding Tools — умные подсказки, генерация playground’ов, фиксы прямо в коде.
Переработанная навигация.
Улучшенная работа с локализациями.
И даже поддержка полного Voice Control — можно продиктовать код на Swift и управлять Xcode голосом.

🤖 Мне особенно интересно посмотреть, насколько удобно будет работать с локальными моделями (например, Llama) прямо из Xcode — это может быть реально крутой апгрейд.

📝 А вы будете ставить Xcode 26 beta? Планируете использовать встроенные LLM?
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
Ставлю Xcode на свою macOS 15.x. Пишет что не поддерживается, но кого это останавливало? 😃

Если коротко, как поставить:
- нажимаете правой кнопкой на Xcode -> Показать содержимое пакета
- Заходите в Contents -> MacOS
- Запускаете там Xcode файл

Пока не уверен что после установки будет работать, отпишу как поставится

Поставилось, вроде работает.

Единственное НО, вообще нет намека на ChatGPT или AI 🥲
This media is not supported in your browser
VIEW IN TELEGRAM
🛠 Попробовал IconComposer — очень удобно.

Это простая утилита, в которой можно быстро собрать иконку для macOS / iOS / visionOS:

Cразу видно, как она будет выглядеть в светлой и темной теме
Можно экспериментировать с фоном, скруглением, тенями
Есть экспорт — удобно сразу получить готовые ассеты для проекта

В целом, если хочется быстро сделать тестовую иконку или собрать что-то для pet-проекта — прям отличный инструмент. 👍
This media is not supported in your browser
VIEW IN TELEGRAM
🥃 LiquidGlass — open-source реализация нового «живого стекла», только что показанного Apple

Apple показала свежий дизайн-язык с жидкими рефракциями — я сел и повторил его в SwiftUI. Снаружи это всего одна строчка модификатора, но под капотом серьёзная кухня: Metal-шейдеры, off-screen snapshot в MTLTexture, ленивый redraw без мерцания, защита от рекурсий и никаких скриншотов руками.

Button("Click Me 🔥") { … }
.liquidGlassBackground()


Что делает
⚡️ Захватывает фон в реальном времени, но только когда он реально меняется
💤 MTKView спит — батарея не горит
🛠 Режимы: .continuous, .once, .manual
🎨 Шейдер открыт: меняйте blur, refraction, tint как хотите
🍏 Чистый SwiftUI, iOS 14+, MIT

Подключить:
https://github.com/BarredEwe/LiquidGlass

Скрины + GIF примера — в README. Забирайте, форкайте, кидайте идеи! 🚀
🇯🇵 Зашёл в книжный в Токио

Куча книг по iOS: SwiftUI, Xcode 16, iOS 18, Swift 6. Всё в духе «освой за 2 дня», «сделай 6 приложений», «начни с нуля».
Каждая — как отдельный мини-курс, с кучей скриншотов, пошаговыми инструкциями и объяснениями, почему вот тут .padding() не работает.

🔍 А теперь внимание — книга про iOS на Python. Да, серьёзно.
Pythonista 3, NumPy, GUI, игры, расширение iOS‑функционала. Всё это — прямо на айфоне.
Похоже на гайд для школьника, который хочет сделать свою первую игру и параллельно — калькулятор с графиком.

📚 В целом — в Японии дико много литературы по iOS.
Не абстрактные философские книги, а прям пошаговые гайды, как будто для внутреннего дзена:
«Нажми здесь, запусти вот это, а теперь обратись к SwiftData через ObservableObject и помолись».
2025/06/25 19:55:55
Back to Top
HTML Embed Code: