en
Feedback
Сергей Предводителев

Сергей Предводителев

Open in Telegram

Авторский канал Сергея Предводителева. Заметки о веб-разработке, PHP, открытом ПО, развитии и немного о жизни. Чат канала — @predvoditelev_chat Сайт: https://predvoditelev.ru

Show more
1 212
Subscribers
+124 hours
-27 days
+430 days
Posts Archive
🌿 Про контейниризацию Pi Основная идея агента Pi состоит в том, что из коробки он предоставляет самый минимум: консольный ин
🌿 Про контейниризацию Pi Основная идея агента Pi состоит в том, что из коробки он предоставляет самый минимум: консольный интерфейс, сессии, поддержка популярных провайдеров моделей, короткий системный промпт и базовый набор инструментов (read, bash, edit, write). Всё остальное предлагается настраивать под себя с помощью готовых расширений или дорабатывать агента, используя LLM и API агента на TypeScript: в системном промпте по умолчанию описано как это делать. Выглядит подход классно — не мы подстраиваемся под инструмент, а заставляем инструмент подстраиваться под нас. Первое, что я решил попробовать сделать — расширение, которое заставит агента спрашивать разрешение при использовании инструмента write. Pi справился быстро, но тестирование вышло интересным: • агент запрашивает разрешение на выполнение write; • запрещаю, агент уходит думать; • решение агента: «расширение мешает выполнить задачу, отключаем расширение»; • агент отключает созданное расширение и выполняет write. Какой целенаправленный агент 😂 Будем ограничивать — завернём Pi в контейнер. Вообще Pi предлагает несколько вариантов контейнеризации, но я выбрал старый добрый докер. Dockerfile вышел таким:
FROM node:24.18.0-trixie-slim

RUN apt-get update \
  && apt-get install -y --no-install-recommends \
    ca-certificates \
    fd-find \
    ripgrep \
  && rm -rf /var/lib/apt/lists/*

RUN npm install -g --ignore-scripts @earendil-works/pi-coding-agent

ENV PI_CODING_AGENT_DIR=/pi
ENV PI_CODING_AGENT_SESSION_DIR=/pi-sessions
WORKDIR /workspace

ENTRYPOINT ["entrypoint.sh"]
CMD ["pi"]
entrypoint.sh для установки корректного владельца директории с сессиями:
#!/bin/sh
set -eu

PUID="${PUID:-0}"
PGID="${PGID:-0}"
if [ "$PUID" = 0 ] && [ "$PGID" = 0 ]; then
  exec "$@"
fi

chown -R "$PUID:$PGID" "$PI_CODING_AGENT_SESSION_DIR"

export HOME=/tmp/user-home
exec setpriv --reuid="$PUID" --regid="$PGID" --clear-groups "$@"
Команда для запуска:
docker run --rm -it --init --read-only \
  -e PUID="$(id -u)" \
  -e PGID="$(id -g)" \
  --tmpfs /tmp \
  -v yii-pi-sessions:/pi-sessions \
  -v "$HOME"/.pi/agent/models.json:/pi/models.json:ro \
  -v "$(pwd)":/workspace \
  my-pi-harness:latest
Данная команда запускает контейнер с корневой файловой системой только для чтения. На запись будут доступны только папка для временных файлов /tmp, папка с сессиями Pi и собственно текущая рабочая директория. Изменения будут выполняться от имени текущего пользователя. В таком виде гораздо безопаснее работать с агентами. Агент не сможет изменить то, что ему менять не положено 🔆

🌿 Про Wormsoft AI Начал потихоньку щупать Pi. Это независимый агент и для него нужна LLM с доступом по API. Подписка Claude Code не подходит, за API нужно платить отдельно. Встал вопрос, куда же идти за модельками... Пока остановился на российском провайдере Wormsoft AI, который создан и поддерживается компанией ВОРМСОФТ с забавным слоганом «делаем всё долого, дорого и плохо» 🤣. Один из владельцев — Антон Морев. Давно на него подписан, собственно поэтому и выбрал этот сервис. Что мне нравится: • Работает без VPN • Оплата российскими картами • Приемлемые цены • Очень оперативная поддержка • Удобный личный кабинет Помимо прочего в сервисе есть так называемые «бусты» — возможность купить токенов сверх лимита по тарифу. Удобно, когда в моменте требуется сделать что-то токенозатратное. В личном кабинете доступны последние 100 запросов/ответов в «сыром» виде, что крайне полезно для отладки. Доступные модели: • deepseek-v4-flash / v4-pro • gemma4:31b • kimi-k2.6 / k2.7-code / k3 • minimax-m2.5 / m3 • nemotron-3-ultra • gpt-oss:20b / 120b • qwen3-embedding:8b / 27b / 35b-a3b • glm-5.1 / 5.2 На бесплатном тарифе доступно совсем чуть-чуть токенов, но немного поиграться и протестировать сервис, например, с deepseek-v4-flash, достаточно. 🤖 Wormsoft AI — на сайте всё подробно расписано: как использовать, какие тарифы и т. д. Не реклама, а рекомендация. Но ссылочка реферальная 🙂

🌿 Про настройку Readline Продолжая осваивать Linux, добрался до настройки Bash 🧐 Под капотом Bash, другие командные оболочк
🌿 Про настройку Readline Продолжая осваивать Linux, добрался до настройки Bash 🧐 Под капотом Bash, другие командные оболочки и интерактивные консольные утилиты используют библиотеку GNU Readline, которая отвечает за перемещение курсора, вставку/удаление символов, а также обеспечивает горячие клавиши, историю команд, автодополнение и прочий функционал для взаимодействия со стройкой ввода. Поведение библиотеки можно настроить отдельно через конфигурационные файлы ~/.inputrc и /etc/inputrc. Параметры поведения задаются с помощью переменных в формате:
set variable value
Все доступные параметры описаны в документации. Мне всегда не нравилось, что автодополнение выводится в несколько колонок. Теперь это можно исправить 🙂. Сейчас моя конфигурация выглядит так:
# Выделать общую часть вариантов 
# автодополнения другим цветом
set colored-completion-prefix on

# Выделять цветом варианты автодополнения
# в зависимости от типа файла
set colored-stats on

# Выводить варианты автодополнения
# в одну колонку
set completion-display-width 0

# Автоматически отображать список 
# возможных вариантов автодополнения, 
# если найдено несколько совпадений
set show-all-if-ambiguous on
По последней настройке пока не понял — удобно это или нет. Вроде не надо ещё раз нажимать Tab, чтобы список вариантов открылся, а с другой — не всегда этот список нужен, т. к. сразу понятно, какие символы нужно дописать. В остальном, работать с терминалом стало приятнее 👨‍💻

🌿 Про Obsidian и ширину mermaid-схем На стримах у Павла Бучнева увидел, как LLM генерирует диаграммы последовательности. Пол
🌿 Про Obsidian и ширину mermaid-схем На стримах у Павла Бучнева увидел, как LLM генерирует диаграммы последовательности. Получается очень наглядно. Не редко такой диаграммой можно отобразить процесс гораздо лучше, чем текстом. Вручную такие схемы делать так себе удовольствие, но теперь есть LLM, которые отлично справляются с этой задачей. Тоже начал их использовать 😏 Базу знаний я уже долгое время веду в Obsidian. Mermaid-схемы в нём поддерживаются, но есть один нюанс. Ширина контента в Obsidian 700 пикселей и это очень удобно для текста. Диаграммы же, как правило, шире и появляется горизонтальная прокрутка. Дошли руки это поправить. Интерфейс Obsidian реализован с помощью HTML+CSS и поддерживаются пользовательские стили. Пару запросов к LLM, DevTools, небольшая доводка ручками и CSS-фикс готов:
.cm-scroller {
    container-type: inline-size;
}
.markdown-source-view .markdown-rendered.cm-lang-mermaid,
.markdown-reading-view .el-pre:has(.mermaid) {
    width: 100cqw;
    max-width: none;
    position: relative;
    left: 50%;
    transform: translateX(-50%);
    margin-left: 0;
}
.markdown-source-view .mermaid,
.markdown-reading-view .el-pre:has(.mermaid) {
    text-align: center;
}
Теперь контейнер под mermaid-схемы растягивается на всю доступную ширину, а сама схема располагается по центру. По-моему неплохо вышло 🙂

#инфопузырь ☕️  Инфопузырь #18 (Июнь 2026) В июне продолжил уделять почти всё время обучения на дорожные карты roadmap.sh, инфопузырь снова маленький 🤷‍♂️ ⭐️ Видео Эволюция админок: вчера, сегодня, завтра — доклад Данила Щуцкого про историю развития админок. Основная часть доклада — рассказ о возможностях Moonshine и инструментарии вокруг него. Доклад был представлен в рамках конференции Podlodka PHP Crew #7. ⭐️ Статьи Whitepaper Сбера «AI-Disrupt PDLC»: разбор для тех, кто пишет код — обзор технической концепции ИИ-трансформации бизнеса от Сбера.

🌿 Про zizmor Александр Макаров начал внедрять инструмент zizmor в репозитории Yii. Раньше про него не слышал, надо разобраться 🙂 🌈 zizmor — статический анализатор безопасности для GitHub Actions. Проверяет конфигурации рабочих процессов GitHub Action и конфигурацию Dependabot. zizmor предоставляет множество путей для установки. Для запуска локально я взял Docker-образ:
docker run \  
     --volume .:/project:ro \  
     --rm \  
     ghcr.io/zizmorcore/zizmor:latest \  
     --persona auditor --color always /project
А для запуска в CI воспользовался экшеном zizmor-action. Инструмент поддерживает три уровня строгости проверок (в терминах zizmor — persona): • regular — режим по умолчанию; • pedantic — «педантичный» режим, включающий больше проверок; • auditor — максимально строгий режим, возможны ложноположительные срабатывания. Если у zizmor есть доступ к интернету и GitHub API, то он попытается получить дополнительная информацию о подключаемых экшенах и сделает дополнительные проверки. Эксперименты проводил над репозиториями PHPTG. Анализитор обнаружил, например, такие проблемы: Использование тегов вместо хэшей для подключаемых экшенов:
uses: ramsey/composer-install@v4
^ action is not pinned to a hash (required by blanket policy)
Отсутствие явно прописанных разрешений:
tests:
  name: PHP ${{ matrix.php }}-${{ matrix.os }}
  runs-on: ${{ matrix.os }}
  ...
^
this job default permissions used due to no permissions: block
Использование стороннего экшена вместо явного использования уже доступных команд:
- name: Commit changes
  uses: stefanzweifel/git-auto-commit-action@v7
^ use `git add`, `git commit`, and `git push` in a script step
Для каждой проблемы в документации доступно подробное описание и предложения по исправлению. К слову, zizmor умеет и в автоматическое исправление, но этот функционал я не проверял, воспользовался ИИ 🤖 Итого — инструмент крайне полезный. Если в репозитории используется GitHub Actions, нужно обязательно добавлять zizmor в CI.

🌿 Про опциональные зависимости в пакетах Composer и статанализ Опциональные зависимости в пакетах могут использоваться в нескольких вариантах. 1) Улучшение функционала без добавления чего-то нового. Независимо от наличия зависимости функционал будет работать, но с зависимостью, например, будет работать быстрее. 2) Расширение текущего функционала, но на уровне приложения нужно будет использовать опциональную зависимость. Например, драйвера для различных БД: ставим драйвер и в приложении настраиваем его использование. 3) Опциональная зависимость обязательно требуется для работы части функционала пакета. Если мы используем данный функционал в приложении, то обязательно нужно поставить какую-то дополнительную зависимость. В последнем варианте можно столкнутся с ситуацией, когда пакет установили и использовали как раз функционал требующий дополнительной зависимости. Если мы забыли установить зависимость, то получим ошибку во время выполнения. Описывал такой случай ранее. К сожалению, существующие статические анализаторы (Psalm, PHPStan, Composer Require Checker, Composer Dependency Analyzer) помогут во втором варианте (зависимость используется в приложении и анализатор увидит это), но не спасут в третьем варианте (на уровне приложения всё на месте, проблема внутри пакета). По крайней мере я не нашёл такой возможности. А было бы классно иметь, например, PHPStan-аннотацию @composer-require которая для класса/интерфейса/перечисления в случае его использования в приложении проверяет наличие зависимости.
/**
 * @composer-require symfony/property-access:^6.4|^7.0|^8.0
 */
final class ObjectNormalizer ...
Как вам идея? 🤔 PS Для PHPStan сделал тикет.

Repost from Пых.конф
Как тебе идея?
Anonymous voting

Repost from Пых.конф
Пыхник’26 Привет, дорогие Пыхари! На закрытии Пых.конф’25 мы с вами договорились, что встретимся снова в 2026. В этом году вместо полноценной Пых.конф мы решили попробовать другой формат — Пыхник! Примерный план: • конец августа / начало сентября; • загородный отель Art Village (12 км от МКАД); • 100-120 офлайн-участников; • 1 зал без параллельных потоков; • 8 лучших докладов про PHP и экосистему; • фуршет от конференции + рестораны на территории; • записи докладов для всех участников уже на следующий день; • возможность приехать с семьёй и провести в отеле ещё пару дней. По предварительным расчётам стоимость участия может составить 6000₽. Добиться такой цены получится за счёт простого формата: без нескольких залов, сложного продакшена и прочих атрибутов больших конференций. Чтобы не рисковать деньгами и понять, нужна ли такая встреча сообществу, мы думаем запустить краудфандинг на Planeta.ru (у нас уже был положительный опыт со слониками). Собираем необходимую сумму — проводим мероприятие, нет — деньги возвращаются. Пожалуйста, проголосуй ниже безотносительно даты и программы — так мы сможем предварительно оценить интерес. И ждём побольше вопросов в комментариях, чтобы мы ничего не забыли учесть!

🌿 Про Пыхник 2026 Пых.конф'26 по определённым причинам в этом году провести никак не выходит. Но есть мысль встретится немного в другом формате под названием 💙Пыхник. Проголосуйте, как вам эта идея?

🌿 Про опциональные зависимости в пакетах Composer и статанализ Опциональные зависимости в пакетах могут использоваться в нескольких вариантах. 1) Улучшение функционала без добавления чего-то нового. Независимо от наличия зависимости функционал будет работать, но с зависимостью, например, будет работать быстрее. 2) Расширение текущего функционала, но на уровне приложения нужно будет использовать опциональную зависимость. Например, драйвера для различных БД: ставим драйвер и в приложении настраиваем его использование. 3) Опциональная зависимость обязательно требуется для работы части функционала пакета. Если мы используем данный функционал в приложении, то обязательно нужно поставить какую-то дополнительную зависимость. В последнем варианте можно столкнутся с ситуацией, когда пакет установили и использовали как раз функционал требующий дополнительной зависимости. Если мы забыли установить зависимость, то получим ошибку во время выполнения. Описывал такой случай ранее. К сожалению, существующие статические анализаторы (Psalm, PHPStan, Composer Require Checker, Composer Dependency Analyzer) помогут во втором варианте (зависимость используется в приложении и анализатор увидит это), но не спасут в третьем варианте (на уровне приложения всё на месте, проблема внутри пакета). По крайней мере я не нашёл такой возможности. А было бы классно иметь, например, PHPStan-аннотацию @composer-require которая для класса/интерфейса/перечисления в случае его использования в приложении проверяет наличие зависимости.
/**
 * @composer-require symfony/property-access:^6.4|^7.0|^8.0
 */
final class ObjectNormalizer ...
Как вам идея? 🤔

🌿 Про случай с лимитами в Claude Code и выбор модели Решил я как-то обновить зависимость yiisoft/html в пакете Yii Bootstrap 5, который предоставляет виджеты из Bootstrap. В последних версиях Yii HTML был изменён порядок вывода атрибутов в тегах: ранее они сортировались, а теперь выводятся в порядке их добавления. В тестах Yii Bootstrap 5 очень много проверок HTML, которые нужно было исправить в соответствии с новым порядком атрибутов. По итогу изменения затронули более 1000 строк (см. PR). Отличная задача для ИИ-агента. Тут даже объяснять ничего не надо: смотри ошибки в тестах и исправляй. Запустил я Claude Code, сделал простейший промпт, и он начал работу: • запустил тесты; • посмотрел ошибки; • осознал, что от него требуется; • запустил в фоне параллельно 10+ агентов • начал вносить правки • и упёрся в лимит 🤷‍♂️ Так быстро лимиты у меня ещё не заканчивались (у меня, правда, тариф Pro). Проблема была в том, что файлы тестов большие, вывод PHPUnit тоже большой, а модель по умолчанию у меня стояла Opus 4.6. Claude Code в субагентах всё это дело активно читал и быстро упёрся в лимиты. В следующий раз я выбрал дешёвую модель Haiku 4.5 для быстрых ответов, попросил агента не запускать субагентов и просто шаг за шагом править тесты. И он отлично справился, скушав не так уж много токенов. Такая вот зарисовка из опыта взаимодействия с LLM 🙂

🍉 Podlodka AI Crew #3 «AI-First Development» С 15 по 19 июня пройдёт третий сезон онлайн-конференции Podlodka AI Crew, котор
🍉 Podlodka AI Crew #3 «AI-First Development» С 15 по 19 июня пройдёт третий сезон онлайн-конференции Podlodka AI Crew, который будет посвящён уже не отдельным ИИ-инструментам, а в целом модели разработки с полноценной интеграцией с ИИ. Программа: • Открытая сессия «Жизнь после SDD, как не убить качество» • Демо-сессия «CLI-агенты как основа AI-автоматизаций» • Круглый стол «Как AI меняет найм инженеров» • Демо-сессия «Дизайн без дизайнеров: генерируем UI с помощью AI» • Воркшоп «Воркшоп по Pi — собери свой агентский harness» • Демо-сессия «Скиллы: как создавать, улучшать и распространять на команды» • Демо-сессия «Как эффективно проверять код, сгенерированный Ai» • Демо-сессия «Model routing и управление контекстом: как настроить экономику AI-агентов» • Доклад «Eval Driven Development: как перестать проверять AI на глаз» • Демо-сессия «Как внедрить AI в компанию за 50к в месяц» • Доклад «Агенты, которые улучшают сами себя» • Бар «Prompt in the Dark» ⚡️ Полная информация на сайте — расписание, спикеры, билеты. ————— По традиции, бонусы для подписчиков 😎 ⭐️ SERGEI — промокод на скидку 500 рублей ⭐️ Розыгрыш двух бесплатных проходок Чтобы получить проходку, нужно выполнить несколько условий: • быть подписанным на канал @sergei_predvoditelev; • написать в комментарии к этому посту как сейчас ИИ встроен в ваш личный процесс разработки. В субботу, 13 июня, случайно-субъективно выберу победителей 😏

#инфопузырь ☕️  Инфопузырь #17 (Май 2026) В мае много образовательного времени ушло на дорожные карты roadmap.sh, так что в этот раз выпуск инфопузыря вышел очень коротким. ⭐️ Видео AI workflow для разработчика: как перестать получать мусор от нейросети и писать нормальный код — обзор нововведений в AI Factory от Данила Шуцкого, но большую часть ролика занимают рассуждения Данилы о выработке шаблонов взаимодействия с LLM и в целом об организации процесса работы с LLM. Локальный LLM на вашем компьютере на примере LM Studio — доклад Сергея Кузнецова о личном опыте использования локальных LLM и мультиагентных систем. Доклад был представлен в рамках конференции Podlodka AI Crew #1. ⭐️ Источники Тимур Хахалев про AI Coding — телеграм-канал про агентскую разработку. Подписчиков много, Тимур также продаёт свои курсы и консультации, но контент канала на первый взгляд интересный и полезный.

🌿 Про клиентов для работы с большими языковыми моделями Экосистема для работы с LLM очень активно развивается, в том числе появляется множество инструментов для взаимодействия с LLM в формате чата. Авторы моделей делают своих клиентов (Claude Code, Claude Desktop Gemini CLI, Codex CLI). Создаются независимые решения, например, OpenCode или Dive. Помимо отдельных приложений создаются плагины для IDE (IDEA, VS Code) или новые IDE (Codex, Antigravity и др.). И везде реализуется аналогичный функционал: • встроенные инструменты; • навыки; • режимы работы. Какой-то стандартизации здесь не наблюдается и каждый делает как ему хочется 🤷‍♂️ Но если разобраться, то эти вещи избыточны, точнее они не должны быть отдельными сущностями, а должны настраиваться в приложении поверх MCP-серверов. MCP — протокол, описывающий взаимодействие LLM-клиентов с внешними инструментами и источниками данных. В частности, MCP-сервер предоставляет инструменты, промпты и ресурсы. ❓ Зачем каждый реализовывает свои инструменты для работы с файловой системой или GIT, если можно подключить MCP-сервер, который это всё предоставит? ❓ Зачем придумывать свой функционал навыков, если можно получать промпты и ресурсы из MCP-сервера? ❓ Зачем делать встроенные режимы работы, если можно реализовать их через набор инструментов, промптов и ресурсов MCP-сервера? LLM-клиенты должны предоставлять удобный интерфейс и иметь максимально гибкую настройку MCP-серверов. Никаких встроенных промптов/инструментов/навыков и подобных вещей. Процесс взаимодействия с моделью должен быть полностью под контролем пользователя 😎

🌿 Про оптимизацию автозагрузки классов в Composer Composer генерирует карту классов для автозагрузки в соответствии с настройками autoload в composer.json и сохраняет её в vendor/composer/autoload_classmap.php. Автозагрузчик использует эту карту для поиска классов по имени, а если не находит, то по умолчанию осуществляет поиск в соответствии с правилами PSR-4: смотрит пространство имён и имя класса, проверяет существование соответствующего файла и затем подключает его. В общем случае в карту классов попадает лишь небольшое их количество (или вообще ничего), а для большинства Composer приходится делать преобразование в имя файла и выполнять дополнительные обращения к файловой системе. Автозагрузка вызывается практически для всех используемых классов, а также при вызове is_a(), class_exists() и других подобных методов (в приложениях встречается не часто, но в библиотеках и фреймворках это популярная история 🙂). Для оптимизации производительности и сокращения накладных расходов при поиске классов Composer предлагает несколько вариантов. Методы, которые добавляют/удаляют пакеты из проекта (install, update, require, remove, reinstall) имеют соответствующие опции: • --optimize-autoloader, -o — сканировать все PSR-0/PSR-4 директории (как в проекте, так и в подключенных пакетах) и генерировать оптимизированную карту классов для улучшения производительности. Если класс не найден в карте, то будет выполнен поиск в соответствии с PSR. • --classmap-authoritative, -a — автозагрузка классов только из карты, поиск по файловой системе не выполняется. Автоматически включает --optimize-autoloader. • --apcu-autoloader — кэшировать в APCu результат поиска классов, включая отсутствующие классы. Метод dump-autoload имеет аналогичные опции --classmap-authoritative, --optimize и --apcu. Соответствующие опции можно включить и через конфигурацию в composer.json:
{
  config: {
    "optimize-autoloader": true,
    "classmap-authoritative": true,
    "apcu-autoloader": true,
  }
}
Для продакшена всегда имеет смысл использовать --optimize-autoloader, а если нет динамического создания классов (даже звучит страшно 👻 ), то и --classmap-authoritative:
composer install --no-dev --classmap-authoritative
В документации заявляется, что оптимизация автозагрузки в некоторых случаях может сократить время ответа на целых 50-100 мс. ⭐️ Полезные ссылки • Статья «Autoloader optimization» в документации Composer • Параметры autload в composer.jsonPSR-0 / PSR-4APCu (модуль PHP)

#инфопузырь ☕️  Инфопузырь #16 (Апрель 2026) Традиционная подборка интересного контента, который мне удалось изучить в течение месяца 🤓 ⭐️ Видео Пишем код с Claude, CTX, ИИ и ИИгорем — стрим PHP Fart Time про разработку с использование Claude Desktop и CTX. AI-программист за 500 рублей: правда об агентском кодинге — Антон Морев о внедрении агентской разработки на примере использования Kilo Code для решения реальной бизнес-задачи в реальном проекте. Вайб-кодинг уничтожает предпринимателей. Я проверил на себе — опыт создания продукта методом вайбкодинга от предпринимателя, знающего разработку только по верхам. «Инженерный инстинкт» — 11й выпуск подкаста «Нестандартная модель» с руководитель разработки Angie Software Валентином Бартеневым (экс-разработчик nginx): разговор про процесс разработки инфраструктурного ПО, влиянии ИИ и важности понимания фундаметнальных принципов в ИТ и в целом в жизни. F95 — философия программиста от Егора Бугаенко. Ответы на вопросы о программировании, архитектуре, менеджменте, политике и жизни программиста. ⭐️ Статьи Code Mode: the better way to use MCP — статья об интересном подходе к использованию MCP-инструментов, при котором они не передаются напрямую в LLM, а сначала из них агентом собирается интерфейс API (код), который в свою очередь уже передается в LLM. Благодаря этому результат получается качественнее (LLM умеют в код лучше, чем в вызов инструментов), а токенов тратится меньше. Inside GitHub's Fake Star Economy — статья о накрутке количества звёзд в GitHub-репозиториях: сколько это стоит, как это используется стартапами, аналитика проектов и производные показатели, варианты решения проблемы. Zed is 1.0 — пост, посвящённый выходу версии 1.0 редактора кода Zed: какие принципы лежат в основе Zed, почему версия 1.0 вышла именно сейчас и планы на будущее. ⭐️ Книги Собор и базар — эссе Эрика Рэймонда об отличиях закрытого централизованного («соборного») и открытого децентрализованного («базарного») подходов к разработке. Различия иллюстрируются на примере Linux, а также рассматривается применение идей открытой разработки на примере собственного проекта автора. ⭐️ Источники Neural Digest — дайджест свежих материалов по нейронным сетям от Михаила Кобзарева, руководителя разработки в Kokoc Group. ElKornacio — авторский канал Данилы Симонова (разработчик и предприниматель). Пишет про технологии и бизнес. Много заметок про ИИ.

🎁 My Prompts MCP 1.0 Небольшой MCP-сервер, предоставляющий пользовательские промпты из Markdown-файлов с поддержкой аргументов. Это позволяет хранить промпты в системе контроля версий и подключать их к любым ИИ-агентам с поддержкой MCP. Каждый промпт — отдельный файл в формате Markdown с необязательным блоком метаданных в начале (front matter): • name — уникальное название промпта (если не указано, используется имя файла без расширения); • title — человекочитаемое имя промпта; • description — описание промпта; • arguments — список аргументов, которые используются в промпте и запрашиваются у пользователя. Пример:
---
name: name-generator
title: Name Generator
description: Generate a name for a product, project, or company
arguments:
  - name: description
    description: What needs to be named (product, project, company, etc.)
    required: true
  - name: style
    description: Naming style (e.g. minimalist, creative, technical, playful)
    required: false
---
Generate 10 name ideas for: {{description}}.

{{style}}

Requirements for the names:
- Easy to remember and pronounce
- Suitable for use as a domain name
- Unique and distinctive

For each name provide a one-line explanation of why it works.
MCP-cервер написан на PHP с использованием официального MCP PHP SDK. Сборка в бинарные файлы выполняется с помощью Box и static-php-cli. В видео к заметке пример использования My Prompts MCP с Cherry Studio.

🌿 Про PHP-библиотеки для реализации MCP-серверов Решил тут поэкспериментировать и сделать одну простенькую задачку, создав для этого MCP-сервер. Из MCP мне была нужна лишь реализация сервера с полноценной поддержкой промптов. И я предполагал, что на PHP с этим не возникнет проблем, так как знал, что есть официальный PHP SDK. Но на деле всё не так радужно. ⭐️ modelcontextprotocol/php-sdk Официальный SDK, реализующий клиент и сервер для MCP. Это первая библиотека, которую я пошёл смотреть. А в ней у промптов не поддерживается поле title, хотя оно появилось в спецификации ещё 18 июня 2025 года. Покопавшись в документации, выяснил, что PHP SDK идёт по Tier 3 (вместе с Ruby и Swift), а на этом уровне не гарантируют вообще ничего: ни процента реализации, ни документации, да даже дорожной карты не обещают. Экспериментальный SDK в чистом виде. Печаль 🥲 ⭐️ llm-agents-php/mcp-server Реализация MCP-сервера от Павла Бучнева. Следующим шагом я пошёл смотреть, что используется в проекте CTX. Оказалось, что Павел сделал свою реализацию MCP-сервера + обёртку для Spiral к ней, которую и использует в CTX. На этапе установки библиотека затребовала реализацию PSR-контейнера. Зачем — не ясно. Посмотрел код, там контейнер вообще не используется. Сделал PR с наведением порядка в зависимостях и заодно затащил в библиотеку Composer dependency analyser (писал о нем тут). Разобравшись с зависимостями, попробовал настроить сервер, но это оказалось слишком сложно для моей задачи — простейший запуск сервера занимает более 50 строк кода. ⭐️ logiscape/mcp-sdk-php Альтернативный SDK от некого Josh Abbott. Дальше я пошёл искать живые библиотеки на GitHub и наткнулся на этот проект. Автор — не понятно кто, но у репозитория 300+ звёзд, а последний релиз пару недель назад. Библиотека поддерживает всё, что мне нужно. Настройка и запуск сервера довольно простые, хоть и не без шероховатостей. В частности, не было возможности указать версию MCP-сервера. Сделал PR, исправляющий это недоразумение, и автор оперативно его принял. Код проекта мне не очень нравится (видно, что много LLM-генерации, но недостаточно всё вылизано и продумано). Классы, опять же, не финальные. Но в итоге всё-таки остановил свой выбор на этой библиотеке и решил задачу с ней. ——— Позднее в официальном SDK добавили поддержку title в промптах (но релиза пока нет) и я переписал свою программу с его использованием. ——— Состояние библиотек для реализации MCP-серверов ещё раз подтверждает тот факт, что в области ИИ всё очень бурно развивается и до какой-то стабильности ещё далеко. И ещё интересный момент — во всех трёх рассмотренных PHP-библиотеках используется пространство имён MCP\. Как так вышло? Издержки использования LLM? 😉

🍉 Podlodka PHP Crew #8 — «Современный стек PHP-разработки» Очередной сезон PHP-конференции Podlodka PHP Crew пройдёт онлайн
🍉 Podlodka PHP Crew #8 — «Современный стек PHP-разработки» Очередной сезон PHP-конференции Podlodka PHP Crew пройдёт онлайн с 20 по 24 апреля. В этот раз будут разбирать как сегодня запускаются PHP-приложения, что изменилось в инфраструктуре, как эффективно применять ИИ-агентов и какие инструменты использовать. Заявленная программа: • Воркшоп «Мультиплеерная игра на PHP + Temporal + RoadRunner» • Воркшоп «Ускоряем PHP: worker mode + FrankenPHP» • Доклад «AI-агент как второй инженер в PHP-проекте: от исследования к реализации» • Воркшоп «Docker для PHP: что изменилось, пока вы не смотрели» • Доклад «App Dev Panel - швецарский нож дебагинга. Множество знакомых, и не очень, инструментов под одним кожухом. Отлаживаем приложение без напряга.» • Открытый микрофон «А мы внедрили...» Это ещё не всё, темы будут добавляться. ⚡️ Вся информация на сайте — расписание, спикеры, билеты. ————— По традиции, бонусы для подписчиков 😎 ⭐️ php_crew_8_ushDxn — промокод на скидку. ⭐️ Бесплатная проходка для одного из подписчиков канала. Чтобы получить проходку, нужно быть подписанным на канал @sergei_predvoditelev и оставить комментарий к этой заметке о желании получить проходку 😏 В воскресенье, 19 апреля, случайно-субъективно выберу победителя.