路由管理 routing

这是一个用于多代理路由、频道绑定和工具策略管理的技能,关键词包括'代理管理'、'频道绑定'、'工具策略'、'消息路由'、'API参考'。

AI应用 0 次安装 0 次浏览 更新于 3/5/2026

路由 - 完整的API参考

将消息路由到专门的代理,配置频道绑定,并管理工具访问策略。


聊天命令

代理管理

/agents                                     列出可用代理
/agent trading                             切换到交易代理
/agent research                             切换到研究代理
/agent main                                切换到主代理
/agent status                               当前代理信息

频道绑定

/bind trading                               将频道绑定到交易代理
/bind research                              将频道绑定到研究代理
/unbind                                     移除频道绑定
/bindings                                   列出所有绑定

工具策略(管理员)

/tools                                      列出可用工具
/tools allow <agent> <tool>                 允许代理使用工具
/tools deny <agent> <tool>                  拒绝代理使用工具
/tools policy <agent>                       查看代理的工具策略

TypeScript API参考

创建路由服务

import { createRoutingService } from 'clodds/routing';

const routing = createRoutingService({
  // 默认代理
  defaultAgent: 'main',

  // 代理定义
  agents: {
    main: {
      name: 'Main',
      description: '通用助手',
      model: 'claude-3-sonnet',
      systemPrompt: '你是一个有用的交易助手...',
      allowedTools: ['*'],  // 所有工具
    },
    trading: {
      name: 'Trading',
      description: '订单执行专家',
      model: 'claude-3-haiku',
      systemPrompt: '你高效执行交易...',
      allowedTools: ['execute', 'portfolio', 'markets', 'feeds'],
    },
    research: {
      name: 'Research',
      description: '市场分析专家',
      model: 'claude-3-opus',
      systemPrompt: '你提供深入的市场分析...',
      allowedTools: ['web-search', 'web-fetch', 'markets', 'news'],
    },
    alerts: {
      name: 'Alerts',
      description: '通知处理程序',
      model: 'claude-3-haiku',
      systemPrompt: '你管理价格警报...',
      allowedTools: ['alerts', 'feeds'],
    },
  },

  // 存储
  storage: 'sqlite',
  dbPath: './routing.db',
});

路由消息

// 路由确定最佳代理
const route = await routing.route({
  message: 'Buy 100 shares of Trump YES',
  channelId: 'telegram-123',
  userId: 'user-456',
});

console.log(`路由到: ${route.agent}`);
console.log(`置信度: ${route.confidence}`);
console.log(`原因: ${route.reason}`);

获取可用代理

const agents = routing.getAgents();

for (const [id, agent] of Object.entries(agents)) {
  console.log(`${id}: ${agent.name}`);
  console.log(`  ${agent.description}`);
  console.log(`  模型: ${agent.model}`);
  console.log(`  工具: ${agent.allowedTools.join(', ')}`);
}

添加自定义代理

routing.addAgent({
  id: 'defi',
  name: 'DeFi Specialist',
  description: 'Solana和EVM DeFi专家',
  model: 'claude-3-sonnet',
  systemPrompt: '你是DeFi协议的专家...',
  allowedTools: ['solana', 'evm', 'bridge', 'portfolio'],
  patterns: [
    /swap|dex|liquidity|pool/i,
    /solana|jupiter|raydium/i,
    /uniswap|1inch|bridge/i,
  ],
});

更新代理

routing.updateAgent('trading', {
  model: 'claude-3-sonnet',  // 升级模型
  allowedTools: [...currentTools, 'futures'],
});

频道绑定

// 将频道绑定到特定代理
await routing.addBinding({
  channelId: 'telegram-trading-group',
  agentId: 'trading',
});

// 获取频道的绑定
const binding = await routing.getBinding('telegram-trading-group');
console.log(`频道绑定到: ${binding?.agentId || '默认'}`);

// 列出所有绑定
const bindings = await routing.getBindings();
for (const b of bindings) {
  console.log(`${b.channelId} → ${b.agentId}`);
}

// 移除绑定
await routing.removeBinding('telegram-trading-group');

工具策略

// 检查工具是否允许代理使用
const allowed = routing.isToolAllowed('trading', 'web-search');
console.log(`web-search允许交易: ${allowed}`);

// 获取代理允许的工具
const tools = routing.getAllowedTools('trading');
console.log(`交易代理工具: ${tools.join(', ')}`);

// 更新工具策略
routing.setToolPolicy('trading', {
  allow: ['execute', 'portfolio', 'futures'],
  deny: ['web-search', 'browser'],
});

内置代理

代理 模型 目的 工具
main Sonnet 通用助手 所有
trading Haiku 快速订单执行 执行,投资组合
research Opus 深入分析 搜索,获取,新闻
alerts Haiku 通知 警报,Feeds

路由规则

消息根据以下规则进行路由:

  1. 频道绑定 — 如果频道已绑定,则使用该代理
  2. 模式匹配 — 与代理模式匹配
  3. 关键词检测 — 交易术语 → 交易代理
  4. 默认回退 — 使用主代理

模式示例

{
  trading: [/buy|sell|order|position|close/i],
  research: [/analyze|research|explain|why/i],
  alerts: [/alert|notify|when|watch/i],
}

工具类别

类别 工具
执行 execute, portfolio, markets
数据 feeds, news, web-search, web-fetch
加密货币 solana, evm, bridge
系统 files, browser, docker

工作区隔离

每个代理可以有隔离的工作区:

routing.addAgent({
  id: 'research',
  workspace: {
    directory: '/tmp/research',
    allowedPaths: ['/tmp/research/**'],
    sandboxed: true,
  },
});

最佳实践

  1. 为交易使用快速模型 — Haiku用于时间敏感操作
  2. 适当限制工具 — 交易代理不需要浏览器
  3. 频道绑定 — 为特定工作流程专用频道
  4. 自定义代理 — 为您的用例创建专门的代理
  5. 监控路由 — 查看日志以了解路由决策