ByteNoteByteNote

字节笔记本

2026年5月16日

Hermes Agent 使用技巧与最佳实践

API中转
¥120

Hermes Agent 是一款功能强大的 AI 代理工具,掌握正确的使用方式可以显著提升开发效率。本文汇总了 Hermes Agent 的使用技巧和最佳实践,涵盖提示词优化、CLI 快捷操作、上下文文件、记忆与技能管理、性能成本优化以及安全防护等方面,帮助你快速上手并充分发挥其潜力。

获取最佳结果

明确描述你的需求

模糊的提示词只会产出模糊的结果。与其说"修复代码",不如说"修复 api/handlers.py 第 47 行的 TypeError —— process_request() 函数从 parse_body() 接收到了 None。"你提供的上下文越多,所需的迭代次数越少。

前置提供上下文

在请求开头就给出相关细节:文件路径、错误消息、预期行为。一条精心构造的消息胜过三轮澄清。直接粘贴错误堆栈跟踪 —— Agent 能够解析它们。

使用 Context Files 存放重复指令

如果你发现自己反复输入相同的指令("用 Tab 不用空格"、"我们用 pytest"、"API 地址是 /api/v2"),把它们写进 AGENTS.md 文件。Agent 会在每次会话中自动读取 —— 一次配置,永久生效。

让 Agent 自主使用工具

不要事无巨细地指导每一步。说"找到并修复失败的测试"即可,而不是"打开 tests/test_foo.py,看第 42 行,然后……"Agent 拥有文件搜索、终端访问和代码执行能力 —— 让它自主探索和迭代。

使用 Skills 处理复杂工作流

在编写冗长提示词解释如何做某事之前,先检查是否已有对应的 Skill。输入 /skills 浏览可用技能,或直接调用如 /axolotl/github-pr-workflow

CLI 进阶技巧

多行输入

Alt+EnterCtrl+JShift+Enter 可插入换行而不发送消息。Shift+Enter 仅在终端将其作为独立按键发送时生效(Kitty / foot / WezTerm / Ghostty 默认支持;iTerm2 / Alacritty / VS Code 终端需启用 Kitty 键盘协议)。另外两个快捷键在所有终端中均可用。

粘贴检测

CLI 自动检测多行粘贴。直接粘贴代码块或错误堆栈即可 —— 不会将每行作为独立消息发送。粘贴内容会被缓冲并作为一条消息发送。

中断与重定向

按一次 Ctrl+C 可中断 Agent 的当前响应。然后你可以输入新消息来重定向它。2秒内双击 Ctrl+C 可强制退出。当 Agent 走错方向时,这个功能极为有用。

使用 -c 恢复会话

忘了上次会话的内容?运行 hermes -c 即可恢复到上次中断的位置,完整对话历史随之还原。也可以按标题恢复:hermes -r "my research project"

剪贴板图片粘贴

Ctrl+V 可直接将剪贴板中的图片粘贴到聊天中。Agent 使用视觉能力分析截图、图表、错误弹窗或 UI 线框图 —— 无需先保存为文件。

Slash 命令自动补全

输入 / 然后按 Tab 可查看所有可用命令,包括内置命令(/compress/model/title)和所有已安装的 Skills。无需记忆任何内容 —— Tab 补全为你服务。

使用 /verbose 在工具输出显示模式间循环切换:off → new → all → verbose。"all" 模式适合观察 Agent 的操作过程;"off" 模式最适合简单的问答场景。

Context Files

AGENTS.md:项目的知识库

在项目根目录创建 AGENTS.md,写入架构决策、编码规范和项目特定指令。该文件会在每次会话中自动注入,确保 Agent 始终了解项目规则。

markdown
# Project Context
- This is a FastAPI backend with SQLAlchemy ORM
- Always use async/await for database operations
- Tests go in tests/ and use pytest-asyncio
- Never commit .env files

SOUL.md:自定义个性

想让 Hermes 拥有稳定的默认风格?编辑 ~/.hermes/SOUL.md(或使用自定义 Hermes 主目录时的 $HERMES_HOME/SOUL.md)。Hermes 现在会自动生成一个初始 SOUL 文件,并将该全局文件作为实例级个性来源。

markdown
# Soul
You are a senior backend engineer. Be terse and direct.
Skip explanations unless asked. Prefer one-liners over verbose solutions.
Always consider error handling and edge cases.

使用 SOUL.md 定义持久个性,使用 AGENTS.md 存放项目特定指令。

.cursorrules 兼容性

已经有 .cursorrules.cursor/rules/*.mdc 文件?Hermes 同样会读取它们。无需重复编码规范 —— 它们会从工作目录自动加载。

发现机制

Hermes 在会话启动时从当前工作目录加载顶层 AGENTS.md。子目录中的 AGENTS.md 文件在工具调用期间惰性发现(通过 subdirectory_hints.py)并注入到工具结果中 —— 它们不会预先加载到系统提示词中。

保持 Context Files 简洁聚焦。每个字符都会占用你的 Token 预算,因为它们会被注入到每一条消息中。

记忆与 Skills

记忆 vs. Skills:各归其位

记忆(Memory) 用于存储事实:你的环境、偏好、项目位置以及 Agent 了解到的关于你的信息。Skills 用于存储流程:多步骤工作流、工具特定指令和可复用方案。记忆存"是什么",Skills 存"怎么做"。

何时创建 Skills

如果某个任务需要 5 步以上且你会重复执行,就让 Agent 为其创建 Skill。说"把刚才的操作保存为名为 deploy-staging 的 Skill。"下次只需输入 /deploy-staging,Agent 就会加载完整流程。

管理记忆容量

记忆有意的设置了上限(MEMORY.md 约 2,200 字符,USER.md 约 1,375 字符)。当容量满时,Agent 会合并条目。你可以说"清理一下记忆"或"替换旧的 Python 3.9 备注 —— 我们现在用 3.12 了"来帮助管理。

让 Agent 记住信息

在高效的会话结束后,说"记住这些以备下次使用",Agent 会保存关键要点。你也可以具体指定:"保存到记忆:我们的 CI 使用 GitHub Actions,工作流是 deploy.yml。"

记忆是冻结快照 —— 会话期间的变更不会出现在系统提示词中,直到下次会话开始。Agent 会立即写入磁盘,但提示词缓存不会在会话中途失效。

性能与成本

不要破坏 Prompt Cache

大多数 LLM 提供商会缓存系统提示词前缀。如果你保持系统提示词稳定(相同的 Context Files、相同的记忆),会话中的后续消息会获得 缓存命中,成本显著降低。避免在会话中途更改模型或系统提示词。

在达到限制前使用 /compress

长会话会累积 Token。当你注意到响应变慢或被截断时,运行 /compress。这会摘要对话历史,保留关键上下文的同时大幅减少 Token 数量。使用 /usage 查看当前状态。

委派并行工作

需要同时研究三个主题?让 Agent 使用 delegate_task 并行处理子任务。每个子 Agent 独立运行并拥有自己的上下文,只返回最终摘要 —— 大幅减少主对话的 Token 消耗。

使用 execute_code 处理批量操作

不要逐个运行终端命令,让 Agent 编写脚本一次性完成。"写一个 Python 脚本将所有 .jpeg 文件重命名为 .jpg 并执行"比逐个重命名更便宜、更快速。

选择合适的模型

使用 /model 在会话中途切换模型。复杂推理和架构决策使用前沿模型(Claude Sonnet/Opus, GPT-4o)。简单任务如格式化、重命名或样板代码生成可切换到更快的模型。

定期运行 /usage 查看 Token 消耗情况。运行 /insights 获取过去 30 天使用模式的更广泛视图。

消息平台技巧

设置 Home Channel

在首选的 Telegram 或 Discord 聊天中使用 /sethome 将其设为 Home Channel。定时任务结果和计划任务输出会发送到这里。不设置的话,Agent 就没有地方发送主动消息。

使用 /title 组织会话

/title auth-refactor/title research-llm-quantization 为会话命名。命名的会话可以通过 hermes sessions list 轻松找到,用 hermes -r "auth-refactor" 恢复。未命名的会话会堆积,变得无法区分。

DM Pairing 实现团队访问

无需手动收集用户 ID 来配置白名单,启用 DM Pairing 即可。当队友私信 Bot 时,他们会获得一个一次性配对码。你用 hermes pairing approve telegram XKGH5N7P 批准 —— 简单且安全。

工具进度显示模式

使用 /verbose 控制你看到的工具活动量。在消息平台中,通常越少越好 —— 保持 "new" 模式只查看新的工具调用。在 CLI 中,"all" 模式能让你实时观察 Agent 的一切操作。

在消息平台上,会话会在空闲超时后自动重置(默认:24 小时)或每天凌晨 4 点重置。如需更长会话,可在 ~/.hermes/config.yaml 中按平台调整。

安全

使用 Docker 运行不受信任的代码

处理不受信任的仓库或运行陌生代码时,使用 Docker 或 Daytona 作为终端后端。在 .env 中设置 TERMINAL_BACKEND=docker。容器内的破坏性命令无法伤害宿主系统。

bash
# In your .env:
TERMINAL_BACKEND=docker
TERMINAL_DOCKER_IMAGE=hermes-sandbox:latest

避免 Windows 编码陷阱

在 Windows 上,某些默认编码(如 cp125x)无法表示所有 Unicode 字符,可能导致测试或脚本写文件时出现 UnicodeEncodeError

  • 优先使用显式 UTF-8 编码打开文件:
python
with open("results.txt", "w", encoding="utf-8") as f:
    f.write("✓ All good\n")
  • 在 PowerShell 中,也可以将当前会话切换为 UTF-8:
powershell
$OutputEncoding = [Console]::OutputEncoding = [Text.UTF8Encoding]::new($false)

这能让 PowerShell 和子进程使用 UTF-8,避免仅 Windows 上出现的故障。

选择"Always"前请三思

当 Agent 触发危险命令审批(rm -rfDROP TABLE 等)时,你会看到四个选项:oncesessionalwaysdeny。选择 "always" 前请仔细考虑 —— 它会永久将该模式加入白名单。在你感到舒适之前,先用 "session"。

命令审批是你的安全网

Hermes 在执行每条命令前都会对照精心策划的危险模式列表进行检查,包括递归删除、SQL DROP、管道 curl 到 shell 等。不要在生产环境中禁用此功能 —— 它的存在是有充分理由的。

在容器后端(Docker、Singularity、Modal、Daytona)中运行时,危险命令检查会被跳过,因为容器本身就是安全边界。请确保容器镜像已正确锁定。

消息 Bot 使用白名单

永远不要在拥有终端访问权限的 Bot 上设置 GATEWAY_ALLOW_ALL_USERS=true。始终使用平台特定的白名单(TELEGRAM_ALLOWED_USERSDISCORD_ALLOWED_USERS)或 DM Pairing 来控制谁可以与 Agent 交互。

bash
# Recommended: explicit allowlists per platform
TELEGRAM_ALLOWED_USERS=123456789,987654321
DISCORD_ALLOWED_USERS=123456789012345678

# Or use cross-platform allowlist
GATEWAY_ALLOWED_USERS=123456789,987654321

有应该加入本页的技巧?欢迎提交 Issue 或 PR —— 社区贡献备受期待。

分享: