Hermes 里的 YOLO 很诱人:少点确认,任务能连续跑,Agent 不会每隔几步就停下来问一句“可以吗”。但它真正适合的用法不是“永远全开”,而是按任务风险分层:日常用 smart,一次性可信任务临时 --yolo,改代码时配合 git worktree 和 checkpoints,生产机器和真实数据目录里不要裸奔。
一句话版本:
smart 日常用,--yolo 临时用,配合 git/worktree/checkpoints/容器兜底,不建议全局 off。先分清三个概念
Hermes 的审批策略大致可以按风险从低到高理解:
| 模式 | 常见命令 | 适合场景 | 风险 |
|---|---|---|---|
| 手动审批 | approvals.mode manual | 新环境、生产机器、你还不信任任务时 | 最安全,但打断多 |
| 智能审批 | approvals.mode smart | 日常默认模式 | 低风险自动放行,高风险仍确认 |
| YOLO / 跳过审批 | --yolo 或 approvals.mode off | 临时任务、隔离目录、测试环境 | 最顺手,也最容易误伤 |
这里最重要的一点是:--yolo 是临时启动参数,退出当前任务就结束;approvals.mode off 是配置级别的长期跳过审批。后者不要随手开在主力机器上。
日常推荐:approvals.mode smart
日常使用最推荐 smart:
hermes config set approvals.mode smart它的效果是:
- 低风险命令自动放行。
- 高风险命令仍然提示确认。
- 比纯手动少打断。
- 比 YOLO 或
off更安全。
比如读取文件、列目录、跑普通检查这类动作,通常不需要你一直点确认;但涉及删除、覆盖、系统服务、敏感路径或其他高风险行为时,仍会停下来让你确认。
设置完可以查看配置:
hermes config show | sed -n '/^approvals:/,/^[^ ]/p'期望看到类似:
approvals:
mode: smart如果是 Telegram Gateway,配置改完后建议重启或让新会话重新读取配置:
hermes gateway restart或在 Telegram 里执行当前版本支持的重启命令,例如:
/restart临时 YOLO:只给一次任务放权
如果你确定当前任务可信,而且目录是测试目录、临时目录或干净 repo,可以临时启动:
hermes --yolo适合这类任务:
- 在临时目录里生成脚本。
- 在测试项目里连续修改和跑测试。
- 让 Agent 自动整理一批无敏感数据的文件。
- 新装机器上批量初始化配置,但你已经知道每一步大概会做什么。
临时 --yolo 的好处是边界清楚:这个 Hermes 进程结束后,权限就没了。它不像 approvals.mode off 那样留在全局配置里,未来每个任务都默认跳过确认。
不适合这样用:
cd ~
hermes --yolo家目录里通常有 .ssh、.config、浏览器数据、token、密钥和大量没有版本控制的文件。让 Agent 在这里无确认自由操作,风险太高。
改代码:YOLO 配 worktree
改代码时,更稳的组合是:
hermes --yolo --worktree或者短参数:
hermes -w --yolo效果是让 Agent 在独立 git worktree 里工作,而不是直接污染主工作区。这样它可以更大胆地重构、跑测试、改多个文件;如果结果不满意,可以丢掉 worktree,而主分支仍然保持干净。
适合:
- 大范围重构。
- 迁移框架或目录结构。
- 批量修 lint/test。
- 让 Agent 尝试一个你还不确定的实现方向。
不适合:
- 没有 git 的目录。
- 里面有大量用户数据的目录。
- 生产服务正在读取的工作区。
开 YOLO 前先做 checkpoint
如果不用 worktree,至少先保证当前状态可回滚。
最稳的是提交一个 checkpoint:
git status
git add .
git commit -m "checkpoint before yolo agent"
hermes --yolo如果暂时不想提交,也可以保存 patch:
git diff > /tmp/before-agent.patch这样 Agent 改坏后,你至少知道“坏之前”是什么样子。没有 checkpoint 的 YOLO,通常不是技术问题,而是心理压力问题:你会不知道哪些变化是它改的,哪些变化是原来就有的。
用 Hermes checkpoints 做可回滚会话
Hermes 还可以配合文件系统 checkpoints:
hermes chat --checkpoints会话里也可以手动打快照:
/snapshot如果结果不对,可以回滚:
/rollback这种模式适合“我想让你大胆改,但我要能撤销”的任务。它和 git 不冲突:git 管源码历史,Hermes checkpoint 管一次 Agent 会话里的文件系统快照。重要代码仓库里,两者一起用更安心。
一个高风险改代码任务可以这样起手:
git status
git add .
git commit -m "checkpoint before yolo agent"
hermes --yolo --worktree --checkpoints这套组合的意思是:
- git commit 保护当前主工作区。
- worktree 让 Agent 在隔离副本里改。
- checkpoints 让会话内也能撤回。
- YOLO 让 Agent 连续执行,不被低价值确认打断。
不要在生产机器上全局 YOLO
比较安全的使用边界:
| 可以考虑 | 不建议 |
|---|---|
| repo 副本 | 生产服务器 |
| 临时目录 | 用户真实数据目录 |
| Docker 或 dev container | ~/.ssh、~/.config 附近 |
| git worktree | 密码、token、cookie 文件附近 |
| 测试环境 | 没有 git 的大目录 |
| 专门的 agent 机器 | 正在跑业务的服务目录 |
生产机器上尤其要小心。很多操作看起来只是“顺手修一下”,实际可能碰到服务重启、配置覆盖、证书、DNS、数据库、权限、日志清理和备份目录。这里更适合 smart 或手动审批,而不是全局 off。
用 tools 收窄能力
有时你不是想放开所有权限,只是想少点审批。那就不要只盯着 YOLO,还可以收窄工具集。
查看工具:
hermes tools
hermes tools list如果只是写代码,通常只需要:
terminalfileskillssession_search
可以考虑关闭暂时不需要的能力:
browserwebmessagingimage_genhomeassistantdiscord_admin
具体命令以你当前版本的 hermes tools --help 为准。思路是:让 Agent 在需要的领域里顺手,在不需要的领域里少碰。
几套推荐配置
日常默认:
hermes config set approvals.mode smart大胆执行一次可信任务:
hermes --yolo改代码并隔离工作区:
hermes --yolo --worktree高风险改代码,先做 Git checkpoint:
git status
git add .
git commit -m "checkpoint before yolo agent"
hermes --yolo --worktree --checkpoints只适合隔离环境的全局 YOLO:
hermes config set approvals.mode off全局 off 只建议放在 Docker、测试 VM、专门的 agent 机器或一次性沙盒里。主力电脑、生产服务器、真实数据目录,不建议这么配。
如果开过全局 YOLO,恢复日常模式:
hermes config set approvals.mode smart一个实用判断法
开 YOLO 前问自己三个问题:
- 这个目录删错了,我能不能接受?
- 当前状态有没有 git、backup 或 checkpoint?
- Agent 这次任务需不需要碰系统服务、密钥、用户数据或生产配置?
如果三个答案里有任何一个让你犹豫,就用 smart,或者先建 worktree、容器、临时目录,再开 YOLO。
我的默认建议
如果是日常聊天、写脚本、轻量维护:
hermes config set approvals.mode smart如果是一次明确的开发任务:
hermes --yolo --worktree --checkpoints如果是在生产机器上:
hermes config set approvals.mode smart然后让高风险命令继续确认。
YOLO 的价值不是“让 Agent 什么都能干”,而是让它在你已经设好边界的地方少被打断。真正舒服的用法,是把风险关进笼子里,再让 Agent 跑快一点。