LINUX.ORG.RU
ФорумTalks

Spec-kit - свободный тулкит для разработки, ориентированной на спеки (Spec Driven Development)

 


2

3

Те, кому интересен «вайб кодинг», можете про него забыть, потому что вот как на самом деле нужно использовать нейронки для разработки софта: spec-kit. Смысл spec driven development (SDD) в том, что проект начинается с проектирования спек файла. Это кардинально отличается от вайб кодинга, в котором на вход нейронки подаётся произвольный текст, а на выходе получается лапша, в которой чёрт ногу сломит, и она иногда правильно работает, но это не точно. В SDD на вход подаётся команда, аргументами которой может быть произвольный текст, а на выходе получается структурированный документ (спек) в терминах (non)functional requirements, acceptance criteria, edge cases и т.д. Из этого документа потом генерируется машинный код.

Я когда экспериментировал с кодинг асссистентами, то независимо пришёл к похожему процессу, а тут обнаружил, что команда спецов из гитхаба выпустила целый тулкит для SDD разработки. Особенность spec-kit в том, что спек верхнего уровня, так называемый «источник истины», полностью абстрактен от технической имплементации, составляется интерактивно взаимодействуя с нейронкой. Далее составляется план конкретной имплементации с выбором платформы, языков, фреймворков, моделей данных, хостингов и т.д. Всё с помощью команд нейронке. Далее нейронка разбивает план на фазы и задачи, определяет зависимости между ними и какие задачи могут выполняться параллельно (в моём случае, простой проект, 8 фаз и более 100 задач). Далее идёт имплементация каждой задачи.

Интерактивное взаимодействие с нейронкой необходимо только на стадии составления абстрактного спека верхнего уровня, далее всё можно доверить ии. Но я предпочитаю делать всё по шагам, на каждом шаге пристально изучаю результат, запрашиваю пояснения/исправления, делаю коммит, только затем перехожу к следующему шагу. Весь процесс под полным контролем. На выходе получается хорошо разбитый на модули код с каментами, доками и без технических багов. Нейрока проверяет код статическим аналайзером, линтит, прогоняет тесты (которые сама пишет), вносит необходимые правки где надо, имеет доступ к актуальным версиям доков через MCP сервер. Где нужно, я вмешиваюсь в процесс. И конечно, полностью контролирую.

Результат я выставлять на всеобщее обозрение пока не буду, т.к. это никому не нужная свистоперделка на расте, которая нужна только мне и только для эксперимента. Spec-kit использую вместе с kilocode плагином для vscode и kimi k2.5 (сейчас бесплатна), но его можно использовать с разными кодинг ассистентами и моделями, в том числе и свободными/локальными. Когда досконально разберусь, как эта вся кухня работает, запилю настоящий проект.

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

Тем, у кого нет острой аллергии на ИИ, настоятельно рекомендую попробовать запилить проект с помощью spec-kit или аналогов (openspec). Здесь делитесь впечатлениями.

P.S. Уточнение: всё описанное выше, хоть и сводит необходимость ручного ковыряния в машинном коде к минимуму, но не отменяет необходимости знания используемых технологий.



Последнее исправление: yvv1 (всего исправлений: 2)
Ответ на: комментарий от Aceler

Машинный код - это имплементация алгоритма для конкретной вычислительной платформы, т.е. промежуточное представление. А сам алгоритм начинается с машинно независимого описания.

yvv1
() автор топика
Ответ на: комментарий от Aceler

Code бывает разный. С формулировки алгоритма до его исполнения на ЦПУ, он конвертируется в кучу разных промежуточных представлений разного уровня абстракции. Каждое из них - это code. Но мы ленивые, и не хотим все писать вручную. Поэтому мы используем SDD.

yvv1
() автор топика
Последнее исправление: yvv1 (всего исправлений: 2)
Ответ на: комментарий от Aceler

Да, и предельная детализация спека — это машинный код.

Нет. В предлагаемом SDD подходе, спек верхнего уровня - предельно абстрактен. Из него уже генерируются спеки более низкого уровня с детализаией технического стека.

Алгоритм можно решить с помощью карандаша с тетрадкой, а можно с помощью HPC кластера. Формулировка алгоритма при этом не меняется, меняется промежуточное представление.

yvv1
() автор топика

прогресс будет глубже идти в направлении SDD и это станет таки стандартом индустрии

Но это же про проектирование софтины с нуля (и последующий кансел, лол, таков путь стартапов), в то время как большинство индустрии таки разработка существующего проекта с большой кодовой базой. Но спасибо за эту штуковину, может пригодится.

goingUp ★★★★★
()
Ответ на: комментарий от goingUp

в то время как большинство индустрии таки разработка существующего проекта с большой кодовой базой.

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

anonymous_incognito ★★★★★
()

Посмотрел список поддерживаемых AI Agents - не увидел (возможно ошибся) ничего локального. Оно в принципе бессмысленно для доступных локально обычных GPU или авторы не захотели?

anonymous_incognito ★★★★★
()
Ответ на: комментарий от goingUp

Но это же про проектирование софтины с нуля

Оно поддерживает greenfield и brownfield разработку. Там у разраба есть видосы на ютубе про это.

yvv1
() автор топика
Ответ на: комментарий от anonymous_incognito

Посмотрел список поддерживаемых AI Agents - не увидел (возможно ошибся) ничего локального.

Такие агенты как kilocode, opencode и несколько других в списке, поддерживают локальных провайдеров (ollama и LM studio). Spec-kit это просто несколько маркдаун шаблонов и скриптов.

yvv1
() автор топика

Spec-kit - свободный тулкит для разработки, ориентированной на спеки (Spec Driven Development)

Те, кому интересен «вайб кодинг», можете про него забыть, потому что вот как на самом деле нужно использовать нейронки для разработки софта: spek-kit.

Так как же всё-таки называется проект?

Bfgeshka ★★★★★
()
Ответ на: комментарий от Bfgeshka

Спасибо, поправил. Блин, 10 раз перечитывал пост, а ошибки не заметил. Следующий раз нужно через чат бот прогнать для правки :)

yvv1
() автор топика

в каментах душно что $$$дец. хоть бы один по-существу написал. вижу «знатоков», без опыта работы с ии, но с нев$$енным мнением.

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

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

ergo ★★★★
()
Последнее исправление: ergo (всего исправлений: 2)
Ответ на: комментарий от anonymous_incognito

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

Ну так тема не раскрыта) Почему, к примеру, интерактивно, а не по существующему коду)

goingUp ★★★★★
()
Ответ на: комментарий от goingUp

Ты работаешь с уже существующим проектом точно так же, как и с новым, те же самые команды, только спек создаётся под новую фичу, с учётом существующей кодовой базы.

yvv1
() автор топика

его можно использовать с разными кодинг ассистентами и моделями, в том числе и свободными/локальными.

Тема однозначно интересная, но я бегло пробежался и не заметил возможности подключать локальные модели сходу. Можете привести пример подключения, какой из агентов они предлагают использовать оффлайн?

Obezyan
()
Ответ на: комментарий от Obezyan

Некоторые поддерживаемые агенты позволяют подключить как облачные, так и локальные провайдеры нейронок. Например, kilocode поддерживает ollama и lm studio, это выбирается в опциях агента. Т.е. ты устанавливаешь ollama (lm studio), загружаешь нужную тебе нейронку, например qwen coder, далее устанавливаешь kilocode, выбираешь в опциях использовать ollama(lm studio), далее устанавливаешь spec-kit и в опциях выбираешь использовать kilocode. Т.е. иерархия следующая:

  • SDD toolkit - spec-kit (использует агент, напр. kilocode)
  • Агент - kilocode (использует llm провайдера, напр. локальный ollama)
  • Провайдер - ollama или lm studio (использует LLM, такие как qwen coder и др.)

Всё вышеперечисленное - опенсорс.

yvv1
() автор топика
Ответ на: комментарий от yvv1

Пректу без году неделя. О нём большинство разрабов наверное ещё не знает даже.

Сами-то разрабы про него знают? Им удалось ли написать, например, плагин для какого-нибудь редактора для работы с SDD?

Camel ★★★★★
()
Ответ на: комментарий от yvv1

Спасибо за пояснение, я понял что тут нужно использовать цепочку:

spec-kit > kilocode > lm studio

Пока kilocode в ней выглядит лишним звеном (костылем) тк между ними все равно использется API типа OpenAPI, так почему бы не вызывать lm studio напрямую из spec-kit? Хотя, это уже не к вам вопрос, а к разработчикам.

Obezyan
()
Ответ на: комментарий от Obezyan

kilocode в данной цепочке делает важную работу: взаимодействует с llm и тулсами. Сам spec-kit - это всего лишь несколько шаблонов для промптов.

так почему бы не вызывать lm studio напрямую из spec-kit

Легче встроить spec-kit прямо в kilocode, но до этого ещё не додумались видимо.

yvv1
() автор топика
Ответ на: комментарий от Camel

Им удалось ли написать, например, плагин для какого-нибудь редактора для работы с SDD?

Зачем? Они используют существующие плагины для агентов.

yvv1
() автор топика
Ответ на: комментарий от yvv1

Легче встроить spec-kit прямо в kilocode, но до этого ещё не додумались видимо.

Он разве не так работает? После прочтения документации, я так понял после specify init ты все делаешь путем взаимодействия со сторонним ИИ агентом, в который внедрили spec-kit в конфиг?

goingUp ★★★★★
()
Ответ на: комментарий от yvv1

Посмотрел я этот spec-kit. Фактически, это просто шпаргалка для тех кто не умеет взаимодействовать с сетями правильно, те большая часть использовалась и так, просто многие шаги пропускаются тк для разработчика не является проблемой сделать их без сети.

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

Лично для себя смысла это использовать не вижу, но для тех кто пытается вайбкодить это утилита дает неплохую дисциплину, показывающую как это делать правильно. И да, внутри это все тот же вайбкодинг, только на шаблонах. Расходимся, тут не на что смотреть.

Этот метод вайбкодинга для простеньких проектов для людей НЕ ОБЛАДАЮЩИХ ТЕХНИЧЕСКИМИ ЗНАНИЯМИ по теме конкретного проекта:

Constitution > Specification > Clarification > Checklist > Plan > Tasks > Analyze > Implementation

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

Plan (list of tasks) > Implementation
Obezyan
()
Ответ на: комментарий от Obezyan

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

Я именно с этого и начал, пока не обнаружил сабж. Нет, самому набрасывать план совсем не проще. Проще взять готовую шпаргалку, которую сделала команда опытных людей, и дополнить своими правилами.

Фактически, это просто шпаргалка

Да! И шпаргалка весьма толковая.

yvv1
() автор топика
Ответ на: комментарий от goingUp

После прочтения документации, я так понял после specify init ты все делаешь путем взаимодействия со сторонним ИИ агентом, в который внедрили spec-kit в конфиг?

Да именно так. Просто spec-kit - это отдельная от агента тулза, которую нужно отдельно устанавливать.

yvv1
() автор топика
Ответ на: комментарий от Obezyan

Constitution > Specification > Clarification > Checklist > Plan > Tasks > Analyze > Implementation

Мне именно разбиение на вот эти уровни нравится, поскольку у них чётко разделены цели. Их не нужно мешать в одну кучу.

yvv1
() автор топика

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

Лет пятьдесят всего процессу, если считать от сишечки. Мы будем жить вечно и никуда не торопимся.

Тем временем даже кнопка «назад» перестала работать уже, по-моему, в большей части веб-приложений, но это ничего, щас-щас все починим и улучшим.

thesis ★★★★★
()
Последнее исправление: thesis (всего исправлений: 2)
Ответ на: комментарий от Obezyan

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

Х*як > Х*як

thesis ★★★★★
()

Раз тут уж собрались благородные ИИ доны, меня чесно говоря заинтересовал бы другой инструментарий, для тестирования сайтов в браузере ИИ агентом. Я могу подключить Playwright MCP server к агенту, и он даже может потыкать какую-то форму, но это происходит слишком медленно и кредитозатратно из-за интенсивного дергания тулзов. Есть ли какие-то подвижки в данной сфере?

goingUp ★★★★★
()
Последнее исправление: goingUp (всего исправлений: 1)
Ответ на: комментарий от goingUp

Обычно механизм тестирование используется немного другой: делаются скриншоты всех страниц и всплывающих окон (можно программно), затем скриншоты скармливаются VL сети обученной писать тесты/e2e-спеки по скриншоту страницы. В итоге, эти тесты прогоняются через Playwright или WebdriverIO (Selenium).

Obezyan
()
Ответ на: комментарий от Obezyan

Да, мне такое уже советовали, но у нас пока нету таких тестов, только юнит тесты, и мне нужно немного другое, чтобы оно после реализации фичи/исправления бага по быстрому потыкало результат из этой же сессии агента с минимумом телодвижений с моей стороны)

goingUp ★★★★★
()
Ответ на: комментарий от olelookoe

Chrome DevTools mcp

Да, это по идее аналог Playwright MCP server, вариант рабочий, но

это происходит слишком медленно и кредитозатратно из-за интенсивного дергания тулзов

goingUp ★★★★★
()
Ответ на: комментарий от Obezyan

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

вдогонку советую обратить внимание на альтернативную хренотень под названием openspec.

olelookoe ★★★★
()
Ответ на: комментарий от goingUp

Именно это и делается. Сделать скриншотилку страниц можно самому за вечер без всяких сетей, прогон спеков также можно сделать без сетей через WebdriverIO. А вот для того чтобы создать нормальную сеть которая будет писать юнит тесты по скриншотам нужно ловить ближайшего к вам обезъяна.

Обычно используется пайплайн из двух сетей, первая VL сеть генерирует тест кейсы для второй сети. Этот выхлоп отдается живым тестировщикам либо отправляется во вторую сеть которая получив тест кейсы и исходный html код страницы генерирует e2e спеки, которые в свою очередь уже может запускать WebdriverIO.

Никакие ИИ-агенты для этого не нужны. Самое сложное сделать нормально первую сеть, я вот такое делал. Второй сетью можно взять обычную LLMку, она справится с переводом текстового описания теста в e2e спеку.

Obezyan
()
Ответ на: комментарий от olelookoe

Я потыкал, для моих задач не подходит тк первый пункт: определение бизнес-целей. Доверять его нейронной сети это all in на зеро.

Obezyan
()
Последнее исправление: Obezyan (всего исправлений: 1)
Ответ на: комментарий от olelookoe

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

Ага, и потом, ты уже послезавтра не вспомнишь, что там было у тебя в голове позавчера. А закомитенный в репу спек - это документ, который можно открыть через годы, и если он составлен правильно, сгенерить код для платформы, которую ещё не изобрели, и получить логически идентичный результат.

вдогонку советую обратить внимание на альтернативную хренотень под названием openspec.

Это как я понял попроще чем spec-kit, но для каких-то юзкейсов может быть достаточно.

yvv1
() автор топика
Ответ на: комментарий от Obezyan

определение бизнес-целей.

это не та область где может помочь хоть какой интеллект, тут самому пыхтеть.
но
но!
подергав ИИ за усы можно получить ответы на кучу сопутствующих вопросов

olelookoe ★★★★
()
Ответ на: комментарий от olelookoe

подергав ИИ за усы можно получить ответы на кучу сопутствующих вопросов

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

Получается парадокс, если человеку необходимо все описанные уровни делать с помощью ИИ, значит он не разбирается в теме проекта и сначала ему нужно вникнуть в тему самому чтобы иметь возможность валидировать выхлоп сети. И вникнуть будет нужно вне этого пайплайна (с помощью учебника или ИИ-агента/гугла - не суть важно). И как только человек понимает тему проекта он сам может составить план и двигаться уже дальше уточняя его у ИИ, те может сразу прыгнуть на 5й этап.

И чем больше человек в теме тем быстрее и лучше он будет сразу прыгать на пятый этап и весь смысл такого пайплайна теряется.

Obezyan
()
Ответ на: комментарий от Obezyan

Именно это и делается. Сделать скриншотилку страниц можно самому за вечер без всяких сетей, прогон спеков также можно сделать без сетей через WebdriverIO. А вот для того чтобы создать нормальную сеть которая будет писать юнит тесты по скриншотам нужно ловить ближайшего к вам обезъяна.

Даже не обязательно так по хардкору заморачиватся, к примеру опенаишный агент codex может и сам читать скриншоты, и сам его сделать через Playwright mcp и написать тест для Playwright, хотя ваш подход, наверное будет дешевле в промышленых объемах) Но моя ленивая задница ищет что-то попроще и более халявное.

goingUp ★★★★★
()
Ответ на: комментарий от goingUp

наверное будет дешевле в промышленых объемах

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

Еще обычно одно из требований - полное NDA и никаких отправок изображений «нашего инновационного коммерческого продукта» в стадии MVP в сеть. Зачастую такие системы и выхода в интернет не имеют.

Если же это пет-проект или разовое решение, тогда конечно ваш подход полностью оправдан, а тот о котором пишу я - не только не оптимален, но даже - вреден.

У меня NDA это отдельная боль, я большую часть проектов не могу даже озвучить что участвовал.

Obezyan
()
Последнее исправление: Obezyan (всего исправлений: 1)
Ответ на: комментарий от Obezyan

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

yvv1
() автор топика

Короче, докладываю. В некоторых случаях нейронка генерирует правильный, но не совсем идиоматический раст. Т.е. в современном расте есть либо более читабельная запись, либо более правильный способ с точки зрения безопасности, блаблабла. Либо мне просто лично нравится другая форма записи. Командую агенту это дело исправить project-wide и внести соответсвующее правило в конфиг проекта. Он всё делает, и впредь подобных ошибок больше не повторяет. Потом я смогу реюзать этот конфиг в других проектах. Круто!

yvv1
() автор топика
Последнее исправление: yvv1 (всего исправлений: 1)
Закрыто добавление комментариев для недавно зарегистрированных пользователей (со score < 50)