wip(docs): i18n (#12681)

This commit is contained in:
Adam
2026-02-09 11:34:35 -06:00
committed by GitHub
parent f74c0339cc
commit dc53086c1e
642 changed files with 192745 additions and 509 deletions

View File

@@ -0,0 +1,67 @@
---
title: Migracja do wersji 1.0
description: Co nowego w OpenCode 1.0.
---
OpenCode 1.0 do całkowitej przeróbki TUI.
Przeszliśmy z TUI na go+bubbletea, który miał problemy z wydajnością i możliwościami, do wewnętrznego frameworka (OpenTUI) obciążającego w zig+solidjs.
Nowy TUI działa jak stary, łączy się z tym samym serwerem opencode.
---
## Aktualizacja
Nie automatyczna aktualizacja do wersji 1.0, która jest dostępna w wersji 1.0
wersja. Starsze wersje OpenCode zawsze pobierają najnowszą wersję.
Aby móc, móc
```bash
$ opencode upgrade 1.0.0
```
Aby uruchomić wersję 0.x, uruchom
```bash
$ opencode upgrade 0.15.31
```
---
## Zmiany UX
Historia sesji jest bardziej skompresowana i znaleziono pełne szczegóły narzędzia do edycji w bash.
Dodaliśmy pasek kontrolny, przez który przepływa prawie wszystko. działanie nie ctrl+p, aby przejść do zdarzenia, które zawiera wszystko, co można regenerować.
Dodano pasek boczny sesji (możliwość przejścia do urządzenia) z odłączonym dostępem.
Usunęliśmy pewne funkcje, z których nie ma pewności, czy ktoś faktycznie korzystał. Jeśli brakuje czegoś ważnego, otwórz problem, a my szybko dodamy.
---
## Przełomowe zmiany
### Zmieniono skrótów klawiszowych
- wiadomości_przywróć -> wiadomości_cofnij
- uruchomienie_agent -> cykl_agent
- switch_agent_reverse -> agent_cycle_reverse
- tryb_przełączenie -> cykl_agenta
- switch_mode_reverse -> agent_cycle_reverse
### Usunięto klawisze
- Przegrzewanie_układu_wiadomości
- wiadomości_następne
- wiadomości_poprzednie
- plik_diff_toggle
- wyszukiwanie_pliku
- plik_zamknij
- lista_plików
- pomoc_aplikacji
- projekt_init
- szczegóły_narzędzia
- myślenie_bloki

View File

@@ -0,0 +1,156 @@
---
title: Wsparcie AKP
description: przetwarzanie OpenCode w procesorze komunikatu z ACP.
---
OpenCode obsługi [Protokół klienta agenta](https://agentclientprotocol.com) lub (ACP), dzięki któremu można przejść do oprogramowania bezpośrednio w zainstalowanych edytorach i środowisku IDE.
:::tip
Lista edytorów i narzędzi obsługujących ACP w [raportu sprzętu ACP](https://zed.dev/blog/acp-progress-report#available-now).
:::
ACP do otwierania dokumentów, które standaryzują treść między edytorami kodu a agentem kodującym AI.
---
## Skonfiguruj
Aby wybrać OpenCode przez ACP, skonfiguruj edytor tak, aby wybrać opcję `opencode acp`.
Uruchomienie OpenCode jako podproces oprogramowania z ACP, który komunikuje się z edytorem poprzez JSON-RPC poprzez stdio.
Poniżej znajdują się przykłady procesorów obsługujących ACP.
---
### Zeda
Dodaj do konstrukcji [Zed](https://zed.dev) (`~/.config/zed/settings.json`):
```json title="~/.config/zed/settings.json"
{
"agent_servers": {
"OpenCode": {
"command": "opencode",
"args": ["acp"]
}
}
}
```
Aby przejść do akcji, `agent: new thread` w **Palecie redakcji**.
Można także po skrócie skrótowym, edytując `keymap.json`:
```json title="keymap.json"
[
{
"bindings": {
"cmd-alt-o": [
"agent::NewExternalAgentThread",
{
"agent": {
"custom": {
"name": "OpenCode",
"command": {
"command": "opencode",
"args": ["acp"]
}
}
}
}
]
}
}
]
```
---
### IDE JetBrains
Dodaj do swojego [JetBrains IDE](https://www.jetbrains.com/) acp.json zgodnie z [dokumentacją](https://www.jetbrains.com/help/ai-assistant/acp.html):
```json title="acp.json"
{
"agent_servers": {
"OpenCode": {
"command": "/absolute/path/bin/opencode",
"args": ["acp"]
}
}
}
```
Aby przejść do nowego agenta „OpenCode” w selektorze agenta AI Chat.
---
### Avante.nvim
Dodaj do konstrukcji [Avante.nvim](https://github.com/yetone/avante.nvim):
```lua
{
acp_providers = {
["opencode"] = {
command = "opencode",
args = { "acp" }
}
}
}
```
Jeśli chcesz zachować bezpieczeństwo:
```lua {6-8}
{
acp_providers = {
["opencode"] = {
command = "opencode",
args = { "acp" },
env = {
OPENCODE_API_KEY = os.getenv("OPENCODE_API_KEY")
}
}
}
}
```
---
### CodeCompanion.nvim
Aby OpenCode jako agenta ACP w [CodeCompanion.nvim](https://github.com/olimorris/codecompanion.nvim), dodaj dodatkowe elementy, aby otrzymać konstrukcje Neovim:
```lua
require("codecompanion").setup({
interactions = {
chat = {
adapter = {
name = "opencode",
model = "claude-sonnet-4",
},
},
},
})
```
Ta konfiguracja CodeCompanion wymaga OpenCode jako agenta ACP dla czatu.
Jeśli jesteś zarejestrowany jako `OPENCODE_API_KEY`, zapoznaj się z sekcją [Konfigurowanie adapterów: Zmienne przebieg](https://codecompanion.olimorris.dev/getting-started#setting-an-api-key) w dokumentacji CodeCompanion.nvim, aby uzyskać szczegółowe informacje.
## Wsparcie
OpenCode działa tak samo przez ACP, jak w terminalu. Obsługiwane są wszystkie funkcje:
:::note
początek źródła ukośnikowego, takie jak `/undo` i `/redo`, nie są aktualne pobierane.
:::
- Wbudowane narzędzie (operacje na plikach, rozwiązanie terminala itp.)
- Niestandardowe narzędzie i polecenie ukośnikowe
- Serwery MCP skonfigurowane w konfiguracji OpenCode
- Zasady dotyczące projektu od `AGENTS.md`
- Niestandardowe formatory i lintery
- Agentów systemowych i uprawnień

View File

@@ -0,0 +1,747 @@
---
title: Agencja
description: Konfiguruj i używaj funkcjonalnych agentów.
---
Agencje do urządzeń asystenci AI, które można podłączyć do gniazd zasilania i przepływów pracy. Umożliwiają tworzenie ukierunkowanych narzędzi z niestandardowymi monitami, modelami i udostępnianiem narzędzi.
:::tip
Skorzystaj z agenta planu, aby uzyskać dostęp do kodu i przeglądać informacje bez dodatkowych zmian w kodzie.
:::
Możesz przełączać się między agentami podczas sesji lub wywoływać ich za pomocą wzmianki `@`.
---
## Typowe
W OpenCode zasada dwóch charakterystycznych agentów; Najpierw pierwotni i subagenci.
---
### Agencja Pierwsi
Główne zasady asystenci, z podstawowym kontaktem. Możesz je mieć za pomocą klawisza **Tab** lub podwójnego skrótu klawiszowego `switch_agent`. Ci agenci obsługujący urządzenie główne. Dostęp do narzędzia jest konfigurowany za pomocą uprawnień — na przykład w programie Build wszystkie narzędzia są dostępne, a plan jest ograniczony.
:::tip
Twój klawisz klawisza **Tab**, aby wyłączyć się między agentami podczas sesji.
:::
OpenCode zawiera dwa puste agenty główne: **Build** i **Plan**. Dobrze
spójrz na te poniżej.
---
### Podagencje
Podagenci do pomocniczych asystenci, których można przywoływać agenci główni w celu wykonania podstawowych zadań. Możesz także wytwarzać je, **@ wspominając** o nich w swoich wiadomościach.
OpenCode ma dwóch subagentów: **Ogólne** i **Eksploruj**. Przyjrzymy się temu poniżej.
---
## Wbudowany
OpenCode ma dwa główne agenty i dwa główne agenty podrzędne.
---
### korzystać z pracy
_Tryb_: `primary`
Kompilacja jest **domyślnym** agentem zastosowania z ukrytymi narzędziami. Jest to standardowy agent do prac programistycznych, którego dostęp jest udostępniony do operacji na plikach i podstawowych systemowych.
---
### założenie z planu
_Tryb_: `primary`
Zastrzeżony agent do analizy. Używamy systemu, aby włączyć Ci większe ryzyko i zapobiec niezamierzonym zmianom.
Domyślnie są wybrane na `ask`:
- `file edits`: Wszystkie zapisy, transkrypcja i edycje
- `bash`: Wszystkie polecam bash
Ten agent jest podłączony, gdy chcesz, aby LLM był kompatybilny z kodem, który wymaga zastosowania lub wersji plastikowej bez konieczności stosowania innej wersji bazy kodu.
---
### miejsce
_Tryb_: `subagent`
Rozwiązanie rozwiązania złożone z zadań wieloetapowych. Pełny dostęp do narzędzia (z funkcjonalnymi funkcjami do wykonania), dzięki czemu może w razie potrzeby zostać dostarczone w plikach. Przewoźnik dziesięć, aby określić wiele jednostek roboczych.
---
### eksploracji
_Tryb_: `subagent`
Szybki agent tylko do odczytu do eksploracji baz kodu. Nie można modyfikować plików. Użycie tej opcji, jeśli chcesz szybko uzyskać dostęp do plików według wzorców, wyszukać w kodzie słowa kluczowe lub rozwiązania dotyczące zapytań dotyczących bazy kodu.
---
### zagęszczanie danych
_Tryb_: `primary`
Ukryty agent systemowy, który jest kontekstem kontekstowym w dużym podsumowaniu. W razie działania nie można przejść do interfejsu użytkownika.
---
### jako tytuł
_Tryb_: `primary`
Ukryty agent systemowy, krótki tytuł sesji. Działa automatycznie i nie można przejść do interfejsu użytkownika.
---
### Podsumowanie podsumowania
_Tryb_: `primary`
Ukryty agent systemowy, który stanowi podsumowanie podsumowania sesji. Działa automatycznie i nie można przejść do interfejsu użytkownika.
---
## Stosowanie
1. W przypadku agentów głównych klawisza **Tab**, aby przełączać się między nimi podczas sesji. Można również podać z skrótu klawiszowego `switch_agent`.
2. Subagent można wytwarzać:
- **Automatycznie** przez głównych agentów do specjalistycznych zadań na podstawie ich opisów.
- Ręcznie, **@ wspomnienie** o subagencji w Twoich wiadomościach. Na przykład.
```txt frame="none"
@general help me search for this function
```
3. **Nawigacja pomiędzy sesjami**: Kiedy można mieć własne sesje podrzędne, można nawigować pomiędzy sesjami nadrzędnymi a określonymi podrzędnymi, dostępnymi z:
- **\<Lider>+Prawo** (lub skonfigurowane przez Ciebie klawisze `session_child_cycle`), aby przełączać się między jednostkami nadrzędnymi → podrzędnymi 1 → podrzędnymi 2 → ... → nadrzędnymi
- **\<Leader>+Left** (lub skrót klawiszowy `session_child_cycle_reverse`), aby przejść dalej między macierzym ← podnośnik1 ← podnośnik2 ← ... ← prowadzącym
Dostępna możliwość płynnego przełączania pomiędzy rozmową główną a pracą specjalistyczną subagentę.
---
## Skonfiguruj
Możliwość zastosowania agentów lub urządzeń poprzez zastosowanie. Agentów można zidentyfikować na dwóch systemach:
---
### JSON
Skonfiguruj agenta w pliku konfiguracyjnym `opencode.json`:
```json title="opencode.json"
{
"$schema": "https://opencode.ai/config.json",
"agent": {
"build": {
"mode": "primary",
"model": "anthropic/claude-sonnet-4-20250514",
"prompt": "{file:./prompts/build.txt}",
"tools": {
"write": true,
"edit": true,
"bash": true
}
},
"plan": {
"mode": "primary",
"model": "anthropic/claude-haiku-4-20250514",
"tools": {
"write": false,
"edit": false,
"bash": false
}
},
"code-reviewer": {
"description": "Reviews code for best practices and potential issues",
"mode": "subagent",
"model": "anthropic/claude-sonnet-4-20250514",
"prompt": "You are a code reviewer. Focus on security, performance, and maintainability.",
"tools": {
"write": false,
"edit": false
}
}
}
}
```
---
### Obniżka cen
Można także definiować agentów za pomocą plików przecen. Trzymaj je w:
- Globalnie: `~/.config/opencode/agents/`
- Na projekt: `.opencode/agents/`
```markdown title="~/.config/opencode/agents/review.md"
---
description: Reviews code for quality and best practices
mode: subagent
model: anthropic/claude-sonnet-4-20250514
temperature: 0.1
tools:
write: false
edit: false
bash: false
---
You are in code review mode. Focus on:
- Code quality and best practices
- Potential bugs and edge cases
- Performance implications
- Security considerations
Provide constructive feedback without making direct changes.
```
Nazwa pliku przecen staje się nazwą agenta. Na przykład `review.md` tworzy agenta `review`.
---
## Opcje
Przyjrzyjmy się szczegółowo tym opcjom konfiguracji.
---
### Opis
miejsce `description`, aby krótko tego, co robi agent i kiedy go stosować.
```json title="opencode.json"
{
"agent": {
"review": {
"description": "Reviews code for best practices and potential issues"
}
}
}
```
Jest to **wymagana** opcja konfiguracji.
---
### Temperatura
Kontroluj losowość i kreatywność odpowiedzi LLM za pomocą konfiguracji `temperature`.
Niższe wartości, że odpowiedzi są bardziej skupione i deterministyczne, gdy wartość jest innowacyjna i złożona.
```json title="opencode.json"
{
"agent": {
"plan": {
"temperature": 0.1
},
"creative": {
"temperature": 0.8
}
}
}
```
Wartość temperatury zwykle waha się od 0,0 do 1,0:
- **0,0-0,2**: Bardzo skoncentrowane i deterministyczne odpowiedzi, idealne do analizy i kodu źródłowego
- **0,3-0,5**: Zrównoważona odpowiedź z chwilą powstania, dobre do ogólnych zadań rozwojowych
- **0,61,0**: Bardziej kreatywne i odpowiedzi, rozstrzygnięte podczas burzy mózgów i eksploracji
```json title="opencode.json"
{
"agent": {
"analyze": {
"temperature": 0.1,
"prompt": "{file:./prompts/analysis.txt}"
},
"build": {
"temperature": 0.3
},
"brainstorm": {
"temperature": 0.7,
"prompt": "{file:./prompts/creative.txt}"
}
}
}
```
Jeśli nie ma wpływu na kontrolę, OpenCode używa narzędzia do analizy danych dla modelu; 0 dla określonych modeli, 0,55 dla modeli Qwen.
---
### Maksymalna liczba kroków
Kontroluj funkcjonowanie iteracji agenta, jaki agent może być, zanim będzie dostępny wyłącznie z tekstem. Dzięki temu użytkownicy kontrolujący koszty mogą mieć wpływ na działanie agentów.
Jeśli ta opcja nie zostanie skonfigurowana, agent będzie obowiązywał iterację, jeśli model nie zostanie wydany lub użytkownik nie będzie regularnie używany.
```json title="opencode.json"
{
"agent": {
"quick-thinker": {
"description": "Fast reasoning with limited iterations",
"prompt": "You are a quick thinker. Solve problems with minimal steps.",
"steps": 5
}
}
}
```
Po tym, jak agent limitu otrzymuje specjalny monit systemowy nakazujący podsumowanie swojej pracy i rekomendowanych do wykonywania zadań.
:::caution
Starsze pole `maxSteps` jest przestarzałe. Zamiast tego nadzoru `steps`.
:::
---
### Wymienne
Ustaw na `true`, aby wyłączyć agenta.
```json title="opencode.json"
{
"agent": {
"review": {
"disable": true
}
}
}
```
---
### Podpowiedź
niestandardowy plik podpowiedzi systemowych dla tego agenta z konfiguracją `prompt`. Plik informacyjny powinien zawierać dla celu agenta.
```json title="opencode.json"
{
"agent": {
"review": {
"prompt": "{file:./prompts/code-review.txt}"
}
}
}
```
Ścieżka ta zależy od miejsca, w którym znajduje się plik konfiguracyjny. Działa również w przypadku globalnej konstrukcji OpenCode, jak i funkcjonalnej dla projektu.
---
### Model
konstrukcja nośna `model`, aby mieć model dla tego agenta. Przydatne przy różnych modelach konfiguracji w różnych zadaniach. Na przykład zastosowania modelu, skuteczne wykonanie modelu.
:::tip
Jeśli nie ma wpływu na model, główne są [modelu skonfigurowanego globalnie](/docs/config#models), agenci podrzędni podmiotem modelu agenta, który wywołał subagentę.
:::
```json title="opencode.json"
{
"agent": {
"plan": {
"model": "anthropic/claude-haiku-4-20250514"
}
}
}
```
Identyfikator modelu w konfiguracji OpenCode w `provider/model-id`. Na koniec, [OpenCode Zen](/docs/zen), przestrzeganie `opencode/gpt-5.1-codex` dla kodeksu GPT 5.1.
---
### Narzędzia
Kontroluj, które narzędzia są dostępne w tej agencji, za pomocą konfiguracji `tools`. Można włączyć lub dostępne narzędzie, ustawiając je na `true` lub `false`.
```json title="opencode.json" {3-6,9-12}
{
"$schema": "https://opencode.ai/config.json",
"tools": {
"write": true,
"bash": true
},
"agent": {
"plan": {
"tools": {
"write": false,
"bash": false
}
}
}
}
```
:::note
Konfiguracja specjalna dla agenta globalnego.
:::
Można także zastosować symboli wieloznacznych do kontrolowanych wielu narzędzi jednocześnie. Na przykład, aby wyłączyć wszystkie narzędzia z serwera MCP:
```json title="opencode.json"
{
"$schema": "https://opencode.ai/config.json",
"agent": {
"readonly": {
"tools": {
"mymcp_*": false,
"write": false,
"edit": false
}
}
}
}
```
[Dowiedz się więcej o narzędziach](/docs/tools).
---
### Uprawnienia
Może wystąpić możliwość działania, które może pozostać ostateczne przez agenta. Obecnie proste dla narzędzia `edit`, `bash` i `webfetch` można znaleźć w drodze:
- `"ask"` — Monituj o zatwierdzenie przed użyciem narzędzia
- `"allow"` — Zezwalaj na wszystkie operacje bez zatwierdzenia
- `"deny"` — Wyłączenie narzędzia
```json title="opencode.json"
{
"$schema": "https://opencode.ai/config.json",
"permission": {
"edit": "deny"
}
}
```
Można mieć odpowiedni dla każdego agenta.
```json title="opencode.json" {3-5,8-10}
{
"$schema": "https://opencode.ai/config.json",
"permission": {
"edit": "deny"
},
"agent": {
"build": {
"permission": {
"edit": "ask"
}
}
}
}
```
Można także istnieć w agentach Markdown.
```markdown title="~/.config/opencode/agents/review.md"
---
description: Code review without edits
mode: subagent
permission:
edit: deny
bash:
"*": ask
"git diff": allow
"git log*": allow
"grep *": allow
webfetch: deny
---
Only analyze code and suggest changes.
```
Można podłączyć do gniazda bash.
```json title="opencode.json" {7}
{
"$schema": "https://opencode.ai/config.json",
"agent": {
"build": {
"permission": {
"bash": {
"git push": "ask",
"grep *": "allow"
}
}
}
}
}
```
Może być przestrzegany globalnym.
```json title="opencode.json" {7}
{
"$schema": "https://opencode.ai/config.json",
"agent": {
"build": {
"permission": {
"bash": {
"git *": "ask"
}
}
}
}
}
```
Możesz także uzyskać symbolu wieloznacznego `*` do zarządzania uprawnieniami dla wszystkich użytkowników.
Ostatnie dostępne źródło pierwszeństwo, symbol wieloznaczny `*` na pierwszym miejscu, wyodrębnione na końcu.
```json title="opencode.json" {8}
{
"$schema": "https://opencode.ai/config.json",
"agent": {
"build": {
"permission": {
"bash": {
"*": "ask",
"git status *": "allow"
}
}
}
}
}
```
[Dowiedz się więcej o prawach](/docs/permissions).
---
### Tryb
Kontroluj tryb agenta za pomocą konfiguracji `mode`. Opcja `mode` umożliwiająca użycie środka.
```json title="opencode.json"
{
"agent": {
"review": {
"mode": "subagent"
}
}
}
```
Opcję `mode` można ustawić na `primary`, `subagent` lub `all`. Jeśli nie dotyczy `mode`, jest to `all`.
---
### Ukryty
Ukryj subagenta w menu autouzupełniania `@` za pomocą `hidden: true`. Przydatne w postępowaniu sądowym podagenci, potencjalnie być wywoływani programowo przez innych agentów, którzy korzystają z pomocy jako narzędzia.
```json title="opencode.json"
{
"agent": {
"internal-helper": {
"mode": "subagent",
"hidden": true
}
}
}
```
Wpływ tylko na użytkownika w menu autouzupełniania. Model może nadal wywoływać ukrytych agentów za pomocą narzędzi do zadań, funkcji użytkowych.
:::note
Dotyczy tylko agentów `mode: subagent`.
:::
---
### Uprawnienia do zadań
Kontroluj, których agenci podawców mogą wywołać za pomocą narzędzia zadanie za pomocą `permission.task`. Używa wzorców globalnych do elastycznego dopasowywania.
```json title="opencode.json"
{
"agent": {
"orchestrator": {
"mode": "primary",
"permission": {
"task": {
"*": "deny",
"orchestrator-*": "allow",
"code-reviewer": "ask"
}
}
}
}
}
```
Po ustawieniu wartości `deny` podagent zostanie usunięty z opisu narzędzia Zadania, więc model nie będzie gotowy do uruchomienia.
:::tip
Reguły są następujące w kolejności i **ostatnia reguła wygrywająca**. W zasadzie `orchestrator-planner` jest konfiguracją `*` (odmową), jak i `orchestrator-*` (zezwolenie), ale ponieważ `orchestrator-*` użytkownika po `*`, postać jest `allow`.
:::
:::tip
Zawsze można rozwiązać rozwiązanie, bezpośrednio poprzez menu autouzupełnieniania `@`, nawet jeśli wystąpią zadania agenta temu naprawiające.
:::
---
### Kolor
Dostosuj wygląd agenta w interfejsie użytkownika za pomocą opcji `color`. Wpływ na wygląd agenta w interfejsie.
Narodziny kościoła szesnastkowego (np. `#FF5733`) lub koloru motywu: `primary`, `secondary`, `accent`, `success`, `warning`, `error`, `info`.
```json title="opencode.json"
{
"agent": {
"creative": {
"color": "#ff6b6b"
},
"code-reviewer": {
"color": "accent"
}
}
}
```
---
### Góra P
Kontroluj różnorodność odpowiedzi za pomocą opcji `top_p`. Alternatywa dla temperatury w celu kontrolowanej braku wartości.
```json title="opencode.json"
{
"agent": {
"brainstorm": {
"top_p": 0.9
}
}
}
```
Wartość mieszkalna obejmuje zakres od 0,0 do 1,0. Niższe wartości są bardziej skoncentrowane, wyższe wartości są bardziej zaawansowane.
---
### nadal
Wszelkie inne konfiguracje w agentach **przekazane bezpośrednio** jako model sprzedawcy. Dostęp do funkcji i parametrów dostarczanych dla dostawcy.
Na przykład dzięki modelowi rozumowania OpenAI może kontrolować rozumowanie:
```json title="opencode.json" {6,7}
{
"agent": {
"deep-thinker": {
"description": "Agent that uses high reasoning effort for complex problems",
"model": "openai/gpt-5",
"reasoningEffort": "high",
"textVerbosity": "low"
}
}
}
```
Te dodatkowe cechy można zidentyfikować od modelu i dostawcy. Sprawdź swoje dostawcę pod kątem parametrów.
:::tip
Uruchomione `opencode models`, aby wyłączyć modele.
:::
---
## Utwórz agentów
Możesz stworzyć nowych agentów za pomocą innego polecenia:
```bash
opencode agent create
```
Wykonaj decyzję:
1. Zapytaj, gdzie zapisać agenta; globalne lub szczegółowe dla projektu.
2. Opisz tego, co agent powinien.
3. Wygeneruj właściwy monit systemowy i identyfikator.
4. Wejście do wybrania narzędzia, do którego agenta może być dostęp.
5. Na koniec pliku pliku przecen z konfiguracją agenta.
---
## Przypadki użycia
Oto kilka typowych zastosowań różnych agentów.
- **Agent użyciai**: Pełne prace programistyczne z dostępnymi narzędziami
- **Plan agenta**: Analiza i planowanie bez zmian
- **Agent recenzujący**: Przegląd kodu z odczytu i narzędzia do dokumentacji
- **Agent debugujący**: Koncentruje się na urządzeniu z dostępnymi narzędziami bash i odczytu
- **Agent Dokumentów**: Zapisywanie dokumentacji za pomocą operacji na plikach, ale bez konieczności posiadania kopii systemowych
---
## Przykład
Oto kilka przykładowych agentów, którzy mogą się przydatni.
:::tip
Czy masz agenta, który jest osobą towarzyszącą? [Prześlij PR](https://github.com/anomalyco/opencode).
:::
---
### Dokumentacja agenta
```markdown title="~/.config/opencode/agents/docs-writer.md"
---
description: Writes and maintains project documentation
mode: subagent
tools:
bash: false
---
You are a technical writer. Create clear, comprehensive documentation.
Focus on:
- Clear explanations
- Proper structure
- Code examples
- User-friendly language
```
---
### Audytor bezpieczeństwa
```markdown title="~/.config/opencode/agents/security-auditor.md"
---
description: Performs security audits and identifies vulnerabilities
mode: subagent
tools:
write: false
edit: false
---
You are a security expert. Focus on identifying potential security issues.
Look for:
- Input validation vulnerabilities
- Authentication and authorization flaws
- Data exposure risks
- Dependency vulnerabilities
- Configuration security issues
```

View File

@@ -0,0 +1,601 @@
---
title: interfejs wiersza polecany
description: Opcje i interfejs interfejsu CLI OpenCode.
---
import { Tabs, TabItem } from "@astrojs/starlight/components"
Interfejs CLI OpenCode uruchamia się [TUI](/docs/tui), gdy jest uruchamiany bez żadnych argumentów.
```bash
opencode
```
Ale także instalacja przez tę stronę. pełni przed programową interakcją z OpenCode.
```bash
opencode run "Explain how closures work in JavaScript"
```
---
### tui
Uruchomienie interfejsu użytkownika terminala OpenCode.
```bash
opencode [project]
```
#### Flagi
| Flaga | Krótkie | Opis |
| ------------ | ----- | ------------------------------------------ |
| `--continue` | `-c` | Kontynuuj ostatnią datę |
| `--session` | `-s` | Identyfikator sesji, aby kontynuować |
| `--prompt` | | Monituj o zastosowanie |
| `--model` | `-m` | Model wykorzystania w postaci dostawcy/modelu |
| `--agent` | | Agent do użycia |
| `--port` | | Port do słuchania |
| `--hostname` | | Nazwa hosta, która jest częścią składową |
---
## Polecenia
Interfejs CLI OpenCode zawiera także szczegółowe polecenie.
---
### agent
Zarządzaj agentami OpenCode.
```bash
opencode agent [command]
```
---
### przytwierdzić
Dołącz terminal do już działającego serwera zaplecza OpenCode uruchomionego za pomocą oprogramowania `serve` lub `web`.
```bash
opencode attach [url]
```
Możliwość zabezpieczenia z TUI ze zdalnym backendem OpenCode. Na przykład:
```bash
# Start the backend server for web/mobile access
opencode web --port 4096 --hostname 0.0.0.0
# In another terminal, attach the TUI to the running backend
opencode attach http://10.20.30.40:4096
```
#### Flagi
| Flaga | Krótkie | Opis |
| ----------- | ----- | --------------------------------- |
| `--dir` | | Katalog roboczy do uruchomienia TUI w |
| `--session` | `-s` | Identyfikator sesji, aby kontynuować |
---
#### co
Utwórz nowego agenta z niestandardową konfiguracją.
```bash
opencode agent create
```
To działanie poprowadził Cię przez proces tworzenia nowego agenta z niestandardowym monitem systemowym i konfiguracją narzędzia.
---
#### lista
Lista wszystkich agentów.
```bash
opencode agent list
```
---
### autoryzacja
Polecenie do zarządzania danymi uwierzytelniającymi i logowaniem dla dostawców.
```bash
opencode auth [command]
```
---
#### login
OpenCode jest dostępny przez listę dostawców w [Models.dev](https://models.dev), więc można użyć `opencode auth login` do skonfigurowania klucza API dla dowolnego dostawcy, który może być kontrolowany. Jest to możliwe w `~/.local/share/opencode/auth.json`.
```bash
opencode auth login
```
Po uruchomieniu OpenCode ładuje dostawców z pliku poświadczeń. A jeśli twoje siedliskiem są jakieś klucze lub plik `.env` w twoim projekcie.
---
#### lista
Wyświetlanie list wszystkich uwierzytelnionych dostawców przechowywanych w pliku poświadczeń.
```bash
opencode auth list
```
Lub krótka wersja.
```bash
opencode auth ls
```
---
#### wyloguj się
Wylogowuje Cię z dostawcy poprzez usunięcie go z pliku poświadczeń.
```bash
opencode auth logout
```
---
### githubie
Zarządzaj agentem GitHub w celu automatyzacji repozytorium.
```bash
opencode github [command]
```
---
#### Dowiedz się
Zainstaluj agenta GitHub w swoim repozytorium.
```bash
opencode github install
```
Spowoduje to konieczność uruchomienia akcji GitHub i przeprowadzi cię przez proces tworzenia. [Dowiedz się więcej](/docs/github).
---
#### chcesz
Uruchom agenta na GitHubie. Jest to zwykły użytkownik w akcjach GitHub.
```bash
opencode github run
```
##### Flagi
| Flaga | Opis |
| --------- | -------------------------------------- |
| `--event` | Zdarzenie próbne GitHub, aby sprawdzić agenta dla |
| `--token` | Osobisty token dostępu GitHub |
---
### mcp
Zarządzaj serwerem kluczowego modelu kontekstowego.
```bash
opencode mcp [command]
```
---
#### zaproponować
Dodaj serwer MCP do swojej konfiguracji.
```bash
opencode mcp add
```
To polecenie poprowadzić Cię przez proces dodawania lokalnego lub zdalnego serwera MCP.
---
#### lista
Wyświetlanie list wszystkich skonfigurowanych serwerów MCP i ich awarii.
```bash
opencode mcp list
```
Lub skrót krótkiej wersji.
```bash
opencode mcp ls
```
---
#### autoryzacja
Uwierzytelnij się za pomocą serwera MCP z włączoną funkcją OAuth.
```bash
opencode mcp auth [name]
```
Jeśli nie poddasz nazwy serwera, zostaniesz poproszony o wybranie jednego z serwerów obsługujących OAuth.
Możesz także uruchomić serwery obsługujące OAuth i ich status uwierzytelnienia.
```bash
opencode mcp auth list
```
Lub skrót krótkiej wersji.
```bash
opencode mcp auth ls
```
---
#### wyloguj się
Usuń doświadczenie OAuth dla serwera MCP.
```bash
opencode mcp logout [name]
```
---
#### odpluskwić
Debuguj problemy z połączeniem OAuth dla serwera MCP.
```bash
opencode mcp debug <name>
```
---
### modele
Wyświetlanie list modeli wszystkich skonfigurowanych dostawców.
```bash
opencode models [provider]
```
Do sterowania dostępnymi modelami u dostawców w `provider/model`.
Jest to wydanie do nazwy modelu, który jest używany w [twoja] (./config/).
Opcjonalnie możesz udostępnić identyfikator dostawcy, aby filtrować modele według tego dostawcy.
```bash
opencode models anthropic
```
#### Flagi
| Flaga | Opis |
| ----------- | ------------------------------------------------------------ |
| `--refresh` | Odśwież pamięć podręczną modele z models.dev |
| `--verbose` | Bardziej szczegółowe dane wyjściowe modelu (zawiera metadane, takie jak koszty) |
flagi `--refresh`, aby znaleźć listę modeli w pamięci podręcznej. Jest to wymagane, gdy dostawca dodano nowe modele, które chcesz zobaczyć w OpenCode.
```bash
opencode models --refresh
```
---
### chcesz
Uruchomiony opencode w trybie nieinteraktywnym, przekazując bezpośrednio monit.
```bash
opencode run [message..]
```
Jest to wymagane w przypadku tworzenia skryptów, automatyzacji lub gdy zostanie wysłane natychmiastowe przesłanie bez uruchomienia TUI. Na przykład.
```bash "opencode run"
opencode run Explain the use of context in Go
```
Można również zastosować, uruchamiając `opencode serve`, aby wyłączyć zimne uruchamianie serwera MCP przy każdym uruchomieniu:
```bash
# Start a headless server in one terminal
opencode serve
# In another terminal, run commands that attach to it
opencode run --attach http://localhost:4096 "Explain async/await in JavaScript"
```
#### Flagi
| Flaga | Krótkie | Opis |
| ------------ | ----- | ------------------------------------------------------------------ |
| `--command` | | Polecenie do uruchomienia, komunikatu dla argumentów |
| `--continue` | `-c` | Kontynuuj ostatnią datę |
| `--session` | `-s` | Identyfikator sesji, aby kontynuować |
| `--share` | | Udostępnij sesję |
| `--model` | `-m` | Model wykorzystania w postaci dostawcy/modelu |
| `--agent` | | Agent do użycia |
| `--file` | `-f` | Pliki do załączenia do wiadomości |
| `--format` | | Format: domyślny (sformatowany) lub json (surowe rozwiązanie JSON) |
| `--title` | | Tytuł sesji (używany skróconego monitu, jeśli nie podano wartości) |
| `--attach` | | Dołącz do skutecznego serwera opencode (np. http://localhost:4096) |
| `--port` | | Port dla serwera lokalnego (domyślnie jest do portu losowego) |
---
### podawać
Uruchom bezgłowy serwer OpenCode w celu uzyskania dostępu do API. Pełny interfejs HTTP w [dokumentacji serwera](/docs/server).
```bash
opencode serve
```
Spowoduje dostęp do serwera HTTP, który zapewnia dostęp do API opencode bez interfejsu TUI. Ustaw `OPENCODE_SERVER_PASSWORD`, aby włączyć podstawowe uwierzytelnianie HTTP (domyślna nazwa użytkownika do `opencode`).
#### Flagi
| Flaga | Opis |
| ------------ | ------------------------------------------ |
| `--port` | Port do słuchania |
| `--hostname` | Nazwa hosta, która jest częścią składową |
| `--mdns` | Włącz wykrywanie mDNS |
| `--cors` | Dodatkowe źródło użytkownika CORS |
---
### Sesja
Zarządzaj sesją OpenCode.
```bash
opencode session [command]
```
---
#### lista
Lista wszystkich sesji OpenCode.
```bash
opencode session list
```
##### Flagi
| Flaga | Krótkie | Opis |
| ------------- | ----- | ------------------------------------ |
| `--max-count` | `-n` | Ograniczony do ostatniego sesji |
| `--format` | | Format wyjściowy: tabela lub json (tabela) |
---
### statystyki
Pokaż statystyki wykorzystania tokenów i sesji szkoleniowych OpenCode.
```bash
opencode stats
```
#### Flagi
| Flaga | Opis |
| ----------- | --------------------------------------------------------------------------- |
| `--days` | Pokaż statystyki z ostatnich N dni (cały czas) |
| `--tools` | Liczba narzędzi do po specyfikacji (wszystkie) |
| `--models` | Pokaż podział modelu wykorzystania (domyślnie ukryty). Podajnik usługowy, aby górne N |
| `--project` | Filtruj według projektu (wszystkie projekty, pusty ciąg: dostęp projekt) |
---
### eksport
Eksportuj dane sesji jako JSON.
```bash
opencode export [sessionID]
```
Jeśli nie poddasz identyfikatora sesji, zostaniesz poproszony o wybranie jednego z sesji.
---
### import
Importuj dane sesji z pliku JSON lub adresu URL udostępniania OpenCode.
```bash
opencode import <file>
```
Możesz importować z lokalnego lub adresu URL OpenCode.
```bash
opencode import session.json
opencode import https://opncd.ai/s/abc123
```
---
### sieć
Uruchomiony bezgłowy serwer OpenCode z interfejsem internetowym.
```bash
opencode web
```
Spowoduje dostęp do serwera HTTP i otwarcie dostępu do OpenCode przez interfejs sieciowy. Ustaw `OPENCODE_SERVER_PASSWORD`, aby włączyć podstawowe uwierzytelnianie HTTP (domyślna nazwa użytkownika do `opencode`).
#### Flagi
| Flaga | Opis |
| ------------ | ------------------------------------------ |
| `--port` | Port do słuchania |
| `--hostname` | Nazwa hosta, która jest częścią składową |
| `--mdns` | Włącz wykrywanie mDNS |
| `--cors` | Dodatkowe źródło użytkownika CORS |
---
### akp
Uruchomiony serwer ACP (Agent Client Protocol).
```bash
opencode acp
```
Aby udostępnić serwer ACP, który komunikuje się poprzez stdin/stdout przy użyciu nd-JSON.
#### Flagi
| Flaga | Opis |
| ------------ | --------------------- |
| `--cwd` | Katalog roboczy |
| `--port` | Port do słuchania |
| `--hostname` | Nazwa hosta, która jest częścią składową |
---
### odinstaluj
Odinstaluj OpenCode i usuń wszystkie pliki powiązane.
```bash
opencode uninstall
```
#### Flagi
| Flaga | Krótkie | Opis |
| --------------- | ----- | ------------------------------------------- |
| `--keep-config` | `-c` | Zachowaj pliki konfiguracyjne |
| `--keep-data` | `-d` | Przechowuj dane sesji i szczepionek |
| `--dry-run` | | Pokaż, wykluczy bez usuwania |
| `--force` | `-f` | Pomiń monity o potwierdzenie |
---
### aktualizacja
Aktualizuje opencode do oryginalnej wersji lub oryginalnej wersji.
```bash
opencode upgrade [target]
```
Aby zachować ostatnią wersję.
```bash
opencode upgrade
```
Aby zobaczyć wersję pierwotną.
```bash
opencode upgrade v0.1.48
```
#### Flagi
| Flaga | Krótkie | Opis |
| ---------- | ----- | ----------------------------------------------------------------- |
| `--method` | `-m` | Zastosowana metoda instalacji; curl, npm, pnpm, kok, napar |
---
## Flagi globalne
Interfejs CLI kod opencode przyjmuje flagi globalne.
| Flaga | Krótkie | Opis |
| -------------- | ----- | ------------------------------------ |
| `--help` | `-h` | Wyświetl pomoc |
| `--version` | `-v` | Drukuj numer wersji |
| `--print-logs` | | Wydrukuj logi na stderr |
| `--log-level` | | Poziom dziennika (DEBUG, INFO, OSTRZEŻ, BŁĄD) |
---
## Zmienne warunki
OpenCode można wykryć za pomocą czyszczenia alternatywnych.
| Zmienna | Wpisz | Opis |
| ------------------------------------- | ------- | ------------------------------------------------- |
| `OPENCODE_AUTO_SHARE` | wartość logiczna | Automatycznie udostępniaj sesje |
| `OPENCODE_GIT_BASH_PATH` | ciąg | Ścieżka do pliku wykonywalnego Git Bash w systemie Windows |
| `OPENCODE_CONFIG` | ciąg | Ścieżka do pliku konfiguracyjnego |
| `OPENCODE_CONFIG_DIR` | ciąg | Ścieżka do katalogu konfiguracyjnego |
| `OPENCODE_CONFIG_CONTENT` | ciąg | Wbudowana treść konstrukcji JSON |
| `OPENCODE_DISABLE_AUTOUPDATE` | wartość logiczna | Wyłącz automatyczne sprawdzanie aktualizacji |
| `OPENCODE_DISABLE_PRUNE` | wartość logiczna | Wyłączenie regulowane |
| `OPENCODE_DISABLE_TERMINAL_TITLE` | wartość logiczna | Wyłącz automatycznie tytuł terminala |
| `OPENCODE_PERMISSION` | ciąg | Wbudowane prawo JSON |
| `OPENCODE_DISABLE_DEFAULT_PLUGINS` | wartość logiczna | Wyłączenie wtyczki |
| `OPENCODE_DISABLE_LSP_DOWNLOAD` | wartość logiczna | Wyłącz automatyczne pobieranie z serwera LSP |
| `OPENCODE_ENABLE_EXPERIMENTAL_MODELS` | wartość logiczna | Włącz modele eksperymentalne |
| `OPENCODE_DISABLE_AUTOCOMPACT` | wartość logiczna | Wyłącz automatyczne zagęszczanie kontekstu |
| `OPENCODE_DISABLE_CLAUDE_CODE` | wartość logiczna | Wyłączenie gry z `.claude` (podpowiedź + podłączenie) |
| `OPENCODE_DISABLE_CLAUDE_CODE_PROMPT` | wartość logiczna | Wyłącz czytanie `~/.claude/CLAUDE.md` |
| `OPENCODE_DISABLE_CLAUDE_CODE_SKILLS` | wartość logiczna | Wyłącz ładowanie `.claude/skills` |
| `OPENCODE_DISABLE_MODELS_FETCH` | wartość logiczna | Wyłączenie modeli pobierania ze źródeł niedostępnych |
| `OPENCODE_FAKE_VCS` | ciąg | Fałszywy sprzedawca VCS do celów testowych |
| `OPENCODE_DISABLE_FILETIME_CHECK` | wartość logiczna | Wyłączone sprawdzanie pliku w celu optymalizacji |
| `OPENCODE_CLIENT` | ciąg | Identyfikator klienta (domyślnie `cli`) |
| `OPENCODE_ENABLE_EXA` | wartość logiczna | Włącz narzędzie wyszukiwania internetowego Exa |
| `OPENCODE_SERVER_PASSWORD` | ciąg | Włącz uwierzytelnianie podstawowe dla `serve`/`web` |
| `OPENCODE_SERVER_USERNAME` | ciąg | Zakończenie stosowania użytkownika z autoryzacją (domyślnie `opencode`) |
| `OPENCODE_MODELS_URL` | ciąg | Niestandardowy adres URL do pobrania konfiguracji modeli |
---
### Eksperymentalny
Te zmienne możliwości użycia funkcji eksperymentalnych, które mogą zostać lub usunięte.
| Zmienna | Wpisz | Opis |
| ----------------------------------------------- | ------- | --------------------------------------- |
| `OPENCODE_EXPERIMENTAL` | wartość logiczna | Włącz wszystkie funkcje eksperymentalne |
| `OPENCODE_EXPERIMENTAL_ICON_DISCOVERY` | wartość logiczna | Włącz wykrywanie ikon |
| `OPENCODE_EXPERIMENTAL_DISABLE_COPY_ON_SELECT` | wartość logiczna | Wyłączenie kopiowania przy wyborze w TUI |
| `OPENCODE_EXPERIMENTAL_BASH_DEFAULT_TIMEOUT_MS` | numer | Domyślny limit czasu dla ukrytego bash w ms |
| `OPENCODE_EXPERIMENTAL_OUTPUT_TOKEN_MAX` | numer | Maksymalne tokeny wyjściowe dla odpowiedzi LLM |
| `OPENCODE_EXPERIMENTAL_FILEWATCHER` | wartość logiczna | Włącz obserwatora plików dla całego katalogu |
| `OPENCODE_EXPERIMENTAL_OXFMT` | wartość logiczna | Włącz formater oxfmt |
| `OPENCODE_EXPERIMENTAL_LSP_TOOL` | wartość logiczna | Włącz eksperymentalne narzędzie LSP |
| `OPENCODE_EXPERIMENTAL_DISABLE_FILEWATCHER` | wartość logiczna | Wyłącz obserwatora plików |
| `OPENCODE_EXPERIMENTAL_EXA` | wartość logiczna | Włącz funkcje eksperymentalne Exa |
| `OPENCODE_EXPERIMENTAL_LSP_TY` | wartość logiczna | Włącz eksperymentalne sprawdzanie typu LSP |
| `OPENCODE_EXPERIMENTAL_MARKDOWN` | wartość logiczna | Włącz funkcje eksperymentalne przecen |
| `OPENCODE_EXPERIMENTAL_PLAN_MODE` | wartość logiczna | Włącz tryb planu |

View File

@@ -0,0 +1,323 @@
---
title: Polecenia
description: Tworz polecany dla powtarzalnych zadań.
---
Polecenia ustawienia monitu, które może zostać uruchomione po uruchomieniu tego polecenia w TUI.
```bash frame="none"
/my-command
```
Polecenia stanowią dodatek do dostarczonych, takich jak `/init`, `/undo`, `/redo`, `/share`, `/help`. [Dowiedz się więcej](/docs/tui#commands).
---
## Utwórz źródło plikówwe
Utwórz pliki przecen w katalogu `commands/`, aby móc korzystać z usług polecanych.
Utwórz `.opencode/commands/test.md`:
```md title=".opencode/commands/test.md"
---
description: Run tests with coverage
agent: build
model: anthropic/claude-3-5-sonnet-20241022
---
Run the full test suite with coverage report and show any failures.
Focus on the failing tests and suggest fixes.
```
Frontmatter posiada właściwości. Treść staje się szablonem.
polecany, w rejestrze `/`, a następnie polecany.
```bash frame="none"
"/test"
```
---
## Skonfiguruj
Dostęp do sieci przez połączenie OpenCode lub udostępnia pliki w katalogu `commands/`.
---
### JSON
opcja opcja `command` w swoim OpenCode [config](/docs/config):
```json title="opencode.jsonc" {4-12}
{
"$schema": "https://opencode.ai/config.json",
"command": {
// This becomes the name of the command
"test": {
// This is the prompt that will be sent to the LLM
"template": "Run the full test suite with coverage report and show any failures.\nFocus on the failing tests and suggest fixes.",
// This is shown as the description in the TUI
"description": "Run tests with coverage",
"agent": "build",
"model": "anthropic/claude-3-5-sonnet-20241022"
}
}
}
```
Teraz możesz wybrać opcję w TUI:
```bash frame="none"
/test
```
---
### Obniżka cen
Można także definiować polecenia za pomocą plików Markdown. Trzymaj je w:
- Globalnie: `~/.config/opencode/commands/`
- Na projekt: `.opencode/commands/`
```markdown title="~/.config/opencode/commands/test.md"
---
description: Run tests with coverage
agent: build
model: anthropic/claude-3-5-sonnet-20241022
---
Run the full test suite with coverage report and show any failures.
Focus on the failing tests and suggest fixes.
```
Nazwa pliku przecen staje się nazwą referencyjną. Na przykład `test.md` pozwala
biegniesz:
```bash frame="none"
/test
```
---
## Szybko kliknij
Monity dotyczące niestandardowych urządzeń obsługujących kilka specjalnych symboli zastępczych i składni.
---
### Argumentacja
Przekazuj argumentację do ręki, używając symbolu zastępczego `$ARGUMENTS`.
```md title=".opencode/commands/component.md"
---
description: Create a new component
---
Create a new React component named $ARGUMENTS with TypeScript support.
Include proper typing and basic structure.
```
Uruchomienie reakcji z argumentami:
```bash frame="none"
/component Button
```
A `$ARGUMENTS` pozostanie pozostawione przez `Button`.
Dostępność do poszczególnych argumentów można również uzyskać za pomocą parametrów funkcjonalnych:
- `$1` - Pierwszy argument
- `$2` - Drugi argument
- `$3` - Trzeci argument
- Biorę dalej...
Na przykład:
```md title=".opencode/commands/create-file.md"
---
description: Create a new file with content
---
Create a file named $1 in the directory $2
with the following content: $3
```
Uruchomienie decyzji:
```bash frame="none"
/create-file config.json src "{ \"key\": \"value\" }"
```
Aby przechowywać:
- `$1` z `config.json`
- `$2` z `src`
- `$3` z `{ "key": "value" }`
---
### Wyjście z pamięci
urządzenie __!`command`_, aby wstawić dane wyjściowe [polecenie bash](/docs/tui#bash-commands) wykonaj obciążenie.
Na przykład, aby sprawdzić narzędzie analityczne:
```md title=".opencode/commands/analyze-coverage.md"
---
description: Analyze test coverage
---
Here are the current test results:
!`npm test`
Based on these results, suggest improvements to increase coverage.
```
Lub aby ostatnia zmiana:
```md title=".opencode/commands/review-changes.md"
---
description: Review recent changes
---
Recent git commits:
!`git log --oneline -10`
Review these changes and suggest any improvements.
```
Polecenia są uruchamiane w systemie wyjściowym, a ich dane wyjściowe są uruchamiane.
---
### Referencje plików
Dołącz pliki do swojego polecenia, używając `@`, zawierającego plik.
```md title=".opencode/commands/review-component.md"
---
description: Review component
---
Review the component in @src/components/Button.tsx.
Check for performance issues and suggest improvements.
```
Zawartość pliku jest automatycznie umieszczana w pliku.
---
## Opcje
Przyjrzyjmy się szczegółowo opcjom konfiguracji.
---
### Szablon
Opcja `template` została rozstrzygnięta, która została wysłana do LLM po wykonaniu polecenia.
```json title="opencode.json"
{
"command": {
"test": {
"template": "Run the full test suite with coverage report and show any failures.\nFocus on the failing tests and suggest fixes."
}
}
}
```
Jest to **wymagana** opcja konfiguracji.
---
### Opis
Możliwość użycia `description`, aby skrócony opis działania polecenia.
```json title="opencode.json"
{
"command": {
"test": {
"description": "Run tests with coverage"
}
}
}
```
Jest podany jako opis w TUI po wpisaniu polecenia.
---
### Agent
Zastosowanie zastosowania `agent`, aby określić, który [agent] (./agents) powinien zostać naprawiony do wyboru.
Jeśli jest to [podagent](/docs/agents/#subagents), rozwiązanie to ujawnione, podagenta.
Aby móc, ustawa `subtask` na `false`.
```json title="opencode.json"
{
"command": {
"review": {
"agent": "plan"
}
}
}
```
Jest to **opcjonalna** opcja konfiguracji. Jeśli nie jest dostępny, dostępny jest agentem.
---
### Podzadanie
Użyj wartości logicznej `subtask`, aby wymusić wywołanie [podagenta](/docs/agents/#subagents) polecenia.
Jest to narzędzie, jeśli chcesz, aby decyzja nie zanieczyszczała kontekstu i **zmusiło** agenta do działania jako subagent,
nawet jeśli `mode` jest podłączony na `primary` w konfiguracji [agent](/docs/agents).
```json title="opencode.json"
{
"command": {
"analyze": {
"subtask": true
}
}
}
```
Jest to **opcjonalna** opcja konfiguracji.
---
### Model
Używając konstrukcji `model`, aby znaleźć ukryty model dla tego polecenia.
```json title="opencode.json"
{
"command": {
"analyze": {
"model": "anthropic/claude-3-5-sonnet-20241022"
}
}
}
```
Jest to **opcjonalna** opcja konfiguracji.
---
## Wbudowany
opencode zawiera kilka istniejących urządzeń, takich jak `/init`, `/undo`, `/redo`, `/share`, `/help`; [dowiedz się więcej](/docs/tui#commands).
:::note
Polecenia mogą zostać usunięte.
:::
Jeśli zdefiniujesz tę samą nazwę, nastąpi decyzja.

View File

@@ -0,0 +1,685 @@
---
title: Konfig
description: Korzystanie z konstrukcji OpenCode JSON.
---
Możesz zagrać z OpenCode za pomocą pliku konfiguracyjnego JSON.
---
## Format
OpenCode obsługa formaty **JSON** i **JSONC** (JSON z komentarzami).
```jsonc title="opencode.jsonc"
{
"$schema": "https://opencode.ai/config.json",
// Theme configuration
"theme": "opencode",
"model": "anthropic/claude-sonnet-4-5",
"autoupdate": true,
}
```
---
## Lokalizacje
Możesz umieścić swoją instalację w kilku różnych lokalizacjach i jednym pliku
inne porządki pierwszeństwa.
:::note
Pliki konfiguracyjne są **łączone**, a nie zastępowane.
:::
Pliki konfiguracyjne są łączone ze sobą, a nie zastępowane. Ustawienia z lokalizacji konfiguracyjnych są konfigurowalne. Ewentualne konfiguracje zaistnieją tylko w przypadku sprzecznych kluczy. Niekonfliktowe ustawienia ze wszystkich zasobów zachowanych.
Na zestawie, przygotowana globalna ustawi `theme: "opencode"` i `autoupdate: true`, zestaw zestawu `model: "anthropic/claude-sonnet-4-5"`, ostateczna zestaw będzie zawierał wszystkie trzy ustawienia.
---
### Kolejność pierwszeństwa
Źródła konfiguracji są ładowane w kolejności (później źródła występują wcześniej):
1. **Zdalna konfiguracja** (od `.well-known/opencode`) ustawienia stosowane w organizacji
2. **Konfiguracja globalna** (`~/.config/opencode/opencode.json`) przestrzeganie użytkownika
3. **Konfiguracja niestandardowa** (`OPENCODE_CONFIG` env var) — zastosowanie zastąpienie
4. **Konfiguracja projektu** (`opencode.json` w projekcie) - ustawienia dla projektu specjalnego
5. **`.opencode` katalogi** - agent, poleca, półki
6. **Konfiguracja wbudowana** (`OPENCODE_CONFIG_CONTENT` env var) — zastąpienie środowiska wykonawczego
to, że konfiguracje projektu mogą być dostępne na poziomie globalnym konfiguracji, a konfiguracje globalne mogą być zdalne, zdalne konfiguracja organizacji.
:::note
W katalogach `.opencode` i `~/.config/opencode` użytkownicy są **nazwy w zwykłej mnogiej** dla podkatalogów: `agents/`, `commands/`, `modes/`, `plugins/`, `skills/`, `tools/` i `themes/`. Nazwy wydane (np. `agent/`) są również objęte gwarancją kompatybilności wstecznej.
:::
---
### Zdalny
Organizacje mogą być podłączone do łączy końcowych `.well-known/opencode`. Jest pobierane automatycznie po uwierzytelnieniu u dostawcy, który obsługuje.
Zdalna jest ładowana jako pierwsza i podstawowa. Wszystkie inne źródła konfiguracji (globalne, projektowe) mogą zostać udostępnione menu.
Na przykład, jeśli Twoja organizacja udostępnia serwery MCP, które są siecią internetową:
```json title="Remote config from .well-known/opencode"
{
"mcp": {
"jira": {
"type": "remote",
"url": "https://jira.example.com/mcp",
"enabled": false
}
}
}
```
Możesz udostępnić serwery w szczegółach:
```json title="opencode.json"
{
"mcp": {
"jira": {
"type": "remote",
"url": "https://jira.example.com/mcp",
"enabled": true
}
}
}
```
---
### Światowy
Umieść swoją globalną konfigurację OpenCode w `~/.config/opencode/opencode.json`. przestrzeganie funkcji globalnej, aby uzyskać dostęp do całego użytkownika, takie jak motywy, dostawca lub skróty klawiszowe.
Konfiguracja globalna zaawansowana, zdalne ustawienie konfiguracji.
---
### muszę zrobić projekt
Dodaj `opencode.json` w katalogu głównym projektu. Konfiguracja projektu ma priorytet wśród plików konfiguracyjnych — zaawansowane konfiguracje globalne i zdalne.
:::tip
Instalacja wstępna dla katalogu w katalogu.
:::
Kiedy OpenCode się uruchomi, szuka pliku konfiguracyjnego w katalogu Git.
Można również sprawdzić w Git i tego samego schematu, co globalny.
---
### Niestandardowa ścieżka
Niestandardowe rozwiązanie konfiguracyjne, różne opcje `OPENCODE_CONFIG`.
```bash
export OPENCODE_CONFIG=/path/to/my/custom-config.json
opencode run "Hello world"
```
Konfiguracja niestandardowa jest ładowana z konfiguracją globalną i konfiguracją projektu w kolejności pierwszych.
---
### Katalog niestandardowy
niestandardowy katalog konfiguracyjny za pomocą `OPENCODE_CONFIG_DIR`
zmienna środowiskowa. Katalog ten będzie przeszukiwany pod kątem agentów, ukryty,
tryby i wtyczki, tak jak standardowy katalog `.opencode` i powinienem
podążaj tą samą strukturą.
```bash
export OPENCODE_CONFIG_DIR=/path/to/my/config-directory
opencode run "Hello world"
```
Katalog niestandardowy jest ładowany po katalogach global config i `.opencode`, więc **może być połączony** z ich urządzeniami.
---
## Schemat
Plik konfiguracyjny ma schemat końcowy w [**`opencode.ai/config.json`**](https://opencode.ai/config.json).
Twój edytor powinien mieć możliwość sprawdzania poprawności i autouzupełniania na podstawie schematu.
---
### TUI
Możliwość podłączenia urządzenia dla TUI za pomocą opcji `tui`.
```json title="opencode.json"
{
"$schema": "https://opencode.ai/config.json",
"tui": {
"scroll_speed": 3,
"scroll_acceleration": {
"enabled": true
},
"diff_style": "auto"
}
}
```
Dostępna opcja:
- `scroll_acceleration.enabled` - Włącz przyspieszenie przewijania w rysiku macOS. **Ma pierwszeństwo przed `scroll_speed`.**
- `scroll_speed` - Niestandardowy mnożnik szybkości przewijania (domyślnie: `3`, minimalnie: `1`). Ignorowane, jeśli `scroll_acceleration.enabled` do `true`.
- `diff_style` Sterowanie renderowaniem różnicowym. `"auto"` dostępny jest do szerokości terminala, `"stacked"` zawsze pojawia się pojedyncza kolumna.
[Dowiedz się więcej o korzystaniu z TUI tutaj](/docs/tui).
---
### Serwer
Możliwość ustawienia serwera dla źródeł `opencode serve` i `opencode web` za pomocą opcji `server`.
```json title="opencode.json"
{
"$schema": "https://opencode.ai/config.json",
"server": {
"port": 4096,
"hostname": "0.0.0.0",
"mdns": true,
"mdnsDomain": "myproject.local",
"cors": ["http://localhost:5173"]
}
}
```
Dostępna opcja:
- `port` - Port do nasłuchiwania.
- `hostname` — nazwa hosta, która jest przeznaczona dla Ciebie. Gdy `mdns` jest połączony i nie jest ułożony inną nazwą hosta, jest połączony z `0.0.0.0`.
- `mdns` - Włącz wykrywanie usług mDNS. Dzięki temu zewnętrznemu urządzeniu w sieci może być przesyłany Twój serwer OpenCode.
- `mdnsDomain` - Niestandardowa nazwa domeny dla usług mDNS. Wartość domyślna do `opencode.local`. Przydatne do uruchomienia wielu zastosowań w tej samej sieci.
- `cors` - Dodatkowe źródło CORS podczas korzystania z serwera HTTP z punktu końcowego. Wartość musi być dostępna dla źródeł (schemat + host + port opcjonalny), np. `https://app.example.com`.
[Dowiedz się więcej o tutaj](/docs/server).
---
### Narzędzia
Dostępne narzędzia, z których można korzystać LLM, dostęp do opcji `tools`.
```json title="opencode.json"
{
"$schema": "https://opencode.ai/config.json",
"tools": {
"write": false,
"bash": false
}
}
```
[Dowiedz się więcej o narzędziach tutaj](/docs/tools).
---
### Modele
Możesz mieć dostawców i modele, które chcesz mieć w konfiguracji OpenCode, za pomocą opcji `provider`, `model` i `small_model`.
```json title="opencode.json"
{
"$schema": "https://opencode.ai/config.json",
"provider": {},
"model": "anthropic/claude-sonnet-4-5",
"small_model": "anthropic/claude-haiku-4-5"
}
```
Opcja `small_model` konfiguruje oddzielny model do lekkich zadań, takich jak generowanie tytułów. Domyślnie OpenCode wyparte przez dostępny model, jeśli jest dostępny u dostawcy, w razie potrzeby powróć do innego modelu.
Opcje dostawcy mogą być zainstalowane `timeout` i `setCacheKey`:
```json title="opencode.json"
{
"$schema": "https://opencode.ai/config.json",
"provider": {
"anthropic": {
"options": {
"timeout": 600000,
"setCacheKey": true
}
}
}
}
```
- `timeout` - Limit czasu trwania w milisekundach (domyślnie: 300000). Ustaw na `false`, aby wyłączyć.
- `setCacheKey` — wkrótce, że klucz pamięci podręcznej jest zawsze gotowy dla dostawcy.
Możesz także mieć [model lokalny](/docs/models#local). [Dowiedz się więcej](/docs/models).
---
#### Opcje dostawcy dla dostawcy
inne udostępnienie dodatkowych możliwości wyposażenia poza urządzeniami `timeout` i `apiKey`.
##### Podłoże Amazonki
Amazon Bedrock umożliwia podłączenie wyłącznika dla AWS:
```json title="opencode.json"
{
"$schema": "https://opencode.ai/config.json",
"provider": {
"amazon-bedrock": {
"options": {
"region": "us-east-1",
"profile": "my-aws-profile",
"endpoint": "https://bedrock-runtime.us-east-1.vpce-xxxxx.amazonaws.com"
}
}
}
}
```
- `region` — region AWS dla Bedrock (domyślnie jest do `AWS_REGION` env var lub `us-east-1`)
- `profile` - profil nazwany AWS z `~/.aws/credentials` (domyślnie `AWS_PROFILE` env var)
- `endpoint` — niestandardowy adres URL punktu końcowego dla punktów końcowych VPC. Jest to alias dla opcji ogólnej `baseURL` przy użyciu terminologii specjalnej dla AWS. Jeśli oba, pierwszeństwo ma `endpoint`.
:::note
Token okaziciela (`AWS_BEARER_TOKEN_BEDROCK` lub `/connect`) ma pierwszeństwo przed uwierzytelnianiem opartym na profilu. Aby uzyskać szczegółowe informacje, zobacz [pierwszeństwo uwierzytelniania](/docs/providers#authentication-precedence).
:::
[Dowiedz się więcej o budowie Amazon Bedrock](/docs/providers#amazon-bedrock).
---
### Motywy
Urządzenie zachęcające do korzystania z urządzeń OpenCode, za pomocą sieci `theme`.
```json title="opencode.json"
{
"$schema": "https://opencode.ai/config.json",
"theme": ""
}
```
[Dowiedz się więcej tutaj](/docs/themes).
---
### Agencja
Możliwość dostępności agentów do gniazd za pomocą opcji `agent`.
```jsonc title="opencode.jsonc"
{
"$schema": "https://opencode.ai/config.json",
"agent": {
"code-reviewer": {
"description": "Reviews code for best practices and potential issues",
"model": "anthropic/claude-sonnet-4-5",
"prompt": "You are a code reviewer. Focus on security, performance, and maintainability.",
"tools": {
// Disable file modification tools for review-only agent
"write": false,
"edit": false,
},
},
},
}
```
Możesz także uniknąć agentów przy użyciu plików przecen w `~/.config/opencode/agents/` lub `.opencode/agents/`. [Dowiedz się więcej tutaj](/docs/agents).
---
### Domyślny agent
Domyślnego agenta można ustawić za pomocą opcji `default_agent`. Wykrywacz, który jest używany, jeśli nie został ujawniony.
```json title="opencode.json"
{
"$schema": "https://opencode.ai/config.json",
"default_agent": "plan"
}
```
Agent domyślny musi być agentem (nie subagentem). Może być agentem aplikacji, taki jak `"build"` lub `"plan"`, albo ukryty przez Ciebie [agent niestandardowy](/docs/agents). Jeśli agent nie istnieje lub jest podagentem, OpenCode powróć do `"build"` z ostrzeżeniem.
Dotyczy urządzeń wszystkich interfejsów: TUI, CLI (`opencode run`), aplikacji komputerowej i akcji GitHub.
---
### Partycypujący
Możesz udostępnić [udostępnij](/docs/share) za pomocą opcji `share`.
```json title="opencode.json"
{
"$schema": "https://opencode.ai/config.json",
"share": "manual"
}
```
Działaj:
- `"manual"` Zezwalaj na ręczne korzystanie z pomocy narzędzi (domyślnie)
- `"auto"` - Automatycznie udostępniaj nowe rozmowy
- `"disabled"` - Całkowicie udostępnienie
Domyślnie jest rozwiązaniem na tryb medyczny, w którym należy jawnie udostępniać rozmowy za pomocą polecenia `/share`.
---
### Polecenia
Możesz korzystać z usług polecanych dla powtarzalnych zadań za pomocą opcji `command`.
```jsonc title="opencode.jsonc"
{
"$schema": "https://opencode.ai/config.json",
"command": {
"test": {
"template": "Run the full test suite with coverage report and show any failures.\nFocus on the failing tests and suggest fixes.",
"description": "Run tests with coverage",
"agent": "build",
"model": "anthropic/claude-haiku-4-5",
},
"component": {
"template": "Create a new React component named $ARGUMENTS with TypeScript support.\nInclude proper typing and basic structure.",
"description": "Create a new component",
},
},
}
```
Można także definiować polecenia przy użyciu plików Markdown w `~/.config/opencode/commands/` lub `.opencode/commands/`. [Dowiedz się więcej tutaj](/docs/commands).
---
### Krótki kluczowy
Możliwość zmiany skrótu klawiszowego za pomocą opcji `keybinds`.
```json title="opencode.json"
{
"$schema": "https://opencode.ai/config.json",
"keybinds": {}
}
```
[Dowiedz się więcej tutaj](/docs/keybinds).
---
### Automatyczna aktualizacja
OpenCode automatycznie pobierze każde nowe uruchomienie. Można skorzystać z opcji `autoupdate`.
```json title="opencode.json"
{
"$schema": "https://opencode.ai/config.json",
"autoupdate": false
}
```
Jeśli nie chcesz aktualizacji, ale chcesz podłączyć nową wersję, ustaw `autoupdate` na `"notify"`.
Działa tylko wtedy, gdy nie jest uruchamiana przy użyciu menedżera pakietów, jak Homebrew.
---
### Formacja
Można podać kod formacyjny za pomocą opcji `formatter`.
```json title="opencode.json"
{
"$schema": "https://opencode.ai/config.json",
"formatter": {
"prettier": {
"disabled": true
},
"custom-prettier": {
"command": ["npx", "prettier", "--write", "$FILE"],
"environment": {
"NODE_ENV": "development"
},
"extensions": [".js", ".ts", ".jsx", ".tsx"]
}
}
}
```
[Dowiedz się więcej o formaterach tutaj](/docs/formatters).
---
### Uprawnienia
Domyślnie opencode **zezwala na wszystkie działania** bez konieczności posiadania zgody. Można zmienić opcję `permission`.
Na przykład, aby można było wykryć, że narzędzie `edit` i `bash` wymaga zgody użytkownika:
```json title="opencode.json"
{
"$schema": "https://opencode.ai/config.json",
"permission": {
"edit": "ask",
"bash": "ask"
}
}
```
[Dowiedz się więcej o prawach tutaj](/docs/permissions).
---
### Zagęszczanie
Możesz kontrolować zachowanie zagęszczania kontekstu za pomocą opcji `compaction`.
```json title="opencode.json"
{
"$schema": "https://opencode.ai/config.json",
"compaction": {
"auto": true,
"prune": true
}
}
```
- `auto` - Automatycznie kompaktuj, gdy kontekst jest pełny (domyślnie: `true`).
- `prune` - Usuń stare dane narzędzia, aby zapisać tokeny (domyślnie: `true`).
---
### Obserwator
Rejestracja wzorca plików za pomocą `watcher`.
```json title="opencode.json"
{
"$schema": "https://opencode.ai/config.json",
"watcher": {
"ignore": ["node_modules/**", "dist/**", ".git/**"]
}
}
```
Wzorce są zgodne ze składnią glob. Dostęp tej opcji, aby móc zaszumione katalogi z plikami do przeglądania.
---
### Serwer MPK
Dostęp do serwerów MCP, których chcesz używać, za pośrednictwem sieci `mcp`.
```json title="opencode.json"
{
"$schema": "https://opencode.ai/config.json",
"mcp": {}
}
```
[Dowiedz się więcej tutaj](/docs/mcp-servers).
---
### Wtyki
[Wtyczki](/docs/plugins) rozszerzają OpenCode o podstawowe narzędzia, hooki i integracje.
Pliki plików wtyczek w `.opencode/plugins/` lub `~/.config/opencode/plugins/`. Można także włączyć wtyczkę z npm poprzez opcję `plugin`.
```json title="opencode.json"
{
"$schema": "https://opencode.ai/config.json",
"plugin": ["opencode-helicone-session", "@my-org/custom-plugin"]
}
```
[Dowiedz się więcej tutaj](/docs/plugins).
---
### Instrukcja
Instrukcja dla modelu, w której można zastosować opcję `instructions`.
```json title="opencode.json"
{
"$schema": "https://opencode.ai/config.json",
"instructions": ["CONTRIBUTING.md", "docs/guidelines.md", ".cursor/rules/*.md"]
}
```
Pobierana do schematów i wzorców globalnych do plików graficznych. [Dowiedz się więcej
o zasadach tutaj](/docs/rules).
---
### Niepełnosprawny sprzedawca
Zasilacz ładowany automatycznie za pomocą zasilacza `disabled_providers`. Jest to możliwe, gdy istnieje możliwość podłączenia ładowania niektórych dostawców, nawet jeśli dane uwierzytelniające są dostępne.
```json title="opencode.json"
{
"$schema": "https://opencode.ai/config.json",
"disabled_providers": ["openai", "gemini"]
}
```
:::note
`disabled_providers` pierwszeństwo przed `enabled_providers`.
:::
Opcja `disabled_providers` analiza tablica identyfikatorów dostawców. Gdy dostawca jest wyłączony:
- Nie istnieje możliwość wystąpienia zagrożenia, które jest możliwe do zastosowania.
- Nie nastąpi uruchomienie, nawet jeśli klucz API zostanie uruchomiony za pomocą polecenia `/connect`.
- Model dostawcy nie pojawia się na liście wyboru modeli.
---
### Włączeni dostawcy
Można znaleźć dostawców za pomoc `enabled_providers`. Po ustawieniu włączeni tylko dostawcy, a wszyscy będą obecni.
```json title="opencode.json"
{
"$schema": "https://opencode.ai/config.json",
"enabled_providers": ["anthropic", "openai"]
}
```
Jest to urządzenie, gdy urządzenie OpenCode jest używane tylko z urządzeniami, zamiast odłączać ich jedno po drugim.
:::note
`disabled_providers` pierwszeństwo przed `enabled_providers`.
:::
Jeśli obowiązująsz w `enabled_providers`, jak i `disabled_providers`, `disabled_providers` pierwszeństwo ze względu na kompatybilność wsteczną.
---
### Eksperymentalny
Klucz `experimental` zawiera opcje, które są początkiem rozwoju.
```json title="opencode.json"
{
"$schema": "https://opencode.ai/config.json",
"experimental": {}
}
```
:::caution
Opcje eksperymentalne nie są awaryjne. Jedna zmiana lub zmiana bez zniszczenia.
:::
---
## Zmienne
Możliwość wykorzystania danych zmiennych w plikach konfiguracyjnych, aby odwoływać się do zmiennych zewnętrznych i zawartości plików.
---
### Kop. zm
zastosowanie `{env:VARIABLE_NAME}`, aby zakończyć zmiennego przebiegu:
```json title="opencode.json"
{
"$schema": "https://opencode.ai/config.json",
"model": "{env:OPENCODE_MODEL}",
"provider": {
"anthropic": {
"models": {},
"options": {
"apiKey": "{env:ANTHROPIC_API_KEY}"
}
}
}
}
```
Jeżeli zmienna kontrolna nie jest skonfigurowana, należy zastosować do niej pusty ciąg znaków.
---
### Akta
źródło `{file:path/to/file}`, aby znaleźć zawartość pliku:
```json title="opencode.json"
{
"$schema": "https://opencode.ai/config.json",
"instructions": ["./custom-instructions.md"],
"provider": {
"openai": {
"options": {
"apiKey": "{file:~/.secrets/openai-key}"
}
}
}
}
```
Ścieżki plików mogą być:
- Względem katalogu konfiguracyjnego
- Lub nadrzędne kierowane się od `/` lub `~`
Sądzimy, że:
- Przechowywanie wrażliwych danych, takich jak klucze API, w oddzielnych plikach.
- Do udostępnienia dużych plików bez zaśmiecania konstrukcji.
- Udostępnianie fragmentów konfiguracji w wielu plikach konfiguracyjnych.

View File

@@ -0,0 +1,170 @@
---
title: Narzędzia specjalistyczne
description: Twórz narzędzi, które LLM mogą być uruchamiane w otwartym kodzie.
---
Narzędzia stosowane do funkcji, z których LLM może korzystać podczas rozmów. Współpracują z [wbudowanymi narzędziami] (./tools) opencode, wtyczka jak `read`, `write` i `bash`.
---
## Narzędzie do tworzenia
Narzędzia tworzą pliki **TypeScript** lub **JavaScript**. Definicja narzędzia może być odwoływana do skryptów napisanych w **dowolnym języku** — TypeScript lub JavaScript są używane tylko w tym samym narzędziu.
---
### Lokalizacja
Można je uruchomić:
- Lokalnie, umieszczając je w katalogu `.opencode/tools/` swojego projektu.
- Lub globalnie, umieszczając je w `~/.config/opencode/tools/`.
---
### Struktura
Najłatwiejszym sposobem tworzenia narzędzia jest pomocnika `tool()`, który zapewnia bezpieczeństwo i sprawdzanie poprawności.
```ts title=".opencode/tools/database.ts" {1}
import { tool } from "@opencode-ai/plugin"
export default tool({
description: "Query the project database",
args: {
query: tool.schema.string().describe("SQL query to execute"),
},
async execute(args) {
// Your database logic here
return `Executed query: ${args.query}`
},
})
```
**Nazwa pliku** staje się **nazwą narzędzia**. Pierwotne narzędzie `database`.
---
#### Wiele narzędzi na plik
Można także eksportować wiele narzędzi z jednego pliku. Każdy eksport staje się **oddzielnym językiem** o nazwie **`<filename>_<exportname>`**:
```ts title=".opencode/tools/math.ts"
import { tool } from "@opencode-ai/plugin"
export const add = tool({
description: "Add two numbers",
args: {
a: tool.schema.number().describe("First number"),
b: tool.schema.number().describe("Second number"),
},
async execute(args) {
return args.a + args.b
},
})
export const multiply = tool({
description: "Multiply two numbers",
args: {
a: tool.schema.number().describe("First number"),
b: tool.schema.number().describe("Second number"),
},
async execute(args) {
return args.a * args.b
},
})
```
Tworzy do dwóch narzędzi: `math_add` i `math_multiply`.
---
### Argumentacja
Do zdefiniowania argumentów można zastosować `tool.schema`, czyli po prostu [Zod](https://zod.dev).
```ts "tool.schema"
args: {
query: tool.schema.string().describe("SQL query to execute")
}
```
Można także bezpośrednio zaimportować [Zod](https://zod.dev) i zwyczajowo zwykły obiekt:
```ts {6}
import { z } from "zod"
export default {
description: "Tool description",
args: {
param: z.string().describe("Parameter description"),
},
async execute(args, context) {
// Tool implementation
return "result"
},
}
```
---
### Kontekst
Narzędzia kontekstowe charakterystycznej sesji:
```ts title=".opencode/tools/project.ts" {8}
import { tool } from "@opencode-ai/plugin"
export default tool({
description: "Get project information",
args: {},
async execute(args, context) {
// Access context information
const { agent, sessionID, messageID, directory, worktree } = context
return `Agent: ${agent}, Session: ${sessionID}, Message: ${messageID}, Directory: ${directory}, Worktree: ${worktree}`
},
})
```
`context.directory` jako katalogowy pracodawczy.
`context.worktree` dla katalogu głównego zwalczającego git.
---
## Przykład
### Napisz narzędzie w Pythonie
Napisz swoje narzędzie w języku angielskim. Oto przykład dodania dwóch liczb przy użyciu języka Python.
Fragment utworu jako skrypt w języku Python:
```python title=".opencode/tools/add.py"
import sys
a = int(sys.argv[1])
b = int(sys.argv[2])
print(a + b)
```
Utwór instrumentalny, który jest ukryty:
```ts title=".opencode/tools/python-add.ts" {10}
import { tool } from "@opencode-ai/plugin"
import path from "path"
export default tool({
description: "Add two numbers using Python",
args: {
a: tool.schema.number().describe("First number"),
b: tool.schema.number().describe("Second number"),
},
async execute(args, context) {
const script = path.join(context.worktree, ".opencode/tools/add.py")
const result = await Bun.$`python3 ${script} ${args.a} ${args.b}`.text()
return result.trim()
},
})
```
Tutaj istnieje narzędzie [`Bun.$`](https://bun.com/docs/runtime/shell) uruchamiające skryptu w języku Python.

View File

@@ -0,0 +1,76 @@
---
title: Ekosystem
description: Projekty i integracje zbudowane w OpenCode.
---
Zgromadzenie stowarzyszenia organizacji na OpenCode.
:::note
Chcesz zadać swój projekt badawczy z OpenCode do tej listy? Prześlij PR.
:::
Możesz także sprawdzić [awesome-opencode](https://github.com/awesome-opencode/awesome-opencode) i [opencode.cafe](https://opencode.cafe), grupę skupiającą ekosystem i społeczność.
---
## Wtyki
| Imię | Opis |
| --------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------- |
| [opencode-daytona](https://github.com/jamesmurdza/daytona/blob/main/guides/typescript/opencode/README.md) | Automatycznie uruchamiaj sesje OpenCode w izolowanych piaskownicach Daytona z synchronizacją git i podglądami na żywo |
| [sesja-helicone-opencode](https://github.com/H2Shami/opencode-helicone-session) | Automatycznie wstawiaj nagłówki sesji Helicone w celu grupowania urządzeń |
| [wstrzykiwanie typu opencode](https://github.com/nick-vi/opencode-type-inject) | Automatyczne wstrzykiwacze TypeScript/Svelte do odczytania plików za pomocą narzędzi wyszukiwania |
| [opencode-openai-codex-auth](https://github.com/numman-ali/opencode-openai-codex-auth) | wykorzystać do wykorzystania ChatGPT Plus/Pro zamiast kredytu API |
| [opencode-gemini-auth](https://github.com/jenslys/opencode-gemini-auth) | korzystać z planu Gemini zamiast rozliczeń API |
| [auth-antygrawitacja-opencode](https://github.com/NoeFabris/opencode-antigravity-auth) | Wykorzystanie z bezpłatnych modeli Antigravity zamiast rozliczeń API |
| [opencode-devcontainers](https://github.com/athal7/opencode-devcontainers) | Izolacja wielooddziałowych kontenerów deweloperskich z płytkami klonami i automatycznie przypisywanymi portami |
| [opencode-google-antigravity-auth](https://github.com/shekohex/opencode-google-antigravity-auth) | Wtyczka Google Antigravity OAuth z obsługą obsługi Google i bardziej niezawodną obsługą API |
| [czyszczenie-dynamiczne-kontekstu opencode](https://github.com/Tarquinen/opencode-dynamic-context-pruning) | Zoptymalizuj wykorzystanie tokena, usuwając przestarzałe dane wyjściowe narzędzia |
| [cytowane w opencode-websearch](https://github.com/ghoulr/opencode-websearch-cited.git) | Dodaj natywną obsługę wyszukiwania w sieci dla dostawców w stylu opartym na Google |
| [opencode-pty](https://github.com/shekohex/opencode-pty.git) | Uruchomienie agenta AI uruchamiającego się w tle w PTY i wytwarzanie ich interaktywnych danych. |
| [strategia-powłoki-opencode](https://github.com/JRedeker/opencode-shell-strategy) | Instrukcje dla nieinteraktywnych obowiązków - zaniechanie zawieszenia operacji zależnych od TTY |
| [opencode-wakatime](https://github.com/angristan/opencode-wakatime) | Śledź udostępnić OpenCode za pomocą Wakatime |
| [formatujący tabelę opencode-md](https://github.com/franlol/opencode-md-table-formatter/tree/main) | Oczyść tabelę przecenioną przez LLM |
| [opencode-szybkie-zastosowanie-morficzne](https://github.com/JRedeker/opencode-morph-fast-apply) | 10x szybsza edycja kodu dzięki Morph Fast Apply API i znacznikom leniwej edycji |
| [oh-mój-opencode](https://github.com/code-yeongyu/oh-my-opencode) | Agencje odpowiedzialne w tle, gotowe narzędzia LSP/AST/MCP, wyselekcjonowani agenci, kompatybilni z Claude Code |
| [powiadamiacz opencode](https://github.com/panta82/opencode-notificator) | Powiadomienia na pulpicie i alerty dźwiękowe dotyczące sesji OpenCode |
| [powiadamiający o opencode](https://github.com/mohak34/opencode-notifier) | Powiadomienia na pulpicie i alerty dźwiękowe dotyczące uprawnień, wyników i zdarzeń o błędach |
| [nazwa-opencode-zellij](https://github.com/24601/opencode-zellij-namer) | Automatyczne nazewnictwo sesji Zellij oparte na sztucznej inteligencji w oparciu o kontekst OpenCode |
| [umiejętność obsługi opencode](https://github.com/zenobi-us/opencode-skillful) | Zezwalaj agentom OpenCode na leniwe ładowanie podpowiedzi na podstawie odkrywania możliwości i wstrzykiwania |
| [superpamięć opencode](https://github.com/supermemoryai/opencode-supermemory) | Trwała pamięć w sesjach przy użyciu Supermemory |
| [@plannotator/opencode](https://github.com/backnotprop/plannotator/tree/main/apps/opencode-plugin) | Interaktywny przegląd planu z adnotacją wizualną i użytkową prywatną/offline |
| [@openspoon/podzadanie2](https://github.com/spoons-and-mirrors/subtask2) | Rozszerzony kod otwarty/polecenia do połączenia sieciowego ze szczegółową kontrolą bezpieczeństwa |
| [program planujący opencode](https://github.com/different-ai/opencode-scheduler) | Zaplanuj powtarzające się zadania, używając launchd (Mac) lub systemd (Linux) ze składaną cron |
| [mikod](https://github.com/vtemian/micode) | Ustrukturyzowana burza mózgów → Plan → Wdrożenie wyjścia z ciągłością sesji |
| [okto](https://github.com/vtemian/octto) | Interaktywny interfejs do burzy mózgów AI z formularzami kontrolnymi wielu pytań |
| [agencja-w tle opencode](https://github.com/kdcokenny/opencode-background-agents) | Agencje krytyczne w tle w stylu Claude Code z delegowaniem asynchronicznym i trwałością kontekstu |
| [powiadomienie o opencode](https://github.com/kdcokenny/opencode-notify) | Natywne uruchomienie systemu dla OpenCode wiesz, kiedy zadania zostaną zakończone |
| [obszar roboczy opencode](https://github.com/kdcokenny/opencode-workspace) | Lista wiązek orkiestracji wieloagentowej 16 dostępna, jedna instalacja |
| [drzewo robocze opencode](https://github.com/kdcokenny/opencode-worktree) | Drzewa robocze Git o zerowym tarciu dla OpenCode |
---
## Projektowanie
| Imię | Opis |
| ------------------------------------------------------------------------------------------ | ---------------------------------------------------------------- |
| [kimaki](https://github.com/remorses/kimaki) | Bot Discord do kontrolowania sesji OpenCode, zbudowany na SDK |
| [opencode.nvim](https://github.com/NickvanDyke/opencode.nvim) | Wtyczka Neovim do podpowiedzi, zbudowana w oparciu o API |
| [portal](https://github.com/hosenur/portal) | Interfejs sieciowy do urządzeń mobilnych dla OpenCode poprzez Tailscale/VPN |
| [szablon wtyczki opencode](https://github.com/zenobi-us/opencode-plugin-template/) | Szablon do budowy wtyczek OpenCode |
| [opencode.nvim](https://github.com/sudo-tee/opencode.nvim) | Frontend Neovim dla opencode - agent kodujący AI oparty na terminalu |
| [ai-sdk-provider-opencode-sdk](https://github.com/ben-vargas/ai-sdk-provider-opencode-sdk) | Stosowanie Vercel AI SDK do użytku z OpenCode poprzez @opencode-ai/sdk |
| [OpenChamber](https://github.com/btriapitsyn/openchamber) | Aplikacja internetowa/stacjonarna i rozszerzenie VS Code dla OpenCode |
| [OpenCode-Obsydian](https://github.com/mtymek/opencode-obsidian) | Wtyczka Obsidian osadzająca OpenCode w interfejsie użytkownika Obsidian |
| [OpenWork](https://github.com/different-ai/openwork) | Alternatywa typu open source dla Claude Cowork, obsługa przez OpenCode |
| [ocx](https://github.com/kdcokenny/ocx) | Menedżer rozszerzony OpenCode z przenośnymi, izolowanymi profilami. |
| [CodeNomad](https://github.com/NeuralNomadsAI/CodeNomad) | Aplikacja komputerowa, internetowa, mobilna i zdalna dla OpenCode |
---
## Agencja
| Imię | Opis |
| ----------------------------------------------------------------- | ------------------------------------------------------------ |
| [Agent](https://github.com/Cluster444/agentic) | Modułowi agencje i polecenia AI do rozwoju strukturalnego |
| [agencja-opencode](https://github.com/darrenhinde/opencode-agents) | Konfiguracje, podpowiedzi, agencje i wtyczki usprawniające przepływ pracy |

View File

@@ -0,0 +1,170 @@
---
title: Przedsiębiorstwo
description: Bezpieczne korzystanie z OpenCode w Twojej organizacji.
---
import config from "../../../../config.mjs"
export const email = `mailto:${config.email}`
OpenCode Przedsiębiorstwo jest przeznaczone dla organizacji, która ma dostęp do zasobów, że ich kod i dane nigdy nie opuszczą infrastruktury. Może zostać zarejestrowany za pomocą zapachuralizowanej konfiguracji, która integruje się z logowaniem jednokrotnym i uruchomieniem bramą AI.
:::note
OpenCode nie przechowuje żadnego kodu ani danych kontekstowych.
:::
Aby skorzystać z pracy z OpenCode Przedsiębiorstwo:
1. Przeprowadź próbę wewnętrzną ze swoim systemem.
2. **<a href={email}>Skontaktuj się z nami</a>**, aby omówić ceny i opcję konfiguracji.
---
## Test
OpenCode jest oprogramowaniem typu open source i nie przechowuje żadnego kodu ani danych kontekstowych, więc programiści mogą po prostu [zacząć](/docs/) i próbować próbną.
---
### Obsługa danych
**OpenCode nie dotyczy kodu źródłowego ani danych kontekstowych.** Całe zdarzenie odbywa się lokalnie lub poprzez bezpośrednio wywołane API do twojego dostawcy AI.
to, że korzystasz z usług dostawcy, lub dostawcy zaufania
Brama AI, możesz bezpłatnie korzystać z OpenCode.
Zastrzeżeniem jest opcjonalna funkcja `/share`.
---
#### Dzielenie się rozmowami
Jeśli użytkownicy są połączeni z `/share`, połączenie jest połączone z danymi, które zostały przesłane do usług, które są udostępniane przez hosty tych użytkowników w opencode.ai.
Dane są aktualnie dostępne przez sieć brzegową naszego CDN i są buforowane na brzegu w pobliżu Twoich użytkowników.
Zalecamy tę opcję na okres próbny.
```json title="opencode.json"
{
"$schema": "https://opencode.ai/config.json",
"share": "disabled"
}
```
[Więcej informacji o udostępnianiu](/docs/share).
---
### Własność kodu
**Jesteś właścicielem całości kodu źródłowego przez OpenCode.** Nie ma żadnych ograniczeń licencyjnych ani należących do własności.
---
## Wycena
W przypadku OpenCode Enterprise model per-seat. Jeśli posiadasz własną bramkę LLM, nie pobieramy opłat za korzystanie z tokenów. Aby uzyskać więcej informacji na temat, jeśli jest możliwe, **<a href={email}>skontaktuj się z nami</a>**.
---
## Zastosowanie
Gdy zasięgsz okres próbny i nadzorujesz użytkowanie z OpenCode na
swoją organizację, możesz **<a href={email}>skontaktować się z nami</a>**, aby omówić te dźwięki
opcja cenowa i wdrożeniowa.
---
### Konfiguracja centralna
Możliwości wykorzystania OpenCode tak, aby skorzystać z jednego zastosowania dla całej organizacji.
Tę zapachową konfigurację można zintegrować z dostawcą SSO i specyfikacje wszyscy użytkownicy mają dostęp wyłącznie do bram wewnętrznych AI.
---
### Integracja SSO
Dzięki zastosowaniu konfiguracji OpenCode może zostać włączone z dostawcą SSO Twojej organizacji w celu uwierzytelnienia.
Dzięki temu OpenCode może uzyskać dane uwierzytelniające dla wewnętrznej bramy AI za pośrednictwem transmisji systemu zarządzania tożsamością.
---
### Wewnętrzna bramka AI
Dzięki zastosowaniu konfiguracji OpenCode można również skorzystać z tego, że można korzystać tylko z wewnętrznych bram AI.
Możesz także dołączyć do wszystkich innych dostawców sztucznej inteligencji, upewniając się, że wszystkie elementy przechodzą przez zatwierdzenie wykorzystania Twojej organizacji.
---
### Hosting własny
Zalecamy, aby można było je udostępnić, aby Twoje dane nigdy nie zostały opuszczone
Twoja organizacja może być pomocna w utrzymaniu ich w Twojej infrastrukturze.
Jest to obecnie w naszym planie działania. Jeśli jesteś zainteresowany, **<a href={email}>daj nam znać</a>**.
---
## Często zadawane pytania
<details>
<summary>What is OpenCode Enterprise?</summary>
OpenCode Przedsiębiorstwo jest przeznaczone dla organizacji, która ma dostęp do zasobów, że ich kod i dane nigdy nie opuszczą infrastruktury. Może zostać zarejestrowany za pomocą zapachuralizowanej konfiguracji, która integruje się z logowaniem jednokrotnym i uruchomieniem bramą AI.
</details>
<details>
<summary>How do I get started with OpenCode Enterprise?</summary>
Po prostu uruchom wersję próbną ze swoim. OpenCode urządzenia niezabezpieczone kodu ani danych kontekstowych, co ułatwia uruchomienie pracy.
**<a href={email}>skontaktuj się z nami</a>**, aby omówić ceny i wybrać opcję.
</details>
<details>
<summary>How does enterprise pricing work?</summary>
Oferujemy ceny korporacyjne za jedno stanowisko. Jeśli posiadasz własną bramkę LLM, nie pobieramy opłat za korzystanie z tokenów. Aby uzyskać więcej informacji, **<a href={email}>skontaktuj się z nami</a>**, aby uzyskać wynik określony dla potrzeb Twojej organizacji.
</details>
<details>
<summary>Is my data secure with OpenCode Enterprise?</summary>
Tak. OpenCode nie przechowuje kodu ani danych kontekstowych. Całe zdarzenie odbywa się lokalnie lub poprzez bezpośrednie wywołanie API przez dostawcę AI. Dostęp do konfiguracji i integracji z logowaniem jednokrotnym Twoje dane pozostają bezpieczne w infrastrukturze organizacji.
</details>
<details>
<summary>Can we use our own private NPM registry?</summary>
OpenCode obsługuje prywatny rejestry npm poprzez natywną usługę plików `.npmrc` Buna. Jeśli Twoja organizacja korzysta z rejestru prywatnego, takiego jak JFrog Artifactory, Nexus lub wylot, przed uruchomieniem OpenCode się, że programiści zostali uwierzytelnieni.
Aby zapewnić uwierzytelnianie w rejestrze prywatnym:
```bash
npm login --registry=https://your-company.jfrog.io/api/npm/npm-virtual/
```
Spowoduje to do `~/.npmrc` ze szczegółami uwierzytelniania. OpenCode zrobi to automatycznie
podniesc do.
:::caution
Przed uruchomieniem OpenCode musisz być zalogowany do rejestru prywatnego.
:::
Alternatywnie możesz skorzystać z pliku `.npmrc`:
```bash title="~/.npmrc"
registry=https://your-company.jfrog.io/api/npm/npm-virtual/
//your-company.jfrog.io/api/npm/npm-virtual/:_authToken=${NPM_AUTH_TOKEN}
```
Programiści muszą się zgłosić do rejestru prywatnego przed uruchomieniem OpenCode, aby mieć dostęp, że pakiety będą dostępne z rejestru przedsiębiorstwa.
</details>

View File

@@ -0,0 +1,130 @@
---
title: Formatery
description: OpenCode używa formaterów specyficznych dla języka.
---
OpenCode automatycznie formatuje pliki po ich zapisaniu lub edycję przy użyciu formaterów przesyłanych dla języka. Dzięki temu wygenerowany kod będzie używany ze stylami kodu Twojego projektu.
---
## Wbudowany
OpenCode zawiera kilka wbudowanych formaterów dla nauki języków i frameworków. Zawiera listę formaterów, rozszerzonych plików oraz rozszerzenia i konfiguratory, których potrzebujesz.
| Formater | Rozszerzenia | Wymagania |
| -------------------- | -------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------- |
| gofmt | .idź | Komenda `gofmt` dostępna |
| ryzyko | .ex, .exs, .eex, .heex, .leex, .neex, .sface | Komenda `mix` dostępna |
| ładniejsza | .js, .jsx, .ts, .tsx, .html, .css, .md, .json, .yaml i [więcej](https://prettier.io/docs/en/index.html) | Zależność `prettier` w `package.json` |
| biom | .js, .jsx, .ts, .tsx, .html, .css, .md, .json, .yaml i [więcej](https://biomejs.dev/) | `biome.json(c)` plik konfiguracyjny |
| zyg | .zig, .zon | Komenda `zig` dostępna |
| formatuj brzęk | .c, .cpp, .h, .hpp, .ino i [więcej](https://clang.llvm.org/docs/ClangFormat.html) | `.clang-format` plik konfiguracyjny |
| ktlint | .kt, .kts | Komenda `ktlint` dostępna |
| kryza | .py, .pyi | Komenda `ruff` dostępna w konstrukcji |
| rustfmt | .rs | Komenda `rustfmt` dostępna |
| załadunek | .rs | Komenda `cargo fmt` dostępna |
| UV | .py, .pyi | Komenda `uv` dostępna |
| rubocop | .rb, .rake, .gemspec, .ru | Komenda `rubocop` dostępna |
| standardowe | .rb, .rake, .gemspec, .ru | Komenda `standardrb` dostępna |
| htmlupiększacz | .erb, .html.erb | Komenda `htmlbeautifier` dostępna |
| powietrze | .R | Komenda `air` dostępna |
| strzałka | .dart | Komenda `dart` dostępna |
| formatuj ocaml | .ml, .mli | Dostępna opcja `ocamlformat` i plik konfiguracyjny `.ocamlformat` |
| terraforma | .tf, .tfvars | Komenda `terraform` dostępna |
| blask | .blask | Komenda `gleam` dostępna |
| nixfmt | .nix | Komenda `nixfmt` dostępna |
| shfmt | .sh, .bash | Komenda `shfmt` dostępna |
| kufel | .php | Zależność `laravel/pint` w `composer.json` |
| oxfmt (eksperymentalny) | .js, .jsx, .ts, .tsx | wykonanie `oxfmt` w `package.json` i [flaga eksperymentalna zmienna env](/docs/cli/#experimental) |
| ormolu | .hs | Komenda `ormolu` dostępna |
Jeśli więc Twój projekt zawiera `prettier` w `package.json`, OpenCode automatycznie przejdź do podmiote.
---
## Jak to działa
Kiedy OpenCode zapisuje lub edytuje plik:
1. Badanie pliku dotyczącego wszystkich danych formaterów.
2. Uruchamia decyzje wykonawcze formatujące na plik.
3. Automatycznie stosuje zmiany formatowania.
Dziesięć procesów zachodzi w tle, konieczne jest zachowanie stylów kodu bez konieczności wykonania czynności czynnościowych.
---
## Skonfiguruj
Można dostosować formatery za pomocą sekcji `formatter` w konstrukcji OpenCode.
```json title="opencode.json"
{
"$schema": "https://opencode.ai/config.json",
"formatter": {}
}
```
obsługiwane formatyzator Zobacz elementy:
| Nieruchomość | Wpisz | Opis |
| ------------- | -------- | ------------------------------------------------------- |
| `disabled` | wartość logiczna | Ustaw tę opcję na `true`, aby wyłączyć formater |
| `command` | ciąg[] | Polecenie uruchomienia formatowania |
| `environment` | obiekt | Zmienne ustawienia do ustawień podczas uruchamiania programu formatującego |
| `extensions` | ciąg[] | Rozszerzenia plików, które powinny opuścić ten formater |
Spójrzmy na kilka przykładów.
---
### Wyłączanie formaterów
Aby globalnie wyłączyć **wszystkie** formatery, ustaw `formatter` na `false`:
```json title="opencode.json" {3}
{
"$schema": "https://opencode.ai/config.json",
"formatter": false
}
```
Aby wyłączyć **określony** formater, ustaw `disabled` na `true`:
```json title="opencode.json" {5}
{
"$schema": "https://opencode.ai/config.json",
"formatter": {
"prettier": {
"disabled": true
}
}
}
```
---
### Niestandardowe formatery
Może wystąpić, gdyby nastąpiło nowe, uruchomienie, zmienne udostępnienie i udostępnienie plików:
```json title="opencode.json" {4-14}
{
"$schema": "https://opencode.ai/config.json",
"formatter": {
"prettier": {
"command": ["npx", "prettier", "--write", "$FILE"],
"environment": {
"NODE_ENV": "development"
},
"extensions": [".js", ".ts", ".jsx", ".tsx"]
},
"custom-markdown-formatter": {
"command": ["deno", "fmt", "$FILE"],
"extensions": [".md"]
}
}
}
```
Symbol zastępczy **`$FILE`** w poleceniu pochodziony z formatowanego pliku.

View File

@@ -0,0 +1,321 @@
---
title: GitHub
description: Użyj OpenCode w problemach z GitHubem i zastosujch ściągnięcia.
---
OpenCode integruje się z przepływem pracy w GitHub. Wspomnij o `/opencode` lub `/oc` w swoim komentarzu, a OpenCode wykonaj zadania w ramach modułu uruchamiającego GitHub Actions.
---
## Cechy
- **Problem związany z segregacją**: Poproś OpenCode o szczegółowe wyjaśnienie problemu i wyjaśnienie go.
- **Napraw i zaimplementuj**: Poproś OpenCode o naprawienie problemu lub zaimplementowanie funkcji. Będzie dostępny w następnym oddziale i wysyłać PR ze stosowaniem dodatku.
- **Bezpieczny**: OpenCode działa w modułach sprzętowych GitHuba.
---
## Instalacja
Uruchomione dalsze postępowanie w przypadku wystąpienia w repozytorium GitHub:
```bash
opencode github install
```
Aby przeprowadzić Cię przez proces instalacji aplikacji GitHub, utwórz działanie i skonfiguruj wpisy tajnych.
---
### Konfiguracja ręczna
Można też uszkodzić to rozwiązanie.
1. **Zainstaluj aplikację GitHub**
Wejdź na [**github.com/apps/opencode-agent**](https://github.com/apps/opencode-agent). wystąpienie się, że jest natychmiastowe w repozytorium usuwam.
2. **Dodaj przepływ pracy**
Dodaj zdalny plik pracy do `.github/workflows/opencode.yml` w swoim repozytorium. wystąpił, że ustawiłeś sędziego `model` i wymagany klucz API w `env`.
```yml title=".github/workflows/opencode.yml" {24,26}
name: opencode
on:
issue_comment:
types: [created]
pull_request_review_comment:
types: [created]
jobs:
opencode:
if: |
contains(github.event.comment.body, '/oc') ||
contains(github.event.comment.body, '/opencode')
runs-on: ubuntu-latest
permissions:
id-token: write
steps:
- name: Checkout repository
uses: actions/checkout@v6
with:
fetch-depth: 1
persist-credentials: false
- name: Run OpenCode
uses: anomalyco/opencode/github@latest
env:
ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }}
with:
model: anthropic/claude-sonnet-4-20250514
# share: true
# github_token: xxxx
```
3. **Przechowuj klucze API w tajemnicy**
W **ustawieniach** swojej organizacji lub projektu rozwiń **Sekretne i zmienne** po lewej stronie i wybierz **Działania**. Dodałem wymagane klucze API.
---
## Konfiguracja
- `model`: Model używany z OpenCode. Przyjmuje format `provider/model`. To **wymagane**.
- `agent`: Agent, którego należy używać. Musi być odległym agentem. Wraca do `default_agent` z konfiguracją lub `"build"`, jeśli nie został znaleziony.
- `share`: Czyć funkcję sesji OpenCode. Domyślnie **true** dla repozytoriów publicznych.
- `prompt`: Opcjonalny niestandardowy monit o zastąpienie przestrzegania zachowania. Wykorzystanie tego, aby dostosować sposób przetwarzania przez OpenCode.
- `token`: opcjonalny token dostępu GitHub podstawowe operacje, takie jak tworzenie komentarzy, zatwierdzanie zmian i otwieranie zastosowania ściągnięcia. Domyślnie OpenCode używa tokena dostępu do instalacji z aplikacji OpenCode GitHub, więc zatwierdzenia, komentarze i zasady ściągnięcia widoczne jako źródło z aplikacji.
Alternatywnie możesz użyć [wbudowanego `GITHUB_TOKEN`](https://docs.github.com/en/actions/tutorials/authenticate-with-github_token) modułu uruchamiającego GitHub Action bez instalacji aplikacji OpenCode GitHub. Pamiętaj tylko o przyznaniu wymaganych mocy w przepływie pracy:
```yaml
permissions:
id-token: write
contents: write
pull-requests: write
issues: write
```
Jeśli chcesz, możesz także użyć [osobistych tokenów dostępu](https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/managing-your-personal-access-tokens)(PAT).
---
## Obsługiwane wydarzenia
OpenCode może zostać wywołany przez zdarzenie GitHub:
| Typ zdarzenia | Wywołane przez | Szczegóły |
| ----------------------------- | -------------------------------------- | ----------------------------------------------------------------------------------------------------------------- |
| `issue_comment` | Skomentuj problem lub PR | Wspomnij o `/opencode` lub `/oc` w swoim komentarzu. OpenCode odczytuje kontekst i może być częścią składową, otwieraną przez PR lub odpowiedzialną. |
| `pull_request_review_comment` | Komentarz określonym kodem w PR | Wspomnij o `/opencode` lub `/oc` podczas przeglądania kodu. OpenCode źródło pochodzenia, numery linii i kontekst różnicowy. |
| `issues` | Wydanie otwarte lub edytowane | Automatycznie wyzwalaj OpenCode po utworzeniu lub zmodyfikowaniu problemów. Wymaga wejścia `prompt`. |
| `pull_request` | PR otwarty lub zaktualizowany | Automatycznie wyzwalaj OpenCode, gdy PR są otwierane, synchronizowane lub ponownie otwierane. Przydatne w przypadku automatycznych znajomych. |
| `schedule` | Harmonogram oparty na Cron | Uruchom OpenCode zgodnie z harmonogramem. Wymagane wejście `prompt`. Dane wejściowe trafiają do dzienników i trafiań PR (nie ma problemu z recenzją). |
| `workflow_dispatch` | Ręczny wyłącznik z interfejsu użytkownika GitHub | Uruchom OpenCode na karcie Akcje. Wymagane wejście `prompt`. Dane wejściowe trafiają do dzienników i odbiorców PR. |
### Przykład harmonogramu
Uruchamiaj OpenCode zgodnie z harmonogramem, aby wykonać zautomatyzowane zadania:
```yaml title=".github/workflows/opencode-scheduled.yml"
name: Scheduled OpenCode Task
on:
schedule:
- cron: "0 9 * * 1" # Every Monday at 9am UTC
jobs:
opencode:
runs-on: ubuntu-latest
permissions:
id-token: write
contents: write
pull-requests: write
issues: write
steps:
- name: Checkout repository
uses: actions/checkout@v6
with:
persist-credentials: false
- name: Run OpenCode
uses: anomalyco/opencode/github@latest
env:
ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }}
with:
model: anthropic/claude-sonnet-4-20250514
prompt: |
Review the codebase for any TODO comments and create a summary.
If you find issues worth addressing, open an issue to track them.
```
W przypadku wystąpienia danych wyjściowych `prompt` są **wymagane**, które nie są dostarczane, z których można wyodrębnić instrukcje. Zaplanowane przepływomierze pracy bez kontekstu użytkownika, który został uruchomiony, więc przepływ pracy musi `contents: write` i `pull-requests: write`, wystąpisz, że OpenCode utworzył główne lub PR.
---
### Przykład żądania ściągnięcia
Automatycznie przeglądaj żądania ściągnięcia po ich otwarciu lub aktualizacji:
```yaml title=".github/workflows/opencode-review.yml"
name: opencode-review
on:
pull_request:
types: [opened, synchronize, reopened, ready_for_review]
jobs:
review:
runs-on: ubuntu-latest
permissions:
id-token: write
contents: read
pull-requests: read
issues: read
steps:
- uses: actions/checkout@v6
with:
persist-credentials: false
- uses: anomalyco/opencode/github@latest
env:
ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }}
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
model: anthropic/claude-sonnet-4-20250514
use_github_token: true
prompt: |
Review this pull request:
- Check for code quality issues
- Look for potential bugs
- Suggest improvements
```
W przypadku zdarzenia `pull_request`, jeśli nie podano `prompt`, OpenCode użytkownika przeglądającego ściągnięcie.
---
### Przykład segregacji problemów
Automatycznie segreguj nowe problemy. Dziesięć przykładów filtruje do kont starszych niż 30 dni w celu ograniczenia spamu:
```yaml title=".github/workflows/opencode-triage.yml"
name: Issue Triage
on:
issues:
types: [opened]
jobs:
triage:
runs-on: ubuntu-latest
permissions:
id-token: write
contents: write
pull-requests: write
issues: write
steps:
- name: Check account age
id: check
uses: actions/github-script@v7
with:
script: |
const user = await github.rest.users.getByUsername({
username: context.payload.issue.user.login
});
const created = new Date(user.data.created_at);
const days = (Date.now() - created) / (1000 * 60 * 60 * 24);
return days >= 30;
result-encoding: string
- uses: actions/checkout@v6
if: steps.check.outputs.result == 'true'
with:
persist-credentials: false
- uses: anomalyco/opencode/github@latest
if: steps.check.outputs.result == 'true'
env:
ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }}
with:
model: anthropic/claude-sonnet-4-20250514
prompt: |
Review this issue. If there's a clear fix or relevant docs:
- Provide documentation links
- Add error handling guidance for code examples
Otherwise, do not comment.
```
W przypadku zdarzenia `issues` wprowadzenie `prompt` jest **wymagane**, ponieważ nie ma komentarza, z którego można wyodrębnić instrukcje.
---
## Niestandardowe monity
Zastąp domyślne monit, aby zastosować zachowanie OpenCode do twojego własnego pracy.
```yaml title=".github/workflows/opencode.yml"
- uses: anomalyco/opencode/github@latest
with:
model: anthropic/claude-sonnet-4-5
prompt: |
Review this pull request:
- Check for code quality issues
- Look for potential bugs
- Suggest improvements
```
Jest to przepis wykonawczy, który podlega przepisom kodowania lub zakresów tematycznych dla twojego projektu.
---
## Przykłady
Oto kilka możliwości wykorzystania OpenCode w GitHubie.
- **Wyjaśnij problem**
Dodaj dziesięć komentarzy w numerze GitHub.
```
/opencode explain this issue
```
OpenCode przeczytaj całość, zawierając dodatek z komentarzami i odpowiedzią z jasnym wyjaśnieniem.
- **Napraw problem**
W numerze GitHub powiedz:
```
/opencode fix this
```
A OpenCode utworzy nową podstawę, wdroży zmiany i zastąpi PR ze zmiany.
- **Przegląd zmiany PR i wprowadzenie zmiany**
Zostaw komentarz w PR GitHub.
```
Delete the attachment from S3 when the note is removed /oc
```
OpenCode zaimplementuje uruchomioną zmianę i zatwierdzi ją do tego samego PR.
- **Przejrzyj konkretne linie kodu**
Zostaw komentarz bezpośrednio w wierszu kodu w dodatku „Pliki” PR. OpenCode automatyczne wykrywanie pliku, numery linii i kontekst różnicowy, aby sprawdzić odpowiedzi.
```
[Comment on specific lines in Files tab]
/oc add error handling here
```
Komentując określone linie, OpenCode otrzymuje:
- Dokładny plik, który jest sprawdzany
- Konkretne linie kodu
- Otaczający kontekst różnicowy
- Informacje o numerze linii
Dostępne na bardziej szczegółowe rozwiązanie bez konieczności stosowania ręcznego określania plików lub numerów wierszy.

View File

@@ -0,0 +1,195 @@
---
title: GitLab
description: użyj OpenCode w problemach z GitLabem i zastosujch scalania.
---
OpenCode integruje się z przepływem pracy GitLab poprzez potok GitLab CI/CD lub z GitLab Duo.
W obu przypadkach OpenCode będzie modułem GitLab.
---
## GitLab CI
OpenCode działa w zwykłym potoku GitLab. Możesz wbudować go w potok jako [komponent CI](https://docs.gitlab.com/ee/ci/components/)
Tutaj obowiązkowego przez społeczność komponentu CI/CD dla OpenCode — [nagyv/gitlab-opencode](https://gitlab.com/nagyv/gitlab-opencode).
---
### Cechy
- **Użyj konfiguracji dla każdego zadania**: Skonfiguruj OpenCode z niestandardowym katalogiem konfiguracyjnym, na przykładzie `./config/#custom-directory`, aby włączyć lub funkcjonalności na każde wywołanie OpenCode.
- **Konfiguracja minimalna**: Komponent CI konfiguruje OpenCode w tle, wystarczy skonfigurować OpenCode i początkowy monit.
- **Elastyczny**: Komponent CI obsługuje kilka danych, które są stosowane w celu dostosowania jego zachowania
---
### Organizować coś
1. Przechowuj dane uwierzytelniające OpenCode w formacie JSON jako zmienne parametry CI typu pliku w specyfikacji **Ustawienia** > **CI/CD** > **Zmienne**. Zachowaj, aby być oznaczony jako „Zamaskowane i ukryte”.
2. Dodaj elementy do swojego pliku `.gitlab-ci.yml`.
```yaml title=".gitlab-ci.yml"
include:
- component: $CI_SERVER_FQDN/nagyv/gitlab-opencode/opencode@2
inputs:
config_dir: ${CI_PROJECT_DIR}/opencode-config
auth_json: $OPENCODE_AUTH_JSON # The variable name for your OpenCode authentication JSON
command: optional-custom-command
message: "Your prompt here"
```
Więcej danych dotyczących użycia [sprawdź opis](https://gitlab.com/explore/catalog/nagyv/gitlab-opencode) tego komponentu.
---
## Duet GitLab
OpenCode integruje się z przepływem pracy GitLab.
Wspomnij o `@opencode` w komentarzu, a OpenCode wykonaj zadania w ramach swojego potoku GitLab CI.
---
### Cechy
- **Problem związany z segregacją**: Poproś OpenCode o szczegółowe wyjaśnienie problemu i wyjaśnienie go.
- **Napraw i zaimplementuj**: Poproś OpenCode o naprawienie problemu lub zaimplementowanie funkcji.
Utworzył nowy oddział i zgłosi ataku ze sobą.
- **Bezpieczny**: OpenCode działa na modułach GitLab.
---
### Organizować coś
OpenCode działa w potoku CI/CD GitLab. Oto, czego potrzebujesz, aby przejść do:
:::tip
Aktualne instrukcje dotyczące [**dokumentacji GitLab**](https://docs.gitlab.com/user/duo_agent_platform/agent_assistant/).
:::
1. Skonfiguruj swoje środowisko GitLab
2. Skonfiguruj CI/CD
3. Uzyskaj klucz API dostawca modelu AI
4. Utwórz konto usługi
5. Skonfiguruj zmienne CI/CD
6. Utwórz plik konfiguracyjny, oto przykład:
<details>
<summary>Flow configuration</summary>
```yaml
image: node:22-slim
commands:
- echo "Installing opencode"
- npm install --global opencode-ai
- echo "Installing glab"
- export GITLAB_TOKEN=$GITLAB_TOKEN_OPENCODE
- apt-get update --quiet && apt-get install --yes curl wget gpg git && rm --recursive --force /var/lib/apt/lists/*
- curl --silent --show-error --location "https://raw.githubusercontent.com/upciti/wakemeops/main/assets/install_repository" | bash
- apt-get install --yes glab
- echo "Configuring glab"
- echo $GITLAB_HOST
- echo "Creating OpenCode auth configuration"
- mkdir --parents ~/.local/share/opencode
- |
cat > ~/.local/share/opencode/auth.json << EOF
{
"anthropic": {
"type": "api",
"key": "$ANTHROPIC_API_KEY"
}
}
EOF
- echo "Configuring git"
- git config --global user.email "opencode@gitlab.com"
- git config --global user.name "OpenCode"
- echo "Testing glab"
- glab issue list
- echo "Running OpenCode"
- |
opencode run "
You are an AI assistant helping with GitLab operations.
Context: $AI_FLOW_CONTEXT
Task: $AI_FLOW_INPUT
Event: $AI_FLOW_EVENT
Please execute the requested task using the available GitLab tools.
Be thorough in your analysis and provide clear explanations.
<important>
Please use the glab CLI to access data from GitLab. The glab CLI has already been authenticated. You can run the corresponding commands.
If you are asked to summarize an MR or issue or asked to provide more information then please post back a note to the MR/Issue so that the user can see it.
You don't need to commit or push up changes, those will be done automatically based on the file changes you make.
</important>
"
- git checkout --branch $CI_WORKLOAD_REF origin/$CI_WORKLOAD_REF
- echo "Checking for git changes and pushing if any exist"
- |
if ! git diff --quiet || ! git diff --cached --quiet || [ --not --zero "$(git ls-files --others --exclude-standard)" ]; then
echo "Git changes detected, adding and pushing..."
git add .
if git diff --cached --quiet; then
echo "No staged changes to commit"
else
echo "Committing changes to branch: $CI_WORKLOAD_REF"
git commit --message "Codex changes"
echo "Pushing changes up to $CI_WORKLOAD_REF"
git push https://gitlab-ci-token:$GITLAB_TOKEN@$GITLAB_HOST/gl-demo-ultimate-dev-ai-epic-17570/test-java-project.git $CI_WORKLOAD_REF
echo "Changes successfully pushed"
fi
else
echo "No git changes detected, skipping push"
fi
variables:
- ANTHROPIC_API_KEY
- GITLAB_TOKEN_OPENCODE
- GITLAB_HOST
```
</details>
Szczegółowe instrukcje w [dokumentacji agentów GitLab CLI](https://docs.gitlab.com/user/duo_agent_platform/agent_assistant/).
---
### Przykłady
Oto kilka możliwości wykorzystania OpenCode w GitLabie.
:::tip
Można zastosować inną metodę ograniczającą niż `@opencode`.
:::
- **Wyjaśnij problem**
Dodaj dziesięć komentarzy w numerze GitLab.
```
@opencode explain this issue
```
OpenCode przeczytaj problem i odpowiedź z wyjaśnieniem.
- **Napraw problem**
W numerze GitLab powiedz:
```
@opencode fix this
```
OpenCode utworzy nową podstawę, zaimplementuje zmiany i spowoduje, że skalowanie będzie możliwe.
- **Przejrzyj prośby o połączenie**
Zostaw komentarz w sprawie rozwiązania połączenia GitLab.
```
@opencode review this merge request
```
OpenCode sprawdzenie rozwiązania i przepuszczenie.

View File

@@ -0,0 +1,48 @@
---
title: IDE
description: Rozszerzenie OpenCode dla VS Code, Cursor i innych IDE
---
OpenCode integruje się z VS Code, Cursorem lub obsługującym terminal IDE. Aby uruchomić, po prostu uruchom `opencode` w terminalu.
---
## Stosowanie
- **Szybkie uruchomienie**: użycie `Cmd+Esc` (Mac) lub `Ctrl+Esc` (Windows/Linux), aby uruchomić OpenCode w uruchamianiu terminala lub skoncentruj się na uruchamianiu terminala, jeśli jest już uruchomiony.
- **Nowa sesja**: `Cmd+Shift+Esc` (Mac) lub `Ctrl+Shift+Esc` (Windows/Linux), aby została nowa konfiguracja terminala OpenCode, nawet jeśli jest już otwarta. Możesz także kliknąć przycisk OpenCode w interfejsie użytkownika.
- **Świadomość kontekstu**: Automatycznie udostępnia wybór lub kartę za pomocą OpenCode.
- **Skróty do odwołania do plików**: `Cmd+Option+K` (Mac) lub `Alt+Ctrl+K` (Linux/Windows), aby wstawić odnośnik do plików. Na przykład `@File#L37-42`.
---
## Instalacja
Aby poznać OpenCode na VS Code w forkach, takich jak Cursor, Windsurf, VSCodium:
1. Otwórz kod VS
2. Otwórz innowacyjny terminal
3. Uruchom `opencode` — rozszerzenie instaluje się automatycznie
Jeśli z drugiej strony chcesz zainstalować własne IDE po uruchomieniu `/editor` lub `/export` z TUI, należy zainstalować `export EDITOR="code --wait"`. [Dowiedz się więcej](/docs/tui/#editor-setup).
---
### Instalacja ręczna
Wyszukaj **OpenCode** na rynku rozszerzonym i kliknij **Zainstaluj**.
---
### Rozwiązywanie problemów
Jeśli rozwiązanie nie zostanie zainstalowane automatycznie:
- zastosowanie się, że użycie `opencode` w terminalu.
- zadziałanie, że CLI dla Twojego IDE jest zainstalowane:
- Dla kodu VS: polecenie `code`
- Dla kura: polecenie `cursor`
- Dla windsurfingu: decyzja `windsurf`
- Dla VSCodium: decyzja `codium`
- Jeśli nie, uruchom `Cmd+Shift+P` (Mac) lub `Ctrl+Shift+P` (Windows/Linux) i wyszukaj „Polecenie: zastosowanie decyzji„ kod ”w PATH” (lub właściwyk dla twojego IDE)
- zadziałanie, że VS Code ma pozwolenie na instalację rozszerzoną

View File

@@ -0,0 +1,359 @@
---
title: Wprowadzenie
description: Rozpocznij pracę z OpenCode.
---
import { Tabs, TabItem } from "@astrojs/starlight/components"
import config from "../../../../config.mjs"
export const console = config.console
[**OpenCode**](/) do agenta kodującego AI typu open source. Dostępny jest jako interfejs terminalowy, aplikacja komputerowa lub rozszerzenie IDE.
![OpenCode TUI z motywem opencode](../../../assets/lander/screenshot.png)
Zacznijmy.
---
#### Warunki wstępne
Aby uzyskać dostęp do OpenCode w swoim terminalu, będziesz potrzebować:
1. Nowoczesny emulator terminala, taki jak:
- [WezTerm](https://wezterm.org), wieloplatformowy
- [Alacritty](https://alacritty.org), wieloplatformowy
- [Ghostty](https://ghostty.org), Linux i macOS
- [Kitty](https://sw.kovidgoyal.net/kitty/), Linux i macOS
2. Klucze API dla dostawców LLM, z których korzystasz.
---
## Zainstalować
Najłatwiejszym sposobem instalowania OpenCode jest zastosowanie skryptu instalacyjnego.
```bash
curl -fsSL https://opencode.ai/install | bash
```
Można także zalogować się do urządzenia instalacyjnego:
- **Przy użyciu Node.js**
<Tabs>
<TabItem label="npm">
```bash
npm install -g opencode-ai
```
</TabItem>
<TabItem label="Bun">
```bash
bun install -g opencode-ai
```
</TabItem>
<TabItem label="pnpm">
```bash
pnpm install -g opencode-ai
```
</TabItem>
<TabItem label="Yarn">
```bash
yarn global add opencode-ai
```
</TabItem>
</Tabs>
- **Korzystanie z Homebrew na macOS i Linux**
```bash
brew install anomalyco/tap/opencode
```
> W celu uzyskania najbardziej aktualnej wersji zalecamy korzystanie z OpenCode. Oficjalna formuła `brew install opencode` jest utrzymywana przez zespół Homebrew i jest aktualizowana.
- **Korzystanie z Paru na Arch Linux**
```bash
paru -S opencode-bin
```
#### Okna
:::tip[Zalecane: prowadzenie WSL]
Aby najlepiej wykorzystać działanie w systemie Windows, zalecamy udostępnienie [Podsystemu Windows dla systemu Linux (WSL)](/docs/windows-wsl). pozwolenie na użytkowanie i pełna kompatybilność z funkcjami OpenCode.
:::
- **Używając czekolady**
```bash
choco install opencode
```
- **Korzystanie z miarki**
```bash
scoop install opencode
```
- **Przy użyciu NPM**
```bash
npm install -g opencode-ai
```
- **Używając Misea**
```bash
mise use -g github:anomalyco/opencode
```
- **Korzystanie z Dockera**
```bash
docker run -it --rm ghcr.io/anomalyco/opencode
```
Obecnie trwają prace nad instalacją OpenCode w systemie Windows za pomocą Bun.
Możesz także otrzymać plik binarny z [Releases](https://github.com/anomalyco/opencode/releases).
---
## Skonfiguruj
Dzięki OpenCode możesz korzystać z dowolnego dostawcy LLM, konfigurując jego klucze API.
Jeśli nadal będziesz korzystać z dostawców LLM, zalecamy skorzystanie z [OpenCode Zen](/docs/zen).
Do wyselekcjonowanej listy modeli, które zostały zatwierdzone i zweryfikowane przez OpenCode
zespół.
1. Uruchom opcję `/connect` w TUI, wybierz opencode i przejdź do [opencode.ai/auth](https://opencode.ai/auth).
```txt
/connect
```
2. Zaloguj się, dodaj szczegóły rozliczeniowe i skopiuj klucz API.
3. Wklej swój klucz API.
```txt
┌ API key
└ enter
```
Alternatywnie możesz wybrać jednego z dodatkowych dostawców. [Dowiedz się więcej](/docs/providers#directory).
---
## Zainicjuj
Po skonfigurowaniu dostawcy, który może przejść do projektu, który
chcesz pracować.
```bash
cd /path/to/project
```
Uruchamiam OpenCode.
```bash
opencode
```
Następnie zainicjuj OpenCode dla projektu, uruchamiając odpowiednią instrukcję.
```bash frame="none"
/init
```
Spowoduje to, że OpenCode przeanalizuje Twój projekt i utworzy plik `AGENTS.md`
katalog główny projektu.
:::tip
Powinieneś zatwierdzić plik `AGENTS.md` swojego projektu w Git.
:::
Pomaga w OpenCode zrozumieniu struktury projektu i wzorce kodowania
używany.
---
## Stosowanie
Teraz możesz pracować nad swoim projektem. Możesz o to zapytać
wszystko!
Jeśli tylko zaczniesz korzystać z agenta kodującego AI, oto kilka, które mogą być używane
pomoc.
---
### Zadawaj pytania
Możesz uruchomić OpenCode o wyjaśnienie bazy kodu.
:::tip
klawisza klawisza `@` do wyszukiwania rozmytego plików w projekcie.
:::
```txt frame="none" "@packages/functions/src/api/index.ts"
How is authentication handled in @packages/functions/src/api/index.ts
```
Jest to pomocne, jeśli istnieje część bazy kodu, nad którą nie pracowałeś.
---
### Dodaj funkcje
Możesz zastosować OpenCode o nowej funkcji do Twojego projektu. Najpierw zalecamy poproszenie o wypłacenie planu.
1. **Plan Stworza**
OpenCode ma _tryb płaski_, który umożliwia wyłączenie zmian i
zamiast tego zasugeruj, jak_ zaimplementuje tę funkcję.
Przejdź do niego za pomocą klawisza **Tab**. W osobnym dolnym rogu zobacz właściwy wskaźnik.
```bash frame="none" title="Switch to Plan mode"
<TAB>
```
Opiszmy teraz, co chcemy, żeby robił.
```txt frame="none"
When a user deletes a note, we'd like to flag it as deleted in the database.
Then create a screen that shows all the recently deleted notes.
From this screen, the user can undelete a note or permanently delete it.
```
Wersja OpenCode zawiera dużo oprogramowania, aby zrozumieć, czego chcesz. To pomaga
rozmawiaj z nim tak, jakbyś rozmawiał z młodszym programistą w swoim zespole.
:::tip
Podaj OpenCode kontekstu i kontekstu, które można zrozumieć, co Ty
chcieć.
:::
2. **Postęp zgodnie z planem**
Gdy będziesz mieć plan, możesz pozostawić go lub podłączyć więcej.
```txt frame="none"
We'd like to design this new screen using a design I've used before.
[Image #1] Take a look at this image and use it as a reference.
```
:::tip
Przeciągnij i upuść obrazy do terminala, aby dodać je do monitu.
:::
OpenCode może zeskanować obrazy, które mu przekażesz i poprosisz o potwierdzenie. Możesz
należy to, przeciągając i upuszczając obraz do terminala.
3. **Stwórz przełącza**
Kiedy już jest komfortowo z planem, przełącz się z powrotem do _trybu_
zamknięcie na klawisza **Tab**.
```bash frame="none"
<TAB>
```
Poproszę o wprowadzenie zmian.
```bash frame="none"
Sounds good! Go ahead and make the changes.
```
---
### Wprowadź zmiany
Aby zastosować następczą zmianę, można zastosować OpenCode lub bezpośrednio zbudowanie go
bez konieczności wcześniejszego przeglądania planu.
```txt frame="none" "@packages/functions/src/settings.ts" "@packages/functions/src/notes.ts"
We need to add authentication to the /settings route. Take a look at how this is
handled in the /notes route in @packages/functions/src/notes.ts and implement
the same logic in @packages/functions/src/settings.ts
```
Musisz mieć dostęp, że pod warunkiem dostępności narzędzia, więc OpenCode ma właściwie
zmiany.
---
### Cofnij zmiany
Załóżmy, że prosisz OpenCode o wprowadzenie zmian.
```txt frame="none" "@packages/functions/src/api/index.ts"
Can you refactor the function in @packages/functions/src/api/index.ts?
```
Ale z sobie sobie sprawę, że to nie jest to, czego chciałeś. **Możesz być** zmiany
za pomoc polecenia `/undo`.
```bash frame="none"
/undo
```
OpenCode cofnie teraz zmiany i wyświetli wiadomość
Ponownie.
```txt frame="none" "@packages/functions/src/api/index.ts"
Can you refactor the function in @packages/functions/src/api/index.ts?
```
Można zastosować monit i zastosować OpenCode o próbę próby.
:::tip
Można `/undo` wiele razy, aby uniknąć wielu zmian.
:::
Możesz też **możesz powtórzyć** zmianę za pomocą polecenia `/redo`.
```bash frame="none"
/redo
```
---
## Udział
Rozmowy z OpenCode można [udostępniać swoim
zespół](/docs/share).
```bash frame="none"
/share
```
Spowoduje to, że łącza do bieżących połączeń idą do schowki.
:::note
Rozmowy nie są ogólnodostępne.
:::
Oto [przykładowa rozmowa](https://opencode.ai/s/4XP1fce5) z OpenCode.
---
## Dostosuj
tyle! Jesteś teraz profesjonalistą w korzystaniu z OpenCode.
Aby dostosować go do potrzeb, zalecamy [wybranie motywu](/docs/themes), [dostosowanie skrótów klawiaturowych](/docs/keybinds), [konfigurowanie programów formatujących kod](/docs/formatters), [tworzenie niestandardowych kodów](/docs/commands) lub grę z [konfiguracją OpenCode](/docs/config).

View File

@@ -0,0 +1,192 @@
---
title: Skróty klawiszowe
description: Dostosuj swoje skróty klawiszowe.
---
OpenCode zawiera listę skrótów klawiszowych, które można zastosować poprzez OpenCode.
```json title="opencode.json"
{
"$schema": "https://opencode.ai/config.json",
"keybinds": {
"leader": "ctrl+x",
"app_exit": "ctrl+c,ctrl+d,<leader>q",
"editor_open": "<leader>e",
"theme_list": "<leader>t",
"sidebar_toggle": "<leader>b",
"scrollbar_toggle": "none",
"username_toggle": "none",
"status_view": "<leader>s",
"tool_details": "none",
"session_export": "<leader>x",
"session_new": "<leader>n",
"session_list": "<leader>l",
"session_timeline": "<leader>g",
"session_fork": "none",
"session_rename": "none",
"session_share": "none",
"session_unshare": "none",
"session_interrupt": "escape",
"session_compact": "<leader>c",
"session_child_cycle": "<leader>right",
"session_child_cycle_reverse": "<leader>left",
"session_parent": "<leader>up",
"messages_page_up": "pageup,ctrl+alt+b",
"messages_page_down": "pagedown,ctrl+alt+f",
"messages_line_up": "ctrl+alt+y",
"messages_line_down": "ctrl+alt+e",
"messages_half_page_up": "ctrl+alt+u",
"messages_half_page_down": "ctrl+alt+d",
"messages_first": "ctrl+g,home",
"messages_last": "ctrl+alt+g,end",
"messages_next": "none",
"messages_previous": "none",
"messages_copy": "<leader>y",
"messages_undo": "<leader>u",
"messages_redo": "<leader>r",
"messages_last_user": "none",
"messages_toggle_conceal": "<leader>h",
"model_list": "<leader>m",
"model_cycle_recent": "f2",
"model_cycle_recent_reverse": "shift+f2",
"model_cycle_favorite": "none",
"model_cycle_favorite_reverse": "none",
"variant_cycle": "ctrl+t",
"command_list": "ctrl+p",
"agent_list": "<leader>a",
"agent_cycle": "tab",
"agent_cycle_reverse": "shift+tab",
"input_clear": "ctrl+c",
"input_paste": "ctrl+v",
"input_submit": "return",
"input_newline": "shift+return,ctrl+return,alt+return,ctrl+j",
"input_move_left": "left,ctrl+b",
"input_move_right": "right,ctrl+f",
"input_move_up": "up",
"input_move_down": "down",
"input_select_left": "shift+left",
"input_select_right": "shift+right",
"input_select_up": "shift+up",
"input_select_down": "shift+down",
"input_line_home": "ctrl+a",
"input_line_end": "ctrl+e",
"input_select_line_home": "ctrl+shift+a",
"input_select_line_end": "ctrl+shift+e",
"input_visual_line_home": "alt+a",
"input_visual_line_end": "alt+e",
"input_select_visual_line_home": "alt+shift+a",
"input_select_visual_line_end": "alt+shift+e",
"input_buffer_home": "home",
"input_buffer_end": "end",
"input_select_buffer_home": "shift+home",
"input_select_buffer_end": "shift+end",
"input_delete_line": "ctrl+shift+d",
"input_delete_to_line_end": "ctrl+k",
"input_delete_to_line_start": "ctrl+u",
"input_backspace": "backspace,shift+backspace",
"input_delete": "ctrl+d,delete,shift+delete",
"input_undo": "ctrl+-,super+z",
"input_redo": "ctrl+.,super+shift+z",
"input_word_forward": "alt+f,alt+right,ctrl+right",
"input_word_backward": "alt+b,alt+left,ctrl+left",
"input_select_word_forward": "alt+shift+f,alt+shift+right",
"input_select_word_backward": "alt+shift+b,alt+shift+left",
"input_delete_word_forward": "alt+d,alt+delete,ctrl+delete",
"input_delete_word_backward": "ctrl+w,ctrl+backspace,alt+backspace",
"history_previous": "up",
"history_next": "down",
"terminal_suspend": "ctrl+z",
"terminal_title_toggle": "none",
"tips_toggle": "<leader>h",
"display_thinking": "none"
}
}
```
---
## Klucz lidera
OpenCode używa klucza `leader` dla głównych skrótów klawiszowych. Rozwiązanie problemu konfliktów w terminalu.
Domyślnie `ctrl+x` jest klawiszem głównym i główną akcją wymaga najpierw naciśnięcia klawisza lidera, a następnie skrótu. Na przykład, aby ponownie zastosować, następnie następuje `ctrl+x`, a następnie następuje `n`.
Nie musisz mieć klawisza wiodącego do skrótów klawiszowych, ale zalecamy to Reg.
---
## Wyłącz powiązanie klawiszy
Możesz podłączyć powiązanie klawiszy, dodając klucz do swojej konfiguracji z wartością „none”.
```json title="opencode.json"
{
"$schema": "https://opencode.ai/config.json",
"keybinds": {
"session_compact": "none"
}
}
```
---
## Skróty monitów na pulpicie
Pole sprawdzania aplikacji komputerowej OpenCode obsługuje popularne skróty w stylu Readline/Emacs do edycji tekstu. Są one dostępne i obecnie nie można ich skonfigurować za pomocą `opencode.json`.
| Skrót | Akcja |
| -------- | ---------------------------------------- |
| `ctrl+a` | Przejdź do źródła regularnej linii |
| `ctrl+e` | Przejdź na koniec bieżącej linii |
| `ctrl+b` | Przesuń kursor do tyłu o jeden znak |
| `ctrl+f` | Przesuń kursor o jeden znak do przodu |
| `alt+b` | Przesuń kursor o jedno słowo wstecz |
| `alt+f` | Przesuń kursor do przodu o jedno słowo |
| `ctrl+d` | Usuń znak pod kursorem |
| `ctrl+k` | Zabij do końca linii |
| `ctrl+u` | Zabij na początek linii |
| `ctrl+w` | Zabij poprzednie słowo |
| `alt+d` | Zabij następne słowo |
| `ctrl+t` | Transponuj znaki |
| `ctrl+g` | Anuluj wyskakujące okienka / przerwij uruchamianie odpowiedzi |
---
## Shift+Enter
Istnieją terminale, które nie wysyłają klawiszy modyfikujących z Enterem. Może być konieczne skonfigurowanie terminala tak, aby wysłać `Shift+Enter` jako przerwanie zakończenia.
### Terminal Windowsowy
Otwórz swój `settings.json` pod adresem:
```
%LOCALAPPDATA%\Packages\Microsoft.WindowsTerminal_8wekyb3d8bbwe\LocalState\settings.json
```
Dodaj do tablicy `actions` na poziomie wyższym:
```json
"actions": [
{
"command": {
"action": "sendInput",
"input": "\u001b[13;2u"
},
"id": "User.sendInput.ShiftEnterCustom"
}
]
```
Dodaj do tablicy `keybindings` na poziomie wyższym:
```json
"keybindings": [
{
"keys": "shift+enter",
"id": "User.sendInput.ShiftEnterCustom"
}
]
```
Zapisz plik i uruchom ponownie terminal Windows lub otwórz nową kartę.

View File

@@ -0,0 +1,188 @@
---
title: Serwery LSP
description: OpenCode integruje się z serwerem LSP.
---
OpenCode integruje się z protokołem serwera językowego (LSP), aby pomóc LLM w korzystaniu z bazowego kodu. Wykorzystuje diagnostykę, aby otrzymać odpowiedź zwrotną do LLM.
---
## Wbudowany
OpenCode posiada kilka wbudowanych serwerów LSP dla języków:
| Serwer LSP | Rozszerzenie | Wymagania |
| ------------------ | ------------------------------------------------------------------- | ------------------------------------------------------------ |
| astro | .astro | Automatyczne instalacje dla Astro |
| bash | .sh, .bash, .zsh, .ksh | Automatycznie instaluje serwer języka bash |
| brzęk | .c, .cpp, .cc, .cxx, .c++, .h, .hpp, .hh, .hxx, .h++ | Automatyczne instalacje dla C/C++ |
| csharp | .cs | `.NET SDK` zainstalowany |
| clojure-lsp | .clj, .cljs, .cljc, .edn | Komenda `clojure-lsp` dostępna |
| strzałka | .dart | Komenda `dart` dostępna |
| nie | .ts, .tsx, .js, .jsx, .mjs | Dostępne rozwiązanie `deno` (automatyczne wykrywanie deno.json/deno.jsonc) |
| eliksir-ls | .ex, .exs | Komenda `elixir` dostępna |
| eslin | .ts, .tsx, .js, .jsx, .mjs, .cjs, .mts, .cts, .vue | `eslint` zależność w projekcie |
| fsharp | .fs, .fsi, .fsx, .fsscript | `.NET SDK` zainstalowany |
| blask | .blask | Komenda `gleam` dostępna |
| gopls | .idź | Komenda `go` dostępna |
| hl | .hs, .lhs | Komenda `haskell-language-server-wrapper` dostępna |
| jdtl | .java | `Java SDK (version 21+)` zainstalowany |
| kotlin-ls | .kt, .kts | Automatyczne instalacje dla Kotlin |
| lua-ls | .lua | Automatyczne instalacje dla Lua |
| nixd | .nix | Komenda `nixd` dostępna |
| ocaml-lsp | .ml, .mli | Komenda `ocamllsp` dostępna |
| oxlint | .ts, .tsx, .js, .jsx, .mjs, .cjs, .mts, .cts, .vue, .astro, .svelte | `oxlint` zależność w projekcie |
| php inteligentny | .php | Automatyczne instalacje dla PHP |
| pryzma | .prysma | Komenda `prisma` dostępna |
| pirat | .py, .pyi | Zainstalowana zależność `pyright` |
| ruby-lsp (rubocop) | .rb, .rake, .gemspec, .ru | Dostępne polecenie `ruby` i `gem` |
| rdza | .rs | Komenda `rust-analyzer` dostępna |
| sourcekit-lsp | .swift, .objc, .objcpp | `swift` zainstalowany (`xcode` na macOS) |
| smukły | smukły | Automatyczne instalacje dla aplikacji Svelte |
| terraforma | .tf, .tfvars | Automatyczne instalacje z wydań GitHub |
| malutka | .typ, .typc | Automatyczne instalacje z wydań GitHub |
| maszynopis | .ts, .tsx, .js, .jsx, .mjs, .cjs, .mts, .cts | `typescript` zależność w projekcie |
| vue | .vue | Automatyczne instalacje dla Vue |
| yaml-ls | .yaml, .yml | Automatycznie instaluje serwer języka yaml Red Hat |
| zł | .zig, .zon | Komenda `zig` dostępna |
Serwery LSP są automatycznie włączane po wykryciu jednego z rozszerzonych plików i wymagań.
:::note
Możliwość automatycznego pobierania z serwera LSP, ustawianie zmiennej środowiska `OPENCODE_DISABLE_LSP_DOWNLOAD` na `true`.
:::
---
## Jak to działa
Gdy opencode otwiera plik, to:
1. Sprawdzanie pliku na wszystkich dostępnych serwerach LSP.
2. Uruchamia właściwy serwer LSP, jeśli jeszcze nie działa.
---
## Skonfiguruj
Możesz dostosować serwery LSP poprzez sekcję `lsp` w konfiguracji opencode.
```json title="opencode.json"
{
"$schema": "https://opencode.ai/config.json",
"lsp": {}
}
```
Każdy serwer LSP obsługuje szczegółowe elementy:
| Nieruchomość | Wpisz | Opis |
| ---------------- | -------- | ------------------------------------------------- |
| `disabled` | wartość logiczna | Ustaw tę opcję na `true`, aby włączyć serwer LSP |
| `command` | ciąg[] | Polecenie uruchomienia serwera LSP |
| `extensions` | ciąg[] | Rozszerzenia plików, które powinny mieć ten serwer LSP |
| `env` | obiekt | Zmienne ustawienia podczas uruchamiania serwera |
| `initialization` | obiekt | Opcje inicjalizacji do wysłania na serwer LSP |
Spójrzmy na kilka przykładów.
---
### Zmienne środowiskowe
Zastosowanie `env`, aby ustawić zmienne parametry transmisji podczas uruchamiania serwera LSP:
```json title="opencode.json" {5-7}
{
"$schema": "https://opencode.ai/config.json",
"lsp": {
"rust": {
"env": {
"RUST_LOG": "debug"
}
}
}
}
```
---
### Opcje inicjalizacji
właściwości `initialization`, aby mieć możliwość inicjalizacji na serwerze LSP. Są to ustawienia dla serwera wysyłającego podczas przełączania LSP `initialize`:
```json title="opencode.json" {5-9}
{
"$schema": "https://opencode.ai/config.json",
"lsp": {
"typescript": {
"initialization": {
"preferences": {
"importModuleSpecifierPreference": "relative"
}
}
}
}
}
```
:::note
Opcje inicjalizacji różnią się w zależności od serwera LSP. Sprawdź swój serwer LSP pod gniazdem.
:::
---
### Wyłączanie serwerów LSP
Aby wyłączyć **wszystkie** serwery LSP globalnie, ustaw `lsp` na `false`:
```json title="opencode.json" {3}
{
"$schema": "https://opencode.ai/config.json",
"lsp": false
}
```
Aby wyłączyć **określony** serwer LSP, ustawa `disabled` na `true`:
```json title="opencode.json" {5}
{
"$schema": "https://opencode.ai/config.json",
"lsp": {
"typescript": {
"disabled": true
}
}
}
```
---
### Niestandardowe serwery LSP
Serwer udostępniający serwery LSP, mechanizmy sterujące i udostępniane pliki:
```json title="opencode.json" {4-7}
{
"$schema": "https://opencode.ai/config.json",
"lsp": {
"custom-lsp": {
"command": ["custom-lsp-server", "--stdio"],
"extensions": [".custom"]
}
}
}
```
---
## Dodatkowe informacje
### PHP Intelefense
PHP Intelephense oferuje funkcje premium poprzez klucz licencyjny. Możesz przechowywać klucz licencyjny umieszczając (tylko) klucz w pliku tekstowym pod adresem:
- W systemie macOS/Linux: `$HOME/intelephense/licence.txt`
- W systemie Windows: `%USERPROFILE%/intelephense/licence.txt`
Plik powinien zawierać wyłącznie klucz licencyjny, bez udostępniania treści.

View File

@@ -0,0 +1,511 @@
---
title: Serwery MPK
description: Dodaj lokalne i zdalne narzędzie MCP.
---
Możesz dodać dodatkowe informacje do OpenCode za pomocą _Model Context Protocol_, w skrócie MCP. OpenCode obsługuje zarówno serwery lokalne, jak i zdalne.
Po dodaniu narzędzi MCP są automatycznie dostępne dla LLM wraz z narzędziami narzędziowymi.
---
#### Zastrzeżenia
Kiedy używasz serwera MCP, zmieniając kontekst. Może szybko się sumować, jeśli masz dużo narzędzia. Zalecamy ostrożność, z jakich serwerów MCP korzystasz.
:::tip
Serwery MCP dodają do twojego kontekstu, dlatego należy zachować ostrożność przy wyłączaniu tych serwerów.
:::
Niektóre serwery MCP, takie jak serwer MCP GitHub, mają szerokie możliwości dodawania wielu tokenów i mogą łatwo przekraczać limit kontekstu.
---
## Włączać
Dostępny serwery MCP w [OpenCode Config](https://opencode.ai/docs/config/) w `mcp`. Dodaj każdy MCP z unikalną nazwą. Możesz zgłosić się do tego MCP po nazwie, pytając LLM.
```jsonc title="opencode.jsonc" {6}
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"name-of-mcp-server": {
// ...
"enabled": true,
},
"name-of-other-mcp-server": {
// ...
},
},
}
```
Możesz także wyłączyć serwer, ustawiając `enabled` na `false`. Jest to urządzenie, które jest urządzeniem biologicznym, bez usuwania z urządzenia.
---
### Zastępowanie zdalnych ustawień domyślnych
Organizacje mogą udostępniać serwery MCP za pośrednictwem punktu końcowego `.well-known/opencode`. Serwer może być podłączony, dzięki czemu użytkownicy mogą wybrać te, których.
Aby włączyć serwer ze zdalnej konfiguracji organizacji, dodaj go do wyłączenia za pomocą `enabled: true`:
```json title="opencode.json"
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"jira": {
"type": "remote",
"url": "https://jira.example.com/mcp",
"enabled": true
}
}
}
```
Lokalne wartości konfiguracyjne za występujące zdalne wartości. Aby uzyskać więcej informacji, zobacz [pierwszeństwo konfiguracji](/docs/config#precedence-order).
---
## Lokalny
Dodaj lokalne serwery MCP za pomocą `type` do `"local"` w obiekcie MCP.
```jsonc title="opencode.jsonc" {15}
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"my-local-mcp-server": {
"type": "local",
// Or ["bun", "x", "my-mcp-command"]
"command": ["npx", "-y", "my-mcp-command"],
"enabled": true,
"environment": {
"MY_ENV_VAR": "my_env_var_value",
},
},
},
}
```
Polecenie sposobu uruchamiania lokalnego serwera MCP. Można także zainstalować listę konfiguracyjną.
Oto przykładowy sposób dodania testowego serwera MCP [`@modelcontextprotocol/server-everything`](https://www.npmjs.com/package/@modelcontextprotocol/server-everything).
```jsonc title="opencode.jsonc"
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"mcp_everything": {
"type": "local",
"command": ["npx", "-y", "@modelcontextprotocol/server-everything"],
},
},
}
```
Aby z niego skorzystać, można dodać `use the mcp_everything tool` do moich podpowiedzi.
```txt "mcp_everything"
use the mcp_everything tool to add the number 3 and 4
```
---
#### Opcje
Oto wszystkie opcje lokalnego serwera MCP.
| Opcja | Wpisz | Wymagane | Opis |
| ------------- | ------- | -------- | ----------------------------------------------------------------------------------- |
| `type` | Ciąg | Y | Typ połączenia z serwerem MCP musi być `"local"`. |
| `command` | Tablica | Y | Polecenie i argumenty uruchamiające serwer MCP. |
| `environment` | Obiekt | | Zmienne ustawienia podczas uruchamiania serwera. |
| `enabled` | Wartość logiczna | | Włącz lub wyłącz serwer MCP podczas uruchamiania. |
| `timeout` | Numer | | Limit czasu w ms na pobieranie narzędzia z serwera MCP. Wartość domyślna do 5000 (5 sekund). |
---
## Zdalny
Dodaj zdalne serwery MCP, ustawiając `type` na `"remote"`.
```json title="opencode.json"
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"my-remote-mcp": {
"type": "remote",
"url": "https://my-mcp-server.com",
"enabled": true,
"headers": {
"Authorization": "Bearer MY_API_KEY"
}
}
}
}
```
`url` na adres URL zdalnego serwera MCP i za pomocą opcji `headers` można znaleźć listę nagłówków.
---
#### Opcje
| Opcja | Wpisz | Wymagane | Opis |
| --------- | ------- | -------- | ----------------------------------------------------------------------------------- |
| `type` | Ciąg | Y | Typ połączenia z serwerem MCP musi być `"remote"`. |
| `url` | Ciąg | Y | Adres URL zdalnego serwera MCP. |
| `enabled` | Wartość logiczna | | Włącz lub wyłącz serwer MCP podczas uruchamiania. |
| `headers` | Obiekt | | Nagłówki do wysłania z wprowadzenia. |
| `oauth` | Obiekt | | Konfiguracja uwierzytelniania OAuth. Zobacz sekcję [OAuth](#oauth) poniżej. |
| `timeout` | Numer | | Limit czasu w ms na pobieranie narzędzia z serwera MCP. Wartość domyślna do 5000 (5 sekund). |
---
## OAuth
OpenCode automatyczne uwierzytelnianie OAuth dla zdalnych serwerów MCP. Gdy serwer wymaga uwierzytelnienia, OpenCode:
1. Wykryj odpowiedź 401 i zainijuj przepływ OAuth
2. używa **Dynamicznej rejestracji klienta (RFC 7591)**, jeśli jest obsługiwana przez serwer
3. Bezpiecznie przechowuj tokeny na wypadek ewentualnego zastosowania
---
### Automatyczny
W innym serwerze MCP z włączoną funkcją OAuth nie jest wymagana specjalna funkcja. Dostępny serwer bezprzewodowy:
```json title="opencode.json"
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"my-oauth-server": {
"type": "remote",
"url": "https://mcp.example.com/mcp"
}
}
}
```
Jeśli serwer wymaga uwierzytelnienia, OpenCode poprosi Cię o uwierzytelnienie przy próbie jego użycia. Jeśli nie, możesz [ręcznie podłączyć przepływ] (#authenticating) za pomocą `opencode mcp auth <server-name>`.
---
### Wstępnie zarejestrowany
Jeśli posiadasz dostęp do klienta od dostawcy serwera MCP, możesz je udostępnić:
```json title="opencode.json" {7-11}
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"my-oauth-server": {
"type": "remote",
"url": "https://mcp.example.com/mcp",
"oauth": {
"clientId": "{env:MY_MCP_CLIENT_ID}",
"clientSecret": "{env:MY_MCP_CLIENT_SECRET}",
"scope": "tools:read tools:execute"
}
}
}
}
```
---
### Uwierzytelnianie
Możesz podać potwierdzenie lub potwierdzenie poświadczenia.
Uwierzytelnij się za pomocą standardowego serwera MCP:
```bash
opencode mcp auth my-oauth-server
```
Lista wszystkich serwerów MCP i ich status uwierzytelnienia:
```bash
opencode mcp list
```
Usuń zapisane dane uwierzytelniające:
```bash
opencode mcp logout my-oauth-server
```
Komenda `mcp auth` została udostępniona w celu autoryzacji. Po autoryzacji OpenCode bezpieczne przechowa tokeny w `~/.local/share/opencode/mcp-auth.json`.
---
#### Wyłączanie OAuth
Jeśli chcesz włączyć automatyczne OAuth dla serwera (np. dla serwerów, które zamiast tego używać kluczy API), ustaw `oauth` na `false`:
```json title="opencode.json" {7}
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"my-api-key-server": {
"type": "remote",
"url": "https://mcp.example.com/mcp",
"oauth": false,
"headers": {
"Authorization": "Bearer {env:MY_API_KEY}"
}
}
}
}
```
---
#### Opcje OAuth
| Opcja | Wpisz | Opis |
| -------------- | --------------- | -------------------------------------------------------------------------------- |
| `oauth` | Obiekt \| fałszywe | Obiekt konfiguracyjny OAuth lub `false`, aby wyłączyć automatyczne wykrywanie OAuth. |
| `clientId` | Ciąg | Identyfikator klienta OAuth. Jeżeli nie zostanie podany, zostanie podjęta próba dynamicznej rejestracji klienta. |
| `clientSecret` | Ciąg | Sekret klienta OAuth, plik jest wymagany przez serwer autoryzacji. |
| `scope` | Ciąg | Zakresy protokołu OAuth, których należy żądać podczas autoryzacji. |
#### Debugowanie
Jeśli serwer MCP nie może zostać uwierzytelniony, możesz zdiagnozować problemy z:
```bash
# View auth status for all OAuth-capable servers
opencode mcp auth list
# Debug connection and OAuth flow for a specific server
opencode mcp debug my-oauth-server
```
Komenda `mcp debug` wyświetlanie stanu uwierzytelniania, testuje sprawdzanie protokołu HTTP i sprawdzenie sprawdzenia procesu OAuth.
---
## Zarządzać
Twoje MCP są dostępne jako narzędzie w OpenCode, obok narzędzi dodatkowych. Można to zrobić poprzez podłączenie OpenCode, jak również w innym przypadku.
---
### Światowy
Możesz to włączyć lub wyłączyć globalnie.
```json title="opencode.json" {14}
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"my-mcp-foo": {
"type": "local",
"command": ["bun", "x", "my-mcp-command-foo"]
},
"my-mcp-bar": {
"type": "local",
"command": ["bun", "x", "my-mcp-command-bar"]
}
},
"tools": {
"my-mcp-foo": false
}
}
```
Dostępne są również wzorca globu, aby wyłączyć wszystkie dyski MCP.
```json title="opencode.json" {14}
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"my-mcp-foo": {
"type": "local",
"command": ["bun", "x", "my-mcp-command-foo"]
},
"my-mcp-bar": {
"type": "local",
"command": ["bun", "x", "my-mcp-command-bar"]
}
},
"tools": {
"my-mcp*": false
}
}
```
Tutaj znajdziesz wzorca globalnego `my-mcp*`, aby wyłączyć wszystkie MCP.
---
### Na agenta
Jeśli masz największe serwery MCP, możesz włączyć je tylko dla poszczególnych agentów i być globalnie. Aby to zrobić:
1. Wyłącz go jako narzędzie globalnie.
2. W [konfiguracji agenta](/docs/agents#tools) włącz serwer MCP jako narzędzie.
```json title="opencode.json" {11, 14-18}
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"my-mcp": {
"type": "local",
"command": ["bun", "x", "my-mcp-command"],
"enabled": true
}
},
"tools": {
"my-mcp*": false
},
"agent": {
"my-agent": {
"tools": {
"my-mcp*": true
}
}
}
}
```
---
#### Wzory globusów
Wzorzec glob wykorzystuje proste wzorce globowania regularnych:
- `*` dopasowuje zero lub więcej dowolnego znaku (np. `"my-mcp*"` dopasowuje `my-mcp_search`, `my-mcp_list` itd.)
- `?` odpowiada dokładnie jednemu znakowi
- Wszystkie pozostałe znaki pasują dosłownie
:::note
Narzędzia serwera MCP są rejestrowane z nazwą serwera jako prefiksem, więc aby uzyskać dostęp do wszystkich narzędzi dla serwera, po prostu dostęp do:
```
"mymcpservername_*": false
```
:::
---
## Przykłady
Poniżej znajdują się przykłady niektórych serwerów MCP. Twój prywatny PR, udostępniany przez inne serwery.
---
### Wartownik
Dodaj [serwer Sentry MCP](https://mcp.sentry.dev), aby móc wejść w interakcję z projektem i udostępnić Sentry.
```json title="opencode.json" {4-8}
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"sentry": {
"type": "remote",
"url": "https://mcp.sentry.dev/mcp",
"oauth": {}
}
}
}
```
Po dodaniu konfiguracji uwierzytelnij się za pomocą Sentry:
```bash
opencode mcp auth sentry
```
Spowoduje otwarcie okna konfiguracji, w którym można zakończyć proces OAuth i połączyć OpenCode z kontem Sentry.
Po uwierzytelnieniu oprogramowania Sentry w swoich monitach, aby rozprzestrzeniać zagrożenia, dane i błędy.
```txt "use sentry"
Show me the latest unresolved issues in my project. use sentry
```
---
### Kontekst7
Dodaj [serwer Context7 MCP](https://github.com/upstash/context7), aby przeszukać dokumenty.
```json title="opencode.json" {4-7}
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"context7": {
"type": "remote",
"url": "https://mcp.context7.com/mcp"
}
}
}
```
Jeśli założyłeś darmowe konto, możesz użyć klucza API i uzyskać wyższy limit stawek.
```json title="opencode.json" {7-9}
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"context7": {
"type": "remote",
"url": "https://mcp.context7.com/mcp",
"headers": {
"CONTEXT7_API_KEY": "{env:CONTEXT7_API_KEY}"
}
}
}
}
```
Załóż tutaj, że masz ustawioną zmienną środowiskową `CONTEXT7_API_KEY`.
Dodaj `use context7` do swoich podpowiedzi, aby skorzystać z serwera Context7 MCP.
```txt "use context7"
Configure a Cloudflare Worker script to cache JSON API responses for five minutes. use context7
```
Alternatywnie możesz zadać coś takiego do pliku [AGENTS.md](/docs/rules/).
```md title="AGENTS.md"
When you need to search docs, use `context7` tools.
```
---
### Grep firmy Vercel
Dodaj serwer MCP [Grep by Vercel](https://grep.app), aby przeszukać fragmenty kodu w serwisie GitHub.
```json title="opencode.json" {4-7}
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"gh_grep": {
"type": "remote",
"url": "https://mcp.grep.app"
}
}
}
```
Nazwaliśmy nasz serwer MCP `gh_grep`, możesz dodać `use the gh_grep tool` do swoich podpowiedzi, aby agent mógł z niego korzystać.
```txt "use the gh_grep tool"
What's the right way to set a custom domain in an SST Astro component? use the gh_grep tool
```
Alternatywnie możesz zadać coś takiego do pliku [AGENTS.md](/docs/rules/).
```md title="AGENTS.md"
If you are unsure how to do something, use `gh_grep` to search code examples from GitHub.
```

View File

@@ -0,0 +1,223 @@
---
title: Modele
description: Konfigurowanie dostawcy i modelu LLM.
---
OpenCode używa [AI SDK](https://ai-sdk.dev/) i [Models.dev](https://models.dev) do obsługi **ponad 75 dostawców LLM** i obsługi uruchamiania modeli pierwszych.
---
## Dostawcy
Dostępna usługa dostawcy jest dostępna. Jeśli otrzymasz poświadczenie dostawcy za pomocą polecenia `/connect`, będzie on dostępny po uruchomieniu OpenCode.
Dowiedz się więcej o [dostawcach](/docs/providers).
---
## Wybierz model
Po skonfigurowaniu dostawcy możesz wybrać dostępny model, wpisując:
```bash frame="none"
/models
```
---
## Polecane modele
Na rynku jest mnóstwo modeli, co tydzień pojawia się nowe.
:::tip
Rozważ skorzystanie z jednego z rekomendowanych przez nas modeli.
:::
Jednak tylko kilka z nich jest dobrych przy generowaniu kodu, jak i wywołaniu narzędzia.
Oto kilka modeli, które dobrze współpracują z OpenCode, w kolejności. (Nie jest to lista wyczerpująca i nie jest konieczna aktualna):
- GPT 5.2
- Kodeks GPT 5.1
- Klaudiusz Opus 4.5
- Claude Sonnet 4.5
- Minimax M2.1
- Bliźnięta 3Pro
---
## Ustaw wartość domyślną
Aby zainstalować jeden z nich jako model domyślny, możesz zainstalować klucz `model` w swoim
OpenCode konfiguracja
```json title="opencode.json" {3}
{
"$schema": "https://opencode.ai/config.json",
"model": "lmstudio/google/gemma-3n-e4b"
}
```
Tutaj pełny identyfikator do `provider_id/model_id`. Na przykład, użycie [OpenCode Zen](/docs/zen), przestrzeganie `opencode/gpt-5.1-codex` dla Kodeksu GPT 5.1.
Jeśli skonfigurowałeś [dostawcę zwykłegogo] (./providers#custom), `provider_id` jest kluczem z części `provider` twojej konfiguracji, a `model_id` jest kluczem z `provider.models`.
---
## Skonfiguruj modele
Można globalnie skorzystać z opcji modelu poprzez plik config.
```jsonc title="opencode.jsonc" {7-12,19-24}
{
"$schema": "https://opencode.ai/config.json",
"provider": {
"openai": {
"models": {
"gpt-5": {
"options": {
"reasoningEffort": "high",
"textVerbosity": "low",
"reasoningSummary": "auto",
"include": ["reasoning.encrypted_content"],
},
},
},
},
"anthropic": {
"models": {
"claude-sonnet-4-5-20250929": {
"options": {
"thinking": {
"type": "enabled",
"budgetTokens": 16000,
},
},
},
},
},
},
}
```
Tutaj konfigurujemy urządzenia globalne dla dwóch modeli: `gpt-5` w przypadku dostępu za pośrednictwem dostawcy `openai` i `claude-sonnet-4-20250514` w przypadku dostępu za pośrednictwem dostawcy `anthropic`.
Wbudowane nazwy dostawców i modele można znaleźć na [Models.dev](https://models.dev).
Można także skorzystać z opcji dla dowolnych agentów, których używa się. Konfiguracja agenta jest dostępna jako opcja globalna. [Dowiedz się więcej](/docs/agents/#additional).
Można również zastosować alternatywne warianty, które wykluczają. Warianty konfiguracji ustawień konfiguracyjnych dla tego samego modelu bez tworzenia duplikatów wpisów:
```jsonc title="opencode.jsonc" {6-21}
{
"$schema": "https://opencode.ai/config.json",
"provider": {
"opencode": {
"models": {
"gpt-5": {
"variants": {
"high": {
"reasoningEffort": "high",
"textVerbosity": "low",
"reasoningSummary": "auto",
},
"low": {
"reasoningEffort": "low",
"textVerbosity": "low",
"reasoningSummary": "auto",
},
},
},
},
},
},
}
```
---
## Warianty
Wiele modeli obsługuje wiele wariantów lub różnych wybranych. OpenCode jest dostarczany z podstawowymi wariantami wariantów dla dostawców.
### Wbudowane warianty
OpenCode jest dostarczany z domyślnymi wariantami dla wielu dostawców:
**Antropiczny**:
- `high` Wysoki budżet na przemyślenie (domyślnie)
- `max` - Maksymalny budżet na myślenie
**OpenAI**:
Różni się zależnością od modelu, ale mniej więcej:
- `none` Brak uzasadnienia
- `minimal` - Minimalny wysiłek rozumowania
- `low` - Niewielki wysiłek w zakresie rozumowania
- `medium` Średni wysiłek rozumowania
- `high` - Duży wysiłek w zakresie rozumowania
- `xhigh` - Bardzo duży wysiłek w zakresie rozumowania
**Google**:
- `low` — Mniejszy nakład pracy/budżet tokena
- `high` — Większy nakład pracy/budżet tokena
:::tip
Lista ta nie jest kompletna. Wielu innych dostawców oferuje także opcję odchylenia ustawień.
:::
### Warianty niestandardowe
Można uwzględnić warianty lub dodać własne:
```jsonc title="opencode.jsonc" {7-18}
{
"$schema": "https://opencode.ai/config.json",
"provider": {
"openai": {
"models": {
"gpt-5": {
"variants": {
"thinking": {
"reasoningEffort": "high",
"textVerbosity": "low",
},
"fast": {
"disabled": true,
},
},
},
},
},
},
}
```
### Warianty cyklu
Naciśnij klawisza `variant_cycle`, aby szybko przełączać się między wariantami. [Dowiedz się więcej](/docs/keybinds).
---
## Ładowanie modeli
Po uruchomieniu OpenCode sprawdzanie modeli w następującej kolejności:
1. Flaga wiersza autora `--model` lub `-m`. Format jest taki sam jak w pliku konfiguracyjnym: `provider_id/model_id`.
2. Lista modeli w konstrukcji OpenCode.
```json title="opencode.json"
{
"$schema": "https://opencode.ai/config.json",
"model": "anthropic/claude-sonnet-4-20250514"
}
```
Sformatuj tutaj na `provider/model`.
3. Ostatni używany model.
4. Pierwszy model sterujący priorytetem wewnętrznym.

View File

@@ -0,0 +1,331 @@
---
title: Tryby
description: Różne tryby dla różnych zastosowań.
---
:::caution
Tryby są teraz konfigurowane za pomocą opcji `agent` w konfiguracji opencode.
Opcja `mode` jest obecnie przestarzała. [Dowiedz się więcej](/docs/agents).
:::
Tryb udostępniania możliwości stosowania, narzędzie i podpowiedzi do różnych zastosowań.
Posiadanie dwa tryby: **budowanie** i **planowanie**. Można dostosować
te lub skonfiguruj własne za pomocą konfiguracji opencode.
Można przełączać się między trybami podczas sesji lub konfigurować je w pliku konfiguracyjnym.
---
## Wbudowany
opencode ma dwa puste tryby.
---
### Zbudować
Kompilacja jest trybem **domyślnym** z dostępnymi narzędziami. Jest to standardowy tryb pracy programistycznej, który jest dostępny z pełnym dostępem do operacji na plikach i oryginalnych systemach systemowych.
---
### Plan
Tryb ograniczony do analizy. W urządzeniu planowym narzędzia są przydatne:
- `write` - Nie można stworzyć nowych plików
- `edit` — Nie można zastosować naruszenia plików, z naruszeniem praw autorskich w `.opencode/plans/*.md` w celu uszczegółowienia samego planu
- `patch` - Nie można zastosować poprawek
- `bash` - Nie można wykonać poleceń powłoki
Ten tryb jest alternatywny, gdy chcesz, aby sztuczna inteligencja analizowała kod, sugerowała zmianę lub tworzyła projekty bez źródła zewnętrznego, które stanowi bazę kodu.
---
## Przełączanie
Możesz przełączać się między trybami podczas sesji za pomocą klawisza _Tab_. Lub skrót klawiszowy `switch_mode`.
Zobacz także: [Formaterzy](/docs/formatters), aby uzyskać informacje na temat konfiguracji formatowania kodu.
---
## Skonfiguruj
Możliwość dostosowania alternatywnego trybu lub konfiguracji poprzez własną konfigurację. Tryb można skonfigurować na dwa systemy:
### Konfiguracja JSON-a
Skonfiguruj tryb w pliku konfiguracyjnym `opencode.json`:
```json title="opencode.json"
{
"$schema": "https://opencode.ai/config.json",
"mode": {
"build": {
"model": "anthropic/claude-sonnet-4-20250514",
"prompt": "{file:./prompts/build.txt}",
"tools": {
"write": true,
"edit": true,
"bash": true
}
},
"plan": {
"model": "anthropic/claude-haiku-4-20250514",
"tools": {
"write": false,
"edit": false,
"bash": false
}
}
}
}
```
### Konfiguracja przecen
Można także definiować tryby za pomocą plików przecen. Trzymaj je w:
- Globalnie: `~/.config/opencode/modes/`
- Projekt: `.opencode/modes/`
```markdown title="~/.config/opencode/modes/review.md"
---
model: anthropic/claude-sonnet-4-20250514
temperature: 0.1
tools:
write: false
edit: false
bash: false
---
You are in code review mode. Focus on:
- Code quality and best practices
- Potential bugs and edge cases
- Performance implications
- Security considerations
Provide constructive feedback without making direct changes.
```
Nazwa pliku przecen staje się kluczem trybunału (np. `review.md` tworzy tryb `review`).
Przyjrzyjmy się szczegółowo tym opcjom konfiguracji.
---
### Model
Zastosowanie konstrukcji `model`, aby zastosować domyślny model dla tego trybunału. Przydatne przy wykorzystaniu różnych modeli dostępnych w różnych zadaniach. Na przykład zastosowanie modelu, skuteczniejsze wykonanie modelu.
```json title="opencode.json"
{
"mode": {
"plan": {
"model": "anthropic/claude-haiku-4-20250514"
}
}
}
```
---
### Temperatura
Kontroluj losowość i kreatywność reakcji AI za pomocą konstrukcji `temperature`. Niższe wartości, że odpowiedzi są bardziej skupione i deterministyczne, podczas gdy najwyższa wartość jest innowacyjna i złożona.
```json title="opencode.json"
{
"mode": {
"plan": {
"temperature": 0.1
},
"creative": {
"temperature": 0.8
}
}
}
```
Wartości temperatury zazwyczaj wahają się od 0,0 do 1,0:
- **0,0-0,2**: Bardzo skoncentrowane i deterministyczne odpowiedzi, idealne do analizy i kodu źródłowego
- **0,3-0,5**: Zrównoważona odpowiedź z chwilą powstania, dobre do ogólnych zadań rozwojowych
- **0,61,0**: Bardziej kreatywne i odpowiedzi, rozstrzygnięte podczas burzy mózgów i eksploracji
```json title="opencode.json"
{
"mode": {
"analyze": {
"temperature": 0.1,
"prompt": "{file:./prompts/analysis.txt}"
},
"build": {
"temperature": 0.3
},
"brainstorm": {
"temperature": 0.7,
"prompt": "{file:./prompts/creative.txt}"
}
}
}
```
Jeśli nie ma wpływu na temperaturę, opencode stosuje się narzędzia badawcze dla modelu (zwykle 0 dla największych modeli, 0,55 dla modeli Qwen).
---
### Podpowiedź
niestandardowy plik podpowiedzi systemowych dla tej procedury za pomocą konfiguracji `prompt`. Plik informacyjny powinien zawierać instrukcje dotyczące przeznaczenia trybunału.
```json title="opencode.json"
{
"mode": {
"review": {
"prompt": "{file:./prompts/code-review.txt}"
}
}
}
```
Ścieżka ta zależy od miejsca, w którym znajduje się plik konfiguracyjny. Więc to dla działa
zarówno globalna opencode, jak i specjalna dla projektu.
---
### Narzędzia
Kontroluj, które narzędzia są dostępne w tym urządzeniu, za pomocą konfiguracji `tools`. Można włączyć lub dostępne narzędzie, ustawiając je na `true` lub `false`.
```json
{
"mode": {
"readonly": {
"tools": {
"write": false,
"edit": false,
"bash": false,
"read": true,
"grep": true,
"glob": true
}
}
}
}
```
Jeśli nie ma żadnych narzędzi, wszystkie narzędzia są wyłączone.
---
#### Dostępne narzędzie
Oto wszystkie narzędzia, które można sterować za pomocą konfiguracji trybunałów.
| Narzędzie | Opis |
| ----------- | ------------------------------------- |
| `bash` | Wykonaj polecenia powłoki |
| `edit` | Modyfikuj istniejące pliki |
| `write` | Utwórz nowe pliki |
| `read` | Przeczytaj zawartość pliku |
| `grep` | Wyszukaj zawartość pliku |
| `glob` | Znajdź pliki według wzorca |
| `list` | Lista zawartości katalogu |
| `patch` | Zastosuj poprawki do plików |
| `todowrite` | Zarządzaj listami rzeczy do wykonania |
| `todoread` | Przeczytaj listy rzeczy do zrobienia |
| `webfetch` | Pobierz zawartość internetową |
---
## Tryby niestandardowe
Możesz stworzyć własny tryb prywatny, dodając je do konfiguracji. Oto zastosowanie obu rozwiązań:
### Korzystanie z konfiguracji JSON
```json title="opencode.json" {4-14}
{
"$schema": "https://opencode.ai/config.json",
"mode": {
"docs": {
"prompt": "{file:./prompts/documentation.txt}",
"tools": {
"write": true,
"edit": true,
"bash": false,
"read": true,
"grep": true,
"glob": true
}
}
}
}
```
### Korzystanie z plików Markdown
Utwórz pliki trybów w `.opencode/modes/` dla trybów zapisanych dla projektu lub `~/.config/opencode/modes/` dla trybów globalnych:
```markdown title=".opencode/modes/debug.md"
---
temperature: 0.1
tools:
bash: true
read: true
grep: true
write: false
edit: false
---
You are in debug mode. Your primary goal is to help investigate and diagnose issues.
Focus on:
- Understanding the problem through careful analysis
- Using bash commands to inspect system state
- Reading relevant files and logs
- Searching for patterns and anomalies
- Providing clear explanations of findings
Do not make any changes to files. Only investigate and report.
```
```markdown title="~/.config/opencode/modes/refactor.md"
---
model: anthropic/claude-sonnet-4-20250514
temperature: 0.2
tools:
edit: true
read: true
grep: true
glob: true
---
You are in refactoring mode. Focus on improving code quality without changing functionality.
Priorities:
- Improve code readability and maintainability
- Apply consistent naming conventions
- Reduce code duplication
- Optimize performance where appropriate
- Ensure all tests continue to pass
```
---
### Przypadki użycia
Oto kilka typowych zastosowań dla różnych trybów.
- **Tryb stosowania**: Pełne prace programistyczne z dostępnymi narzędziami
- **Tryb planowania**: Analiza i planowanie bez zmian
- **Wypróbuj**: Przegląd kodu z możliwością odczytu i narzędzi do dokumentacji
- **Spróbuj debugowania**: Koncentruje się na urządzeniu z dostępnymi narzędziami bash i odczytu
- **Tryb Dokumenty**: Zapisywanie dokumentacji przy użyciu operacji na plikach, ale bez oryginalnych systemów systemowych
Może się również zdarzyć, że różne modele są dobre w różnych wersjach użycia.

View File

@@ -0,0 +1,57 @@
---
title: Sieć
description: Skonfiguruj serwery proxy i certyfikaty uwierzytelniające.
---
OpenCode obsługa standardowego zmiennego proxy i certyfikatów dla usług sieciowych przedsiębiorstw.
---
## Pełnomocnik
OpenCode respektuje standardowe zmienne środowiskowe proxy.
```bash
# HTTPS proxy (recommended)
export HTTPS_PROXY=https://proxy.example.com:8080
# HTTP proxy (if HTTPS not available)
export HTTP_PROXY=http://proxy.example.com:8080
# Bypass proxy for local server (required)
export NO_PROXY=localhost,127.0.0.1
```
:::caution
TUI komunikuje się z popularnym serwerem HTTP. Aby zapobiec łączem routingu, należy ominąć serwer proxy dla tego połączenia.
:::
Możesz pozostawić port serwera i hosta za pomocą [flaga CLI](/docs/cli#run).
---
### Uwierzytelniać
Jeśli Twój serwer proxy wymaga podstawowego uwierzytelniania, dołącz dane uwierzytelniające w adresie URL.
```bash
export HTTPS_PROXY=http://username:password@proxy.example.com:8080
```
:::caution
Unikaj kodowania haseł na stałe. Użyj testów kontrolnych lub oprogramowania poświadczeń.
:::
W przypadku serwera proxy zaawansowanego uwierzytelniania, jak NTLM lub Kerberos, dostęp do bram LLM, który umożliwia uwierzytelnianie.
---
## Certyfikaty niestandardowe
Jeśli Twoje przedsiębiorstwo korzysta z niestandardowych usług, urzędów dostępu do HTTPS, skonfiguruj OpenCode tak, aby im ufać.
```bash
export NODE_EXTRA_CA_CERTS=/path/to/ca-cert.pem
```
Działają tylko w przypadku proxy, jak i bezpośredniego dostępu do API.

View File

@@ -0,0 +1,237 @@
---
title: Uprawnienia
description: Kontroluj, które Akcje wymagają zatwierdzenia do uruchomienia.
---
OpenCode używa `permission`, aby uniknąć, czy dana akcja została wykonana automatycznie, zachowana monit lub została zablokowana.
Od `v1.1.1` starsza stworzona logiczna `tools` jest przestarzała i została stworzona scalona z `permission`. Stara wersja `tools` jest nadal obsługiwana w celu zapewnienia zgodności wstecznej.
---
## Działania
Każda reguła uprawnień skutkuje jedną z:
- `"allow"` — uruchamiany bez zgody
- `"ask"` — monit o zatwierdzenie
- `"deny"` — zablokuj akcję
---
## Konfiguracja
Możesz zainstalować uprawnienia globalnie (za pomocą `*`) i znajdującego się w nim narzędzia.
```json title="opencode.json"
{
"$schema": "https://opencode.ai/config.json",
"permission": {
"*": "ask",
"bash": "allow",
"edit": "deny"
}
}
```
Możesz także zainstalować wszystkie uprawnienia na raz:
```json title="opencode.json"
{
"$schema": "https://opencode.ai/config.json",
"permission": "allow"
}
```
---
## Szczegółowe reguły (składnia obiektu)
Można skorzystać z różnych działań, które zależą od danych użytkowych.
```json title="opencode.json"
{
"$schema": "https://opencode.ai/config.json",
"permission": {
"bash": {
"*": "ask",
"git *": "allow",
"npm *": "allow",
"rm *": "deny",
"grep *": "allow"
},
"edit": {
"*": "deny",
"packages/web/src/content/docs/*.mdx": "allow"
}
}
}
```
Reguły są zalecane na podstawie odpowiedniego wzorca, przy czym **ostatnia wynikaca reguła wygrywa**. Powszechnym wzorcem jest umieszczenie na pierwszym miejscu odpowiedniego catch-all `"*"`, a po bardziej szczegółowe zasady.
### Symbole wieloznaczne
Wzorce uprawnień z prostych dopasowywania symboli wieloznacznych:
- `*` dopasowuje zero lub więcej dowolnego znaku
- `?` odpowiada dokładnie jednemu znakowi
- Wszystkie pozostałe znaki pasują dosłownie
### Rozszerzenie katalogu domowego
Możesz używać `~` lub `$HOME` na początku wzorca, aby zastosować się do swojego katalogu domowego. Jest to szczególnie szczególne w przypadku reguły [`external_directory`](#external-directories).
- `~/projects/*` -> `/Users/username/projects/*`
- `$HOME/projects/*` -> `/Users/username/projects/*`
- `~` -> `/Users/username`
### Katalogi zewnętrzne
Użycie `external_directory`, aby zezwolić na wywołanie narzędzia, które obsługuje obsługę poza katalogiem roboczym, z uruchomieniem OpenCode. Dotyczy każdego narzędzia, które jako dane wejściowe zostało przyjęte (na przykład `read`, `edit`, `list`, `glob`, `grep` i wiele założycieli `bash`).
Rozszerzenie domu (jak `~/...`) wpływa tylko na sposób za zwyczajowy wzorca. Nie powoduje to, że strategie zewnętrzne stają się stosowane przez `external_directory`.
Na przykład umożliwia dostęp do wszystkiego pod `~/projects/personal/`:
```json title="opencode.json"
{
"$schema": "https://opencode.ai/config.json",
"permission": {
"external_directory": {
"~/projects/personal/**": "allow"
}
}
}
```
Każdy dopuszczony tutaj katalog jest dziedziczy tych samych ustawień, co dostęp do obszaru roboczego. Ponieważ [`read` ma wartość domyślną `allow`](#defaults), odczyty są również dostępne dla wpisów poniżej `external_directory`, chyba że zagłębione. Dodaj dodatkowe rozwiązanie, kiedy narzędzie powinno być rozwiązaniem w tych ścieżkach, np. blokowanie edycji przy zachowaniu odczytów:
```json title="opencode.json"
{
"$schema": "https://opencode.ai/config.json",
"permission": {
"external_directory": {
"~/projects/personal/**": "allow"
},
"edit": {
"~/projects/personal/**": "deny"
}
}
}
```
Skoncentruj listę na zaufanych ścieżkach i dodaj dodatkowe zezwolenie lub odmowę, jeśli jest potrzebne w innych narzędziach (na przykład `bash`).
---
## Dostępne uprawnienia
Uprawnienia OpenCode są określane na podstawie nazwy narzędzia i kilku zabezpieczeń:
- `read` — odczyt pliku (odpowiada ścieżce pliku)
- `edit` — wszystkie modyfikacje plików (obejmuje `edit`, `write`, `patch`, `multiedit`)
- `glob` — maglowanie plików (pasuje do wzorców globowania)
- `grep` — wyszukiwanie treści (pasuje do wzorca regularnego)
- `list` — wyświetlanie listy plików w katalogu (pasuje do katalogu)
- `bash` — uruchamianie poleceń powłoki (pasuje do poleceń przeanalizowanych, takich jak `git status --porcelain`)
- `task` — uruchamianie podagentów (odpowiada typowi podagenta)
- `skill` — ładowanie umiejętności (pasuje do nazwy umiejętności)
- `lsp` — uruchamianie zapytań LSP (obecnie nieszczegółowych)
- `todoread`, `todowrite` — czytanie/aktualizacja list rzeczy do wykonania
- `webfetch` — pobieranie adresu URL (pasuje do adresu URL)
- `websearch`, `codesearch` — wyszukiwanie sieci/kodu (pasuje do zapytań)
- `external_directory` — wywoływacz, gdy narzędzie jest dostępne poza katalogiem roboczym projektu
- `doom_loop` — wyzwalane, gdy samo wywołanie narzędzia zostanie powtórzone 3 razy z tymi samymi danymi podstawowymi
---
## Domyślne
Jeżeli nic nie jest określone, OpenCode zostanie uruchomione od dopuszczalnych rozwiązań diagnostycznych:
- Dostępne uprawnienia ma wartość domyślną `"allow"`.
- `doom_loop` i `external_directory` zamek ma wartość `"ask"`.
- `read` do `"allow"`, ale pliki `.env` są odrzucane:
```json title="opencode.json"
{
"permission": {
"read": {
"*": "allow",
"*.env": "deny",
"*.env.*": "deny",
"*.env.example": "allow"
}
}
}
```
---
## Co robi „Zapytaj”.
Gdy OpenCode poprosi o zatwierdzenie, interfejs użytkownika oferujący trzy wyniki:
- `once` — zatwierdź tylko tę prośbę
- `always` — zastosowanie, które następuje po zastosowaniu sugerowanych wzorców (przez następczą bieżącą sesję OpenCode)
- `reject` — odrzucić
Zestaw wzorców, które `always` zatwierdziłby, jest udostępniony przez narzędzie (na przykładzie zatwierdzenia bash zazwyczaj umieszczają na częstotliwości bezpiecznej prefiksy polecenia, takie jak `git status*`).
---
## Agenci
Można uzyskać dostęp do poszczególnych agentów. Uprawnienia agenta są skalowane z konfiguracją globalną, a następnie agenta ma pierwszeństwo. [Dowiedz się więcej](/docs/agents#permissions) o prawach agenta.
:::note
Bardziej szczegółowe przykłady dopasowywania wzorców można znaleźć w sekcji [Reguły szczegółowe (składnia obiektu) (#granular-rules-object-syntax) powyżej.
:::
```json title="opencode.json"
{
"$schema": "https://opencode.ai/config.json",
"permission": {
"bash": {
"*": "ask",
"git *": "allow",
"git commit *": "deny",
"git push *": "deny",
"grep *": "allow"
}
},
"agent": {
"build": {
"permission": {
"bash": {
"*": "ask",
"git *": "allow",
"git commit *": "ask",
"git push *": "deny",
"grep *": "allow"
}
}
}
}
}
```
Możesz także mieć pozwolenie na agenta w Markdown:
```markdown title="~/.config/opencode/agents/review.md"
---
description: Code review without edits
mode: subagent
permission:
edit: deny
bash: ask
webfetch: deny
---
Only analyze code and suggest changes.
```
:::tip
zastosowanie dopasowywania wzorców dla pierwotnych z argumentami. `"grep *"` pozwala na `grep pattern file.txt`, podczas gdy sam `"grep"` blokuje to. Polecenia takie jak `git status` w przypadku postępowania dyscyplinarnego, ale ostatecznego zastosowania (np. `"git status *"`) podczas stosowania argumentów.
:::

View File

@@ -0,0 +1,385 @@
---
title: Wtyczki
description: Napisz własną wtyczkę, aby rozszerzyć OpenCode.
---
Wtyczki umożliwiające wyłączenie OpenCode poprzez podjęcie różnych zdarzeń i zachowanie. Można utworzyć wtyczkę, aby sprawdzić nowe funkcje, integrować się z usługami lub sprawdzaniem zachowania OpenCode.
Aby znaleźć się z przykładami, przejrzyj [wtyczki](/docs/ecosystem#plugins) utworzone przez społeczność.
---
## użyj wtyczki
Istnieją dwa sposoby ładowania wtyczek.
---
### Z plików lokalnych
Miejsce plików JavaScript lub TypeScript w katalogu wtyczki.
- `.opencode/plugins/` - Wtyczki na poziomie projektu
- `~/.config/opencode/plugins/` - Wtyczki globalne
Pliki w tych katalogach są automatycznie ładowane podczas uruchamiania.
---
### Z npm
szczegółowy pakiet npm w pliku konfiguracyjnym.
```json title="opencode.json"
{
"$schema": "https://opencode.ai/config.json",
"plugin": ["opencode-helicone-session", "opencode-wakatime", "@my-org/custom-plugin"]
}
```
Obsługiwane są zarówno pakiety zwykłe, jak i pakiety npm o określonym zakresie.
Przeglądaj dostępną wtyczkę w [ekosystemie](/docs/ecosystem#plugins).
---
### Sposób instalacji wtyczek
**wtyczki npm** są instalowane automatycznie przy użyciu Bun podczas uruchamiania. Pakiety i ich zależności są buforowane w `~/.cache/opencode/node_modules/`.
**Wtyczki lokalne** są ładowane bezpośrednio z katalogu wtyczek. Aby uzyskać dostęp do zewnętrznych pakietów, musisz zainstalować `package.json` w swoim katalogu konfiguracyjnym (zobacz [Zależności](#dependencies)) lub opublikować wtyczkę w npm i [dodaj ją do swojej konfiguracji](/docs/config#plugins).
---
### Załaduj zamówienie
Wtyczki są ładowane ze wszystkich źródeł, a wszystkie hooki napisane po kolei. Kolejność ładowania do:
1. Konfiguracja globalna (`~/.config/opencode/opencode.json`)
2. Konfiguracja projektu (`opencode.json`)
3. Globalny katalog wtyczek (`~/.config/opencode/plugins/`)
4. Katalog wtyczek projektu (`.opencode/plugins/`)
Zduplikowane pakiety npm o tej samej nazwie i wersji są ładowane raz. Równie ważny jest dostęp lokalny i zewnętrzny npm o dodatkowych nazwach, które są zewnętrzne.
---
## Utwórz wtyczkę
Wtyczka do **moduł JavaScript/TypeScript**, który eksportuje jeden lub więcej wtyczek
funkcje. dostępna funkcja korzystania z obiektu kontekstu i głównego obiektu hooks.
---
### Zależności
Lokalne narzędzie i narzędzie, które można wykorzystać z zewnętrznych pakietów npm. Dodaj `package.json` do swojego katalogu konfiguracyjnego z zależnościami.
```json title=".opencode/package.json"
{
"dependencies": {
"shescape": "^2.1.0"
}
}
```
OpenCode uruchomienie `bun install` przy uruchomieniu, aby je uruchomić. Twoje dodatkowe funkcje będą dostępne po zaimportowaniu.
```ts title=".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)
}
},
}
}
```
---
### Podstawowa struktura
```js title=".opencode/plugins/example.js"
export const MyPlugin = async ({ project, client, $, directory, worktree }) => {
console.log("Plugin initialized!")
return {
// Hook implementations go here
}
}
```
Funkcja dostępu do:
- `project`: Aktualne informacje o projekcie.
- `directory`: Bieżący katalog roboczy.
- `worktree`: Ścieżka eksploatacyjna Git.
- `client`: Klient SDK z otwartym kodem do sztucznej inteligencji.
- `$`: [API obudowy](https://bun.com/docs/runtime/shell) Buna do wykonywania oprogramowania.
---
### Obsługa TypeScriptu
W przypadku wtyczek TypeScript możesz importować typy z pakietu wtyczek:
```ts title="my-plugin.ts" {1}
import type { Plugin } from "@opencode-ai/plugin"
export const MyPlugin: Plugin = async ({ project, client, $, directory, worktree }) => {
return {
// Type-safe hook implementations
}
}
```
---
### Wydarzenia
Wtyczki mogą subskrybować zdarzenia, jak zastosować poniżej sekcji Przykłady. Oto lista różnych działań.
#### Wydarzenia dowodzenia
- `command.executed`
#### Plik Wydarzenia
- `file.edited`
- `file.watcher.updated`
#### Wydarzenia instalacyjne
- `installation.updated`
#### Wydarzenia LSP
- `lsp.client.diagnostics`
- `lsp.updated`
#### Wydarzenia w wiadomościach
- `message.part.removed`
- `message.part.updated`
- `message.removed`
- `message.updated`
#### Wydarzenia związane z uprawnieniami
- `permission.asked`
- `permission.replied`
#### Wydarzenia serwerowe
- `server.connected`
#### Wydarzenia sesyjne
- `session.created`
- `session.compacted`
- `session.deleted`
- `session.diff`
- `session.error`
- `session.idle`
- `session.status`
- `session.updated`
#### Wydarzenia do zrobienia
- `todo.updated`
#### Wydarzenia powłoki
- `shell.env`
#### Wydarzenia narzędziowe
- `tool.execute.after`
- `tool.execute.before`
#### Wydarzenia TUI
- `tui.prompt.append`
- `tui.command.execute`
- `tui.toast.show`
---
## Przykłady
Oto kilka dostępnych wtyczek, które można udostępnić do kodu opencode.
---
### Wysyłaj powiadomienia
Wysyłaj powiadomienia, gdy wystąpią określone zdarzenia:
```js title=".opencode/plugins/notification.js"
export const NotificationPlugin = async ({ project, client, $, directory, worktree }) => {
return {
event: async ({ event }) => {
// Send notification on session completion
if (event.type === "session.idle") {
await $`osascript -e 'display notification "Session completed!" with title "opencode"'`
}
},
}
}
```
Używamy `osascript` do uruchamiania AppleScript na macOS. Tutaj możesz przejść do wysyłania pozostałości.
:::note
Jeśli korzystasz z aplikacji komputerowej OpenCode, może ona automatycznie wysłać wiadomość systemową, gdy odpowiedź jest gotowa lub gdy wystąpią błędy sesji.
:::
---
### ochrona .env
Zablokuj opencode czytanie plików `.env`:
```javascript title=".opencode/plugins/env-protection.js"
export const EnvProtection = async ({ project, client, $, directory, worktree }) => {
return {
"tool.execute.before": async (input, output) => {
if (input.tool === "read" && output.args.filePath.includes(".env")) {
throw new Error("Do not read .env files")
}
},
}
}
```
---
### Wstrzyknij zmienne środowiskowe
Wstrzyknij zmienne konsekwencje dla wszystkich wykonań (narzędzia AI i terminale użytkownika):
```javascript title=".opencode/plugins/inject-env.js"
export const InjectEnvPlugin = async () => {
return {
"shell.env": async (input, output) => {
output.env.MY_API_KEY = "secret"
output.env.PROJECT_ROOT = input.cwd
},
}
}
```
---
### Niestandardowe narzędzia
Wtyczki mogą również dodawać niestandardowe narzędzia do opencode:
```ts title=".opencode/plugins/custom-tools.ts"
import { type Plugin, tool } from "@opencode-ai/plugin"
export const CustomToolsPlugin: Plugin = async (ctx) => {
return {
tool: {
mytool: tool({
description: "This is a custom tool",
args: {
foo: tool.schema.string(),
},
async execute(args, context) {
const { directory, worktree } = context
return `Hello ${args.foo} from ${directory} (worktree: ${worktree})`
},
}),
},
}
}
```
Pomocnik `tool` tworzy narzędzie użytkowe, które może wywołać kod opencode. Pobierane schematu Zoda i narzędzie wyszukiwania za pomocą:
- `description`: Co robi do narzędzia
- `args`: Schemat Zoda dla narzędzi argumentów
- `execute`: Funkcja uruchamiania po wywołaniu narzędzia
Twoje narzędzie będzie dostępne dla otwartego kodu wraz z narzędziami użytkowymi.
---
### Wycięcie lasu
użyj `client.app.log()` zamiast `console.log` do rejestracji strukturalnego:
```ts title=".opencode/plugins/my-plugin.ts"
export const MyPlugin = async ({ client }) => {
await client.app.log({
body: {
service: "my-plugin",
level: "info",
message: "Plugin initialized",
extra: { foo: "bar" },
},
})
}
```
Poziomy: `debug`, `info`, `warn`, `error`. Aby uzyskać szczegółowe informacje, zobacz [dokumentację pakietu SDK](https://opencode.ai/docs/sdk).
---
### Haki zagęszczające
Dostosuj kontekst dołączony podczas kompaktowania sesji:
```ts title=".opencode/plugins/compaction.ts"
import type { Plugin } from "@opencode-ai/plugin"
export const CompactionPlugin: Plugin = async (ctx) => {
return {
"experimental.session.compacting": async (input, output) => {
// Inject additional context into the compaction prompt
output.context.push(`
## Custom Context
Include any state that should persist across compaction:
- Current task status
- Important decisions made
- Files being actively worked on
`)
},
}
}
```
Hak `experimental.session.compacting` jest uruchamiany, zanim LLM wygeneruje podsumowanie kontynuacji. go, aby wstrzyknąć kontekst kontekstu dla domeny, której nie dostrzeżono przez domyślny monit o zagęszczenie.
Można także umieścić kompletny monit o zagęszczenie, ustawiając `output.prompt`:
```ts title=".opencode/plugins/custom-compaction.ts"
import type { Plugin } from "@opencode-ai/plugin"
export const CustomCompactionPlugin: Plugin = async (ctx) => {
return {
"experimental.session.compacting": async (input, output) => {
// Replace the entire compaction prompt
output.prompt = `
You are generating a continuation prompt for a multi-agent swarm session.
Summarize:
1. The current task and its status
2. Which files are being modified and by whom
3. Any blockers or dependencies between agents
4. The next steps to complete the work
Format as a structured prompt that a new agent can use to resume work.
`
},
}
}
```
Gdy urządzenie jest `output.prompt`, jest całkowicie dostępne na domyślnym monit o zagęszczanie. Tablica `output.context` jest w tym przypadku poniesiona.

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,180 @@
---
title: Rules
description: Ustaw niestandardowe instrukcje dla opencode.
---
Możesz dostarczyć niestandardowe instrukcje do kodu opencode, tworząc plik `AGENTS.md`. Jest to podobne do zasad Cursora. Zawiera instrukcje, które zostaną uwzględnione w kontekście LLM, aby dostosować jego zachowanie do konkretnego projektu.
---
## Inicjalizacja
Aby utworzyć nowy plik `AGENTS.md`, możesz uruchomić komendę `/init` w otwartym kodzie.
:::tip
Powinieneś zatwierdzić plik `AGENTS.md` swojego projektu w Git.
:::
Spowoduje to przeskanowanie projektu i całej jego zawartości, aby zrozumieć, czego dotyczy projekt i wygenerować z nim plik `AGENTS.md`. Pomaga to otwartemu kodowi lepiej poruszać się po projekcie.
Jeśli masz istniejący plik `AGENTS.md`, spróbujemy go dodać.
---
## Przykład
Możesz także po prostu utworzyć ten plik ręcznie. Oto przykład niektórych rzeczy, które można umieścić w pliku `AGENTS.md`.
```markdown title="AGENTS.md"
# SST v3 Monorepo Project
This is an SST v3 monorepo with TypeScript. The project uses bun workspaces for package management.
## Project Structure
- `packages/` - Contains all workspace packages (functions, core, web, etc.)
- `infra/` - Infrastructure definitions split by service (storage.ts, api.ts, web.ts)
- `sst.config.ts` - Main SST configuration with dynamic imports
## Code Standards
- Use TypeScript with strict mode enabled
- Shared code goes in `packages/core/` with proper exports configuration
- Functions go in `packages/functions/`
- Infrastructure should be split into logical files in `infra/`
## Monorepo Conventions
- Import shared modules using workspace names: `@my-app/core/example`
```
Dodajemy tutaj instrukcje dotyczące konkretnego projektu, które zostaną udostępnione całemu zespołowi.
---
## Types
opencode obsługuje także odczytywanie pliku `AGENTS.md` z wielu lokalizacji. A to służy różnym celom.
### Project
Umieść `AGENTS.md` w katalogu głównym projektu, aby uzyskać reguły specyficzne dla projektu. Mają one zastosowanie tylko wtedy, gdy pracujesz w tym katalogu lub jego podkatalogach.
### Global
Możesz także mieć reguły globalne w pliku `~/.config/opencode/AGENTS.md`. Jest to stosowane we wszystkich sesjach opencode.
Ponieważ nie jest to wymagane dla Git ani udostępniane Twojemu zespołowi, zalecamy użycie tego do określenia wszelkich osobistych zasad, których powinien przestrzegać LLM.
### Claude Code Compatibility
W przypadku użytkowników migrujących z Claude Code OpenCode obsługuje konwencje plików Claude Code jako rozwiązania awaryjne:
- **Zasady projektu**: `CLAUDE.md` w katalogu projektu (używane, jeśli nie istnieje `AGENTS.md`)
- **Zasady globalne**: `~/.claude/CLAUDE.md` (używane, jeśli nie istnieje `~/.config/opencode/AGENTS.md`)
- **Umiejętności**: `~/.claude/skills/` — szczegóły znajdziesz w [Umiejętnościach agenta](/docs/skills/)
Aby wyłączyć kompatybilność z Claude Code, ustaw jedną z tych zmiennych środowiskowych:
```bash
export OPENCODE_DISABLE_CLAUDE_CODE=1 # Disable all .claude support
export OPENCODE_DISABLE_CLAUDE_CODE_PROMPT=1 # Disable only ~/.claude/CLAUDE.md
export OPENCODE_DISABLE_CLAUDE_CODE_SKILLS=1 # Disable only .claude/skills
```
---
## Precedence
Po uruchomieniu opencode szuka plików reguł w następującej kolejności:
1. **Pliki lokalne** poprzez przejście z bieżącego katalogu (`AGENTS.md`, `CLAUDE.md`)
2. **Plik globalny** w `~/.config/opencode/AGENTS.md`
3. **Plik Claude Code** w `~/.claude/CLAUDE.md` (chyba że wyłączony)
Pierwszy pasujący plik wygrywa w każdej kategorii. Na przykład, jeśli masz zarówno `AGENTS.md`, jak i `CLAUDE.md`, używany jest tylko `AGENTS.md`. Podobnie `~/.config/opencode/AGENTS.md` ma pierwszeństwo przed `~/.claude/CLAUDE.md`.
---
## Instrukcje niestandardowe
Możesz określić niestandardowe pliki instrukcji w swoim `opencode.json` lub globalnym `~/.config/opencode/opencode.json`. Dzięki temu Ty i Twój zespół możecie ponownie wykorzystać istniejące reguły, zamiast duplikować je w pliku AGENTS.md.
Przykład:
```json title="opencode.json"
{
"$schema": "https://opencode.ai/config.json",
"instructions": ["CONTRIBUTING.md", "docs/guidelines.md", ".cursor/rules/*.md"]
}
```
Możesz także użyć zdalnych adresów URL, aby załadować instrukcje z Internetu.
```json title="opencode.json"
{
"$schema": "https://opencode.ai/config.json",
"instructions": ["https://raw.githubusercontent.com/my-org/shared-rules/main/style.md"]
}
```
Instrukcje zdalne są pobierane z 5-sekundowym limitem czasu.
Wszystkie pliki instrukcji są łączone z plikami `AGENTS.md`.
---
## Odwoływanie się do plików zewnętrznych
Chociaż opencode nie analizuje automatycznie odniesień do plików w `AGENTS.md`, możesz osiągnąć podobną funkcjonalność na dwa sposoby:
### Używanie opencode.json
Zalecanym podejściem jest użycie pola `instructions` w `opencode.json`:
```json title="opencode.json"
{
"$schema": "https://opencode.ai/config.json",
"instructions": ["docs/development-standards.md", "test/testing-guidelines.md", "packages/*/AGENTS.md"]
}
```
### Manual Instructions in AGENTS.md
Możesz nauczyć opencode czytać pliki zewnętrzne, podając wyraźne instrukcje w swoim `AGENTS.md`. Oto praktyczny przykład:
```markdown title="AGENTS.md"
# TypeScript Project Rules
## External File Loading
CRITICAL: When you encounter a file reference (e.g., @rules/general.md), use your Read tool to load it on a need-to-know basis. They're relevant to the SPECIFIC task at hand.
Instructions:
- Do NOT preemptively load all references - use lazy loading based on actual need
- When loaded, treat content as mandatory instructions that override defaults
- Follow references recursively when needed
## Development Guidelines
For TypeScript code style and best practices: @docs/typescript-guidelines.md
For React component architecture and hooks patterns: @docs/react-patterns.md
For REST API design and error handling: @docs/api-standards.md
For testing strategies and coverage requirements: @test/testing-guidelines.md
## General Guidelines
Read the following file immediately as it's relevant to all workflows: @rules/general-guidelines.md.
```
Takie podejście pozwala:
- Twórz modułowe pliki reguł wielokrotnego użytku
- Share rules across projects via symlinks or git submodules
- Keep AGENTS.md concise while referencing detailed guidelines
- Upewnij się, że opencode ładuje pliki tylko wtedy, gdy są potrzebne do konkretnego zadania
:::tip
W przypadku monorepo lub projektów ze wspólnymi standardami użycie `opencode.json` ze wzorami globalnymi (takimi jak `packages/*/AGENTS.md`) jest łatwiejsze w utrzymaniu niż instrukcje ręczne.
:::

View File

@@ -0,0 +1,391 @@
---
title: SDK
description: Klient JS bezpieczny dla typu dla serwera opencode.
---
import config from "../../../../config.mjs"
export const typesUrl = `${config.github}/blob/dev/packages/sdk/js/src/gen/types.gen.ts`
Pakiet SDK JS/TS z otwartym kodem zapewnia klienta bezpiecznego typu do interakcji z serwerem.
Użyj go do budowania integracji i programowej kontroli otwartego kodu.
[Dowiedz się więcej](/docs/server) o działaniu serwera. Przykłady znajdziesz w [projektach](/docs/ecosystem#projects) stworzonych przez społeczność.
---
## Zainstalować
Zainstaluj pakiet SDK z npm:
```bash
npm install @opencode-ai/sdk
```
---
## Utwórz klienta
Utwórz instancję otwartego kodu:
```javascript
import { createOpencode } from "@opencode-ai/sdk"
const { client } = await createOpencode()
```
Spowoduje to uruchomienie zarówno serwera, jak i klienta
#### Options
| Opcja | Wpisz | Opis | Domyślne |
| ---------- | ------------- | ------------------------------ | ----------- |
| `hostname` | `string` | Nazwa hosta serwera | `127.0.0.1` |
| `port` | `number` | Port serwera | `4096` |
| `signal` | `AbortSignal` | Sygnał przerwania w celu anulowania | `undefined` |
| `timeout` | `number` | Limit czasu w ms dla uruchomienia serwera | `5000` |
| `config` | `Config` | Configuration object | `{}` |
---
## Config
Można przekazać obiekt konfiguracyjny, aby dostosować zachowanie. Instancja nadal pobiera `opencode.json`, ale możesz zastąpić lub dodać konfigurację bezpośrednio:
```javascript
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()
```
## Client only
Jeśli masz już działającą instancję opencode, możesz utworzyć instancję klienta, aby się z nią połączyć:
```javascript
import { createOpencodeClient } from "@opencode-ai/sdk"
const client = createOpencodeClient({
baseUrl: "http://localhost:4096",
})
```
#### Options
| Opcja | Wpisz | Opis | Domyślne |
| --------------- | ---------- | -------------------------------- | ----------------------- |
| `baseUrl` | `string` | Adres URL serwera | `http://localhost:4096` |
| `fetch` | `function` | Custom fetch implementation | `globalThis.fetch` |
| `parseAs` | `string` | Response parsing method | `auto` |
| `responseStyle` | `string` | Return style: `data` or `fields` | `fields` |
| `throwOnError` | `boolean` | Throw errors instead of return | `false` |
---
## Types
Zestaw SDK zawiera definicje TypeScript dla wszystkich typów API. Zaimportuj je bezpośrednio:
```typescript
import type { Session, Message, Part } from "@opencode-ai/sdk"
```
Wszystkie typy są generowane na podstawie specyfikacji OpenAPI serwera i dostępne w <a href={typesUrl}>pliku typów</a>.
---
## Errors
SDK może generować błędy, które można przechwycić i obsłużyć:
```typescript
try {
await client.session.get({ path: { id: "invalid-id" } })
} catch (error) {
console.error("Failed to get session:", (error as Error).message)
}
```
---
## APIs
Zestaw SDK udostępnia wszystkie interfejsy API serwera za pośrednictwem klienta bezpiecznego typu.
---
### Global
| Method | Description | Response |
| ----------------- | ------------------------------- | ------------------------------------ |
| `global.health()` | Sprawdź stan i wersję serwera | `{ healthy: true, version: string }` |
---
#### Examples
```javascript
const health = await client.global.health()
console.log(health.data.version)
```
---
### App
| Method | Description | Response |
| -------------- | ------------------------- | ------------------------------------------- |
| `app.log()` | Write a log entry | `boolean` |
| `app.agents()` | Lista wszystkich dostępnych agentów | <a href={typesUrl}><code>Agent[]</code></a> |
---
#### Examples
```javascript
// Write a log entry
await client.app.log({
body: {
service: "my-app",
level: "info",
message: "Operation completed",
},
})
// List available agents
const agents = await client.app.agents()
```
---
### Project
| Method | Description | Response |
| ------------------- | ------------------- | --------------------------------------------- |
| `project.list()` | Lista wszystkich projektów | <a href={typesUrl}><code>Projekt[]</code></a> |
| `project.current()` | Get current project | <a href={typesUrl}><code>Project</code></a> |
---
#### Examples
```javascript
// List all projects
const projects = await client.project.list()
// Get current project
const currentProject = await client.project.current()
```
---
### Path
| Method | Description | Response |
| ------------ | ---------------- | ---------------------------------------- |
| `path.get()` | Get current path | <a href={typesUrl}><code>Path</code></a> |
---
#### Examples
```javascript
// Get current path information
const pathInfo = await client.path.get()
```
---
### Config
| Method | Description | Response |
| -------------------- | --------------------------------- | ----------------------------------------------------------------------------------------------------- |
| `config.get()` | Get config info | <a href={typesUrl}><code>Config</code></a> |
| `config.providers()` | Lista dostawców i modeli domyślnych | `{ providers: `<a href={typesUrl}><code>Dostawca[]</code></a>`, default: { [key: string]: string } }` |
---
#### Examples
```javascript
const config = await client.config.get()
const { providers, default: defaults } = await client.config.providers()
```
---
### Sessions
| Method | Description | Notes |
| ---------------------------------------------------------- | ---------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------- |
| `session.list()` | Lista sesji | Zwraca <a href={typesUrl}><code>Sesja[]</code></a> |
| `session.get({ path })` | Uzyskaj sesję | Zwraca <a href={typesUrl}><code>Sesja</code></a> |
| `session.children({ path })` | Lista sesji podrzędnych | Zwraca <a href={typesUrl}><code>Sesja[]</code></a> |
| `session.create({ body })` | Utwórz sesję | Zwraca <a href={typesUrl}><code>Sesja</code></a> |
| `session.delete({ path })` | Usuń sesję | Zwraca `boolean` |
| `session.update({ path, body })` | Aktualizuj właściwości sesji | Zwraca <a href={typesUrl}><code>Sesja</code></a> |
| `session.init({ path, body })` | Przeanalizuj aplikację i utwórz `AGENTS.md` | Zwraca `boolean` |
| `session.abort({ path })` | Przerwij trwającą sesję | Zwraca `boolean` |
| `session.share({ path })` | Udostępnij sesję | Zwraca <a href={typesUrl}><code>Sesja</code></a> |
| `session.unshare({ path })` | Cofnij udostępnianie sesji | Zwraca <a href={typesUrl}><code>Sesja</code></a> |
| `session.summarize({ path, body })` | Podsumowanie sesji | Zwraca `boolean` |
| `session.messages({ path })` | Lista wiadomości w sesji | Zwraca `{ info: `<a href={typesUrl}><code>Wiadomość</code></a>`, parts: `<a href={typesUrl}><code>Część[]</code></a>`}[]` |
| `session.message({ path })` | Uzyskaj szczegóły wiadomości | Zwraca `{ info: `<a href={typesUrl}><code>Wiadomość</code></a>`, parts: `<a href={typesUrl}><code>Część[]</code></a>`}` |
| `session.prompt({ path, body })` | Wyślij wiadomość | `body.noReply: true` zwraca UserMessage (tylko kontekst). Domyślnie zwraca <a href={typesUrl}><code>AssistantMessage</code></a> z odpowiedzią AI |
| `session.command({ path, body })` | Wyślij polecenie do sesji | Zwraca `{ info: `<a href={typesUrl}><code>Wiadomość Asystenta</code></a>`, parts: `<a href={typesUrl}><code>Część[]</code></a>`}` |
| `session.shell({ path, body })` | Uruchom polecenie powłoki | Zwraca <a href={typesUrl}><code>Wiadomość Asystenta</code></a> |
| `session.revert({ path, body })` | Przywróć wiadomość | Zwraca <a href={typesUrl}><code>Sesja</code></a> |
| `session.unrevert({ path })` | Przywróć przywrócone wiadomości | Zwraca <a href={typesUrl}><code>Sesja</code></a> |
| `postSessionByIdPermissionsByPermissionId({ path, body })` | Respond to a permission request | Returns `boolean` |
---
#### Examples
```javascript
// Create and manage sessions
const session = await client.session.create({
body: { title: "My session" },
})
const sessions = await client.session.list()
// Send a prompt message
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!" }],
},
})
// Inject context without triggering AI response (useful for plugins)
await client.session.prompt({
path: { id: session.id },
body: {
noReply: true,
parts: [{ type: "text", text: "You are a helpful assistant." }],
},
})
```
---
### Files
| Method | Description | Response |
| ------------------------- | ---------------------------------- | ------------------------------------------------------------------------------------------- |
| `find.text({ query })` | Szukaj tekstu w plikach | Tablica obiektów dopasowania z `path`, `lines`, `line_number`, `absolute_offset`, `submatches` |
| `find.files({ query })` | Znajdź pliki i katalogi według nazwy | `string[]` (ścieżki) |
| `find.symbols({ query })` | Find workspace symbols | <a href={typesUrl}><code>Symbol[]</code></a> |
| `file.read({ query })` | Read a file | `{ type: "raw" \| "patch", content: string }` |
| `file.status({ query? })` | Uzyskaj status śledzonych plików | <a href={typesUrl}><code>Plik[]</code></a> |
`find.files` supports a few optional query fields:
- `type`: `"file"` or `"directory"`
- `directory`: zastąp katalog główny projektu dla wyszukiwania
- `limit`: max results (1200)
---
#### Examples
```javascript
// Search and read files
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
| Method | Description | Response |
| ------------------------------ | ------------------------- | --------- |
| `tui.appendPrompt({ body })` | Dołącz tekst do zachęty | `boolean` |
| `tui.openHelp()` | Otwórz okno pomocy | `boolean` |
| `tui.openSessions()` | Otwórz selektor sesji | `boolean` |
| `tui.openThemes()` | Otwórz selektor motywów | `boolean` |
| `tui.openModels()` | Otwórz selektor modelu | `boolean` |
| `tui.submitPrompt()` | Prześlij bieżący monit | `boolean` |
| `tui.clearPrompt()` | Wyczyść monit | `boolean` |
| `tui.executeCommand({ body })` | Wykonaj polecenie | `boolean` |
| `tui.showToast({ body })` | Pokaż powiadomienie tostowe | `boolean` |
---
#### Examples
```javascript
// Control TUI interface
await client.tui.appendPrompt({
body: { text: "Add this to prompt" },
})
await client.tui.showToast({
body: { message: "Task completed", variant: "success" },
})
```
---
### Auth
| Method | Description | Response |
| ------------------- | ------------------------------ | --------- |
| `auth.set({ ... })` | Set authentication credentials | `boolean` |
---
#### Examples
```javascript
await client.auth.set({
path: { id: "anthropic" },
body: { type: "api", key: "your-api-key" },
})
```
---
### Events
| Method | Description | Response |
| ------------------- | ------------------------- | ------------------------- |
| `event.subscribe()` | Strumień zdarzeń wysłanych przez serwer | Strumień zdarzeń wysłanych przez serwer |
---
#### Examples
```javascript
// Listen to real-time events
const events = await client.event.subscribe()
for await (const event of events.stream) {
console.log("Event:", event.type, event.properties)
}
```

View File

@@ -0,0 +1,287 @@
---
title: Serwer
description: Interakcja z serwerem opencode za pośrednictwem protokołu HTTP.
---
import config from "../../../../config.mjs"
export const typesUrl = `${config.github}/blob/dev/packages/sdk/js/src/gen/types.gen.ts`
Komenda `opencode serve` uruchamia bezgłowy serwer HTTP, który udostępnia punkt końcowy OpenAPI, z którego może korzystać klient opencode.
---
### Użycie
```bash
opencode serve [--port <number>] [--hostname <string>] [--cors <origin>]
```
#### Opcje
| Flaga | Opis | Domyślne |
| --------------- | -------------------------------------------- | ---------------- |
| `--port` | Port nasłuchiwania | `4096` |
| `--hostname` | Nazwa hosta do nasłuchiwania | `127.0.0.1` |
| `--mdns` | Włącz wykrywanie mDNS | `false` |
| `--mdns-domain` | Niestandardowa nazwa domeny dla usługi mDNS | `opencode.local` |
| `--cors` | Dodatkowe originy przeglądarki do dozwolenia | `[]` |
`--cors` można przekazać wiele razy:
```bash
opencode serve --cors http://localhost:5173 --cors https://app.example.com
```
---
### Uwierzytelnianie
Ustaw `OPENCODE_SERVER_PASSWORD`, aby chronić serwer za pomocą podstawowego uwierzytelniania HTTP. Domyślną nazwą użytkownika jest `opencode` lub ustaw `OPENCODE_SERVER_USERNAME`, aby ją zastąpić. Dotyczy to zarówno `opencode serve`, jak i `opencode web`.
```bash
OPENCODE_SERVER_PASSWORD=your-password opencode serve
```
---
### How it works
Kiedy uruchomisz `opencode`, uruchomi się TUI i serwer. Gdzie jest TUI
klient komunikujący się z serwerem. Serwer udostępnia specyfikację OpenAPI 3.1
punkt końcowy. Ten punkt końcowy jest również używany do generowania [SDK](/docs/sdk).
:::tip
Użyj serwera opencode do programowej interakcji z opencode.
:::
Ta architektura umożliwia obsługę wielu klientów przez kod otwarty i programową interakcję z kodem otwartym.
Możesz uruchomić `opencode serve`, aby uruchomić samodzielny serwer. Jeśli masz
opencode TUI działa, `opencode serve` uruchomi nowy serwer.
---
#### Połącz się z istniejącym serwerem
Po uruchomieniu TUI losowo przypisuje port i nazwę hosta. Zamiast tego możesz przekazać `--hostname` i `--port` [flagi](/docs/cli). Następnie użyj tego, aby połączyć się z serwerem.
Punktu końcowego [`/tui`](#tui) można użyć do sterowania TUI przez serwer. Można na przykład wstępnie wypełnić lub uruchomić monit. Ta konfiguracja jest używana przez wtyczki OpenCode [IDE](/docs/ide).
---
## Spec
Serwer publikuje specyfikację OpenAPI 3.1, którą można obejrzeć pod adresem:
```
http://<hostname>:<port>/doc
```
Na przykład `http://localhost:4096/doc`. Użyj specyfikacji, aby wygenerować klientów lub sprawdzić typy żądań i odpowiedzi. Możesz też wyświetlić go w eksploratorze Swagger.
---
## APIs
Serwer opencode udostępnia następujące interfejsy API.
---
### Global
| Method | Path | Description | Response |
| ------ | ---------------- | ------------------------------ | ------------------------------------ |
| `GET` | `/global/health` | Uzyskaj stan i wersję serwera | `{ healthy: true, version: string }` |
| `GET` | `/global/event` | Get global events (SSE stream) | Event stream |
---
### Project
| Method | Path | Description | Response |
| ------ | ------------------ | -------------------------- | --------------------------------------------- |
| `GET` | `/project` | Lista wszystkich projektów | <a href={typesUrl}><code>Projekt[]</code></a> |
| `GET` | `/project/current` | Pobierz bieżący projekt | <a href={typesUrl}><code>Projekt</code></a> |
---
### Path & VCS
| Method | Path | Description | Response |
| ------ | ------- | --------------------------------------------- | ------------------------------------------- |
| `GET` | `/path` | Pobierz bieżącą ścieżkę | <a href={typesUrl}><code>Ścieżka</code></a> |
| `GET` | `/vcs` | Uzyskaj informacje VCS dla bieżącego projektu | <a href={typesUrl}><code>VcsInfo</code></a> |
---
### Instance
| Method | Path | Description | Response |
| ------ | ------------------- | ---------------------- | --------- |
| `POST` | `/instance/dispose` | Usuń bieżącą instancję | `boolean` |
---
### Config
| Method | Path | Description | Response |
| ------- | ------------------- | ----------------------------------- | ---------------------------------------------------------------------------------------- |
| `GET` | `/config` | Get config info | <a href={typesUrl}><code>Config</code></a> |
| `PATCH` | `/config` | Update config | <a href={typesUrl}><code>Config</code></a> |
| `GET` | `/config/providers` | Lista dostawców i modeli domyślnych | `{ providers: `<a href={typesUrl}>Dostawca[]</a>`, default: { [key: string]: string } }` |
---
### Dostawca
| Method | Path | Description | Response |
| ------ | -------------------------------- | ---------------------------------------------- | ----------------------------------------------------------------------------------- |
| `GET` | `/provider` | Lista wszystkich dostawców | `{ all: `<a href={typesUrl}>Dostawca[]</a>`, default: {...}, connected: string[] }` |
| `GET` | `/provider/auth` | Uzyskaj metody uwierzytelniania dostawcy | `{ [providerID: string]: `<a href={typesUrl}>ProviderAuthMethod[]</a>` }` |
| `POST` | `/provider/{id}/oauth/authorize` | Autoryzuj dostawcę za pomocą protokołu OAuth | <a href={typesUrl}><code>ProviderAuthAuthorization</code></a> |
| `POST` | `/provider/{id}/oauth/callback` | Obsługa wywołania zwrotnego OAuth dla dostawcy | `boolean` |
---
### Sessions
| Method | Path | Description | Notes |
| -------- | ---------------------------------------- | ------------------------------------------- | -------------------------------------------------------------------------------- |
| `GET` | `/session` | Lista wszystkich sesji | Zwraca <a href={typesUrl}><code>Sesja[]</code></a> |
| `POST` | `/session` | Utwórz nową sesję | treść: `{ parentID?, title? }`, zwraca <a href={typesUrl}><code>Sesja</code></a> |
| `GET` | `/session/status` | Uzyskaj status sesji dla wszystkich sesji | Zwraca `{ [sessionID: string]: `<a href={typesUrl}>Status sesji</a>` }` |
| `GET` | `/session/:id` | Uzyskaj szczegóły sesji | Zwraca <a href={typesUrl}><code>Sesja</code></a> |
| `DELETE` | `/session/:id` | Usuń sesję i wszystkie jej dane | Zwraca `boolean` |
| `PATCH` | `/session/:id` | Aktualizuj właściwości sesji | treść: `{ title? }`, zwraca <a href={typesUrl}><code>Sesja</code></a> |
| `GET` | `/session/:id/children` | Pobierz sesje podrzędne sesji | Zwraca <a href={typesUrl}><code>Sesja[]</code></a> |
| `GET` | `/session/:id/todo` | Pobierz listę rzeczy do zrobienia dla sesji | Zwraca <a href={typesUrl}><code>Do zrobienia[]</code></a> |
| `POST` | `/session/:id/init` | Przeanalizuj aplikację i utwórz `AGENTS.md` | treść: `{ messageID, providerID, modelID }`, zwraca `boolean` |
| `POST` | `/session/:id/fork` | Rozwiń istniejącą sesję w wiadomości | treść: `{ messageID? }`, zwraca <a href={typesUrl}><code>Sesja</code></a> |
| `POST` | `/session/:id/abort` | Przerwij trwającą sesję | Zwraca `boolean` |
| `POST` | `/session/:id/share` | Udostępnij sesję | Zwraca <a href={typesUrl}><code>Sesja</code></a> |
| `DELETE` | `/session/:id/share` | Anuluj udostępnianie sesji | Zwraca <a href={typesUrl}><code>Sesja</code></a> |
| `GET` | `/session/:id/diff` | Pobierz różnicę dla tej sesji | zapytanie: `messageID?`, zwraca <a href={typesUrl}><code>FileDiff[]</code></a> |
| `POST` | `/session/:id/summarize` | Podsumuj sesję | treść: `{ providerID, modelID }`, zwraca `boolean` |
| `POST` | `/session/:id/revert` | Przywróć wiadomość | treść: `{ messageID, partID? }`, zwraca `boolean` |
| `POST` | `/session/:id/unrevert` | Przywróć wszystkie przywrócone wiadomości | Zwraca `boolean` |
| `POST` | `/session/:id/permissions/:permissionID` | Odpowiedz na prośbę o pozwolenie | treść: `{ response, remember? }`, zwraca `boolean` |
---
### Messages
| Method | Path | Description | Notes |
| ------ | --------------------------------- | ----------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `GET` | `/session/:id/message` | Lista wiadomości w sesji | zapytanie: `limit?`, zwraca `{ info: `<a href={typesUrl}>Wiadomość</a>`, parts: `<a href={typesUrl}>Część[]</a>`}[]` |
| `POST` | `/session/:id/message` | Wyślij wiadomość i poczekaj na odpowiedź | treść: `{ messageID?, model?, agent?, noReply?, system?, tools?, parts }`, zwraca `{ info: `<a href={typesUrl}>Wiadomość</a>`, parts: `<a href={typesUrl}>Część[]</a>`}` |
| `GET` | `/session/:id/message/:messageID` | Uzyskaj szczegóły wiadomości | Zwraca `{ info: `<a href={typesUrl}>Wiadomość</a>`, parts: `<a href={typesUrl}>Część[]</a>`}` |
| `POST` | `/session/:id/prompt_async` | Wyślij wiadomość asynchronicznie (bez czekania) | treść: taka sama jak `/session/:id/message`, zwraca `204 No Content` |
| `POST` | `/session/:id/command` | Wykonaj polecenie ukośnika | treść: `{ messageID?, agent?, model?, command, arguments }`, zwraca `{ info: `<a href={typesUrl}>Wiadomość</a>`, parts: `<a href={typesUrl}>Część[]</a>`}` |
| `POST` | `/session/:id/shell` | Uruchom polecenie powłoki | treść: `{ agent, model?, command }`, zwraca `{ info: `<a href={typesUrl}>Wiadomość</a>`, parts: `<a href={typesUrl}>Część[]</a>`}` |
---
### Komendy
| Metoda | Ścieżka | Opis | Odpowiedź |
| ------ | ---------- | ------------------------ | ----------------------------------------------- |
| `GET` | `/command` | Lista wszystkich poleceń | <a href={typesUrl}><code>Polecenie[]</code></a> |
---
### Pliki
| Method | Path | Description | Response |
| ------ | ------------------------ | ------------------------------------ | ---------------------------------------------------------------------------------------------- |
| `GET` | `/find?pattern=<pat>` | Szukaj tekstu w plikach | Tablica obiektów dopasowania z `path`, `lines`, `line_number`, `absolute_offset`, `submatches` |
| `GET` | `/find/file?query=<q>` | Znajdź pliki i katalogi według nazwy | `string[]` (ścieżki) |
| `GET` | `/find/symbol?query=<q>` | Find workspace symbols | <a href={typesUrl}><code>Symbol[]</code></a> |
| `GET` | `/file?path=<path>` | Lista plików i katalogów | <a href={typesUrl}><code>FileNode[]</code></a> |
| `GET` | `/file/content?path=<p>` | Read a file | <a href={typesUrl}><code>FileContent</code></a> |
| `GET` | `/file/status` | Uzyskaj status śledzonych plików | <a href={typesUrl}><code>Plik[]</code></a> |
#### `/find/file` query parameters
- `query` (required) — search string (fuzzy match)
- `type` (optional) — limit results to `"file"` or `"directory"`
- `directory` (opcjonalnie) — zastąp katalog główny projektu dla wyszukiwania
- `limit` (optional) — max results (1200)
- `dirs` (optional) — legacy flag (`"false"` returns only files)
---
### Tools (Experimental)
| Method | Path | Description | Response |
| ------ | ------------------------------------------- | -------------------------------------------- | ----------------------------------------------------------- |
| `GET` | `/experimental/tool/ids` | Lista wszystkich identyfikatorów narzędzi | <a href={typesUrl}><code>Identyfikatory narzędzi</code></a> |
| `GET` | `/experimental/tool?provider=<p>&model=<m>` | Lista narzędzi ze schematami JSON dla modelu | <a href={typesUrl}><code>Lista narzędzi</code></a> |
---
### LSP, Formatters & MCP
| Method | Path | Description | Response |
| ------ | ------------ | ---------------------------- | -------------------------------------------------------- |
| `GET` | `/lsp` | Uzyskaj status serwera LSP | <a href={typesUrl}><code>LSPStatus[]</code></a> |
| `GET` | `/formatter` | Get formatter status | <a href={typesUrl}><code>FormatterStatus[]</code></a> |
| `GET` | `/mcp` | Uzyskaj status serwera MCP | `{ [name: string]: `<a href={typesUrl}>MCPStatus</a>` }` |
| `POST` | `/mcp` | Dodaj dynamicznie serwer MCP | treść: `{ name, config }`, zwraca obiekt stanu MCP |
---
### Agents
| Method | Path | Description | Response |
| ------ | -------- | ----------------------------------- | ------------------------------------------- |
| `GET` | `/agent` | Lista wszystkich dostępnych agentów | <a href={typesUrl}><code>Agent[]</code></a> |
---
### Logging
| Method | Path | Description | Response |
| ------ | ------ | ------------------------------------------------------------ | --------- |
| `POST` | `/log` | Write log entry. Body: `{ service, level, message, extra? }` | `boolean` |
---
### TUI
| Method | Path | Description | Response |
| ------ | ----------------------- | -------------------------------------------- | ----------------------- |
| `POST` | `/tui/append-prompt` | Dołącz tekst do zachęty | `boolean` |
| `POST` | `/tui/open-help` | Otwórz okno pomocy | `boolean` |
| `POST` | `/tui/open-sessions` | Otwórz selektor sesji | `boolean` |
| `POST` | `/tui/open-themes` | Otwórz selektor motywów | `boolean` |
| `POST` | `/tui/open-models` | Otwórz selektor modelu | `boolean` |
| `POST` | `/tui/submit-prompt` | Prześlij bieżący monit | `boolean` |
| `POST` | `/tui/clear-prompt` | Wyczyść monit | `boolean` |
| `POST` | `/tui/execute-command` | Wykonaj polecenie (`{ command }`) | `boolean` |
| `POST` | `/tui/show-toast` | Pokaż toast (`{ title?, message, variant }`) | `boolean` |
| `GET` | `/tui/control/next` | Poczekaj na następne żądanie kontroli | Obiekt żądania kontroli |
| `POST` | `/tui/control/response` | Respond to a control request (`{ body }`) | `boolean` |
---
### Auth
| Method | Path | Description | Response |
| ------ | ----------- | --------------------------------------------------------------------- | --------- |
| `PUT` | `/auth/:id` | Ustaw dane uwierzytelniające. Treść musi pasować do schematu dostawcy | `boolean` |
---
### Events
| Method | Path | Description | Response |
| ------ | -------- | -------------------------------------------------------------------------------------------------------------------- | --------------------------------------- |
| `GET` | `/event` | Strumień zdarzeń wysyłanych przez serwer. Pierwsze wydarzenie to `server.connected`, następnie wydarzenia autobusowe | Strumień zdarzeń wysłanych przez serwer |
---
### Docs
| Method | Path | Description | Response |
| ------ | ------ | ------------------------ | ----------------------------------- |
| `GET` | `/doc` | Specyfikacja OpenAPI 3.1 | Strona HTML ze specyfikacją OpenAPI |

View File

@@ -0,0 +1,128 @@
---
title: Share
description: Udostępnij swoje rozmowy dotyczące OpenCode.
---
Funkcja udostępniania OpenCode umożliwia tworzenie publicznych linków do konwersacji OpenCode, dzięki czemu możesz współpracować z członkami zespołu lub uzyskać pomoc od innych.
:::note
Udostępnione konwersacje są publicznie dostępne dla każdej osoby mającej link.
:::
---
## How it works
Kiedy udostępniasz rozmowę, OpenCode:
1. Tworzy unikalny publiczny adres URL sesji
2. Synchronizuje historię rozmów z naszymi serwerami
3. Udostępnia rozmowę za pośrednictwem łącza do udostępniania — `opncd.ai/s/<share-id>`
---
## Sharing
OpenCode obsługuje trzy tryby udostępniania, które kontrolują sposób udostępniania rozmów:
---
### Ręczny (domyślny)
Domyślnie OpenCode korzysta z ręcznego trybu udostępniania. Sesje nie są udostępniane automatycznie, ale możesz je udostępnić ręcznie za pomocą polecenia `/share`:
```
/share
```
Spowoduje to wygenerowanie unikalnego adresu URL, który zostanie skopiowany do schowka.
Aby jawnie ustawić tryb ręczny w [pliku konfiguracyjnym] (./config):
```json title="opencode.json"
{
"$schema": "https://opncd.ai/config.json",
"share": "manual"
}
```
---
### Auto-share
Możesz włączyć automatyczne udostępnianie dla wszystkich nowych rozmów, ustawiając opcję `share` na `"auto"` w [pliku konfiguracyjnym] (./config):
```json title="opencode.json"
{
"$schema": "https://opncd.ai/config.json",
"share": "auto"
}
```
Po włączeniu automatycznego udostępniania każda nowa rozmowa będzie automatycznie udostępniana i generowany będzie link.
---
### Disabled
Możesz całkowicie wyłączyć udostępnianie, ustawiając opcję `share` na `"disabled"` w [pliku konfiguracyjnym] (./config):
```json title="opencode.json"
{
"$schema": "https://opncd.ai/config.json",
"share": "disabled"
}
```
Aby wymusić to w całym zespole dla danego projektu, dodaj go do `opencode.json` w swoim projekcie i sprawdź w Git.
---
## Un-sharing
Aby zatrzymać udostępnianie rozmowy i usunąć ją z dostępu publicznego:
```
/unshare
```
Spowoduje to usunięcie łącza udostępniania i danych związanych z rozmową.
---
## Privacy
There are a few things to keep in mind when sharing a conversation.
---
### Data retention
Udostępnione rozmowy pozostają dostępne, dopóki wyraźnie ich nie udostępnisz. Ten
includes:
- Full conversation history
- Wszystkie wiadomości i odpowiedzi
- Metadane sesji
---
### Recommendations
- Udostępniaj tylko rozmowy, które nie zawierają poufnych informacji.
- Review conversation content before sharing.
- Unshare conversations when collaboration is complete.
- Unikaj udostępniania rozmów zawierających zastrzeżony kod lub poufne dane.
- W przypadku wrażliwych projektów całkowicie wyłącz udostępnianie.
---
## Dla przedsiębiorstw
W przypadku wdrożeń korporacyjnych funkcją udostępniania może być:
- **Wyłączone** całkowicie ze względu na bezpieczeństwo
- **Restricted** to users authenticated through SSO only
- **Własny hosting** na własnej infrastrukturze
[Dowiedz się więcej](/docs/enterprise) o używaniu kodu opencode w Twojej organizacji.

View File

@@ -0,0 +1,222 @@
---
title: "Agent Skills"
description: "Define reusable behavior via SKILL.md definitions"
---
Umiejętności agenta pozwalają OpenCode odkryć instrukcje wielokrotnego użytku z repozytorium lub katalogu domowego.
Umiejętności są ładowane na żądanie za pośrednictwem natywnego narzędzia `skill` — agenci widzą dostępne umiejętności i w razie potrzeby mogą załadować pełną zawartość.
---
## Place files
Utwórz jeden folder na nazwę umiejętności i umieść w nim `SKILL.md`.
OpenCode searches these locations:
- Project config: `.opencode/skills/<name>/SKILL.md`
- Global config: `~/.config/opencode/skills/<name>/SKILL.md`
- Project Claude-compatible: `.claude/skills/<name>/SKILL.md`
- Global Claude-compatible: `~/.claude/skills/<name>/SKILL.md`
- Project agent-compatible: `.agents/skills/<name>/SKILL.md`
- Global agent-compatible: `~/.agents/skills/<name>/SKILL.md`
---
## Understand discovery
W przypadku ścieżek lokalnych projektu OpenCode przechodzi od bieżącego katalogu roboczego, aż dotrze do drzewa roboczego git.
Ładuje po drodze dowolne pasujące `skills/*/SKILL.md` w `.opencode/` i dowolne pasujące `.claude/skills/*/SKILL.md` lub `.agents/skills/*/SKILL.md`.
Ładowane są także definicje globalne z `~/.config/opencode/skills/*/SKILL.md`, `~/.claude/skills/*/SKILL.md` i `~/.agents/skills/*/SKILL.md`.
---
## Write frontmatter
Każdy `SKILL.md` musi zaczynać się od treści YAML.
Only these fields are recognized:
- `name` (required)
- `description` (required)
- `license` (optional)
- `compatibility` (optional)
- `metadata` (optional, string-to-string map)
Unknown frontmatter fields are ignored.
---
## Validate names
`name` must:
- Be 164 characters
- Należy używać małych liter alfanumerycznych i oddzielać je pojedynczym łącznikiem
- Nie zaczyna się ani nie kończy na `-`
- Not contain consecutive `--`
- Dopasuj nazwę katalogu zawierającą `SKILL.md`
Equivalent regex:
```text
^[a-z0-9]+(-[a-z0-9]+)*$
```
---
## Follow length rules
`description` must be 1-1024 characters.
Zadbaj o to, aby agent mógł dokonać prawidłowego wyboru.
---
## Skorzystaj z przykładu
Utwórz `.opencode/skills/git-release/SKILL.md` w ten sposób:
```markdown
---
name: git-release
description: Create consistent releases and changelogs
license: MIT
compatibility: opencode
metadata:
audience: maintainers
workflow: github
---
## What I do
- Draft release notes from merged PRs
- Propose a version bump
- Provide a copy-pasteable `gh release create` command
## When to use me
Use this when you are preparing a tagged release.
Ask clarifying questions if the target versioning scheme is unclear.
```
---
## Recognize tool description
OpenCode wymienia dostępne umiejętności w opisie narzędzia `skill`.
Każdy wpis zawiera nazwę i opis umiejętności:
```xml
<available_skills>
<skill>
<name>git-release</name>
<description>Create consistent releases and changelogs</description>
</skill>
</available_skills>
```
Agent ładuje umiejętność wywołując narzędzie:
```
skill({ name: "git-release" })
```
---
## Skonfiguruj uprawnienia
Control which skills agents can access using pattern-based permissions in `opencode.json`:
```json
{
"permission": {
"skill": {
"*": "allow",
"pr-review": "allow",
"internal-*": "deny",
"experimental-*": "ask"
}
}
}
```
| Permission | Behavior |
| ---------- | ----------------------------------------- |
| `allow` | Skill loads immediately |
| `deny` | Skill hidden from agent, access rejected |
| `ask` | Użytkownik proszony o zatwierdzenie przed załadowaniem |
Wzorce obsługują symbole wieloznaczne: `internal-*` odpowiada `internal-docs`, `internal-tools` itd.
---
## Override per agent
Nadaj konkretnym agentom inne uprawnienia niż globalne ustawienia domyślne.
**Dla agentów niestandardowych** (w temacie agentów):
```yaml
---
permission:
skill:
"documents-*": "allow"
---
```
**Dla agentów wbudowanych** (w `opencode.json`):
```json
{
"agent": {
"plan": {
"permission": {
"skill": {
"internal-*": "allow"
}
}
}
}
}
```
---
## Wyłącz narzędzie umiejętności
Całkowicie wyłącz umiejętności agentów, którzy nie powinni ich używać:
**Dla agentów celnych**:
```yaml
---
tools:
skill: false
---
```
**W przypadku agentów wbudowanych**:
```json
{
"agent": {
"plan": {
"tools": {
"skill": false
}
}
}
}
```
Jeśli opcja jest wyłączona, sekcja `<available_skills>` jest całkowicie pomijana.
---
## Troubleshoot loading
Jeśli umiejętność nie pojawi się:
1. Verify `SKILL.md` is spelled in all caps
2. Sprawdź, czy frontmatter zawiera `name` i `description`
3. Ensure skill names are unique across all locations
4. Sprawdź uprawnienia — umiejętności z `deny` są ukryte przed agentami

View File

@@ -0,0 +1,369 @@
---
title: Themes
description: Wybierz wbudowany motyw lub zdefiniuj własny.
---
Dzięki OpenCode możesz wybrać jeden z kilku wbudowanych motywów, użyć motywu, który dostosowuje się do motywu terminala lub zdefiniować własny, niestandardowy motyw.
Domyślnie OpenCode używa naszego własnego motywu `opencode`.
---
## Terminal requirements
Aby motywy wyświetlały się poprawnie z pełną paletą kolorów, Twój terminal musi obsługiwać **truecolor** (kolor 24-bitowy). Większość nowoczesnych terminali domyślnie obsługuje tę opcję, ale może być konieczne jej włączenie:
- **Sprawdź wsparcie**: Uruchom `echo $COLORTERM` - powinno wypisać `truecolor` lub `24bit`
- **Włącz truecolor**: Ustaw zmienną środowiskową `COLORTERM=truecolor` w swoim profilu powłoki
- **Zgodność terminala**: Upewnij się, że emulator terminala obsługuje 24-bitowy kolor (większość nowoczesnych terminali, takich jak iTerm2, Alacritty, Kitty, Windows Terminal i najnowsze wersje terminala GNOME tak)
Bez obsługi Truecolor motywy mogą pojawiać się ze zmniejszoną dokładnością kolorów lub wracać do najbliższego przybliżenia 256 kolorów.
---
## Wbudowane motywy
OpenCode ma kilka wbudowanych motywów.
| Name | Description |
| ---------------------- | --------------------------------------------------------------------------------- |
| `system` | Dopasowuje się do koloru tła terminala |
| `tokyonight` | Na podstawie motywu [Tokyonight](https://github.com/folke/tokyonight.nvim) |
| `everforest` | Na podstawie motywu [Everforest](https://github.com/sainnhe/everforest) |
| `ayu` | Na podstawie ciemnego motywu [Ayu](https://github.com/ayu-theme) |
| `catppuccin` | Na podstawie motywu [Catppuccin](https://github.com/catppuccin) |
| `catppuccin-macchiato` | Na podstawie motywu [Catppuccin](https://github.com/catppuccin) |
| `gruvbox` | Na podstawie motywu [Gruvbox](https://github.com/morhetz/gruvbox) |
| `kanagawa` | Na podstawie motywu [Kanagawa](https://github.com/rebelot/kanagawa.nvim) |
| `nord` | Na podstawie motywu [Nord](https://github.com/nordtheme/nord) |
| `matrix` | Hacker-style green on black theme |
| `one-dark` | Na podstawie ciemnego motywu [Atom One](https://github.com/Th3Whit3Wolf/one-nvim) |
Co więcej, stale dodajemy nowe motywy.
---
## System theme
Motyw `system` został zaprojektowany tak, aby automatycznie dostosowywał się do schematu kolorów terminala. W przeciwieństwie do tradycyjnych motywów, które używają stałych kolorów, motyw _system_:
- **Generuje skalę szarości**: Tworzy niestandardową skalę szarości w oparciu o kolor tła terminala, zapewniając optymalny kontrast.
- **Używa kolorów ANSI**: Wykorzystuje standardowe kolory ANSI (0-15) do podświetlania składni i elementów interfejsu użytkownika, które odpowiadają palecie kolorów terminala.
- **Zachowuje ustawienia domyślne terminala**: Używa `none` dla kolorów tekstu i tła, aby zachować natywny wygląd terminala.
Motyw systemu przeznaczony jest dla użytkowników, którzy:
- Want OpenCode to match their terminal's appearance
- Użyj niestandardowych schematów kolorów terminali
- Prefer a consistent look across all terminal applications
---
## Using a theme
Możesz wybrać motyw, wywołując opcję wyboru motywu za pomocą polecenia `/theme`. Możesz też określić to w [config](/docs/config).
```json title="opencode.json" {3}
{
"$schema": "https://opencode.ai/config.json",
"theme": "tokyonight"
}
```
---
## Custom themes
OpenCode obsługuje elastyczny system motywów oparty na JSON, który pozwala użytkownikom łatwo tworzyć i dostosowywać motywy.
---
### Hierarchy
Motywy są ładowane z wielu katalogów w następującej kolejności, przy czym późniejsze katalogi zastępują wcześniejsze:
1. **Wbudowane motywy** są osadzone w formacie binarnym
2. **User config directory** - Defined in `~/.config/opencode/themes/*.json` or `$XDG_CONFIG_HOME/opencode/themes/*.json`
3. **Katalog główny projektu** - Zdefiniowany w `<project-root>/.opencode/themes/*.json`
4. **Current working directory** - Defined in `./.opencode/themes/*.json`
Jeśli wiele katalogów zawiera motyw o tej samej nazwie, zostanie użyty motyw z katalogu o wyższym priorytecie.
---
### Creating a theme
Aby utworzyć niestandardowy motyw, utwórz plik JSON w jednym z katalogów motywów.
W przypadku motywów dla całego użytkownika:
```bash no-frame
mkdir -p ~/.config/opencode/themes
vim ~/.config/opencode/themes/my-theme.json
```
Oraz dla tematów specyficznych dla projektu.
```bash no-frame
mkdir -p .opencode/themes
vim .opencode/themes/my-theme.json
```
---
### JSON format
Motywy korzystają z elastycznego formatu JSON z obsługą:
- **Hex colors**: `"#ffffff"`
- **ANSI colors**: `3` (0-255)
- **Color references**: `"primary"` or custom definitions
- **Dark/light variants**: `{"dark": "#000", "light": "#fff"}`
- **Brak koloru**: `"none"` - Używa domyślnego koloru terminala lub przezroczystości
---
### Color definitions
Sekcja `defs` jest opcjonalna i pozwala zdefiniować kolory wielokrotnego użytku, do których można się odwoływać w motywie.
---
### Terminal defaults
Wartość specjalna `"none"` może zostać użyta dla dowolnego koloru, aby przejąć domyślny kolor terminala. Jest to szczególnie przydatne do tworzenia motywów, które płynnie komponują się ze schematem kolorów terminala:
- `"text": "none"` - Używa domyślnego koloru pierwszego planu terminala
- `"background": "none"` - Używa domyślnego koloru tła terminala
---
### Przykład
Here's an example of a custom theme:
```json title="my-theme.json"
{
"$schema": "https://opencode.ai/theme.json",
"defs": {
"nord0": "#2E3440",
"nord1": "#3B4252",
"nord2": "#434C5E",
"nord3": "#4C566A",
"nord4": "#D8DEE9",
"nord5": "#E5E9F0",
"nord6": "#ECEFF4",
"nord7": "#8FBCBB",
"nord8": "#88C0D0",
"nord9": "#81A1C1",
"nord10": "#5E81AC",
"nord11": "#BF616A",
"nord12": "#D08770",
"nord13": "#EBCB8B",
"nord14": "#A3BE8C",
"nord15": "#B48EAD"
},
"theme": {
"primary": {
"dark": "nord8",
"light": "nord10"
},
"secondary": {
"dark": "nord9",
"light": "nord9"
},
"accent": {
"dark": "nord7",
"light": "nord7"
},
"error": {
"dark": "nord11",
"light": "nord11"
},
"warning": {
"dark": "nord12",
"light": "nord12"
},
"success": {
"dark": "nord14",
"light": "nord14"
},
"info": {
"dark": "nord8",
"light": "nord10"
},
"text": {
"dark": "nord4",
"light": "nord0"
},
"textMuted": {
"dark": "nord3",
"light": "nord1"
},
"background": {
"dark": "nord0",
"light": "nord6"
},
"backgroundPanel": {
"dark": "nord1",
"light": "nord5"
},
"backgroundElement": {
"dark": "nord1",
"light": "nord4"
},
"border": {
"dark": "nord2",
"light": "nord3"
},
"borderActive": {
"dark": "nord3",
"light": "nord2"
},
"borderSubtle": {
"dark": "nord2",
"light": "nord3"
},
"diffAdded": {
"dark": "nord14",
"light": "nord14"
},
"diffRemoved": {
"dark": "nord11",
"light": "nord11"
},
"diffContext": {
"dark": "nord3",
"light": "nord3"
},
"diffHunkHeader": {
"dark": "nord3",
"light": "nord3"
},
"diffHighlightAdded": {
"dark": "nord14",
"light": "nord14"
},
"diffHighlightRemoved": {
"dark": "nord11",
"light": "nord11"
},
"diffAddedBg": {
"dark": "#3B4252",
"light": "#E5E9F0"
},
"diffRemovedBg": {
"dark": "#3B4252",
"light": "#E5E9F0"
},
"diffContextBg": {
"dark": "nord1",
"light": "nord5"
},
"diffLineNumber": {
"dark": "nord2",
"light": "nord4"
},
"diffAddedLineNumberBg": {
"dark": "#3B4252",
"light": "#E5E9F0"
},
"diffRemovedLineNumberBg": {
"dark": "#3B4252",
"light": "#E5E9F0"
},
"markdownText": {
"dark": "nord4",
"light": "nord0"
},
"markdownHeading": {
"dark": "nord8",
"light": "nord10"
},
"markdownLink": {
"dark": "nord9",
"light": "nord9"
},
"markdownLinkText": {
"dark": "nord7",
"light": "nord7"
},
"markdownCode": {
"dark": "nord14",
"light": "nord14"
},
"markdownBlockQuote": {
"dark": "nord3",
"light": "nord3"
},
"markdownEmph": {
"dark": "nord12",
"light": "nord12"
},
"markdownStrong": {
"dark": "nord13",
"light": "nord13"
},
"markdownHorizontalRule": {
"dark": "nord3",
"light": "nord3"
},
"markdownListItem": {
"dark": "nord8",
"light": "nord10"
},
"markdownListEnumeration": {
"dark": "nord7",
"light": "nord7"
},
"markdownImage": {
"dark": "nord9",
"light": "nord9"
},
"markdownImageText": {
"dark": "nord7",
"light": "nord7"
},
"markdownCodeBlock": {
"dark": "nord4",
"light": "nord0"
},
"syntaxComment": {
"dark": "nord3",
"light": "nord3"
},
"syntaxKeyword": {
"dark": "nord9",
"light": "nord9"
},
"syntaxFunction": {
"dark": "nord8",
"light": "nord8"
},
"syntaxVariable": {
"dark": "nord7",
"light": "nord7"
},
"syntaxString": {
"dark": "nord14",
"light": "nord14"
},
"syntaxNumber": {
"dark": "nord15",
"light": "nord15"
},
"syntaxType": {
"dark": "nord7",
"light": "nord7"
},
"syntaxOperator": {
"dark": "nord9",
"light": "nord9"
},
"syntaxPunctuation": {
"dark": "nord4",
"light": "nord0"
}
}
}
```

View File

@@ -0,0 +1,379 @@
---
title: Tools
description: Zarządzaj narzędziami, z których może korzystać LLM.
---
Narzędzia umożliwiają LLM wykonywanie działań w bazie kodu. OpenCode ma zestaw wbudowanych narzędzi, ale możesz go rozszerzyć o [narzędzia niestandardowe](/docs/custom-tools) lub [serwery MCP](/docs/mcp-servers).
Domyślnie wszystkie narzędzia są **włączone** i nie wymagają pozwolenia na uruchomienie. Możesz kontrolować zachowanie narzędzia poprzez [uprawnienia](/docs/permissions).
---
## Skonfiguruj
Użyj pola `permission` do kontrolowania zachowania narzędzia. Dla każdego narzędzia możesz zezwolić, odmówić lub wymagać zatwierdzenia.
```json title="opencode.json"
{
"$schema": "https://opencode.ai/config.json",
"permission": {
"edit": "deny",
"bash": "ask",
"webfetch": "allow"
}
}
```
Możesz także używać symboli wieloznacznych do kontrolowania wielu narzędzi jednocześnie. Na przykład, aby wymagać zatwierdzenia wszystkich narzędzi z serwera MCP:
```json title="opencode.json"
{
"$schema": "https://opencode.ai/config.json",
"permission": {
"mymcp_*": "ask"
}
}
```
[Dowiedz się więcej](/docs/permissions) o konfigurowaniu uprawnień.
---
## Wbudowane
Oto wszystkie wbudowane narzędzia dostępne w OpenCode.
---
### bash
Wykonuj polecenia powłoki w środowisku projektu.
```json title="opencode.json" {4}
{
"$schema": "https://opencode.ai/config.json",
"permission": {
"bash": "allow"
}
}
```
To narzędzie umożliwia LLM uruchamianie poleceń terminalowych, takich jak `npm install`, `git status` lub dowolne inne polecenie powłoki.
---
### edit
Modify existing files using exact string replacements.
```json title="opencode.json" {4}
{
"$schema": "https://opencode.ai/config.json",
"permission": {
"edit": "allow"
}
}
```
To narzędzie umożliwia precyzyjną edycję plików poprzez zastąpienie dokładnych dopasowań tekstu. Jest to główny sposób, w jaki LLM modyfikuje kod.
---
### write
Utwórz nowe pliki lub nadpisz istniejące.
```json title="opencode.json" {4}
{
"$schema": "https://opencode.ai/config.json",
"permission": {
"edit": "allow"
}
}
```
Użyj tego, aby umożliwić LLM tworzenie nowych plików. Zastąpi istniejące pliki, jeśli już istnieją.
:::note
Narzędzie `write` jest kontrolowane przez uprawnienie `edit`, które obejmuje wszystkie modyfikacje plików (`edit`, `write`, `patch`, `multiedit`).
:::
---
### read
Przeczytaj zawartość pliku z bazy kodu.
```json title="opencode.json" {4}
{
"$schema": "https://opencode.ai/config.json",
"permission": {
"read": "allow"
}
}
```
Narzędzie to odczytuje pliki i zwraca ich zawartość. Obsługuje czytanie określonych zakresów linii w przypadku dużych plików.
---
### grep
Search file contents using regular expressions.
```json title="opencode.json" {4}
{
"$schema": "https://opencode.ai/config.json",
"permission": {
"grep": "allow"
}
}
```
Szybkie wyszukiwanie treści w całej bazie kodu. Obsługuje pełną składnię wyrażeń regularnych i filtrowanie wzorców plików.
---
### glob
Find files by pattern matching.
```json title="opencode.json" {4}
{
"$schema": "https://opencode.ai/config.json",
"permission": {
"glob": "allow"
}
}
```
Szukaj plików przy użyciu wzorców globalnych, takich jak `**/*.js` lub `src/**/*.ts`. Zwraca pasujące ścieżki plików posortowane według czasu modyfikacji.
---
### lista
Wyświetla listę plików i katalogów w podanej ścieżce.
```json title="opencode.json" {4}
{
"$schema": "https://opencode.ai/config.json",
"permission": {
"list": "allow"
}
}
```
To narzędzie wyświetla zawartość katalogu. Akceptuje wzorce globalne do filtrowania wyników.
---
### lsp (experimental)
Wejdź w interakcję ze skonfigurowanymi serwerami LSP, aby uzyskać funkcje analizy kodu, takie jak definicje, odniesienia, informacje o najechaniu myszką i hierarchia połączeń.
:::note
To narzędzie jest dostępne tylko wtedy, gdy `OPENCODE_EXPERIMENTAL_LSP_TOOL=true` (lub `OPENCODE_EXPERIMENTAL=true`).
:::
```json title="opencode.json" {4}
{
"$schema": "https://opencode.ai/config.json",
"permission": {
"lsp": "allow"
}
}
```
Obsługiwane operacje obejmują `goToDefinition`, `findReferences`, `hover`, `documentSymbol`, `workspaceSymbol`, `goToImplementation`, `prepareCallHierarchy`, `incomingCalls` i `outgoingCalls`.
Aby skonfigurować, które serwery LSP są dostępne dla Twojego projektu, zobacz [Serwery LSP](/docs/lsp).
---
### patch
Apply patches to files.
```json title="opencode.json" {4}
{
"$schema": "https://opencode.ai/config.json",
"permission": {
"edit": "allow"
}
}
```
To narzędzie stosuje pliki poprawek do bazy kodu. Przydatne do stosowania różnic i poprawek z różnych źródeł.
:::note
Narzędzie `patch` jest kontrolowane przez uprawnienie `edit`, które obejmuje wszystkie modyfikacje plików (`edit`, `write`, `patch`, `multiedit`).
:::
---
### skill
Załaduj [umiejętność](/docs/skills) (plik `SKILL.md`) i zwróć jej treść w rozmowie.
```json title="opencode.json" {4}
{
"$schema": "https://opencode.ai/config.json",
"permission": {
"skill": "allow"
}
}
```
---
### todowrite
Zarządzaj listami rzeczy do zrobienia podczas sesji kodowania.
```json title="opencode.json" {4}
{
"$schema": "https://opencode.ai/config.json",
"permission": {
"todowrite": "allow"
}
}
```
Tworzy i aktualizuje listy zadań w celu śledzenia postępu podczas złożonych operacji. LLM wykorzystuje to do organizowania zadań wieloetapowych.
:::note
To narzędzie jest domyślnie wyłączone dla podagentów, ale można je włączyć ręcznie. [Dowiedz się więcej](/docs/agents/#permissions)
:::
---
### todoread
Read existing todo lists.
```json title="opencode.json" {4}
{
"$schema": "https://opencode.ai/config.json",
"permission": {
"todoread": "allow"
}
}
```
Odczytuje bieżący stan listy rzeczy do zrobienia. Używany przez LLM do śledzenia zadań oczekujących lub ukończonych.
:::note
To narzędzie jest domyślnie wyłączone dla podagentów, ale można je włączyć ręcznie. [Dowiedz się więcej](/docs/agents/#permissions)
:::
---
### webfetch
Fetch web content.
```json title="opencode.json" {4}
{
"$schema": "https://opencode.ai/config.json",
"permission": {
"webfetch": "allow"
}
}
```
Umożliwia LLM pobieranie i odczytywanie stron internetowych. Przydatne do wyszukiwania dokumentacji lub wyszukiwania zasobów online.
---
### websearch
Wyszukaj informacje w Internecie.
:::note
To narzędzie jest dostępne tylko w przypadku korzystania z dostawcy OpenCode lub gdy zmienna środowiskowa `OPENCODE_ENABLE_EXA` jest ustawiona na dowolną wartość prawdziwą (np. `true` lub `1`).
To enable when launching OpenCode:
```bash
OPENCODE_ENABLE_EXA=1 opencode
```
:::
```json title="opencode.json" {4}
{
"$schema": "https://opencode.ai/config.json",
"permission": {
"websearch": "allow"
}
}
```
Przeszukuje Internet za pomocą Exa AI, aby znaleźć odpowiednie informacje w Internecie. Przydatne do badania tematów, znajdowania bieżących wydarzeń lub zbierania informacji wykraczających poza limit danych szkoleniowych.
Nie jest wymagany żaden klucz API — narzędzie łączy się bezpośrednio z usługą MCP hostowaną przez Exa AI bez uwierzytelniania.
:::tip
Użyj `websearch`, gdy chcesz znaleźć informacje (odkrycie), i `webfetch`, gdy musisz pobrać treść z określonego adresu URL (pobieranie).
:::
---
### question
Zadawaj pytania użytkownikowi podczas wykonywania.
```json title="opencode.json" {4}
{
"$schema": "https://opencode.ai/config.json",
"permission": {
"question": "allow"
}
}
```
To narzędzie umożliwia LLM zadawanie pytań użytkownikowi podczas wykonywania zadania. Jest to przydatne dla:
- Gathering user preferences or requirements
- Clarifying ambiguous instructions
- Getting decisions on implementation choices
- Offering choices about what direction to take
Każde pytanie zawiera nagłówek, tekst pytania i listę opcji. Użytkownicy mogą wybierać spośród dostępnych opcji lub wpisać niestandardową odpowiedź. Jeśli pytań jest wiele, użytkownicy mogą nawigować między nimi przed przesłaniem wszystkich odpowiedzi.
---
## Custom tools
Niestandardowe narzędzia pozwalają zdefiniować własne funkcje, które LLM może wywołać. Są one zdefiniowane w pliku konfiguracyjnym i mogą wykonywać dowolny kod.
[Więcej informacji](/docs/custom-tools) o tworzeniu narzędzi niestandardowych.
---
## MCP servers
Serwery MCP (Model Context Protocol) umożliwiają integrację zewnętrznych narzędzi i usług. Obejmuje to dostęp do baz danych, integracje API i usługi stron trzecich.
[Dowiedz się więcej](/docs/mcp-servers) o konfigurowaniu serwerów MCP.
---
## Internals
Wewnętrznie narzędzia takie jak `grep`, `glob` i `list` używają pod maską [ripgrep](https://github.com/BurntSushi/ripgrep). Domyślnie ripgrep respektuje wzorce `.gitignore`, co oznacza, że pliki i katalogi wymienione w Twoim `.gitignore` zostaną wykluczone z wyszukiwań i list.
---
### Ignore patterns
Aby uwzględnić pliki, które normalnie byłyby ignorowane, utwórz plik `.ignore` w katalogu głównym projektu. Ten plik może jawnie zezwalać na określone ścieżki.
```text title=".ignore"
!node_modules/
!dist/
!build/
```
Na przykład ten plik `.ignore` pozwala ripgrepowi przeszukiwać katalogi `node_modules/`, `dist/` i `build/`, nawet jeśli są one wymienione w `.gitignore`.

View File

@@ -0,0 +1,300 @@
---
title: Troubleshooting
description: Typowe problemy i sposoby ich rozwiązywania.
---
Aby debugować problemy z OpenCode, zacznij od sprawdzenia dzienników i danych lokalnych przechowywanych na dysku.
---
## Logs
Log files are written to:
- **macOS/Linux**: `~/.local/share/opencode/log/`
- **Windows**: Naciśnij `WIN+R` i wklej `%USERPROFILE%\.local\share\opencode\log`
Nazwy plików dziennika zawierają znaczniki czasu (np. `2025-01-09T123456.log`) i przechowywanych jest 10 ostatnich plików dziennika.
Możesz ustawić poziom dziennika za pomocą opcji wiersza poleceń `--log-level`, aby uzyskać bardziej szczegółowe informacje debugowania. Na przykład `opencode --log-level DEBUG`.
---
## Storage
opencode przechowuje dane sesji i inne dane aplikacji na dysku pod adresem:
- **macOS/Linux**: `~/.local/share/opencode/`
- **Windows**: Naciśnij `WIN+R` i wklej `%USERPROFILE%\.local\share\opencode`
Ten katalog zawiera:
- `auth.json` - Authentication data like API keys, OAuth tokens
- `log/` - Application logs
- `project/` — Dane specyficzne dla projektu, takie jak dane sesji i komunikatów
- Jeśli projekt znajduje się w repozytorium Git, jest on przechowywany w `./<project-slug>/storage/`
- If it is not a Git repo, it is stored in `./global/storage/`
---
## Desktop app
OpenCode Desktop uruchamia w tle lokalny serwer OpenCode (wózek boczny `opencode-cli`). Większość problemów jest spowodowana nieprawidłowo działającą wtyczką, uszkodzoną pamięcią podręczną lub złymi ustawieniami serwera.
### Quick checks
- Całkowicie zakończ i uruchom ponownie aplikację.
- Jeśli aplikacja wyświetli ekran błędu, kliknij **Uruchom ponownie** i skopiuj szczegóły błędu.
- Tylko macOS: menu `OpenCode` -> **Załaduj ponownie przeglądarkę internetową** (pomaga, jeśli interfejs użytkownika jest pusty/zawieszony).
---
### Disable plugins
Jeśli aplikacja komputerowa ulega awarii podczas uruchamiania, zawiesza się lub zachowuje się dziwnie, zacznij od wyłączenia wtyczek.
#### Sprawdź konfigurację globalną
Otwórz globalny plik konfiguracyjny i poszukaj klucza `plugin`.
- **macOS/Linux**: `~/.config/opencode/opencode.jsonc` (or `~/.config/opencode/opencode.json`)
- **macOS/Linux** (older installs): `~/.local/share/opencode/opencode.jsonc`
- **Windows**: Naciśnij `WIN+R` i wklej `%USERPROFILE%\.config\opencode\opencode.jsonc`
Jeśli masz skonfigurowane wtyczki, tymczasowo je wyłącz, usuwając klucz lub ustawiając go na pustą tablicę:
```jsonc
{
"$schema": "https://opencode.ai/config.json",
"plugin": [],
}
```
#### Check plugin directories
OpenCode może także ładować lokalne wtyczki z dysku. Tymczasowo usuń je (lub zmień nazwę folderu) i uruchom ponownie aplikację komputerową:
- **Global plugins**
- **macOS/Linux**: `~/.config/opencode/plugins/`
- **Windows**: Naciśnij `WIN+R` i wklej `%USERPROFILE%\.config\opencode\plugins`
- **Wtyczki projektowe** (tylko jeśli używasz konfiguracji dla poszczególnych projektów)
- `<your-project>/.opencode/plugins/`
Jeśli aplikacja ponownie zacznie działać, włączaj ponownie wtyczki pojedynczo, aby dowiedzieć się, która powoduje problem.
---
### Wyczyść pamięć podręczną
Jeśli wyłączenie wtyczek nie pomoże (lub instalacja wtyczki utknęła), wyczyść pamięć podręczną, aby OpenCode mógł ją odbudować.
1. Quit OpenCode Desktop completely.
2. Usuń katalog pamięci podręcznej:
- **macOS**: Finder -> `Cmd+Shift+G` -> paste `~/.cache/opencode`
- **Linux**: usuń `~/.cache/opencode` (lub uruchom `rm -rf ~/.cache/opencode`)
- **Windows**: Naciśnij `WIN+R` i wklej `%USERPROFILE%\.cache\opencode`
3. Restart OpenCode Desktop.
---
### Napraw problemy z połączeniem z serwerem
OpenCode Desktop może uruchomić własny serwer lokalny (domyślnie) lub połączyć się ze skonfigurowanym adresem URL serwera.
Jeśli zobaczysz okno dialogowe **„Połączenie nie powiodło się”** (lub aplikacja nigdy nie wychodzi poza ekran powitalny), sprawdź, czy jest niestandardowy adres URL serwera.
#### Wyczyść domyślny adres URL serwera na komputerze
Na ekranie głównym kliknij nazwę serwera (z kropką stanu), aby otworzyć selektor serwerów. W sekcji **Serwer domyślny** kliknij **Wyczyść**.
#### Usuń `server.port` / `server.hostname` ze swojej konfiguracji
Jeśli Twój `opencode.json(c)` zawiera sekcję `server`, tymczasowo usuń ją i uruchom ponownie aplikację komputerową.
#### Check environment variables
Jeśli w swoim środowisku masz ustawiony `OPENCODE_PORT`, aplikacja komputerowa spróbuje użyć tego portu dla serwera lokalnego.
- Rozbierz `OPENCODE_PORT` (lub wybierz wolny port) i uruchom ponownie.
---
### Linux: Wayland / X11 issues
On Linux, some Wayland setups can cause blank windows or compositor errors.
- Jeśli korzystasz z Wayland, a aplikacja jest pusta/ ulega awarii, spróbuj uruchomić ją za pomocą `OC_ALLOW_WAYLAND=1`.
- Jeśli to pogorszy sprawę, usuń go i zamiast tego spróbuj uruchomić w sesji X11.
---
### Windows: WebView2 runtime
W systemie Windows OpenCode Desktop wymaga Microsoft Edge **WebView2 Runtime**. Jeśli aplikacja otwiera się w pustym oknie lub nie uruchamia się, zainstaluj/zaktualizuj WebView2 i spróbuj ponownie.
---
### Windows: General performance issues
Jeśli doświadczasz niskiej wydajności, problemów z dostępem do plików lub problemów z terminalem w systemie Windows, spróbuj użyć [WSL (podsystem Windows dla systemu Linux) (./windows-wsl). WSL zapewnia środowisko Linux, które płynniej współpracuje z funkcjami OpenCode.
---
### Notifications not showing
OpenCode Desktop only shows system notifications when:
- powiadomienia są włączone dla OpenCode w ustawieniach systemu operacyjnego, oraz
- okno aplikacji nie jest aktywne.
---
### Reset desktop app storage (last resort)
Jeśli aplikacja nie uruchamia się i nie możesz wyczyścić ustawień w interfejsie użytkownika, zresetuj zapisany stan aplikacji komputerowej.
1. Quit OpenCode Desktop.
2. Znajdź i usuń te pliki (znajdują się w katalogu danych aplikacji OpenCode Desktop):
- `opencode.settings.dat` (domyślny adres URL serwera na komputerze stacjonarnym)
- `opencode.global.dat` i `opencode.workspace.*.dat` (stan interfejsu użytkownika, taki jak najnowsze serwery/projekty)
Aby szybko znaleźć katalog:
- **macOS**: Finder -> `Cmd+Shift+G` -> `~/Library/Application Support` (następnie wyszukaj nazwy plików powyżej)
- **Linux**: wyszukaj powyższe nazwy plików pod `~/.local/share`
- **Windows**: Naciśnij `WIN+R` -> `%APPDATA%` (następnie wyszukaj nazwy plików powyżej)
---
## Getting help
Jeśli masz problemy z OpenCode:
1. **Report issues on GitHub**
Najlepszym sposobem zgłaszania błędów lub zgłaszania żądań funkcji jest skorzystanie z naszego repozytorium GitHub:
[**github.com/anomalyco/opencode/issues**](https://github.com/anomalyco/opencode/issues)
Przed utworzeniem nowego problemu przeszukaj istniejące i sprawdź, czy Twój problem nie został już zgłoszony.
2. **Join our Discord**
Aby uzyskać pomoc w czasie rzeczywistym i dyskusję społeczności, dołącz do naszego serwera Discord:
[**opencode.ai/discord**](https://opencode.ai/discord)
---
## Common issues
Oto kilka typowych problemów i sposobów ich rozwiązania.
---
### OpenCode nie uruchamia się
1. Sprawdź dzienniki pod kątem komunikatów o błędach
2. Spróbuj uruchomić z `--print-logs`, aby zobaczyć dane wyjściowe w terminalu
3. Upewnij się, że masz najnowszą wersję z `opencode upgrade`
---
### Authentication issues
1. Spróbuj ponownie uwierzytelnić się za pomocą polecenia `/connect` w TUI
2. Sprawdź, czy klucze API są ważne
3. Upewnij się, że Twoja sieć umożliwia połączenia z interfejsem API dostawcy
---
### Model niedostępny
1. Sprawdź, czy dokonałeś uwierzytelnienia u dostawcy
2. Sprawdź, czy nazwa modelu w konfiguracji jest poprawna
3. Some models may require specific access or subscriptions
Jeśli napotkasz `ProviderModelNotFoundError`, najprawdopodobniej się mylisz
odwołując się gdzieś do modelu.
Models should be referenced like so: `<providerId>/<modelId>`
Examples:
- `openai/gpt-4.1`
- `openrouter/google/gemini-2.5-flash`
- `opencode/kimi-k2`
Aby dowiedzieć się, do jakich modeli masz dostęp, uruchom `opencode models`
---
### ProviderInitError
Jeśli napotkasz błąd ProviderInitError, prawdopodobnie masz nieprawidłową lub uszkodzoną konfigurację.
Aby rozwiązać ten problem:
1. Najpierw sprawdź, czy Twój dostawca jest prawidłowo skonfigurowany, postępując zgodnie z [przewodnikiem dostawców](/docs/providers)
2. Jeśli problem będzie się powtarzał, spróbuj wyczyścić zapisaną konfigurację:
```bash
rm -rf ~/.local/share/opencode
```
W systemie Windows naciśnij `WIN+R` i usuń: `%USERPROFILE%\.local\share\opencode`
3. Ponownie uwierzytelnij się u swojego dostawcy za pomocą polecenia `/connect` w TUI.
---
### Problemy z AI_APICallError i pakietem dostawcy
Jeśli napotkasz błędy wywołań API, może to wynikać z nieaktualnych pakietów dostawców. opencode dynamicznie instaluje pakiety dostawców (OpenAI, Anthropic, Google itp.) w razie potrzeby i przechowuje je lokalnie w pamięci podręcznej.
Aby rozwiązać problemy z pakietem dostawcy:
1. Wyczyść pamięć podręczną pakietu dostawcy:
```bash
rm -rf ~/.cache/opencode
```
W systemie Windows naciśnij `WIN+R` i usuń: `%USERPROFILE%\.cache\opencode`
2. Uruchom ponownie kod opencode, aby ponownie zainstalować najnowsze pakiety dostawców
Zmusi to opencode do pobrania najnowszych wersji pakietów dostawców, co często rozwiązuje problemy ze zgodnością z parametrami modelu i zmianami API.
---
### Copy/paste not working on Linux
Aby funkcja kopiowania/wklejania działała, użytkownicy systemu Linux muszą mieć zainstalowane jedno z następujących narzędzi schowka:
**Dla systemów X11:**
```bash
apt install -y xclip
# or
apt install -y xsel
```
**Dla systemów Wayland:**
```bash
apt install -y wl-clipboard
```
**Dla środowisk bezgłowych:**
```bash
apt install -y xvfb
# and run:
Xvfb :99 -screen 0 1024x768x24 > /dev/null 2>&1 &
export DISPLAY=:99.0
```
opencode wykryje, czy używasz Waylanda i wolisz `wl-clipboard`, w przeciwnym razie spróbuje znaleźć narzędzia schowka w kolejności: `xclip` i `xsel`.

View File

@@ -0,0 +1,390 @@
---
title: TUI
description: Korzystanie z interfejsu użytkownika terminala OpenCode.
---
import { Tabs, TabItem } from "@astrojs/starlight/components"
OpenCode zapewnia interaktywny interfejs terminala lub TUI do pracy nad projektami za pomocą LLM.
Uruchomienie OpenCode uruchamia TUI dla bieżącego katalogu.
```bash
opencode
```
Możesz też uruchomić go dla określonego katalogu roboczego.
```bash
opencode /path/to/project
```
Gdy znajdziesz się w TUI, możesz wyświetlić monit za pomocą komunikatu.
```text
Give me a quick summary of the codebase.
```
---
## File references
Możesz odwoływać się do plików w swoich wiadomościach, używając `@`. Spowoduje to rozmyte wyszukiwanie plików w bieżącym katalogu roboczym.
:::tip
Możesz także użyć `@` do odwoływania się do plików w swoich wiadomościach.
:::
```text "@packages/functions/src/api/index.ts"
How is auth handled in @packages/functions/src/api/index.ts?
```
Zawartość pliku jest automatycznie dodawana do rozmowy.
---
## Bash commands
Rozpocznij wiadomość od `!`, aby uruchomić polecenie powłoki.
```bash frame="none"
!ls -la
```
Dane wyjściowe polecenia są dodawane do konwersacji jako wynik narzędzia.
---
## Komendy
Korzystając z TUI OpenCode, możesz wpisać `/`, po którym następuje nazwa polecenia, aby szybko wykonać działania. Na przykład:
```bash frame="none"
/help
```
Większość poleceń ma również skrót klawiszowy wykorzystujący `ctrl+x` jako klucz wiodący, gdzie `ctrl+x` jest domyślnym klawiszem wiodącym. [Dowiedz się więcej](/docs/keybinds).
Oto wszystkie dostępne polecenia ukośnika:
---
### connect
Dodaj dostawcę do OpenCode. Umożliwia wybór dostępnych dostawców i dodanie ich kluczy API.
```bash frame="none"
/connect
```
---
### compact
Kompaktuj bieżącą sesję. _Alias_: `/summarize`
```bash frame="none"
/compact
```
**Keybind:** `ctrl+x c`
---
### details
Toggle tool execution details.
```bash frame="none"
/details
```
**Keybind:** `ctrl+x d`
---
### editor
Otwórz zewnętrzny edytor do tworzenia wiadomości. Używa edytora ustawionego w zmiennej środowiskowej `EDITOR`. [Dowiedz się więcej](#editor-setup).
```bash frame="none"
/editor
```
**Keybind:** `ctrl+x e`
---
### exit
Exit OpenCode. _Aliases_: `/quit`, `/q`
```bash frame="none"
/exit
```
**Keybind:** `ctrl+x q`
---
### export
Wyeksportuj bieżącą rozmowę do Markdown i otwórz ją w domyślnym edytorze. Używa edytora ustawionego w zmiennej środowiskowej `EDITOR`. [Dowiedz się więcej](#editor-setup).
```bash frame="none"
/export
```
**Keybind:** `ctrl+x x`
---
### help
Pokaż okno pomocy.
```bash frame="none"
/help
```
**Keybind:** `ctrl+x h`
---
### init
Utwórz lub zaktualizuj plik `AGENTS.md`. [Dowiedz się więcej](/docs/rules).
```bash frame="none"
/init
```
**Keybind:** `ctrl+x i`
---
### models
Lista dostępnych modeli.
```bash frame="none"
/models
```
**Keybind:** `ctrl+x m`
---
### new
Rozpocznij nową sesję. _Alias_: `/clear`
```bash frame="none"
/new
```
**Keybind:** `ctrl+x n`
---
### redo
Ponów cofniętą wcześniej wiadomość. Dostępne tylko po użyciu `/undo`.
:::tip
Any file changes will also be restored.
:::
Wewnętrznie używa Git do zarządzania zmianami plików. Więc Twój projekt ** musi
be a Git repository**.
```bash frame="none"
/redo
```
**Keybind:** `ctrl+x r`
---
### sessions
Wyświetl listę i przełączaj się między sesjami. _Aliasy_: `/resume`, `/continue`
```bash frame="none"
/sessions
```
**Keybind:** `ctrl+x l`
---
### share
Udostępnij bieżącą sesję. [Dowiedz się więcej](/docs/share).
```bash frame="none"
/share
```
**Keybind:** `ctrl+x s`
---
### themes
Lista dostępnych motywów.
```bash frame="none"
/theme
```
**Keybind:** `ctrl+x t`
---
### thinking
Przełącz widoczność bloków myślenia/rozumowania w rozmowie. Po włączeniu tej opcji można zobaczyć proces wnioskowania modelu w przypadku modeli obsługujących myślenie rozszerzone.
:::note
To polecenie kontroluje jedynie, czy bloki myślowe są **wyświetlane** - nie włącza ani nie wyłącza możliwości wnioskowania modelu. Aby przełączyć rzeczywiste możliwości wnioskowania, użyj `ctrl+t` do przełączania wariantów modelu.
:::
```bash frame="none"
/thinking
```
---
### undo
Cofnij ostatnią wiadomość w rozmowie. Usuwa najnowszą wiadomość użytkownika, wszystkie kolejne odpowiedzi i wszelkie zmiany w plikach.
:::tip
Any file changes made will also be reverted.
:::
Wewnętrznie używa Git do zarządzania zmianami plików. Więc Twój projekt ** musi
be a Git repository**.
```bash frame="none"
/undo
```
**Keybind:** `ctrl+x u`
---
### unshare
Anuluj udostępnianie bieżącej sesji. [Dowiedz się więcej](/docs/share#un-sharing).
```bash frame="none"
/unshare
```
---
## Editor setup
Zarówno polecenia `/editor`, jak i `/export` korzystają z edytora określonego w zmiennej środowiskowej `EDITOR`.
<Tabs>
<TabItem label="Linux/macOS">
```bash
# Example for nano or vim
export EDITOR=nano
export EDITOR=vim
# For GUI editors, VS Code, Cursor, VSCodium, Windsurf, Zed, etc.
# include --wait
export EDITOR="code --wait"
```
Aby było to trwałe, dodaj to do swojego profilu powłoki;
`~/.bashrc`, `~/.zshrc`, etc.
</TabItem>
<TabItem label="Windows (CMD)">
```bash
set EDITOR=notepad
# For GUI editors, VS Code, Cursor, VSCodium, Windsurf, Zed, etc.
# include --wait
set EDITOR=code --wait
```
Aby ustawić tę opcję na stałe, użyj opcji **Właściwości systemu** > **Środowisko
Variables**.
</TabItem>
<TabItem label="Windows (PowerShell)">
```powershell
$env:EDITOR = "notepad"
# For GUI editors, VS Code, Cursor, VSCodium, Windsurf, Zed, etc.
# include --wait
$env:EDITOR = "code --wait"
```
Aby uczynić to trwałym, dodaj to do swojego profilu PowerShell.
</TabItem>
</Tabs>
Popular editor options include:
- `code` - Visual Studio Code
- `cursor` - Cursor
- `windsurf` - Windsurf
- `nvim` - Neovim editor
- `vim` - Vim editor
- `nano` - Nano editor
- `notepad` - Windows Notepad
- `subl` - Sublime Text
:::note
Niektóre edytory, takie jak VS Code, należy uruchamiać z flagą `--wait`.
:::
Niektórzy redaktorzy potrzebują argumentów wiersza poleceń, aby działać w trybie blokowania. Flaga `--wait` blokuje proces edytora aż do jego zamknięcia.
---
## Skonfiguruj
Możesz dostosować zachowanie TUI za pomocą pliku konfiguracyjnego OpenCode.
```json title="opencode.json"
{
"$schema": "https://opencode.ai/config.json",
"tui": {
"scroll_speed": 3,
"scroll_acceleration": {
"enabled": true
}
}
}
```
### Options
- `scroll_acceleration` — Włącz przyspieszenie przewijania w stylu macOS, aby zapewnić płynne, naturalne przewijanie. Po włączeniu prędkość przewijania wzrasta wraz z szybkimi gestami przewijania i pozostaje precyzyjna w przypadku wolniejszych ruchów. **To ustawienie ma pierwszeństwo przed `scroll_speed` i zastępuje je, gdy jest włączone.**
- `scroll_speed` - Kontroluje szybkość przewijania TUI podczas korzystania z poleceń przewijania (minimum: `1`). Wartość domyślna to `3`. **Uwaga: jest to ignorowane, jeśli `scroll_acceleration.enabled` jest ustawione na `true`.**
---
## Customization
Za pomocą palety poleceń (`ctrl+x h` lub `/help`) można dostosować różne aspekty widoku TUI. Te ustawienia są zachowywane po ponownym uruchomieniu.
---
#### Username display
Włącz lub wyłącz wyświetlanie Twojej nazwy użytkownika w wiadomościach na czacie. Dostęp do tego poprzez:
- Paleta poleceń: Wyszukaj „nazwę użytkownika” lub „ukryj nazwę użytkownika”
- Ustawienie zostanie zapamiętane automatycznie i będzie pamiętane podczas sesji TUI

View File

@@ -0,0 +1,142 @@
---
title: Web
description: Korzystanie z OpenCode w przeglądarce.
---
OpenCode może działać jako aplikacja internetowa w przeglądarce, zapewniając takie same możliwości kodowania AI bez konieczności korzystania z terminala.
![Sieć OpenCode - Nowa sesja](../../../assets/web/web-homepage-new-session.png)
## Getting Started
Uruchom interfejs sieciowy, uruchamiając:
```bash
opencode web
```
Spowoduje to uruchomienie lokalnego serwera na `127.0.0.1` z losowo dostępnym portem i automatyczne otwarcie OpenCode w domyślnej przeglądarce.
:::caution
Jeśli `OPENCODE_SERVER_PASSWORD` nie jest ustawione, serwer będzie niezabezpieczony. Jest to dobre rozwiązanie do użytku lokalnego, ale powinno być ustawione na dostęp do sieci.
:::
:::tip[Windows Users]
Aby uzyskać najlepsze wyniki, uruchom `opencode web` z [WSL](/docs/windows-wsl) zamiast programu PowerShell. Zapewnia to prawidłowy dostęp do systemu plików i integrację terminala.
:::
---
## Configuration
Możesz skonfigurować serwer WWW za pomocą flag wiersza poleceń lub w [pliku konfiguracyjnym] (./config).
### Port
Domyślnie OpenCode wybiera dostępny port. Możesz określić port:
```bash
opencode web --port 4096
```
### Hostname
Domyślnie serwer łączy się z `127.0.0.1` (tylko localhost). Aby udostępnić OpenCode w swojej sieci:
```bash
opencode web --hostname 0.0.0.0
```
Podczas korzystania z `0.0.0.0` OpenCode wyświetli zarówno adresy lokalne, jak i sieciowe:
```
Local access: http://localhost:4096
Network access: http://192.168.1.100:4096
```
### mDNS Discovery
Włącz mDNS, aby Twój serwer był wykrywalny w sieci lokalnej:
```bash
opencode web --mdns
```
To automatycznie ustawia nazwę hosta na `0.0.0.0` i anonsuje serwer jako `opencode.local`.
Możesz dostosować nazwę domeny mDNS, aby uruchamiała wiele instancji w tej samej sieci:
```bash
opencode web --mdns --mdns-domain myproject.local
```
### CORS
Aby zezwolić na dodatkowe domeny dla CORS (przydatne w przypadku niestandardowych interfejsów):
```bash
opencode web --cors https://example.com
```
### Authentication
Aby chronić dostęp, ustaw hasło za pomocą zmiennej środowiskowej `OPENCODE_SERVER_PASSWORD`:
```bash
OPENCODE_SERVER_PASSWORD=secret opencode web
```
Domyślna nazwa użytkownika to `opencode`, ale można ją zmienić za pomocą `OPENCODE_SERVER_USERNAME`.
---
## Korzystanie z interfejsu internetowego
Po uruchomieniu interfejs sieciowy zapewnia dostęp do sesji OpenCode.
### Sessions
Przeglądaj sesje i zarządzaj nimi ze strony głównej. Możesz zobaczyć aktywne sesje i rozpocząć nowe.
![OpenCode Web - Aktywna sesja](../../../assets/web/web-homepage-active-session.png)
### Stan serwera
Kliknij „Zobacz serwery”, aby wyświetlić podłączone serwery i ich status.
![OpenCode Web - See Servers](../../../assets/web/web-homepage-see-servers.png)
---
## Attaching a Terminal
Możesz podłączyć terminal TUI do działającego serwera WWW:
```bash
# Start the web server
opencode web --port 4096
# In another terminal, attach the TUI
opencode attach http://localhost:4096
```
Umożliwia to jednoczesne korzystanie z interfejsu sieciowego i terminala, współdzieląc te same sesje i stan.
---
## Config File
Możesz także skonfigurować ustawienia serwera w pliku konfiguracyjnym `opencode.json`:
```json
{
"server": {
"port": 4096,
"hostname": "0.0.0.0",
"mdns": true,
"cors": ["https://example.com"]
}
}
```
Flagi wiersza poleceń mają pierwszeństwo przed ustawieniami pliku konfiguracyjnego.

View File

@@ -0,0 +1,113 @@
---
title: Windows (WSL)
description: Uruchamiaj OpenCode na Windows z WSL dla najlepszych efektow.
---
import { Steps } from "@astrojs/starlight/components"
Chociaz OpenCode moze dzialac bezposrednio na Windows, dla najlepszych rezultatow zalecamy [Windows Subsystem for Linux (WSL)](https://learn.microsoft.com/en-us/windows/wsl/install). WSL zapewnia srodowisko Linuksa, ktore bardzo dobrze wspolpracuje z funkcjami OpenCode.
:::tip[Dlaczego WSL?]
WSL oferuje lepsza wydajnosc systemu plikow, pelna obsluge terminala i zgodnosc z narzedziami developerskimi, na ktorych opiera sie OpenCode.
:::
---
## Konfiguracja
<Steps>
1. **Zainstaluj WSL**
Jesli jeszcze tego nie zrobiles, [zainstaluj WSL](https://learn.microsoft.com/en-us/windows/wsl/install) wedlug oficjalnego przewodnika Microsoft.
2. **Zainstaluj OpenCode w WSL**
Po skonfigurowaniu WSL otworz terminal WSL i zainstaluj OpenCode jedna z [metod instalacji](/docs/).
```bash
curl -fsSL https://opencode.ai/install | bash
```
3. **Korzystaj z OpenCode przez WSL**
Przejdz do katalogu projektu (pliki Windows sa dostepne przez `/mnt/c/`, `/mnt/d/` itd.) i uruchom OpenCode.
```bash
cd /mnt/c/Users/YourName/project
opencode
```
</Steps>
---
## Aplikacja desktopowa + serwer WSL
Jesli wolisz aplikacje desktopowa OpenCode, ale chcesz uruchamiac serwer w WSL:
1. **Uruchom serwer w WSL** z `--hostname 0.0.0.0`, aby zezwolic na polaczenia zewnetrzne:
```bash
opencode serve --hostname 0.0.0.0 --port 4096
```
2. **Polacz aplikacje desktopowa** z `http://localhost:4096`
:::note
Jesli `localhost` nie dziala w Twojej konfiguracji, polacz sie przez adres IP WSL (w WSL: `hostname -I`) i uzyj `http://<wsl-ip>:4096`.
:::
:::caution
Przy uzyciu `--hostname 0.0.0.0` ustaw `OPENCODE_SERVER_PASSWORD`, aby zabezpieczyc serwer.
```bash
OPENCODE_SERVER_PASSWORD=your-password opencode serve --hostname 0.0.0.0
```
:::
---
## Klient web + WSL
Dla najlepszej pracy w przegladarce na Windows:
1. **Uruchamiaj `opencode web` w terminalu WSL**, a nie w PowerShell:
```bash
opencode web --hostname 0.0.0.0
```
2. **Otworz w przegladarce Windows** pod adresem `http://localhost:<port>` (OpenCode wypisze URL)
Uruchamianie `opencode web` z WSL zapewnia poprawny dostep do systemu plikow i integracje z terminalem, a nadal pozostaje dostepne z przegladarki Windows.
---
## Dostep do plikow Windows
WSL moze uzyskac dostep do wszystkich plikow Windows przez katalog `/mnt/`:
- Dysk `C:` → `/mnt/c/`
- Dysk `D:` → `/mnt/d/`
- I tak dalej...
Przyklad:
```bash
cd /mnt/c/Users/YourName/Documents/project
opencode
```
:::tip
Aby uzyskac najplynniejsza prace, rozwaz sklonowanie/skopiowanie repozytorium do systemu plikow WSL (np. do `~/code/`) i uruchamianie tam OpenCode.
:::
---
## Wskazowki
- Uruchamiaj OpenCode w WSL dla projektow zapisanych na dyskach Windows - dostep do plikow jest bezproblemowy
- Uzywaj [rozszerzenia WSL dla VS Code](https://code.visualstudio.com/docs/remote/wsl) razem z OpenCode, aby miec zintegrowany workflow
- Konfiguracja OpenCode i sesje sa przechowywane w srodowisku WSL pod `~/.local/share/opencode/`

View File

@@ -0,0 +1,254 @@
---
title: Zen
description: Wyselekcjonowana lista modeli dostarczonych przez OpenCode.
---
import config from "../../../../config.mjs"
export const console = config.console
export const email = `mailto:${config.email}`
OpenCode Zen to lista przetestowanych i zweryfikowanych modeli udostępniona przez zespół OpenCode.
:::note
OpenCode Zen is currently in beta.
:::
Zen działa jak każdy inny dostawca OpenCode. Logujesz się do OpenCode Zen i dostajesz
Twój klucz API. Jest **całkowicie opcjonalny** i nie musisz go używać, aby z niego korzystać
OpenCode.
---
## Background
There are a large number of models out there but only a few of
these models work well as coding agents. Additionally, most providers are
skonfigurowany bardzo różnie; więc otrzymujesz zupełnie inną wydajność i jakość.
:::tip
Przetestowaliśmy wybraną grupę modeli i dostawców, którzy dobrze współpracują z OpenCode.
:::
Jeśli więc używasz modelu za pośrednictwem czegoś takiego jak OpenRouter, nigdy nie będzie to możliwe
pewien, czy otrzymujesz najlepszą wersję modelu, jaki chcesz.
Aby to naprawić, zrobiliśmy kilka rzeczy:
1. Przetestowaliśmy wybraną grupę modeli i rozmawialiśmy z ich zespołami o tym, jak to zrobić
najlepiej je uruchom.
2. Następnie współpracowaliśmy z kilkoma dostawcami, aby upewnić się, że są one obsługiwane
correctly.
3. Na koniec porównaliśmy kombinację modelu/dostawcy i otrzymaliśmy wynik
z listą, którą z przyjemnością polecamy.
OpenCode Zen to brama AI, która zapewnia dostęp do tych modeli.
---
## How it works
OpenCode Zen działa jak każdy inny dostawca OpenCode.
1. Logujesz się do **<a href={console}>OpenCode Zen</a>**, dodajesz swoje rozliczenia
szczegóły i skopiuj klucz API.
2. Uruchamiasz polecenie `/connect` w TUI, wybierasz OpenCode Zen i wklejasz klucz API.
3. Uruchom `/models` w TUI, aby zobaczyć listę zalecanych przez nas modeli.
Opłata jest pobierana za każde żądanie i możesz dodać kredyty do swojego konta.
---
## Endpoints
Dostęp do naszych modeli można również uzyskać za pośrednictwem następujących punktów końcowych interfejsu API.
| Modelka | Identyfikator modelu | Punkt końcowy | Pakiet SDK AI |
| ------------------ | ------------------ | -------------------------------------------------- | --------------------------- |
| GPT 5.2 | gpt-5.2 | `https://opencode.ai/zen/v1/responses` | `@ai-sdk/openai` |
| GPT 5.2 Codex | gpt-5.2-codex | `https://opencode.ai/zen/v1/responses` | `@ai-sdk/openai` |
| GPT 5.1 | gpt-5.1 | `https://opencode.ai/zen/v1/responses` | `@ai-sdk/openai` |
| GPT 5.1 Codex | gpt-5.1-codex | `https://opencode.ai/zen/v1/responses` | `@ai-sdk/openai` |
| GPT 5.1 Codex Max | gpt-5.1-codex-max | `https://opencode.ai/zen/v1/responses` | `@ai-sdk/openai` |
| GPT 5.1 Codex Mini | gpt-5.1-codex-mini | `https://opencode.ai/zen/v1/responses` | `@ai-sdk/openai` |
| GPT 5 | gpt-5 | `https://opencode.ai/zen/v1/responses` | `@ai-sdk/openai` |
| GPT 5 Codex | gpt-5-codex | `https://opencode.ai/zen/v1/responses` | `@ai-sdk/openai` |
| GPT 5 Nano | gpt-5-nano | `https://opencode.ai/zen/v1/responses` | `@ai-sdk/openai` |
| Claude Sonnet 4.5 | claude-sonnet-4-5 | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` |
| Claude Sonnet 4 | claude-sonnet-4 | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` |
| Claude Haiku 4.5 | claude-haiku-4-5 | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` |
| Claude Haiku 3.5 | claude-3-5-haiku | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` |
| Claude Opus 4.6 | claude-opus-4-6 | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` |
| Claude Opus 4.5 | claude-opus-4-5 | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` |
| Claude Opus 4.1 | claude-opus-4-1 | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` |
| Gemini 3 Pro | gemini-3-pro | `https://opencode.ai/zen/v1/models/gemini-3-pro` | `@ai-sdk/google` |
| Gemini 3 Flash | gemini-3-flash | `https://opencode.ai/zen/v1/models/gemini-3-flash` | `@ai-sdk/google` |
| MiniMax M2.1 | minimax-m2.1 | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` |
| MiniMax M2.1 Free | minimax-m2.1-free | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` |
| GLM 4.7 | glm-4.7 | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` |
| GLM 4.7 Free | glm-4.7-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` |
| GLM 4.6 | glm-4.6 | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` |
| Kimi K2.5 | kimi-k2.5 | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` |
| Kimi K2.5 Free | kimi-k2.5-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` |
| Kimi K2 Thinking | kimi-k2-thinking | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` |
| Kimi K2 | kimi-k2 | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` |
| Qwen3 Coder 480B | qwen3-coder | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` |
| Big Pickle | big-pickle | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` |
[Identyfikator modelu](/docs/config/#models) w konfiguracji OpenCode
używa formatu `opencode/<model-id>`. Na przykład w przypadku Kodeksu GPT 5.2 zrobiłbyś to
użyj `opencode/gpt-5.2-codex` w swojej konfiguracji.
---
### Models
Pełną listę dostępnych modeli i ich metadane możesz pobrać z:
```
https://opencode.ai/zen/v1/models
```
---
## Pricing
Wspieramy model pay-as-you-go. Poniżej znajdują się ceny **za 1M tokenów**.
| Modelka | Wejście | Wyjście | Odczyt w pamięci podręcznej | Zapis w pamięci podręcznej |
| --------------------------------- | ------ | ------ | ----------- | ------------ |
| Big Pickle | Free | Free | Free | - |
| MiniMax M2.1 Free | Free | Free | Free | - |
| MiniMax M2.1 | $0.30 | $1.20 | $0.10 | - |
| GLM 4.7 Free | Free | Free | Free | - |
| GLM 4.7 | $0.60 | $2.20 | $0.10 | - |
| GLM 4.6 | $0.60 | $2.20 | $0.10 | - |
| Kimi K2.5 Free | Free | Free | Free | - |
| Kimi K2.5 | $0.60 | $3.00 | $0.08 | - |
| Kimi K2 Thinking | $0.40 | $2.50 | - | - |
| Kimi K2 | $0.40 | $2.50 | - | - |
| Qwen3 Coder 480B | $0.45 | $1.50 | - | - |
| Claude Sonnet 4.5 (≤ 200K tokens) | $3.00 | $15.00 | $0.30 | $3.75 |
| Claude Sonnet 4.5 (> 200K tokens) | $6.00 | $22.50 | $0.60 | $7.50 |
| Claude Sonnet 4 (≤ 200K tokens) | $3.00 | $15.00 | $0.30 | $3.75 |
| Claude Sonnet 4 (> 200K tokens) | $6.00 | $22.50 | $0.60 | $7.50 |
| Claude Haiku 4.5 | $1.00 | $5.00 | $0.10 | $1.25 |
| Claude Haiku 3.5 | $0.80 | $4.00 | $0.08 | $1.00 |
| Claude Opus 4.6 (≤ 200K tokens) | $5.00 | $25.00 | $0.50 | $6.25 |
| Claude Opus 4.6 (> 200K tokens) | $10.00 | $37.50 | $1.00 | $12.50 |
| Claude Opus 4.5 | $5.00 | $25.00 | $0.50 | $6.25 |
| Claude Opus 4.1 | $15.00 | $75.00 | $1.50 | $18.75 |
| Gemini 3 Pro (≤ 200K tokens) | $2.00 | $12.00 | $0.20 | - |
| Gemini 3 Pro (> 200K tokens) | $4.00 | $18.00 | $0.40 | - |
| Gemini 3 Flash | $0.50 | $3.00 | $0.05 | - |
| GPT 5.2 | $1.75 | $14.00 | $0.175 | - |
| GPT 5.2 Codex | $1.75 | $14.00 | $0.175 | - |
| GPT 5.1 | $1.07 | $8.50 | $0.107 | - |
| GPT 5.1 Codex | $1.07 | $8.50 | $0.107 | - |
| GPT 5.1 Codex Max | $1.25 | $10.00 | $0.125 | - |
| GPT 5.1 Codex Mini | $0.25 | $2.00 | $0.025 | - |
| GPT 5 | $1.07 | $8.50 | $0.107 | - |
| GPT 5 Codex | $1.07 | $8.50 | $0.107 | - |
| GPT 5 Nano | Free | Free | Free | - |
Możesz zauważyć _Claude Haiku 3.5_ w swojej historii użytkowania. To jest [model niskokosztowy](/docs/config/#models), który służy do generowania tytułów sesji.
:::note
Opłaty za karty kredytowe są przenoszone na koszt (4,4% + 0,30 USD za transakcję); nie pobieramy żadnych dodatkowych opłat.
:::
Darmowe modele:
- GLM 4.7 Free jest dostępny na platformie OpenCode przez ograniczony czas. Zespół wykorzystuje ten czas na zbieranie opinii i ulepszanie modelu.
- Kimi K2.5 Free jest dostępny na OpenCode przez ograniczony czas. Zespół wykorzystuje ten czas na zbieranie opinii i ulepszanie modelu.
- MiniMax M2.1 Free jest dostępny na platformie OpenCode przez ograniczony czas. Zespół wykorzystuje ten czas na zbieranie opinii i ulepszanie modelu.
- Big Pickle to ukryty model, który jest bezpłatny w OpenCode przez ograniczony czas. Zespół wykorzystuje ten czas na zbieranie opinii i ulepszanie modelu.
<a href={email}>Skontaktuj się z nami</a>, jeśli masz jakieś pytania.
---
### Auto-reload
Jeśli Twoje saldo spadnie poniżej 5 USD, Zen automatycznie doładuje 20 USD.
Możesz zmienić kwotę automatycznego doładowania. Możesz także całkowicie wyłączyć automatyczne przeładowywanie.
---
### Monthly limits
Możesz także ustawić miesięczny limit wykorzystania dla całego obszaru roboczego i dla każdego z nich
członek Twojego zespołu.
Załóżmy na przykład, że ustawiłeś miesięczny limit użytkowania na 20 USD, Zen nie będzie z niego korzystał
ponad 20 dolarów miesięcznie. Ale jeśli masz włączone automatyczne przeładowywanie, Zen może się skończyć
obciąży Cię kwotą wyższą niż 20 USD, jeśli saldo spadnie poniżej 5 USD.
---
## Privacy
Wszystkie nasze modele są hostowane w USA. Nasi dostawcy przestrzegają polityki zerowego przechowywania i nie wykorzystują Twoich danych do szkolenia modeli, z następującymi wyjątkami:
- Big Pickle: W okresie bezpłatnym zebrane dane mogą zostać wykorzystane do udoskonalenia modelu.
- GLM 4.7 Bezpłatna: W okresie bezpłatnym zebrane dane mogą zostać wykorzystane do udoskonalenia modelu.
- Kimi K2.5 Free: W okresie bezpłatnym zebrane dane mogą zostać wykorzystane do udoskonalenia modelu.
- MiniMax M2.1 Free: W okresie bezpłatnym zebrane dane mogą zostać wykorzystane do udoskonalenia modelu.
- Interfejsy API OpenAI: żądania są przechowywane przez 30 dni zgodnie z [Zasadami dotyczącymi danych OpenAI](https://platform.openai.com/docs/guides/your-data).
- Interfejsy API Anthropic: żądania są przechowywane przez 30 dni zgodnie z [Zasadami dotyczącymi danych firmy Anthropic] (https://docs.anthropic.com/en/docs/claude-code/data-usage).
---
## Dla zespołów
Zen świetnie sprawdza się także w zespołach. Możesz zapraszać członków zespołu, przypisywać role, zarządzać
modele, z których korzysta Twój zespół i nie tylko.
:::note
Obszary robocze są obecnie bezpłatne dla zespołów w ramach wersji beta.
:::
Zarządzanie obszarem roboczym jest obecnie bezpłatne dla zespołów w ramach wersji beta. Będziemy
wkrótce udostępnimy więcej szczegółów na temat cen.
---
### Roles
Możesz zapraszać członków zespołu do swojego obszaru roboczego i przypisywać role:
- **Administrator**: Zarządzaj modelami, członkami, kluczami API i rozliczeniami
- **Członek**: Zarządzaj tylko własnymi kluczami API
Administratorzy mogą także ustawić miesięczne limity wydatków dla każdego członka, aby utrzymać koszty pod kontrolą.
---
### Dostęp do modelu
Administratorzy mogą włączać i wyłączać określone modele w obszarze roboczym. Żądania skierowane do wyłączonego modelu zwrócą błąd.
Jest to przydatne w przypadkach, gdy chcesz wyłączyć korzystanie z modelu, który
collects data.
---
### Przynieś swój własny klucz
Możesz używać własnych kluczy OpenAI lub Anthropic API, jednocześnie uzyskując dostęp do innych modeli w Zen.
Kiedy używasz własnych kluczy, tokeny są rozliczane bezpośrednio przez dostawcę, a nie przez Zen.
Na przykład Twoja organizacja może już mieć klucz do OpenAI lub Anthropic
i chcesz go używać zamiast tego, który zapewnia Zen.
---
## Goals
We created OpenCode Zen to:
1. **Benchmark** najlepsze modele/dostawcy dla agentów kodujących.
2. Miej dostęp do opcji **najwyższej jakości**, a nie obniżaj wydajności ani nie kieruj się do tańszych dostawców.
3. Przekaż wszelkie **obniżki cen**, sprzedając po kosztach; więc jedyną marżą jest pokrycie naszych opłat manipulacyjnych.
4. Nie **nie blokuj**, umożliwiając używanie go z dowolnym innym agentem kodującym. I zawsze pozwalaj na korzystanie z OpenCode dowolnego innego dostawcy.