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

Введите @, за которым следует ссылка, чтобы внедрить критерий непосредственно в ваше сообщение. Гермес разворачивает ссылку встроенно и добавляет традиции под разделом --- Прикрепленный контекст ---.

Поддерживаемые ссылки

Синтаксис Описание
@file:path/to/file.py Внедрить ограничения файла
@file:path/to/file.py:10-25 Внедрить конкретный диапазон строк (с 1, включительно)
@folder:путь/к/каталогу Внедрить деревянные каталоги с метаданными файлами
@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

Несколько ссылок работают в одном месте:

Проверь @file:main.py, а также @file:test.py.

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

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

В интерактивном интерфейсе CLI ввод @ запускает автодополнение:

Увеличение строк

Ссылка @file: поддерживает диапазоны строк для точного изменения значения:

@file:src/main.py:42        # Одна строка 42
@file:src/main.py:10-25     # Строки с 10 по 25 (включительно)

Строки нумеруются с 1. Неверные диапазоны молча теряются (возвращается полный файл).

Ограничения по размеру

Контекстные ссылки ограничены, чтобы не перезагружать модели контекста окна:

Порог Значение Поведение
Мягкий лимит 25% длины контекста Добавляется предупреждение, разворачивание продолжается
Жёсткий лимит 50% длины контекста Разворачивание отклоняется, исходное сообщение возвращается без изменений
Запись папок макс. 200 файлов Лишние записи для изменения на -...
Git-комитеты макс. 10 @git:N ограничивается диапазоном [1, 10]

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

Блокировка конфиденциальных путей

Эти пути всегда блокируются для ссылок @file: во избежание раскрытия учётных данных:

Эти каталоги полностью заблокированы (любой файл внутри): - ~/.ssh/, ~/.aws/, ~/.gnupg/, ~/.kube/, $HERMES_HOME/skills/.hub/

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

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

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

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

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

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

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

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

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

Распространённые шаблоны

# Рабочий процесс проверки кода
Проверь @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

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

Неверные ссылки украшены встроенными рефлекторами, а не ошибка:

Условие Поведение
Файл не найден Предупреждение: «файл не найден»
Бинарный файл Предупреждение: «Двоичные файлы не поддерживаются»
Папка не найдена Предупреждение: «папка не найдена»
Ошибка git Предупреждение с помощью stderr git
URL-адрес не восстановлен Предупреждение: «Содержимое не извлечено»
Конфиденциальный путь Предупреждение: «путь — это конфиденциальный файл учетных данных»
Путь вне рабочих помещений Предупреждение: «путь находится за пределами разрешенной рабочей области»