synops-agent: motivasjon (erstatter claude -p) + lib/CLI/API-arkitektur

Dokumentert hvorfor Claude Code ikke egner seg som tjeneste (treg
oppstart, høyt minne, ingen API, låst til Anthropic). synops-agent
som tre bruksmåter: lib (embed i maskinrommet), CLI (erstatter
Claude Code), API (HTTP-endepunkt for appen). Konkret brukstabell
for chat, orkestrering, bakgrunnsjobber og bruker-chat.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
vegard 2026-03-19 07:41:26 +00:00
parent 311a73b940
commit 2605f6de25

View file

@ -10,6 +10,40 @@ Claude Code brukes til å *utvikle og teste* synops-agent. Målet er
at synops-agent kan ta over hele arbeidsflyten: interaktiv utvikling,
autonome oppgaver, daemon-drift. Med hvilken som helst modell.
### Hvorfor ikke Claude Code som tjeneste?
Vi har vurdert å bruke Claude Code direkte for AI-tjenester i Synops
(chat-svar, orkestrering, bakgrunnsjobber). Det er ikke egnet:
- **Lang instansieringstid** — sekunder til oppstart per invokasjon
- **Høy minnebruk** — hundrevis av MB per instans, skalerer ikke
- **Ingen API** — kun terminal-grensesnitt, ikke programmerbart
- **Låst til Anthropic** — kan ikke bruke billigere/raskere modeller
- **Ikke designet for embedding** — ment som interaktivt utviklerverktøy
synops-agent løser alle disse:
- **Rask oppstart** — Rust binary, millisekunder
- **Lavt minnebruk** — Rust, ingen runtime overhead
- **API og CLI** — lib (embed i maskinrommet) + CLI (standalone)
- **Modell-agnostisk** — velg riktig modell per oppgave
- **Designet for embedding** — kan kjøre som HTTP-endepunkt,
jobbkø-worker, eller daemon
### Bruksområder i Synops
synops-agent erstatter dagens `claude -p` invokasjon i maskinrommet
og åpner for nye muligheter:
| Bruk | I dag | Med synops-agent |
|------|-------|------------------|
| Chat-svar (@bot) | `claude -p` (tregt, dyrt) | Inline, rask, valgfri modell |
| Orkestrering | Shell-scripts + `claude -p` | Native agent-loop |
| Transkripsjons-oppsummering | `synops-summarize` → LiteLLM | Agent med kontekst |
| Kode-generering | Claude Code (manuelt) | Autonom med tasklist |
| Bakgrunnsjobber | Jobbkø → CLI-verktøy | Agent som jobbkø-worker |
| Bruker-chat i appen | Ikke mulig (for tregt) | Sub-sekund responstid |
## Hva Claude Code gjør bra (og vi beholder)
- Tool-loop (prompt → tool_calls → execute → loop)
@ -130,18 +164,25 @@ Agenten er en førsteklasses borger i Synops:
## Arkitektur
```
synops-agent
├── core/ — agent-loop, tool dispatch, kontekst
├── providers/ — API-adaptere (anthropic, openai, gemini, ollama)
├── tools/ — verktøy-implementasjoner
├── tasklist/ — parser og kjører markdown-checklister
├── daemon/ — bakgrunnsprosess, filovervåking, intervall
├── recovery/ — checkpoint, gjenoppretting, kontekstkomprimering
└── synops/ — grafintegrasjon via synops-common
synops-agent (workspace crate)
├── synops-agent-core/ — lib: agent-loop, tool dispatch, kontekst
│ ├── providers/ — API-adaptere (anthropic, openai, gemini, ollama)
│ ├── tools/ — verktøy-implementasjoner
│ ├── context/ — kontekstvindu, ACC, oppsummering
│ ├── tasklist/ — parser og kjører markdown-checklister
│ └── budget/ — token-regnskap, kostnadsovervåking
├── synops-agent-cli/ — CLI-binary: interaktiv + batch + daemon
└── synops-agent-api/ — HTTP-server: embed i maskinrommet eller standalone
```
Bygget som lib + CLI. Lib kan embeddes i maskinrommet for
tettere integrasjon uten prosess-overhead.
Tre bruksmåter:
1. **Lib** (`synops-agent-core`) — embed direkte i maskinrommet.
Ingen prosess-overhead. Chat-svar på millisekunder.
2. **CLI** (`synops-agent`) — interaktiv terminal, tasklist-runner,
daemon-modus. Erstatter Claude Code for utvikling.
3. **API** (`synops-agent-api`) — HTTP-endepunkt for appen.
Maskinrommet kaller det i stedet for `claude -p`.
Kan også kjøres standalone som mikrotjeneste.
## API-abstraksjon