Инструменты
Управление инструментами, которые может использовать LLM.
Инструменты позволяют LLM выполнять действия в вашей кодовой базе. OpenCode поставляется с набором встроенных инструментов, но вы можете расширить его с помощью пользовательских инструментов или MCP серверов.
По умолчанию все инструменты включены и не требуют разрешения для запуска. Вы можете управлять поведением инструментов через разрешения.
Настройка
Используйте поле permission для управления поведением инструментов. Вы можете разрешить, запретить или потребовать подтверждение для каждого инструмента.
{
"$schema": "https://opencode.ai/config.json",
"permission": {
"edit": "deny",
"bash": "ask",
"webfetch": "allow"
}
}Вы также можете использовать подстановочные знаки для управления несколькими инструментами одновременно. Например, чтобы потребовать подтверждение для всех инструментов MCP сервера:
{
"$schema": "https://opencode.ai/config.json",
"permission": {
"mymcp_*": "ask"
}
}Подробнее о настройке разрешений.
Встроенные
Вот все встроенные инструменты, доступные в OpenCode.
bash
Выполнение команд оболочки в окружении вашего проекта.
{
"$schema": "https://opencode.ai/config.json",
"permission": {
"bash": "allow"
}
}Этот инструмент позволяет LLM выполнять терминальные команды, такие как npm install, git status или любые другие команды оболочки.
edit
Изменение существующих файлов с помощью точной замены строк.
{
"$schema": "https://opencode.ai/config.json",
"permission": {
"edit": "allow"
}
}Этот инструмент выполняет точные правки файлов путём замены точных совпадений текста. Это основной способ, которым LLM изменяет код.
write
Создание новых файлов или перезапись существующих.
{
"$schema": "https://opencode.ai/config.json",
"permission": {
"edit": "allow"
}
}Используйте это, чтобы разрешить LLM создавать новые файлы. Существующие файлы будут перезаписаны.
Примечание: Инструмент
writeуправляется разрешениемedit, которое охватывает все модификации файлов (edit,write,patch,multiedit).
read
Чтение содержимого файлов из вашей кодовой базы.
{
"$schema": "https://opencode.ai/config.json",
"permission": {
"read": "allow"
}
}Этот инструмент читает файлы и возвращает их содержимое. Поддерживает чтение определённых диапазонов строк для больших файлов.
grep
Поиск содержимого файлов с помощью регулярных выражений.
{
"$schema": "https://opencode.ai/config.json",
"permission": {
"grep": "allow"
}
}Быстрый поиск содержимого по всей кодовой базе. Поддерживает полный синтаксис регулярных выражений и фильтрацию по шаблонам файлов.
glob
Поиск файлов по шаблону.
{
"$schema": "https://opencode.ai/config.json",
"permission": {
"glob": "allow"
}
}Поиск файлов с использованием glob-шаблонов, таких как **/*.js или src/**/*.ts. Возвращает совпадающие пути файлов, отсортированные по времени изменения.
list
Список файлов и директорий по указанному пути.
{
"$schema": "https://opencode.ai/config.json",
"permission": {
"list": "allow"
}
}Этот инструмент выводит содержимое директории. Принимает glob-шаблоны для фильтрации результатов.
lsp (экспериментальный)
Взаимодействие с настроенными LSP серверами для получения функций интеллектуального анализа кода, таких как определения, ссылки, информация при наведении и иерархия вызовов.
Примечание: Этот инструмент доступен только при
OPENCODE_EXPERIMENTAL_LSP_TOOL=true(илиOPENCODE_EXPERIMENTAL=true).
{
"$schema": "https://opencode.ai/config.json",
"permission": {
"lsp": "allow"
}
}Поддерживаемые операции включают goToDefinition, findReferences, hover, documentSymbol, workspaceSymbol, goToImplementation, prepareCallHierarchy, incomingCalls и outgoingCalls.
Для настройки доступных LSP серверов для вашего проекта см. LSP серверы.
patch
Применение патчей к файлам.
{
"$schema": "https://opencode.ai/config.json",
"permission": {
"edit": "allow"
}
}Этот инструмент применяет файлы патчей к вашей кодовой базе. Полезен для применения diff-ов и патчей из различных источников.
Примечание: Инструмент
patchуправляется разрешениемedit, которое охватывает все модификации файлов (edit,write,patch,multiedit).
skill
Загрузка навыка (файла SKILL.md) и возврат его содержимого в разговор.
{
"$schema": "https://opencode.ai/config.json",
"permission": {
"skill": "allow"
}
}todowrite
Управление списками задач во время сессий кодирования.
{
"$schema": "https://opencode.ai/config.json",
"permission": {
"todowrite": "allow"
}
}Создаёт и обновляет списки задач для отслеживания прогресса во время сложных операций. LLM использует это для организации многоэтапных задач.
Примечание: Этот инструмент отключён для субагентов по умолчанию, но вы можете включить его вручную. Подробнее
todoread
Чтение существующих списков задач.
{
"$schema": "https://opencode.ai/config.json",
"permission": {
"todoread": "allow"
}
}Читает текущее состояние списка задач. Используется LLM для отслеживания ожидающих или завершённых задач.
Примечание: Этот инструмент отключён для субагентов по умолчанию, но вы можете включить его вручную. Подробнее
webfetch
Получение веб-контента.
{
"$schema": "https://opencode.ai/config.json",
"permission": {
"webfetch": "allow"
}
}Позволяет LLM загружать и читать веб-страницы. Полезно для поиска документации или исследования онлайн-ресурсов.
websearch
Поиск информации в интернете.
Примечание: Этот инструмент доступен только при использовании провайдера OpenCode или когда переменная окружения
OPENCODE_ENABLE_EXAустановлена в любое истинное значение (например,trueили1).
Для включения при запуске OpenCode:
OPENCODE_ENABLE_EXA=1 opencode{
"$schema": "https://opencode.ai/config.json",
"permission": {
"websearch": "allow"
}
}Выполняет веб-поиск с помощью Exa AI для нахождения релевантной информации в интернете. Полезно для исследования тем, поиска текущих событий или сбора информации за пределами даты обучения.
API-ключ не требуется — инструмент подключается напрямую к размещённому MCP-сервису Exa AI без аутентификации.
Совет: Используйте
websearch, когда нужно найти информацию (обнаружение), иwebfetch, когда нужно получить контент по конкретному URL (извлечение).
question
Задавать пользователю вопросы во время выполнения.
{
"$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 в корне вашего проекта. Этот файл может явно разрешить определённые пути.
!node_modules/
!dist/
!build/Например, этот файл .ignore позволяет ripgrep искать в директориях node_modules/, dist/ и build/, даже если они указаны в .gitignore.