Files
nanoclaw/docs/zh/isolation-model.md
2026-05-12 13:14:17 +00:00

5.0 KiB
Raw Permalink Blame History

频道隔离模型

NanoClaw 将消息频道与 agent group智能体组解耦。当你连接一个频道Discord、Telegram、Slack、GitHub 等)时,需要决定它与你现有 agent 的关系。共有三个隔离级别。

三个级别

1. 共享 Session

多个频道输入到同一个对话中。agent 在一个线程中看到来自所有频道的所有消息。

共享的内容: 所有——工作区、记忆、CLAUDE.md以及对话本身。一条 GitHub PR 评论和一条 Slack 消息在 agent 的上下文中并排出现。

示例: 一个 Slack 频道与 GitHub webhooks 配对。agent 通过 GitHub 接收 PR 审查请求,并在 Slack 中讨论它们——全部在一个 session会话中。当有人评论 PR 时agent 可以引用之前 Slack 中关于该功能的讨论。

何时使用: 当一个频道向另一个频道提供上下文时。Webhook/通知频道GitHub、Linear与聊天频道Slack、Discord配对是典型场景。

技术实现: 两个 messaging group消息组session_mode: 'agent-shared' 连接到同一个 agent group。Session 解析仅按 agent group ID 查找,忽略 messaging group——因此所有频道汇聚到同一个 session。


2. 相同 Agent独立 Session

多个频道共享同一个 agent相同工作区、记忆、个性但拥有独立的对话。

共享的内容: 工作区、记忆、CLAUDE.md 以及所有持久化状态。如果你在一个 session 中告诉 agent 某事,它可以将其保存到记忆中并在另一个 session 中调取。agent 的个性、知识和工具在各个 session 中完全相同。

独立的内容: 对话线程。来自一个频道的消息不会出现在另一个频道的 session 中。每个频道有自己的上下文窗口和对话历史。

示例: 你有三个与 agent 的 Telegram 聊天——一个用于副项目,一个用于个人任务,一个用于工作。三个聊天共享同一个 agent 工作区。如果你在项目聊天中要求它记住你的 API 密钥命名规范,它可能在工作聊天中也调用该规范。但对话本身是独立的。

何时使用: 当你是跨频道的主要(或唯一)参与者,并且希望统一的 agent 身份时。这是跨多个平台或多个群组进行个人使用的最常见设置。

技术实现: 多个 messaging group 以 session_mode: 'shared'(或 'per-thread')连接到同一个 agent group。每个 messaging group 获得自己的 session但它们都在同一个 agent group 目录下运行。


3. 独立的 Agent Group

每个频道拥有自己的 agent拥有自己的工作区、记忆和个性。没有任何共享。

共享的内容: 无。这些 agent 彼此不知道对方的存在。不同的 CLAUDE.md不同的记忆不同的工作区不同的对话历史。

示例: 你有一个与朋友的 Telegram 群组,以及一个用于团队项目的 Discord 服务器。朋友不应该知道你和团队讨论了什么,反之亦然。每个都获得自己的 agent拥有自己的记忆和个性。

何时使用: 当涉及不同的人时,或者一个频道的信息永远不应泄露到另一个频道时。只要有隐私或保密边界,这就是正确的选择。

技术实现: 每个频道连接到不同的 agent group每个在 groups/ 下有自己的目录。独立的容器,独立的 session 数据库,独立的一切。


如何决定

关键问题:你是否能接受一个频道中的任何和所有信息在另一个频道中可用?

  • 不能 → 独立的 agent group级别 3
  • 能,而且频道之间应该看到彼此的消息 → 共享 session级别 1
  • 能,但对话应该独立 → 相同 agent独立 session级别 2

经验法则

场景 推荐级别
仅你一人多个平台Telegram + Discord + Slack 相同 agent独立 session
仅你一人一个平台上的多个群组3 个 Telegram 聊天) 相同 agent独立 session
Webhook 频道 + 聊天频道GitHub + Slack 共享 session
与朋友 A 的频道和与朋友 B 的频道 独立的 agent group
个人频道和工作频道 独立的 agent group
不同访问级别的团队频道 独立的 agent group

不确定时

如果参与者在各频道相同 → 同一个 agent group 通常没问题。

如果涉及不同的人 → 独立的 agent group。否则信息会通过 agent 记忆交叉传播。

实体模型

agent_groups (工作区、记忆、CLAUDE.md、个性)
    ↕ 多对多
messaging_groups (平台上特定的频道/聊天/群组)
    通过
messaging_group_agents (session_mode、trigger_rules、priority)
  • 共享 session 多个 messaging_groups → 同一个 agent_groupsession_mode = 'agent-shared'
  • 相同 agent独立 session 多个 messaging_groups → 同一个 agent_groupsession_mode = 'shared'
  • 独立 agent 每个 messaging_group → 不同的 agent_group