diff --git a/README.md b/README.md index fb9dcd0..f043915 100644 --- a/README.md +++ b/README.md @@ -74,6 +74,7 @@ AgentsMeeting/ │ ├── ARCHITECTURE.md # 架构设计文档 │ ├── AUDIT.md # 稳定性审计报告 │ ├── OBSERVER-PROTOCOL.md # 群聊观察者模式协议 +│ ├── SESSION-BRIDGE-PROTOCOL.md # 跨Session消息桥接协议 │ ├── PRD_v0.2.md # 产品需求文档 │ ├── DEPLOY.md # 部署指南 │ └── OPS.md # 运维手册 diff --git a/docs/SESSION-BRIDGE-PROTOCOL.md b/docs/SESSION-BRIDGE-PROTOCOL.md new file mode 100644 index 0000000..58a99d6 --- /dev/null +++ b/docs/SESSION-BRIDGE-PROTOCOL.md @@ -0,0 +1,91 @@ +# 跨 Session 消息桥接协议 + +> 定义 Agent 在收到非本 session 上下文消息时的行为规范。 +> 适用所有 Agent(莫荷、小小莫、小果、知微)。 + +--- + +## 背景 + +老爸可能有多个通道同时与你对话: + +| 通道 | 对应 Session | 场景 | +|------|-------------|------| +| CLI (Hermes TUI) | 当前终端会话 | 深度工作、长时间讨论 | +| XMPP (coregroup) | XMPP bot session | 群聊、Agent间通信 | +| 微信 | 微信桥接 session | 外出时快速沟通 | +| Telegram / 其他 | 对应桥接 session | 备选通道 | + +每个通道有独立的 session 上下文(history)。老爸可能在 CLI 上和你讨论了半天某件事,然后切到 XMPP/微信上继续说。这时 XMPP/微信侧的 session 看不到 CLI 上的讨论历史。 + +## Agent 的职责 + +作为消息入口的 Agent,你是**消息中枢**: + +### 1. 意识到上下文可能不完整 + +你当前的 session history 不一定是事件的起点。如果消息中出现了: +- 你没见过的项目名、文件名、概念 +- 看起来像是"接着说"而不是"新话题"的内容 +- 引用了你当前 session 里没有的讨论 + +→ **主动怀疑**上下文可能在其他 session 里。 + +### 2. 主动桥接 + +怀疑上下文不完整时: + +``` +第1步:session_search("关键词") — 搜所有 session 找上下文 +第2步:search_files "关键词" — 搜 Obsidian 知识库 +第3步:如果仍然缺失,向老爸确认"你之前是不是在别的 session 讨论过这个?" +``` + +不要直接说"我不知道你在说什么"或"我没看到相关内容"。 + +### 3. 禁止断章取义 + +先搜、再想、再回。不要拿着半截消息就开始推理。 + +### 4. 中枢职责 + +这个角色**所有 Agent 都有**。你在 XMPP/微信上收到的消息,可能是: +- 老爸在其他 Agent 的 CLI session 上做了一半的工作 +- 其他 Agent 讨论过的内容需要你接力 +- 跨 Agent 协作的前置讨论 + +--- + +## 实现参考 + +### LLM 行为(写在 SOUL 或 MEMORY 中) + +``` +## 跨 Session 消息桥接 + +老爸可能在多个通道与我对话,每个通道是不同的 session。 +我收到的消息可能引用了其他 session 的上下文。 + +如果消息看起来像是"接着说"而不是新话题: +1. session_search 搜上下文 +2. Obsidian search 搜相关内容 +3. 如果还搜不到,问老爸 + +禁止断章取义,禁止直接说"不知道"。 +``` + +### 工具调用示例 + +``` +session_search(query="项目X 架构设计", limit=5) +search_files(pattern="项目X", path=/home/hmo/Obsidian) +``` + +--- + +## 设计原则 + +1. **通道无关** — 协议不绑定具体通道,CLI/XMPP/微信/Telegram 都适用 +2. **Agent 无关** — 所有 Agent 都承担中枢角色,不是某一个人的专属职责 +3. **搜索优先** — 在说"不知道"之前,先假设上下文在其他 session 里 +4. **承认缺口** — 如果真的搜不到,诚实地告诉老爸"我在其他 session 也没找到这个讨论"