| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342 |
- ---
- title: Инструменты
- description: Управляйте инструментами, которые может использовать LLM.
- ---
- Инструменты позволяют LLM выполнять действия в вашей кодовой базе. opencode поставляется с набором встроенных инструментов, но вы можете расширить его с помощью [пользовательских инструментов](/docs/custom-tools) или [MCP-серверов](/docs/mcp-servers).
- По умолчанию все инструменты **включены** и не требуют разрешения для запуска. Вы можете контролировать поведение инструмента через [permissions](/docs/permissions).
- ---
- ## Настройка
- Используйте поле `permission` для управления поведением инструмента. Вы можете разрешить, запретить или потребовать одобрения для каждого инструмента.
- ```json title="opencode.json"
- {
- "$schema": "https://opencode.ai/config.json",
- "permission": {
- "edit": "deny",
- "bash": "ask",
- "webfetch": "allow"
- }
- }
- ```
- Вы также можете использовать подстановочные знаки для одновременного управления несколькими инструментами. Например, чтобы потребовать одобрения всех инструментов с сервера MCP:
- ```json title="opencode.json"
- {
- "$schema": "https://opencode.ai/config.json",
- "permission": {
- "mymcp_*": "ask"
- }
- }
- ```
- [Подробнее](/docs/permissions) о настройке разрешений.
- ---
- ## Встроенный
- Вот все встроенные инструменты, доступные в opencode.
- ---
- ### bash
- Выполняйте shell-команды в среде вашего проекта.
- ```json title="opencode.json" {4}
- {
- "$schema": "https://opencode.ai/config.json",
- "permission": {
- "bash": "allow"
- }
- }
- ```
- Этот инструмент позволяет LLM запускать команды терминала, такие как `npm install`, `git status` или любую другую shell-команду.
- ---
- ### edit
- Измените существующие файлы, используя точную замену строк.
- ```json title="opencode.json" {4}
- {
- "$schema": "https://opencode.ai/config.json",
- "permission": {
- "edit": "allow"
- }
- }
- ```
- Этот инструмент выполняет точное редактирование файлов, заменяя точные совпадения текста. Это основной способ изменения кода в LLM.
- ---
- ### write
- Создавайте новые файлы или перезаписывайте существующие.
- ```json title="opencode.json" {4}
- {
- "$schema": "https://opencode.ai/config.json",
- "permission": {
- "edit": "allow"
- }
- }
- ```
- Используйте это, чтобы позволить LLM создавать новые файлы. Он перезапишет существующие файлы, если они уже существуют.
- :::note
- Инструмент `write` контролируется разрешением `edit`, которое распространяется на все модификации файлов (`edit`, `write`, `patch`, `multiedit`).
- :::
- ---
- ### read
- Прочитайте содержимое файла из вашей кодовой базы.
- ```json title="opencode.json" {4}
- {
- "$schema": "https://opencode.ai/config.json",
- "permission": {
- "read": "allow"
- }
- }
- ```
- Этот инструмент читает файлы и возвращает их содержимое. Он поддерживает чтение определенных диапазонов строк для больших файлов.
- ---
- ### grep
- Поиск содержимого файла с помощью регулярных выражений.
- ```json title="opencode.json" {4}
- {
- "$schema": "https://opencode.ai/config.json",
- "permission": {
- "grep": "allow"
- }
- }
- ```
- Быстрый поиск контента по вашей кодовой базе. Поддерживает полный синтаксис регулярных выражений и фильтрацию шаблонов файлов.
- ---
- ### glob
- Найдите файлы по шаблону.
- ```json title="opencode.json" {4}
- {
- "$schema": "https://opencode.ai/config.json",
- "permission": {
- "glob": "allow"
- }
- }
- ```
- Ищите файлы, используя шаблоны glob, например `**/*.js` или `src/**/*.ts`. Возвращает соответствующие пути к файлам, отсортированные по времени изменения.
- ---
- ### lsp (экспериментальный)
- Взаимодействуйте с настроенными серверами LSP, чтобы получить функции анализа кода, такие как определения, ссылки, информация о наведении и иерархия вызовов.
- :::note
- Этот инструмент доступен только при `OPENCODE_EXPERIMENTAL_LSP_TOOL=true` (или `OPENCODE_EXPERIMENTAL=true`).
- :::
- ```json title="opencode.json" {4}
- {
- "$schema": "https://opencode.ai/config.json",
- "permission": {
- "lsp": "allow"
- }
- }
- ```
- Поддерживаемые операции включают `goToDefinition`, `findReferences`, `hover`, `documentSymbol`, `workspaceSymbol`, `goToImplementation`, `prepareCallHierarchy`, `incomingCalls` и `outgoingCalls`.
- Чтобы настроить серверы LSP, доступные для вашего проекта, см. [LSP Servers](/docs/lsp).
- ---
- ### patch
- Применяйте патчи к файлам.
- ```json title="opencode.json" {4}
- {
- "$schema": "https://opencode.ai/config.json",
- "permission": {
- "edit": "allow"
- }
- }
- ```
- Этот инструмент применяет файлы исправлений к вашей кодовой базе. Полезно для применения различий и патчей из различных источников.
- :::note
- Инструмент `patch` контролируется разрешением `edit`, которое распространяется на все модификации файлов (`edit`, `write`, `patch`, `multiedit`).
- :::
- ---
- ### skill
- Загрузите [skill](/docs/skills) (файл `SKILL.md`) и верните его содержимое в диалог.
- ```json title="opencode.json" {4}
- {
- "$schema": "https://opencode.ai/config.json",
- "permission": {
- "skill": "allow"
- }
- }
- ```
- ---
- ### todowrite
- Управляйте списками дел во время сеансов кодирования.
- ```json title="opencode.json" {4}
- {
- "$schema": "https://opencode.ai/config.json",
- "permission": {
- "todowrite": "allow"
- }
- }
- ```
- Создает и обновляет списки задач для отслеживания прогресса во время сложных операций. LLM использует это для организации многоэтапных задач.
- :::note
- По умолчанию этот инструмент отключен для субагентов, но вы можете включить его вручную. [Подробнее](/docs/agents/#permissions)
- :::
- ---
- ### webfetch
- Получить веб-контент.
- ```json title="opencode.json" {4}
- {
- "$schema": "https://opencode.ai/config.json",
- "permission": {
- "webfetch": "allow"
- }
- }
- ```
- Позволяет LLM получать и читать веб-страницы. Полезно для поиска документации или исследования онлайн-ресурсов.
- ---
- ### websearch
- Найдите информацию в Интернете.
- :::note
- Этот инструмент доступен только при использовании поставщика opencode или когда для переменной среды `OPENCODE_ENABLE_EXA` установлено любое истинное значение (например, `true` или `1`).
- Чтобы включить при запуске opencode:
- ```bash
- OPENCODE_ENABLE_EXA=1 opencode
- ```
- :::
- ```json title="opencode.json" {4}
- {
- "$schema": "https://opencode.ai/config.json",
- "permission": {
- "websearch": "allow"
- }
- }
- ```
- Выполняет поиск в Интернете с помощью Exa AI для поиска соответствующей информации в Интернете. Полезно для исследования тем, поиска текущих событий или сбора информации, выходящей за рамки данных обучения.
- Ключ API не требуется — инструмент подключается напрямую к сервису MCP, размещенному на Exa AI, без аутентификации.
- :::tip
- Используйте `websearch`, когда вам нужно найти информацию (обнаружение), и `webfetch`, когда вам нужно получить контент с определенного URL-адреса (извлечение).
- :::
- ---
- ### question
- Задавайте вопросы пользователю во время выполнения.
- ```json title="opencode.json" {4}
- {
- "$schema": "https://opencode.ai/config.json",
- "permission": {
- "question": "allow"
- }
- }
- ```
- Этот инструмент позволяет LLM задавать вопросы пользователю во время выполнения задачи. Это полезно для:
- - Сбор предпочтений или требований пользователей
- - Уточнение двусмысленных инструкций
- - Получение решений по вариантам реализации
- - Предлагая выбор, в каком направлении двигаться
- Каждый вопрос включает заголовок, текст вопроса и список вариантов. Пользователи могут выбрать один из предложенных вариантов или ввести собственный ответ. Если вопросов несколько, пользователи могут перемещаться между ними, прежде чем отправлять все ответы.
- ---
- ## Пользовательские инструменты
- Пользовательские инструменты позволяют вам определять собственные функции, которые может вызывать LLM. Они определены в вашем файле конфигурации и могут выполнять произвольный код.
- [Подробнее](/docs/custom-tools) о создании собственных инструментов.
- ---
- ## MCP-серверы
- Серверы MCP (Model Context Protocol) позволяют интегрировать внешние инструменты и сервисы. Сюда входит доступ к базе данных, интеграция API и сторонние сервисы.
- [Подробнее](/docs/mcp-servers) о настройке серверов MCP.
- ---
- ## Внутреннее устройство
- Внутренне такие инструменты, как `grep` и `glob`, используют [ripgrep](https://github.com/BurntSushi/ripgrep). По умолчанию ripgrep учитывает шаблоны `.gitignore`, что означает, что файлы и каталоги, перечисленные в вашем `.gitignore`, будут исключены из поиска и списков.
- ---
- ### Игнорировать шаблоны
- Чтобы включить файлы, которые обычно игнорируются, создайте файл `.ignore` в корне вашего проекта. Этот файл может явно разрешать определенные пути.
- ```text title=".ignore"
- !node_modules/
- !dist/
- !build/
- ```
- Например, этот файл `.ignore` позволяет ripgrep выполнять поиск в каталогах `node_modules/`, `dist/` и `build/`, даже если они указаны в `.gitignore`.
|