DeepDigest
Zenn / AI · · ~12 мин

Я изучил OSS "конский хвост", чтобы подавить чрезмерную реализацию агента искусственного интеллекта

Автор статьи изучает OSS-проект ponytail, который помогает оптимизировать реализацию кода агентами искусственного интеллекта, минимизируя избыточность за счёт 7-ступенчатой лестницы принятия решений.

Я изучил OSS "конский хвост", чтобы подавить чрезмерную реализацию агента искусственного интеллекта

ИИ

Модельный контекстный протокол

Второй пилот GitHub

магистр права

Claude Codetech

«Это снова всплыло» — OSS найден в дополнении к статье о выставлении счетов второму пилоту.

В прошлый раз я написал статью, в которой сравнивал операционные системы с высокой эффективностью токенов — такие как Headroom, RTK, caveman — после изменения биллинговой системы GitHub Copilot и Claude Agent SDK. Менее чем через две недели после публикации статьи я нашёл ещё один пример «OSS против затрат на агентов искусственного интеллекта», представленный в ином свете. Это репозиторий под названием ponytail, который был опубликован на GitHub Trending.

Честно говоря, сначала я был ошеломлён содержанием README. Там есть концепция, которая ничего не объясняет, не даёт развёрнутых описаний — только одна строка кода, и всё. Таким образом, неразговорчивый и опытный инженер полностью соответствует образу ИИ‑агента. Я думал, что это инструмент для создания историй, но его содержание кардинально отличалось от инструментов, которые я рассматривал в прошлый раз. Когда я его изучил, мне стало интересно.

Headroom, RTK, caveman и «точка вмешательства» отличаются.

Все операционные системы, которые мы рассматривали в прошлый раз, имеют дело с контентом, сгенерированным с помощью искусственного интеллекта. Headroom сжимает выходные данные инструмента и локально регистрирует их после генерации, RTK сокращает выходные данные CLI, а caveman уменьшает количество слов в ответе Клода. После того как продукт готов, идея заключается в том, как сделать его компактнее.

С ponytail всё по‑другому. В первую очередь он пытается уменьшить объём написанного кода, вмешиваясь в процесс принятия решения о реализации самого сгенерированного кода. Когда вам нужно поле для ввода даты, агенты искусственного интеллекта, как правило, используют одну библиотеку, пишут компонент‑оболочку, добавляют таблицу стилей. Но если не спешить, можно обойтись одной строкой <тип ввода="дата"> — пример использования есть в README. Если в браузере есть стандартная функция, ею можно воспользоваться. Это очень важный момент, но агенты искусственного интеллекта так не поступают — и это удивительно.

Я сам, когда оставляю реализацию в режиме агента GitHub Copilot при разработке бизнес‑инструмента на C#, замечаю, что реализация может оказаться на несколько шагов сложнее, чем ожидалось. Я имею в виду, что уровни абстракции и пользовательские классы исключений добавляются даже в тех ситуациях, когда они не особо нужны. Прочитав README, я подумал: «О, вот оно что».

Суждение «лестница» — прежде чем писать, отойдите от семиступенчатой лестницы.

Ядро ponytail — семиступенчатая лестница принятия решений, по которой агенты спускаются перед тем, как написать код. В основе лежит принцип YAGNI (вам это всё равно не понадобится) — он пронизывает всю концепцию. Идея в том, чтобы предостеречь от преждевременного внедрения решений под предлогом того, что «вы сможете использовать это в будущем». Начиная с самого верха, остановитесь на первом этапе, который соответствует условиям.

Суть в том, что эта лестница предназначена для продвижения вперёд после того, как проблема понята. Прочитайте код, который хотите изменить, проследите за фактическим потоком данных, а затем начните спускаться по лестнице. Кажется, что она создана для того, чтобы упростить принятие решений, но не для того, чтобы упростить чтение кода.

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

Разница между режимами и «идентичностью» — это умение агента плюс тонкая оболочка.

Разницу между lite, full и ultra легко понять, если упорядочить её по принципу «насколько далеко вы продвинулись». Например, предположим, что вы просите «Добавить кэш к ответу API». Lite реализует кэш, как было сказано, в то время как functools находится в стандартной библиотеке. С lrucache вам понадобится всего 1 строка. Full делает шаг вперёд и с самого начала переходит к стандартной библиотеке lrucache, оставляя комментарий: «Я опустил пользовательский класс кэша, добавляйте его при необходимости». Ultra идёт ещё дальше и приостанавливает саму реализацию кэширования — например, «измерение и принятие решения», — что создаёт впечатление сомнения в сути самого запроса. Off возвращает к нормальному режиму. Значение по умолчанию — полное, и кажется, что основная задача состоит в том, чтобы делать то, что просят, при этом сводя реализацию к минимуму.

Ключевым моментом является «как это работает», но когда я раскрываю суть, механизм становится довольно простым. Содержимым является файл skills/ponytail/SKILL.1 в формате md — это формат навыка агента, используемый Claude Code (механизм, который позволяет агентам ИИ считывать Markdown с условиями активации и ролями). В этом файле 1 описана вся разница между логикой the ladder и описаниями lite/full/ultra.

В средах, где могут быть загружены навыки подключаемого модуля или агента — например, в Claude Code, GitHub Copilot и VS Code, — этот навык может быть полезен. В дополнение к md существуют определения команд для переключения режимов (commands/ponytail.toml и т. д.), содержимое которых представляет собой тонкую оболочку, отправляющую только короткое приглашение с надписью «переключиться в режим〇〇», и перехватчик, который считывает настройки текущего режима из переменной среды PONYTAILDEFAULTMODE и файла конфигурации 1 — это входит в комплект поставки. Для хостов, которые используют контекст в качестве инструмента через MCP (Model Context Protocol — стандарт, который соединяет внешние инструменты и агентов искусственного интеллекта), существуют даже небольшие серверы MCP (ponytail-mcp), которые возвращают один и тот же набор правил как для запросов, так и для инструментов.

А для редакторов (Cursor, Windsurf, Aider и т. д.), у которых нет навыков агента или подключаемых механизмов, точно такое же предложение — это просто статический файл правил (.cursor/rules/ и AGENTS.md и т. д.). Другими словами, независимо от того, сколько маршрутов существует, суть в том, что содержимое — это тот же документ с правилом 1, и разница лишь в том, что «вводить каждый ход (всегда включён)» и «вызывать его как навык агента только при необходимости». Нет никакого механизма для механического разбора кода и его переписывания.

Это также подтверждает оговорку, упомянутую в предыдущем разделе, о том, что «совместимость с моделью исключена». В конце концов, «конский хвост» — это своего рода системное приглашение, и эффект зависит от того, насколько агент соблюдает установленные правила. Феномен, заключающийся в том, что модель логического вывода использует слишком много мыслительных токенов для изучения лестницы, а стоимость, наоборот, увеличивается, также имеет смысл, если вы считаете, что это механизм «убеждения», а не «принуждения».

Эффект от просмотра цифр и исправления себя в прошлом, которое «было занято».
Измерение эффекта в README было приятным — оно оставило след честной самокоррекции.
В первом опубликованном тесте «single-shot», в котором сравниваются 5 задач генерации одиночных кадров с 3 моделями, код был сокращён на 80–94 %. Тем не менее эта цифра была указана. Это проблема, в которой «базовый уровень без навыков» для сравнения был завышен за счёт разговорных предисловий и дополнительных опций — поэтому показатель снижения казался больше, чем был на самом деле.

В ответ на это то, что сейчас находится в верхней части README, заменили бенчмарком «агентского типа». Он обрабатывает 12 заявок на внедрение в сеансе кода Claude без использования кода для реального репозитория FastAPI + React (полный стек‑шаблон fastapi от tiangolo). Модель использования — Haiku 4.5, каждое условие n=4, а оценка — это git‑разница, оставшаяся после завершения сеанса.

Условие (базовое соотношение):
* количество строк кода;
* знак;
* стоимость;
* время;
* безопасность.

Конский хвост:
* −54 %;
* −22 %;
* −20 %;
* −27 %;
* 100 %.

Пещерный человек (контрольная группа по краткой прозе):
* −20 %;
* +7 %;
* +3 %;
* +2 %;
* 100 %.

Простая подсказка «Писать с помощью YAGNI + 1 строка»:
* −33 %;
* −14 %;
* −21 %;
* −30 %;
* 95 %.

Что интересно, пещерный человек, представленный в предыдущей статье, фигурирует в качестве контрольной группы для этого теста. Пещерный человек — это инструмент для повышения «прозаичности» ответа, поэтому он мало влияет на объём самого кода реализации, а стоимость токенов и время немного превышают ожидаемые исходные показатели. Понимание того, что «пещерный человек сокращает объём выходных данных и не изменяет сам генерируемый контент», о котором я писал в предыдущей статье, также подтверждается этой цифрой.

Наибольшее сокращение приходится на задачи, которые агенты искусственного интеллекта легко перегружают. В README описан случай, когда использование поля ввода даты сократили с 404 строк до 23, а средства выбора цвета — с 287 строк до 23. И то и другое, по‑видимому, является результатом использования собственного элемента <input>. С другой стороны, для задач, которые изначально могут быть сведены к минимуму, ширина сокращения близка к нулю.

Я хотел бы быть честным с вами в одном: этот механизм — не механическое сжатие, как Headroom, а введение поведения в модель. Сам README пишет, что модели рассуждения, нацеленные на получение краткого ответа, могут, наоборот, усиливаться, если для изучения лестницы используется слишком много токенов мышления (похоже, это действительно происходит с GPT‑5.5). Кажется, лучше понимать, что это не то, что «обязательно сокращается, если вы это вставляете», а механизм, обеспечивающий совместимость с моделью.

Команды развёртывания — GitHub Copilot смог использовать CLI, VS Code и даже команды.

Поддерживается 16 агентов, включая GitHub Copilot, который я обычно использую. Есть 2 основных способа внедрения.
Интерфейс командной строки GitHub Copilot поставляется в виде плагина.

copilot plugin marketplace add DietrichGebert/ponytail
copilot plugin install ponytail@ponytail

(Там было примечание о том, что установка не будет завершена, если она не будет отправлена отдельно в виде двух приглашений.)

После ознакомления вы можете переключить режим с помощью /ponytail lite (или full/ultra/off), просмотреть текущие различия с помощью /ponytail-review с точки зрения чрезмерной реализации, провести аудит всего хранилища с помощью /ponytail-audit и обобщить отложенные упрощённые варианты с помощью /ponytail-debt как бухгалтерскую книгу. Когда введение закончится, текущий режим (например, «конский хвост»: полный) будет отображаться в тексте в начале сеанса и во время переключения режима. Я опубликую фактическое отображение с захватом в моей следующей практической статье.

На самом деле то, к чему я обычно обращаюсь, — это не CLI, а чат второго пилота на GitHub (режим агента) в VS Code. В обновлении VS Code для 2026/2 добавлен механизм под названием «Плагины агента», который позволяет вам массово развёртывать навыки, инструменты, хуки и серверы MCP из представления расширений. Если вы добавите репозиторий ponytail отсюда, вы сможете использовать команды переключения режимов и просмотра, а также версию CLI.

Честно говоря, собственная документация ponytail (docs/agent-portability.md) не содержит GitHub Copilot.github/copilot-instructions. Она описана как запасной вариант «только для всегда действующих правил», в котором используется только md. Эта статья была написана с учётом этого описания, но когда я попробовал её в VS Code, она перешла в command — и это был реальный опыт. Поскольку «плагины для агентов» в VS Code сами по себе — относительно новый механизм, который появился после публикации ponytail, он может просто не успевать за обновлениями в документации. Я также хотел бы отметить, что фактическое поведение, описанное в официальном документе, может отличаться от реального.

Комната отдыха/RTK/пещерный человек и «конский хвост» — как, в конце концов, разделить проживание?

Я кратко изложу всё, что было сказано до сих пор, в своей таблице.

Инструменты
Что нужно сделать, чтобы вмешаться
Синхронизация
Обратимость

Запас прочности
Подсказка/Вывод инструмента/Журнал/RAG/Файл
Локальное сжатие после генерации
Доступно (CCR)

RTK
Вывод команды CLI
Сжатие после генерации
Никто

пещерный человек
«Количество слов» в ответном предложении
Управление тоном при генерации
Непригодный

конский хвост
Проектные решения для кода реализации
Генерировать «предыдущие» решения
Не применимо (не написано в самом начале)

Таким образом, если первые три варианта — это игра на тему «как сделать вещи меньше», то ponytail — это пошаговая игра на тему «не выкладываться в первую очередь». Вместо того чтобы конкурировать, правильнее считать, что эти слои — разные инструменты. Теоретически сочетание сжатия контекста с оперативным кэшированием и запасом времени, а также сужение реализации с помощью ponytail кажется верным решением, но такую комбинацию я ещё не пробовал.

Что делать дальше

На этот раз мы прекратили изучение README и общедоступных тестов и пока не внедряли их в реальную разработку на C#. Далее я оставлю реализацию в режиме агента с включённым /ponytail full для GitHub Copilot (через плагины агента VS Code) в личном учебном проекте — системе управления инспекциями объектов. Я буду записывать с цифрами, что на самом деле вырезал или просматривал в «конском хвосте» и были ли какие‑либо фрагменты, которые было трудно вычистить.

Часто задаваемые вопросы

В. Какой агент искусственного интеллекта я могу использовать с ponytail?
О. Он поддерживает 16 различных агентов/хостов, включая Claude Code, Codex, GitHub Copilot (оба расширения CLI и VS Code), Gemini CLI и OpenCode. В случае с GitHub Copilot его можно ввести с помощью команды copilot plugin в CLI, а «Плагины агента», добавленные в 2026/2 (через просмотр расширений) в VS Code, могут использоваться с полной функциональностью, включая переключение режимов и команды, основанные на обзоре.

В. Снижает ли это уровень безопасности и обработки ошибок?
О. Нет. Проверка границ доверия, обработка, безопасность и доступность, которые приводят к потере данных, не рассматриваются ни на одном этапе разработки. Именно избыточность реализации сводится к минимуму.

В. Чем отличается lite・full・ultra?
А. «Сила отката» от требуемой реализации отличается. Lite будет реализовывать только то, что было запрошено, с упрощённым предложением, full по умолчанию использует минимальную реализацию с самого начала, ultra подвергнет сомнению саму предпосылку запроса и отложит реализацию до тех пор, пока не будет подтверждено, что это необходимо. Программа возвращается в обычный режим с выключенным режимом.

В. В чём разница между пещерным человеком и тем, которого мы представили в предыдущей статье?

О. Caveman — это инструмент, который сокращает количество слов в ответных заявлениях и практически не влияет на объём генерируемого кода. Caveman также использовался в качестве контрольной группы в публичном тесте ponytail, что привело к сокращению количества строк кода чуть меньше, чем в базовой версии. Это не столько конкурент, сколько инструмент, с которым приходится работать с разными объектами.

В. Всегда ли при его развёртывании сокращается объём кода?
А. Тесты — это измерения для конкретного репозитория или задачи. В задачах, которые ИИ‑агентам легко перегружать (например, поля ввода даты и средства выбора цвета), сокращение значительное, а в ситуациях, когда изначально написан только минимальный код, изменений практически нет.

Вопрос: Взимается ли плата?
О. Это приложение с открытым исходным кодом под лицензией MIT, его можно использовать бесплатно. Конфигурационные файлы также не требуются.
Обсуждение

// оригинал
Zenn / AI ↗ Читать оригинал
4 просмотров
// поделиться Telegram VK