Deutsch
Dokumentation
SDK

SDK

Typsicherer JS-Client für den opencode-Server.

Das opencode JS/TS SDK bietet einen typsicheren Client für die Interaktion mit dem Server. Verwenden Sie es, um Integrationen zu erstellen und opencode programmatisch zu steuern.

Erfahren Sie mehr über die Funktionsweise des Servers. Schauen Sie sich die von der Community erstellten Projekte an.


Installation

Installieren Sie das SDK von npm:

npm install @opencode-ai/sdk

Client erstellen

Erstellen Sie eine opencode-Instanz:

import { createOpencode } from "@opencode-ai/sdk"
 
const { client } = await createOpencode()

Dies startet sowohl einen Server als auch einen Client.

Optionen

OptionTypBeschreibungStandard
hostnamestringServer-Hostname127.0.0.1
portnumberServer-Port4096
signalAbortSignalAbbruchsignal für Stornierungundefined
timeoutnumberTimeout in ms für Serverstart5000
configConfigKonfigurationsobjekt{}

Konfiguration

Sie können ein Konfigurationsobjekt übergeben, um das Verhalten anzupassen. Die Instanz liest weiterhin Ihre opencode.json, aber Sie können die Konfiguration inline überschreiben oder ergänzen:

import { createOpencode } from "@opencode-ai/sdk"
 
const opencode = await createOpencode({
  hostname: "127.0.0.1",
  port: 4096,
  config: {
    model: "anthropic/claude-3-5-sonnet-20241022",
  },
})
 
console.log(`Server running at ${opencode.server.url}`)
opencode.server.close()

Nur Client

Wenn Sie bereits eine laufende opencode-Instanz haben, können Sie eine Client-Instanz erstellen, um sich damit zu verbinden:

import { createOpencodeClient } from "@opencode-ai/sdk"
 
const client = createOpencodeClient({
  baseUrl: "http://localhost:4096",
})

Optionen

OptionTypBeschreibungStandard
baseUrlstringURL des Servershttp://localhost:4096
fetchfunctionBenutzerdefinierte fetch-ImplementierungglobalThis.fetch
parseAsstringMethode zur Antwortanalyseauto
responseStylestringRückgabestil: data oder fieldsfields
throwOnErrorbooleanFehler werfen statt zurückgebenfalse

Typen

Das SDK enthält TypeScript-Definitionen für alle API-Typen. Importieren Sie sie direkt:

import type { Session, Message, Part } from "@opencode-ai/sdk"

Alle Typen werden aus der OpenAPI-Spezifikation des Servers generiert und sind in der Typdatei (opens in a new tab) verfügbar.


Fehler

Das SDK kann Fehler werfen, die Sie abfangen und behandeln können:

try {
  await client.session.get({ path: { id: "invalid-id" } })
} catch (error) {
  console.error("Failed to get session:", (error as Error).message)
}

APIs

Das SDK stellt alle Server-APIs über einen typsicheren Client bereit.


Global

MethodeBeschreibungAntwort
global.health()Servergesundheit und Version prüfen{ healthy: true, version: string }

Beispiele

const health = await client.global.health()
console.log(health.data.version)

App

MethodeBeschreibungAntwort
app.log()Einen Logeintrag schreibenboolean
app.agents()Alle verfügbaren Agenten auflistenAgent[] (opens in a new tab)

Beispiele

// Einen Logeintrag schreiben
await client.app.log({
  body: {
    service: "my-app",
    level: "info",
    message: "Operation completed",
  },
})
 
// Verfügbare Agenten auflisten
const agents = await client.app.agents()

Project

MethodeBeschreibungAntwort
project.list()Alle Projekte auflistenProject[] (opens in a new tab)
project.current()Aktuelles Projekt abrufenProject (opens in a new tab)

Beispiele

// Alle Projekte auflisten
const projects = await client.project.list()
 
// Aktuelles Projekt abrufen
const currentProject = await client.project.current()

Path

MethodeBeschreibungAntwort
path.get()Aktuellen Pfad abrufenPath (opens in a new tab)

Beispiele

// Aktuelle Pfadinformationen abrufen
const pathInfo = await client.path.get()

Config

MethodeBeschreibungAntwort
config.get()Konfigurationsinformationen abrufenConfig (opens in a new tab)
config.providers()Anbieter und Standardmodelle auflisten{ providers: Provider[] (opens in a new tab), default: { [key: string]: string } }

Beispiele

const config = await client.config.get()
 
const { providers, default: defaults } = await client.config.providers()

Sessions

MethodeBeschreibungHinweise
session.list()Sitzungen auflistenGibt Session[] (opens in a new tab) zurück
session.get({ path })Sitzung abrufenGibt Session (opens in a new tab) zurück
session.children({ path })Untersitzungen auflistenGibt Session[] (opens in a new tab) zurück
session.create({ body })Sitzung erstellenGibt Session (opens in a new tab) zurück
session.delete({ path })Sitzung löschenGibt boolean zurück
session.update({ path, body })Sitzungseigenschaften aktualisierenGibt Session (opens in a new tab) zurück
session.init({ path, body })App analysieren und AGENTS.md erstellenGibt boolean zurück
session.abort({ path })Laufende Sitzung abbrechenGibt boolean zurück
session.share({ path })Sitzung teilenGibt Session (opens in a new tab) zurück
session.unshare({ path })Sitzungsfreigabe aufhebenGibt Session (opens in a new tab) zurück
session.summarize({ path, body })Sitzung zusammenfassenGibt boolean zurück
session.messages({ path })Nachrichten in einer Sitzung auflistenGibt { info: Message (opens in a new tab), parts: Part[] (opens in a new tab)}[] zurück
session.message({ path })Nachrichtendetails abrufenGibt { info: Message (opens in a new tab), parts: Part[] (opens in a new tab)} zurück
session.prompt({ path, body })Prompt-Nachricht sendenbody.noReply: true gibt UserMessage zurück (nur Kontext). Standard gibt AssistantMessage (opens in a new tab) mit KI-Antwort zurück
session.command({ path, body })Befehl an Sitzung sendenGibt { info: AssistantMessage (opens in a new tab), parts: Part[] (opens in a new tab)} zurück
session.shell({ path, body })Shell-Befehl ausführenGibt AssistantMessage (opens in a new tab) zurück
session.revert({ path, body })Nachricht rückgängig machenGibt Session (opens in a new tab) zurück
session.unrevert({ path })Rückgängig gemachte Nachrichten wiederherstellenGibt Session (opens in a new tab) zurück
postSessionByIdPermissionsByPermissionId({ path, body })Auf Berechtigungsanfrage antwortenGibt boolean zurück

Beispiele

// Sitzungen erstellen und verwalten
const session = await client.session.create({
  body: { title: "My session" },
})
 
const sessions = await client.session.list()
 
// Prompt-Nachricht senden
const result = await client.session.prompt({
  path: { id: session.id },
  body: {
    model: { providerID: "anthropic", modelID: "claude-3-5-sonnet-20241022" },
    parts: [{ type: "text", text: "Hello!" }],
  },
})
 
// Kontext einfügen ohne KI-Antwort auszulösen (nützlich für Plugins)
await client.session.prompt({
  path: { id: session.id },
  body: {
    noReply: true,
    parts: [{ type: "text", text: "You are a helpful assistant." }],
  },
})

Files

MethodeBeschreibungAntwort
find.text({ query })Text in Dateien suchenArray von Match-Objekten mit path, lines, line_number, absolute_offset, submatches
find.files({ query })Dateien und Verzeichnisse nach Namen findenstring[] (Pfade)
find.symbols({ query })Workspace-Symbole findenSymbol[] (opens in a new tab)
file.read({ query })Datei lesen{ type: "raw" | "patch", content: string }
file.status({ query? })Status für verfolgte Dateien abrufenFile[] (opens in a new tab)

find.files unterstützt einige optionale Abfragefelder:

  • type: "file" oder "directory"
  • directory: Projektstamm für die Suche überschreiben
  • limit: Maximale Ergebnisse (1-200)

Beispiele

// Dateien suchen und lesen
const textResults = await client.find.text({
  query: { pattern: "function.*opencode" },
})
 
const files = await client.find.files({
  query: { query: "*.ts", type: "file" },
})
 
const directories = await client.find.files({
  query: { query: "packages", type: "directory", limit: 20 },
})
 
const content = await client.file.read({
  query: { path: "src/index.ts" },
})

TUI

MethodeBeschreibungAntwort
tui.appendPrompt({ body })Text zum Prompt hinzufügenboolean
tui.openHelp()Hilfedialog öffnenboolean
tui.openSessions()Sitzungsauswahl öffnenboolean
tui.openThemes()Themenauswahl öffnenboolean
tui.openModels()Modellauswahl öffnenboolean
tui.submitPrompt()Aktuellen Prompt absendenboolean
tui.clearPrompt()Prompt leerenboolean
tui.executeCommand({ body })Befehl ausführenboolean
tui.showToast({ body })Toast-Benachrichtigung anzeigenboolean

Beispiele

// TUI-Oberfläche steuern
await client.tui.appendPrompt({
  body: { text: "Add this to prompt" },
})
 
await client.tui.showToast({
  body: { message: "Task completed", variant: "success" },
})

Auth

MethodeBeschreibungAntwort
auth.set({ ... })Authentifizierungsdaten festlegenboolean

Beispiele

await client.auth.set({
  path: { id: "anthropic" },
  body: { type: "api", key: "your-api-key" },
})

Events

MethodeBeschreibungAntwort
event.subscribe()Server-Sent-Events-StreamServer-Sent-Events-Stream

Beispiele

// Echtzeit-Events abhören
const events = await client.event.subscribe()
for await (const event of events.stream) {
  console.log("Event:", event.type, event.properties)
}