ollama-code

Справочник инструментов Ollama Code

Полная справочная документация по всем доступным инструментам в Ollama Code.

Содержание


Псевдонимы инструментов

Ollama Code поддерживает короткие псевдонимы для частых инструментов. Вы можете использовать их вместо полных имён:

Псевдоним Каноническое имя
run, shell, exec, cmd run_shell_command
read read_file
readmany, read_all, cat read_many_files
write, create write_file
edit, replace edit
grep, search, find grep_search
glob, files glob
ls, list, dir list_directory
todo, todos todo_write
memory, save save_memory
agent, subagent task
websearch, web web_search
webfetch, fetch, url web_fetch
py, python, pip, pytest python_dev
node, npm, yarn, pnpm, bun nodejs_dev
go, golang golang_dev

Файловые операции

read_file

Читает и возвращает содержимое указанного файла. Поддерживает текстовые файлы, изображения (PNG, JPG, GIF, WEBP, SVG, BMP) и PDF-файлы.

Параметры:

Имя Тип Обязательный Описание
absolute_path string Да Абсолютный путь к файлу для чтения
offset number Нет Номер строки (с 0) для начала чтения (для пагинации)
limit number Нет Максимальное количество строк для чтения

Пример:

{
  "absolute_path": "/home/user/project/src/index.ts"
}

Для больших файлов:

{
  "absolute_path": "/home/user/project/large-file.log",
  "offset": 100,
  "limit": 50
}

read_many_files

Читает несколько файлов за одну операцию. Эффективнее нескольких вызовов read_file для пакетных операций.

Параметры:

Имя Тип Обязательный Описание
paths string[] Да Массив абсолютных путей к файлам
offset number Нет Смещение строк
limit number Нет Максимальное количество строк на файл

write_file

Записывает содержимое в файл, создавая его при отсутствии или перезаписывая при наличии. Автоматически создаёт родительские директории.

Параметры:

Имя Тип Обязательный Описание
file_path string Да Абсолютный путь к файлу для записи
content string Да Содержимое для записи в файл

Пример:

{
  "file_path": "/home/user/project/src/utils.ts",
  "content": "export function greet(name: string): string {\n  return `Привет, ${name}!`;\n}"
}

edit

Выполняет поиск и замену в существующих файлах. Требует точного совпадения строк, включая пробелы и отступы.

Параметры:

Имя Тип Обязательный Описание
file_path string Да Абсолютный путь к файлу для редактирования
old_string string Да Точный текст для замены (должен совпадать полностью)
new_string string Да Текст для замены
replace_all boolean Нет Заменить все вхождения (по умолчанию: false)

Важные замечания:

Пример:

{
  "file_path": "/home/user/project/src/app.ts",
  "old_string": "function oldName() {\n  return 'old';\n}",
  "new_string": "function newName() {\n  return 'new';\n}"
}

Поиск и навигация

glob

Быстрый поиск файлов по шаблону. Работает с кодовой базой любого размера. Возвращает пути к файлам, отсортированные по времени изменения.

Параметры:

Имя Тип Обязательный Описание
pattern string Да Glob-шаблон (напр., **/*.ts, src/**/*.js)
path string Нет Директория для поиска (по умолчанию - корень проекта)

Примеры:

// Найти все TypeScript файлы
{ "pattern": "**/*.ts" }

// Найти JavaScript файлы в директории src
{ "pattern": "src/**/*.js" }

// Найти все JSON файлы
{ "pattern": "*.json", "path": "/home/user/project/config" }

Поиск паттернов в содержимом файлов с использованием регулярных выражений. По умолчанию регистронезависимый.

Параметры:

Имя Тип Обязательный Описание
pattern string Да Регулярное выражение для поиска
path string Нет Директория или файл для поиска
glob string Нет Glob-шаблон для фильтрации файлов
limit number Нет Максимальное количество совпадающих строк

Примеры:

// Найти все объявления функций
{ "pattern": "function\\s+\\w+" }

// Найти TODO в TypeScript файлах
{ "pattern": "TODO|FIXME", "glob": "*.ts" }

// Найти импорты в конкретной директории
{ "pattern": "import.*from", "path": "src/components" }

list_directory

Выводит список файлов и поддиректорий в указанной директории.

Параметры:

Имя Тип Обязательный Описание
path string Да Абсолютный путь к директории
ignore string[] Нет Glob-шаблоны для игнорирования
file_filtering_options object Нет Опции для gitignore/ollama-codeignore

Пример:

{
  "path": "/home/user/project/src",
  "ignore": ["node_modules", "*.test.ts"]
}

Инструменты разработки

python_dev

Комплексный инструмент для разработки на Python - управление проектами, виртуальными окружениями и выполнение Python-команд.

Параметры:

Имя Тип Обязательный Описание
action string Да Действие для выполнения (см. ниже)
script string Нет Путь к Python-скрипту для run
args string[] Нет Дополнительные аргументы
packages string[] Нет Пакеты для операций pip
directory string Нет Рабочая директория
venv string Нет Путь к виртуальному окружению
python_path string Нет Путь к Python-интерпретатору
timeout number Нет Таймаут в миллисекундах (макс. 600000)
test_pattern string Нет Шаблон тестов для pytest
lint_config string Нет Путь к конфигу линтера
requirements_file string Нет Путь к requirements.txt
command string Нет Пользовательская команда

Доступные действия:

Действие Описание
run Выполнить Python-скрипт
test Запустить pytest тесты
lint Запустить pylint анализ кода
format Запустить black форматирование
venv_create Создать виртуальное окружение
venv_activate Получить команду активации venv
pip_install Установить пакеты через pip
pip_list Список установленных пакетов
pip_freeze Сгенерировать requirements.txt
mypy Запустить mypy проверку типов
custom Выполнить пользовательскую команду

Примеры:

// Запустить Python-скрипт
{
  "action": "run",
  "script": "main.py",
  "args": ["--verbose", "input.txt"]
}

// Запустить pytest с паттерном
{
  "action": "test",
  "test_pattern": "tests/unit/",
  "args": ["-k", "test_auth"]
}

// Создать виртуальное окружение
{
  "action": "venv_create",
  "venv": ".venv"
}

// Установить пакеты
{
  "action": "pip_install",
  "packages": ["requests", "numpy"],
  "venv": ".venv"
}

nodejs_dev

Инструмент для разработки на Node.js/JavaScript с поддержкой npm, yarn, pnpm и bun. Автоопределение менеджера пакетов по lock-файлам.

Параметры:

Имя Тип Обязательный Описание
action string Да Действие для выполнения
package_manager string Нет Менеджер пакетов (npm, yarn, pnpm, bun)
script string Нет Путь к скрипту для run
args string[] Нет Дополнительные аргументы
packages string[] Нет Пакеты для add/remove
directory string Нет Рабочая директория
dev boolean Нет Добавить как dev-зависимость
global boolean Нет Установить глобально
timeout number Нет Таймаут в миллисекундах
script_name string Нет Имя скрипта из package.json
command string Нет Пользовательская команда
background boolean Нет Запустить в фоновом режиме

Доступные действия:

Действие Описание
run Выполнить Node.js скрипт
install Установить зависимости
add Добавить пакеты
remove Удалить пакеты
update Обновить пакеты
run_script Запустить скрипт из package.json
test Запустить тесты
build Запустить сборку
dev Запустить dev-сервер
lint Запустить линтер
exec Выполнить npx/yarn dlx команду
info Показать информацию о пакете
list Список установленных пакетов
outdated Проверить устаревшие пакеты
audit Проверка безопасности
clean Удалить node_modules и lock-файлы
init Инициализировать новый проект
custom Выполнить пользовательскую команду

Примеры:

// Установить зависимости
{ "action": "install" }

// Добавить пакеты
{
  "action": "add",
  "packages": ["express", "lodash"],
  "dev": false
}

// Запустить dev-сервер в фоне
{
  "action": "dev",
  "background": true,
  "package_manager": "bun"
}

// Запустить пользовательскую npx команду
{
  "action": "exec",
  "command": "create-next-app",
  "args": ["my-app", "--typescript"]
}

golang_dev

Инструмент для разработки на Go - управление проектами, модулями и выполнение Go-команд.

Параметры:

Имя Тип Обязательный Описание
action string Да Действие для выполнения
file string Нет Путь к Go-файлу
args string[] Нет Дополнительные аргументы
package string Нет Путь к пакету
packages string[] Нет Пакеты для get/install
directory string Нет Рабочая директория
output string Нет Имя выходного бинарника для build
timeout number Нет Таймаут в миллисекундах
test_pattern string Нет Шаблон имени теста
bench_pattern string Нет Шаблон бенчмарка
cover_profile string Нет Файл вывода покрытия
race boolean Нет Включить детектор гонок
verbose boolean Нет Подробный вывод
background boolean Нет Запустить в фоне
module_name string Нет Имя модуля для go mod init
command string Нет Пользовательская команда

Доступные действия:

Действие Описание
run Запустить Go-файл или пакет
build Собрать Go-программу
test Запустить тесты
test_cover Запустить тесты с покрытием
test_bench Запустить бенчмарки
fmt Форматировать Go-код
vet Запустить go vet
lint Запустить golangci-lint
mod_init Инициализировать go.mod
mod_tidy Упорядочить зависимости
mod_download Скачать зависимости
mod_verify Верифицировать зависимости
mod_graph Показать граф зависимостей
get Добавить зависимость
install Установить Go-утилиту
list Список пакетов
doc Показать документацию
env Показать Go-окружение
version Показать версию Go
clean Очистить кэш сборки
generate Запустить go generate
custom Выполнить пользовательскую команду

Примеры:

// Запустить Go-файл
{
  "action": "run",
  "file": "main.go",
  "args": ["--config", "config.yaml"]
}

// Запустить тесты с детектором гонок
{
  "action": "test",
  "race": true,
  "verbose": true,
  "test_pattern": "TestUser"
}

// Собрать с именем выхода
{
  "action": "build",
  "output": "myapp",
  "package": "./cmd/server"
}

// Инициализировать модуль
{
  "action": "mod_init",
  "module_name": "github.com/user/myproject"
}

run_shell_command

Выполняет команды в терминале. Поддерживает выполнение как на переднем плане, так и в фоновом режиме.

Параметры:

Имя Тип Обязательный Описание
command string Да Команда для выполнения
description string Нет Краткое описание команды
directory string Нет Рабочая директория
timeout number Нет Таймаут в миллисекундах (макс. 600000, по умолчанию 120000)
is_background boolean Нет Запустить в фоновом режиме

Примеры:

// Выполнить git команды
{
  "command": "git status && git diff",
  "description": "Проверить статус и изменения git"
}

// Запустить dev-сервер в фоне
{
  "command": "npm run dev",
  "description": "Запустить сервер разработки",
  "is_background": true
}

Веб и сеть

Ищет информацию в интернете. Требует настройки провайдера поиска (Tavily или Google).

Параметры:

Имя Тип Обязательный Описание
query string Да Поисковый запрос
provider string Нет Провайдер (tavily, google)

Пример:

{
  "query": "Next.js 15 app router лучшие практики 2024"
}

web_fetch

Получает содержимое по URL и обрабатывает его с помощью ИИ для извлечения релевантной информации.

Параметры:

Имя Тип Обязательный Описание
url string Да URL для получения содержимого
prompt string Да Что извлечь или обработать из содержимого

Пример:

{
  "url": "https://react.dev/learn",
  "prompt": "Извлечь основные концепции и ключевые выводы из этой страницы документации React"
}

Управление задачами

todo_write

Создаёт и управляет структурированным списком задач для отслеживания прогресса.

Параметры:

Имя Тип Обязательный Описание
todos array Да Массив элементов задач

Структура элемента задачи:

Поле Тип Описание
id string Уникальный идентификатор
content string Описание задачи
status string Одно из: pending, in_progress, completed

Пример:

{
  "todos": [
    { "id": "1", "content": "Создать API endpoints", "status": "completed" },
    { "id": "2", "content": "Добавить аутентификацию", "status": "in_progress" },
    { "id": "3", "content": "Написать тесты", "status": "pending" }
  ]
}

task

Делегирует сложные многошаговые задачи специализированным субагентам.

Параметры:

Имя Тип Обязательный Описание
subagent_type string Да Тип субагента
description string Да Краткое описание (3-5 слов)
prompt string Да Подробные инструкции по задаче

Пример:

{
  "subagent_type": "general-purpose",
  "description": "Исследование API",
  "prompt": "Исследовать лучшие практики дизайна REST API и предоставить сводку ключевых принципов"
}

Память и знания

save_memory

Сохраняет информацию в долгосрочную память для использования в будущих сессиях.

Параметры:

Имя Тип Обязательный Описание
fact string Да Факт или информация для запоминания
scope string Нет global (все проекты) или project (текущий проект)

Пример:

{
  "fact": "Пользователь предпочитает TypeScript вместо JavaScript для новых проектов",
  "scope": "global"
}

skill

Выполняет специализированные навыки для конкретных задач.

Параметры:

Имя Тип Обязательный Описание
command string Да Команда навыка для выполнения

Пример:

{
  "command": "pdf"
}

Другие инструменты

lsp

Интеграция с Language Server Protocol для функций интеллектуального анализа кода.

Параметры:

Имя Тип Обязательный Описание
action string Да Действие LSP для выполнения
file_path string Да Путь к файлу
line number Нет Номер строки
character number Нет Позиция символа

exit_plan_mode

Выходит из режима планирования и представляет план пользователю для утверждения.

Параметры:

Имя Тип Обязательный Описание
plan string Да План для представления на утверждение

Пример:

{
  "plan": "1. Создать схему базы данных\n2. Реализовать API endpoints\n3. Добавить фронтенд компоненты\n4. Написать тесты"
}

Обработка ошибок

Все инструменты возвращают согласованную структуру ошибки при возникновении проблем:

{
  "llmContent": "Подробное сообщение об ошибке для LLM",
  "returnDisplay": "Дружелюбное сообщение об ошибке для пользователя",
  "error": {
    "message": "Детали ошибки",
    "type": "код_типа_ошибки"
  }
}

Типичные типы ошибок:

Тип ошибки Описание
file_not_found Запрошенный файл не существует
permission_denied Недостаточно прав
invalid_tool_params Неверные или отсутствующие параметры
execution_failed Ошибка выполнения инструмента
timeout Превышено время ожидания

Лучшие практики

Файловые операции

  1. Всегда используйте абсолютные пути
  2. Читайте файлы перед редактированием для понимания контекста
  3. Включайте достаточный контекст в old_string для редактирования
  4. Используйте glob или grep_search перед чтением для поиска файлов

Поиск и навигация

  1. Используйте glob для поиска файлов по шаблону имени
  2. Используйте grep_search для поиска содержимого файлов
  3. Комбинируйте инструменты для эффективного исследования
  4. Используйте glob-фильтры для сужения области поиска

Инструменты разработки

  1. Используйте специализированные инструменты (python_dev, nodejs_dev, golang_dev) вместо сырых shell-команд
  2. Устанавливайте background: true для длительных процессов
  3. Настраивайте соответствующие таймауты для операций сборки

Управление задачами

  1. Создавайте списки задач для многошаговых задач
  2. Обновляйте статус в реальном времени
  3. Отмечайте задачи завершёнными сразу после выполнения
  4. Имейте только одну задачу со статусом in_progress одновременно

Конфигурация

Инструменты можно включать/выключать в settings.json:

{
  "coreTools": ["read_file", "edit", "run_shell_command"],
  "excludeTools": ["web_search"]
}