Orkestrering: menneskelig scriptspråk med kompilator til CLI-kall
To lag av samme script:
- Menneskelig: "transkriber lydfilen (stor modell)"
- Teknisk: "synops-transcribe --cas-hash {event.cas_hash} --model large"
Kompilator matcher verb mot cli_tool-aliases, argumenter mot
args_hints, variabler fra trigger-kontekst. Rust-stil feilmeldinger.
Tre visninger i editoren (Enkel/Teknisk/Kompilert).
Oppgaver restrukturert: kompilator, alias-metadata, executor,
UI med tre visninger, AI-assistert oppretting, kaskade, seed.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
parent
42a45cd613
commit
b759808831
2 changed files with 106 additions and 14 deletions
|
|
@ -47,12 +47,32 @@ metadata: {
|
||||||
|
|
||||||
⚡ signaliserer: "denne noden gjør noe av seg selv."
|
⚡ signaliserer: "denne noden gjør noe av seg selv."
|
||||||
|
|
||||||
## 4. Tre utførelsesnivåer
|
## 4. To lag: menneskelig språk og teknisk script
|
||||||
|
|
||||||
### Nivå 1: Deklarativt script (ingen AI)
|
Orkestreringer har to representasjoner av samme oppskrift —
|
||||||
|
et menneskelig lesbart språk som kompileres til tekniske
|
||||||
|
CLI-kall. Brukeren skriver og leser det ene, vaktmesteren
|
||||||
|
kjører det andre.
|
||||||
|
|
||||||
Eksakte CLI-kall med variabler fra trigger-konteksten.
|
### Menneskelig lag (bruker skriver)
|
||||||
Vaktmesteren parser og eksekverer direkte — ingen LLM.
|
|
||||||
|
```
|
||||||
|
NÅR innspilling avsluttet
|
||||||
|
HVIS samling har podcast
|
||||||
|
|
||||||
|
1. transkriber lydfilen (stor modell)
|
||||||
|
ved feil: transkriber lydfilen (medium modell)
|
||||||
|
2. oppsummer samtalen
|
||||||
|
3. oppdater rss-feed
|
||||||
|
|
||||||
|
ved feil: opprett oppgave "Pipeline feilet" (bug)
|
||||||
|
```
|
||||||
|
|
||||||
|
Ingen `--cas-hash`, ingen `{event.*}`, ingen CLI-syntax.
|
||||||
|
Norske verb som matcher verktøy. Argumenter i parenteser.
|
||||||
|
Lesbart for alle.
|
||||||
|
|
||||||
|
### Teknisk lag (vaktmesteren kjører)
|
||||||
|
|
||||||
```
|
```
|
||||||
NÅR innspilling.avsluttet
|
NÅR innspilling.avsluttet
|
||||||
|
|
@ -66,7 +86,79 @@ HVIS samling.har_trait("podcast")
|
||||||
VED_FEIL: work_item "Podcast-pipeline feilet" --tag bug
|
VED_FEIL: work_item "Podcast-pipeline feilet" --tag bug
|
||||||
```
|
```
|
||||||
|
|
||||||
**Grammatikk:**
|
Generert automatisk fra det menneskelige laget via kompilatoren.
|
||||||
|
Deterministisk, gratis, raskt.
|
||||||
|
|
||||||
|
### Kompilatoren
|
||||||
|
|
||||||
|
Vaktmesteren kompilerer menneskelig → teknisk ved lagring.
|
||||||
|
Matchingen bruker `cli_tool`-noders metadata:
|
||||||
|
|
||||||
|
```jsonc
|
||||||
|
{
|
||||||
|
"binary": "synops-transcribe",
|
||||||
|
"aliases": ["transkriber", "transkribering"],
|
||||||
|
"description": "Whisper-transkribering av lydfil",
|
||||||
|
"args_hints": {
|
||||||
|
"lydfilen": "{event.cas_hash}",
|
||||||
|
"stor modell": "--model large",
|
||||||
|
"medium modell": "--model medium"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
"transkriber lydfilen (stor modell)" matcher:
|
||||||
|
- "transkriber" → alias for synops-transcribe
|
||||||
|
- "lydfilen" → {event.cas_hash} (fra trigger-kontekst)
|
||||||
|
- "(stor modell)" → --model large
|
||||||
|
|
||||||
|
### Kompileringsfeil (Rust-stil)
|
||||||
|
|
||||||
|
Ved feil får brukeren presise, hjelpsomme meldinger:
|
||||||
|
|
||||||
|
```
|
||||||
|
┌─ Kompilering ────────────────────────────────┐
|
||||||
|
│ │
|
||||||
|
│ ✓ Linje 1: transkriber lydfilen (stor) │
|
||||||
|
│ → synops-transcribe --model large │
|
||||||
|
│ │
|
||||||
|
│ ✗ Linje 2: send epost til deltakerne │
|
||||||
|
│ Feil: "send epost" matcher ingen verktøy │
|
||||||
|
│ Mente du: "varsle deltakerne"? │
|
||||||
|
│ Tilgjengelig: varsle, oppsummer, publiser │
|
||||||
|
│ │
|
||||||
|
│ ✓ Linje 3: oppdater rss-feed │
|
||||||
|
│ → synops-rss │
|
||||||
|
│ │
|
||||||
|
│ 1 feil. Rett opp og prøv igjen. │
|
||||||
|
└──────────────────────────────────────────────┘
|
||||||
|
```
|
||||||
|
|
||||||
|
### Tre visninger i editoren
|
||||||
|
|
||||||
|
```
|
||||||
|
[Enkel] [Teknisk] [Kompilert]
|
||||||
|
```
|
||||||
|
|
||||||
|
| Visning | Hva | Hvem |
|
||||||
|
|---------|-----|------|
|
||||||
|
| **Enkel** | Norsk, lesbart | Brukeren skriver her |
|
||||||
|
| **Teknisk** | CLI-kall med variabler | For de som vil se |
|
||||||
|
| **Kompilert** | JSON/intern | Skjult som default |
|
||||||
|
|
||||||
|
Tabbar i editoren — som raw/rendered i tekst-editoren.
|
||||||
|
Kompileringsfeil vises i sanntid mens brukeren skriver.
|
||||||
|
|
||||||
|
### Grammatikk (menneskelig lag)
|
||||||
|
|
||||||
|
```
|
||||||
|
TRIGGER NÅR <event i naturlig språk>
|
||||||
|
HVIS <betingelse i naturlig språk>
|
||||||
|
STEP <N>. <verb> <objekt> [(<argument>)]
|
||||||
|
FALLBACK ved feil: <verb> <objekt> | opprett oppgave <tittel> [(<tag>)]
|
||||||
|
```
|
||||||
|
|
||||||
|
### Grammatikk (teknisk lag)
|
||||||
|
|
||||||
```
|
```
|
||||||
TRIGGER NÅR <event> [HVIS <betingelse>]
|
TRIGGER NÅR <event> [HVIS <betingelse>]
|
||||||
|
|
@ -75,9 +167,8 @@ FALLBACK VED_FEIL: <tool> <args...> | work_item <title> [--tag <tag>]
|
||||||
VARIABLE {event.<felt>} — substitueres fra trigger-konteksten
|
VARIABLE {event.<felt>} — substitueres fra trigger-konteksten
|
||||||
```
|
```
|
||||||
|
|
||||||
Enkelt nok til å parse med en liten Rust-parser i vaktmesteren.
|
**De fleste produksjonsorkestreringer skrives og vedlikeholdes
|
||||||
Deterministisk, gratis, raskt. **De fleste produksjons-
|
i det menneskelige laget.** Det tekniske laget er generert.
|
||||||
orkestreringer vil være på dette nivået.**
|
|
||||||
|
|
||||||
### Nivå 2: AI-assistert oppretting
|
### Nivå 2: AI-assistert oppretting
|
||||||
|
|
||||||
|
|
|
||||||
13
tasks.md
13
tasks.md
|
|
@ -319,12 +319,13 @@ automatisk eskalering av intelligens ved feil, kompilering av velprøvde mønstr
|
||||||
- [x] 24.1 Orchestration node-type: legg til `orchestration` i maskinrommets node-validering. Metadata-skjema: `trigger` (event + conditions), `executor`, `intelligence`, `effort`, `compiled`, `pipeline`. Valider trigger-events mot kjent liste.
|
- [x] 24.1 Orchestration node-type: legg til `orchestration` i maskinrommets node-validering. Metadata-skjema: `trigger` (event + conditions), `executor`, `intelligence`, `effort`, `compiled`, `pipeline`. Valider trigger-events mot kjent liste.
|
||||||
- [~] 24.2 Trigger-evaluering i portvokteren: ved node/edge-events, sjekk om noen `orchestration`-noder matcher triggeren. Effektiv lookup (indeksert på `metadata.trigger.event`). Ingen LLM-kall for trigger-matching.
|
- [~] 24.2 Trigger-evaluering i portvokteren: ved node/edge-events, sjekk om noen `orchestration`-noder matcher triggeren. Effektiv lookup (indeksert på `metadata.trigger.event`). Ingen LLM-kall for trigger-matching.
|
||||||
> Påbegynt: 2026-03-18T16:46
|
> Påbegynt: 2026-03-18T16:46
|
||||||
- [ ] 24.3 Bot-utførelse: utvid `synops-respond` (eller nytt `synops-orchestrate`) til å ta orchestration-node som input. Bygg prompt med trigger-kontekst + instruksjoner + tilgjengelige verktøy. Function calling for hvert steg. Logg i `orchestration_log`.
|
- [ ] 24.3 Script-kompilator: parser menneskelig scriptspråk ("transkriber lydfilen (stor modell)") og kompilerer til tekniske CLI-kall. Matcher verb mot `cli_tool`-noders `aliases`, argumenter mot `args_hints`, variabler fra trigger-kontekst. Rust-stil kompileringsfeil med forslag.
|
||||||
- [ ] 24.4 Auto-eskalering: start med lavt intelligens/effort-nivå. Ved feil (tool_error, ambiguous_instruction) bump automatisk til neste nivå og retry. Maks 3 nivåer.
|
- [ ] 24.4 cli_tool alias-metadata: utvid alle `cli_tool`-noder med `aliases` (norske verb) og `args_hints` (menneskelige argumenter → CLI-flagg). Seed for alle eksisterende verktøy.
|
||||||
- [ ] 24.5 Orchestration UI: editor for orkestreringsnoder i frontend. Trigger-velger (dropdown), betingelser, tekstbokser per steg, "Test kjøring"-knapp (dry-run), kjørehistorikk med status.
|
- [ ] 24.5 Script-executor: vaktmesteren parser kompilert script og eksekverer steg sekvensielt via generisk dispatch. VED_FEIL-håndtering. Logger i `orchestration_log`.
|
||||||
- [ ] 24.6 Kaskade: `triggers`-edge mellom orkestreringer. Output fra én trigrer neste. Syklusdeteksjon for å unngå uendelige loops.
|
- [ ] 24.6 Orchestration UI: editor med tre visninger (Enkel/Teknisk/Kompilert) som tabber. Sanntids kompileringsfeil. Trigger-velger, "Test kjøring"-knapp, kjørehistorikk. Ref: `docs/concepts/orkestrering.md`.
|
||||||
- [ ] 24.7 Kompilering: observer hvilke verktøy/sekvenser som gjentas. Foreslå kompilering etter N kjøringer. Kompilert pipeline med `fallback: "bot"`. Ingen LLM for standardsteg.
|
- [ ] 24.7 AI-assistert oppretting: `synops-ai` med auto-generert systemprompt (fra cli_tool-noder) foreslår script fra fritekst-beskrivelse. Vaktmesteren validerer. Eventually-modus: lagre som work_item for Claude Code.
|
||||||
- [ ] 24.8 Seed-orkestreringer: opprett standard-orkestreringer for podcast-pipeline, publiseringsflyt, og AI-beriking basert på eksisterende hardkodet logikk i portvokteren.
|
- [ ] 24.8 Kaskade: `triggers`-edge mellom orkestreringer. Output fra én trigger neste. Syklusdeteksjon for å unngå uendelige loops.
|
||||||
|
- [ ] 24.9 Seed-orkestreringer: opprett standard-orkestreringer for podcast-pipeline, publiseringsflyt, og AI-beriking basert på eksisterende hardkodet logikk i vaktmesteren. Skrives i menneskelig scriptspråk.
|
||||||
|
|
||||||
## Fase 25: Web Clipper — `synops-clip`
|
## Fase 25: Web Clipper — `synops-clip`
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue