CLI 与交互模式
Hermes Agent 提供了丰富的命令行界面和交互模式,适应不同使用习惯的开发者。本章将系统介绍 CLI 命令、斜杠命令、多行输入模式、会话管理和输出格式控制等核心功能。
CLI 全命令参考
在终端中运行 hermes-agent --help 可以查看所有可用的命令和选项:
hermes-agent --help
输出将列出以下核心命令和选项:
| 命令/选项 | 用途 | 示例 |
|---|---|---|
hermes-agent init | 初始化配置文件 | hermes-agent init |
hermes-agent "任务描述" | 运行一次任务 | hermes-agent "修复这个 bug" |
hermes-agent --interactive | 进入交互式对话模式 | hermes-agent -i |
hermes-agent --resume | 恢复上次会话 | hermes-agent -r |
hermes-agent --version | 查看版本信息 | hermes-agent --version |
hermes-agent --verbose | 开启详细输出 | hermes-agent -v "任务" |
hermes-agent --model | 临时切换模型 | hermes-agent --model gpt-4o "任务" |
hermes-agent --output | 指定输出格式 | hermes-agent --output json "任务" |
hermes-agent sessions list | 列出所有保存的会话 | hermes-agent sessions list |
hermes-agent sessions delete | 删除指定会话 | hermes-agent sessions delete <id> |
hermes-agent config show | 查看当前配置 | hermes-agent config show |
hermes-agent config set | 修改配置项 | hermes-agent config set temperature 0.5 |
常用选项详解
--model 选项允许你在不修改配置文件的情况下临时切换模型。这在需要针对不同任务使用不同模型时非常有用:
# 临时使用 GPT-4o 完成一个任务
hermes-agent --model gpt-4o "重构这个 API 路由"
# 临时使用 Claude Sonnet
hermes-agent --model claude-sonnet-4-20250514 "分析这个算法的复杂度"
--verbose 选项开启后,Agent 会输出每一步的思考过程和工具调用细节。这对调试和理解 Agent 的行为非常有帮助:
hermes-agent --verbose "分析这个函数的性能瓶颈"
# 输出会包含 Agent 的内部思考过程、工具选择理由和执行结果
--max-steps 选项用于设置任务的最大执行步数,可以在不修改配置文件的前提下临时调整:
# 为复杂任务设置较大的步数上限
hermes-agent --max-steps 80 "迁移整个项目的 API 客户端"
斜杠命令清单与用法
在交互式模式(hermes-agent -i)下,你可以使用斜杠命令来控制和监控 Agent 的行为:
# 启动交互模式
hermes-agent -i
# 然后你可以输入以下斜杠命令
| 斜杠命令 | 功能 | 使用场景 |
|---|---|---|
/help | 显示帮助信息 | 查看所有可用命令 |
/clear | 清除当前对话历史 | 开始新的话题 |
/reset | 重置 Agent 状态 | Agent 行为异常时 |
/status | 查看当前任务执行状态 | 了解任务进度 |
/stop | 停止当前执行的任务 | 任务不符合预期时 |
/continue | 继续执行被中断的任务 | 修复问题后继续 |
/compact | 压缩上下文以释放 Token | 上下文接近窗口上限时 |
/save | 保存当前会话 | 需要中断工作时 |
/load | 加载之前保存的会话 | 恢复之前的工作 |
/history | 查看对话历史 | 回顾之前的交流 |
/model | 查看或切换当前模型 | 需要更换模型时 |
/cost | 查看当前会话的 Token 消耗 | 关注成本时 |
/export | 导出对话记录 | 记录或分享 |
# 交互模式下的实际操作示例
# 首先启动交互模式
hermes-agent -i
# 然后在提示符下输入:
> 分析这个项目的架构设计
# 在 Agent 执行过程中,你可以随时使用斜杠命令:
> /status
# 输出:已完成 5/12 步,当前正在重构 service 层
> /compact
# 输出:上下文已压缩,释放了约 40% 的 Token 空间
多行输入模式
当需要向 Agent 描述复杂的任务时,单行输入可能不够用。Hermes Agent 支持多行输入模式,让你可以编写结构化的复杂提示:
# 使用 \c 或 \edit 进入多行编辑模式
hermes-agent -i
> \edit
# 编辑器会打开(默认使用 $EDITOR 环境变量指定的编辑器),你可以在里面编写:
# 任务:为博客系统添加标签云功能
# 要求:
# 1. 数据库模型:新增 Tag 和 PostTag 两个表
# 2. API 端点:GET /api/tags, POST /api/tags, DELETE /api/tags/:id
# 3. 前端组件:在侧边栏显示标签云,标签大小按使用频率排列
# 4. 测试:为新增功能添加单元测试和集成测试
# 注意事项:
# - 遵循项目现有的代码风格和命名规范
# - 确保新增代码向后兼容
# - 添加必要的数据库迁移脚本
#
# 保存退出编辑器后,Agent 开始执行上述任务
# 也可以直接在命令行中使用换行符(在支持多行的终端中):
> 帮我重构这段代码:
> 1. 将函数拆分为多个小函数
> 2. 添加类型注解
> 3. 编写 docstring
> 4. 添加单元测试
多行输入模式适合以下场景:
- 需要详细描述任务约束:比如需要遵循特定的代码规范或架构设计
- 需要列出多个子任务:清晰的结构化描述有助于 Agent 更准确地理解任务
- 需要提供示例代码:可以在编辑器中粘贴参考代码
多行输入与一次性任务描述的区别在于:编辑器模式可以随时修改和调整描述内容,适合需要反复推敲任务描述的复杂场景。
会话管理
Hermes Agent 支持完整的会话管理功能,包括保存、恢复、历史查看和清理:
自动保存:在交互模式下,默认开启自动保存。每完成一个步骤,会话会自动保存到 .hermes/sessions/ 目录中。
# 查看所有保存的会话
hermes-agent sessions list
# 恢复特定的会话
hermes-agent --resume
# 或者指定会话 ID
hermes-agent --resume --session-id <session_id>
# 删除不再需要的会话
hermes-agent sessions delete <session_id>
# 清除所有过期的会话(默认保留最近 30 天)
hermes-agent sessions cleanup --days 7
手动保存与恢复:
# 在交互模式下手动保存
> /save my-blog-refactor
# 加载指定名称的会话
> /load my-blog-refactor
会话管理的核心价值在于:
- 工作中断恢复:基于会话的断点续传能力,即使终端关闭或机器重启,也可以从上次中断的地方继续
- 任务回放复盘:可以回顾之前的任务执行过程,学习 Agent 的决策模式
- 调试分析:当任务执行不符合预期时,可以检查会话日志来分析问题根因
打断 Agent 的正确方式
在使用过程中,你可能需要临时打断正在执行的任务。Hermes Agent 提供两种中断模式:
Gentle 模式(默认):当用户发送中断信号时,Agent 会等当前步骤执行完成后才响应。这种方式避免了在文件写入或命令执行中间打断导致的状态不一致。
# 在 Agent 执行过程中按 Ctrl+C
# Gentle 模式下会在当前步骤完成后提示:
# ⏸ 任务已暂停。输入 /continue 继续,或 /stop 停止
Force 模式:立即停止当前执行。配置文件中设置 interrupt_mode: force 即可启用。此模式虽然在响应速度上更快,但可能导致状态不一致(例如在写入文件过程中突然中断导致文件损坏)。
两种中断模式的对比:
| 特性 | Gentle 模式 | Force 模式 |
|---|---|---|
| 响应速度 | 较慢(等待当前步骤完成) | 立即 |
| 安全性 | 高(状态一致) | 中(可能状态不一致) |
| 适用场景 | 生产环境、文件密集型任务 | 调试、测试场景 |
| 默认 | 是 | 否 |
输出格式控制
Hermes Agent 支持三种输出格式,适应不同的使用场景:
# 普通模式(默认):适合人类阅读
hermes-agent "统计代码行数"
# 输出:友好的文本格式,包含 Agent 的思考过程和最终结果
# JSON 模式:适合程序处理
hermes-agent --output json "统计代码行数"
# 输出:结构化的 JSON 数据,包含 steps 数组和 final_result
JSON 模式的输出示例:
{
"task": "统计代码行数",
"duration_ms": 3421,
"total_steps": 5,
"steps": [
{"type": "think", "content": "需要遍历目录下所有代码文件"},
{"type": "act", "tool": "shell", "input": "find . -name '*.py' | xargs wc -l", "output": "...", "status": "success"}
],
"final_result": {
"total_lines": 15234,
"files_count": 47,
"file_types": [".py", ".ts", ".js"]
},
"token_usage": {
"prompt_tokens": 1240,
"completion_tokens": 580,
"total_tokens": 1820
}
}
静默模式:适用于脚本集成,只输出最终结果:
# 静默模式:只输出最终结果,不输出中间过程
hermes-agent --output silent "统计代码行数"
# 输出:共 15234 行代码,分布在 47 个文件中
三种输出格式的适用场景:
| 格式 | 适用场景 | 优势 |
|---|---|---|
| 普通 (text) | 日常交互开发 | 可读性强,信息完整 |
| JSON | CI/CD 流水线、自动化脚本 | 结构化数据,便于程序解析 |
| 静默 (silent) | Shell 脚本、管道操作 | 输出简洁,易于在脚本中使用 |
输出格式控制结合会话管理,可以构建出强大的自动化工作流。例如,在 CI 流水线中使用 JSON 模式获取结构化的执行报告,然后通过静默模式将结果直接传递给下游任务。
本章小结
本章全面介绍了 Hermes Agent 的 CLI 命令系统,包括全部命令和选项的参考、斜杠命令的详细说明、多行输入模式的操作方法、会话管理的最佳实践、打断 Agent 的正确方式以及输出格式控制。掌握这些 CLI 技能可以让你在日常使用中高效地驾驭 Hermes Agent。在下一章中,我们将探讨大模型提供商的配置和切换策略,帮助你针对不同类型的任务选择最合适的模型。