Перейти к содержимому

Ссылки на контекст

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

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

В интерактивном 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/

Все пути разрешаются относительно рабочей директории. Ссылки, которые разрешаются за пределами допустимого корня 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 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 завершается с ошибкойПредупреждение с git stderr
URL не возвращает содержимогоПредупреждение: “no content extracted”
Чувствительный путьПредупреждение: “path is a sensitive credential file”
Путь вне workspaceПредупреждение: “path is outside the allowed workspace”