References
На этой странице
Введите @, а затем ссылку, чтобы вставить содержимое прямо в ваше сообщение. Hermes разворачивает ссылку в строку и добавляет содержимое под разделом --- Attached Context ---.
Поддерживаемые ссылки¶
| Синтаксис | Описание |
|---|---|
@file:path/to/file.py |
Вставить содержимое файла |
@file:path/to/file.py:10-25 |
Вставить конкретный диапазон строк (нумерация с 1, включительно) |
@folder:path/to/dir |
Вставить дерево каталога с метаданными файлов |
@diff |
Вставить git diff (неиндексированные изменения рабочей копии) |
@staged |
Вставить git diff --staged (индексированные изменения) |
@git:5 |
Вставить последние N коммитов с патчами (макс. 10) |
@url:https://example.com |
Загрузить и вставить содержимое веб-страницы |
Примеры использования¶
Проверь @file:src/main.py и предложи улучшения
Что изменилось? @diff
Сравни @file:old_config.yaml и @file:new_config.yaml
Что в @folder:src/components?
Кратко перескажи эту статью @url:https://arxiv.org/abs/2301.00001
В одном сообщении можно использовать несколько ссылок:
Знаки препинания в конце (,, ., ;, !, ?) автоматически отсекаются от значений ссылок.
Автодополнение в CLI¶
В интерактивном CLI ввод @ запускает автодополнение:
@показывает все типы ссылок (@diff,@staged,@file:,@folder:,@git:,@url:)@file:и@folder:запускают автодополнение путей файловой системы с метаданными размера файлов- Обычный
@с последующим частичным текстом показывает совпадающие файлы и папки из текущей директории
Диапазоны строк¶
Ссылка @file: поддерживает диапазоны строк для точной вставки содержимого:
Строки нумеруются с 1. Некорректные диапазоны игнорируются (возвращается полный файл).
Ограничения по размеру¶
Контекстные ссылки ограничены, чтобы не перегружать контекстное окно модели:
| Порог | Значение | Поведение |
|---|---|---|
| Мягкий лимит | 25% длины контекста | Добавляется предупреждение, вставка продолжается |
| Жёсткий лимит | 50% длины контекста | Вставка отклоняется, исходное сообщение возвращается без изменений |
| Записи в папке | макс. 200 файлов | Лишние записи заменяются на - ... |
| Git-коммиты | макс. 10 | @git:N ограничивается диапазоном [1, 10] |
Безопасность¶
Блокировка конфиденциальных путей¶
Следующие пути всегда блокируются в ссылках @file: для предотвращения утечки учётных данных:
- SSH-ключи и конфигурация:
~/.ssh/id_rsa,~/.ssh/id_ed25519,~/.ssh/authorized_keys,~/.ssh/config - Профили оболочки:
~/.bashrc,~/.zshrc,~/.profile,~/.bash_profile,~/.zprofile - Файлы с учётными данными:
~/.netrc,~/.pgpass,~/.npmrc,~/.pypirc - Окружение Hermes:
$HERMES_HOME/.env
Полностью блокируются следующие директории (любой файл внутри):
~/.ssh/,~/.aws/,~/.gnupg/,~/.kube/,$HERMES_HOME/skills/.hub/
Защита от обхода путей¶
Все пути разрешаются относительно рабочей директории. Ссылки, ведущие за пределы разрешённого корня рабочей области, отклоняются.
Определение бинарных файлов¶
Бинарные файлы определяются по MIME-типу и проверке на нулевые байты. Известные текстовые расширения (.py, .md, .json, .yaml, .toml, .js, .ts и т.д.) обходят MIME-проверку. Бинарные файлы отклоняются с предупреждением.
Доступность на платформах¶
Контекстные ссылки — это в первую очередь функция CLI. Они работают в интерактивном CLI, где @ запускает автодополнение по табуляции, а ссылки разворачиваются до отправки сообщения агенту.
В мессенджер-платформах (Telegram, Discord и т.д.) синтаксис @ не разворачивается шлюзом — сообщения передаются как есть. Сам агент всё ещё может ссылаться на файлы через инструменты read_file, search_files и web_extract.
Взаимодействие со сжатием контекста¶
Когда контекст разговора сжимается, развёрнутое содержимое ссылки включается в сводку сжатия. Это означает:
- Большое содержимое файлов, вставленное через
@file:, увеличивает использование контекста - Если разговор позже будет сжат, содержимое файла будет суммировано (а не сохранено дословно)
- Для очень больших файлов используйте диапазоны строк (
@file:main.py:100-200), чтобы вставлять только нужные фрагменты
Типовые сценарии¶
# Обзор кода
Проверь @diff на предмет проблем с безопасностью
# Отладка с контекстом
Этот тест падает. Вот тест @file:tests/test_auth.py
и реализация @file:src/auth.py:50-80
# Исследование проекта
Что делает этот проект? @folder:src @file:README.md
# Исследование
Сравни подходы в @url:https://arxiv.org/abs/2301.00001
и @url:https://arxiv.org/abs/2301.00002
Обработка ошибок¶
Некорректные ссылки выводят встроенные предупреждения, а не вызывают сбой:
| Ситуация | Поведение |
|---|---|
| Файл не найден | Предупреждение: «file not found» |
| Бинарный файл | Предупреждение: «binary files are not supported» |
| Папка не найдена | Предупреждение: «folder not found» |
| Ошибка Git-команды | Предупреждение с git stderr |
| URL не вернул содержимое | Предупреждение: «no content extracted» |
| Конфиденциальный путь | Предупреждение: «path is a sensitive credential file» |
| Путь вне рабочей области | Предупреждение: «path is outside the allowed workspace» |