Adversarial Spec
zscole/adversarial-specПлагин Claude Code для совместной доработки продуктовых спецификаций: несколько LLM параллельно критикуют документ, Claude синтезирует правки и участвует как равноправный рецензент — цикл повторяется до полного консенсуса всех моделей.
Установка
git clone https://github.com/zscole/adversarial-spec.gitREADME
adversarial-spec
Плагин Claude Code для итеративного уточнения продуктовых спецификаций через дебаты между несколькими моделями до достижения консенсуса.
Ключевая идея: Одна LLM, проверяющая спецификацию, упустит детали. Несколько LLM, дискутирующих о спецификации, выявят пробелы, оспорят допущения и обнаружат граничные случаи, которые любая отдельная модель пропустила бы. В результате получается документ, прошедший строгую состязательную проверку.
Claude — активный участник, а не просто оркестратор. Claude формулирует независимую критику, оспаривает позиции других моделей и вносит существенные улучшения наравне с внешними моделями.
Быстрый старт
# 1. Добавьте маркетплейс и установите плагин
claude plugin marketplace add zscole/adversarial-spec
claude plugin install adversarial-spec
# 2. Задайте хотя бы один API-ключ
export OPENAI_API_KEY="sk-..."
# Или используйте OpenRouter для доступа к нескольким провайдерам по одному ключу
export OPENROUTER_API_KEY="sk-or-..."
# 3. Запустите
/adversarial-spec "Build a rate limiter service with Redis backend"Как это работает
Вы описываете продукт --> Claude составляет спецификацию --> Несколько LLM критикуют параллельно
| |
| v
| Claude синтезирует + добавляет собственную критику
| |
| v
| Правка и повтор до согласия ВСЕХ моделей
| |
+-------------------------------------------------------------->|
v
Период проверки пользователем
|
v
Итоговый документ на выходе
- Опишите концепцию продукта или предоставьте существующий документ
- (Опционально) Начните с подробного интервью для сбора требований
- Claude составляет исходный документ (PRD или техническую спецификацию)
- Документ отправляется моделям-оппонентам (GPT, Gemini, Grok и др.) для параллельной критики
- Claude формулирует независимую критику наряду с отзывами оппонентов
- Claude синтезирует все отзывы и вносит правки
- Цикл продолжается до тех пор, пока ВСЕ модели И Claude не придут к согласию
- Период проверки пользователем: запросите изменения или запустите дополнительные циклы
- Итоговый согласованный документ выводится на выход
Требования
- Python 3.10+
- Пакет
litellm:pip install litellm - API-ключ хотя бы одного LLM-провайдера
Поддерживаемые модели
| Провайдер | Переменная окружения | Примеры моделей |
|---|---|---|
| OpenAI | OPENAI_API_KEY | gpt-4o, gpt-4-turbo, o1 |
| Anthropic | ANTHROPIC_API_KEY | claude-sonnet-4-20250514, claude-opus-4-20250514 |
GEMINI_API_KEY | gemini/gemini-2.0-flash, gemini/gemini-pro | |
| xAI | XAI_API_KEY | xai/grok-3, xai/grok-beta |
| Mistral | MISTRAL_API_KEY | mistral/mistral-large, mistral/codestral |
| Groq | GROQ_API_KEY | groq/llama-3.3-70b-versatile |
| OpenRouter | OPENROUTER_API_KEY | openrouter/openai/gpt-4o, openrouter/anthropic/claude-3.5-sonnet |
| Codex CLI | Подписка ChatGPT | codex/gpt-5.2-codex, codex/gpt-5.1-codex-max |
| Gemini CLI | Аккаунт Google | gemini-cli/gemini-3-pro-preview, gemini-cli/gemini-3-flash-preview |
| Deepseek | DEEPSEEK_API_KEY | deepseek/deepseek-chat |
| Zhipu | ZHIPUAI_API_KEY | zhipu/glm-4, zhipu/glm-4-plus |
Проверить, какие ключи настроены:
python3 "$(find ~/.claude -name debate.py -path '*adversarial-spec*' 2>/dev/null | head -1)" providersПоддержка AWS Bedrock
Для корпоративных пользователей, которым необходимо маршрутизировать все вызовы моделей через AWS Bedrock (например, для соответствия требованиям безопасности или через inference gateway):
# Включить режим Bedrock
python3 "$(find ~/.claude -name debate.py -path '*adversarial-spec*' 2>/dev/null | head -1)" bedrock enable --region us-east-1
# Добавить модели, активированные в вашем аккаунте Bedrock
python3 "$(find ~/.claude -name debate.py -path '*adversarial-spec*' 2>/dev/null | head -1)" bedrock add-model claude-3-sonnet
python3 "$(find ~/.claude -name debate.py -path '*adversarial-spec*' 2>/dev/null | head -1)" bedrock add-model claude-3-haiku
# Проверить конфигурацию
python3 "$(find ~/.claude -name debate.py -path '*adversarial-spec*' 2>/dev/null | head -1)" bedrock status
# Отключить режим Bedrock
python3 "$(find ~/.claude -name debate.py -path '*adversarial-spec*' 2>/dev/null | head -1)" bedrock disableКогда режим Bedrock включён, все вызовы моделей маршрутизируются через Bedrock — прямые API-вызовы не выполняются. Используйте понятные имена вроде claude-3-sonnet, которые автоматически сопоставляются с идентификаторами моделей Bedrock.
Конфигурация хранится в ~/.claude/adversarial-spec/config.json.
Поддержка OpenRouter
OpenRouter предоставляет унифицированный доступ к нескольким LLM-провайдерам через единый API. Это удобно для:
- Доступа к моделям разных провайдеров по одному API-ключу
- Сравнения моделей от разных провайдеров
- Автоматического резервирования и балансировки нагрузки
- Оптимизации затрат между провайдерами
Настройка:
# Получите API-ключ на https://openrouter.ai/keys
export OPENROUTER_API_KEY="sk-or-..."
# Используйте модели OpenRouter (с префиксом openrouter/)
python3 debate.py critique --models openrouter/openai/gpt-4o,openrouter/anthropic/claude-3.5-sonnet < spec.mdПопулярные модели OpenRouter:
openrouter/openai/gpt-4o— GPT-4o через OpenRouteropenrouter/anthropic/claude-3.5-sonnet— Claude 3.5 Sonnetopenrouter/google/gemini-2.0-flash— Gemini 2.0 Flashopenrouter/meta-llama/llama-3.3-70b-instruct— Llama 3.3 70B