Русский
Документация
Инструменты

Инструменты

Управляйте инструментами, которые может использовать LLM.

Инструменты позволяют LLM выполнять действия в вашей кодовой базе. OpenCode поставляется с набором встроенных инструментов, но вы можете расширить его с помощью пользовательских инструментов или MCP-серверов.

По умолчанию все инструменты включены и не требуют разрешения для запуска. Вы можете контролировать поведение инструментов через разрешения.


Конфигурация

Используйте поле permission для управления поведением инструментов. Вы можете разрешить, запретить или требовать одобрения для каждого инструмента.

opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "permission": {
    "edit": "deny",
    "bash": "ask",
    "webfetch": "allow"
  }
}

Вы также можете использовать подстановочные знаки для управления несколькими инструментами одновременно. Например, чтобы требовать одобрения для всех инструментов MCP-сервера:

opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "permission": {
    "mymcp_*": "ask"
  }
}

Узнайте больше о настройке разрешений.


Встроенные инструменты

Вот все встроенные инструменты, доступные в OpenCode.


bash

Выполняйте shell-команды в среде вашего проекта.

opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "permission": {
    "bash": "allow"
  }
}

Этот инструмент позволяет LLM выполнять терминальные команды, такие как npm install, git status или любые другие shell-команды.


edit

Изменяйте существующие файлы с помощью точных замен строк.

opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "permission": {
    "edit": "allow"
  }
}

Этот инструмент выполняет точные правки файлов, заменяя точные совпадения текста. Это основной способ, которым LLM изменяет код.


write

Создавайте новые файлы или перезаписывайте существующие.

opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "permission": {
    "edit": "allow"
  }
}

Используйте это, чтобы позволить LLM создавать новые файлы. Он перезапишет существующие файлы, если они уже существуют.

Примечание: Инструмент write контролируется разрешением edit, которое охватывает все модификации файлов (edit, write, patch, multiedit).


read

Читайте содержимое файлов из вашей кодовой базы.

opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "permission": {
    "read": "allow"
  }
}

Этот инструмент читает файлы и возвращает их содержимое. Поддерживает чтение определенных диапазонов строк для больших файлов.


grep

Ищите содержимое файлов с помощью регулярных выражений.

opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "permission": {
    "grep": "allow"
  }
}

Быстрый поиск содержимого по всей вашей кодовой базе. Поддерживает полный синтаксис regex и фильтрацию по шаблонам файлов.


glob

Находите файлы по шаблонам.

opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "permission": {
    "glob": "allow"
  }
}

Ищите файлы с помощью glob-шаблонов, таких как **/*.js или src/**/*.ts. Возвращает совпадающие пути файлов, отсортированные по времени изменения.


list

Выводите список файлов и директорий по указанному пути.

opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "permission": {
    "list": "allow"
  }
}

Этот инструмент выводит содержимое директорий. Принимает glob-шаблоны для фильтрации результатов.


lsp (экспериментальный)

Взаимодействуйте с настроенными LSP-серверами для получения функций интеллекта кода, таких как определения, ссылки, информация при наведении и иерархия вызовов.

Примечание: Этот инструмент доступен только при OPENCODE_EXPERIMENTAL_LSP_TOOL=true (или OPENCODE_EXPERIMENTAL=true).

opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "permission": {
    "lsp": "allow"
  }
}

Поддерживаемые операции включают goToDefinition, findReferences, hover, documentSymbol, workspaceSymbol, goToImplementation, prepareCallHierarchy, incomingCalls и outgoingCalls.

Чтобы настроить, какие LSP-серверы доступны для вашего проекта, см. LSP-серверы.


patch

Применяйте патчи к файлам.

opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "permission": {
    "edit": "allow"
  }
}

Этот инструмент применяет файлы патчей к вашей кодовой базе. Полезен для применения diff и патчей из различных источников.

Примечание: Инструмент patch контролируется разрешением edit, которое охватывает все модификации файлов (edit, write, patch, multiedit).


skill

Загружайте навык (файл SKILL.md) и возвращайте его содержимое в разговоре.

opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "permission": {
    "skill": "allow"
  }
}

todowrite

Управляйте списками задач во время сеансов кодирования.

opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "permission": {
    "todowrite": "allow"
  }
}

Создает и обновляет списки задач для отслеживания прогресса во время сложных операций. LLM использует это для организации многоэтапных задач.

Примечание: Этот инструмент отключен для субагентов по умолчанию, но вы можете включить его вручную. Узнайте больше


todoread

Читайте существующие списки задач.

opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "permission": {
    "todoread": "allow"
  }
}

Читает текущее состояние списка задач. Используется LLM для отслеживания того, какие задачи ожидают выполнения или завершены.

Примечание: Этот инструмент отключен для субагентов по умолчанию, но вы можете включить его вручную. Узнайте больше


webfetch

Получайте веб-контент.

opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "permission": {
    "webfetch": "allow"
  }
}

Позволяет LLM получать и читать веб-страницы. Полезен для поиска документации или исследования онлайн-ресурсов.


question

Задавайте вопросы пользователю во время выполнения.

opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "permission": {
    "question": "allow"
  }
}

Этот инструмент позволяет LLM задавать вопросы пользователю во время выполнения задачи. Полезен для:

  • Сбора предпочтений или требований пользователя
  • Уточнения неоднозначных инструкций
  • Получения решений по вариантам реализации
  • Предложения выбора направления

Каждый вопрос включает заголовок, текст вопроса и список вариантов. Пользователи могут выбрать из предложенных вариантов или ввести собственный ответ. При наличии нескольких вопросов пользователи могут перемещаться между ними перед отправкой всех ответов.


Пользовательские инструменты

Пользовательские инструменты позволяют определять собственные функции, которые может вызывать LLM. Они определяются в вашем файле конфигурации и могут выполнять произвольный код.

Узнайте больше о создании пользовательских инструментов.


MCP-серверы

MCP (Model Context Protocol) серверы позволяют интегрировать внешние инструменты и сервисы. Это включает доступ к базам данных, интеграции API и сторонние сервисы.

Узнайте больше о настройке MCP-серверов.


Внутреннее устройство

Внутренне инструменты, такие как grep, glob и list, используют ripgrep (opens in a new tab) под капотом. По умолчанию ripgrep учитывает шаблоны .gitignore, что означает, что файлы и директории, перечисленные в вашем .gitignore, будут исключены из поиска и списков.


Шаблоны игнорирования

Чтобы включить файлы, которые обычно игнорируются, создайте файл .ignore в корне вашего проекта. Этот файл может явно разрешить определенные пути.

.ignore
!node_modules/
!dist/
!build/

Например, этот файл .ignore позволяет ripgrep искать внутри директорий node_modules/, dist/ и build/, даже если они перечислены в .gitignore.