Инструменты
Инструменты позволяют 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 создавать новые файлы. Он перезапишет существующие файлы, если они уже существуют.
Прочитайте содержимое файла из вашей кодовой базы.
{
"$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, чтобы получить функции анализа кода, такие как определения, ссылки, информация о наведении и иерархия вызовов.
{
"$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"
}
}Этот инструмент применяет файлы исправлений к вашей кодовой базе. Полезно для применения различий и патчей из различных источников.
Загрузите skill (файл SKILL.md) и верните его содержимое в диалог.
{
"$schema": "https://opencode.ai/config.json",
"permission": {
"skill": "allow"
}
}Получить веб-контент.
{
"$schema": "https://opencode.ai/config.json",
"permission": {
"webfetch": "allow"
}
}Позволяет LLM получать и читать веб-страницы. Полезно для поиска документации или исследования онлайн-ресурсов.
Найдите информацию в Интернете.
{
"$schema": "https://opencode.ai/config.json",
"permission": {
"websearch": "allow"
}
}Выполняет поиск в Интернете с помощью Exa AI для поиска соответствующей информации в Интернете. Полезно для исследования тем, поиска текущих событий или сбора информации, выходящей за рамки данных обучения.
Ключ API не требуется — инструмент подключается напрямую к сервису MCP, размещенному на Exa AI, без аутентификации.
Задавайте вопросы пользователю во время выполнения.
{
"$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.