AgentGate 开源:给 AI 智能体调用 SaaS 加一道可验签的审计网关
开发者推出开源 API 网关 AgentGate,让 AI 智能体代用户调用 GitHub、Slack、Google W…
AgentGate 是一款面向 AI 智能体的轻量级 API 网关,已在 GitHub 开源并在 Hacker News 发起 Show HN。它解决的核心问题是:当 AI 智能体替用户去调用 GitHub、Slack、Google Workspace 等 SaaS 服务时,如何既不把用户的 OAuth 令牌交给模型,又能为每一次调用留下不可抵赖、可独立验证的操作证据。
设计思路:令牌不外露,每次动作都有签名回执
AgentGate 在智能体与上游 SaaS API 之间充当一个中间层。智能体只持有 AgentGate 颁发的 API Key,发起请求时附带「服务名、操作名、代谁执行」等元数据;真正涉及凭据的 OAuth 令牌、加密存储、请求转发则全部由网关侧完成,模型全程看不到用户令牌。
更关键的是「签名回执」机制:无论调用成功还是失败(例如用户尚未绑定账号,返回 token_missing),网关都会向本地 SQLite 日志中追加一条带签名的 receipt,形成无空缺的链式记录。这意味着审计人员拿到的不是「成功动作清单」,而是包含尝试、失败、成功在内的完整轨迹,避免静默绕过。
快速上手:一条 Docker 命令即可启动
项目目前以容器镜像形式发布到 GHCR,无需 Go 工具链或本地编译:
- 启动网关:
docker run加载ghcr.io/clawdlinux/agentgate:latest,挂载本地数据卷并设置AGENTGATE_VAULT_KEY、AGENTGATE_ADMIN_SECRET两个环境变量。 - 首次启动会自动生成一个 agent API Key 并写入日志,仅显示一次,需要立即保存。
- 调用示例:通过
POST /v1/act发起动作,Header 中携带 Bearer Token,请求体描述服务、操作和代谁执行,例如列出 GitHub 仓库。 - 接入真实账号:先在 GitHub 注册 OAuth App,把 Client ID/Secret 以环境变量传入,再调用
/admin/link获取授权链接,用户在浏览器中完成授权后即可发起真实调用。
容器本身采用 FROM scratch 构建,没有 shell 也没有包管理器,从设计上就排除了「在容器内偷改状态」的可能。
离线审计:无需网关在线即可验签
回执的可验证性是这套方案的卖点之一。审计流程不依赖 AgentGate 服务是否在线、不依赖 Docker 是否运行,只读本地文件:
- 从网关导出
trust.json(公钥信任根),并从 GitHub Releases 下载与平台匹配的独立验证器agentgate-verify。 - 验证器读取 SQLite 日志与本地 trust.json,给出
PASS结果;若附--expected-head <seq>:<hash>,还能在链完整性的基础上断言「没有漏掉的序号」。 - 支持
--format json输出机器可读结果,也可用--quiet只打印 PASS 摘要。
这种「日志 + 信任根 + 独立验证器」的三件套,理论上任何拿到副本的第三方都能复验,包括从未见过该项目仓库的人。
架构概览与适用场景
请求路径为:智能体 → POST /v1/act → 认证中间件 → 服务注册中心 → Vault 取令牌 → Proxy 转发上游 → 返回响应。网关侧还附带限流、审计日志、OAuth 回调等模块。
目前支持的上游服务包括 GitHub、Slack、Google Workspace,主要面向需要让 AI 智能体在受控范围内操作用户工作区的开发者,例如:
- 企业内让模型代发 Slack 消息、读写 Google Drive 文件;
- 让模型在 GitHub 上创建 Issue、合并 PR,但要求事后可审计;
- 任何需要「代客执行 + 事后追责」的智能体 SaaS 集成场景。
项目代码与镜像已在 GitHub(Clawdlinux/agentgate)公开,开发者可自行部署或基于源码二次改造。
