@dzhechkov/keysarium 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +289 -0
- package/bin/cli.js +5 -0
- package/package.json +43 -0
- package/src/cli.js +157 -0
- package/src/commands/doctor.js +469 -0
- package/src/commands/init.js +171 -0
- package/src/commands/list.js +147 -0
- package/src/commands/remove.js +197 -0
- package/src/commands/update.js +191 -0
- package/src/utils.js +274 -0
- package/templates/.claude/agents/cjm-variant-worker.md +60 -0
- package/templates/.claude/agents/discovery-worker.md +45 -0
- package/templates/.claude/agents/parallel-research-orchestrator.md +70 -0
- package/templates/.claude/agents/presentation-worker.md +55 -0
- package/templates/.claude/agents/research-worker.md +43 -0
- package/templates/.claude/commands/architecture-phase.md +37 -0
- package/templates/.claude/commands/casarium.md +163 -0
- package/templates/.claude/commands/cjm-prototype.md +42 -0
- package/templates/.claude/commands/discovery.md +34 -0
- package/templates/.claude/commands/explore-case.md +22 -0
- package/templates/.claude/commands/harvest.md +67 -0
- package/templates/.claude/commands/new-research.md +69 -0
- package/templates/.claude/commands/parallel-research.md +45 -0
- package/templates/.claude/commands/presentation.md +49 -0
- package/templates/.claude/commands/research.md +32 -0
- package/templates/.claude/commands/solve.md +36 -0
- package/templates/.claude/rules/agent-swarm.md +31 -0
- package/templates/.claude/rules/anti-patterns.md +19 -0
- package/templates/.claude/rules/checkpoint-protocol.md +23 -0
- package/templates/.claude/rules/domain-specific.md +32 -0
- package/templates/.claude/rules/file-conventions.md +38 -0
- package/templates/.claude/rules/modular-reuse.md +35 -0
- package/templates/.claude/rules/research-quality.md +20 -0
- package/templates/.claude/settings.json +37 -0
- package/templates/.claude/skills/explore/SKILL.md +215 -0
- package/templates/.claude/skills/explore/references/questioning-techniques.md +151 -0
- package/templates/.claude/skills/explore/references/task-brief-templates.md +355 -0
- package/templates/.claude/skills/frontend-design/LICENSE.txt +177 -0
- package/templates/.claude/skills/frontend-design/SKILL.md +42 -0
- package/templates/.claude/skills/goap-research-ed25519/SKILL.md +415 -0
- package/templates/.claude/skills/goap-research-ed25519/references/ed25519-verification.md +658 -0
- package/templates/.claude/skills/goap-research-ed25519/references/research-actions.md +544 -0
- package/templates/.claude/skills/goap-research-ed25519/references/source-evaluation.md +560 -0
- package/templates/.claude/skills/goap-research-ed25519/scripts/ed25519_verifier.py +662 -0
- package/templates/.claude/skills/goap-research-ed25519/scripts/goap_planner.py +720 -0
- package/templates/.claude/skills/presentation-storyteller/SKILL.md +371 -0
- package/templates/.claude/skills/presentation-storyteller/references/example-presentation.md +273 -0
- package/templates/.claude/skills/presentation-storyteller/references/slide-types.md +426 -0
- package/templates/.claude/skills/presentation-storyteller/references/sources-index-template.md +213 -0
- package/templates/.claude/skills/presentation-storyteller/references/speaker-script-patterns.md +324 -0
- package/templates/.claude/skills/presentation-storyteller/references/storytelling-frameworks.md +270 -0
- package/templates/.claude/skills/problem-solver-enhanced/SKILL.md +562 -0
- package/templates/.claude/skills/reverse-engineering-unicorn/SKILL.md +194 -0
- package/templates/.claude/skills/reverse-engineering-unicorn/examples/noom-cjm-example.md +100 -0
- package/templates/.claude/skills/reverse-engineering-unicorn/examples/noom-module1-example.md +88 -0
- package/templates/.claude/skills/reverse-engineering-unicorn/modules/01-intelligence.md +328 -0
- package/templates/.claude/skills/reverse-engineering-unicorn/modules/02-product-customers.md +221 -0
- package/templates/.claude/skills/reverse-engineering-unicorn/modules/025-cjm-prototype.md +206 -0
- package/templates/.claude/skills/reverse-engineering-unicorn/modules/03-market-competition.md +402 -0
- package/templates/.claude/skills/reverse-engineering-unicorn/modules/04-business-finance.md +287 -0
- package/templates/.claude/skills/reverse-engineering-unicorn/modules/05-growth-engine.md +290 -0
- package/templates/.claude/skills/reverse-engineering-unicorn/modules/06-playbook-synthesis.md +286 -0
- package/templates/.claude/skills/reverse-engineering-unicorn/references/blue-ocean-canvas.md +39 -0
- package/templates/.claude/skills/reverse-engineering-unicorn/references/industry-benchmarks.md +67 -0
- package/templates/.claude/skills/reverse-engineering-unicorn/references/jtbd-canvas.md +48 -0
- package/templates/CLAUDE.md +185 -0
- package/templates/TOOLKIT_HARVEST.md +29 -0
- package/templates/docs/keysarium/01-deployment-guide.md +768 -0
- package/templates/docs/keysarium/02-admin-guide.md +1170 -0
- package/templates/docs/keysarium/03-user-guide.md +884 -0
- package/templates/docs/keysarium/04-infrastructure-requirements.md +967 -0
- package/templates/docs/keysarium/05-architecture.md +706 -0
- package/templates/docs/keysarium/06-user-flows.md +925 -0
- package/templates/docs/skills-bto/01-deployment-guide.md +828 -0
- package/templates/docs/skills-bto/02-admin-guide.md +1052 -0
- package/templates/docs/skills-bto/03-user-guide.md +960 -0
- package/templates/docs/skills-bto/04-infrastructure-requirements.md +610 -0
- package/templates/docs/skills-bto/05-architecture.md +1112 -0
- package/templates/docs/skills-bto/06-user-flows.md +977 -0
- package/templates/lib/agent-patterns.md +115 -0
- package/templates/lib/domain-templates.md +172 -0
- package/templates/lib/phase-utils.md +107 -0
- package/templates/lib/skill-loader.md +78 -0
- package/templates/researches/.gitkeep +0 -0
|
@@ -0,0 +1,1112 @@
|
|
|
1
|
+
# 05. Архитектура @dzhechko/skills-bto
|
|
2
|
+
|
|
3
|
+
## Содержание
|
|
4
|
+
|
|
5
|
+
1. [Обзор системы и философия проектирования](#обзор-системы-и-философия-проектирования)
|
|
6
|
+
2. [Компоненты системы](#компоненты-системы)
|
|
7
|
+
3. [MODULE: BUILD](#module-build)
|
|
8
|
+
4. [MODULE: TEST](#module-test)
|
|
9
|
+
5. [MODULE: OPTIMIZE](#module-optimize)
|
|
10
|
+
6. [Agent Swarm архитектура](#agent-swarm-архитектура)
|
|
11
|
+
7. [Диаграммы потоков данных](#диаграммы-потоков-данных)
|
|
12
|
+
8. [Архитектура quality gates](#архитектура-quality-gates)
|
|
13
|
+
9. [Система обнаружения anti-patterns](#система-обнаружения-anti-patterns)
|
|
14
|
+
10. [Интеграция с Keysarium](#интеграция-с-keysarium)
|
|
15
|
+
11. [Расширяемость системы](#расширяемость-системы)
|
|
16
|
+
12. [Проектные решения и компромиссы](#проектные-решения-и-компромиссы)
|
|
17
|
+
|
|
18
|
+
---
|
|
19
|
+
|
|
20
|
+
## Обзор системы и философия проектирования
|
|
21
|
+
|
|
22
|
+
`@dzhechko/skills-bto` — это **Build-Test-Optimize (BTO)** скилл-пак для Claude Code, реализующий полный цикл создания, оценки и итеративного улучшения Claude Code артефактов. Система работает как standalone-инструмент и как интегрированный компонент пайплайна `@dzhechko/keysarium`.
|
|
23
|
+
|
|
24
|
+
### Фундаментальная идея
|
|
25
|
+
|
|
26
|
+
Большинство промпт-инжиниринговых задач имеют три отдельных фазы с принципиально разными требованиями:
|
|
27
|
+
|
|
28
|
+
```
|
|
29
|
+
BUILD TEST OPTIMIZE
|
|
30
|
+
────── ──── ────────
|
|
31
|
+
Генерация Оценка Улучшение
|
|
32
|
+
Требует: Требует: Требует:
|
|
33
|
+
• Творчество • Объективность • Управляемые мутации
|
|
34
|
+
• Структуру • Разные точки зр. • Быструю итерацию
|
|
35
|
+
• Domain знание • Детерминизм • Отбор лучших вариантов
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
BTO изолирует эти три режима в отдельные модули с чёткими контрактами на входе и выходе. Модули можно запускать независимо или последовательно как пайплайн.
|
|
39
|
+
|
|
40
|
+
### Ключевые принципы проектирования
|
|
41
|
+
|
|
42
|
+
**1. Layered Evaluation (иерархическая оценка)**
|
|
43
|
+
Дорогая LLM-оценка применяется только к артефактам, прошедшим дешёвые фильтры. Layer 0 (детерминистические проверки) отсеивает большинство очевидных проблем бесплатно. Только артефакты, прошедшие Layer 0 и Layer 1, получают полную панель из трёх судей Layer 2.
|
|
44
|
+
|
|
45
|
+
**2. Judge Isolation (изоляция судей)**
|
|
46
|
+
Ни один судья не видит оценки других судей до момента агрегации. Это предотвращает конформизм — феномен, при котором один агент адаптирует своё мнение к мнению группы, снижая ценность мульти-агентной оценки.
|
|
47
|
+
|
|
48
|
+
**3. Strategy-Driven Mutation (направленная мутация)**
|
|
49
|
+
Вместо случайных мутаций BTO использует именованные стратегии (`expand-depth`, `invert-critic`, `add-metrics` и др.), которые выбираются на основе слабых измерений из последней оценки. Это ускоряет сходимость и делает изменения интерпретируемыми.
|
|
50
|
+
|
|
51
|
+
**4. Cost-Bounded Execution (ограниченный бюджет)**
|
|
52
|
+
Каждая операция имеет явную стоимостную модель. Haiku используется для быстрых промежуточных оценок, Sonnet — для панели судей, Opus — только для crossover и meta-judge. Жёсткий лимит в 3 раунда (15 оценок) предотвращает неконтролируемые расходы.
|
|
53
|
+
|
|
54
|
+
**5. Artifact-Type Agnosticism (независимость от типа артефакта)**
|
|
55
|
+
Система работает с любым текстовым артефактом через настраиваемые rubrics и structure specs. Встроенная поддержка: skills, commands, rules, agent templates, research artifacts.
|
|
56
|
+
|
|
57
|
+
---
|
|
58
|
+
|
|
59
|
+
## Компоненты системы
|
|
60
|
+
|
|
61
|
+
### Текстовая карта компонентов
|
|
62
|
+
|
|
63
|
+
```
|
|
64
|
+
@dzhechko/skills-bto
|
|
65
|
+
├── SKILL.md ← Точка входа, оркестратор пайплайна
|
|
66
|
+
│
|
|
67
|
+
├── modules/ ← Три основных модуля
|
|
68
|
+
│ ├── build.md ← MODULE 1: Генерация артефактов
|
|
69
|
+
│ ├── test.md ← MODULE 2: Мульти-агентная оценка
|
|
70
|
+
│ └── optimize.md ← MODULE 3: Эволюционная оптимизация
|
|
71
|
+
│
|
|
72
|
+
├── references/ ← Справочные материалы
|
|
73
|
+
│ ├── eval-patterns.md ← Паттерны мульти-агентной оценки
|
|
74
|
+
│ ├── optimization-methods.md ← Обзор методов оптимизации промптов
|
|
75
|
+
│ ├── judge-rubrics.md ← Рубрики для судей
|
|
76
|
+
│ └── quality-checklist.md ← Детерминистические чеклисты
|
|
77
|
+
│
|
|
78
|
+
└── examples/ ← Примеры выходных артефактов
|
|
79
|
+
└── sample-eval-report.md ← Формат отчёта об оценке
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
```
|
|
83
|
+
.claude/agents/ ← Шаблоны агентов-воркеров
|
|
84
|
+
├── bto-judge-panel.md ← Панель из 3 судей + meta-judge
|
|
85
|
+
└── bto-optimizer-worker.md ← Воркеры мутации + haiku fast-eval
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
```
|
|
89
|
+
.claude/commands/ ← Slash-команды (точки входа)
|
|
90
|
+
├── bto.md ← /bto — полный пайплайн
|
|
91
|
+
├── bto-build.md ← /bto-build — генерация
|
|
92
|
+
├── bto-test.md ← /bto-test — оценка
|
|
93
|
+
└── bto-optimize.md ← /bto-optimize — оптимизация
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
```
|
|
97
|
+
.claude/rules/
|
|
98
|
+
└── bto-quality-gates.md ← Автоматически применяемые quality gates
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
### Mermaid-диаграмма компонентов
|
|
102
|
+
|
|
103
|
+
```mermaid
|
|
104
|
+
graph TB
|
|
105
|
+
subgraph "Точки входа (Commands)"
|
|
106
|
+
BTO["/bto<br/>Полный пайплайн"]
|
|
107
|
+
BUILD_CMD["/bto-build<br/>Генерация"]
|
|
108
|
+
TEST_CMD["/bto-test<br/>Оценка"]
|
|
109
|
+
OPT_CMD["/bto-optimize<br/>Оптимизация"]
|
|
110
|
+
end
|
|
111
|
+
|
|
112
|
+
subgraph "Ядро BTO Skill"
|
|
113
|
+
SKILL["SKILL.md<br/>Оркестратор"]
|
|
114
|
+
end
|
|
115
|
+
|
|
116
|
+
subgraph "Модули"
|
|
117
|
+
M_BUILD["modules/build.md<br/>BUILD Protocol"]
|
|
118
|
+
M_TEST["modules/test.md<br/>TEST Protocol"]
|
|
119
|
+
M_OPT["modules/optimize.md<br/>OPTIMIZE Protocol"]
|
|
120
|
+
end
|
|
121
|
+
|
|
122
|
+
subgraph "Агентные шаблоны"
|
|
123
|
+
JUDGE["bto-judge-panel.md<br/>3 судьи + meta-judge"]
|
|
124
|
+
WORKER["bto-optimizer-worker.md<br/>Мутация + fast-eval"]
|
|
125
|
+
end
|
|
126
|
+
|
|
127
|
+
subgraph "Справочники"
|
|
128
|
+
RUBRICS["references/judge-rubrics.md"]
|
|
129
|
+
PATTERNS["references/eval-patterns.md"]
|
|
130
|
+
METHODS["references/optimization-methods.md"]
|
|
131
|
+
CHECKLIST["references/quality-checklist.md"]
|
|
132
|
+
end
|
|
133
|
+
|
|
134
|
+
subgraph "Правила (автоматически)"
|
|
135
|
+
GATES["rules/bto-quality-gates.md"]
|
|
136
|
+
end
|
|
137
|
+
|
|
138
|
+
BTO --> SKILL
|
|
139
|
+
BUILD_CMD --> M_BUILD
|
|
140
|
+
TEST_CMD --> M_TEST
|
|
141
|
+
OPT_CMD --> M_OPT
|
|
142
|
+
SKILL --> M_BUILD
|
|
143
|
+
SKILL --> M_TEST
|
|
144
|
+
SKILL --> M_OPT
|
|
145
|
+
M_TEST --> JUDGE
|
|
146
|
+
M_OPT --> WORKER
|
|
147
|
+
M_OPT --> JUDGE
|
|
148
|
+
JUDGE --> RUBRICS
|
|
149
|
+
WORKER --> RUBRICS
|
|
150
|
+
WORKER --> CHECKLIST
|
|
151
|
+
M_BUILD --> CHECKLIST
|
|
152
|
+
GATES -.->|"автоматически применяются"| M_TEST
|
|
153
|
+
GATES -.->|"автоматически применяются"| M_OPT
|
|
154
|
+
```
|
|
155
|
+
|
|
156
|
+
---
|
|
157
|
+
|
|
158
|
+
## MODULE: BUILD
|
|
159
|
+
|
|
160
|
+
### Назначение
|
|
161
|
+
|
|
162
|
+
Генерация production-качества Claude Code артефактов (skills, commands, rules, agent templates) из описания на естественном языке.
|
|
163
|
+
|
|
164
|
+
### Архитектура обнаружения типа
|
|
165
|
+
|
|
166
|
+
```mermaid
|
|
167
|
+
graph LR
|
|
168
|
+
INPUT["Описание артефакта"] --> DETECT{"Определение типа"}
|
|
169
|
+
DETECT -->|"skill / module / capability"| TYPE_SKILL["TYPE: skill"]
|
|
170
|
+
DETECT -->|"command / slash / pipeline"| TYPE_CMD["TYPE: command"]
|
|
171
|
+
DETECT -->|"rule / constraint / convention"| TYPE_RULE["TYPE: rule"]
|
|
172
|
+
DETECT -->|"agent / worker / parallel"| TYPE_AGENT["TYPE: agent template"]
|
|
173
|
+
|
|
174
|
+
TYPE_SKILL --> TMPL_SKILL["Шаблон: SKILL.md +<br/>modules/ + references/ + examples/"]
|
|
175
|
+
TYPE_CMD --> TMPL_CMD["Шаблон: одиночный .md<br/>с $ARGUMENTS + checkpoint"]
|
|
176
|
+
TYPE_RULE --> TMPL_RULE["Шаблон: таблица паттернов<br/>+ detection signals"]
|
|
177
|
+
TYPE_AGENT --> TMPL_AGENT["Шаблон: конфигурация<br/>агента + prompt template"]
|
|
178
|
+
```
|
|
179
|
+
|
|
180
|
+
### Два режима: QUICK и DEEP
|
|
181
|
+
|
|
182
|
+
| Режим | Когда использовать | Агенты | Время | Процесс |
|
|
183
|
+
|-------|-------------------|--------|-------|---------|
|
|
184
|
+
| QUICK | Простой артефакт, чёткие требования | 1 | ~2 мин | Прямая генерация из описания |
|
|
185
|
+
| DEEP | Сложный скилл, неясные требования | 1 + explore | ~5 мин | Кларификация через `explore` скилл → requirements brief → подтверждение → генерация |
|
|
186
|
+
|
|
187
|
+
### Шаблонная система
|
|
188
|
+
|
|
189
|
+
Каждый тип артефакта имеет строгий шаблон с обязательными секциями:
|
|
190
|
+
|
|
191
|
+
#### Скилл (обязательные секции)
|
|
192
|
+
```
|
|
193
|
+
# [Name] ← Заголовок
|
|
194
|
+
## Overview ← Назначение и область применения
|
|
195
|
+
## Quick Start ← Быстрый старт (команды/вызовы)
|
|
196
|
+
## Protocol ← Пошаговый протокол исполнения
|
|
197
|
+
## Step 1: ...
|
|
198
|
+
## Step N: ...
|
|
199
|
+
## Output Format ← Формат выходных артефактов
|
|
200
|
+
## Anti-Patterns ← Известные ошибки + способы устранения
|
|
201
|
+
## Dependencies ← Зависимости от других скиллов/файлов
|
|
202
|
+
```
|
|
203
|
+
|
|
204
|
+
#### Команда (обязательные секции)
|
|
205
|
+
```
|
|
206
|
+
# /command-name — Description
|
|
207
|
+
## Usage ← Синтаксис вызова
|
|
208
|
+
## Parameters ← $ARGUMENTS и другие параметры
|
|
209
|
+
## Protocol ← Логика исполнения
|
|
210
|
+
## Checkpoint ← Баннер чекпоинта (обязательно)
|
|
211
|
+
```
|
|
212
|
+
|
|
213
|
+
#### Правило (обязательные секции)
|
|
214
|
+
```
|
|
215
|
+
# Rule Name
|
|
216
|
+
## Patterns ← Таблица: Pattern | Detection Signal | Required Fix
|
|
217
|
+
## Auto-Detection ← Инструкция по автоматическому применению
|
|
218
|
+
```
|
|
219
|
+
|
|
220
|
+
### Self-Review после генерации (4-уровневая проверка)
|
|
221
|
+
|
|
222
|
+
Перед выводом артефакта модуль BUILD выполняет самопроверку:
|
|
223
|
+
|
|
224
|
+
```
|
|
225
|
+
1. Structure check: обязательные секции присутствуют, нет пустых секций
|
|
226
|
+
2. Content check: нет generic/placeholder контента, специфичен для домена
|
|
227
|
+
3. Convention check: kebab-case имена файлов, правильная иерархия заголовков
|
|
228
|
+
4. Size check: SKILL.md: 2KB-30KB, Module: 1KB-15KB, Reference: 500B-10KB
|
|
229
|
+
```
|
|
230
|
+
|
|
231
|
+
Если любой чек не проходит → артефакт корректируется до вывода (Layer 0 inline check).
|
|
232
|
+
|
|
233
|
+
### Anti-Patterns модуля BUILD
|
|
234
|
+
|
|
235
|
+
| Anti-Pattern | Сигнал обнаружения | Обязательное исправление |
|
|
236
|
+
|-------------|--------------------|-----------------------|
|
|
237
|
+
| Generic skill | Нет domain-specific терминов | Добавить доменный контекст и ограничения |
|
|
238
|
+
| Missing references | Директория references/ пуста | Добавить минимум один reference файл |
|
|
239
|
+
| No examples | Директория examples/ пуста | Добавить минимум один few-shot пример |
|
|
240
|
+
| Over-scoped | SKILL.md > 30KB | Разбить на модули |
|
|
241
|
+
| Under-specified | SKILL.md < 2KB | Расширить деталями |
|
|
242
|
+
| Copy-paste | Идентичен другому скиллу | Адаптировать уникально |
|
|
243
|
+
| Missing anti-patterns | Секция Anti-Patterns отсутствует | Добавить типичные failure modes |
|
|
244
|
+
| No output format | Не описан ожидаемый выход | Добавить явную секцию Output Format |
|
|
245
|
+
|
|
246
|
+
---
|
|
247
|
+
|
|
248
|
+
## MODULE: TEST
|
|
249
|
+
|
|
250
|
+
### Назначение
|
|
251
|
+
|
|
252
|
+
Оценка любого Claude Code артефакта через четырёхуровневую иерархическую схему: от детерминистических проверок до полной мульти-агентной панели судей.
|
|
253
|
+
|
|
254
|
+
### Четырёхслойная архитектура
|
|
255
|
+
|
|
256
|
+
```
|
|
257
|
+
┌─────────────────────────────────────────────────────────────────┐
|
|
258
|
+
│ Layer 0: Deterministic Pre-checks │
|
|
259
|
+
│ Стоимость: 0 (нет LLM вызовов) Скорость: мгновенно │
|
|
260
|
+
│ Универсальные + Type-specific проверки (10-15 чеков) │
|
|
261
|
+
│ Gate: ≥ 80% passed → продолжение │
|
|
262
|
+
└──────────────────────────┬──────────────────────────────────────┘
|
|
263
|
+
│ PASS
|
|
264
|
+
▼
|
|
265
|
+
┌─────────────────────────────────────────────────────────────────┐
|
|
266
|
+
│ Layer 1: Single LLM Judge (Quick) │
|
|
267
|
+
│ Стоимость: ~$0.001 Модель: haiku Скорость: ~10 сек │
|
|
268
|
+
│ 5 измерений: CLARITY, COMPLETENESS, ACTIONABILITY, │
|
|
269
|
+
│ QUALITY, ANTI-PATTERNS │
|
|
270
|
+
│ Gate: Average ≥ 7.0 → PASS; 5.0-6.9 → NEEDS WORK; <5.0 → FAIL│
|
|
271
|
+
└──────────────────────────┬──────────────────────────────────────┘
|
|
272
|
+
│ PASS или NEEDS WORK
|
|
273
|
+
▼
|
|
274
|
+
┌─────────────────────────────────────────────────────────────────┐
|
|
275
|
+
│ Layer 2: Full Judge Panel (3 Agents) │
|
|
276
|
+
│ Стоимость: ~$0.01 Модели: sonnet×3 Скорость: ~30 сек │
|
|
277
|
+
│ Параллельно: Expert (0.4) || Critic (0.3) || Auditor (0.3) │
|
|
278
|
+
│ 5 измерений: METHODOLOGY, DEPTH, CORRECTNESS, USABILITY, │
|
|
279
|
+
│ ROBUSTNESS │
|
|
280
|
+
│ Disagreement detection: если max-min > 3 → Layer 3 │
|
|
281
|
+
└──────────────────────────┬──────────────────────────────────────┘
|
|
282
|
+
│ Disagreement > 3 на любом измерении
|
|
283
|
+
▼
|
|
284
|
+
┌─────────────────────────────────────────────────────────────────┐
|
|
285
|
+
│ Layer 3: Meta-Judge (Disagreement Resolution) │
|
|
286
|
+
│ Стоимость: ~$0.05 Модель: opus Скорость: ~20 сек │
|
|
287
|
+
│ Читает все 3 оценки, выносит финальный вердикт │
|
|
288
|
+
│ Если неразрешимо → эскалация на человека │
|
|
289
|
+
└─────────────────────────────────────────────────────────────────┘
|
|
290
|
+
```
|
|
291
|
+
|
|
292
|
+
### Layer 0: Детерминистические проверки
|
|
293
|
+
|
|
294
|
+
Layer 0 полностью детерминирован и не требует LLM. Проверки разбиты на универсальные (для всех типов) и type-specific.
|
|
295
|
+
|
|
296
|
+
**Универсальные проверки (CHECK-U1..U5):**
|
|
297
|
+
```
|
|
298
|
+
CHECK-U1: Файл существует и не пуст
|
|
299
|
+
CHECK-U2: Валидный UTF-8 текст
|
|
300
|
+
CHECK-U3: Минимум один markdown заголовок (#)
|
|
301
|
+
CHECK-U4: Не более 2 последовательных пустых строк
|
|
302
|
+
CHECK-U5: Размер файла в допустимых пределах
|
|
303
|
+
```
|
|
304
|
+
|
|
305
|
+
**Skill-специфичные проверки (CHECK-S1..S10):**
|
|
306
|
+
```
|
|
307
|
+
CHECK-S1: SKILL.md существует в директории скилла
|
|
308
|
+
CHECK-S2: Первый заголовок — # Title
|
|
309
|
+
CHECK-S3: Секция ## Overview или ## Purpose присутствует
|
|
310
|
+
CHECK-S4: Секция ## Anti-Patterns присутствует
|
|
311
|
+
CHECK-S5: Все файлы в modules/ упомянуты в SKILL.md
|
|
312
|
+
CHECK-S6: Все файлы в references/ упомянуты в SKILL.md
|
|
313
|
+
CHECK-S7: Нет пустых секций (heading → следующий heading без контента)
|
|
314
|
+
CHECK-S8: Размер: 1KB < SKILL.md < 50KB
|
|
315
|
+
CHECK-S9: Общий размер директории < 200KB
|
|
316
|
+
CHECK-S10: Минимум один файл в references/ ИЛИ examples/
|
|
317
|
+
```
|
|
318
|
+
|
|
319
|
+
**Command-специфичные проверки (CHECK-C1..C5):**
|
|
320
|
+
```
|
|
321
|
+
CHECK-C1: Содержит "$ARGUMENTS" или ссылку на параметр
|
|
322
|
+
CHECK-C2: Содержит checkpoint баннер или протокол
|
|
323
|
+
CHECK-C3: Инструкция загрузки скилла (Read *.SKILL.md)
|
|
324
|
+
CHECK-C4: Размер: 500B < файл < 20KB
|
|
325
|
+
CHECK-C5: Секция ## Usage или ## Protocol присутствует
|
|
326
|
+
```
|
|
327
|
+
|
|
328
|
+
**Rule-специфичные проверки (CHECK-R1..R4):**
|
|
329
|
+
```
|
|
330
|
+
CHECK-R1: Таблица или структурированный список паттернов
|
|
331
|
+
CHECK-R2: Каждый паттерн имеет detection signal и fix
|
|
332
|
+
CHECK-R3: Размер: 200B < файл < 10KB
|
|
333
|
+
CHECK-R4: Секция "Auto-Detection" или аналог присутствует
|
|
334
|
+
```
|
|
335
|
+
|
|
336
|
+
**Agent template-специфичные проверки (CHECK-A1..A4):**
|
|
337
|
+
```
|
|
338
|
+
CHECK-A1: Указана модель (haiku/sonnet/opus)
|
|
339
|
+
CHECK-A2: Указан scope изоляции (что читает, что пишет)
|
|
340
|
+
CHECK-A3: Шаблон промпта или инструкции присутствуют
|
|
341
|
+
CHECK-A4: Размер: 200B < файл < 10KB
|
|
342
|
+
```
|
|
343
|
+
|
|
344
|
+
### Layer 1: Quick Judge (haiku)
|
|
345
|
+
|
|
346
|
+
Один haiku агент оценивает артефакт по 5 измерениям:
|
|
347
|
+
|
|
348
|
+
| Измерение | Вопрос для оценки |
|
|
349
|
+
|-----------|-------------------|
|
|
350
|
+
| CLARITY | Инструкции однозначны? LLM может следовать им точно? |
|
|
351
|
+
| COMPLETENESS | Все необходимые секции присутствуют? |
|
|
352
|
+
| ACTIONABILITY | Может ли Claude произвести конкретный вывод из этих инструкций? |
|
|
353
|
+
| QUALITY | Хорошо структурировано? Профессионально оформлено? |
|
|
354
|
+
| ANTI-PATTERNS | Избегает известных ловушек? Есть покрытие failure modes? |
|
|
355
|
+
|
|
356
|
+
**Пороги:**
|
|
357
|
+
- Average ≥ 7.0: **PASS**
|
|
358
|
+
- Average 5.0–6.9: **NEEDS WORK** (можно перейти к Layer 2 для детального feedback)
|
|
359
|
+
- Average < 5.0: **FAIL** (требует исправления перед продолжением)
|
|
360
|
+
|
|
361
|
+
### Layer 2: Full Judge Panel (3 Agents параллельно)
|
|
362
|
+
|
|
363
|
+
Три агента-судьи работают параллельно. Ключевое ограничение: **нет межсудейской коммуникации до момента агрегации**.
|
|
364
|
+
|
|
365
|
+
#### Архитектура изоляции судей
|
|
366
|
+
|
|
367
|
+
```mermaid
|
|
368
|
+
graph LR
|
|
369
|
+
ARTIFACT["Артефакт\n(одинаковый для всех)"]
|
|
370
|
+
|
|
371
|
+
ARTIFACT --> J1["Judge 1\nDomain Expert\nsonnet\nWeight: 0.4"]
|
|
372
|
+
ARTIFACT --> J2["Judge 2\nCritic\nsonnet\nWeight: 0.3"]
|
|
373
|
+
ARTIFACT --> J3["Judge 3\nCompleteness Auditor\nsonnet\nWeight: 0.3"]
|
|
374
|
+
|
|
375
|
+
J1 --> F1["judge-1.md"]
|
|
376
|
+
J2 --> F2["judge-2.md"]
|
|
377
|
+
J3 --> F3["judge-3.md"]
|
|
378
|
+
|
|
379
|
+
F1 --> AGG["Aggregator\n(оркестратор)"]
|
|
380
|
+
F2 --> AGG
|
|
381
|
+
F3 --> AGG
|
|
382
|
+
|
|
383
|
+
AGG --> CHECK{"Disagreement\nmax-min > 3?"}
|
|
384
|
+
CHECK -->|Нет| VERDICT["panel-verdict.md"]
|
|
385
|
+
CHECK -->|Да| META["Meta-Judge\nopus"]
|
|
386
|
+
META --> VERDICT
|
|
387
|
+
```
|
|
388
|
+
|
|
389
|
+
#### Профили судей
|
|
390
|
+
|
|
391
|
+
**Judge 1 — Domain Expert (Weight: 0.4)**
|
|
392
|
+
|
|
393
|
+
Самый высокий вес. Фокус: техническая корректность и применимость в домене.
|
|
394
|
+
|
|
395
|
+
```
|
|
396
|
+
Критерии оценки:
|
|
397
|
+
• Domain accuracy: Корректны ли утверждения для данной области?
|
|
398
|
+
• Technical depth: Адресует ли артефакт неочевидные аспекты?
|
|
399
|
+
• Practical applicability: Можно ли использовать артефакт «как есть»?
|
|
400
|
+
|
|
401
|
+
Калибровка:
|
|
402
|
+
• 9-10: зарезервировано для исключительно качественных работ
|
|
403
|
+
• 7-8: хорошее качество с незначительными улучшениями
|
|
404
|
+
• 5-6: приемлемо, но требует доработки
|
|
405
|
+
• 1-4: серьёзные проблемы
|
|
406
|
+
```
|
|
407
|
+
|
|
408
|
+
**Judge 2 — Critic (Weight: 0.3)**
|
|
409
|
+
|
|
410
|
+
Намеренно строгий. Инструктирован снижать оценки при наличии сомнений.
|
|
411
|
+
|
|
412
|
+
```
|
|
413
|
+
Критерии оценки:
|
|
414
|
+
• Logical consistency: Нет внутренних противоречий?
|
|
415
|
+
• Verifiability: Утверждения трассируемы к источникам или помечены [ANALYSIS]?
|
|
416
|
+
• Anti-pattern absence: Нет запрещённых паттернов из bto-quality-gates.md?
|
|
417
|
+
|
|
418
|
+
Калибровка:
|
|
419
|
+
• При обнаружении anti-pattern — кап критерия на уровне 5
|
|
420
|
+
• "Если сомневаешься — снижай оценку"
|
|
421
|
+
• Средняя оценка Critic должна быть ~5-6 (строгая калибровка)
|
|
422
|
+
```
|
|
423
|
+
|
|
424
|
+
**Judge 3 — Completeness Auditor (Weight: 0.3)**
|
|
425
|
+
|
|
426
|
+
Фокус: структурная полнота и целостность перекрёстных ссылок.
|
|
427
|
+
|
|
428
|
+
```
|
|
429
|
+
Критерии оценки:
|
|
430
|
+
• Section coverage: Все обязательные секции присутствуют и не пусты?
|
|
431
|
+
• Depth per section: Каждая секция достаточно глубокая (не stub)?
|
|
432
|
+
• Edge cases addressed: Упомянуты ли граничные условия и failure modes?
|
|
433
|
+
|
|
434
|
+
Калибровка:
|
|
435
|
+
• -2 очка за каждую отсутствующую обязательную секцию
|
|
436
|
+
• -1 очко за каждую stub-секцию (< 3 содержательных предложений)
|
|
437
|
+
```
|
|
438
|
+
|
|
439
|
+
### Агрегация оценок
|
|
440
|
+
|
|
441
|
+
```
|
|
442
|
+
Per-dimension score = Expert[dim] × 0.4 + Critic[dim] × 0.3 + Auditor[dim] × 0.3
|
|
443
|
+
Overall score = mean(METHODOLOGY, DEPTH, CORRECTNESS, USABILITY, ROBUSTNESS)
|
|
444
|
+
```
|
|
445
|
+
|
|
446
|
+
**Обнаружение разногласий:**
|
|
447
|
+
```
|
|
448
|
+
Для каждого измерения:
|
|
449
|
+
Если max(J1, J2, J3) - min(J1, J2, J3) > 3 → FLAG → эскалация на Meta-Judge
|
|
450
|
+
```
|
|
451
|
+
|
|
452
|
+
### Layer 3: Meta-Judge (Разрешение разногласий)
|
|
453
|
+
|
|
454
|
+
Meta-Judge вызывается только при обнаруженных разногласиях. Использует Opus для максимального уровня рассуждений.
|
|
455
|
+
|
|
456
|
+
**Входные данные:**
|
|
457
|
+
- Все 3 файла оценок (judge-1.md, judge-2.md, judge-3.md)
|
|
458
|
+
- Сам артефакт
|
|
459
|
+
- Рубрика оценки
|
|
460
|
+
|
|
461
|
+
**Задача Meta-Judge:**
|
|
462
|
+
1. Определить источник разногласия (неоднозначность критерия, реальный спор о качестве, или bias конкретного судьи)
|
|
463
|
+
2. Вынести примирённую оценку с явным обоснованием
|
|
464
|
+
3. Указать, чья точка зрения была наиболее валидной
|
|
465
|
+
4. Если разногласие неразрешимо — флагировать для человека
|
|
466
|
+
|
|
467
|
+
### Формат отчёта Layer 2
|
|
468
|
+
|
|
469
|
+
```
|
|
470
|
+
═══════════════════════════════════════════════════════
|
|
471
|
+
📊 BTO EVALUATION REPORT
|
|
472
|
+
Artifact: <path>
|
|
473
|
+
Type: <type>
|
|
474
|
+
Level: Layer 0 + Layer 1 + Layer 2
|
|
475
|
+
|
|
476
|
+
OVERALL SCORE: X.X / 10 [PASS / NEEDS WORK / FAIL]
|
|
477
|
+
|
|
478
|
+
Per-Dimension:
|
|
479
|
+
METHODOLOGY: X.X ██████████░░
|
|
480
|
+
DEPTH: X.X ████████░░░░
|
|
481
|
+
CORRECTNESS: X.X █████████░░░
|
|
482
|
+
USABILITY: X.X ██████████░░
|
|
483
|
+
ROBUSTNESS: X.X ███████░░░░░
|
|
484
|
+
|
|
485
|
+
Flagged: [измерения с разногласием > 3]
|
|
486
|
+
|
|
487
|
+
Top Improvements:
|
|
488
|
+
1. ...
|
|
489
|
+
2. ...
|
|
490
|
+
3. ...
|
|
491
|
+
═══════════════════════════════════════════════════════
|
|
492
|
+
```
|
|
493
|
+
|
|
494
|
+
---
|
|
495
|
+
|
|
496
|
+
## MODULE: OPTIMIZE
|
|
497
|
+
|
|
498
|
+
### Назначение
|
|
499
|
+
|
|
500
|
+
Итеративное улучшение Claude Code артефактов через эволюционный цикл: мутация → оценка → отбор → crossover → повторение.
|
|
501
|
+
|
|
502
|
+
### Теоретическая основа: адаптация EvoPrompt
|
|
503
|
+
|
|
504
|
+
BTO OPTIMIZE основан на EvoPrompt (Guo et al., 2023 — "Connecting Large Language Models with Evolutionary Algorithms"), адаптированном для структурированных документов:
|
|
505
|
+
|
|
506
|
+
| EvoPrompt (оригинал) | BTO OPTIMIZE (адаптация) |
|
|
507
|
+
|---------------------|--------------------------|
|
|
508
|
+
| Случайная инициализация популяции | 5 направленных мутаций (strategy-driven) |
|
|
509
|
+
| Обобщённые мутации | Именованные стратегии (Rephrase / Restructure / Add Constraints / Simplify / Specialize) |
|
|
510
|
+
| Случайный crossover | Crossover по силам (секционный уровень) |
|
|
511
|
+
| Метрика точности на датасете | Оценки панели судей (мульти-измерение) |
|
|
512
|
+
| Многие поколения | 3 раунда (ограниченный бюджет) |
|
|
513
|
+
|
|
514
|
+
### Предусловия для запуска OPTIMIZE
|
|
515
|
+
|
|
516
|
+
1. Артефакт должен пройти Layer 0 (запуск TEST первым)
|
|
517
|
+
2. Базовая оценка Layer 2 установлена
|
|
518
|
+
3. **Только если baseline < 8.0** — артефакты с baseline ≥ 8.0 уже высокого качества
|
|
519
|
+
|
|
520
|
+
### Протокол трёх раундов
|
|
521
|
+
|
|
522
|
+
```
|
|
523
|
+
┌──────────────────────────────────────────────────────────────────┐
|
|
524
|
+
│ ROUND 0: Baseline │
|
|
525
|
+
│ TEST (Layer 2) на текущем артефакте │
|
|
526
|
+
│ → Определить target dimensions (score < 7.0) │
|
|
527
|
+
└──────────────────────────────────┬───────────────────────────────┘
|
|
528
|
+
│
|
|
529
|
+
▼
|
|
530
|
+
┌──────────────────────────────────────────────────────────────────┐
|
|
531
|
+
│ ROUND 1: Mutation + Fast Eval │
|
|
532
|
+
│ 5 воркеров × 1 мутация → 5 вариантов │
|
|
533
|
+
│ 5 haiku агентов параллельно → быстрые оценки │
|
|
534
|
+
│ Отбор Top-2 │
|
|
535
|
+
└──────────────────────────────────┬───────────────────────────────┘
|
|
536
|
+
│ Top-2
|
|
537
|
+
▼
|
|
538
|
+
┌──────────────────────────────────────────────────────────────────┐
|
|
539
|
+
│ ROUND 2: Crossover + Fast Eval │
|
|
540
|
+
│ Top-2 → crossover → 3 новых варианта │
|
|
541
|
+
│ 3 haiku агента параллельно → быстрые оценки │
|
|
542
|
+
│ Отбор Top-2 │
|
|
543
|
+
└──────────────────────────────────┬───────────────────────────────┘
|
|
544
|
+
│ Top-2
|
|
545
|
+
▼
|
|
546
|
+
┌──────────────────────────────────────────────────────────────────┐
|
|
547
|
+
│ ROUND 3 (FINAL): Crossover + Full Panel │
|
|
548
|
+
│ Top-2 → crossover → 3 финальных варианта │
|
|
549
|
+
│ 3 варианта × Layer 2 (полная панель) ← используем sonnet! │
|
|
550
|
+
│ Выбор победителя │
|
|
551
|
+
└──────────────────────────────────────────────────────────────────┘
|
|
552
|
+
```
|
|
553
|
+
|
|
554
|
+
### Стратегии мутации
|
|
555
|
+
|
|
556
|
+
| Стратегия | Описание | Когда применять |
|
|
557
|
+
|-----------|----------|----------------|
|
|
558
|
+
| `expand-depth` | Добавить конкретные примеры, edge cases, неочевидные детали | Тонкие секции, низкий DEPTH |
|
|
559
|
+
| `compress-clarity` | Убрать избыточность, улучшить сигнал/шум, сжать язык | Многословные артефакты, низкий CLARITY |
|
|
560
|
+
| `reframe-domain` | Переформулировать контент через другую доменную линзу | Обобщённые утверждения, низкий CORRECTNESS |
|
|
561
|
+
| `add-metrics` | Заменить расплывчатые утверждения количественными | Абстрактные рекомендации без цифр |
|
|
562
|
+
| `invert-critic` | Напрямую адресовать blocking issues от Critic | Низкая оценка Critic |
|
|
563
|
+
| `fill-gaps` | Расширить отсутствующие или stub-секции | Низкая оценка Auditor |
|
|
564
|
+
| `crossover` | Объединить лучшие элементы двух вариантов | Финальный раунд, поздняя стадия |
|
|
565
|
+
|
|
566
|
+
### Маппинг стратегий на слабые измерения
|
|
567
|
+
|
|
568
|
+
| Слабое измерение | Основная стратегия | Вторичная стратегия |
|
|
569
|
+
|-----------------|-------------------|-------------------|
|
|
570
|
+
| METHODOLOGY | Restructure → reframe-domain | add-metrics |
|
|
571
|
+
| DEPTH | expand-depth | fill-gaps |
|
|
572
|
+
| CORRECTNESS | add-metrics | reframe-domain |
|
|
573
|
+
| USABILITY | compress-clarity | fill-gaps |
|
|
574
|
+
| ROBUSTNESS | expand-depth + edge cases | invert-critic |
|
|
575
|
+
|
|
576
|
+
### Архитектура воркеров мутации
|
|
577
|
+
|
|
578
|
+
**Standard Round: 3 воркера (sonnet)**
|
|
579
|
+
```
|
|
580
|
+
Worker 1: strategy="expand-depth", variants=2
|
|
581
|
+
Worker 2: strategy="add-metrics", variants=1
|
|
582
|
+
Worker 3: strategy="invert-critic", variants=2
|
|
583
|
+
```
|
|
584
|
+
|
|
585
|
+
**Crossover Round: 2 воркера**
|
|
586
|
+
```
|
|
587
|
+
Worker 1: strategy="crossover", model=opus (требует creative synthesis)
|
|
588
|
+
Worker 2: strategy="compress-clarity",model=sonnet
|
|
589
|
+
```
|
|
590
|
+
|
|
591
|
+
### Inline Layer 0 Self-Check в воркерах
|
|
592
|
+
|
|
593
|
+
Каждый воркер перед сохранением варианта выполняет inline-проверку:
|
|
594
|
+
|
|
595
|
+
```
|
|
596
|
+
- [ ] Все обязательные секции присутствуют
|
|
597
|
+
- [ ] Нет placeholder-контента: [TODO], [TBD], <INSERT>, ???
|
|
598
|
+
- [ ] Длина в допустимых пределах: MIN_TOKENS < длина < MAX_TOKENS
|
|
599
|
+
- [ ] Нет самоцитирования (вариант не ссылается сам на себя)
|
|
600
|
+
- [ ] Мутация содержательна (diff от базы > 10% контента)
|
|
601
|
+
```
|
|
602
|
+
|
|
603
|
+
Если проверка не проходит → логировать причину в mutation-log, пропустить вариант.
|
|
604
|
+
|
|
605
|
+
### Crossover Protocol
|
|
606
|
+
|
|
607
|
+
Crossover выполняется Opus агентом и использует strength-based подход:
|
|
608
|
+
- Секции, где Variant A имеет более высокий score → брать из A
|
|
609
|
+
- Секции, где Variant B имеет более высокий score → брать из B
|
|
610
|
+
- Противоречия разрешаются явно
|
|
611
|
+
|
|
612
|
+
```
|
|
613
|
+
Агент Crossover получает:
|
|
614
|
+
• Variant A (score: X) + evaluation A
|
|
615
|
+
• Variant B (score: Y) + evaluation B
|
|
616
|
+
• Инструкцию: что взять из A, что из B
|
|
617
|
+
• Инструкцию: разрешить все противоречия явно
|
|
618
|
+
• Ограничение: выдать ПОЛНЫЙ артефакт (не diff)
|
|
619
|
+
```
|
|
620
|
+
|
|
621
|
+
### Условия сходимости и аварийного останова
|
|
622
|
+
|
|
623
|
+
| Условие | Действие |
|
|
624
|
+
|---------|---------|
|
|
625
|
+
| Delta ≤ 0.5 в 3 последовательных раундах | Объявить сходимость, остановить |
|
|
626
|
+
| Regression > 1.0 от baseline | Откат к предыдущему лучшему, логирование |
|
|
627
|
+
| Любой раунд показывает общую регрессию > 0.5 | Немедленный останов |
|
|
628
|
+
| Layer 0 fail rate > 50% в одном раунде | Остановиться, требуется human review |
|
|
629
|
+
| Количество раундов > 10 | Прерывание, сдать лучший найденный |
|
|
630
|
+
| Количество haiku оценок > 50 в сессии | Предупреждение, продолжение только с одобрения |
|
|
631
|
+
| Crossover score < оба родителя | Отбросить crossover, оставить лучшего родителя |
|
|
632
|
+
|
|
633
|
+
### Стоимостная модель одного полного цикла OPTIMIZE
|
|
634
|
+
|
|
635
|
+
| Операция | Количество | Модель | Оценка токенов |
|
|
636
|
+
|---------|-----------|--------|----------------|
|
|
637
|
+
| Baseline eval | 1 | sonnet × 3 | ~15K |
|
|
638
|
+
| Variant generation (Round 1) | 5 | opus | ~25K |
|
|
639
|
+
| Round 1 fast eval | 5 | haiku | ~10K |
|
|
640
|
+
| Crossover generation (Round 2) | 3 | opus | ~15K |
|
|
641
|
+
| Round 2 fast eval | 3 | haiku | ~6K |
|
|
642
|
+
| Crossover generation (Round 3) | 3 | opus | ~15K |
|
|
643
|
+
| Round 3 full panel | 3 | sonnet × 3 | ~45K |
|
|
644
|
+
| **Итого** | | | **~131K токенов** |
|
|
645
|
+
|
|
646
|
+
---
|
|
647
|
+
|
|
648
|
+
## Agent Swarm архитектура
|
|
649
|
+
|
|
650
|
+
### Паттерны параллельного исполнения
|
|
651
|
+
|
|
652
|
+
BTO использует три паттерна параллельного исполнения агентов:
|
|
653
|
+
|
|
654
|
+
**Паттерн 1: Параллельная панель судей (Layer 2)**
|
|
655
|
+
```
|
|
656
|
+
Артефакт ──┬──→ Judge 1 (Expert, sonnet) ──┐
|
|
657
|
+
├──→ Judge 2 (Critic, sonnet) ──┼──→ Aggregator → Verdict
|
|
658
|
+
└──→ Judge 3 (Auditor, sonnet) ──┘
|
|
659
|
+
```
|
|
660
|
+
Время: ~30 сек (параллельно вместо ~90 сек последовательно)
|
|
661
|
+
|
|
662
|
+
**Паттерн 2: Параллельные воркеры мутации**
|
|
663
|
+
```
|
|
664
|
+
Base Artifact ──┬──→ Worker 1 (expand-depth) ──→ Variant 1-A, 1-B
|
|
665
|
+
├──→ Worker 2 (add-metrics) ──→ Variant 2-A
|
|
666
|
+
└──→ Worker 3 (invert-critic) ──→ Variant 3-A, 3-B
|
|
667
|
+
```
|
|
668
|
+
|
|
669
|
+
**Паттерн 3: Параллельная haiku fast-eval**
|
|
670
|
+
```
|
|
671
|
+
Variant 1-A ──→ haiku eval ──→ score-1-A.txt ┐
|
|
672
|
+
Variant 1-B ──→ haiku eval ──→ score-1-B.txt │
|
|
673
|
+
Variant 2-A ──→ haiku eval ──→ score-2-A.txt ├──→ Ranking → Top-K
|
|
674
|
+
Variant 3-A ──→ haiku eval ──→ score-3-A.txt │
|
|
675
|
+
Variant 3-B ──→ haiku eval ──→ score-3-B.txt ┘
|
|
676
|
+
```
|
|
677
|
+
|
|
678
|
+
### Модельная матрица
|
|
679
|
+
|
|
680
|
+
| Роль | Модель | Обоснование |
|
|
681
|
+
|------|--------|-------------|
|
|
682
|
+
| Layer 0 проверки | None (детерм.) | Бесплатно, мгновенно |
|
|
683
|
+
| Layer 1 Quick Judge | haiku | Дёшево, быстро, достаточно для направления |
|
|
684
|
+
| Layer 2 Domain Expert | sonnet | Domain knowledge + тонкая оценка |
|
|
685
|
+
| Layer 2 Critic | sonnet | Adversarial analysis, pattern detection |
|
|
686
|
+
| Layer 2 Completeness Auditor | sonnet | Структурная проверка |
|
|
687
|
+
| Layer 3 Meta-Judge | opus (default) | Только при разногласии, требует рассуждения |
|
|
688
|
+
| Mutation Workers | sonnet | Требует reasoning об улучшениях |
|
|
689
|
+
| Crossover Worker | opus (default) | Творческий синтез лучших элементов |
|
|
690
|
+
| Fast-Eval Agents | haiku | Объёмное ранжирование перед full panel |
|
|
691
|
+
|
|
692
|
+
### Стратегия именования агентов
|
|
693
|
+
|
|
694
|
+
Единообразная система именования для отслеживания:
|
|
695
|
+
```
|
|
696
|
+
"BTO Judge 1 — Domain Expert"
|
|
697
|
+
"BTO Judge 2 — Critic"
|
|
698
|
+
"BTO Judge 3 — Completeness Auditor"
|
|
699
|
+
"BTO Meta-Judge"
|
|
700
|
+
"BTO Optimizer — expand-depth"
|
|
701
|
+
"BTO Optimizer — invert-critic"
|
|
702
|
+
"BTO Layer 1 Fast Eval — variant-2-A"
|
|
703
|
+
"BTO Crossover"
|
|
704
|
+
```
|
|
705
|
+
|
|
706
|
+
### Anti-conformity меры
|
|
707
|
+
|
|
708
|
+
Предотвращение конформизма судей (когда все агенты сходятся к одному мнению):
|
|
709
|
+
|
|
710
|
+
1. **Role Differentiation** — у каждого судьи уникальный фокус и калибровка
|
|
711
|
+
2. **Critic Calibration** — Critic намеренно инструктирован давать средние оценки ~5-6
|
|
712
|
+
3. **Independent Evaluation** — ни один судья не видит оценки других до агрегации
|
|
713
|
+
4. **Disagreement as Signal** — высокое разногласие сигнализирует о важных измерениях качества
|
|
714
|
+
5. **Diverse Prompts** — каждый судья получает по-разному сформулированный оценочный промпт
|
|
715
|
+
|
|
716
|
+
---
|
|
717
|
+
|
|
718
|
+
## Диаграммы потоков данных
|
|
719
|
+
|
|
720
|
+
### Полный BTO пайплайн (BUILD → TEST → OPTIMIZE)
|
|
721
|
+
|
|
722
|
+
```mermaid
|
|
723
|
+
flowchart TD
|
|
724
|
+
START(["/bto [description or path]"]) --> DETECT{"Тип запроса?"}
|
|
725
|
+
|
|
726
|
+
DETECT -->|"Описание нового артефакта"| BUILD
|
|
727
|
+
DETECT -->|"Путь к существующему артефакту"| TEST_ENTRY
|
|
728
|
+
|
|
729
|
+
subgraph BUILD ["MODULE: BUILD"]
|
|
730
|
+
B1["Определить тип артефакта"]
|
|
731
|
+
B2{"Режим?"}
|
|
732
|
+
B3["QUICK: прямая генерация"]
|
|
733
|
+
B4["DEEP: загрузить explore skill\n→ кларификация требований"]
|
|
734
|
+
B5["Выбрать шаблон"]
|
|
735
|
+
B6["Генерация артефакта"]
|
|
736
|
+
B7["Self-review (Layer 0 inline)"]
|
|
737
|
+
B8{"Проверка пройдена?"}
|
|
738
|
+
B9["Исправить проблемы"]
|
|
739
|
+
B10["Сохранить артефакт"]
|
|
740
|
+
|
|
741
|
+
B1 --> B2
|
|
742
|
+
B2 -->|"чёткие требования"| B3
|
|
743
|
+
B2 -->|"нечёткие требования"| B4
|
|
744
|
+
B3 --> B5
|
|
745
|
+
B4 --> B5
|
|
746
|
+
B5 --> B6
|
|
747
|
+
B6 --> B7
|
|
748
|
+
B7 --> B8
|
|
749
|
+
B8 -->|"Нет"| B9
|
|
750
|
+
B9 --> B7
|
|
751
|
+
B8 -->|"Да"| B10
|
|
752
|
+
end
|
|
753
|
+
|
|
754
|
+
B10 --> TEST_ENTRY
|
|
755
|
+
|
|
756
|
+
subgraph TEST ["MODULE: TEST"]
|
|
757
|
+
T0["Layer 0:\nДетерминистические проверки"]
|
|
758
|
+
T0G{"≥ 80% passed?"}
|
|
759
|
+
T1["Layer 1:\nhaiku quick eval"]
|
|
760
|
+
T1G{"Average score?"}
|
|
761
|
+
T2["Layer 2:\n3 судьи параллельно"]
|
|
762
|
+
T2G{"Disagreement > 3?"}
|
|
763
|
+
T3["Layer 3:\nMeta-Judge (opus)"]
|
|
764
|
+
REPORT["Evaluation Report"]
|
|
765
|
+
|
|
766
|
+
T0 --> T0G
|
|
767
|
+
T0G -->|"FAIL"| FAIL_L0(["FAIL: вернуть отчёт\nс конкретными ошибками"])
|
|
768
|
+
T0G -->|"PASS"| T1
|
|
769
|
+
T1 --> T1G
|
|
770
|
+
T1G -->|"< 5.0 (FAIL)"| FAIL_L1(["FAIL: требует исправления"])
|
|
771
|
+
T1G -->|"≥ 5.0"| T2
|
|
772
|
+
T2 --> T2G
|
|
773
|
+
T2G -->|"Да"| T3
|
|
774
|
+
T2G -->|"Нет"| REPORT
|
|
775
|
+
T3 --> REPORT
|
|
776
|
+
end
|
|
777
|
+
|
|
778
|
+
TEST_ENTRY --> T0
|
|
779
|
+
|
|
780
|
+
REPORT --> OPT_CHECK{"Baseline < 8.0?"}
|
|
781
|
+
OPT_CHECK -->|"Нет (≥ 8.0)"| DONE(["DONE: артефакт высокого качества\nтолько minor tweaks"])
|
|
782
|
+
OPT_CHECK -->|"Да"| OPTIMIZE
|
|
783
|
+
|
|
784
|
+
subgraph OPTIMIZE ["MODULE: OPTIMIZE"]
|
|
785
|
+
O1["Определить target dimensions\n(score < 7.0)"]
|
|
786
|
+
O2["Round 1: 5 мутаций\n(воркеры параллельно)"]
|
|
787
|
+
O3["Fast eval: 5 haiku агентов\n(параллельно)"]
|
|
788
|
+
O4["Отбор Top-2"]
|
|
789
|
+
O5["Round 2: Crossover\n→ 3 варианта"]
|
|
790
|
+
O6["Fast eval: 3 haiku агентов"]
|
|
791
|
+
O7["Round 3: Crossover\n→ 3 финальных варианта"]
|
|
792
|
+
O8["Full Layer 2 eval\n(3 × 3 sonnet параллельно)"]
|
|
793
|
+
O9["Выбор победителя"]
|
|
794
|
+
O10["Отчёт: Before/After delta\n+ changelog"]
|
|
795
|
+
|
|
796
|
+
O1 --> O2
|
|
797
|
+
O2 --> O3
|
|
798
|
+
O3 --> O4
|
|
799
|
+
O4 --> O5
|
|
800
|
+
O5 --> O6
|
|
801
|
+
O6 --> O4_2["Отбор Top-2 (Round 2)"]
|
|
802
|
+
O4_2 --> O7
|
|
803
|
+
O7 --> O8
|
|
804
|
+
O8 --> O9
|
|
805
|
+
O9 --> O10
|
|
806
|
+
end
|
|
807
|
+
|
|
808
|
+
O10 --> FINAL(["CHECKPOINT: Применить изменения?"])
|
|
809
|
+
```
|
|
810
|
+
|
|
811
|
+
### Поток данных между файлами (одна оптимизация)
|
|
812
|
+
|
|
813
|
+
```mermaid
|
|
814
|
+
graph LR
|
|
815
|
+
subgraph "Входные файлы"
|
|
816
|
+
BASE["base_artifact.md"]
|
|
817
|
+
RUBRIC["rubric.md"]
|
|
818
|
+
end
|
|
819
|
+
|
|
820
|
+
subgraph "Round 1"
|
|
821
|
+
V1A["variant-1-A.md\n(expand-depth)"]
|
|
822
|
+
V1B["variant-1-B.md\n(expand-depth)"]
|
|
823
|
+
V2A["variant-2-A.md\n(add-metrics)"]
|
|
824
|
+
V3A["variant-3-A.md\n(invert-critic)"]
|
|
825
|
+
V3B["variant-3-B.md\n(invert-critic)"]
|
|
826
|
+
S1["scores/score-*.txt"]
|
|
827
|
+
RANK1["round-1-ranking.md"]
|
|
828
|
+
MLOG["mutation-log-*.md"]
|
|
829
|
+
end
|
|
830
|
+
|
|
831
|
+
subgraph "Round 2"
|
|
832
|
+
CROSS1["variant-crossover.md"]
|
|
833
|
+
V4A["variant-4-A.md"]
|
|
834
|
+
V4B["variant-4-B.md"]
|
|
835
|
+
S2["scores/round2-score-*.txt"]
|
|
836
|
+
RANK2["round-2-ranking.md"]
|
|
837
|
+
end
|
|
838
|
+
|
|
839
|
+
subgraph "Round 3 (Final)"
|
|
840
|
+
CROSS2["final-variant-A.md"]
|
|
841
|
+
CROSS3["final-variant-B.md"]
|
|
842
|
+
CROSS4["final-variant-C.md"]
|
|
843
|
+
J1["judge-1.md\nJ2/J3 × 3 variants"]
|
|
844
|
+
PANEL["panel-verdict.md\n× 3 variants"]
|
|
845
|
+
WINNER["winner.md"]
|
|
846
|
+
end
|
|
847
|
+
|
|
848
|
+
subgraph "Отчёты"
|
|
849
|
+
OPT_REPORT["optimization-report.md\nBefore/After delta"]
|
|
850
|
+
end
|
|
851
|
+
|
|
852
|
+
BASE --> V1A & V1B & V2A & V3A & V3B
|
|
853
|
+
RUBRIC --> S1
|
|
854
|
+
V1A & V1B & V2A & V3A & V3B --> S1
|
|
855
|
+
S1 --> RANK1
|
|
856
|
+
V1A & V1B & V2A & V3A & V3B --> MLOG
|
|
857
|
+
RANK1 -->|"Top-2"| CROSS1 & V4A & V4B
|
|
858
|
+
CROSS1 & V4A & V4B --> S2
|
|
859
|
+
S2 --> RANK2
|
|
860
|
+
RANK2 -->|"Top-2"| CROSS2 & CROSS3 & CROSS4
|
|
861
|
+
CROSS2 & CROSS3 & CROSS4 --> J1
|
|
862
|
+
J1 --> PANEL
|
|
863
|
+
PANEL --> WINNER
|
|
864
|
+
WINNER --> OPT_REPORT
|
|
865
|
+
```
|
|
866
|
+
|
|
867
|
+
---
|
|
868
|
+
|
|
869
|
+
## Архитектура quality gates
|
|
870
|
+
|
|
871
|
+
### Иерархия ворот
|
|
872
|
+
|
|
873
|
+
Каждый gate является необходимым условием для перехода к следующему уровню:
|
|
874
|
+
|
|
875
|
+
```mermaid
|
|
876
|
+
graph TD
|
|
877
|
+
ART["Артефакт"] --> G0{"Gate 0\nLayer 0 pass rate\n≥ 80%?"}
|
|
878
|
+
|
|
879
|
+
G0 -->|FAIL| R0["Вернуть отчёт:\nконкретные ошибки\nАвто-retry до 3 раз"]
|
|
880
|
+
G0 -->|PASS| G1{"Gate 1\nLayer 1 average\n≥ 5.0?"}
|
|
881
|
+
|
|
882
|
+
G1 -->|"< 5.0 (FAIL)"| R1["FAIL: требует серьёзных исправлений\nне идти в Layer 2"]
|
|
883
|
+
G1 -->|"5.0-6.9 (NEEDS WORK)"| L2_NW["Layer 2 для детального feedback"]
|
|
884
|
+
G1 -->|"≥ 7.0 (PASS)"| L2_PASS["Layer 2 для финальной оценки"]
|
|
885
|
+
|
|
886
|
+
L2_NW --> G2{"Gate 2\nLayer 2 overall\n≥ 7.0?"}
|
|
887
|
+
L2_PASS --> G2
|
|
888
|
+
|
|
889
|
+
G2 -->|FAIL| R2["FAIL: нужна доработка перед оптимизацией"]
|
|
890
|
+
G2 -->|"PASS, но disagreement"| G3{"Gate 3\nMeta-Judge\nresolved?"}
|
|
891
|
+
G2 -->|"PASS, без disagreement"| DELIVER["Готов к OPTIMIZE\nили к поставке"]
|
|
892
|
+
|
|
893
|
+
G3 -->|"Resolved"| DELIVER
|
|
894
|
+
G3 -->|"Unresolvable"| HUMAN["Эскалация на человека\nHuman Checkpoint ОБЯЗАТЕЛЕН"]
|
|
895
|
+
|
|
896
|
+
DELIVER --> G4{"Gate 4\nOPTIMIZE\nbaseline < 8.0?"}
|
|
897
|
+
|
|
898
|
+
G4 -->|"≥ 8.0"| DONE["Артефакт высокого качества\nтолько minor tweaks"]
|
|
899
|
+
G4 -->|"< 8.0"| OPT_START["Запустить OPTIMIZE\n3 раунда"]
|
|
900
|
+
```
|
|
901
|
+
|
|
902
|
+
### Quality Gates из bto-quality-gates.md
|
|
903
|
+
|
|
904
|
+
Правило `bto-quality-gates.md` автоматически применяется ко всем BTO операциям и определяет:
|
|
905
|
+
|
|
906
|
+
**Layer Architecture (обязательная последовательность):**
|
|
907
|
+
- Никогда не продвигать артефакт на более высокий слой при провале нижнего
|
|
908
|
+
- Layer 0 может авто-повторяться до 3 раз перед эскалацией на человека
|
|
909
|
+
|
|
910
|
+
**Обязательные Layer 0 проверки (5 универсальных):**
|
|
911
|
+
```
|
|
912
|
+
- [ ] Требуемые секции присутствуют (структурная проверка)
|
|
913
|
+
- [ ] Нет пустых placeholder-ов ([TODO], [TBD], <INSERT>)
|
|
914
|
+
- [ ] Длина в допустимых пределах (не ниже минимума, не выше максимума)
|
|
915
|
+
- [ ] Кодировка валидна (нет битого unicode, нет бинарных артефактов)
|
|
916
|
+
- [ ] Нет петель самоссылки (артефакт не цитирует себя как источник)
|
|
917
|
+
```
|
|
918
|
+
|
|
919
|
+
**Judge Panel Rules:**
|
|
920
|
+
- Нечётное количество судей: 3 (стандарт) или 5 (high-stakes)
|
|
921
|
+
- Изоляция: каждый судья читает одинаковый артефакт, пишет в отдельный файл
|
|
922
|
+
- Нет коммуникации между судьями до агрегации
|
|
923
|
+
- Финальная оценка = weighted average
|
|
924
|
+
- Порог разногласия: если max - min > 3 → Meta-Judge
|
|
925
|
+
|
|
926
|
+
**Optimization Delta Gate:**
|
|
927
|
+
- Итерация принимается ТОЛЬКО если: new_score - prev_score > 0.5
|
|
928
|
+
- Если delta ≤ 0.5 в 3 последовательных раундах → объявить сходимость
|
|
929
|
+
- Если score снижается > 1.0 → откат к предыдущему лучшему
|
|
930
|
+
|
|
931
|
+
**Human Checkpoint Rules:**
|
|
932
|
+
- НИКОГДА не авто-одобрять артефакт для поставки без human checkpoint
|
|
933
|
+
- Checkpoint обязателен после: Layer 2 оценки, финального раунда оптимизации, перед packaging
|
|
934
|
+
|
|
935
|
+
---
|
|
936
|
+
|
|
937
|
+
## Система обнаружения anti-patterns
|
|
938
|
+
|
|
939
|
+
BTO имеет двухуровневую систему обнаружения anti-patterns:
|
|
940
|
+
|
|
941
|
+
### Уровень 1: Автоматическое обнаружение (в процессе работы)
|
|
942
|
+
|
|
943
|
+
```
|
|
944
|
+
При генерации контента (BUILD):
|
|
945
|
+
→ Self-check против quality-checklist.md
|
|
946
|
+
→ При обнаружении: исправить до вывода
|
|
947
|
+
|
|
948
|
+
При оценке (TEST, Layer 2):
|
|
949
|
+
→ Judge 2 (Critic) специализируется на поиске anti-patterns
|
|
950
|
+
→ Anti-pattern cap: если обнаружен — кап критерия на уровне 5
|
|
951
|
+
|
|
952
|
+
При оптимизации (OPTIMIZE):
|
|
953
|
+
→ Воркер invert-critic специально адресует blocking issues от Critic
|
|
954
|
+
→ Layer 0 self-check в каждом воркере
|
|
955
|
+
```
|
|
956
|
+
|
|
957
|
+
### Уровень 2: Таблица BTO-специфичных anti-patterns
|
|
958
|
+
|
|
959
|
+
| Anti-Pattern | Сигнал обнаружения | Обязательное исправление |
|
|
960
|
+
|-------------|--------------------|-----------------------|
|
|
961
|
+
| Score inflation | Все судьи дают > 8.5 с первой попытки | Добавить calibration prompt к Critic |
|
|
962
|
+
| Overfitting to rubric | Артефакт оптимизирует формулировки буквально под рубрику | Blind evaluation: скрыть рубрику от генератора |
|
|
963
|
+
| Conformity collapse | Судьи сходятся к идентичным оценкам после 1 раунда | Enforced isolation, рандомизировать порядок судей |
|
|
964
|
+
| Runaway optimization | > 10 итераций без сходимости | Прерывание, логирование, human review |
|
|
965
|
+
| Phantom improvement | Delta > 0.5, но содержательных изменений нет | Diff-check контента, не только score |
|
|
966
|
+
| Judge-generator collusion | Одна модель для генерации И для оценки | BLOCK — генератор и судьи должны использовать разные модели |
|
|
967
|
+
| Missing rejection log | Отклонённые артефакты молча выброшены | Каждый отказ ДОЛЖЕН быть залогирован с причиной |
|
|
968
|
+
|
|
969
|
+
---
|
|
970
|
+
|
|
971
|
+
## Интеграция с Keysarium
|
|
972
|
+
|
|
973
|
+
BTO разработан как standalone-система, но имеет готовые точки интеграции с `@dzhechko/keysarium`:
|
|
974
|
+
|
|
975
|
+
### Точки применения в Keysarium пайплайне
|
|
976
|
+
|
|
977
|
+
| Фаза Keysarium | BTO применение |
|
|
978
|
+
|---------------|----------------|
|
|
979
|
+
| Создание нового скилла | `/bto-build "describe skill"` |
|
|
980
|
+
| Улучшение существующего скилла | `/bto-optimize .claude/skills/<name>/SKILL.md` |
|
|
981
|
+
| После Phase 0 | `/bto-test researches/<slug>/00_product_discovery.md` |
|
|
982
|
+
| После Phase 2 | `/bto-test researches/<slug>/02_research_findings.md` |
|
|
983
|
+
| После Phase 5 | `/bto-test researches/<slug>/05_presentation_content.md` |
|
|
984
|
+
|
|
985
|
+
### Автономная установка
|
|
986
|
+
|
|
987
|
+
```bash
|
|
988
|
+
npx dz-skills-bto init # Установить BTO в любой проект
|
|
989
|
+
npx dz-skills-bto doctor # Проверить здоровье установки
|
|
990
|
+
```
|
|
991
|
+
|
|
992
|
+
`init` устанавливает:
|
|
993
|
+
```
|
|
994
|
+
.claude/skills/bto/ ← Основной скилл
|
|
995
|
+
.claude/agents/bto-*.md ← Шаблоны агентов
|
|
996
|
+
.claude/commands/bto*.md ← Slash-команды
|
|
997
|
+
.claude/rules/bto-quality-gates.md ← Quality gates (автоматически)
|
|
998
|
+
```
|
|
999
|
+
|
|
1000
|
+
### Отличия поведения BTO в контексте Keysarium
|
|
1001
|
+
|
|
1002
|
+
Когда BTO работает внутри Keysarium проекта, автоматически применяются:
|
|
1003
|
+
- Checkpoint протокол (`checkpoint-protocol.md`) — баннер после каждого завершения
|
|
1004
|
+
- Doменные правила (`domain-specific.md`) — если оцениваются research артефакты
|
|
1005
|
+
- Agent Swarm правила (`agent-swarm.md`) — именование агентов, cost optimization
|
|
1006
|
+
|
|
1007
|
+
---
|
|
1008
|
+
|
|
1009
|
+
## Расширяемость системы
|
|
1010
|
+
|
|
1011
|
+
### Кастомные рубрики
|
|
1012
|
+
|
|
1013
|
+
Для оценки нестандартных артефактов создайте кастомный файл рубрики:
|
|
1014
|
+
|
|
1015
|
+
```markdown
|
|
1016
|
+
# Custom Rubric: [Artifact Type]
|
|
1017
|
+
|
|
1018
|
+
## Evaluation Dimensions (1-10 each)
|
|
1019
|
+
|
|
1020
|
+
| Dimension | Description | Weight |
|
|
1021
|
+
|-----------|-------------|--------|
|
|
1022
|
+
| [DIM_1] | ... | 0.X |
|
|
1023
|
+
| [DIM_2] | ... | 0.X |
|
|
1024
|
+
...
|
|
1025
|
+
|
|
1026
|
+
## Pass Threshold
|
|
1027
|
+
Overall ≥ [X.X]
|
|
1028
|
+
|
|
1029
|
+
## Anti-Patterns for This Type
|
|
1030
|
+
...
|
|
1031
|
+
```
|
|
1032
|
+
|
|
1033
|
+
Передать в BTO команду через: `/bto-test [path] rubric=[custom-rubric-path]`
|
|
1034
|
+
|
|
1035
|
+
### Кастомные судьи
|
|
1036
|
+
|
|
1037
|
+
Для специализированных оценок можно добавить кастомных судей в панель. Шаблон на основе `bto-judge-panel.md`:
|
|
1038
|
+
|
|
1039
|
+
```markdown
|
|
1040
|
+
# Agent Template: BTO Judge — [Custom Role]
|
|
1041
|
+
|
|
1042
|
+
## Purpose
|
|
1043
|
+
[Специализация]
|
|
1044
|
+
|
|
1045
|
+
## Calibration
|
|
1046
|
+
[Инструкция по калибровке: строгий/либеральный/нейтральный]
|
|
1047
|
+
|
|
1048
|
+
## Evaluation Criteria
|
|
1049
|
+
[3 критерия с весами]
|
|
1050
|
+
|
|
1051
|
+
## Weight in Panel
|
|
1052
|
+
[0.X — должна соответствовать сумме 1.0 по всем судьям]
|
|
1053
|
+
```
|
|
1054
|
+
|
|
1055
|
+
Нечётное количество судей обязательно: 3 (стандарт), 5 (high-stakes).
|
|
1056
|
+
|
|
1057
|
+
### Кастомные стратегии мутации
|
|
1058
|
+
|
|
1059
|
+
Добавить в `bto-optimizer-worker.md` в таблицу Mutation Strategies:
|
|
1060
|
+
|
|
1061
|
+
```markdown
|
|
1062
|
+
| `your-strategy` | Описание что делает | Когда применять |
|
|
1063
|
+
```
|
|
1064
|
+
|
|
1065
|
+
Затем написать текстовое описание стратегии для варианта generation prompt. Воркеры подберут новую стратегию автоматически.
|
|
1066
|
+
|
|
1067
|
+
### Кастомные Layer 0 проверки
|
|
1068
|
+
|
|
1069
|
+
Добавить новый тип артефакта в `modules/test.md` и `references/quality-checklist.md`:
|
|
1070
|
+
|
|
1071
|
+
```
|
|
1072
|
+
### Your Artifact Type Checks
|
|
1073
|
+
|
|
1074
|
+
CHECK-X1: [Проверка 1]
|
|
1075
|
+
CHECK-X2: [Проверка 2]
|
|
1076
|
+
...
|
|
1077
|
+
```
|
|
1078
|
+
|
|
1079
|
+
Добавить обнаружение типа в таблицу Type Detection в `modules/test.md`.
|
|
1080
|
+
|
|
1081
|
+
---
|
|
1082
|
+
|
|
1083
|
+
## Проектные решения и компромиссы
|
|
1084
|
+
|
|
1085
|
+
### Почему эволюционный подход, а не gradient descent?
|
|
1086
|
+
|
|
1087
|
+
Claude Code артефакты — структурированные документы с чёткими секциями. Мутации на уровне секций более осмыслены, чем токен-уровневые правки. Diversity в популяции предотвращает схождение к единственному стилю.
|
|
1088
|
+
|
|
1089
|
+
Альтернативы рассматривались:
|
|
1090
|
+
- **TextGrad**: хорошо для одиночных промптов, но не для multi-section документов
|
|
1091
|
+
- **DSPy**: требует Python framework, не работает в Claude Code context
|
|
1092
|
+
- **OPRO**: может застрять в локальных оптимумах, дорого
|
|
1093
|
+
|
|
1094
|
+
### Почему именно 3 раунда?
|
|
1095
|
+
|
|
1096
|
+
Эмпирически: убывающая отдача после Round 3. Стоимостная модель: 15 оценок практически достижимы. Layer 2 на финальном раунде гарантирует качество отбора.
|
|
1097
|
+
|
|
1098
|
+
### Почему haiku для Layer 1 и sonnet для Layer 2?
|
|
1099
|
+
|
|
1100
|
+
Layer 1 нужна только грубая направленная оценка (направление улучшения). Haiku достаточно для этой задачи и в ~10x дешевле. Layer 2 требует глубокого reasoning о methodology и domain fit — здесь sonnet оправдан.
|
|
1101
|
+
|
|
1102
|
+
### Почему Critic имеет вес 0.3, а не 0.4?
|
|
1103
|
+
|
|
1104
|
+
Если Critic получает максимальный вес, артефакты оптимизируются быть "неуязвимыми к критике", а не "высококачественными". Expert с весом 0.4 гарантирует, что позитивная domain-обоснованность имеет большее значение.
|
|
1105
|
+
|
|
1106
|
+
### Почему Meta-Judge не автоматически разрешает ВСЕ разногласия?
|
|
1107
|
+
|
|
1108
|
+
Высокое разногласие само по себе является сигналом о неоднозначности качества артефакта. Некоторые разногласия не разрешимы без человеческого суждения о контексте применения. Принудительное разрешение Opus-ом скрыло бы эту информацию.
|
|
1109
|
+
|
|
1110
|
+
### Почему Crossover использует Opus, а мутации — sonnet?
|
|
1111
|
+
|
|
1112
|
+
Crossover требует синтеза: найти лучшие части двух разных вариантов, совместить их когерентно и разрешить противоречия. Это творческая задача высшего уровня. Мутации следуют чёткой именованной стратегии и требуют только reasoning — sonnet достаточно.
|