Hermes Agent 安全文件管理需五步:一、设 filesystem_mode 为 sandbox 启用沙箱隔离;二、在 mount_points 配置白名单路径映射;三、开启 audit_enabled 并检查 log_level 启用审计日志;四、扩展 is_blocked_path() 中 blocked_patterns 限制敏感后缀;五、启用 content_safety 过滤恶意内容。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

如果您希望 Hermes Agent 在执行任务时读取或修改本地文件,但又担心权限失控或误删关键数据,则需严格约束其文件操作边界。以下是实现安全文件管理的具体步骤:
一、启用沙箱内文件系统隔离
终端沙箱默认禁用对宿主机文件系统的直接访问,所有文件操作被重定向至独立挂载的临时目录,确保AI无法触达真实路径。该机制由 environments/hermes_swe_env/default.yaml 中的 filesystem_mode 参数控制,设为 sandbox 即可激活。
1、打开项目根目录下的 environments/hermes_swe_env/default.yaml 文件;
2、定位 filesystem_mode 字段,将其值修改为 sandbox;
3、保存文件后重启 Hermes Agent 实例以使配置生效。
二、配置白名单路径映射
在沙箱隔离前提下,可通过路径映射机制有选择地暴露特定目录供AI读写,其余路径一律不可见。映射关系定义在 hermes_swe_env.py 的 mount_points 字典中,支持只读(ro)与读写(rw)两种模式。
1、编辑 environments/hermes_swe_env/hermes_swe_env.py;
2、在 mount_points 字典中添加新条目,例如:"/workspace": {"path": "/home/user/hermes-work", "mode": "rw"};
3、确认目标宿主目录 /home/user/hermes-work 已存在且权限属当前运行用户;
4、重新加载沙箱环境并验证挂载是否成功。
三、启用文件操作审计日志
所有文件读写行为均通过 tools/file_tools.py 统一入口执行,该模块内置审计钩子,可将每次 open、read、write、delete 操作记录至 trajectory.jsonl,包含完整路径、操作类型、时间戳及调用上下文。
1、确保 tools/file_tools.py 中 audit_enabled 变量设为 True;
2、检查 cli-config.yaml 中 log_level 是否不低于 INFO 级别;
3、执行任意含文件操作的任务后,在 outputs/ 目录下查找最新生成的 trajectory.jsonl 文件;
4、使用 cat 或 jq 命令筛选 file_op 类型事件,确认日志字段完整。
四、限制敏感文件后缀访问
通过正则过滤机制阻止AI打开 .env、.gitconfig、.ssh/id_rsa 等高危配置文件。该策略实现在 file_tools.py 的 is_blocked_path() 函数中,支持动态扩展黑名单模式。
1、打开 tools/file_tools.py;
2、找到 is_blocked_path() 函数内部的 blocked_patterns 列表;
3、追加新规则,例如:r"\.env$", r"\/\.git\/", r"\/\.ssh\/.*";
4、保存并测试尝试读取 .env 文件,应返回 PermissionDenied 错误。
五、强制启用文件内容预检
在 write 操作前自动扫描待写入内容是否含 shell 脚本特征、base64 编码片段或可疑命令结构,防止AI生成恶意 payload 写入可执行位置。该功能由 content_safety_filter.py 提供,需显式启用。
1、确认 requirements.txt 中已包含 safetensors 与 pyyaml 依赖;
2、在 cli-config.yaml 中添加字段:content_safety: {enabled: true, max_file_size_kb: 512};
3、重启服务后,任何超过512KB的写入请求将被拦截并记录警告;
4、尝试写入含 #!/bin/bash 头部的文本,应触发安全拦截并返回拒绝提示。


















