AI 的检索层
跨越每个系统的边界
AI 在任何决定中看到的内容,都经由连接器层到达。Microsoft Graph、SharePoint、MCP 服务器、日程边车服务、入站邮件、出站 Webhook、OAuth 集成管理器。按组织隔离,AI 的每次工具调用都会连同其输入、结果和背后的人员一起被记录。
AI 决策背后的检索层
Onplana 的三区决策模型(见完整文章 (英文))在行动区中直接应用,在建议区中提出建议。在每个决定中,AI 都基于上下文进行推理,而这些上下文大部分并不在 Onplana 的数据库里。连接器就是它到达的途径。
AI 的每次工具调用,无论来自应用内助手还是已连接的智能体,都会连同工具、输入、结果、人员和时间一起被记录。在Enterprise 方案及以上中,组织的所有者和管理员可以在 Audit Logs 页面的 Agent Activity 中阅读这些记录。完整提示词和模型检索到的上下文不会保存,所以记录显示的是 AI 做了什么,而不是它读过的全部内容。
所有连接器都遵循同样的做法:在源系统要求时使用 OAuth(Microsoft Graph、SharePoint、第三方文件云),程序化客户端使用 PAT(MCP、REST API、Webhook),从创建起就按组织隔离,所以组织 A 的令牌无法读取或写入组织 B,而且 AI 通过它们进行的每次工具调用都会被记录。
目前可用的七个连接器
方向、身份验证、方案以及每个连接器的作用。集成列表根据客户需求增长;重叠度高的供应商优先。
MCP 服务器
通过 Model Context Protocol 公开的 Onplana 工具目录。Claude Desktop、Cursor、Goose、Continue 以及任何其他兼容 MCP 的客户端都可以连接并使用 351 个类型化工具(读取项目、创建任务、记录工时、查看风险、执行治理审查)。与应用内聊天相同的限制和相同的记录。
身份验证:带 Dynamic Client Registration(RFC 7591)的 OAuth 2.1,或 Personal Access Token
Microsoft Graph(M365)
按用户通过 OAuth 访问 Microsoft Graph,用于邮件(Mail.ReadWrite)、日历(Calendars.ReadWrite)、Teams 频道发帖(ChannelMessage.Send)、文件(Files.ReadWrite)和人员(User.Read)。AI 功能用它来总结一段对话、与干系人安排会议、在 Teams 频道中发布状态更新,以及把 SharePoint 文档附加到任务上。
身份验证:按用户的 OAuth,令牌通过 lib/oauthTokens.ts 刷新,invalid_grant 会设置 revokedAt
SharePoint 网站 + 文档库
浏览用户有权访问的 SharePoint 网站,把 SharePoint 文档附加到任务或项目上,而无需复制到 Onplana。链接模式(文件留在 SharePoint 中,Onplana 保存链接)。该集成还会在项目工作区中显示文档的元数据。
身份验证:继承用户在 Microsoft Graph 中的 OAuth 作用域
入站邮件 Webhook(项目邮箱)
每个项目都有一个入站邮件地址。把一封邮件转发给它,它就会变成一项新任务,主题作为标题,正文作为描述。回复某项任务的邮件会作为评论出现在该任务上,第一行中的状态词可以改变任务状态。附件不会保存。干系人的请求不会留在收件箱里,等着有人手工分拣。
身份验证:位于 /api/inbound-email 的公开 Webhook,通过入站地址与项目关联
日程边车服务(导入 .mpp / .xml / .xer)
上传一个 Microsoft Project 文件(.mpp、.mpx、MSPDI .xml、Primavera .xer),基于 MPXJ 的边车服务会把它转换为 Onplana 的任务树:任务、依赖关系(FS/SS/FF/SF + 延隔时间)、作为自定义字段的 ExtendedAttributes、基线 + 计划成本(来自 MSPDI)。然后 AI 风险检测会在导入的日程上运行。
身份验证:在应用内上传(multer,上限 50 MB),或使用 /tools/schedule-health-check 上的免费公开版本
出站 Webhook
项目、任务、评论、成员和迁移的事件(project.created、task.status_changed、comment.created、migration.completed 等)。用 HMAC-SHA256 签名的负载、带递增等待的重试,以及每个端点的投递历史。把 Onplana 连接到 Zapier、n8n、你的 ETL 管道或你的事件响应手册。
身份验证:每个 Webhook 的密钥,签名负载的请求头(X-Webhook-Signature)
OAuth 集成管理器
组织管理界面,用于连接第三方服务(Google Drive、包含 OneDrive 和 SharePoint 的 Microsoft 365、Box 和 Dropbox)。令牌的生命周期经由 lib/oauthTokens.ts:过期时刷新,断开时撤销,遇到 invalid_grant 时标记为无效。断开连接是软性的(行保留,其令牌被清空),而不是永久删除。
身份验证:组织权限(org.integration.manage,默认为 ADMIN 及以上)
Microsoft Planner:保留 Planner,加上项目组合
Business+团队继续在 Planner 中工作。一步就能把他们的计划关联到 Onplana 的项目组合,每个计划都会成为一个项目,由 Microsoft Graph 订阅保持更新:Planner 中的一次修改会让 Onplana 重新读取该计划,并重新计算项目的进度和日期。
- 每个计划一个状态,依据 Planner 的日期和完成百分比得出。没有日期的计划显示为未评估。
- 不同计划中任务之间的依赖关系,从项目组合中选取,并绘制在它的时间线上。
- 所有计划中逾期的里程碑、有风险的依赖关系以及未关闭的问题和风险,每一行都链接到对应的条目。
- “集成”中会显示已关联的计划及其上次同步时间、“立即同步”和“取消关联”。Planner 是任务字段的所有者;Onplana 不会回写到 Planner。
身份验证:关联者的 Microsoft 连接,带 Tasks 和 Groups 权限;每条变更通知都用按订阅保存的密钥进行验证。
保留 Planner。加上项目组合。身份验证 + 安全
在所有连接器中保持一致的三个要素。
凭据保存在 Key Vault 中
Onplana 用于第三方(Microsoft、Google、hCaptcha、Stripe 等)的客户端密钥保存在 Azure Key Vault 中,由运营团队单独轮换。每个用户的 OAuth 令牌加密保存在 OauthConnection 行中。
按组织隔离的令牌
每个 PAT 和每个 OAuth 令牌从创建起就只属于一个组织。连接器调用无法跨越组织边界,因为 organizationId 绑定在令牌行上,从不从请求头中读取。
AI 的每次调用都有记录
AI 通过连接器进行的每次工具调用都会写入记录:工具、输入、结果、人员和时间。出站 Webhook 还会添加一条 WebhookDelivery 行,包含完整的请求和响应正文 + 耗时。入站邮件经由正常的任务和评论历史记录。
连接器不做的事
这一层的诚实清单。
以你的名义发送邮件
Outlook 邮件只能存为草稿:AI 在你的邮箱中写好草稿,由你审阅并发送。Teams 频道发帖没有草稿,所以工具在没有明确确认的情况下不会发帖,应用内的智能体也不能发帖。出站 Webhook 在你订阅的事件发生时触发。
跨越组织边界
在组织 A 中创建的 PAT 或 OAuth 令牌无法触及组织 B 的数据。属于多个组织的人需要分别连接每个组织。这一限制在服务器上、在令牌行上执行,而不是在请求头上。
绕过方案限制
连接器的访问遵循组织的方案:MCP 服务器、入站邮件以及 Microsoft Graph 的邮件、日历和 Teams 适用于包括免费版在内的所有方案,SharePoint 和 OneDrive 的文件链接适用于Professional 方案及以上,出站 Webhook 适用于Business 方案及以上。限制在服务器上;MCP 客户端可以通过身份验证,但超出方案的调用会返回 402,并附带升级方案的路径。
跨系统执行多步骤的自主工作
连接器公开功能;应用内聊天和外部智能体每次调用一个。跨越多次调用进行规划和执行的多步骤智能体流程属于智能体层。
常见问题
连接器的凭据是如何保存的?
分两层。Onplana 自己的密钥(Anthropic 的 API 密钥、Azure OpenAI 端点、第三方 OAuth 客户端密钥、SMTP 凭据、hCaptcha、Stripe 等)保存在 Azure Key Vault 中,由运营团队单独轮换。每个用户的 OAuth 令牌(其 Microsoft Graph 访问令牌和刷新令牌)保存在标记了组织的 OauthConnection 行中,经过加密,并在过期时自动刷新。断开连接是软撤销:行保留,其令牌被清空。
连接器能跨越租户边界吗?
不能。每次连接器调用都绑定到一个组织。来自应用的调用经过与 REST API 相同的 withOrganization 中间件,所以每个查询都带有 organizationId。PAT 或 OAuth 令牌从创建起就属于一个组织,所以已连接智能体的调用从令牌获取组织,从不从请求头获取。属于多个组织的人需要分别连接每个组织。
连接器调用的记录中包含什么?
AI 通过连接器进行的每次工具调用都会连同工具、输入、结果、人员和时间一起被记录,可以在 Audit Logs 页面的 Agent Activity 中查看。出站 Webhook 还会写入 WebhookDelivery,包含完整的请求和响应正文以及耗时。入站邮件经由正常的任务和评论历史写入。审核人无需额外连接即可阅读记录。
MCP 服务器与 REST API 有什么不同?
相同的功能,不同的协议。MCP 服务器使用 Streamable HTTP(MCP 的传输标准),并用类型化工具目录响应 MCP 的 tools/list 调用,所以兼容 MCP 的智能体客户端能自行发现 Onplana 的操作。REST API 使用 HTTP+JSON,文档位于 /api/openapi.json。在 Claude Desktop 或 Cursor 会话中使用 MCP;在后端脚本中使用 REST。两者调用相同的处理程序,使用相同的限制和相同的记录。
我能请求在 Onplana 中加入新的连接器吗?
目前的连接器列表就是上面这些。集成管理器 + OAuth 刷新可以复用;瓶颈在于每个供应商的 OAuth 配置 + 工具定义。Onplana 团队通过 hi@onplana.com 接收集成请求;客户重叠度高的供应商(例如 Atlassian、ServiceNow、Salesforce)优先。
为什么日程边车服务算作连接器?
因为它走出了 Onplana 的数据模型,去读取一种外部文件格式。用 Java 编写的 MPXJ 边车服务(一个独立的容器应用)读取 .mpp / .xml / .xer,通过 HTTP 返回读取到的结构,Onplana 的导入管道再把它写入项目树。它是通往 Microsoft Project 文件世界的连接器,正如 SharePoint 集成是通往文档云世界的连接器。
继续浏览 AI 专区
连接器是三层中的一层。另外两层涉及产品中的 AI 功能和多步骤的智能体工作。