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)日常交互开发可读性强,信息完整
JSONCI/CD 流水线、自动化脚本结构化数据,便于程序解析
静默 (silent)Shell 脚本、管道操作输出简洁,易于在脚本中使用

输出格式控制结合会话管理,可以构建出强大的自动化工作流。例如,在 CI 流水线中使用 JSON 模式获取结构化的执行报告,然后通过静默模式将结果直接传递给下游任务。

本章小结

本章全面介绍了 Hermes Agent 的 CLI 命令系统,包括全部命令和选项的参考、斜杠命令的详细说明、多行输入模式的操作方法、会话管理的最佳实践、打断 Agent 的正确方式以及输出格式控制。掌握这些 CLI 技能可以让你在日常使用中高效地驾驭 Hermes Agent。在下一章中,我们将探讨大模型提供商的配置和切换策略,帮助你针对不同类型的任务选择最合适的模型。