OpenConnector 深潜记:拆完 116 万行源码,1451 个 Provider 背后藏着十处暗礁
最近在做 Agent 技术选型,绕不开一个问题:Agent 要操作外部 SaaS(GitHub、Gmail、Slack、Notion……),凭证放哪?每家自己管一遍 OAuth 太苦,全交给云厂商又不放心。Pipedream 和 Composio 是两个现成答案,但都是闭源 SaaS。于是把开源阵营里声势最大的 Op…
缘起
最近在做 Agent 技术选型,绕不开一个问题:Agent 要操作外部 SaaS(GitHub、Gmail、Slack、Notion……),凭证放哪?每家自己管一遍 OAuth 太苦,全交给云厂商又不放心。Pipedream 和 Composio 是两个现成答案,但都是闭源 SaaS。于是把开源阵营里声势最大的 OpenConnector(oomol-lab/open-connector)拉出来解剖了一遍——clone 了源码逐行看,GitHub API 实测了数据,不是转述 README 的二手货。
先报实测数字
- Star 5397(2026-06-29 上线,两个月),Fork 461,open issues 只有 4 个,贡献者 73 人,push 到昨天还在动——维护是真活跃。
- 宣传口径 1000+ providers / 10000+ actions。源码实测:1451 个 provider 目录,10925 个
defineProviderAction调用。数字没吹牛。 - 但要看清楚结构:
src总共 116.8 万行 TypeScript,其中 providers 目录占 96.9%。真正的网关内核只有 3.6 万行。绝大多数 provider 是 3 个文件的浅封装。 - 鉴权方式分布更扎心:api_key 1254 家、oauth2 只有 58 家(4%),再加 38 家双支持的,OAuth 覆盖也就 7%。所谓托管 OAuth,对绝大多数 provider 是不存在的,还是要用户自己贴 key。
它做对的事:凭证不进 Agent 进程
这是整个项目的灵魂。Agent 调工具时只能看到连接的元信息(id、authType、grantedScopes),带 accessToken 的完整凭证只通过执行器上下文在进程内注入,不出 HTTP 边界。配合脱敏运行日志和 allow/block 策略,这个边界思想是对的,也是值钱的。MCP 接入做得克制:只有 list_apps / list_connections / search_actions / get_action_guide / execute_action 五个 meta-tool,10925 个 action 全藏在 execute_action 后面,不会撑爆 agent 的 context。
十处暗礁(全部源码坐实,不是吓唬人)
挑最狠的五条:
1. 默认零鉴权,静默放行。auth.ts:114——不配 adminToken,直接 authenticated: true。再叠加 Dockerfile 的 HOST=0.0.0.0 和 compose 的 3000:3000,照 README 起服务,就是一个无鉴权网关裸听宿主端口。这不是 bug,是默认值的选择。
2. 加密 fail-open。secret-codec.ts:39——读凭证时先看前缀,不是密文前缀就当明文原样返回。明文与密文同列共存,没有「本实例必须加密」的强制断言。不设加密密钥,凭证明文入库,只打一条启动 warning。
3. KDF 用硬编码全局 salt。所有部署共用同一 salt 字符串,跨部署预计算在理论上可行。而且 Node 侧 scrypt 和 Worker 侧 PBKDF2 两套实现密文不互通(前缀都不同),SQLite 迁到 D1 得解密重加密,文档只字未提。
4. POST /v1/proxy/:service 是边界上的大洞。接受任意 endpoint/method/headers/body,注入凭证后转发——action 级 scope 和 allow/block 策略对它完全不生效(文档原话:"Action policy does not affect it")。等于把最小权限降级成「持有该 key 的全权代理」。要彻底关闭必须显式设 BLOCKED_PROXIES="*"。
5. 静态 ADMIN_TOKEN 是事实上的 root。无过期、无轮换、无 scope,却管着凭证写入和 token 签发。还有一条值得警惕:2026-08-27,Marketplace 计费代码进了开源主干——今天的可选件,可能就是明天的默认路径。
(其余五条:幂等键全局共享、MCP 三跳发现链、Schema 放弃类型安全、1451 个机器生成 provider 无编译期质量保障、JWT 仅 Node 侧可用——细节见文末报告。)
竞品格局一图流
| 维度 | OpenConnector | Composio | Pipedream | Arcade |
|---|---|---|---|---|
| 开源 | Apache-2.0 全自托管 | MIT 核心+托管商业 | 闭源,已被 Workday 收购 | 闭源 |
| 强项 | 自托管自由度最高,凭证归自己 | 托管 OAuth 最成熟,免费 2 万次/月 | 3000+ app,SOC2/HIPAA | 授权模型最讲究,SOC2 |
| 弱项 | 默认安全姿势差,OAuth 仅 7% | 重度账单失控 | 收购后 Agent 方向不明 | 集成面窄(44 家) |
我的三条业务线判断
- 多智能体科研系统:最匹配。MCP 接入自然,接受三跳发现链的延迟就行。
- 量化交易:慎入。proxy 洞 + 全局幂等命名空间 + 静态 admin token,撑不起交易级权限审计;而且你要的券商/数据源大概率不在这 1451 家里。
- C 端产品:不建议。默认零鉴权 + 默认明文的姿态,离 C 端合规基线太远。它是给懂行人的自托管毛坯,不是开箱即生产的产品。
收个尾
一句话:凭证不进 Agent 进程,这面旗帜是对的、值钱的;但默认安全姿势是「能跑就行」,自托管者必须自己补上成人礼。
若要引入,五条加固缺一不可:加密密钥从 vault 注入、强随机 ADMIN_TOKEN、每调用方独立 runtime token、BLOCKED_PROXIES="*"、撤端口映射只听内网。
完整报告(含架构图、源码片段、决策树)在我这边的深度研究存档里,欢迎讨论。源码 HEAD 908351b,数据截至 2026-08-29。