5 分钟搭好 Tool Router 隔离会话:为每个用户精准管控工具与授权
5 分钟搭好 Tool Router 隔离会话为每个用户精准管控工具与授权【免费下载链接】composioComposio powers 1000 toolkits, tool search, context management, authentication, and a sandboxed workbench to help you build AI agents that turn intent into action.项目地址: https://gitcode.com/GitHub_Trending/co/composio做多用户 Agent 时最头疼的是一套工具和连接被所有人共享A 能翻到 B 的邮件工具列表也爆炸增长。Tool Router 按用户创建隔离的 MCP 会话让你在每个会话里精细管控可用的 Toolkit、单个工具和授权流程。10 分钟内你能完成创建会话、收窄工具范围、接入自己的 AI 框架。它解决什么问题Composio 把 1000 toolkit 接到 Agent但多用户产品还差两件事每个用户要有自己的账户连接且不该看到全量工具。Tool Router 把工具变成会话维度composio.create()为用户建一个隔离会话会话自带独立的 MCP 端点、连接状态和工具白名单工具调用都在会话上下文里执行。类比酒店房卡——每间房有自己的钥匙用户连接和设施清单工具范围入住创建会话时就配好。代价是会话的生命周期要你自己存和管。5 分钟上手npm install composio/coreimport { Composio } from composio/core; const composio new Composio(); // 为用户创建隔离会话只暴露 Gmail const session await composio.create(user_123, { toolkits: [gmail], mcp: true, }); console.log(session.sessionId); // 存起来之后用 composio.use() 复用 console.log(session.mcp.url); // 任意 MCP 客户端都能接拿到两样东西sessionId复用的钥匙和 MCP URL接入点。注意mcp: true它是类型层面的显式开关传了返回类型才暴露session.mcp不传时运行时端点仍在但 TS 查不到。构造Composio时传了apiKey的话SDK 会自动把它注入mcp.headers的x-api-keyMCP 客户端直接带上即可。按场景配置按用户隔离连接与配置create(userId, config)的第一个参数就是隔离边界配置、连接、文件挂载都绑定到这个 userId 的会话上。生产里推荐把sessionId存进 Redis 之类的存储下次请求用composio.use(sessionId)取回别每次重建——重建会丢连接状态。一个取舍会话绑定了自定义工具时复用必须重传配置见后文踩坑所以use()的入参和你的存储设计要配套。收窄工具范围Toolkit 级和工具级可以叠着用覆盖三种常见诉求const session await composio.create(user_123, { toolkits: { disable: [calendar] }, // 黑名单白名单直接写 [gmail, slack] tools: { gmail: [gmail_fetch_emails, gmail_send_email], // 数组等价于 enable slack: { disable: [slack_delete_message] }, }, tags: [readOnlyHint], // 全局只保留只读工具 });toolkits支持白名单数组、{ enable }、{ disable }三种形态。tools按 toolkit slug 逐工具控制其中enable/disable/tags每个 toolkit 只能出现一个Zod 联合类型强制三选一。全局tags可在单个 toolkit 上用{ tags: [...] }覆盖比如只让 Slack 走只读、Gmail 放开写操作。四个可用 tagreadOnlyHint、destructiveHint、idempotentHint、openWorldHint。锁定认证配置与既有连接多租户场景下同一个 toolkit 可能对应多个认证配置比如企业版 Gmail 和个人 Gmail用authConfigs和connectedAccounts显式钉死const session await composio.create(user_123, { toolkits: [gmail, github], authConfigs: { gmail: ac_gmail_work }, // 钉到指定认证配置 connectedAccounts: { github: ca_abc123 }, // 直接复用已有连接 manageConnections: { enable: true, callbackUrl: https://your-app.com/callback, waitForConnections: true, // v0.4.0 新增等用户完成认证再继续 }, });authConfigs决定用哪套认证走connectedAccounts决定用哪个已连好的账户非多账户模式下每个 toolkit 只允许一个。manageConnections默认开启由 meta tools 引导用户完成连接设为false时连接完全归你管需要手动authorize()。接入你的 AI 框架两条路走session.tools()要传 provider 换取框架格式化的工具对象走 MCP 客户端则只要 URL headers不需要 provider。框架接入方式需要 provider关键差异Vercel AI SDKsession.tools()或 MCP clienttools() 路径要MCP 路径不要streamText直接接 toolsLangChainMultiServerMCPClient不要httptransport mcp.headersOpenAI AgentshostedMcpTool不要托管 MCP传serverUrl headersClaude Agent SDKmcpServers配置不要原生type: http支持最主流的 Vercel AI SDK 走 provider 路径import { openai } from ai-sdk/openai; import { Composio } from composio/core; import { VercelProvider } from composio/vercel; import { streamText } from ai; const composio new Composio({ provider: new VercelProvider() }); const session await composio.create(user_123, { toolkits: [gmail] }); const tools await session.tools(); const { text } await streamText({ model: openai(gpt-4o-mini), prompt: Find my last email from gmail, tools, });其余框架都是把session.mcp.url和session.mcp.headers填进各自的 MCP 配置即可headers 里已经带了认证信息不要自己拼。授权与连接管理调用时机看场景manageConnections开启时 meta tools 会自己引导连接一般不用手动调关闭时或在 UI 里提供连接账户按钮的场景由你发起const req await session.authorize(gmail, { callbackUrl: https://your-app.com/auth/callback, }); console.log(req.redirectUrl); // 把用户重定向到这里完成授权 const connected await req.waitForConnection(); // 用户完成后 resolvecallbackUrl是 OAuth 流程完成后 provider 回跳的地址会话级配置会覆盖认证配置里的默认值。 v0.4.0 新增的waitForConnections: true改变的是阻塞语义会话在执行工具前会先触发一步等待连接直到所有必需连接建立才继续——适合先连好账户再干活的流程纯只读场景没必要开。授权后随时可以用session.toolkits()查各 toolkit 的isActive与连接账户状态也支持toolkits、isConnected、search过滤和分页。进阶修饰器、自定义工具、沙箱会话级修饰器v0.4.0 起 modifiers 带上sessionId跨用户跟踪工具执行const tools await session.tools({ beforeExecute: ({ toolSlug, sessionId, params }) { console.log([${sessionId}] 执行 ${toolSlug}); return params; }, });modifySchema改发给模型的 schema和afterExecute改执行结果同理适合加审计日志、参数校验和遥测。进程内自定义工具import { experimental_createTool } from composio/core; import { z } from zod/v3; const grep experimental_createTool(GREP, { name: Grep, description: Search files, inputParams: z.object({ pattern: z.string() }), execute: async () ({ matches: [] }), }); const session await composio.create(user_123, { toolkits: [gmail], experimental: { customTools: [grep] }, });自定义工具自动参与search()索引LLM 调用时在进程内执行同批远程工具并行发后端后按原序合并。想复用 Composio 的认证就用扩展工具声明extendsToolkit: gmailexecute里通过ctx.execute调远程工具。多个无认证工具可以用experimental_createToolkit打包后放customToolkits。沙箱开关与规格不想让会话跑代码就sandbox: { enable: false }代码执行类工具REMOTE_WORKBENCH、BASH会被整体移除。需要跑重活时sandbox: { sandboxSize: large }升到 4 vCPU / 4 GB默认 standard 是 1 vCPU / 1 GB另有 medium 和 xlarge 两档。注意换规格会重建沙箱内存文件系统清空只有/mnt/files/目录保留。另外autoOffloadThreshold可设大响应自动卸载进沙箱的字符阈值。容易踩的坑⚠️ 没传 provider 就调session.tools()——它要靠 provider 把工具格式化成你的框架能吃的形状不传会直接抛错。不想引 provider 就走 MCP 客户端路径那是零 provider 的。⚠️sandbox和workbench同时传——二者是同一配置的新旧别名SDK 在边界直接抛ValidationErrorresolveToolRouterSandboxConfig强制二选一。新代码用sandbox。create()不传{ mcp: true }返回类型变成SessionWithoutMcp编辑器里session.mcp全是红的。端点本身在运行时存在但类型检查过不去属于白忙一场。同一个 toolkit 的tools配置里同时写enable和disable——三选一不是建议而是硬校验多传一个字段create()就失败。要启用 A 禁用 B拆成两个 toolkit 配置或用 tags 覆盖。composio.use(sessionId)复用会话时忘了重传customTools——自定义工具是内联在会话配置里的use()不携带就挂不回去自定义工具悄悄消失远端工具一切正常很难排查。延伸阅读会话实现execute / search / authorize / routeMultiExecute 本地远程分流ToolRouterSession.ts全部配置字段的 Zod schema 与默认值toolRouter.types.ts官方 API 文档tool-router.md可直接运行的示例工程authorize、preload、custom-tools、多框架接入tool-router 示例【免费下载链接】composioComposio powers 1000 toolkits, tool search, context management, authentication, and a sandboxed workbench to help you build AI agents that turn intent into action.项目地址: https://gitcode.com/GitHub_Trending/co/composio创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

ik_llama.cpp 的 Q6_0_R4 量化:解读 R4 重排打包格式如何将 CPU 推理提速最高 1.6 倍

ik_llama.cpp 的 Q6_0_R4 量化:解读 R4 重排打包格式如何将 CPU 推理提速最高 1.6 倍

ik_llama.cpp 的 Q6_0_R4 量化:解读 R4 重排打包格式如何将 CPU 推理提速最高 1.6 倍 【免费下载链接】ik_llama.cpp llama.cpp fork with additional SOTA quants and improved performance 项目地址: https://gitcode.com/GitHub_Trending/ik/ik_llama.cpp …

2026/9/19 23:13:27 阅读更多 →
OpenClaw 接入企业微信官方长连接机器人,模型 API 走 TaoToken

OpenClaw 接入企业微信官方长连接机器人,模型 API 走 TaoToken

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/21 0:49:50 阅读更多 →
DeepSeek V4 Flash 当 Codex 后端:Base URL 填 TaoToken 怎么算这笔账

DeepSeek V4 Flash 当 Codex 后端:Base URL 填 TaoToken 怎么算这笔账

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/21 1:50:14 阅读更多 →

最新新闻

RV1126平台JD9366触摸屏驱动移植实战指南

RV1126平台JD9366触摸屏驱动移植实战指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/21 2:03:06 阅读更多 →
ESP32-C3+MPU6050 DIY无线空中鼠标:BLE HID姿态解算实战

ESP32-C3+MPU6050 DIY无线空中鼠标:BLE HID姿态解算实战

1. 项目概述与核心思路拆解1.1 这个项目到底在做什么把一块 MPU6050 六轴传感器绑在手指或者手背上,通过 ESP32-C3 读取姿态数据,再用 BLE 把数据发给电脑或手机,让设备把姿态变化识别成鼠标移动和点击——这就是这个 DIY 无线鼠标项目的全部…

2026/9/21 2:03:06 阅读更多 →
CGMA管理会计能力框架:财务人职业成长与数字化转型的导航图

CGMA管理会计能力框架:财务人职业成长与数字化转型的导航图

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/21 2:03:06 阅读更多 →
小米游戏鼠标驱动下载与安装深度指南

小米游戏鼠标驱动下载与安装深度指南

1. 项目概述:为什么一个“驱动软件下载”值得单独写一篇深度指南?小米游戏鼠标——驱动软件下载,这八个字看起来平平无奇,甚至有点像搜索引擎里随手点进来的广告跳转页。但作为连续三年深度参与小米生态链外设产品测试、亲手拆解过…

2026/9/21 2:03:06 阅读更多 →
GaussView5入门实战:从分子建模到红外光谱计算全攻略

GaussView5入门实战:从分子建模到红外光谱计算全攻略

简介:《GaussView5基础教程》PDF文档面向量子化学计算新手与分子模拟初学者,定位为GaussView5与Gaussian联用的入门操作指南。教程先介绍软件界面:选择窗口、绘图窗口、菜单栏各项功能,以及快速工具栏中元素周期表、环工具、R基团…

2026/9/21 2:03:06 阅读更多 →
逆向必学:PE文件结构核心字段与加壳脱壳实战解析

逆向必学:PE文件结构核心字段与加壳脱壳实战解析

简介:这份PE文件结构详解PDF对照《加密与破解》第十章,系统梳理Windows下exe、dll、sys等可执行文件的格式规范,适合逆向工程、软件安全、病毒分析初学者,也适合备考事业单位计算机岗位的读者夯实底层基础,还可作为高校…

2026/9/21 2:02:05 阅读更多 →

日新闻

agents-generator 决策矩阵全解析:从项目检测到 AGENTS.md 规则生成的 16 步判定流程

agents-generator 决策矩阵全解析:从项目检测到 AGENTS.md 规则生成的 16 步判定流程

agents-generator 决策矩阵全解析:从项目检测到 AGENTS.md 规则生成的 16 步判定流程 【免费下载链接】agentic-awesome-skills AAS Core is the local, agent-first control plane for complete catalog discovery, agent-owned selection, stack validation, and …

2026/9/21 0:00:01 阅读更多 →
gin-vue-admin 前端工具函数全景指南:src/utils 复用规范与源码级解析

gin-vue-admin 前端工具函数全景指南:src/utils 复用规范与源码级解析

gin-vue-admin 前端工具函数全景指南:src/utils 复用规范与源码级解析 【免费下载链接】gin-vue-admin 🚀ViteVue3Gin拥有AI辅助的基础开发平台,企业级业务AI开发解决方案,内置mcp辅助服务,内置skills管理,…

2026/9/21 0:00:01 阅读更多 →
Wox 全功能插件开发实战指南:基于 Python / Node.js 宿主与 WebSocket 的持久化插件体系

Wox 全功能插件开发实战指南:基于 Python / Node.js 宿主与 WebSocket 的持久化插件体系

桌面应用AI 应用插件系统 【免费下载链接】Wox A cross-platform launcher that simply works 项目地址: https://gitcode.com/gh_mirrors/wo/Wox 点击查看 免费下载 全功能插件(Full-featured Plugin)是 Wox 三类插件实现方式中能力最完整的…

2026/9/21 0:00:01 阅读更多 →

周新闻

Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化

Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化

直接铺开项目本身吧。这几个月我一直在折腾一件事:用Flutter给OpenHarmony做一款游戏集合类的App,说白了就是把若干小游戏塞进一个壳里,用统一入口分发。这个方向本身不算新鲜,真正让我花了不少心思的,是首页那堆游戏卡…

2026/9/20 0:00:46 阅读更多 →
Word表格编号全攻略:从列表编号到题注交叉引用

Word表格编号全攻略:从列表编号到题注交叉引用

写Word文档,最让人头疼的往往是那些“看起来不起眼”的小问题。比如表格编号这事:今天在表后面多加了两个空白行,明天给客户交稿前发现整个章节的编号全部错位,光是挨个改序号就能耗掉大半个下午。我前阵子帮人整理一份上百页的技…

2026/9/20 0:00:46 阅读更多 →
从第一个站到第二个站:独立开发者的静态网站选型与落地实践

从第一个站到第二个站:独立开发者的静态网站选型与落地实践

1. 项目概述1.1 核心需求解析做独立开发者这几年,说实话,第一个网站上线的那天晚上我兴奋得没睡着。但等它跑了半年,流量惨淡、功能臃肿、代码自己都懒得看第二遍之后,我才慢慢琢磨明白一个道理:第一个网站是练手&…

2026/9/20 0:00:46 阅读更多 →

月新闻

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能分类:[AI/大模型]细分主题:AI 增强型 CI/CD 流水线自动化与 GitOps 实践:Agent 工作流、工具调用与任务拆解:从原型到生产的验收清单很多团队在尝试用大…

2026/9/19 23:01:36 阅读更多 →
容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场分类:[工程技术]细分主题:Kubernetes 生产环境运维与排障实战:可复制的项目复盘模板与决策记录大部分团队的事故复盘报告,最后都变成了躺在 Confluence 或钉…

2026/9/19 17:50:38 阅读更多 →
容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步分类:[工程技术]细分主题:Docker 容器化技术与镜像安全管理:核心链路的逐步实现与关键代码取舍面对一个积累了五六年历史包袱的单体架构应用(包含 Web 接口、后台…

2026/9/19 23:35:34 阅读更多 →