跳到主要內容

上下文引用

輸入 @ 後跟一個引用,即可將內容直接注入到您的消息中。Hermes 會在行內展開引用,並在 --- 附加上下文 --- 部分追加內容。

支持的引用

語法描述
@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 中,輸入 @ 會觸發自動補全:

  • @ 顯示所有引用類型(@diff@staged@file:@folder:@git:@url:
  • @file:@folder: 觸發文件系統路徑補全,並顯示文件大小元數據
  • 僅輸入 @ 後跟部分文本,會顯示當前目錄中匹配的文件和文件夾

行範圍

@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 密鑰和配置:~/.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/

路徑遍歷防護

所有路徑均相對於工作目錄解析。若引用路徑解析至允許工作區根目錄之外,則被拒絕。

二進制文件檢測

通過 MIME 類型和空字節掃描檢測二進制文件。已知文本擴展名(.py.md.json.yaml.toml.js.ts 等)會繞過 MIME 檢測。二進制文件將被拒絕併發出警告。

平臺可用性

上下文引用主要為 CLI 功能。在交互式 CLI 中,@ 會觸發自動補全,引用在消息發送給 Agent 前被展開。

消息平臺(Telegram、Discord 等)中,@ 語法不會被網關展開——消息會原樣傳遞。但 Agent 本身仍可通過 read_filesearch_filesweb_extract 工具引用文件。

與上下文壓縮的交互

當對話上下文被壓縮時,展開後的引用內容會包含在壓縮摘要中。這意味著:

  • 通過 @file: 注入的大文件內容會計入上下文使用量
  • 若後續對話被壓縮,文件內容將被總結(而非原樣保留)
  • 對於非常大的文件,建議使用行範圍(如 @file:main.py:100-200)僅注入相關部分

常見模式

# 代碼審查工作流程
Review @diff and check for security issues

# 使用 context 進行調試
This test is failing. Here's the test @file:tests/test_auth.py
and the implementation @file:src/auth.py:50-80

# 項目探索
What does this project do? @folder:src @file:README.md

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

錯誤處理

無效引用會產生內聯警告而非失敗:

條件行為
文件未找到警告:“文件未找到”
二進制文件警告:“不支持二進制文件”
目錄未找到警告:“目錄未找到”
Git 命令失敗附帶 git stderr 的警告
URL 無內容返回警告:“未提取到內容”
敏感路徑警告:“路徑為敏感憑據文件”
路徑超出工作區警告:“路徑在允許的工作區之外”