哪一种现象最接近当前虚构事故?
先保留真实错误、状态和已经发生的影响,不先重装或自动修复。
先保住现场,再缩小故障层;恢复不是重装,也不是让 Agent 继续试。
这是核心主线的最后一篇。你会建立固定排错顺序,检查状态、配置和日志,学会停止正在运行的任务,安全检查更新,并在独立目录中用 checkpoint 恢复一次人为制造的文件错误。结束时,你会留下
recovery-record.md和恢复后的status.txt。
hermes status、doctor、config check/migrate、logs、update --check、chat --checkpoints、checkpoints~/hermes-recovery-lab/,并在其中改写后恢复 status.txt;新增 recovery-record.md| 术语 | 中文直觉 | 本篇用途 |
|---|---|---|
| 状态检查 | 先判断哪个组件不正常 | 避免一上来重装所有东西 |
| 日志 | 程序记录的真实事件与错误 | 区分模型猜测和运行时证据 |
| Safe mode | 暂时禁用自定义配置、规则、插件和 MCP 的排错启动方式 | 判断故障是否来自个性化层 |
| Checkpoint | 写入前保存的文件系统快照 | 恢复 Agent 在当前目录造成的文件变化 |
| Rollback | 把工作目录恢复到某个 checkpoint | 不等于撤销外部消息、交易或服务端操作 |
| 现象 | 首先怀疑 | 第一项证据 |
|---|---|---|
| Hermes 命令无法启动 | 安装或本地环境 | hermes --version、终端错误 |
| 能启动但模型不回复 | provider、模型或凭据 | hermes status、hermes doctor |
| 模型回复但工具不可用 | toolset、依赖或权限 | hermes tools list --platform cli、工具错误 |
| 工具执行成功但结果不对 | 任务说明或验收 | 交付物与输入的人工核对 |
| 只有自定义环境会失败 | 配置、规则、plugin 或 MCP | hermes chat --safe-mode 对比 |
最常见的错误是把最后一类“内容不合格”当成安装故障。命令退出码为 0、文件存在或模型有回复,都不能替代业务验收。
不要在每一层同时改东西。一次只验证一个假设,才能定位原因。
互动实验室
节点和证据都是虚构的。沿着一条最小路径走完,练习先停止、保留证据、再判断故障层。
先保留真实错误、状态和已经发生的影响,不先重装或自动修复。
如果 Hermes 正在一个会话中执行长任务,输入:
/stop/stop 用于停止后台进程和正在运行的任务。若界面不再响应,退出当前 Hermes 进程。停止后先检查真实影响:哪些文件已写入、命令是否仍有子进程、外部动作是否已经发生。
停止不是恢复:
/stop 自动回到旧版本;在系统终端依次运行:
hermes --version
hermes status
hermes config check三条命令分别回答:当前安装是什么、组件目前怎样、配置是否缺失或过期。它们以读取和检查为主;config check 不自动迁移配置。
需要更完整、可分享前仍应人工审查的状态时:
hermes status --all官方 CLI help说明该输出会做分享脱敏,但脱敏不是绝对保证。发布前检查用户名、路径、平台名称和业务信息。
再运行诊断:
hermes doctordoctor 会检查配置与依赖。警告可能只是可选能力未配置;根据你当前任务需要判断是否阻塞。不要一看到警告就运行 --fix。
先列出可用日志:
hermes logs list查看最近错误:
hermes logs errors --since 1h查看 Agent 日志中 warning 及以上级别:
hermes logs --level WARNING --since 1h这些命令读取本地日志,不修复问题。成功模式是命令正常返回日志内容或明确表示没有匹配记录;不要编造“应该出现”的错误行。
日志可能包含路径、提示片段、会话 ID 或集成信息。对外求助前只截取与故障相关的最小片段,并删除秘密和私人内容。
如果普通会话异常,但安装和 provider 看起来正常,可以从一个无关正式项目的安全目录运行:
hermes chat --safe-mode本地 CLI help说明,safe mode 会禁用用户配置、项目规则与 Memory 注入、plugins 和 MCP servers,用于隔离故障来源。它不是日常工作模式,也不会删除这些设置。
判断:
只检查是否有更新:
hermes update --check本地 CLI help确认 --check 不安装任何内容。若确有更新,先阅读变更、保存未完成工作,并确认没有其他 Hermes 进程正在关键任务中。
执行更新使用:
hermes update该命令会拉取代码并重新安装依赖,可能触发配置迁移;它有实际系统影响,本篇不替你执行。当前 CLI 还支持更新前备份选项,是否启用以 hermes update --help 的当日说明为准。
更新后的最低验证顺序:
hermes --version
hermes config check
hermes doctor
hermes status如果配置检查提示迁移,先审查再运行:
hermes config migrate迁移会修改配置,不应在不了解变化时批量自动执行。更新也不能修复错误任务说明、过期凭据或外部服务故障。
本练习只操作一个新目录和一个虚构文件。checkpoint 是可选功能;本篇按会话启用,不修改全局配置。
在系统终端运行:
mkdir -p ~/hermes-recovery-lab
printf 'mode=ready\n' > ~/hermes-recovery-lab/status.txt
cd ~/hermes-recovery-lab第一条创建独立目录;第二条创建或覆盖该目录中的 status.txt;第三条进入目录。只在确认路径准确后执行,因为 > 会覆盖同名文件。
检查初始内容:
python3 -c "from pathlib import Path; print(Path('status.txt').read_text(), end='')"这是只读检查。成功时应显示你刚写入的 mode=ready;该结果来自本次命令,不是教程虚构的程序输出。
PowerShell 对应准备方式:
New-Item -ItemType Directory -Force "$HOME\hermes-recovery-lab"
Set-Content -Path "$HOME\hermes-recovery-lab\status.txt" -Value "mode=ready"
Set-Location "$HOME\hermes-recovery-lab"
Get-Content status.txt在实验目录的系统终端运行:
hermes chat --checkpoints本地 CLI help与官方 Checkpoints 文档都确认:--checkpoints 为本次会话启用写入前快照。官方文档说明 checkpoint 默认关闭,并保存在 Hermes 的 shadow store,不修改真实项目的 .git。
进入会话后输入:
这是恢复练习。请只把当前目录的 status.txt 完整改写为一行:mode=broken
不要修改其他文件,不要运行终端命令,不要联网。写完后重新读取 status.txt 并停止。批准前确认对象只有当前目录的 status.txt。成功模式是文件变为 mode=broken,并且写入前产生一个可列出的 checkpoint;界面显示形式可能随版本变化。
在同一 Hermes 会话输入:
/rollback它应列出当前目录的 checkpoint 和编号。不要假定编号一定是 1;以你屏幕上的真实列表为准。
先预览目标 checkpoint:
/rollback diff <N>把 <N> 换成列表中的真实编号。检查 diff 是否只涉及 status.txt 从 mode=ready 变到 mode=broken。范围不符就停止,不要恢复。
确认后输入:
/rollback <N>官方文档说明恢复会还原工作目录中的受跟踪文件,并撤销上一轮对话,使上下文与文件状态一致。恢复后退出 Hermes,在系统终端重新读取:
python3 -c "from pathlib import Path; print(Path('status.txt').read_text(), end='')"验收标准是内容回到 mode=ready。如果没有恢复,先重新列出 checkpoint 和当前目录,不要连续尝试多个编号。
在文本编辑器中创建:
~/hermes-recovery-lab/recovery-record.md写入以下内容,使用你真实观察到的信息,不复制虚构输出:
# Recovery Record
- 故障范围:
- 停止方式:
- 初始状态:
- 失败状态:
- 使用的 checkpoint 编号:
- diff 范围:
- 恢复后验证:
- 未受影响的对象:
- 下次预防措施:这份记录是本篇作品的一部分。它要求你区分事实证据和推断,而不是只写“已修复”。
Checkpoint 只覆盖受支持的本地文件变化,并有目录、文件大小和存储限制。它不能自动恢复:
因此,高风险任务仍应先备份、先草稿、先预览 diff,并由人确认具体执行。
~/hermes-recovery-labstatus.txt;预览并恢复只涉及该文件的 checkpointdoctor --fix、配置迁移、执行更新、清空 checkpoint store、恢复范围超出实验目录、任何外部操作可靠排错的核心是缩小变量。先停止可以限制影响;状态和配置告诉你系统在哪一层异常;日志给出运行证据;safe mode隔离个性化层;更新只在版本原因成立时使用;checkpoint 恢复的是已确认范围内的本地文件。
“重装”同时改变太多变量,还可能覆盖现场证据。它应该是安装损坏得到证据后的选择,不是所有错误的第一步。
hermes status、hermes config check 和 hermes doctor。hermes chat --safe-mode 做隔离对比。hermes update --check,再决定是否更新。/rollback diff <N>;恢复后重新读取文件并验收。如果你一直沿用第 03 课的 ~/hermes-first-task,本课不要另开一个无关案例。选择一个可恢复的小错误,例如暂时改错文件名或从错误目录启动,然后把下面五项写进 recovery-record.md:
不要删除三份原始输入,也不要把重装当作练习步骤。这样,第 03 课的文件任务、第 06—09 课留下的说明与分类,以及本课的恢复记录会组成一条连续证据链。
~/hermes-recovery-lab/status.txt
~/hermes-recovery-lab/recovery-record.mdstatus.txt 必须恢复为初始状态;recovery-record.md 必须记录真实 checkpoint 编号、diff 范围和恢复验证。不要把教程中的占位符当作执行证据。
hermes update --check 理解只检查与执行更新的区别status.txt 已恢复为初始内容recovery-record.md 记录了真实证据和未受影响范围你现在可以在本机完成一项边界清楚的任务,管理会话和工具,判断哪些经验值得复用,并在失败时停止、定位和恢复。后续场景课程会把这些方法带到消息平台、Cron 和多媒体任务中;无论入口怎样变化,任务边界、最小权限、真实证据和人工验收仍然不变。
下一篇将进入场景课程:接入消息平台,以飞书为完整主案例,从移动端发送第一项受控任务,并核对平台权限和会话边界。
课末检查
重装可能抹掉线索或引入新变量,应先停止、观察状态并保留真实错误。
现象、证据、原因判断、修复动作和修复后的复查。
便于判断问题是否与版本相关,并为失败后的恢复或回滚保留基线。
快速回顾