Перейти к содержимому

Инструменты

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

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

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


Настроить

Используйте поле 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 создавать новые файлы. Он перезапишет существующие файлы, если они уже существуют.


read

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

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

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


grep

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

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

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


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.json
{
"$schema": "https://opencode.ai/config.json",
"permission": {
"lsp": "allow"
}
}

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

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


patch

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

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

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


skill

Загрузите 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 получать и читать веб-страницы. Полезно для поиска документации или исследования онлайн-ресурсов.


websearch

Найдите информацию в Интернете.

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

Выполняет поиск в Интернете с помощью Exa AI для поиска соответствующей информации в Интернете. Полезно для исследования тем, поиска текущих событий или сбора информации, выходящей за рамки данных обучения.

Ключ API не требуется — инструмент подключается напрямую к сервису MCP, размещенному на Exa AI, без аутентификации.


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. По умолчанию ripgrep учитывает шаблоны .gitignore, что означает, что файлы и каталоги, перечисленные в вашем .gitignore, будут исключены из поиска и списков.


Игнорировать шаблоны

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

.ignore
!node_modules/
!dist/
!build/

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