← 返回文章列表

Hermes Agent 的 Profile 机制:如何让一个 agent 服务多个部门

📖 摘要:同一个 AI 助理,先给市场部做了知识问答机器人,技术部也说「我们也要一个」——两个部门共用助理,答案会不会串?客户 A 的上下文出现在客户 B 的回答里这种事,是怎么发生的,又是怎么从结构上杜绝的?本文用「两个部门两个机器人」的真实业务场景贯穿,讲清 Hermes Agent 的 Profile 多档案机制:一份档案 = 一套完全独立的数据(记忆/技能/会话/配置),机器人各接各的档案,各配各的应用入口——隔离靠物理分档案,不靠权限配置、不靠 AI 自觉。文章覆盖档案机制、落地接线、操作命令速查、分线时机判断、与双实例的选型边界。适用人群:Hermes 用户、需要分业务线管理 AI 助理的个人与交付团队。


一、业务故事:一个助理,两个部门

先讲一个我们遇到过的问题。

一个 AI 助理先给市场部做了知识问答机器人——市场资料、产品手册、报价口径,回答自带出处。跑顺了之后,技术部找过来说:「我们也想要一个,能不能让助理也答技术文档?」

听起来简单:同一个助理,多加一份资料的事。

但这里藏着一个被大多数人忽略的问题:一个大脑同时服务两个业务线,记忆会串味。市场部同事问「咱们的报价口径是什么」,助理答对了;第二天技术部同事问「接口超时怎么排查」,助理却答出「建议按报价口径与客户确认」——市场话术混进了技术回答。不是模型笨,是它记得太多:同一个人的记忆里,市场资料和技术资料没有墙。客户 A 的上下文出现在客户 B 的回答里,在单档案场景下不是「会不会」的问题,是「迟早」的问题。

我们当时的第一个想法也是常规思路:给助理配权限——市场部的问题只检索市场资料,技术部的问题只检索技术资料。但这条路在 AI 助理的场景里不好走,原因后面讲。真正解决问题的是另一个思路:不给一个大脑分权限,给它分档案

这套机制在 Hermes Agent 里叫 Profile。本文把它讲透:它是什么、怎么用、什么时候该分、和「再装一套」有什么区别——全程用「市场部 + 技术部」这个场景串着讲。

二、档案是什么:一个大脑的几套独立记忆

Hermes Agent 的数据默认住在一个叫 default 的档案里(Linux/macOS 默认在 ~/.hermes,Windows 桌面环境在安装目录下的 data 数据目录)。里面装着一整套东西:

档案内容 是什么
config 配置与模型接入(含各业务的应用入口/Key 绑定)
memories 长期记忆——记住的用户偏好、业务事实、历史结论
skills 技能库——这个助理会干什么
sessions 会话历史——聊过什么
cron 定时任务——它会主动做什么

一个档案 = 上面这一整套,完整独立。

Profile 机制 = 在同一套 Hermes 里可以开多个档案,每个档案有自己完整的一套 config / memories / skills / sessions / cron,档案之间完全隔离——A 档案的技能、记忆、会话,B 档案看不到。

目录上长这样:

~/.hermes/                          # default 档案(数据根目录)

├── config.yaml

├── memories/

├── skills/

├── sessions/

└── cron/



~/.hermes/profiles/<名字>/           # 其他档案,多一层 profiles/

├── config.yaml

├── memories/

└── ...

关键认知:记忆的隔离是结构性的。A 档案的记忆存在 A 档案的目录里,B 档案运行的时候根本不读那个目录——不是「不让 B 看 A 的记忆」,是 B 的世界里不存在 A 的记忆。这个「够不着」而不是「不让碰」的原则,是整套隔离思路的地基,后面还会出现两次。

容易混淆的一个点:一个档案 ≠ 一个入口。 同一个档案有三个入口——命令行直连、消息机器人、HTTP API——它们共享同一份档案数据。也就是说「一个档案」=「一个大脑」,命令行里聊过的记忆,机器人回答时也用得上;反过来,如果一个大脑接了市场部和技术部两个机器人,两个部门共享的是同一份记忆——这正是开头那个串味问题的根源。

三、落地:市场部一个档案,技术部一个档案

回到开头的场景。解法现在很直接:

市场部机器人 ──→ 档案 market:记忆/技能/会话全独立,只配市场应用的入口

技术部机器人 ──→ 档案 tech:记忆/技能/会话全独立,只配技术应用的入口

两个机器人背后是两个独立的档案。每个档案只配自己业务的应用入口(市场档案里没有技术应用的接入配置,反之亦然)。落到配置上就是:市场档案里接的是市场问答应用 A 的 API Key,技术档案里接的是技术问答应用 B 的 API Key——入口只认自己的应用,市场机器人想调技术应用,连 Key 都没有。gateway 按档案分别启动,各接各的机器人。

到这里,开头问题的答案就完整了:

隔离不是靠「助理收到技术问题时提醒自己别用市场记忆」——那种靠自觉的隔离是软约束,早晚失效。隔离靠的是:技术上它就没有对方的档案。市场机器人想答出技术库的内容,它连技术应用的入口都没有,无从答起。

知识库那一侧同理:每个业务的知识库在 Dify 里是独立应用、独立资料库,机器人只接自己的应用——「应用里没有别的库,机器人的档案里没有别的入口」,两层都是物理的。这是另一篇文章展开的主题(第七节收口时会再点一次),本文聚焦档案这一层。

四、操作速查:怎么开档案、怎么接线

实际命令(Hermes Agent v0.21.0,机制自 v0.20.0 起实测稳定):

想做什么 命令
查看现有档案 hermes profile list(含模型/gateway 状态/别名)
建档案(复制当前配置起步) hermes profile create market --clone
从指定档案复制 hermes profile create tech --clone-from <源档案>
加业务描述 hermes profile create ops --description "商务运营"
指定档案干活 hermes-market -z "..."(建档案自动生成别名命令)
看档案详情 hermes profile show market
改名 / 删除 hermes profile rename <旧> <新> / hermes profile delete <名>
搬档案(换机/备份) hermes profile export market → 新机 hermes profile import <归档>
默认切换 hermes profile use market

几个要点:

五、什么时候该分:业务分线信号表

不是所有情况都要分档案。判断信号看四条:

信号 该分 不必分
记忆该不该互通 市场记忆和技术记忆不该互相影响 记忆互通有好处(共享企业级公共认知)
技能面是否不同 一个档案管问答、一个档案管自动化,技能完全不同 技能几乎一样,只是话题不同
凭据要不要隔离 各业务用自己的模型 Key / 应用入口,不能混 共用同一套接入,无需分开
会话能不能混 客户 A 的上下文绝不能被客户 B 看到 内部闲聊与工作,串一点无伤大雅

凭据那条的实际判断依据通常是计费归属与合规边界——Key 要按业务独立核算、或某业务的数据不能走另一业务的通道,就得分。四条里中两条以上,就值得分档案;只中一条可以先不分——Profile 的 export/import 支持后期再拆,分档案不是一步到位的决定,随时可以补。

这个判断不限于「部门」——同一个人管两摊业务也一样。我们的典型建议场景是:

hermes profile create dev --clone    # 开发助手:Dify 交付、验收

hermes profile create ops --clone    # 商务运营:需求跟进、方案投标

一个 AI 助理,白天跟你做项目交付,晚上帮你盯客户需求渠道——两摊活的记忆、会话、定时任务各在各的档案里,互不污染。部门隔离和个人分线,用的是同一套机制、同一条判断线。

不想读全文时,用这条快速判断链:

需要机器级隔离(跨机部署/独立资源/独立版本)? ──是──→ 双实例

否 ↓

数据需要物理隔离(记忆/会话/凭据不互通)?   ──否──→ 一个档案够用

是 ↓

分档案:一个业务线一个档案

六、分档案还是再装一套:隔离光谱

有个问题几乎必被问到:分档案和「再装一个 Hermes」有什么区别?答案是四个维度的隔离程度不同:

维度 多档案(Profile) 双实例(再装一套)
数据 完全隔离 完全隔离
程序/安装 同一份安装 各自安装
机器资源 同机共享 CPU/内存 通常跨机独立;同机装两套则仍共享
版本 一起升级 可各自升级

部门隔离、个人分线这类场景,档案就够了——隔离的实质是数据,档案已经把数据物理分开,共用的只是同一份程序和机器资源,没有数据风险。

真正需要「再装一套」的是更硬的场景:机器级故障隔离(一台挂了另一台不受影响)、资源强隔离(一个业务跑满 CPU 不拖累另一个)、部署环境隔离(一个在客户内网、一个在云上,物理到不了对方网络)、版本要分开升级。

一句话:按数据隔离选档案,按机器隔离选双实例——多数业务分线需求落在档案这一档,双实例是少数派。

七、为什么不是「配权限」:一个完整的答案

回到开头那个被否掉的常规思路:给一个大脑配权限,市场问题只放行市场资料。这个思路在传统系统里成立,在 AI 助理 + 知识库的形态里走不通(以下基于 Dify 社区版与 Hermes 当前版本的能力现状——产品演进可能引入更细的权限位,选型以当时版本为准),原因要分两层说:

两侧的结构决定了:细粒度权限没有配置位,物理拆分是唯一可靠的路。知识库按业务拆应用,助理按业务拆档案——两层都是「结构上不存在对方的通道」,不是「有通道但设了门禁」。门禁可以被配置错、被绕过、被忘记;结构上没有通道,就不存在这些问题。

(知识库侧「拆应用」的完整论证见本站姊妹篇《把企业手册变成会答话的机器人:企业知识库问答怎么做》——那篇讲 Dify 应用层,本文讲档案层,合起来是「业务隔离 = 两层物理拆」的完整答案。)

八、边界:档案隔离解决什么、不解决什么

如实说边界,别等踩到再发现:

档案不隔离的

一个灰色地带:记忆想共享、知识想隔离——目前只有软边界,没有硬方案。比如两个部门 bot 共用助理的公共记忆(企业级认知),但各自只答各自的库——这种「一个大脑 + 按会话路由」的形态,记忆确实是共享的,知识边界只能靠路由约束维持,是软边界。如果业务对隔离是硬要求,就别选这个组合;能接受软边界,它换来的是记忆共享的便利。选型时把这条摆到桌面上谈清楚。

常见问题

分档案之后,原来的记忆会丢吗?

不会。default 档案的数据原样保留,新档案用 --clone 从现有档案复制配置和技能起步,记忆类数据按需带或不带(--clone 带配置/模型/技能,--clone-all 才带全量状态)。分线是「加一套新档案」,不是「迁移旧档案」,旧数据不动。

两个档案能同时跑吗?会不会抢资源?

能。同一台机器上多个档案可以同时运行(gateway 按档案分别启动、各接各的机器人),档案间数据互不可见。资源层面共用机器,日常一问一答互不影响;如果两边同时跑重度任务(长文档处理、大批量生成),会抢 CPU——重度并行场景考虑双实例。

给客户交付时,档案能直接打包带走吗?

能。hermes profile export 把整个档案打包成归档,目标机器 hermes profile import 还原——交付初始档案、换机迁移、定期备份都走这条。这也意味着给客户交付「一个业务一个档案」的初始状态是标准操作,不是手工搭的。

分档案之后,两个档案之间的知识能互相引用吗?

不能——档案间数据不互通正是隔离的目的。需要两边都用的公共知识,只能各档案维护一份(--clone 建档案时带着配置和技能起步,公共知识按需复制过去);「公共知识共享 + 业务各自分线」的半共享形态目前没有原生机制,属于第八节说的灰色地带。选型时把这个限制算进去:共享需求越强,分档案的代价越高。


本文基于 Hermes Agent v0.21.0 实测(Profile 机制自 v0.20.0 起实测)。AI 参与创作声明:本文由 AI 辅助写作,内容基于作者真实实测记录。

想让 AI 助理接入您的业务与沟通工具?看看方案与服务 →

联系我

邮箱contact@fishsun.cn

点击邮箱直接写信 · 扫码加微信沟通

微信

微信二维码

扫码加微信 · 备注「门户」更快通过