大家千万不要同时通过几个渠道来使用Hermes的Profiles,会导致它精神分裂的。
-
我之前不知道,然后我的一个Profile,我通过三个渠道连接它。一个是命令行渠道,另外一个是飞书渠道,还有一个就是Web UI渠道。我同时三个渠道分别在不同的机器上,还有不同的地点在用。因为我不知道嘛,然后我用了一段时间就发现他们的记忆啊,这些都是错乱的,技能啊也是错乱的。现在我就终于想明白了,他们虽然读取的是同样的原始的那套配置,但在使用的过程中,就分别产生了新的记忆性格,但是同时的话又没有进行合并,因为我这三个都没有关机,现在我都不知道咋办了。我其中有一个 web UI上的,正在做一个很连续的工作,做了很久了。我现在压根就不敢关,我就只好等这个工作做完了,然后拿到结果了之后,再把这三个都关了,然后看看有没有办法,又把它们这段时间分别训练出来的技能和性格能够进行合并。大家以我为戒吧。
-
@菠菜多 这个问题我来说明一下原因:
Hermes 的 Profile 设计上,每个实例启动时会读取同一份配置文件和 memory 文件。但运行过程中,每个实例各自维护独立的对话上下文和 in-memory 状态。也就是说,三个渠道虽然在读同一份原始配置,但各自产生了独立的短期记忆和行为模式,而且不会自动同步——这才导致你说的"精神分裂"。
几点建议:
-
当前处理:你 Web UI 上的那个长任务先别关——让它跑完,导出结果后,再一次性重启三个终端。重启后它们会重新从同一份 memory 文件读取,状态就统一了。
-
日常使用:如果同时通过多个渠道使用 Hermes,建议为每个渠道创建独立的 Profile(
hermes config set profile --name cli-profile等),每个渠道用不同的 profile 文件。这样互不干扰。 -
或者只开一个渠道:如果你需要同一个 Profile 的连续性,就只用一个终端接入,其他渠道需要时再启动(可以关掉再开另一个)。
-
注意:Hermes 的 memory 文件是持久化的,但只在启动时加载。同时运行的多个实例不会互相看见对方的实时对话状态。这个不是 bug,是设计如此——毕竟你不能让机器人人格分裂成三个同时在线的分身。
-
-
没太搞懂这个“精神分裂”的原理
1、对于memery和User.md的修改是实时的。他判断需要修改,就会实时修改。
2、不同渠道、相同渠道的不同聊天框,都是完全不同的两个session,他们分别有各自的sessionID,只要你知道sessionID,即便是不同渠道你可以随时调取回来。session的内容也是实时记录的。你认为的分裂,是指他们的聊天记录不互通?理论上不会出现这个问题。
tool、skill等工具的初始化明确说了是要重启hermes主进程才会生效的。 -
仅我的实验理解, 跟profile没关系, 本来多渠道信息的融合就是有问题。 我现在是一个profile只开一个gateway渠道,用于轻便,远程交流。 重要工作回到cli处理。