Инструменты
Управляйте инструментами, которые может использовать 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
Выполняйте shell-команды в среде вашего проекта.
{
"$schema": "https://opencode.ai/config.json",
"permission": {
"bash": "allow"
}
}Этот инструмент позволяет LLM выполнять терминальные команды, такие как npm install, git status или любые другие shell-команды.
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"
}
}Быстрый поиск содержимого по всей вашей кодовой базе. Поддерживает полный синтаксис regex и фильтрацию по шаблонам файлов.
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 получать и читать веб-страницы. Полезен для поиска документации или исследования онлайн-ресурсов.
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.