demonzym-hash/agent-tool-gateway

GitHub: demonzym-hash/agent-tool-gateway

ATG 是一个开源的 AI Agent 治理网关,通过策略、审批、脱敏和审计等机制让 Agent 安全地调用企业 HTTP API。

Stars: 1 | Forks: 0

# Agent Tool Gateway Agent Tool Gateway (ATG) 是一个开源网关,允许 AI Agent 通过一条受治理的控制路径安全地调用企业 HTTP API。 ATG 位于 Dify、LangChain、MCP client、SDK、自定义 Agent 和您的业务 API 之间。它会在 Agent 接触真实系统之前,为其添加 Agent 凭证、Tool 注册、策略决策、审批、脱敏、凭证隔离和审计日志。 本仓库目前处于 `v0.1.0` 公开 MVP 阶段。它已准备好用于开发者预览、演示、集成商 PoC 以及早期的开源试用。它不是包含 SSO/RBAC、多租户、HA、SIEM 或 Vault/KMS 集成的企业生产版本。 ![ATG 架构](https://static.pigsec.cn/wp-content/uploads/repos/cas/fd/fdb2981acec3cdccf80b1dc4056c9c597dc46560bbd0c14ea55e3645436c8c4a.png) ## 产品截图 ### Agent 注册表 创建 Agent、轮换 Agent API key、禁用不安全的 Agent,并确保业务 API 凭证远离 Agent 运行时。 ![Agent 注册表](https://static.pigsec.cn/wp-content/uploads/repos/cas/17/17055ee31f5327a998dc6dcc537716540ab5605900661527c55492bdc8cf6f13.png) ### Tool 注册表 注册 HTTP Tool、配置 endpoint、风险级别、header 和 schema,然后通过 ATG 测试 Tool 调用。 ![Tool 注册表](https://static.pigsec.cn/wp-content/uploads/repos/cas/5f/5f7d37db445d526ada8f6cf217adfdf786accab8b5944f8a292c763c468067d7.png) ### 策略管理 定义允许、拒绝、审批和脱敏策略,以便在高层风险的 Agent 操作触及业务 API 之前对其进行治理。 ![策略管理](https://static.pigsec.cn/wp-content/uploads/repos/cas/94/9430ce1b52eb039d02e31e0e24b316e7460f0832313a4070d67d47c632909c92.png) ### 审批审查 审查需要审批的调用、检查请求上下文,并从 Web 控制台批准或拒绝执行。 ![审批详情](https://static.pigsec.cn/wp-content/uploads/repos/cas/af/af2942e8baa5c812e662ef7a79d4ded74981b5b04683c5041acf8961eb66e96e.png) ### 调用凭证 检查每一次 Tool 调用,包括请求参数、策略决策、状态、延迟和脱敏后的响应。 ![调用详情](https://static.pigsec.cn/wp-content/uploads/repos/cas/39/398ce58d1fa529aa8eb2d6639613232998e12ccb3b755336ab9ccef9693bda99.png) ### 审计日志 跟踪跨 Agent 调用、拒绝操作、审批和执行结果的治理事件。 ![审计日志](https://static.pigsec.cn/wp-content/uploads/repos/cas/58/58fbbeecc066abd3098697956b7af6067f3cb0cd5420d0d136b8dde13b537934.png) ## 您可以演示的内容 最快的演示将创建一个 Agent、三个 Tool 和三个策略: - 退款审批:大额退款在执行前需要经过审批。 - CRM 脱敏:敏感的客户数据在返回和审计存储之前会被掩码处理。 - 危险操作拒绝:删除类型的调用在到达目标 API 之前会被拦截。 ## 服务 - `server/`: Express API、PostgreSQL 迁移、Agent/Tool/Policy/Approval/Audit endpoint。 - `web/`: React + Ant Design Web 控制台。 - `examples/mock-api/`: MVP 流程中使用的演示 HTTP API。 - `sdk/python/`: Python SDK 和可选的 LangChain 适配器。 - `sdk/typescript/`: 兼容 TypeScript 的 SDK。 - `examples/dify/`: Dify HTTP Tool 示例。 - `examples/mcp-client/`: MCP client 示例。 - `openapi/atg-openapi.yaml`: ATG HTTP API 的 OpenAPI 规范。 ## Docker 部署 首先设置所需的密钥,然后启动技术栈: ``` export SECRET_KEY=replace-with-a-long-random-secret-key export ADMIN_TOKEN=replace-with-a-long-random-admin-token docker compose up --build ``` 默认 endpoint: - ATG API: `http://localhost:8080` - Web 控制台: `http://localhost:5173` 将 Web 控制台发布到不同的主机端口: ``` WEB_PORT=80 docker compose up --build ``` Web 控制台通过 `x-admin-token` header 使用相同的 `ADMIN_TOKEN`。 对于类似于生产的单服务器评估,在共享环境之前请阅读[部署指南](./docs/deployment.md)。 所需的部署变量: | Variable | Purpose | |---|---| | `DATABASE_URL` | PostgreSQL 连接字符串。Docker Compose 会为内置的 PostgreSQL 服务设置此项。 | | `SECRET_KEY` | 在存储之前加密敏感的 Tool header。请使用一串较长的随机值。 | | `ADMIN_TOKEN` | 用于保护管理 API 和 Web 控制台。 | ## 部署检查 将 ATG 部署到服务器后,请从您的工作站运行部署检查: ``` ATG_BASE_URL=http://:8080 \ MOCK_TOOL_ENDPOINT=http:///mock/refund_order \ ADMIN_TOKEN= \ npm run deployment:check ``` 该检查会验证健康状态、admin token 验证关口、Agent/Tool/Policy 创建、审批执行路径、持久化的 Invocation/Approval/Audit 详情读取,以及 Evidence Export 包哈希。 该检查会向目标环境写入临时的 Agent、Tool、Policy、Invocation、Approval 和 Audit 记录。如果您不想在共享环境中留下测试记录,请针对全新的评估数据库运行此检查。 ## 本地开发 复制环境变量文件并安装依赖: ``` cp .env.example .env npm run install:local npm run doctor:local npm run dev:local ``` PowerShell: ``` Copy-Item .env.example .env npm run install:local npm run doctor:local npm run dev:local ``` `dev:local` 会在运行数据库迁移之后,在主机上启动 ATG Server、Mock API 和 Web 控制台。 默认的本地 endpoint: - ATG API: `http://localhost:8080` - Mock API: `http://localhost:9090` - Web 控制台: `http://localhost:5173` ## 运行快速演示 本地运行时: ``` npm run seed:demo:local ``` Docker/服务器运行时: ``` ATG_BASE_URL=http://:8080 \ MOCK_BASE_URL=http://mock-api:9090 \ ADMIN_TOKEN= \ node scripts/seed-demo-data.mjs ``` PowerShell: ``` $env:ATG_BASE_URL = "http://:8080" $env:MOCK_BASE_URL = "http://mock-api:9090" $env:ADMIN_TOKEN = "" node scripts/seed-demo-data.mjs ``` 种子数据填充完成后,打开 Web 控制台并查看 Agent、Tool、Policy、Approval、Invocation 和审计日志。 ## 常用命令 ``` npm run check npm --prefix server test npm run build npm run deployment:check:local npm run smoke:local npm run demo:local npm run policy-preview:local npm run dify:local npm run mcp-client:local npm run python-sdk:local npm run langchain:local npm run typescript-sdk:local ``` ## 集成 - REST 调用:带上 Agent API key 发送 `POST /api/v1/invoke/{tool_name}`。 - `200`: Tool 执行成功。 - `202`: Tool 调用正在等待审批。 - `403`: Tool 调用被策略拒绝。 - `502`: 上游 Tool 执行失败。 - MCP:`POST /mcp` 支持 `initialize`、`tools/list` 和 `tools/call`。 - Dify:配置一个 HTTP Tool 来调用 ATG,而不是直接调用业务 API。 - Python:使用 `sdk/python` 进行 REST、MCP 调用,获取管理辅助功能及 LangChain 封装。 - TypeScript:使用 `sdk/typescript` 进行 REST、MCP 调用,获取管理辅助功能及类型化示例。 ## 更多语言 - [简体中文](./docs/README.zh-CN.md) - [部署指南](./docs/deployment.md) - [路线图](./docs/roadmap.md) ## MVP 限制 - 管理员身份验证采用共享 token,而不是 SSO/RBAC。 - MCP 支持特意被限制在 MVP 的 Tool 循环内。 - 审批 callback/webhook 不在 v0.1.0 的范围内。 - 多租户、HA、SIEM、Vault/KMS 和企业 IAM 属于未来或商业版本的考量范畴。 ## 许可证 ATG 采用双重许可模式: - 核心公共版本(`server/`、`web/` 和网关代码):[GNU Affero General Public License v3.0 only](./LICENSE)(`AGPL-3.0-only`)。 - SDK 和示例:采用 MIT 许可以确保易于集成采纳;请参阅 `sdk/python/LICENSE`、`sdk/typescript/LICENSE` 和 `examples/LICENSE`。 - 商业许可:适用于专有内嵌、闭源修改的 SaaS/托管服务使用、OEM 重新分发、企业功能、私有部署和支持。请参阅 [COMMERCIAL.md](./COMMERCIAL.md)。 外部贡献需根据 [CLA.md](./CLA.md) 中的贡献者条款被接受,以便项目能够同时维护公共 AGPL 版本和商业许可途径。 项目名称、徽标、截图和品牌受 [TRADEMARKS.md](./TRADEMARKS.md) 约束。
标签:AI代理, API网关, MITM代理, Streamlit, 审计日志, 数据脱敏, 测试用例, 自定义脚本, 访问控制, 请求拦截, 身份与访问管理, 逆向工具