--- 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. --- ### бить Выполняйте команды оболочки в среде вашего проекта. ```json title="opencode.json" {4} { "$schema": "https://opencode.ai/config.json", "permission": { "bash": "allow" } } ``` Этот инструмент позволяет LLM запускать команды терминала, такие как `npm install`, `git status` или любую другую команду оболочки. --- ### редактировать Измените существующие файлы, используя точную замену строк. ```json title="opencode.json" {4} { "$schema": "https://opencode.ai/config.json", "permission": { "edit": "allow" } } ``` Этот инструмент выполняет точное редактирование файлов, заменяя точные совпадения текста. Это основной способ изменения кода в LLM. --- ### писать Создавайте новые файлы или перезаписывайте существующие. ```json title="opencode.json" {4} { "$schema": "https://opencode.ai/config.json", "permission": { "edit": "allow" } } ``` Используйте это, чтобы позволить LLM создавать новые файлы. Он перезапишет существующие файлы, если они уже существуют. :::note Инструмент `write` контролируется разрешением `edit`, которое распространяется на все модификации файлов (`edit`, `write`, `patch`, `multiedit`). ::: --- ### читать Прочитайте содержимое файла из вашей кодовой базы. ```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" } } ``` Быстрый поиск контента по вашей кодовой базе. Поддерживает полный синтаксис регулярных выражений и фильтрацию шаблонов файлов. --- ### шарик Найдите файлы по шаблону. ```json title="opencode.json" {4} { "$schema": "https://opencode.ai/config.json", "permission": { "glob": "allow" } } ``` Ищите файлы, используя шаблоны glob, например `**/*.js` или `src/**/*.ts`. Возвращает соответствующие пути к файлам, отсортированные по времени изменения. --- ### список Список файлов и каталогов по заданному пути. ```json title="opencode.json" {4} { "$schema": "https://opencode.ai/config.json", "permission": { "list": "allow" } } ``` Этот инструмент отображает содержимое каталога. Он принимает шаблоны glob для фильтрации результатов. --- ### лсп (экспериментальный) Взаимодействуйте с настроенными серверами 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). --- ### пластырь Применяйте патчи к файлам. ```json title="opencode.json" {4} { "$schema": "https://opencode.ai/config.json", "permission": { "edit": "allow" } } ``` Этот инструмент применяет файлы исправлений к вашей кодовой базе. Полезно для применения различий и патчей из различных источников. :::note Инструмент `patch` контролируется разрешением `edit`, которое распространяется на все модификации файлов (`edit`, `write`, `patch`, `multiedit`). ::: --- ### навык Загрузите [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) ::: --- ### todoread Прочтите существующие списки дел. ```json title="opencode.json" {4} { "$schema": "https://opencode.ai/config.json", "permission": { "todoread": "allow" } } ``` Считывает текущее состояние списка дел. Используется LLM для отслеживания задач, ожидающих или завершенных. :::note По умолчанию этот инструмент отключен для субагентов, но вы можете включить его вручную. [Подробнее](/docs/agents/#permissions) ::: --- ### веб-загрузка Получить веб-контент. ```json title="opencode.json" {4} { "$schema": "https://opencode.ai/config.json", "permission": { "webfetch": "allow" } } ``` Позволяет LLM получать и читать веб-страницы. Полезно для поиска документации или исследования онлайн-ресурсов. --- ### веб-поиск Найдите информацию в Интернете. :::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-адреса (извлечение). ::: --- ### вопрос Задавайте вопросы пользователю во время выполнения. ```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` и `list`, используют [ripgrep](https://github.com/BurntSushi/ripgrep). По умолчанию ripgrep учитывает шаблоны `.gitignore`, что означает, что файлы и каталоги, перечисленные в вашем `.gitignore`, будут исключены из поиска и списков. --- ### Игнорировать шаблоны Чтобы включить файлы, которые обычно игнорируются, создайте файл `.ignore` в корне вашего проекта. Этот файл может явно разрешать определенные пути. ```text title=".ignore" !node_modules/ !dist/ !build/ ``` Например, этот файл `.ignore` позволяет ripgrep выполнять поиск в каталогах `node_modules/`, `dist/` и `build/`, даже если они указаны в `.gitignore`.