Skip to content

Session 路由

说明入站流量如何映射到 session keyagent,以及跨通道的 identity link(身份关联)。

Session Key 格式

{agentId}:{source}:{accountId}:{peerKind}:{peerId}[:thread:{threadId}]
字段说明示例
agentIdAgent 标识符main, coder
source消息来源telegram, gateway, cli
accountId账号标识default, work
peerKind对话类型dm, group, direct
peerId对话 ID123456, -100123456

示例

main:telegram:default:dm:123456
main:telegram:default:group:-100123456
main:gateway:default:direct:chat_abc123
main:cli:default:direct:cli

配置

路由写在 ~/.xopcbot/config.json 中(可用环境变量 XOPCBOT_CONFIG 覆盖路径)。请使用 JSON,不要使用 YAML。

Agent 与 bindings

agents.list 中注册多个 Agent。绑定规则 bindingspriority 从高到低匹配;每条 match 中的 channel精确通道 id(如 telegramgateway),匹配时不区分大小写,不支持* 表示「所有通道」。可按通道分别写规则;若没有任何规则匹配,则使用默认 Agentagents.list 中第一个 enabledid,否则为 main

match.peerId 支持简单的 * 通配(例如 Telegram 超级群 -100*)。

json
{
  "agents": {
    "defaults": {
      "model": "anthropic/claude-sonnet-4-5"
    },
    "list": [
      { "id": "main", "name": "主助手" },
      { "id": "coder", "name": "编程助手" }
    ]
  },
  "bindings": [
    {
      "agentId": "coder",
      "priority": 100,
      "match": {
        "channel": "telegram",
        "peerId": "-100*"
      }
    }
  ],
  "session": {
    "identityLinks": {
      "alice": ["telegram:123456789", "discord:987654321"]
    }
  }
}

session.identityLinks规范名 映射到 channel:peerId 别名列表,便于跨通道识别同一用户。session.dmScope 等选项见 配置参考

API

生成 Session Key

typescript
import { buildSessionKey } from '@xopcai/xopcbot/routing/index.js';

const sessionKey = buildSessionKey({
  agentId: 'main',
  source: 'telegram',
  accountId: 'default',
  peerKind: 'dm',
  peerId: '123456',
});

路由决策

typescript
import { resolveRoute } from '@xopcai/xopcbot/routing/index.js';

const route = resolveRoute({
  config,
  channel: 'telegram',
  accountId: 'default',
  peerKind: 'dm',
  peerId: '123456',
});

console.log(route.sessionKey); // 例如 main:telegram:default:dm:123456(受 dmScope 影响)
console.log(route.agentId); // 无匹配规则时的默认 Agent(例如 main)

相关文件

  • src/routing/ - 路由系统核心
  • extensions/telegram/src/routing-integration.ts - Telegram 集成(工作区包 @xopcai/xopcbot-extension-telegram
  • src/acp/routing-integration.ts - ACP 集成

基于 MIT 许可证发布