feat: studio.translate.ollama v0.1.0 — Ollama-backed translate hook
First plugin to exercise the Studio-plugin translate hook end-to-end. Routes through an Ollama-shaped /api/chat endpoint configured via OLLAMA_ENDPOINT (default http://localhost:11434/api/chat). System prompt constrains the model to ONLY the translation — no commentary, no markdown frames — so the translate hook contract (plain string in, plain string out) stays honest. Declared permissions: net: localhost + net: 127.0.0.1 + net: ollama. Operator policy extends the ceiling for remote / cloud LLM endpoints. v0.1 limits: no glossary, no batching, no caching. Same SDK v0.1 single-world contract — declares Declined stubs for the theme and output-view hooks. Built artefact: ~108 KiB stripped wasm. Uploaded to releases.fai.flemming.ai (sha256 0101ed6e…) and reachable via `fai install studio.translate.ollama`. Signed-off-by: flemming-it <sf@flemming.it>
This commit is contained in:
commit
884e275b0e
8 changed files with 976 additions and 0 deletions
72
MODULE.de.md
Normal file
72
MODULE.de.md
Normal file
|
|
@ -0,0 +1,72 @@
|
|||
# studio.translate.ollama
|
||||
|
||||
Translate-Hook-Plugin für F∆I Studio. Routet `translate`-
|
||||
Aufrufe durch einen konfigurierten Ollama-`/api/chat`-Endpunkt
|
||||
— so wird Server-gelieferter englischer Text (MCP-Tool-
|
||||
Beschreibungen, n8n-Endpunkt-Namen, `[EN]`-gebadgete Strings)
|
||||
in die aktive Studio-Sprache übersetzt, just-in-time.
|
||||
|
||||
## Capability
|
||||
|
||||
- `studio.translate.ollama@0.1.0`
|
||||
|
||||
## Implementierter Hook
|
||||
|
||||
- `translate(text, from_locale, to_locale) -> string`
|
||||
|
||||
Die anderen beiden Studio-Plugin-Hooks (`theme`, `output-view`)
|
||||
liefern `PluginError::Declined` — dieses Plugin übersetzt nur.
|
||||
|
||||
## Konfiguration
|
||||
|
||||
Liest zwei Umgebungsvariablen, die der Operator dem Plugin
|
||||
über die `env:`-Berechtigung verfügbar macht:
|
||||
|
||||
| Variable | Default |
|
||||
| ----------------- | ------------------------------------ |
|
||||
| `OLLAMA_ENDPOINT` | `http://localhost:11434/api/chat` |
|
||||
| `OLLAMA_MODEL` | `qwen2.5:14b` |
|
||||
|
||||
Für andere Endpunkte (z.B. remote Inferenz-Node):
|
||||
`OLLAMA_ENDPOINT` vor `fai serve` setzen und den Host in den
|
||||
`net:`-Berechtigungen unten ergänzen.
|
||||
|
||||
## Berechtigungen
|
||||
|
||||
```yaml
|
||||
permissions:
|
||||
- "net: localhost"
|
||||
- "net: 127.0.0.1"
|
||||
- "net: ollama"
|
||||
```
|
||||
|
||||
Operator:innen mit nicht-Loopback-Endpunkt erweitern ihre
|
||||
Operator-Policy-Ceiling um den Upstream-Host.
|
||||
|
||||
## Wie der System-Prompt arbeitet
|
||||
|
||||
Das Plugin sendet zwei Nachrichten an das Modell: einen festen
|
||||
System-Prompt, der die Ausgabe auf NUR die Übersetzung
|
||||
einschränkt (keine Anführungszeichen, kein Kommentar, keine
|
||||
Erklärung), und eine User-Message mit dem Quelltext. Der
|
||||
Sprach-Hinweis steht im System-Prompt — das Modell behandelt
|
||||
ihn als Anweisung, nicht als zu übersetzenden Inhalt.
|
||||
|
||||
So bleibt der Translate-Hook-Vertrag ehrlich: der Caller
|
||||
erwartet einen reinen String zurück, keine markdown-umrahmte
|
||||
LLM-Antwort.
|
||||
|
||||
## Grenzen in v0.1.0
|
||||
|
||||
- Kein Glossar / keine Terminologie-Liste — das Modell stützt
|
||||
sich auf sein Allgemeinwissen.
|
||||
- Kein Batching. Jeder Aufruf ist ein HTTP-Request.
|
||||
- Kein Caching. Studios Plugin-Host könnte in einer späteren
|
||||
Iteration einen pro-Aufruf-Cache ergänzen.
|
||||
|
||||
## Build
|
||||
|
||||
```bash
|
||||
cargo build --release --target wasm32-wasip2
|
||||
# Ausgabe: target/wasm32-wasip2/release/studio_translate_ollama.wasm
|
||||
```
|
||||
Loading…
Add table
Add a link
Reference in a new issue