Инструменты OpenCode
Основные возможности OpenCode исходят не только от самой большой модели, но и отинструментов, которые могут быть вызваны。
Суть инструментов: превращение LLM из умеющего говорить в умеющего делать.
Инструменты = способность OpenCode к выполнению, а разрешения = границы безопасности.
1. Что такое инструменты
Инструменты — это интерфейсы возможностей для LLM выполнять операции в проекте, например:
- Чтение кода
- Изменение файлов
- Выполнение команд
- Поиск кода
- Доступ к сети
Без инструментов: может только генерировать код
С инструментами: можетнапрямую манипулировать проектом
2. Управление разрешениями инструментов (самое важное)
По умолчанию:
- Все инструменты включены
- И могут выполняться без подтверждения
В производственных средах необходимо настроить разрешения!
1. Базовая настройка разрешений
{
"$schema": "https://opencode.ai/config.json",
"permission": {
"edit": "deny",
"bash": "ask",
"webfetch": "allow"
}
}
| Значение разрешения | Описание |
|---|---|
| allow | Разрешить прямое выполнение |
| deny | Полностью запрещено |
| ask | Требуется ручное подтверждение перед выполнением |
2. Управление подстановочными знаками
Можно управлять инструментами пакетно:
{
"permission": {
"mymcp_*": "ask"
}
}
Все инструменты из MCP требуют одобрения
3. Объяснение встроенных инструментов
OpenCode поставляется с полным набором инструментов инженерного уровня:
1. bash (выполнение команд)
{
"permission": {
"bash": "allow"
}
}
Назначение:
- Выполнять shell-команды
- Например, npm install, git status
Риск:Высокий (рекомендуется установить в ask)
2. edit (основной инструмент)
{
"permission": {
"edit": "allow"
}
}
Назначение:
- Изменение существующих файлов
- На основе точной замены текста
Примечание:Это ключевая возможность ИИ изменять код
3. write (создание файлов)
Назначение:
- Создание новых файлов
- Перезапись существующих файлов
Примечание:
write контролируется разрешением edit
4. read (Чтение файла)
{
"permission": {
"read": "allow"
}
}
Назначение:
- Чтение файлов кода
- Поддерживает чтение построчно
Риск:Низкий (рекомендуется всегда разрешать)
5. grep (Поиск по содержимому)
{
"permission": {
"grep": "allow"
}
}
Назначение:
- Поиск по коду с помощью регулярных выражений
6. glob (Сопоставление файлов)
Назначение:
- Поиск путей к файлам (например, src/**/*.ts)
7. list (Просмотр каталогов)
Назначение:
- Вывод структуры каталогов
8. patch (Применение патча)
Назначение:
- Применить diff-патчи
Примечание:Управляется разрешением на редактирование
9. lsp (Экспериментально)
Назначение:
- Интеллектуальный анализ кода (переход к определению, поиск ссылок)
Как включить:
OPENCODE_EXPERIMENTAL_LSP_TOOL=true
10. skill (Загрузка навыков)
Назначение:
- Загрузить SKILL.md
- Улучшить поведение AI
11. todowrite (Управление задачами)
Назначение:
- Ведение списков задач
- Отслеживание сложных рабочих процессов
12. webfetch (Чтение веб-страниц)
Назначение:
- Получить содержимое по указанному URL
13. websearch (Онлайн-поиск)
Как включить:
OPENCODE_ENABLE_EXA=1 opencode
Назначение:
- Поиск информации в интернете
Разница:
- websearch: поиск информации (обнаружение)
- webfetch: чтение содержимого (получение)
14. question (Интерактивный опрос)
Назначение:
- Задавать вопросы пользователю
- Сбор требований
Подходит для:
- Неясные требования
- Когда требуются решения пользователя
4. Пользовательские инструменты
Вы можете определять собственные инструменты, чтобы ИИ выполнял пользовательскую логику.
Например:
- Вызов внутренних API
- Работа с базами данных
- Выполнение бизнес-логики
Суть:Позволить LLM вызывать функции
5. Серверы MCP (расширенные возможности)
MCP (Model Context Protocol) позволяет подключать внешние системы:
- Базы данных
- Сторонние API
- Внутренние сервисы
Это эквивалентно подключению «внешних возможностей» к ИИ
6. Базовый механизм (важно)
OpenCode использует ripgrep в качестве поискового движка:
- Учитывает .gitignore
- По умолчанию игнорирует такие каталоги, как node_modules
Как переопределить правила игнорирования
Создайте файл:
.ignore
Пример:
!node_modules/ !dist/ !build/
Принудительно включить эти каталоги
7. Лучшие практики (настоятельно рекомендуется)
- read / grep / glob → разрешить
- edit → спрашивать (этап разработки)
- bash → спрашивать (производственная среда)
- webfetch → разрешить
Основные принципы:
- Чтение может быть открытым
- Изменения должны контролироваться
- Будьте осторожны при выполнении команд