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 集成的企业生产版本。

## 产品截图
### Agent 注册表
创建 Agent、轮换 Agent API key、禁用不安全的 Agent,并确保业务 API 凭证远离 Agent 运行时。

### Tool 注册表
注册 HTTP Tool、配置 endpoint、风险级别、header 和 schema,然后通过 ATG 测试 Tool 调用。

### 策略管理
定义允许、拒绝、审批和脱敏策略,以便在高层风险的 Agent 操作触及业务 API 之前对其进行治理。

### 审批审查
审查需要审批的调用、检查请求上下文,并从 Web 控制台批准或拒绝执行。

### 调用凭证
检查每一次 Tool 调用,包括请求参数、策略决策、状态、延迟和脱敏后的响应。

### 审计日志
跟踪跨 Agent 调用、拒绝操作、审批和执行结果的治理事件。

## 您可以演示的内容
最快的演示将创建一个 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, 审计日志, 数据脱敏, 测试用例, 自定义脚本, 访问控制, 请求拦截, 身份与访问管理, 逆向工具