Gå til innholdet

Programtillegg

Skriv dine egne programtillegg for å utvide OpenCode.

Plugins lar deg utvide OpenCode ved å koble til ulike hendelser og tilpasse atferd. Du kan lage plugins for å legge til nye funksjoner, integrere med eksterne tjenester eller endre standardoppførselen til OpenCode.

For eksempler, sjekk ut plugins opprettet av fellesskapet.


Bruk av en plugin

Det er to måter å laste inn plugins.


Fra lokale filer

Plasser JavaScript- eller TypeScript-filer i plugin-katalogen.

  • .opencode/plugins/ - Programtillegg på prosjektnivå
  • ~/.config/opencode/plugins/ - Globale plugins

Filer i disse katalogene lastes automatisk ved oppstart.


Fra npm

Spesifiser npm-pakker i konfigurasjonsfilen.

opencode.json
{
"$schema": "https://opencode.ai/config.json",
"plugin": ["opencode-helicone-session", "opencode-wakatime", "@my-org/custom-plugin"]
}

Både vanlige og scoped npm-pakker støttes.

Bla gjennom tilgjengelige plugins i økosystemet.


Hvordan plugins installeres

npm-plugins installeres automatisk ved hjelp av Bun ved oppstart. Pakker og deres avhengigheter er bufret i ~/.cache/opencode/node_modules/.

Lokale plugins lastes direkte fra plugin-katalogen. For å bruke eksterne pakker, må du opprette en package.json i konfigurasjonskatalogen din (se Dependencies), eller publisere plugin-en til npm og legg den til i konfigurasjonen din.


Lasterekkefølge

Plugins lastes inn fra alle kilder og alle kroker kjøres i rekkefølge. Lastrekkefølgen er:

  1. Global konfigurasjon (~/.config/opencode/opencode.json)
  2. Prosjektkonfigurasjon (opencode.json)
  3. Global plugin-katalog (~/.config/opencode/plugins/)
  4. Prosjektpluginkatalog (.opencode/plugins/)

Dupliserte npm-pakker med samme navn og versjon lastes inn én gang. Imidlertid lastes en lokal plugin og en npm plugin med lignende navn begge separat.


Opprette en plugin

En plugin er en JavaScript/TypeScript-modul som eksporterer en eller flere plugin-moduler funksjoner. Hver funksjon mottar et kontekstobjekt og returnerer et krokobjekt.


Avhengigheter

Lokale plugins og tilpassede verktøy kan bruke eksterne npm-pakker. Legg til en package.json til konfigurasjonskatalogen med avhengighetene du trenger.

.opencode/package.json
{
"dependencies": {
"shescape": "^2.1.0"
}
}

OpenCode kjører bun install ved oppstart for å installere disse. Programtilleggene og verktøyene dine kan deretter importere dem.

.opencode/plugins/my-plugin.ts
import { escape } from "shescape"
export const MyPlugin = async (ctx) => {
return {
"tool.execute.before": async (input, output) => {
if (input.tool === "bash") {
output.args.command = escape(output.args.command)
}
},
}
}

Grunnleggende struktur

.opencode/plugins/example.js
export const MyPlugin = async ({ project, client, $,