diff options
| author | opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com> | 2026-02-09 17:35:30 +0000 |
|---|---|---|
| committer | opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com> | 2026-02-09 17:35:30 +0000 |
| commit | d578f80f0055082cc7befd29b2ce6bda7326d29f (patch) | |
| tree | 5ca2ee868fe480104a5464260a8b114c3ef4ec71 /packages/web/src/content/docs/bs/plugins.mdx | |
| parent | dc53086c1e73d43d3a28fc4cdf161e83d09b1877 (diff) | |
| download | opencode-d578f80f0055082cc7befd29b2ce6bda7326d29f.tar.gz opencode-d578f80f0055082cc7befd29b2ce6bda7326d29f.zip | |
chore: generate
Diffstat (limited to 'packages/web/src/content/docs/bs/plugins.mdx')
| -rw-r--r-- | packages/web/src/content/docs/bs/plugins.mdx | 82 |
1 files changed, 72 insertions, 10 deletions
diff --git a/packages/web/src/content/docs/bs/plugins.mdx b/packages/web/src/content/docs/bs/plugins.mdx index 99346fe2e..afe56c07e 100644 --- a/packages/web/src/content/docs/bs/plugins.mdx +++ b/packages/web/src/content/docs/bs/plugins.mdx @@ -5,21 +5,27 @@ description: Napišite vlastite dodatke za proširenje OpenCode-a. Dodaci vam omogućavaju da proširite OpenCode spajanjem na različite događaje i prilagođavanjem ponašanja. Možete kreirati dodatke za dodavanje novih funkcija, integraciju sa eksternim uslugama ili izmenu zadanog ponašanja OpenCode-a. Za primjere, pogledajte [plugins](/docs/ecosystem#plugins) kreirane od strane zajednice. + --- ## Koristite dodatak -Postoje dva načina za učitavanje dodataka. ---- + +## Postoje dva načina za učitavanje dodataka. ### Iz lokalnih datoteka + Postavite JavaScript ili TypeScript datoteke u direktorij dodataka. + - `.opencode/plugins/` - Dodaci na nivou projekta - `~/.config/opencode/plugins/` - Globalni dodaci -Datoteke u ovim direktorijumima se automatski učitavaju pri pokretanju. + Datoteke u ovim direktorijumima se automatski učitavaju pri pokretanju. + --- ### Od npm + Navedite npm pakete u vašoj konfiguracijskoj datoteci. + ```json title="opencode.json" { "$schema": "https://opencode.ai/config.json", @@ -29,29 +35,39 @@ Navedite npm pakete u vašoj konfiguracijskoj datoteci. Podržani su i regularni i npm paketi sa opsegom. Pregledajte dostupne dodatke u [ecosystem](/docs/ecosystem#plugins). + --- ### Kako se instaliraju dodaci + **npm dodaci** se instaliraju automatski pomoću Bun pri pokretanju. Paketi i njihove zavisnosti su keširani u `~/.cache/opencode/node_modules/`. **Lokalni dodaci** se učitavaju direktno iz direktorija dodataka. Da biste koristili vanjske pakete, morate kreirati `package.json` unutar svog konfiguracijskog direktorija (pogledajte [Zavisnosti](#dependencies)) ili objaviti dodatak na npm i [dodati ga u svoju konfiguraciju](/docs/config#plugins). + --- ### Učitaj redoslijed + Dodaci se učitavaju iz svih izvora i svi zakačnjaci rade u nizu. Redoslijed učitavanja je: + 1. Globalna konfiguracija (`~/.config/opencode/opencode.json`) 2. Konfiguracija projekta (`opencode.json`) 3. Globalni direktorij dodataka (`~/.config/opencode/plugins/`) 4. Direktorij dodataka projekta (`.opencode/plugins/`) -Duplicirani npm paketi sa istim imenom i verzijom se učitavaju jednom. Međutim, lokalni dodatak i npm dodatak sa sličnim nazivima se učitavaju odvojeno. + Duplicirani npm paketi sa istim imenom i verzijom se učitavaju jednom. Međutim, lokalni dodatak i npm dodatak sa sličnim nazivima se učitavaju odvojeno. + --- ## Kreirajte dodatak + Dodatak je **JavaScript/TypeScript modul** koji izvozi jedan ili više dodataka funkcije. Svaka funkcija prima objekt konteksta i vraća hooks objekt. + --- ### Zavisnosti + Lokalni dodaci i prilagođeni alati mogu koristiti vanjske npm pakete. Dodajte `package.json` u svoj konfiguracijski direktorij sa zavisnostima koje su vam potrebne. + ```json title=".opencode/package.json" { "dependencies": { @@ -61,6 +77,7 @@ Lokalni dodaci i prilagođeni alati mogu koristiti vanjske npm pakete. Dodajte ` ``` OpenCode pokreće `bun install` pri pokretanju da ih instalira. Vaši dodaci i alati ih zatim mogu uvesti. + ```ts title=".opencode/plugins/my-plugin.ts" import { escape } from "shescape" @@ -78,6 +95,7 @@ export const MyPlugin = async (ctx) => { --- ### Osnovna struktura + ```js title=".opencode/plugins/example.js" export const MyPlugin = async ({ project, client, $, directory, worktree }) => { console.log("Plugin initialized!") @@ -89,15 +107,19 @@ export const MyPlugin = async ({ project, client, $, directory, worktree }) => { ``` Funkcija dodatka prima: + - `project`: Trenutne informacije o projektu. - `directory`: Trenutni radni direktorij. - `worktree`: Putanja git radnog stabla. - `client`: Opencode SDK klijent za interakciju sa AI. - `$`: Bun's [shell API](https://bun.com/docs/runtime/shell) za izvršavanje naredbi. + --- ### Podrška za TypeScript + Za TypeScript dodatke, možete uvesti tipove iz paketa dodataka: + ```ts title="my-plugin.ts" {1} import type { Plugin } from "@opencode-ai/plugin" @@ -111,28 +133,45 @@ export const MyPlugin: Plugin = async ({ project, client, $, directory, worktree --- ### Događaji + Dodaci se mogu pretplatiti na događaje kao što je prikazano ispod u odjeljku Primjeri. Evo liste različitih dostupnih događaja. + #### Komandni događaji + - `command.executed` + #### Događaji datoteka + - `file.edited` - `file.watcher.updated` + #### Instalacijski događaji + - `installation.updated` + #### LSP događaji + - `lsp.client.diagnostics` - `lsp.updated` + #### Poruka Događaji + - `message.part.removed` - `message.part.updated` - `message.removed` - `message.updated` + #### Događaji dozvole + - `permission.asked` - `permission.replied` + #### Serverski događaji + - `server.connected` + #### Događaji sesije + - `session.created` - `session.compacted` - `session.deleted` @@ -141,25 +180,36 @@ Dodaci se mogu pretplatiti na događaje kao što je prikazano ispod u odjeljku P - `session.idle` - `session.status` - `session.updated` + #### Todo događaji + - `todo.updated` + #### Shell događaji + - `shell.env` + #### Alat Događaji + - `tool.execute.after` - `tool.execute.before` + #### TUI događaji + - `tui.prompt.append` - `tui.command.execute` - `tui.toast.show` + --- ## Primjeri -Evo nekoliko primjera dodataka koje možete koristiti za proširenje otvorenog koda. ---- + +## Evo nekoliko primjera dodataka koje možete koristiti za proširenje otvorenog koda. ### Šalji obavještenja + Pošaljite obavještenja kada se dogode određeni događaji: + ```js title=".opencode/plugins/notification.js" export const NotificationPlugin = async ({ project, client, $, directory, worktree }) => { return { @@ -181,7 +231,9 @@ Ako koristite desktop aplikaciju OpenCode, ona može automatski slati sistemske --- ### .env zaštita + Spriječite opencode da čita `.env` fajlove: + ```javascript title=".opencode/plugins/env-protection.js" export const EnvProtection = async ({ project, client, $, directory, worktree }) => { return { @@ -197,7 +249,9 @@ export const EnvProtection = async ({ project, client, $, directory, worktree }) --- ### Ubacite varijable okruženja + Ubacite varijable okruženja u sva izvršavanja ljuske (AI alati i korisnički terminali): + ```javascript title=".opencode/plugins/inject-env.js" export const InjectEnvPlugin = async () => { return { @@ -212,7 +266,9 @@ export const InjectEnvPlugin = async () => { --- ### Prilagođeni alati + Dodaci također mogu dodati prilagođene alate u opencode: + ```ts title=".opencode/plugins/custom-tools.ts" import { type Plugin, tool } from "@opencode-ai/plugin" @@ -235,14 +291,18 @@ export const CustomToolsPlugin: Plugin = async (ctx) => { ``` Pomoćnik `tool` kreira prilagođeni alat koji opencode može pozvati. Uzima funkciju Zod sheme i vraća definiciju alata sa: + - `description`: Šta alat radi - `args`: Zod šema za argumente alata - `execute`: Funkcija koja se pokreće kada se pozove alat -Vaši prilagođeni alati će biti dostupni za opencode zajedno sa ugrađenim alatima. + Vaši prilagođeni alati će biti dostupni za opencode zajedno sa ugrađenim alatima. + --- ### Logging + Koristite `client.app.log()` umjesto `console.log` za strukturirano bilježenje: + ```ts title=".opencode/plugins/my-plugin.ts" export const MyPlugin = async ({ client }) => { await client.app.log({ @@ -256,11 +316,12 @@ export const MyPlugin = async ({ client }) => { } ``` -Nivoi: `debug`, `info`, `warn`, `error`. Pogledajte [SDK dokumentaciju](https://opencode.ai/docs/sdk) za detalje. ---- +## Nivoi: `debug`, `info`, `warn`, `error`. Pogledajte [SDK dokumentaciju](https://opencode.ai/docs/sdk) za detalje. ### Kuke za sabijanje + Prilagodite kontekst uključen kada se sesija zbije: + ```ts title=".opencode/plugins/compaction.ts" import type { Plugin } from "@opencode-ai/plugin" @@ -283,6 +344,7 @@ Include any state that should persist across compaction: `experimental.session.compacting` kuka se aktivira prije nego što LLM generira sažetak nastavka. Koristite ga za ubacivanje konteksta specifičnog za domenu koji bi zadani prompt za sažimanje propustio. Također možete u potpunosti zamijeniti prompt za sabijanje postavljanjem `output.prompt`: + ```ts title=".opencode/plugins/custom-compaction.ts" import type { Plugin } from "@opencode-ai/plugin" @@ -306,4 +368,4 @@ Format as a structured prompt that a new agent can use to resume work. } ``` -Kada je `output.prompt` postavljen, on u potpunosti zamjenjuje zadani prompt za sažimanje. Niz `output.context` se zanemaruje u ovom slučaju.
\ No newline at end of file +Kada je `output.prompt` postavljen, on u potpunosti zamjenjuje zadani prompt za sažimanje. Niz `output.context` se zanemaruje u ovom slučaju. |
