Hermes Agent 学习笔记 03:CLI 与 TUI 使用体验,让 Agent 真正进入终端工作流

1. 从"安装成功"到"真正会用"

上一期主要完成了 Hermes Agent 的安装、配置和第一次运行。到这一步,Hermes Agent 已经可以在本地终端中启动,也可以接入模型 provider 进行基本对话。

但是,仅仅能对话还不够。

对于 Hermes Agent 这类项目来说,真正值得关注的不是"它能不能聊天",而是它能否进入真实工作流。也就是说,它能不能在终端里读取项目、理解目录、调用工具、执行命令、管理会话,并且在多轮任务中保持连续性。

这也是本期学习的重点:从 CLI 和 TUI 的使用体验出发,理解 Hermes Agent 如何从一个聊天入口变成一个终端里的 Agent 工作台。

2. CLI 与 TUI 是什么?

Hermes Agent 提供两种终端交互方式:经典 CLI 和现代 TUI。

CLI 是 Command Line Interface,也就是命令行界面。用户在终端中输入命令,Hermes 在同一个终端窗口中返回结果。它更轻量,也更接近传统命令行工具的使用习惯。

TUI 是 Terminal User Interface,也就是终端用户界面。它仍然运行在终端中,但相比普通 CLI,TUI 会提供更丰富的交互效果,例如状态栏、会话切换、浮动面板、模型选择器、工具调用过程展示等。

简单来说:

复制代码
CLI:更像"命令行聊天窗口"
TUI:更像"终端里的 Agent 工作台"

如果只是做简单问答,CLI 已经够用。如果想长期使用 Hermes,观察工具调用、管理多个会话、切换模型、查看状态,那么 TUI 的体验会更完整。

3. 启动 Hermes Agent 的几种方式

最基础的启动方式是:

复制代码
hermes

这个命令会启动默认交互界面。如果配置中默认是 CLI,它就进入经典 CLI;如果配置中默认是 TUI,它就进入 TUI。

也可以显式启动聊天模式:

复制代码
hermes chat

如果只想问一个问题,不进入连续交互,可以使用单次查询模式:

复制代码
hermes chat -q "请用一句话介绍 Hermes Agent"

这种方式适合脚本调用。例如你只是想让 Hermes 帮你快速总结某个内容,而不需要进入完整会话。

如果想强制进入 TUI,可以使用:

复制代码
hermes --tui

如果已经把默认界面配置为 TUI,但临时想回到经典 CLI,可以使用:

复制代码
hermes --cli

这说明 Hermes 的终端入口并不是单一形态,而是可以根据场景切换。

日常轻量使用可以用 CLI,复杂任务和多会话管理可以用 TUI,脚本化任务可以用 hermes chat -q

4. 第一次进入界面应该看什么?

启动 Hermes 后,界面最上方通常会显示一些运行信息。初学者不要急着直接提问,而是先观察这些信息。

比较重要的包括:

复制代码
当前模型
当前 provider
当前工作目录
可用工具
已加载 skills
上下文 token 使用情况
会话状态

这些信息很关键,因为它们决定了本次 Agent 会话的能力边界。

例如,当前工作目录决定 Hermes 默认能看到哪个项目环境;可用工具决定它能否读取文件、执行命令或访问浏览器;当前模型决定它的推理、工具调用和上下文处理能力。

所以,在真实使用 Hermes 之前,我建议先问它一个简单问题:

复制代码
请告诉我你当前的工作目录、可用工具和当前模型。

这个问题可以帮助我们确认三件事:

第一,它是否知道自己处于哪个目录。

第二,它是否能识别当前可用工具。

第三,它是否已经正确接入模型 provider。

如果这些基础信息都正确,再继续让它做项目分析或代码修改。

5. CLI 的核心体验:不是聊天,而是任务循环

普通聊天机器人的交互模式通常是:

复制代码
用户提问 → 模型回答

而 Hermes Agent 的 CLI 更接近下面这种任务循环:

复制代码
用户提出任务
Agent 理解任务
Agent 判断是否需要工具
Agent 调用工具读取信息或执行命令
Agent 根据工具结果继续推理
Agent 给出阶段性结论或继续执行

这就是 Agent 和 Chatbot 的区别。

例如,用户输入:

复制代码
请阅读当前项目,并告诉我这个项目主要由哪些模块组成。

普通 Chatbot 如果没有文件访问能力,只能让用户上传代码或粘贴目录结构。

而 Hermes Agent 如果具备文件和终端工具,就可以自己查看目录、读取 README、分析配置文件,然后再给出总结。

这时,用户看到的不只是最终回答,还能看到它中间可能执行了哪些操作。这种"工具调用过程可见"的体验,是 CLI/TUI 中非常重要的一部分。

6. 用 Hermes 读取项目目录

在终端中使用 Hermes,一个典型场景是让它理解当前项目。

例如,先进入一个代码项目目录:

复制代码
cd ~/projects/example-project
hermes

然后输入:

复制代码
请先不要修改任何文件,只阅读当前项目的目录结构,并告诉我这个项目大概是做什么的。

这个提示词有两个关键点。

第一,明确"不要修改任何文件"。

因为 Agent 具备工具调用能力后,它可能会主动提出修改建议,甚至执行修改操作。初学阶段最好先限制它只读项目。

第二,要求它先分析目录结构。

目录结构是理解项目的入口。一个项目的 README.mdpackage.jsonpyproject.tomlrequirements.txtsrc/tests/docs/ 等文件和目录,通常能反映项目类型、技术栈和功能边界。

一个比较好的提问方式是:

复制代码
请以只读方式分析当前项目:
1. 先查看目录结构;
2. 再读取 README 和主要配置文件;
3. 最后总结项目的功能、技术栈和主要模块。
不要修改任何文件。

这个提示词比"帮我看看这个项目"更好,因为它把任务步骤和权限边界都说清楚了。

7. 用 Hermes 做代码理解

当 Hermes 能够读取项目后,就可以进一步让它分析代码。

例如:

复制代码
请阅读 src 目录,找出项目的主入口文件,并解释程序启动后的主要执行流程。

或者:

复制代码
请分析这个项目中 routes、services、models 三类目录之间的关系。

这种任务非常适合 Agent。因为它不只是生成一段抽象解释,而是可以结合真实文件进行分析。

不过,提问时要注意范围。如果一上来就说:

复制代码
请帮我完整分析这个项目源码。

这个任务通常过大,Agent 可能会读取太多文件,导致上下文快速膨胀,也容易给出泛泛的总结。

更合理的方式是分阶段提问:

复制代码
第一步,请只分析项目目录和入口文件。

第二步,请分析核心业务模块之间的调用关系。

第三步,请分析测试目录覆盖了哪些功能。

这样既方便 Agent 执行,也方便用户理解。

8. 用 Hermes 执行命令

Hermes Agent 的 CLI 使用体验中,命令执行是非常关键的能力。

例如,可以让它执行安全的只读命令:

复制代码
请查看当前目录下有哪些文件。

或者:

复制代码
请运行测试命令,但不要修改任何文件。

在代码项目中,还可以让它先判断应该运行什么命令:

复制代码
请根据项目配置文件判断应该如何运行测试。先告诉我计划,再执行测试。

这个提示词比直接说"运行测试"更稳妥。因为不同项目的测试命令可能不同:

复制代码
npm test
pytest
cargo test
go test ./...
pnpm test

让 Hermes 先读取配置、判断命令,再执行,可以减少误操作。

我个人建议,在初期使用 Hermes 执行命令时,尽量遵守一个原则:

复制代码
先让它说明计划,再让它执行。

尤其是涉及安装依赖、删除文件、重写配置、批量修改代码时,更应该让它先输出计划。

例如:

复制代码
请先说明你准备执行哪些命令,以及每条命令的作用。得到我确认后再执行。

这样可以把 Agent 的自主性控制在合理范围内。

9. Slash Commands:CLI 中的快捷控制入口

Hermes Agent 的 CLI 支持 slash commands,也就是以 / 开头的命令。

这类命令不是普通聊天内容,而是对当前会话、模型、工具、skills、状态等进行控制的快捷入口。

输入 / 后,通常可以看到自动补全菜单。

常用命令包括:

复制代码
/help
/model
/tools
/skills
/status
/usage
/title
/sessions
/history
/compress
/background

这些命令可以大致分成几类。

9.1 会话管理类

复制代码
/new
/clear
/history
/title
/sessions
/resume

这类命令用于管理当前会话。比如新建会话、查看历史、设置标题、恢复之前的会话。

对于长期使用 Agent 来说,会话管理非常重要。因为不同任务最好放在不同会话中,避免上下文互相污染。

例如:

复制代码
/title Hermes Agent 源码学习

这样后续恢复会话时,就能更容易找到对应任务。

9.2 模型与配置类

复制代码
/model
/config
/reasoning
/verbose
/skin

这类命令用于调整当前模型、配置、推理强度和界面显示。

例如,在当前会话中切换模型,可以使用:

复制代码
/model

或者指定模型:

复制代码
/model provider:model-name

需要注意的是,在会话内的 /model 通常用于切换已经配置过的 provider。如果要新增 provider,仍然应该退出当前会话,在终端中运行:

复制代码
hermes model

这体现了 Hermes 的两个控制层次:终端命令负责全局配置,slash command 负责会话内控制。

9.3 工具与技能类

复制代码
/tools
/toolsets
/skills
/browser
/cron
/reload-mcp
/reload-skills

这类命令决定 Hermes 能使用哪些能力。

其中 /tools 很重要。它可以查看当前可用工具,也可以启用或禁用某些工具。

例如,在不希望 Agent 执行终端命令时,可以考虑禁用相关工具;在需要浏览器能力时,可以通过 /browser 管理浏览器连接;在安装新 skill 后,可以通过 /reload-skills 重新扫描。

这说明 Hermes 的工具能力不是固定死的,而是可以在会话中动态管理。

9.4 状态与资源类

复制代码
/status
/usage
/version
/insights

这类命令用于观察当前 Agent 的运行状态。

例如:

复制代码
/status

可以查看当前会话信息、模型、工作目录、token、工具调用概况等。

复制代码
/usage

则更适合查看 token 使用和成本情况。

对于长任务来说,这些命令非常有用。因为 Agent 执行越久,上下文、成本和工具调用越需要被监控。

10. TUI 的优势:更适合长期任务

相比经典 CLI,TUI 更适合长时间使用。

TUI 的优势主要体现在几个方面:

第一,状态展示更清楚。

它通常会显示当前模型、工作目录、工具、skills、MCP servers、上下文使用情况等信息。

第二,会话管理更方便。

TUI 支持更直观的会话切换,可以在不同任务之间切换,而不必完全依赖命令记忆。

第三,工具调用过程更容易观察。

当 Agent 执行任务时,TUI 可以用更清晰的方式展示它正在思考、正在运行工具、是否有后台任务等。

第四,长提示词输入更友好。

复杂任务往往不是一句话能说清楚的,TUI 对多行输入、编辑器输入、状态栏反馈的支持更适合实际工作。

因此,如果只是快速问答,可以使用 CLI;如果是持续分析项目、调试代码、管理多个任务,我更建议使用 TUI。

11. 多行输入与长提示词

在终端中使用 Agent,经常会遇到长提示词。例如你想让 Hermes 分析一个项目,并限制它不要修改文件,还要输出结构化报告。

这类任务不适合写成一行。

Hermes CLI/TUI 支持多行输入。常见方式包括:

复制代码
Alt+Enter
Ctrl+J
Shift+Enter

也可以使用外部编辑器编写长提示词:

复制代码
Ctrl+G

这会把当前输入内容放到外部编辑器中编辑。保存退出后,Hermes 会把编辑好的内容作为下一条 prompt 发送。

这个功能非常适合写复杂任务说明。

例如:

复制代码
请以只读方式分析当前项目。

目标:
1. 判断项目主要功能;
2. 找出主入口文件;
3. 梳理核心模块;
4. 判断测试文件是否覆盖核心功能;
5. 给出后续源码阅读路线。

限制:
1. 不要修改任何文件;
2. 不要安装任何依赖;
3. 执行命令前先说明目的;
4. 输出结果使用分层标题。

这类提示词如果直接写在一行里,非常难读;用多行输入或外部编辑器会舒服很多。

12. 会话恢复:让任务具有连续性

Hermes Agent 支持恢复之前的会话。

例如:

复制代码
hermes --continue

可以恢复最近一次会话。

也可以使用:

复制代码
hermes --resume <session_id>

恢复指定会话。

在长期学习或项目分析中,这个能力非常重要。比如今天分析了 Hermes Agent 的目录结构,明天想继续分析 skills 系统,就不需要重新开始。

你也可以在会话中先设置标题:

复制代码
/title Hermes Agent CLI 学习

后续再通过 session picker 或 resume 命令找回。

这其实是 Agent 和普通脚本工具的一个重要区别:Hermes 不只是执行一次命令,而是围绕一个长期任务保存会话轨迹。

13. 上下文压缩:长任务中的必要机制

长任务会带来一个问题:上下文越来越长。

当 Agent 连续分析很多文件、执行很多命令、生成很多回答时,当前会话的上下文会不断膨胀。如果不做处理,可能会导致模型成本增加、响应变慢,甚至接近上下文窗口限制。

Hermes 提供了上下文压缩相关能力,例如:

复制代码
/compress

它的作用是对当前会话进行总结压缩,把前面的长历史变成更短的摘要,从而为后续任务腾出上下文空间。

从使用经验上看,压缩适合在阶段性任务完成后使用。

例如:

复制代码
我们已经完成项目目录和入口文件分析,请压缩当前上下文,保留项目结构、关键文件和下一步计划。

这样后续继续分析源码时,Agent 不需要携带全部原始对话,只需要保留关键结论。

这也说明长期 Agent 不只是"记住越多越好",而是需要管理记忆和上下文,把重要信息保留下来,把冗余过程压缩掉。

14. 背景任务:让一个会话不被单个任务卡住

Hermes 支持背景任务,例如:

复制代码
/background 请分析 tests 目录,并总结测试覆盖情况。

这类命令可以让某个任务在后台运行,而当前会话继续处理其他事情。

这对于代码项目分析很有用。比如主会话继续讨论架构,后台任务去跑测试、读文档或分析某个子模块。

但是,背景任务也要谨慎使用。因为多个任务同时运行时,可能会产生更多工具调用、更多 token 成本,也可能让用户难以追踪每个任务的结果。

所以我建议初学阶段先掌握普通会话,再使用背景任务。

15. 使用 Hermes CLI 的安全习惯

Hermes Agent 能调用工具、执行命令、读取文件,这让它比普通 Chatbot 更有用,但也意味着更需要安全意识。

我建议形成几个基本习惯。

第一,刚开始分析项目时明确"只读"。

复制代码
请只读取和分析文件,不要修改、删除或创建任何文件。

第二,涉及命令执行时先让它说明计划。

复制代码
请先列出你准备执行的命令和原因,等我确认后再执行。

第三,不轻易开启自动批准模式。

有些模式会跳过危险命令确认,虽然可以提高效率,但也会增加误操作风险。除非你非常清楚任务边界,否则不要轻易使用。

第四,重要项目中先使用 git。

在让 Agent 修改代码前,最好确认当前项目已经使用 git 管理,并且工作区状态清楚。

例如:

复制代码
请先查看 git status,然后说明当前工作区是否干净。不要修改文件。

第五,让 Agent 小步修改。

不要一次让它"大规模重构整个项目"。更稳妥的方式是:

复制代码
先只修改一个函数。

先只补充一个测试文件。

先给出 patch 计划,不要直接应用。

这类小步控制可以显著降低风险。

16. 一个推荐的 CLI 使用流程

综合上面的内容,我认为学习 Hermes CLI/TUI 可以按照下面的流程进行。

第一步,启动 Hermes:

复制代码
cd ~/projects/example-project
hermes

第二步,确认状态:

复制代码
/status

第三步,只读分析项目:

复制代码
请只读分析当前项目,先查看目录结构和 README,总结项目功能、技术栈和主要模块。不要修改文件。

第四步,分析入口文件:

复制代码
请找出项目主入口文件,并解释程序启动后的主要执行流程。

第五步,分析核心模块:

复制代码
请分析 src 目录下核心模块之间的调用关系。

第六步,运行安全命令前先确认:

复制代码
请判断这个项目应该如何运行测试。先说明你准备执行的命令,不要立即执行。

第七步,阶段性总结:

复制代码
请总结目前已经理解的项目结构,并给出下一步源码阅读路线。

第八步,设置标题并保存上下文:

复制代码
/title example-project 源码学习

这个流程比较适合初学者,因为它从观察、只读、分析、计划、执行、总结逐步推进,而不是一上来就让 Agent 自由发挥。

17. 小结

这一期主要学习了 Hermes Agent 的 CLI 与 TUI 使用方式。

我的理解是,Hermes 的终端界面不是简单的聊天窗口,而是 Agent 进入真实工作流的入口。通过 CLI/TUI,用户可以让 Hermes 读取项目、调用工具、执行命令、管理会话、切换模型、观察状态,并在长期任务中逐步推进。

其中,最值得注意的不是某一个具体命令,而是使用方式的变化:

复制代码
普通聊天:用户问,模型答。
Hermes CLI:用户给任务,Agent 读取环境、调用工具、执行步骤、总结结果。

这意味着我们在使用 Hermes 时,也要改变提问习惯。不要只说"帮我看看",而要明确任务范围、执行步骤、权限边界和输出格式。

下一期,我将继续学习 Hermes Agent 的工具调用系统,重点分析它如何通过 tools 从"会说"变成"会做",以及文件工具、终端工具、浏览器工具和 MCP 工具之间的关系。

相关推荐
KaMeidebaby2 小时前
卡梅德生物技术快报|噬菌体筛选:技术实操:宽谱大肠杆菌噬菌体筛选全流程与性能验证方案
前端·人工智能·算法·数据挖掘·数据分析
数据库小学妹2 小时前
MySQL并行复制原理与调优实战:LOGICAL_CLOCK到WRITESET_SESSION全链路优化
数据库·经验分享·mysql·性能优化·dba
风吹夏回2 小时前
Vue3 + Element Plus 完整使用指南
前端·javascript·vue.js·element
周杰伦fans2 小时前
深入浅出AutoCAD .NET二次开发:HostApplicationServices完全解析
数据库·.net
AQin10122 小时前
【对比向】细算“成本”——Hive vs. Doris
大数据·数据库·hive·doris·实时数仓
承渊政道2 小时前
【MySQL数据库学习】MySQL基本查询(上)
linux·数据库·学习·mysql·bash·数据库开发·数据库系统
学计算机的计算基2 小时前
MySQL 性能调优面试复习:Explain、索引、慢查询、缓存和架构优化
java·数据库·笔记·mysql
疋瓞2 小时前
批处理_自定义带锁文件夹应用案例_03
运维·服务器
影寂ldy2 小时前
C# 泛型方法
java·前端·c#