AgentHarness 课程
Hermes 专题/课程概述

第十三课:实用快捷键与技巧

Tab补全Ctrl快捷键Vim模式主题定制

1. 概述

除了 Slash 命令之外,Hermes Agent 的 CLI 界面还提供了丰富的快捷键、终端增强和界面定制功能。这些功能可以显著提升日常使用效率——从 Tab 补全减少输入、Ctrl 快捷键快速操作、Vim 模式提供编辑器级控制,到主题和状态栏的个性化定制。

本课将系统介绍所有实用的快捷键和技巧,帮助你将 Hermes Agent CLI 打造为一个高效的工作环境。


2. Tab 补全

2.1 基本用法

Tab 补全是 Hermes Agent CLI 中最常用的快捷功能。按下 Tab 键,系统会根据当前输入上下文提供补全建议:

# 补全 Slash 命令
/mo<Tab>          → /model
/per<Tab>         → /permissions
/comp<Tab>        → /compact

# 补全模型名称
/model gpt<Tab>   → /model gpt-4.1 / gpt-4.1-mini

# 补全技能名称
/skills use cl<Tab> → cloud-deploy / code-lint

# 补全文件路径
cat ./src/app<Tab> → ./src/app.py / ./src/app.ts

2.2 补全类型

Tab 补全支持以下上下文:

上下文补全内容示例
/ 开头Slash 命令名/mo<Tab>/model
Slash 命令参数该命令的有效参数值/model gpt<Tab>gpt-4.1
文件路径当前目录下的文件和目录./src/<Tab>./src/app.py
技能名已安装的技能名称/skills use co<Tab>code-review
MCP 工具名已注册的 MCP 工具名称工具调用时的参数补全

2.3 连续 Tab 与循环补全

当有多个候选时:

  • 第一次按 Tab 显示候选列表
  • 连续按 Tab 在候选之间循环
  • Shift+Tab 反向循环

2.4 智能模糊匹配

Tab 补全支持模糊匹配,不要求精确前缀:

/model son<Tab>      → /model anthropic/claude-sonnet-4-20250514  (匹配 "sonnet")
/skills use dep<Tab> → /skills use cloud-deploy                    (匹配 "deploy")
/new<Tab>            → /new                                        (精确匹配)

3. Ctrl 快捷键

3.1 核心快捷键列表

Hermes Agent CLI 支持以下 Ctrl 组合键:

快捷键功能说明
Ctrl+O复制上一条回复将 Agent 最近的回复复制到系统剪贴板
Ctrl+C取消当前操作中断正在执行的工具调用或 LLM 生成
Ctrl+D退出 / EOF在空行时退出 CLI(等效于 /exit
Ctrl+L清屏清除终端显示,保留对话历史(等效于 /clear
Ctrl+R反向搜索历史搜索之前输入过的命令和消息
Ctrl+P上一条历史浏览输入历史(上一条)
Ctrl+N下一条历史浏览输入历史(下一条)
Ctrl+A行首将光标移动到当前行的开头
Ctrl+E行尾将光标移动到当前行的末尾
Ctrl+K删除到行尾从光标位置删除到行尾
Ctrl+U删除到行首从光标位置删除到行首
Ctrl+W删除前一个词删除光标前的一个完整单词
Ctrl+Y粘贴粘贴上次删除的内容(Yank)

3.2 Ctrl+C — 取消操作详解

Ctrl+C 是最常用的快捷键之一,用于中断正在进行的操作

中断 LLM 生成 当 Agent 正在流式输出文本时,按 Ctrl+C 会:

  1. 停止接收 LLM 的流式输出
  2. 保留已经生成的部分内容
  3. 返回到输入等待状态

中断工具执行 当 Agent 正在执行工具(如终端命令)时,按 Ctrl+C 会:

  1. 向工具进程发送 SIGINT 信号
  2. 等待工具优雅退出
  3. 如果工具不响应,强制终止

连续 Ctrl+C

  • 第一次 Ctrl+C:尝试优雅中断
  • 第二次 Ctrl+C:强制中断
  • 第三次 Ctrl+C:退出 CLI

3.3 Ctrl+O — 复制回复

Ctrl+O 将 Agent 最近的完整回复复制到系统剪贴板。这个功能在以下场景非常有用:

  • 将回复粘贴到文档:Agent 生成的技术文档可以直接粘贴到 Notion/Confluence
  • 分享代码片段:Agent 生成的代码可以直接粘贴到 IDE
  • 跨平台转发:将一个平台上的回复复制后粘贴到另一个平台的消息

剪贴板操作依赖系统工具:

  • macOS:pbcopy
  • Linux:xclipxsel(需要 X11)/ wl-copy(Wayland)
  • Windows:clip

如果剪贴板工具不可用,Ctrl+O 会将回复输出到标准输出供手动复制。

3.4 Ctrl+R — 历史搜索

Ctrl+R 启动反向增量搜索,允许你快速找到之前输入过的消息:

(reverse-i-search)`deploy': /goal 将项目部署到生产环境
  • 输入关键词后,会实时匹配历史输入
  • Ctrl+R 继续向前搜索更多匹配
  • Enter 执行匹配到的命令
  • EscapeCtrl+C 退出搜索

3.5 行编辑快捷键

以下快捷键遵循 Emacs 键位绑定(与 bash/zsh 一致):

行内容:  echo "hello world"  (光标在 w 处)
         echo "hello |world"

Ctrl+A   →  |echo "hello world"        (行首)
Ctrl+E   →  echo "hello world|         (行尾)
Ctrl+K   →  echo "hello |              (删除到行尾)
Ctrl+U   →  |world"                    (删除到行首)
Ctrl+W   →  echo "hello |              (删除前一个词)
Ctrl+Y   →  echo "hello world"|        (粘贴)

4. Vim 模式

4.1 启用 Vim 模式

/vim            # 切换 Vim 模式的开关
/vim on         # 启用 Vim 模式
/vim off        # 禁用 Vim 模式

Vim 模式启用后,CLI 的输入行为会遵循 Vim 的键位绑定,适合 Vim 用户。

4.2 Normal 模式快捷键

在 Vim 模式下,按 Escape 进入 Normal 模式:

快捷键功能对应 Vim 命令
i进入 Insert 模式i
a在光标后进入 Insert 模式a
A在行尾进入 Insert 模式A
I在行首进入 Insert 模式I
h光标左移h
l光标右移l
w跳到下一个词首w
b跳到上一个词首b
e跳到当前词尾e
0行首0
$行尾$
x删除光标处字符x
dd删除整行dd
cc清除整行并进入 Insert 模式cc
yy复制整行yy
p粘贴p
u撤销u
.重复上次操作.

4.3 Vim 模式状态指示

Vim 模式启用后,状态栏会显示当前模式:

─── NORMAL ───   # Normal 模式(蓝色背景)
─── INSERT ───   # Insert 模式(绿色背景)
─── VISUAL ───   # Visual 模式(紫色背景)

4.4 Vim 模式与 Emacs 模式对比

特性Vim 模式Emacs 模式(默认)
适用人群Vim/Neovim 用户大部分终端用户
学习曲线较高(需要记忆模式切换)较低(即时可用)
编辑效率高(一旦熟练)中等
手指移动少(手指保持在主键区)较多(需要移动到方向键)
多行编辑支持 Visual 模式不支持

5. 主题定制 — /theme

5.1 基本用法

/theme                  # 显示当前主题和可用主题列表
/theme <name>           # 切换到指定主题
/theme list             # 列出所有可用主题
/theme custom <file>    # 加载自定义主题文件

5.2 内置主题

Hermes Agent CLI 提供多种内置主题:

主题名风格适合场景
default经典深色通用,适合大部分终端
light浅色亮色终端环境
monokaiMonokai 配色代码编辑风格
draculaDracula 配色深紫色调
nordNord 配色北欧冷色调
solarized-darkSolarized Dark护眼深色
solarized-lightSolarized Light护眼浅色
minimal极简风格无装饰,信息密度高
high-contrast高对比度无障碍访问

5.3 主题影响范围

主题配置影响以下界面元素:

  • 消息气泡:用户消息和 Agent 消息的颜色和样式
  • 工具调用显示:工具名称、参数、结果的颜色
  • 状态栏:模型名、token 使用量、模式指示器的颜色
  • 语法高亮:代码块中的语法着色
  • 警告和错误:安全提示、错误信息的颜色
  • 进度指示器:工具执行进度条的颜色

5.4 自定义主题

创建自定义主题文件(YAML 格式):

# ~/.hermes/themes/custom.yaml
name: "My Custom Theme"
colors:
  primary: "#61AFEF"       # 主色调(Agent 消息)
  secondary: "#98C379"     # 次要色(用户消息)
  accent: "#C678DD"        # 强调色(工具调用)
  warning: "#E5C07B"       # 警告色
  error: "#E06C75"         # 错误色
  success: "#56B6C2"       # 成功色
  muted: "#5C6370"         # 弱化色(注释、次要信息)
  background: "#282C34"    # 背景色
  foreground: "#ABB2BF"    # 前景色

styles:
  user_message: "bold"
  agent_message: "normal"
  tool_call: "italic"
  code_block: "monospace"
  status_bar: "dim"

加载自定义主题:

/theme custom ~/.hermes/themes/custom.yaml

6. 状态栏配置 — /statusline

6.1 基本用法

/statusline                 # 显示当前状态栏配置
/statusline on              # 启用状态栏
/statusline off             # 禁用状态栏
/statusline config <items>  # 配置状态栏显示项

6.2 状态栏组件

状态栏可以包含以下组件:

组件标识符显示内容示例
模型名model当前使用的模型gpt-4.1
Token 用量tokens输入/输出 token 数12.5K / 2.1K
成本cost当前会话的累计成本$0.34
迭代次数iter当前迭代/总预算15/90
会话时间time会话持续时间23:45
模式指示mode当前模式(Normal/Plan等)PLAN
工具状态tools最后使用的工具execute_command
Git 分支git当前 Git 分支main
内存用量memoryAgent 内存使用245MB

6.3 状态栏配置示例

/statusline config model,tokens,cost,iter,mode

这会在状态栏中依次显示:模型名、Token 用量、成本、迭代次数、模式指示。

状态栏效果示例:

─── gpt-4.1 | 12.5K/2.1K | $0.34 | 15/90 | NORMAL ───

6.4 状态栏位置

# config.yaml
display:
  statusline:
    enabled: true
    position: "bottom"      # top / bottom
    items: ["model", "tokens", "cost", "mode"]
    compact: false          # true = 紧凑模式(单行)

7. 终端标题 — /title

7.1 基本用法

/title                  # 显示当前终端标题
/title <text>           # 设置自定义终端标题
/title auto             # 自动设置(显示当前任务摘要)
/title reset            # 重置为默认标题

7.2 用途

/title 设置终端窗口的标题栏文字。在以下场景中特别有用:

  • 多终端管理:当你同时打开多个 Hermes Agent 终端时,自定义标题可以快速区分
  • tmux/screen:在终端复用器中,标题可以显示在标签栏上
  • 任务标识:给每个终端设置任务名称(如"部署"、"调试"、"文档")

7.3 自动标题

/title auto 模式下,Agent 会根据当前任务自动设置标题:

  • 执行代码相关任务时:Hermes — Coding: refactoring auth module
  • 执行部署任务时:Hermes — Deploy: production v2.3.1
  • 日常对话时:Hermes — Chat

8. 键位映射 — /keymap

8.1 基本用法

/keymap                # 显示当前键位映射
/keymap <name>         # 切换键位映射方案
/keymap list           # 列出可用的键位方案
/keymap custom <file>  # 加载自定义键位方案

8.2 内置键位方案

方案说明适合人群
default标准 Emacs 键位大部分用户
vimVim 键位(等效于 /vim onVim 用户
windowsWindows 风格(Ctrl+C/V/X 兼容)Windows 用户
minimal精简键位(仅保留核心快捷键)新手用户

8.3 自定义键位映射

# ~/.hermes/keymaps/custom.yaml
name: "My Keymap"
bindings:
  # 覆盖默认绑定
  cancel: "Ctrl+G"           # 原来是 Ctrl+C
  copy_reply: "Ctrl+Shift+C" # 原来是 Ctrl+O
  search_history: "Ctrl+F"   # 原来是 Ctrl+R

  # 新增自定义绑定
  quick_deploy: "Ctrl+Shift+D"
  toggle_plan: "Ctrl+P"

  # 组合键
  clear_and_new:
    keys: "Ctrl+Shift+N"
    action: "/clear /new"      # 连续执行两个命令

9. 原始滚动模式 — /raw

9.1 基本用法

/raw                # 切换原始滚动模式
/raw on             # 启用原始滚动
/raw off            # 禁用原始滚动

9.2 什么是原始滚动模式

原始滚动模式禁用 Hermes Agent CLI 的自定义渲染,恢复到终端的原生滚动行为。

在正常模式下,CLI 使用自定义的 TUI(Text User Interface)渲染:

  • 消息以气泡形式显示
  • Markdown 实时渲染
  • 代码块有语法高亮
  • 进度条和动画效果

在原始模式下:

  • 所有输出都是纯文本
  • 没有气泡、没有语法高亮
  • 使用终端原生的滚动缓冲区
  • 适合管道输出和日志记录

9.3 使用场景

场景一:管道输出

hermes chat "list all Python files" | grep ".py" | wc -l

在原始模式下,输出是干净的纯文本,可以直接管道到其他命令。

场景二:日志记录

hermes chat --raw "analyze the error log" > analysis.txt

原始模式的输出适合保存为日志文件。

场景三:终端兼容性 某些终端模拟器对 TUI 渲染支持不完善(如老旧的 SSH 客户端),原始模式提供更好的兼容性。

场景四:性能优化 在低带宽的 SSH 连接中,原始模式减少了需要传输的 ANSI 转义序列,提升响应速度。

9.4 原始模式与 TUI 模式对比

特性TUI 模式(默认)原始模式
Markdown 渲染✅ 实时渲染❌ 纯文本
代码高亮✅ 语法着色❌ 无着色
气泡样式✅ 美观的气泡❌ 纯文本
滚动行为自定义滚动终端原生滚动
管道兼容❌ 包含 ANSI 转义✅ 干净纯文本
性能较重轻量
终端兼容需要现代终端兼容所有终端

10. 其他实用技巧

10.1 多行输入

在 CLI 中输入多行文本有以下方式:

方式一:反斜杠续行

这是一个很长的提示词,\
可以跨越多行输入,\
最终会合并为一条消息。

方式二:三重反引号代码块

这是多行内容 可以包含任何格式 包括特殊字符

方式三:Shift+Enter(部分终端支持) 在支持的终端中,Shift+Enter 可以换行而不发送消息。

10.2 快速命令组合

# 快速查看帮助
/help

# 快速查看版本
/version

# 查看当前用量和成本
/usage

# 快速切换到只读模式查看代码
/permissions read-only

# 完成后恢复
/permissions auto

10.3 环境变量快捷设置

通过环境变量可以快速覆盖 CLI 行为:

# 设置默认模型
HERMES_MODEL=gpt-4.1 hermes

# 设置默认 Provider
HERMES_PROVIDER=openrouter hermes

# 设置终端超时
TERMINAL_TIMEOUT=300 hermes

# 启用详细日志
HERMES_LOG_LEVEL=DEBUG hermes

# 设置配置文件目录
HERMES_HOME=~/.hermes-work hermes

10.4 配置文件快速调优

常用的 config.yaml 快速调优项:

# 提高响应速度
display:
  stream: true               # 启用流式输出(默认已启用)
  tool_progress: "minimal"   # 减少工具进度显示

# 提高安全性
permissions:
  default_mode: "auto"
  smart_approval: true

# 提高上下文质量
compression:
  enabled: true
  threshold: 0.50
  summary_model: "gpt-4.1-mini"  # 用小模型做摘要,节省成本

# 自定义显示
display:
  show_cost: true             # 显示每次对话的成本
  show_tokens: true           # 显示 token 用量
  statusline:
    enabled: true
    items: ["model", "tokens", "cost", "mode"]

11. 效率提升 Checklist

以下是日常使用 Hermes Agent 的效率提升建议:

输入效率

  • 掌握 Tab 补全,减少手动输入
  • 使用 Ctrl+R 快速搜索历史命令
  • 利用 Ctrl+A/E/W/U/K 快速编辑输入行

操作效率

  • 使用 Ctrl+C 快速中断不需要的操作
  • 使用 Ctrl+O 快速复制 Agent 回复
  • 掌握 /new, /resume, /fork 快速管理会话

模型效率

  • 简单任务使用 /model gpt-4.1-mini + /fast on
  • 复杂任务使用 /model gpt-4.1 或更强模型
  • 使用 /plan 预审复杂任务

安全效率

  • 生产环境使用 /permissions auto + Smart Approval
  • 敏感操作使用 /plan on 审查后再执行
  • 利用 /approve always 减少重复审批

界面效率

  • 选择合适的 /theme 减少视觉疲劳
  • 配置 /statusline 快速查看关键信息
  • Vim 用户启用 /vim 提升编辑效率

思考题

  1. Tab 补全的模糊匹配在什么情况下可能产生歧义?如果你要输入的文件名恰好匹配多个候选,如何快速定位到正确的目标?

  2. Ctrl+C 在 LLM 生成、工具执行、空闲等待三种状态下行为有什么不同?为什么需要区分这些状态?

  3. Vim 模式和 Emacs 模式在 Hermes Agent CLI 中的设计权衡是什么?为什么不默认启用 Vim 模式?

  4. 原始滚动模式(/raw)禁用了自定义 TUI 渲染。从用户体验的角度分析,为什么不是所有用户都使用原始模式?TUI 模式提供了哪些不可替代的价值?

  5. 设计一个针对新手用户的 Hermes Agent CLI 使用指南:从快捷键、主题、状态栏到键位映射,如何为新手配置一个"开箱即用"的高效环境?列出具体的配置步骤和参数。