Add Mixture-of-Agents (MoA) mode on top of Fusion

Extend the panel engine with a layer loop: Fusion is one proposer round,
MoA runs N rounds where each round after the first sees the previous
round's responses via <previous_layer_responses> and refines its answer.
Only the final round is persisted; intermediate rounds are live-only.
Rounds are clamped to 1-5.

- SessionRecord + migration: moa_layers column (default 2)
- RunPanel: layer loop with per-member cloned message injection
- CloneForMember / BuildPreviousLayerBlock helpers for member isolation
- SSE: panel_layer_start / panel_layer_done events
- Frontend: layer_index composite keying, round dividers, MoA option
- Docs: ARCHITECTURE + ARCHITECTURE_QUICK updated

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
MelekiandClaude Opus 4.8 committed 2026-06-18 13:46:28 +02:00
1 parent f21ed9ff9f
commit b7ff928340
15 files changed
+239 -65

No files matched your search

+28
View File
@@ -1227,6 +1227,34 @@
border-color: var(--accent, #9b6dff);
}
/* MoA: Trenner zwischen Proposer-Runden */
.panel-layer-divider {
display: flex;
align-items: center;
gap: .6em;
margin: 1.1em 0 .5em;
color: var(--accent, #9b6dff);
font-size: .82em;
font-weight: 600;
text-transform: uppercase;
letter-spacing: .04em;
opacity: .85;
}
.panel-layer-divider::before,
.panel-layer-divider::after {
content: "";
flex: 1;
height: 1px;
background: var(--accent, #9b6dff);
opacity: .35;
}
.panel-layer-divider span {
display: inline-flex;
align-items: center;
gap: .4em;
white-space: nowrap;
}
.review-inline-feedback {
color: var(--warning);
margin-bottom: .4em;