ByteNoteByteNote

字节笔记本

2026年6月21日

hermes教程-提示与最佳实践

API中转
¥120

快速上手实用技巧

本合集收录了能让你立即更高效使用 Hermes Agent 的实用技巧。每个章节针对不同方面——浏览标题,跳转到你感兴趣的部分。

提示——不知道该选哪个模型?

运行 hermes setup --portal——你可以在一个订阅下获得 300 多个模型,包括 Claude、GPT-5 和 Gemini。参见 Nous Portal


获得最佳结果

明确你的需求

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

提前提供上下文

在请求中预先提供相关细节:文件路径、错误信息、预期行为。一条精心编写的消息胜过三轮澄清。直接粘贴错误回溯——Agent 可以解析它们。

使用上下文文件处理重复指令

如果你发现自己重复相同的指令(“使用制表符而不是空格”、“我们使用 pytest”、“API 在 /api/v2”),请将它们放入 AGENTS.md 文件中。Agent 会在每次会话中自动读取它——设置后零额外工作。

让 Agent 使用它的工具

不要试图手把手指导每一步。说“找到并修复失败的测试”,而不是“打开 tests/test_foo.py,查看第 42 行,然后……”。Agent 拥有文件搜索、终端访问和代码执行能力——让它自己探索和迭代。

对复杂工作流使用技能

在编写长提示解释如何做某事之前,先检查是否已有相关技能。输入 /skills 浏览可用技能,或者直接调用一个,如 /axolotl/github-pr-workflow

CLI 高级用户技巧

多行输入

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

粘贴检测

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

中断与重定向

在 Agent 响应过程中按一次 Ctrl+C 可中断它。然后你可以输入新消息来重定向它。在 2 秒内连续按两次 Ctrl+C 可强制退出。当 Agent 开始走错方向时,这非常有用。

使用 -c 恢复会话

忘记了上次会话的内容?运行 hermes -c 可精确恢复你离开时的状态,并恢复完整的对话历史。你也可以按标题恢复:hermes -r "我的研究项目"

剪贴板图片粘贴

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

斜杠命令自动补全

输入 / 并按 Tab 可查看所有可用命令。这包括内置命令(/compress/model/title)和所有已安装的技能。你不需要记住任何东西——Tab 补全会帮你搞定。

提示

使用 /verbose 循环切换工具输出显示模式:关闭 → 新 → 全部 → 详细。“全部”模式适合观察 Agent 在做什么;“关闭”模式在简单问答时最干净。

上下文文件

AGENTS.md:你的项目大脑

在项目根目录创建 AGENTS.md,包含架构决策、编码约定和项目特定指令。该文件会自动注入到每个会话中,因此 Agent 始终知道你的项目规则。

markdown
## 项目上下文
- 这是一个使用 SQLAlchemy ORM 的 FastAPI 后端
- 始终对数据库操作使用 async/await
- 测试放在 tests/ 中,并使用 pytest-asyncio
- 永远不要提交 .env 文件

SOUL.md:自定义个性

希望 Hermes 拥有稳定的默认语气?编辑 ~/.hermes/SOUL.md(如果使用自定义 Hermes 主目录,则为 $HERMES_HOME/SOUL.md)。Hermes 现在会自动生成一个初始 SOUL,并使用该全局文件作为实例范围的个性来源。

有关完整指南,请参见 将 SOUL.md 与 Hermes 结合使用

markdown
## 灵魂
你是一名资深后端工程师。要简洁直接。
除非被问到,否则跳过解释。偏好单行方案而非冗长解决方案。
始终考虑错误处理和边界情况。

使用 SOUL.md 实现持久的个性。使用 AGENTS.md 实现项目特定的指令。

.cursorrules 兼容性

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

发现机制

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

提示

保持上下文文件聚焦且简洁。每个字符都计入你的 token 预算,因为它们会被注入到每条消息中。

记忆与技能

记忆 vs. 技能:什么放哪里

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

何时创建技能

如果你发现一个任务需要 5 步以上并且你会再次执行,请让 Agent 为其创建一个技能。说“把你刚才做的保存为一个名为 deploy-staging 的技能”。下次只需输入 /deploy-staging,Agent 就会加载完整的流程。

管理记忆容量

记忆有明确的容量限制(MEMORY.md 约 2200 字符,USER.md 约 1375 字符)。当它填满时,Agent 会合并条目。你可以通过说“清理你的记忆”或“替换旧的 Python 3.9 备注——我们现在用的是 3.12”来帮助它。

让 Agent 记住

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

警告

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

性能与成本

不要破坏提示缓存

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

在达到限制前使用 /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 天使用模式的更广泛视图。

消息传递技巧

设置主频道

在你偏好的 Telegram 或 Discord 聊天中使用 /sethome 将其指定为主频道。定时任务结果和计划任务输出会发送到这里。如果没有设置,Agent 就没有地方发送主动消息。

使用 /title 组织会话

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

DM 配对实现团队访问

无需手动收集用户 ID 来创建允许列表,启用 DM 配对。当队友向机器人发送私信时,他们会收到一个一次性配对码。你使用 hermes pairing approve telegram XKGH5N7P 批准它——简单又安全。

工具进度显示模式

使用 /verbose 控制你看到多少工具活动。在消息平台中,少即是多——保持“新”模式,只看到新的工具调用。在 CLI 中,“全部”模式能让你实时看到 Agent 所做的一切。

提示

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

安全

对不可信代码使用 Docker

在处理不可信仓库或运行不熟悉的代码时,使用 Docker 或 Daytona 作为终端后端。在 .env 中设置 TERMINAL_BACKEND=docker。容器内的破坏性命令不会损害你的主机系统。

bash
## 在 .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("✓ 一切正常\n")
  • 在 PowerShell 中,你也可以将当前会话切换到 UTF-8 以处理控制台和本机命令输出:
powershell
$OutputEncoding = [Console]::OutputEncoding = [Text.UTF8Encoding]::new($false)

这能让 PowerShell 和子进程保持 UTF-8,并有助于避免仅限 Windows 的故障。

在选择“始终”之前三思

当 Agent 触发危险命令批准(rm -rfDROP TABLE 等)时,你会看到四个选项:一次会话始终拒绝。在选择“始终”之前要仔细考虑——这会永久地将该模式加入允许列表。先从“会话”开始,直到你感到放心。

命令批准是你的安全网

Hermes 在执行前会针对一系列危险模式检查每条命令。这包括递归删除、SQL 删除、将 curl 管道传输到 shell 等。在生产环境中不要禁用此功能——它的存在是有充分理由的。

警告

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

对消息机器人使用允许列表

永远不要在具有终端访问权限的机器人上设置 GATEWAY_ALLOW_ALL_USERS=true。始终使用平台特定的允许列表(TELEGRAM_ALLOWED_USERSDISCORD_ALLOWED_USERS)或 DM 配对来控制谁可以与你的 Agent 交互。

bash
## 推荐:按平台设置显式允许列表
TELEGRAM_ALLOWED_USERS=123456789,987654321
DISCORD_ALLOWED_USERS=123456789012345678
## 或者使用跨平台允许列表
GATEWAY_ALLOWED_USERS=123456789,987654321

有一个应该出现在此页面上的提示?请提交 issue 或 PR——欢迎社区贡献。


分享: