Zum Hauptinhalt springen

CLI und Konfigurationsbereitstellung

Die veröffentlichten CLI/Config-Artefakte der Version 0.3.1 implementieren den Konfigurations-/Backend-Vertrag 0.3.0 und lehnen unbekannte Schlüssel lokal und im Backend gleichermaßen ab.

Die CLI erstellt, validiert und stellt unveränderliche ChattyBox-Konfigurationsversionen bereit, befördert sie und führt Rollbacks durch. Deployment-Tokens sind auf ein Projekt und ausgewählte Umgebungen beschränkt, sodass sich derselbe Workflow für die lokale Entwicklung und CI eignet.

Veröffentlichungs- und Laufzeitstatus

Im öffentlichen Registry sind @openstaticfish/chattybox-cli@0.3.1, @openstaticfish/chattybox-config@0.3.1 und das separate JavaScript-SDK @openstaticfish/chattybox@0.1.4 veröffentlicht. Die CLI/config-Artefakte unterstützen die erweiterten Felder (Projekt, Ermittlung/Planung, erweiterte Locale-Steuerung, widget.icon, widget.showBranding) zusammen mit dem Backend-Vertrag 0.3.0. status zeigt die Umgebungsversion, während runtimeConfigVersionId die zuletzt auf die gemeinsame Runtime angewandte Konfiguration benennt und abweichen kann. Ohne mode wird crawl gewählt und ein explizites maxDepth: 0 erhalten. Die ESM-CLI verlangt Node 20+; wählen Sie Bun bei Bedarf ausdrücklich mit bunx --bun.

Konfiguration erstellen

bunx @openstaticfish/chattybox-cli init

Dadurch wird chattybox.config.json erstellt:

{
"schemaVersion": "1",
"assistant": {
"name": "Support"
},
"knowledge": {
"sources": [
{
"type": "website",
"url": "https://example.com"
}
]
},
"widget": {
"enabled": true
}
}

Verwenden Sie einen benutzerdefinierten Pfad, wenn die Konfiguration in ein Unterverzeichnis gehört:

bunx @openstaticfish/chattybox-cli init config/chattybox.config.json

Lokal oder in CI validieren

bunx @openstaticfish/chattybox-cli validate
bunx @openstaticfish/chattybox-cli validate config/chattybox.config.json

Die Validierung prüft das Schema, den erforderlichen Namen des Assistenten, unterstützte Quelltypen, HTTP-Quell-URLs, positive Seitenlimits und Widget-Farben. Eine erfolgreiche Validierung führt keine Bereitstellung durch und ändert keinen entfernten Zustand.

Deployment-Token erstellen

Öffnen Sie im Projekt den Tab Settings, suchen Sie Config deployment tokens und erstellen Sie ein Token für die Umgebungen, die Ihr Workflow ändern darf. Kopieren Sie es sofort; ChattyBox speichert nur dessen Hash und kann es nicht erneut anzeigen.

Setzen Sie das Token und die Widget-API-URL aus dem Tab Embed des Projekts:

export CHATTYBOX_DEPLOY_TOKEN='cb_cfg_v1_...'
export CHATTYBOX_API_URL='https://your-deployment.convex.site/chat'

Committen Sie das Token niemals. Speichern Sie es im verschlüsselten Secret-Speicher Ihres CI-Anbieters.

Nach Überprüfung des Workflows können Sie Config-as-code lock aktivieren. Die Sperre ist im aktuellen Dashboard, CLI und API irreversibel. Sie blockiert Dashboard-Konfiguration und manuelle Korpusaktionen (Scraping, Löschen, Rebuild), nicht aber geplante Arbeit, Projektlöschung, öffentliche Schlüssel oder Tokens. Branding ist die Ausnahme: Die Branding-Einstellung bleibt tarifabhängig im Dashboard änderbar.

Konfiguration bereitstellen

Das Deployment erstellt eine unveränderliche Version und befördert sie in die ausgewählte Umgebung:

bunx @openstaticfish/chattybox-cli deploy --environment preview
bunx @openstaticfish/chattybox-cli deploy --environment production

development speichert nur Version und Zeiger, ohne Runtime-Anwendung. preview und production teilen dieselbe Runtime, dasselbe Korpus und dieselben öffentlichen Schlüssel: Die letzte Runtime-Promotion gewinnt, ohne Umgebungsisolation. Nutzen Sie getrennte Projekte und Tokens für echte Trennung. Runtime-Promotion wendet Konfiguration an und stellt einen Scrape in die Warteschlange, wartet aber nicht auf Scraping oder Embeddings; ausgelassene alte URLs werden nicht entfernt und das Korpus ist kein versionierter Snapshot.

Verwenden Sie --json in der Automatisierung, um Version, Umgebung, Anwendungsstatus und Scraping-Job-ID als strukturierte Ausgabe zu erhalten.

Status, Promotion und Rollback

bunx @openstaticfish/chattybox-cli status --environment production

bunx @openstaticfish/chattybox-cli promote \
--version '<config-version-id>' \
--environment production

bunx @openstaticfish/chattybox-cli rollback \
--version '<known-good-config-version-id>' \
--environment production

--version erwartet die undurchsichtige Konfigurationsversions-ID, nicht die sichtbare Nummer. Rollback verwendet dieselbe Backend-Operation wie Promote, muss keine ältere Version wählen und überschreibt den Zeiger sowie die Promotion-Metadaten der ausgewählten Umgebung; es gibt keine append-only Promotion-Historie. Ein Rollback für Preview oder Production wendet die Konfiguration mit den aktuellen Entitlements erneut an und reiht eine neue Aktualisierung ein, statt historische Inhalte wiederherzustellen.

CI/CD-Workflows

Fügen Sie CHATTYBOX_DEPLOY_TOKEN als verschlüsseltes, auf die Produktion beschränktes Secret bei Ihrem CI-Anbieter hinzu. Fügen Sie CHATTYBOX_API_URL als Secret oder Variable hinzu und verwenden Sie die Widget-API-URL aus dem Embed-Tab des Projekts. Führen Sie die Validierung für Pull Requests aus, beschränken Sie Produktionsdeployments jedoch auf Ihren geschützten Standardbranch oder eine genehmigte Deployment-Umgebung.

GitHub Actions

name: Deploy ChattyBox configuration

on:
pull_request:
push:
branches: [main]

jobs:
validate:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: oven-sh/setup-bun@v2
- uses: actions/setup-node@v6
with:
node-version: 24
- run: bunx @openstaticfish/chattybox-cli validate

deploy:
if: github.event_name == 'push'
needs: validate
runs-on: ubuntu-latest
environment: production
steps:
- uses: actions/checkout@v4
- uses: oven-sh/setup-bun@v2
- uses: actions/setup-node@v6
with:
node-version: 24
- name: Validate and deploy
env:
CHATTYBOX_DEPLOY_TOKEN: ${{ secrets.CHATTYBOX_DEPLOY_TOKEN }}
CHATTYBOX_API_URL: ${{ vars.CHATTYBOX_API_URL }}
run: |
bunx @openstaticfish/chattybox-cli validate
bunx @openstaticfish/chattybox-cli deploy --environment production --json

Verwenden Sie ein auf die Produktionsumgebung begrenztes Secret und verlangen Sie eine Deployment-Genehmigung, wenn Ihr Repository dies unterstützt. Die CLI zeichnet gängige CI-Commit- und Branch-Variablen zusammen mit der unveränderlichen Version auf.

GitLab CI/CD

Speichern Sie beide Werte unter Settings → CI/CD → Variables. Schützen und maskieren Sie das Deployment-Token und beschränken Sie es auf die Umgebung production.

.gitlab-ci.yml
image: oven/bun:1

validate_chattybox:
stage: test
rules:
- if: '$CI_PIPELINE_SOURCE == "merge_request_event"'
script:
- bunx --bun @openstaticfish/chattybox-cli validate

deploy_chattybox:
stage: deploy
environment: production
rules:
- if: '$CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH'
script:
- bunx --bun @openstaticfish/chattybox-cli validate
- bunx --bun @openstaticfish/chattybox-cli deploy --environment production --json

GitLab stellt CHATTYBOX_DEPLOY_TOKEN und CHATTYBOX_API_URL dem Job automatisch unter ihren Variablennamen zur Verfügung. Verwenden Sie einen geschützten Standardbranch, damit geschützte Variablen nicht für nicht vertrauenswürdige Branches verfügbar sind.

Bitbucket Pipelines

Fügen Sie beide Werte als Deployment-Variablen unter Repository settings → Pipelines → Deployments → Production hinzu. Markieren Sie das Deployment-Token als geschützt.

bitbucket-pipelines.yml
image: oven/bun:1

pipelines:
pull-requests:
'**':
- step:
name: Validate ChattyBox configuration
script:
- bunx --bun @openstaticfish/chattybox-cli validate
branches:
main:
- step:
name: Deploy ChattyBox configuration
deployment: Production
script:
- bunx --bun @openstaticfish/chattybox-cli validate
- bunx --bun @openstaticfish/chattybox-cli deploy --environment production --json

Ersetzen Sie main, wenn Ihr Standardbranch anders heißt. Bitbucket fügt Deployment-Variablen nur Schritten hinzu, die dieser Deployment-Umgebung zugeordnet sind.

Konfigurationsabschnitte

AbschnittZweck
schemaVersionWählt den öffentlichen Konfigurationsvertrag aus. Derzeit wird Version 1 unterstützt.
assistantBenennt den Assistenten und definiert optional sein Prompt-Profil und seinen System-Prompt.
knowledge.sourcesDeklariert Website-Quellen und optionale Ein- und Ausschlussmuster.
runtimeEnthält Laufzeitvorgaben wie die Locale.
widgetBeschreibt optionale Darstellungseinstellungen für das gehostete Widget.

Typisierter Konfigurationshelfer

Installieren Sie das Konfigurationspaket, wenn Sie separate TypeScript-Werkzeuge rund um das Schema entwickeln:

bun add -d @openstaticfish/chattybox-config
import { defineConfig } from '@openstaticfish/chattybox-config';

const config = defineConfig({
schemaVersion: '1',
assistant: { name: 'Support' },
knowledge: {
sources: [{ type: 'website', url: 'https://docs.example.com' }],
},
widget: { enabled: true },
});

Die CLI selbst liest JSON-Dateien. defineConfig() ist für typisierte Anwendungen oder Build-Werkzeuge vorgesehen; TypeScript-Dateien werden dadurch nicht direkt von der CLI geladen.

Für eine heute einsatzbereite Produktionsintegration verwenden Sie das gehostete Widget oder erstellen Sie mit dem JavaScript-SDK eine eigene Benutzeroberfläche.

Wir verwenden optionale Analyse- und Tag-Management-Tools, um zu verstehen, wie die Website genutzt wird. Entscheiden Sie, ob Sie Ahrefs Web Analytics, PostHog und Google Tag Manager erlauben möchten. Wenn Sie die Analyse deaktivieren, wird diese Seite neu geladen, damit die Änderung sauber wirksam wird. Die grundlegenden Funktionen der Website und die Fehlerüberwachung werden von dieser Auswahl nicht gesteuert. Datenschutzerklärung lesen.