Ссылки на контекст
Введите @, а затем ссылку, чтобы вставить содержимое прямо в ваше сообщение. Hermes разворачивает ссылку inline и добавляет содержимое в раздел --- 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 | Получить и вставить содержимое веб-страницы |
Примеры использования
Заголовок раздела «Примеры использования»Review @file:src/main.py and suggest improvements
What changed? @diff
Compare @file:old_config.yaml and @file:new_config.yaml
What's in @folder:src/components?
Summarize this article @url:https://arxiv.org/abs/2301.00001Несколько ссылок можно использовать в одном сообщении:
Check @file:main.py, and also @file:test.py.Конечные знаки пунктуации (,, ., ;, !, ?) автоматически удаляются из значений ссылок.
Автодополнение по Tab для CLI
Заголовок раздела «Автодополнение по Tab для CLI»В интерактивном CLI ввод @ запускает автодополнение:
@показывает все типы ссылок (@diff,@staged,@file:,@folder:,@git:,@url:)@file:и@folder:запускают автодополнение путей файловой системы с метаданными размера файла- Обычный
@с последующим частичным текстом показывает совпадающие файлы и папки из текущего каталога
Диапазоны строк
Заголовок раздела «Диапазоны строк»Ссылка @file: поддерживает диапазоны строк для точной вставки содержимого:
@file:src/main.py:42
# Single line 42@file:src/main.py:10-25
# Lines 10 through 25 (inclusive)Строки нумеруются с 1. Недопустимые диапазоны молча игнорируются (возвращается весь файл).
Ограничения размера
Заголовок раздела «Ограничения размера»Ссылки контекста ограничены, чтобы не перегружать окно контекста модели:| Порог | Значение | Поведение |
|-----------|-------|----------|
| Мягкий лимит | 25% длины контекста | Добавляется предупреждение, расширение продолжается |
| Жесткий лимит | 50% длины контекста | Расширение отклоняется, исходное сообщение возвращается без изменений |
| Записи папки | максимум 200 файлов | Лишние записи заменяются на - ... |
| Git-коммиты | максимум 10 | @git:N ограничивается диапазоном [1, 10] |
Безопасность
Заголовок раздела «Безопасность»Блокировка чувствительных путей
Заголовок раздела «Блокировка чувствительных путей»Эти пути всегда блокируются для ссылок @file:, чтобы предотвратить раскрытие учетных данных:
- Ключи и конфигурация SSH:
~/.ssh/id_rsa,~/.ssh/id_ed25519,~/.ssh/authorized_keys,~/.ssh/config - Профили shell:
~/.bashrc,~/.zshrc,~/.profile,~/.bash_profile,~/.zprofile - Файлы учетных данных:
~/.netrc,~/.pgpass,~/.npmrc,~/.pypirc - Переменные окружения Hermes:
$HERMES_HOME/.env
Эти каталоги полностью блокируются (любой файл внутри):
~/.ssh/,~/.aws/,~/.gnupg/,~/.kube/,$HERMES_HOME/skills/.hub/
Защита от path traversal
Заголовок раздела «Защита от path traversal»Все пути разрешаются относительно рабочей директории. Ссылки, которые разрешаются за пределами допустимого корня workspace, отклоняются.
Обнаружение бинарных файлов
Заголовок раздела «Обнаружение бинарных файлов»Бинарные файлы определяются по типу MIME и сканированием на null-byte. Известные текстовые расширения (.py, .md, .json, .yaml, .toml, .js, .ts, и т. д.) обходят определение на основе MIME. Бинарные файлы отклоняются с предупреждением.
Доступность на платформах
Заголовок раздела «Доступность на платформах»Ссылки на контекст — это в первую очередь функция CLI. Они работают в интерактивном CLI, где @ запускает автодополнение по Tab, а ссылки разворачиваются до отправки сообщения агенту.
На платформах обмена сообщениями (Telegram, Discord и т. д.) синтаксис @ не разворачивается gateway — сообщения передаются как есть. Сам агент по-прежнему может ссылаться на файлы через инструменты read_file, search_files и web_extract.
Взаимодействие со сжатием контекста
Заголовок раздела «Взаимодействие со сжатием контекста»Когда контекст разговора сжимается, содержимое развернутой ссылки включается в сводку сжатия. Это означает:
- Содержимое больших файлов, внедряемое через
@file:, влияет на использование контекста - Если разговор позже будет сжат, содержимое файла будет суммировано (а не сохранено дословно)
- Для очень больших файлов рассмотрите использование диапазонов строк (
@file:main.py:100-200), чтобы внедрять только релевантные разделы
Распространённые шаблоны
Заголовок раздела «Распространённые шаблоны»# Code review workflowReview @diff and check for security issues
# Debug with contextThis test is failing. Here's the test @file:tests/test_auth.pyand the implementation @file:src/auth.py:50-80
# Project explorationWhat does this project do? @folder:src @file:README.md
# ResearchCompare the approaches in @url:https://arxiv.org/abs/2301.00001and @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” |
| Путь вне workspace | Предупреждение: “path is outside the allowed workspace” |