Контекстные ссылки

Введите @ с последующей ссылкой, чтобы вставить содержимое прямо в ваше сообщение. 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 Загрузить и вставить содержимое веб-страницы

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

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.

Знаки пунктуации в конце (,, ., ;, !, ?) автоматически удаляются из значений ссылок.

Автодополнение в CLI

В интерактивном CLI при вводе @ срабатывает автодополнение:

Диапазоны строк

Ссылка @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: для предотвращения утечки учётных данных:

Эти каталоги блокируются полностью (любой файл внутри):

Защита от обхода путей

Все пути разрешаются относительно рабочего каталога. Ссылки, ведущие за пределы разрешённой корневой рабочей области, отклоняются.

Обнаружение бинарных файлов

Бинарные файлы определяются по MIME-типу и сканированию нулевых байтов. Известные текстовые расширения (.py, .md, .json, .yaml, .toml, .js, .ts и т.д.) пропускают проверку по MIME. Бинарные файлы отклоняются с предупреждением.

Доступность на платформах

Контекстные ссылки — это в первую очередь функция CLI. Они работают в интерактивном CLI, где @ запускает автодополнение по табуляции, а ссылки разворачиваются до отправки сообщения агенту.

В мессенджерах (Telegram, Discord и т.д.) синтаксис @ не обрабатывается шлюзом — сообщения передаются как есть. Агент всё ещё может обращаться к файлам через инструменты read_file, search_files и web_extract.

Взаимодействие со сжатием контекста

При сжатии контекста беседы развёрнутое содержимое ссылок включается в сводку сжатия. Это означает:

Типовые сценарии

# Code review workflow
Review @diff and check for security issues

# Debug with context
This test is failing. Here's the test @file:tests/test_auth.py
and the implementation @file:src/auth.py:50-80

# Project exploration
What does this project do? @folder:src @file:README.md

# Research
Compare the approaches in @url:https://arxiv.org/abs/2301.00001
and @url:https://arxiv.org/abs/2301.00002

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

Некорректные ссылки выводят встроенные предупреждения, а не ошибки:

Условие Поведение
Файл не найден Предупреждение: "file not found"
Бинарный файл Предупреждение: "binary files are not supported"
Папка не найдена Предупреждение: "folder not found"
Ошибка выполнения Git Предупреждение с stderr Git
URL не вернул содержимое Предупреждение: "no content extracted"
Чувствительный путь Предупреждение: "path is a sensitive credential file"
Путь вне рабочей области Предупреждение: "path is outside the allowed workspace"