惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Cyberwarzone
Cyberwarzone
F
Full Disclosure
V
Visual Studio Blog
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
有赞技术团队
有赞技术团队
J
Java Code Geeks
博客园 - 【当耐特】
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
博客园 - 叶小钗
L
LINUX DO - 最新话题
T
Threatpost
S
SegmentFault 最新的问题
Vercel News
Vercel News
云风的 BLOG
云风的 BLOG
C
Cyber Attacks, Cyber Crime and Cyber Security
Google DeepMind News
Google DeepMind News
Know Your Adversary
Know Your Adversary
S
Schneier on Security
V
Vulnerabilities – Threatpost
D
DataBreaches.Net
G
GRAHAM CLULEY
Latest news
Latest news
P
Privacy International News Feed
D
Darknet – Hacking Tools, Hacker News & Cyber Security
C
CXSECURITY Database RSS Feed - CXSecurity.com
Scott Helme
Scott Helme
L
Lohrmann on Cybersecurity
T
The Exploit Database - CXSecurity.com
Security Latest
Security Latest
G
Google Developers Blog
L
LangChain Blog
MyScale Blog
MyScale Blog
Project Zero
Project Zero
N
News and Events Feed by Topic
Hacker News - Newest:
Hacker News - Newest: "LLM"
大猫的无限游戏
大猫的无限游戏
P
Proofpoint News Feed
Blog — PlanetScale
Blog — PlanetScale
阮一峰的网络日志
阮一峰的网络日志
N
News | PayPal Newsroom
www.infosecurity-magazine.com
www.infosecurity-magazine.com
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
SecWiki News
SecWiki News
T
Tor Project blog
C
Check Point Blog
Google Online Security Blog
Google Online Security Blog
GbyAI
GbyAI
The Last Watchdog
The Last Watchdog
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
WordPress大学
WordPress大学

Все публикации подряд на Хабре

Ловим музу за клавиатуру: как айтишнику стать автором Что умеет Midjourney в 2026? Мой немного грустный разбор этого шикарного инструмента Никто не любит писать тесты, но ИИ может исправить это IPv8 выглядит как мечта. Поэтому почти наверняка не взлетит Производители вернули в продажу материнки с DDR3. Что происходит? Управление агентом с телефона через Telegram теперь в KodaCode От координации к лидерству: как меняется роль руководителя разработки Я сделала родителям бизнес вместо пенсии: зарабатываем 70 тысяч, мама не даёт продать В три раза быстрее приемка товара и оптимизация трудозатрат на 73%: как «РСТ-Инвент» помог Gulliver Group ИИ-шечный мир победил? О влиянии искусственного интеллекта на игропром Кремль снижает давление на Телеграмм пока Европа строит интернет по паспорту Как CEO, CTO и CIO за 8 часов собрали ИИ-директора, который умеет держать позицию под давлением Как (не) потерять домен за выходные Вместо 8 разных VPS: как я организовал практику студентам на одном сервере Почему твой Open Source проект не замечают? R&D: искусство управления неопределенностью в разработке AI-дефляция: вакансий для разработчиков больше, а рост зарплат — худший за 15 лет Мы отдали управление роботами OpenClaw. Что из этого вышло Галактический ID: система идентификации для всех форм разумной жизни Шесть основ бизнес-анализа: начинаем с вопроса «Кто в игре?» Код-ревью, в котором дело не в коде Данные переехали. Команда — нет Системной подход к сдаче OSWE в 2025 Почему комната управления реактором покрашена в цвет морской пены 4 YAML-файла вместо PySpark: как аналитикам строить пайплайны без разработчиков LLM-агент для поиска свободных доменов: автоматизируем подбор Когда, зачем и как правильно начинать новую сессию в Claude Code? Как я заставил нейросеть писать макросы для FreeCAD Анатомия ИИ‑агента для подбора персонала. От тысячи резюме к топ‑10 за минуты Опыт разработчика как экономика внимания Автономность как точка невозврата: кто будет субъектом в цифровом будущем Обучение ИИ в «диких» условиях: как рутинные действия превращаются в датасеты Как измерить LLM для задач кибербеза: обзор открытых бенчмарков Где хранить код? Сравнение GitHub, GitLab и Bitbucket Математика объясняет, почему нормальное распределение встречается повсюду Почему ваш FinOps не работает: 12 тезисов от практиков Как подписать проектную документацию УКЭП с использованием бесплатных лицензий Pilot Адаптивное администрирование Sigla Vision Я грузил уран в бочки, а потом 20 лет строил ИТ в атомной отрасли Чем позвонить с Эвереста? История и обзор спутниковой связи. Часть 2 Как языковая модель помогает контролировать качество инструктажей по охране труда в металлургии Как не передать на desktop свой IP в РКН Анатомия SAP Privileges: как устроено управление правами в macOS MoneyDev: Сказка про три главных слова Обновлённый токенизатор видео K-VAE 2.0 от Сбера Как сделать диспетчеризацию дома на 1284 квартиры почти бесплатно Как мы разогнали железную дорогу Мы дали агентам рутину. Теперь надо решить — что делать с освободившимся временем Токсичный контент, промпт-хакинг и защита ИИ — всё о Guardrails для LLM Умный город начинается с точного взгляда: как «Фалькон Тех» меняет пространство к лучшему Навайбкодил приложение для анализа графов Почему Дюну так интересно читать? Упрощаем работу с рутиной или как стать Гендальфом Белым Деконструкция Go: CPU, RAM и что там происходит. Go Assembler база. Часть 1.1 Какие профессии исчезнут из-за ИИ, а какие появятся? И что с этим делать Как мы построили IT-отдел, где хочется расти: архитектурные встречи, прозрачные метрики и книжные подарки Rufler: Делаем из Claude Code автономный рой через один YAML-конфиг Sing-box и белый список приложений Как построить надёжный обмен сообщениями в микросервисах: лучшие практики для enterprise OpenAI строит MLM-пирамиду, а McKinsey и Accenture помогают ей в этом Дом, который не построил Фишер (Часть 2) «Сверхзвуковой математик» против «Вдумчивого логиста»: битва алгоритмов 3D-упаковки Мультимодальные модели – грубый и дорогой инструмент Разговоры ничего не стоят. Код тоже Проверки физических лиц: с кого начнет ФНС Топ-10 бесплатных нейросетей для создания видео в 2026 году Первые слои кода: как наши решения сегодня определяют архитектуру ИИ на десятилетия Разработка нового статического анализатора: PVS-Studio JavaScript Поиск уязвимостей ПО: базовый минимум или роскошный максимум Почему оценка персонала не работает как инструмент управления Как мы разработали ИИ-ассистента и сократили рутину продуктовой команды на 50% Как я ушел из найма, нажарил косточек и продал на маркетплейсах на 168 млн в год Когда 1С:ERP уже внедрена, а нормального производственного плана всё ещё нет Как я сделал Claude мультимодальным, подключив к нему Qwen Omni Как приглашение на вакансию мечты превращается в атаку Infrastructure as Code: философия и лучшие практики IaC Тестируем Yandex Code Assistant на задаче, в которой нужно хранить секреты nxs-universal-chart v3.0: новое поколение универсального Helm-чарта Callback Injection: Техника, которая отправила Microsoft Defender в глухой нокаут «Все идеи на стол»: митап как способ вывести проект из тупика Сегодня я узнал нечто новое о GPU благодаря багу в своей игре Как заставить LLM ̶ ̶г̶а̶л̶л̶ю̶ ̶ эволюционировать Карта событий как фундамент аналитики: практический кейс для E-commerce Что выбрать для AI: x86, ARM или RISC-V? Дайджест железа за март Роль соматических мутаций в развитии аутоиммунных заболеваний: путь к избирательной терапии Mythos от Anthropic — тревожный сигнал для всех, а не только для банков Guardrails для LLM на Java: как приручить промпт‑инъекции и токсичные ответы Green-VLA: как мы собрали VLA-модель для реального антропоморфного робота и не потеряли обобщение Финансовая гонка вооружений: почему умные люди добровольно в ней участвуют Эра ИИ-агентов наступила: выбираем лучшего цифрового сотрудника # Практический опыт внедрения WinCC Redundancy на производственном предприятии Сделал MVP за 3 дня, а потом неделю прикручивал оплату. Оно того стоило? Физика против Маска: почему Starship V3 может оказаться ещё одной катастрофой Нефть Венесуэлы: крупнейшие запасы в мире, но не крупнейшая нефтяная держава JPA 4. Переосмысление Hibernate Почему зеркальная фотокамера Nikon D5 десятилетней давности идеально подошла для миссии «Артемида-2» Проект «Уровень-Спутник» или как мы сделали платформу для гидрологов «Замедлиться, чтобы ускориться»: почему ИИ повышает цену ошибок в требованиях и архитектуре Как с нуля поднять трафик IT-компании на 1657% при бюджете 55 тыс. и выжить Pixel-perfect Downsampling — идеальная отрисовка 50 миллионов точек без потерь
AI в iOS-разработке: что у меня реально закрепилось в 2026, а что я выкинул
p_lunev · 2026-04-24 · via Все публикации подряд на Хабре

Уровень сложностиСредний

Время на прочтение6 мин

Охват и читатели1.3K

Мнение

За последние полгода я перетряс свой рабочий стек полностью: Cursor, Claude Code, Codex, локальные Qwen-модели для ревью, несколько итераций своего AGENTS.md, Xcode MCP, mobile-mcp, Conductor для параллельных сессий. Что-то прижилось, что-то я удалил через неделю, а какие-то практики, которые ещё весной казались обязательными, сейчас выглядят странно.

Ниже — мои личные заметки по итогам этих полугода, а не обзор индустрии. Многое я подсмотрел у коллег и в чатах, не всё придумал сам.

1. Минимализм в AGENTS.md

Если у вас CLAUDE.md (или AGENTS.md — тут неважно) длиной под две сотни строк, с описанием архитектуры, код-стайла, бизнес-домена и словариком сокращений — попробуйте его сократить раз в десять. Скорее всего, станет лучше.

У меня самого был файл на 180+ строк. Я сносил его два вечера, в итоге осталось восемь. Ощущение от сессий поменялось заметно: меньше случаев «модель зачем-то пересказывает мне мой же конфиг в первом ответе», больше релевантных правок с первого раза.

Почему так — по моим ощущениям: у моделей есть context window, и есть его рабочая часть. Первый может быть миллионным, вторая начинает подплывать где-то в районе сотни тысяч токенов, плюс «lost in the middle» никто не отменял. Всё, что вы впихнули в начало «на всякий случай», пожирает именно рабочую часть.

Мой текущий файл выглядит примерно так:

# iOS App
## Quick links
- @.agents/code-review.md — PR review protocol
- @docs/architecture.md — модули и границы
- @SPECS/WORKFLOW.md — правила работы с фичами
## Core rules
1. Specs first — код без обновлённой спеки не принимается
2. `make verify` перед завершением задачи
3. Preview должен совпасть с Figma — запускай Vision-сравнение
4. На legacy-части проекта не auto-apply, только с ревью

Всё остальное — это скиллы и документы, которые агент подтягивает сам по ссылке, когда они действительно нужны.

2. AGENTS.md как единый источник

Если вы работаете сразу с Cursor, Claude Code и Codex, у каждого инструмента свой «канонический» конфиг: CLAUDE.md, .cursorrules, AGENTS.md. Попытка поддерживать их синхронно заканчивается дрейфом правил примерно всегда.

Мне помогло максимально тупое решение:

mv CLAUDE.md AGENTS.md && ln -s AGENTS.md CLAUDE.md

AGENTS.md поддерживают OpenAI, Cursor и куча опенсорса — де-факто это сейчас самый живой формат. Симлинк закрывает Claude Code. Один источник, ноль расхождений. Я видел пару команд, где вместо симлинка стоит генератор, собирающий три файла из одного шаблона — работает тоже, но сложнее.

Один неприятный момент, про который стоит помнить: системный промт Claude Code меняется часто, без анонсов, и он приоритетнее вашего AGENTS.md. Для критичных инвариантов на инструкции в AGENTS.md я лучше не опираюсь — если правило должно выполниться обязательно, для него есть pre-commit hook.

3. CLI почти всегда лучше MCP, когда речь про Xcode

В Xcode 26.3 Apple выкатила свой MCP-сервер — сборка, тесты, работа с файлами проекта. Я честно пробовал его месяц. В основе у него UI-автоматизация самого Xcode, и это отчётливо чувствуется: медленнее и менее предсказуемо, чем прямой вызов инструментов.

Тонкие скрипты поверх xcodebuildxcrun simctl и xcbeautify почти всё покрывают:

# Скриншот симулятора
xcrun simctl io booted screenshot /tmp/screen.png
# Логи приложения — без Console.app
xcrun simctl spawn booted log show --predicate 'processImagePath contains "MyApp"' --last 1m
# Сборка с нормальным выводом
xcodebuild build -scheme MyApp | xcbeautify

Исключение, ради которого я Xcode MCP всё-таки держу — рендер SwiftUI Preview в картинку. Через CLI это тоже технически делается, но заметно муторнее. Этот рендер, кстати, открывает следующий сценарий.

4. Vision + SwiftUI Preview для сверки с Figma

Собираем Preview конкретной вьюхи через Xcode MCP, получаем PNG, берём её эталон из Figma через Figma MCP, и просим Vision-модель сравнить. На выходе — текстовый отчёт: отступ 16 вместо 12, цвет #2A2A2A вместо #1F1F1F, не тот шрифт.

Это не заменяет дизайн-ревью целиком. Композицию, насколько макет вообще имеет смысл, и попадание в tone of voice человек всё равно оценивает лучше. Но эта связка закрывает самую нудную часть — попиксельную сверку, в которой человек ошибается сильнее всего к концу дня.

Я держу это в make verify, чтобы отчёт автоматически генерировался на pre-commit. Экраны с большими расхождениями — красный флаг, с мелкими — сноска в MR.

5. Видео как основной артефакт ревью

Пожалуй, моя любимая iOS-специфика из того, что прижилось.

Выглядит это примерно так. На задачу поднимается чистая VM с симулятором. Агент билдит приложение, запускает mobile-mcp, тыкает по сценарию из спеки. Весь прогон пишется в видео через xcrun simctl io booted recordVideo. В MR кладём описание, несколько скриншотов ключевых экранов и сам ролик.

xcrun simctl erase all
xcodebuild build -scheme MyApp -destination 'platform=iOS Simulator,name=iPhone 16 Pro'
xcrun simctl io booted recordVideo /tmp/run.mp4 &
REC_PID=$!
xcodebuild test -scheme MyAppUITests -destination 'platform=iOS Simulator,name=iPhone 16 Pro'
kill -TERM $REC_PID

На себе я заметил, что смотреть минутный ролик сильно дешевле, чем продираться через diff на несколько сотен строк — особенно если задача про UI. Агент, получая тот же ролик перед оформлением MR, довольно часто сам ловит у себя ошибки и переделывает.

Очевидный минус: для чисто логических/модульных изменений никакого видео не нужно, достаточно обычных тестов. Я не стал навязывать ролик всем типам задач, это не обязательный пункт в шаблоне MR.

6. Спека раньше кода

Есть неутихающий спор: смотреть каждый diff от агента или верифицировать только результат. Для себя я пришёл к такому компромиссу.

На greenfield-проекте или в прототипах auto-apply — нормально, агент может писать и коммитить сам. Код всё равно два-три раза перепишется до релиза, и ловить каждую строчку бессмысленно.

На проекте с сотнями тысяч строк легаси я verify каждый шаг. Это не потому, что «так правильнее», а потому что цена ошибки в таких проектах растёт нелинейно.

Оба режима, на мой взгляд, работают только при одном условии: у задачи есть markdown-спека в репе. Не JIRA-тикет, не тред в чате, а файл примерно такой формы:

## Context & Goals
## Technical drivers
## Current state
## Options considered (и почему выбрали эту)
## Implementation details
## Definition of Done
## QA notes

У меня такие спеки выходят на 3–8 страниц — в зависимости от задачи. Много? Когда я впервые сел это писать, казалось избыточным. Но агент, идущий по подробной спеке, ошибается ощутимо реже, а главное — спека переживает сессию. Можно вернуться через две недели, и контекст восстанавливается за минуту.

7. Definition of Done как контракт

На одном из своих проектов я поймал себя в идиотской петле: агент чинил несколько связанных багов, каждый фикс ломал следующий, за полдня я так и не сдвинулся с места. Когда разобрался, увидел, что корень всего — один неправильный lookup, который был виден в debug-трейсе буквально за минуту, если туда посмотреть.

С тех пор в DoD я кладу именно проверяемые команды, а не формулировки в стиле «всё должно работать»:

## Definition of Done
- [ ] `xcodebuild build -scheme MyApp` — zero warnings
- [ ] `xcodebuild test -scheme MyAppUnitTests` — all pass
- [ ] `make test-e2e` — all pass, видео приложено к MR
- [ ] Preview совпадает с Figma (отчёт Vision-сравнения приложен)
- [ ] Нет изменений в SPECS/ без обновления INDEX.md

Когда у агента в спеке лежит такой чек-лист, он сильно меньше импровизирует. Каждая строчка превращается в команду с булевым исходом — спорить не о чем.

8. Параллельные сессии и worktree

Про это я почти нигде не встречал внятного описания, но разница по ощущениям большая. Правило у меня простое: одна сессия агента — один git worktree.

git worktree add ../myapp-feature-a feature/a
git worktree add ../myapp-feature-b feature/b

Три параллельные задачи — три папки, три сессии. Никто ни у кого не затирает изменения и не заливает контекст. Для оркестрации я пробовал cmux (tmux для агентов) и Conductor — первый привычнее, второй красивее. Остановился на cmux: мне важнее быстро переключаться между сессиями, чем смотреть на них.

9. Где AI у меня стабильно проваливается

Чтобы не выглядело слишком благостно — вот что я до сих пор либо делаю руками, либо очень плотно контролирую:

  • Swift Concurrency: @MainActor, sendable-конформанс, isolated. Модели пишут правдоподобный код, который либо не компилируется, либо компилируется с race condition, которая проявится через неделю.

  • Миграция с @ObservedObject на @Observable. Старый и новый API смешиваются в одном файле почти всегда; нужна очень чёткая спека и ручные чекпоинты.

  • Build settings, схемы, .xcconfig, всё что лежит в .xcodeproj как XML. Быстрее и безопаснее руками.

  • App Store Connect, провижининг, сертификаты — здесь никакой AI не помогает, это скорее ритуал поверх Fastlane.

  • Старый Objective-C с кривой мапой модулей. В Bridging Header и #import-ах модель путается почти сразу.

10. Мой текущий стек

Для прозрачности. Сейчас у меня активно используется Claude Code как основной агент, Codex через ChatGPT для перекрёстного ревью, GitHub Copilot в PR-ах, Serena MCP для навигации по символам (заметно экономит токены по сравнению с grep), Xcode MCP — только ради Preview, Figma MCP плюс Vision-модель для сверки с макетами. Cursor держу на случай задач, где важно переопределить системный промт.

По деньгам выходит где-то в районе сотни долларов в месяц, плюс-минус. Окупается очень по-разному: в одних спринтах AI даёт сэкономить пару дней, в других тормозит ровно в тех местах, про которые я писал в разделе 9. Среднее по году — положительное, но не «пишу в десять раз быстрее».

Вместо заключения

По моим ощущениям, работа iOS-разработчика постепенно сдвигается от «я пишу код» к «я пишу спеки и смотрю видео прогонов». Это не апгрейд профессии и не её деградация, скорее другой набор повседневных действий. Меньше рутины в SwiftUI и build-скриптах, больше работы головой над тем, что именно мы строим и как это проверять.

Но работает это при выстроенном workflow. У меня лично эффект появился только после того, как AGENTS.md усох до восьми строк, спеки стали обязательными, а видео начало заменять чтение диффа на ревью. До этого момента AI у меня скорее ломал больше, чем чинил — и я понимаю коллег, которые говорят, что «у них не взлетело». Возможно, дело в том, что стек пока не докрутили.