| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341 |
- ---
- title: Narzędzia
- description: Zarządzaj narzędziami, z których może korzystać LLM.
- ---
- Narzędzia umożliwiają LLM wykonywanie działań w bazie kodu. OpenCode posiada 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ą zatwierdzenia przed uruchomieniem. Możesz kontrolować zachowanie narzędzi poprzez [uprawnienia](/docs/permissions).
- ---
- ## Konfiguracja
- Użyj pola `permission` do kontrolowania zachowania narzędzia. Dla każdego narzędzia możesz zezwolić (`allow`), odmówić (`deny`) lub wymagać zatwierdzenia (`ask`).
- ```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 dla 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 narzędzia
- Oto wszystkie wbudowane narzędzia dostępne w OpenCode.
- ---
- ### bash
- Wykonuj polecenia powłoki (shell) 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
- Modyfikuj istniejące pliki poprzez precyzyjne zastępowanie tekstu.
- ```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
- Twórz nowe pliki lub nadpisuj 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`).
- :::
- ---
- ### read
- Odczytaj 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
- Przeszukuj zawartość plików za pomocą wyrażeń regularnych.
- ```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
- Znajduj pliki na podstawie wzorców.
- ```json title="opencode.json" {4}
- {
- "$schema": "https://opencode.ai/config.json",
- "permission": {
- "glob": "allow"
- }
- }
- ```
- Szukaj plików przy użyciu wzorców glob, takich jak `**/*.js` lub `src/**/*.ts`. Zwraca pasujące ścieżki plików posortowane według czasu modyfikacji.
- ---
- ### LSP (eksperymentalne)
- Interakcja ze skonfigurowanymi serwerami LSP w celu uzyskania funkcji analizy kodu, takich jak definicje, referencje, podpowiedzi (hover) i hierarchia wywołań.
- :::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
- Stosuj łatki (patches) do plików.
- ```json title="opencode.json" {4}
- {
- "$schema": "https://opencode.ai/config.json",
- "permission": {
- "edit": "allow"
- }
- }
- ```
- To narzędzie stosuje pliki różnicowe (diffs) do bazy kodu. Przydatne do stosowania zmian z różnych źródeł.
- :::note
- Narzędzie `patch` jest kontrolowane przez uprawnienie `edit`, które obejmuje wszystkie modyfikacje plików (`edit`, `write`, `patch`).
- :::
- ---
- ### 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 zadań (todo) 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 subagentów, ale można je włączyć ręcznie. [Dowiedz się więcej](/docs/agents/#permissions)
- :::
- ---
- ### webfetch
- Pobieraj treści z sieci.
- ```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 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`).
- Aby włączyć przy uruchamianiu 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. Przydatne do badania tematów, znajdowania bieżących wydarzeń lub zbierania informacji wykraczających poza zbiór danych treningowych.
- 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 (odkrywanie), 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 do:
- - Zbierania preferencji i wymagań użytkownika
- - Doprecyzowania niejednoznacznych instrukcji
- - Podejmowania decyzji dotyczących implementacji
- - Proponowania możliwych kierunków działania
- 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.
- ---
- ## Narzędzia niestandardowe
- 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.
- ---
- ## Serwery MCP
- 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.
- ---
- ## Szczegóły techniczne
- Wewnętrznie narzędzia takie jak `grep` i `glob` używają [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.
- ---
- ### Ignorowanie plików
- 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`.
|