| title | Инструменты |
|---|---|
| description | Управляйте инструментами, которые может использовать LLM. |
Инструменты позволяют LLM выполнять действия в вашей кодовой базе. opencode поставляется с набором встроенных инструментов, но вы можете расширить его с помощью пользовательских инструментов или MCP-серверов.
По умолчанию все инструменты включены и не требуют разрешения для запуска. Вы можете контролировать поведение инструмента через permissions.
Используйте поле 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.
Выполняйте shell-команды в среде вашего проекта.
{
"$schema": "https://opencode.ai/config.json",
"permission": {
"bash": "allow"
}
}Этот инструмент позволяет LLM запускать команды терминала, такие как npm install, git status или любую другую shell-команду.
Измените существующие файлы, используя точную замену строк.
{
"$schema": "https://opencode.ai/config.json",
"permission": {
"edit": "allow"
}
}Этот инструмент выполняет точное редактирование файлов, заменяя точные совпадения текста. Это основной способ изменения кода в LLM.
Создавайте новые файлы или перезаписывайте существующие.
{
"$schema": "https://opencode.ai/config.json",
"permission": {
"edit": "allow"
}
}Используйте это, чтобы позволить LLM создавать новые файлы. Он перезапишет существующие файлы, если они уже существуют.
:::note
Инструмент write контролируется разрешением edit, которое распространяется на все модификации файлов (edit, write, patch).
:::
Прочитайте содержимое файла из вашей кодовой базы.
{
"$schema": "https://opencode.ai/config.json",
"permission": {
"read": "allow"
}
}Этот инструмент читает файлы и возвращает их содержимое. Он поддерживает чтение определенных диапазонов строк для больших файлов.
Поиск содержимого файла с помощью регулярных выражений.
{
"$schema": "https://opencode.ai/config.json",
"permission": {
"grep": "allow"
}
}Быстрый поиск контента по вашей кодовой базе. Поддерживает полный синтаксис регулярных выражений и фильтрацию шаблонов файлов.
Найдите файлы по шаблону.
{
"$schema": "https://opencode.ai/config.json",
"permission": {
"glob": "allow"
}
}Ищите файлы, используя шаблоны glob, например **/*.js или src/**/*.ts. Возвращает соответствующие пути к файлам, отсортированные по времени изменения.
Взаимодействуйте с настроенными серверами LSP, чтобы получить функции анализа кода, такие как определения, ссылки, информация о наведении и иерархия вызовов.
:::note
Этот инструмент доступен только при 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 Servers.
Применяйте патчи к файлам.
{
"$schema": "https://opencode.ai/config.json",
"permission": {
"edit": "allow"
}
}Этот инструмент применяет файлы исправлений к вашей кодовой базе. Полезно для применения различий и патчей из различных источников.
:::note
Инструмент patch контролируется разрешением edit, которое распространяется на все модификации файлов (edit, write, patch).
:::
Загрузите skill (файл SKILL.md) и верните его содержимое в диалог.
{
"$schema": "https://opencode.ai/config.json",
"permission": {
"skill": "allow"
}
}Управляйте списками дел во время сеансов кодирования.
{
"$schema": "https://opencode.ai/config.json",
"permission": {
"todowrite": "allow"
}
}Создает и обновляет списки задач для отслеживания прогресса во время сложных операций. LLM использует это для организации многоэтапных задач.
:::note По умолчанию этот инструмент отключен для субагентов, но вы можете включить его вручную. Подробнее :::
Получить веб-контент.
{
"$schema": "https://opencode.ai/config.json",
"permission": {
"webfetch": "allow"
}
}Позволяет LLM получать и читать веб-страницы. Полезно для поиска документации или исследования онлайн-ресурсов.
Найдите информацию в Интернете.
:::note
Этот инструмент доступен только при использовании поставщика 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, без аутентификации.
:::tip
Используйте websearch, когда вам нужно найти информацию (обнаружение), и webfetch, когда вам нужно получить контент с определенного URL-адреса (извлечение).
:::
Задавайте вопросы пользователю во время выполнения.
{
"$schema": "https://opencode.ai/config.json",
"permission": {
"question": "allow"
}
}Этот инструмент позволяет LLM задавать вопросы пользователю во время выполнения задачи. Это полезно для:
- Сбор предпочтений или требований пользователей
- Уточнение двусмысленных инструкций
- Получение решений по вариантам реализации
- Предлагая выбор, в каком направлении двигаться
Каждый вопрос включает заголовок, текст вопроса и список вариантов. Пользователи могут выбрать один из предложенных вариантов или ввести собственный ответ. Если вопросов несколько, пользователи могут перемещаться между ними, прежде чем отправлять все ответы.
Пользовательские инструменты позволяют вам определять собственные функции, которые может вызывать LLM. Они определены в вашем файле конфигурации и могут выполнять произвольный код.
Подробнее о создании собственных инструментов.
Серверы MCP (Model Context Protocol) позволяют интегрировать внешние инструменты и сервисы. Сюда входит доступ к базе данных, интеграция API и сторонние сервисы.
Подробнее о настройке серверов MCP.
Внутренне такие инструменты, как grep и glob, используют ripgrep. По умолчанию ripgrep учитывает шаблоны .gitignore, что означает, что файлы и каталоги, перечисленные в вашем .gitignore, будут исключены из поиска и списков.
Чтобы включить файлы, которые обычно игнорируются, создайте файл .ignore в корне вашего проекта. Этот файл может явно разрешать определенные пути.
!node_modules/
!dist/
!build/
Например, этот файл .ignore позволяет ripgrep выполнять поиск в каталогах node_modules/, dist/ и build/, даже если они указаны в .gitignore.