// desktop only

Презентации лучше смотреть с десктопа

Слайды рассчитаны на широкий экран, клавиатуру и формат 16:9. Откройте эту страницу на ноутбуке или компьютере.

Вернуться на сайт
// доклад · агенты · sdd · openspec

SDD: почему plan mode закончился и начался OpenSpec

агент пишет код быстрее вас — но не помнит, о чём вы договорились вчера

Эдгар Сипки//Founder EasyP && SIPKI Tech

// speaker.bio

Эдгар Сипки

Founder EasyP && SIPKI Tech · @zergslaw
  • Строю агентные процессы разработки в своих продуктах
  • Преподаю агентную разработку командам
  • В Go 8 лет, евангелист gRPC && OpenSource
  • Линейка докладов про агентный стек: MCP, Skills — сегодня intent layer
  • НЕгений, НЕмиллиардер, НЕфилантроп
// tldr

О чём доклад

  • SDD: намерение — из чата в репозиторий
  • Где спасает — и где 1300 строк ради одной даты
  • Плюсы и минусы 50/50, без вердикта «внедряйте»
// agenda

О чём поговорим?

  1. 01Боль агентского кодинга
  2. 02Plan mode — первая попытка
  3. 03Где plan mode заканчивается
  4. 04SDD и OpenSpec
  5. 05Почему SDD плох
  6. 06Регулятор церемонии
// chapter 01

НАМЕРЕНИЕ
ЖИВЁТ В ЧАТЕ

// yesterday

Знакомая сцена

  • Вчера вы час объясняли агенту архитектуру аутентификации
  • Сегодня он предлагает ровно тот подход, который вы отвергли
  • Проблема не в модели — в архитектуре процесса
// diagnosis

Диагноз: моста нет

// intentЧАТнамерение живёт здесьумирает вместе с сессией// artifactРЕПОЗИТОРИЙкод живёт здесьпереживает всехмоста нет«почему агент не помнит X» = «X остался в чате»
// three.failures

Три сбоя по именам

01 · intent drift

«добавь логин» недоспецифицирован — модель берёт разумные дефолты, и они не ваши

02 · context decay

база переросла окно — агент молча противоречит собственным вчерашним решениям

03 · unverifiable output

критериев приёмки нет — код правильный или просто компилируется?

// context.window

Ростом окна это не лечится

// точность ответа по позиции факта в контекстеначалосередина — провалконецarXiv:2307.03172 · Lost in the Middle

Деградация внимания к середине контекста — свойство трансформера, а не баг.

// thesis

Нужна внешняя память о намерении

Первое, что попробовала индустрия, — plan mode.

// agenda

О чём поговорим?

  • Боль агентского кодинга
  • Plan mode — первая попытка
  • Где plan mode заканчивается
  • SDD и OpenSpec
  • Почему SDD плох
  • Регулятор церемонии
// chapter 02

PLAN MODE

// plan.mode

Что это механически

  • Агент читает, ищет, думает вслух
  • Писать не может — ограничение и есть вся магия
  • На выходе — план, который ревьюите вы
// the.flow

Explore → Plan → Implement

EXPLOREread-onlyPLANплан в диалогеREVIEWчеловекIMPLEMENTправки в кодеCOMMITрезультатплан отклонён → правим до того, как тронули кодвопрос сместился: не «сделал ли правильно», а «правильный ли план»
// the.shift

Выигрыш когнитивный, не технический

вопрос был

«Claude сделал это правильно?»

отвечается после изменений — дорого

вопрос стал

«Это вообще правильный план?»

отвечается до изменений — в разы дешевле

// heuristics

Бонусы и правило одного предложения

  • Контекст, набранный на планировании, уже загружен — реализация идёт точнее
  • Отклонили план — выбросили дёшево: правок ещё нет
  • Можешь описать диф одной фразой — не планируй. Не можешь — планируй
// honest.take

Для 80% задач этого достаточно

Дальше — про оставшиеся 20%.

// agenda

О чём поговорим?

  • Боль агентского кодинга
  • Plan mode — первая попытка
  • Где plan mode заканчивается
  • SDD и OpenSpec
  • Почему SDD плох
  • Регулятор церемонии
// chapter 03

ПЛАН — ЭТО
ЗАМЕТКА

// one.session

План — артефакт одной сессии

// the.walls

Четыре стены

01

Невидим

скрытый файл — не попадает в PR, команда его не ревьюит

02

Неудобен

правится только через диалог с агентом

03

Не переживает компактизацию

на середине реализации Claude Code предлагает заново войти в plan mode (issue #26061 · #30042)

04

Не переживает вас

закрыли сессию — знания нет, завтра объясняете заново

// note.vs.contract

Заметка, а не контракт

план хранит

«как сделать этот шаг»

план не хранит

«каким система должна быть»

OpenSpec: «plan mode отлично работает для одной сессии — мы делаем планы, которые живут через много»

// the.move

Вынеси намерение туда, где живёт всё, что переживает сессии — в репозиторий, под git

// agenda

О чём поговорим?

  • Боль агентского кодинга
  • Plan mode — первая попытка
  • Где plan mode заканчивается
  • SDD и OpenSpec
  • Почему SDD плох
  • Регулятор церемонии
// chapter 04

SDD И
OPENSPEC

// sdd.definition

Определение без пафоса

  • Спецификация — версионируемый первичный артефакт
  • Код — производная от неё
  • Это не документ для людей — это вход для агента
// prior.art

Идея старая — инструменты новые

BDDGiven / When / ThenDESIGN BY CONTRACTпред- и постусловияOPENAPIконтракт APIFORMAL METHODSTLA+, доказательствавсе упёрлись в одно: спеку дорого поддерживать рукамиLLM ОБРУШИЛИ ЭТУ СТОИМОСТЬединственное, что реально изменилось к 2026
// landscape

Ландшафт одним слайдом

SPEC-FIRSTSpec Kit · спека до кода,дальше — как повезётSPEC-ANCHOREDKiro, OpenSpec · спека в репо,растёт вместе с кодомSPEC-AS-SOURCETessl · код — производная,правишь только спекууровень зрелости и церемонности → (классификация Böckeler, martinfowler.com)OpenSpec — здесь
// openspec

Герой доклада: OpenSpec

  • Fission-AI · YC W26 · MIT · npm
  • Без API-ключей и без MCP — работает поверх любого агента
  • Позиционирует себя дословно: «plan mode для сложных фич»
// two.folders

Две папки — вся модель

openspec/
├── specs/                  # истина: как система ведёт себя СЕЙЧАС
│   ├── auth/spec.md
│   └── payments/spec.md
└── changes/                # предложения: что мы МЕНЯЕМ
    ├── add-2fa/
    ├── rate-limit-api/
    └── archive/

→ specs — «как есть», changes — «как станет»

// the.change

Change — самодостаточный пакет

changes/add-2fa/
├── proposal.md        # зачем и что — читает человек на ревью
├── design.md          # как — решения и трейдофы
├── tasks.md           # чеклист — по нему идёт агент
└── specs/
    └── auth/spec.md   # дельта требований, не копия спеки
// delta.specs

Дельты вместо переписывания

## MODIFIED Requirements

### Requirement: User login
The system SHALL require a second factor
after password verification.

#### Scenario: Login with TOTP
- WHEN the password is correct
- THEN the system prompts for a TOTP code

## ADDED Requirements

### Requirement: Recovery codes
The system SHALL issue ten one-time recovery codes.

→ маркеры ADDED / MODIFIED / REMOVED — не нужно специфицировать всю систему заранее

// lifecycle

Мост построен: цикл замкнулся

CHANGEproposal + deltaIMPLEMENTагент идёт по tasks.mdARCHIVEизменение закрытоSPECSдельта влита в истинуследующее изменение — новая дельта поверх выросшей спекиспека растёт органически — только там, где вы реально что-то меняли
// review.the.intent

Что это даёт на ревью

// pull request

+812 −347 · 23 files

что изменилось в реализации

// openspec delta

2 MODIFIED · 1 ADDED

что изменилось в намерении

Brownfield-first: спека растёт только там, где вы трогаете код. Ревьюишь намерение, а не диф.

// agenda

О чём поговорим?

  • Боль агентского кодинга
  • Plan mode — первая попытка
  • Где plan mode заканчивается
  • SDD и OpenSpec
  • Почему SDD плох
  • Регулятор церемонии
// chapter 05

ПОЧЕМУ
SDD ПЛОХ

// fair.play

Дальше — ровно столько же времени против

Иначе это была бы реклама, а не доклад.

// 1300.lines

Церемония не окупается на малом

1300СТРОК СПЕЦИФИКАЦИИ8 markdown-файловрадиодной даты на экранефича: показать сегодняшнее числоMarmelab · «Spec-Driven Development: The Waterfall Strikes Back» · реальный PR
// waterfall

«Это же водопад»

времяуровень абстракцииводопад: спека ВПЕРЁД по времениспека → код → тесты → сдача, полгода без обратной связиBrooker: спека ВВЕРХ по уровнюнамерение и реализация живут параллельно,просто на разных уровнях

Ерет: SDD либо создаёт обучение, либо это водопад с большим счётом за токены. Разница — в вас, не в инструменте.

// semantic.diffusion

Сам термин размыт

  • Böckeler: три инструмента под одной вывеской делают три разные вещи
  • «Мы делаем SDD» — вы не знаете, что делает собеседник
  • Thoughtworks Radar: Assess, не Adopt
// gotcha.01 · spec.drift

Spec drift

Код ушёл вперёд — спека осталась.

// the.rake
  • Агент компилирует устаревшее намерение
  • Без проверки соответствия проблема невидима
  • Лечение — CI-проверка спеки против кода, как у тестов
// gotcha.02 · spec.sprawl

Spec sprawl

Спека разрослась больше кода.

// the.rake
  • Её больше никто не читает
  • Агент тонет в собственном контексте — привет, lost in the middle
  • Лечение — дельты и архивация вместо одного вечно растущего документа
// gotcha.03 · disobedience

Спека не заставляет слушаться

Документированные drift-режимы агентов.

// the.rake
  • Правила игнорируются на исполнении
  • Забываются к середине сессии, отбрасываются как необязательные
  • Спека — исходные данные, а не гарантия
// gotcha.04 · post.hoc.spec

Спека после кода

Главный анти-паттерн.

// the.rake
  • Пишется задним числом как декорация для ревью
  • Никого ни к чему не обязывает
  • Дискредитирует весь процесс — лучше без спеки, чем с фальшивой
// agenda

О чём поговорим?

  • Боль агентского кодинга
  • Plan mode — первая попытка
  • Где plan mode заканчивается
  • SDD и OpenSpec
  • Почему SDD плох
  • Регулятор церемонии
// chapter 06

РЕГУЛЯТОР
ЦЕРЕМОНИИ

// ceremony.dial

Не методология — регулятор

// сколько формализма стоит эта конкретная задача?ГОЛЫЙ ПРОМПТодноразовый скриптPLAN MODEфича на пару часовOPENSPEC3+ сессии · ревью · передачаSPEC KIT / KIROконтракт с внешней командойцеремония →
// health.check

Тест на здоровье процесса

  • Спека пишется после кода?
  • Спеку никто не читает на ревью?
  • Если да — вы делаете не SDD, а бюрократию
// final.thesis

SDD не делает агента умнее. Он делает ваше намерение переживающим сессию

Иногда это ровно то, чего не хватало. А иногда — 1300 строк ради одной даты.

// outro

Спасибо! Вопросы?

  • План — заметка, спека — контракт
  • Дельты дешевле переписывания
  • Церемония — регулятор, не догма

sipki.online · @zergslaw

QR код: Telegram-канал @zergslaw_channel// подписывайся · @zergslaw_channel