维度 | 共享机器人账号 | 以用户身份(本教程方案) |
权限边界 | 机器人需要开通所有成员会用到的仓库权限,权限必然过大 | 复用每个成员自己的仓库权限,天然收敛 |
审计追溯 | 所有 PR 都是同一个 author,出了问题查不到人 | PR author 即需求提交人,审计链路不断 |
协作体验 | Reviewer 不知道该找谁讨论方案 | 直接 @ PR 作者本人 |
能力点 | 说明 |
Vault | 绑定到某个终端用户的凭据集合,存放该用户的第三方服务 Token;通过 metadata 与业务系统的用户 ID 双向映射 |
Credential | Vault 内的一条凭据 = MCP 服务器 URL 与 Token 的配对;支持 static_bearer、mcp_oauth、environment_variable 三种类型 |
Session 级凭据绑定 | 创建 Session 时传入 vault_ids,运行时按 URL 自动匹配凭据并注入;Agent 定义不感知任何用户信息 |
GitHub MCP | 通过 MCP 协议把 GitHub 的仓库、分支、PR 操作暴露为 Agent 工具 |
配置项 | 建议值 | 用途 |
Repository access | 只勾选目标仓库(如 payments-web),不选 All repositories | 收敛可访问仓库范围 |
Contents | Read and write | 拉代码、推分支 |
Pull requests | Read and write | 创建 PR |
Metadata | Read-only | GitHub 强制要求 |
参数 | 必填 | 说明 |
display_name | 是 | 控制台展示名 |
metadata | 否 | 任意键值对,用于把 Vault 映射回业务系统的用户记录;后续凭据失效需要找人重新授权,靠它反查 |
类型 | 适用 | 密钥字段 |
static_bearer | 固定 API Key / PAT(GitHub、Linear 等)——本教程场景 | token |
mcp_oauth | OAuth 2.0 的 MCP 服务(Slack、Google Drive 等),提供 refresh 块后平台代刷令牌 | access_token + refresh |
environment_variable | 沙箱内 CLI / SDK 走环境变量鉴权的场景,用 allowed_hosts 限制密钥可发往的主机 | secret_name + secret_value |
环节 | 行为 |
API 层 | 凭据 write-only,任何读接口不返回密钥值 |
沙箱内 | Agent 看不到明文;environment_variable 类型在沙箱内呈现为不透明占位符 |
出口注入 | 替换发生在沙箱出口处,不在沙箱内——真实值不经过模型上下文 |
网络限制 | environment_variable 类型用 allowed_hosts 限制密钥可发往的主机;该域名还须同时在 Environment 网络白名单中允许,两层都过才能成功 |
操作 | 接口 | 行为 |
轮换密钥 | POST /vaults/{vault_id}/credentials/{credential_id} | 可更新密钥值与 display_name;结构性字段(mcp_server_url 等)创建后锁定,要改只能删旧建新 |
删除凭据 | DELETE .../credentials/{credential_id} | 硬删除,相关记录与密钥一并清除,不可恢复 |
删除 Vault | DELETE /vaults/{vault_id} | 成员离职时使用,级联删除其全部凭据,不可恢复 |
诊断 OAuth 凭据 | POST .../credentials/{credential_id}/mcp_oauth_validate | 返回 valid / invalid / unknown 三种状态(本教程 PAT 场景用不到) |