telegram-cli-bot/FILE_SYSTEM_TOOL.md

5.0 KiB
Raw Permalink Blame History

File System Tool - Документация

📋 Описание

Инструмент для работы с файловой системой Linux. Позволяет AI-агенту (Qwen Code или GigaChat) выполнять операции с файлами и директориями.

🎯 Доступные операции

Операция Описание Параметры
read Чтение файла path, limit (макс. строк)
write Запись в файл path, content, append
copy Копирование файла/директории source, destination
move Перемещение/переименование source, destination
delete Удаление файла/директории path, recursive
mkdir Создание директории path, parents
list Список файлов в директории path, show_hidden
info Информация о файле path
search Поиск файлов по паттерну path, pattern, max_results
shell Выполнение shell-команды command, timeout

🔒 Безопасность

Инструмент имеет систему проверки путей:

Разрешённые пути (можно читать/записывать):

  • Домашняя директория пользователя (/home/mirivlad)
  • /tmp
  • /var/tmp

Запрещённые пути (только чтение с ограничениями):

  • /etc, /usr, /bin, /sbin
  • /boot, /dev, /proc, /sys
  • Корень / (кроме разрешённых поддиректорий)

📝 Примеры использования

Через AI-агента (автоматически)

Пользователь: "прочитай файл /home/mirivlad/test.txt"
AI-агент → file_system_tool(operation='read', path='/home/mirivlad/test.txt')

Прямой вызов

from bot.tools.file_system_tool import FileSystemTool

tool = FileSystemTool()

# Чтение файла
result = await tool.execute(operation='read', path='/path/to/file.txt')

# Запись файла
result = await tool.execute(
    operation='write',
    path='/path/to/file.txt',
    content='Содержимое файла'
)

# Копирование
result = await tool.execute(
    operation='copy',
    source='/source/file.txt',
    destination='/dest/file.txt'
)

# Список директории
result = await tool.execute(
    operation='list',
    path='/home/mirivlad'
)

🤖 Интеграция с AI-провайдерами

GigaChat

GigaChat использует текстовый формат для вызова инструментов:

```tool
{"name": "file_system_tool", "arguments": {"operation": "read", "path": "/tmp/test.txt"}}
```

Qwen Code

Qwen Code поддерживает нативные tool calls через stream-json.

📊 Триггеры для активации

AI-агент автоматически активирует file_system_tool при обнаружении триггеров:

Прямые триггеры:

  • "прочитай файл", "покажи файл", "открой файл"
  • "создай файл", "запиши в файл", "сохрани"
  • "скопируй файл", "перемести файл", "удали файл"
  • "создай директорию", "создай папку"
  • "список файлов", "что в папке"
  • "найди файл", "поиск файла"

Команды Unix:

  • cat , ls , mkdir , cp , mv , rm , touch

⚠️ Ограничения

  1. Безопасность: Нельзя записывать/удалять в системных директориях
  2. Размер файлов: При чтении ограничено 100 строками (настраивается через limit)
  3. Shell команды: Разрешены только безопасные команды (ls, cat, cp, mv, rm, mkdir, find, grep, etc.)
  4. Таймаут: Для shell команд таймаут 30 секунд по умолчанию

🔄 История операций

Инструмент сохраняет историю последних 100 операций для отладки:

tool._operation_history  # Список последних операций

📁 Расположение

bot/tools/file_system_tool.py

🔧 Добавление в реестр

Инструмент автоматически регистрируется при импорте:

from bot.tools import file_system_tool  # Авто-регистрация

Версия: 0.8.0
Совместимость: Telegram CLI Bot 0.8.0+
AI-провайдеры: Qwen Code, GigaChat