USER.md 未正确配置或加载导致偏好无法持续识别,需检查文件存在性、config.yaml 中 memory 配置、网关动态更新、编码权限及环境变量注入五步修复。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

如果您已安装 Hermes Agent,但发现它在多次会话后仍无法持续识别您的任务习惯、输出偏好或身份特征,则说明 USER.md 用户画像文件未被正确配置或未被系统加载。以下是完成 USER.md 个性化配置的完整操作流程:
一、确认 USER.md 文件存在并初始化
USER.md 是 Hermes 记忆系统中承载用户静态画像的核心文件,必须存在于 ~/.hermes/memories/ 目录下且具备可读权限;若缺失或为空,Agent 将无法锚定任何用户级偏好。
1、打开终端,执行命令检查文件是否存在:ls -l ~/.hermes/memories/USER.md。
2、若提示“No such file”,则立即创建该文件:touch ~/.hermes/memories/USER.md。
3、向文件写入最小必要结构化信息:echo "# 用户画像\n- 姓名: 张三\n- 称呼偏好: 杰森\n- 常用格式: Markdown\n- 语言偏好: 中文(简体)" > ~/.hermes/memories/USER.md。
二、验证 USER.md 的自动加载状态
即使文件存在,若未在主配置中声明加载路径,Hermes 启动时将跳过该文件,导致画像信息完全不可见。此步骤用于确保配置层与文件层双向对齐。
1、编辑主配置文件:nano ~/.hermes/config.yaml。
2、定位到 memory: 区块,确认其下包含以下两行(严格缩进):
enable: true
files: ["memories/MEMORY.md", "memories/USER.md"]。
3、保存退出后运行诊断命令:hermes doctor --check memory,观察输出中是否出现 ✓ User profile loaded from USER.md。
三、通过网关交互动态更新 USER.md
Hermes 支持在微信、飞书等消息平台中以自然语言方式实时更新 USER.md 内容,无需手动编辑文件。该机制依赖 gateway 模块解析语义并持久化至指定路径。
1、确保已执行 hermes gateway setup 并完成飞书机器人或微信 Cloudbot 接入。
2、在已连接的聊天窗口中发送任意一条含“记住”关键词的指令,例如:请记住我叫林薇,喜欢用表格输出结果,拒绝使用 YAML 格式。
3、等待约 5 秒后,检查文件内容变更:cat ~/.hermes/memories/USER.md | tail -n 3,应可见新条目已追加至末尾。
四、修复 USER.md 编码与权限异常
部分 Linux/WSL 环境因默认 locale 设置为 C 或 UTF-8 缺失,会导致中文写入 USER.md 后出现乱码或解析失败;同时,错误的文件权限可能使 Hermes 进程无权读取。
1、强制设置 UTF-8 环境变量:export LANG=en_US.UTF-8; export LC_ALL=en_US.UTF-8。
2、重写 USER.md 并指定编码:iconv -f GBK -t UTF-8 ~/.hermes/memories/USER.md 2>/dev/null | tee ~/.hermes/memories/USER.md(若原为 GBK 编码)。
3、修正文件权限:chmod 644 ~/.hermes/memories/USER.md,确保组和其他用户具有只读权限。
五、绕过文件加载失败的临时注入方案
当 config.yaml 加载机制异常且无法快速定位原因时,可直接通过环境变量向当前会话注入用户标识,实现偏好即时生效,适用于调试与紧急场景。
1、在启动 Hermes 前设置变量:export HERMES_USER_NAME="王磊"; export HERMES_OUTPUT_STYLE="bullet points"。
2、启动 CLI 模式并启用变量注入:hermes chat --inject-env。
3、在对话中输入 /debug show user,确认输出中包含上述两个变量值及对应语义解释。


















