Использование Hermes в качестве библиотеки Python
Использование Hermes в качестве библиотеки Python — простое для понимания руководство на основе официальной документации
Думайте о Hermes как о дружелюбном роботе-помощнике, которым можно управлять с помощью обычного Python-кода — не нужно учить новый язык или кликать по навороченной панели управления.
Что значит «использовать как библиотеку»?
Обычно вы общаетесь с Hermes через окно чата. Но когда вы используете его как Python-библиотеку, вы пишете Python-скрипты, которые говорят Hermes, что делать. Это идеально подходит для автоматизации повторяющихся задач, таких как исправление кода, запуск тестов или очистка файлов.
Ваши первые команды: поиск и исправление
Допустим, у вас есть большой проект со старыми вызовами API, которые нужно обновить. Вместо того чтобы открывать каждый файл вручную, вы можете написать скрипт, который найдет и исправит их все:
# Find all Python files using deprecated API and fix them
matches = search_files("old_api_call", path="src/", file_glob="*.py")
fixed = 0
for match in matches.get("matches", []):
result = patch(
path=match["path"],
old_string="old_api_call(",
new_string="new_api_call(",
replace_all=True
)
if "error" not in str(result):
fixed += 1
print(f"Fixed {fixed} files out of {len(matches.get('matches', []))} matches")
Вот что происходит: Hermes ищет все файлы .py в src/, находит old_api_call( и заменяет его на new_api_call(. Вы только что сэкономили себе часы ручной работы.
Запуск тестов и получение отчета
Хотите узнать, работает ли ваш код на самом деле? Вы можете запустить свой набор тестов и получить понятную сводку:
from hermes_tools import terminal, read_file
import json
# Run tests, parse results, and report
result = terminal("cd /project && python -m pytest --tb=short -q 2>&1", timeout=120)
output = result.get("output", "")
# Parse test output
passed = output.count(" passed")
failed = output.count(" failed")
errors = output.count(" error")
report = {
"passed": passed,
"failed": failed,
"errors": errors,
"exit_code": result.get("exit_code", -1),
"summary": output[-500:] if len(output) > 500 else output
}
print(json.dumps(report, indent=2))
Этот скрипт запускает ваши тесты, подсчитывает, сколько из них прошло или провалилось, и выводит аккуратный JSON-отчет. Вы даже можете автоматически отправить этот отчет по электронной почте своей команде.
Два способа запуска вашего кода
Hermes предоставляет вам два «режима» для запуска скриптов:
-
Режим проекта (по умолчанию): ваш скрипт запускается в папке вашего проекта, используя то же окружение Python, которое у вас уже есть. Это лучше всего подходит для повседневной работы — вы можете
import pandasили читать файлы по относительным путям, как обычно. -
Строгий режим: ваш скрипт запускается в отдельной изолированной папке с собственным Python от Hermes. Используйте это, когда вам нужна максимальная воспроизводимость — например, когда вы делитесь скриптом с кем-то еще и хотите быть уверены, что он будет работать одинаково везде.
Вы можете переключать режимы в вашем конфигурационном файле:
# ~/.hermes/config.yaml
code_execution:
mode: project # or "strict"
Безопасность превыше всего (даже при написании кода)
Не беспокойтесь о безопасности — Hermes осторожен. В обоих режимах он:
- Удаляет API-ключи и пароли из окружения вашего скрипта
- Блокирует скриптам рекурсивный вызов других инструментов Hermes
- Ограничивает время выполнения скрипта (максимум 5 минут) и объем выводимых данных
Заключение и профессиональный совет
Использование Hermes как Python-библиотеки превращает утомительные задачи в скрипты из нескольких строк. Начните с малого: выберите одну повторяющуюся задачу (например, переименование переменных или запуск тестов) и автоматизируйте ее.
Практический совет: Всегда сначала тестируйте свой скрипт на копии вашего проекта, а не на оригинале. Так, если что-то пойдет не так, вы ничего не сломаете. Когда будете уверены, запускайте его на реальном проекте. Удачной автоматизации!
📖 Официальная документация
Эта статья основана на официальной документации Hermes Agent :Официальные документы › developer-guide/programmatic-integration