Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help


上下文引用

输入 @ 后跟对应的引用,即可将内容直接插入消息中。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        # 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环境变量文件:`$
# 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

错误处理

无效的引用只会触发内联警告,而不会导致任务失败:

情况行为表现
文件不存在警告信息:“文件未找到”
二进制文件警告信息:“不支持二进制文件”
目录不存在警告信息:“目录未找到”
Git命令执行失败显示包含Git标准错误信息的警告
URL返回无内容警告信息:“未提取到任何内容”
路径包含敏感信息警告信息:“该路径为敏感凭证文件”
路径位于工作区之外警告信息:“该路径不在允许的工作区范围内”