indicaindependent/sentinel
GitHub: indicaindependent/sentinel
一个利用AI代理查询美国联邦政府监控合同的数据库工具,帮助用户用自然语言快速获取政府监控支出信息。
Stars: 0 | Forks: 0
# SENTINEL — 监控合同智能代理




**咨询任何关于美国政府监控支出的问题。几秒钟内获得答案。**
🔴 **[在线演示 → sentinel.osintnet.uk](https://sentinel.osintnet.uk)**
*Google Cloud 快速代理黑客松 2026 — MongoDB 赛道*
## 什么是 SENTINEL?
美国联邦政府授予的每一份人脸识别和人工智能监控合同都是公开记录。但要找到它们并不容易。我们找到了 **249 份合同** —— 总计 **38.3 亿美元** —— 并构建了一个 AI 代理,允许任何人用普通英语提问关于政府监控支出的问题,并在几秒钟内获得有来源、可验证的答案。
**这不是一个聊天机器人。** SENTINEL 是一个推理代理,具备以下能力:
- 查询包含 249 份已验证政府合同的真实 MongoDB 数据库
- 使用多步推理来聚合、筛选和分析采购数据
- 揭示供应商、机构和支出模式之间的关系
- 绝不产生幻觉 —— 每个答案都基于真实的合同数据
由 **Indica Independent Media** 构建,其使命是利用信息和知识来保护弱势社区免受强大实体的侵害。
## 架构
```
User Query
│
▼
FastAPI (sentinel.osintnet.uk)
│
▼
Google ADK 1.32 Runner
│
├── Gemini 2.5 Pro (reasoning + natural language)
│
└── MongoDB MCP Server (mongodb-mcp-server)
│
▼
MongoDB Atlas
├── 249 federal contracts
├── $3.83B total value
├── 2dsphere geo index
└── Vendor / agency aggregations
```
### 技术栈
| 层级 | 技术 |
|---|---|
| **AI 推理** | Gemini 2.5 Pro via Google ADK 1.32 |
| **代理框架** | Google Cloud Agent Development Kit (ADK) |
| **MCP 合作伙伴** | MongoDB MCP Server (`mongodb-mcp-server`) |
| **数据库** | MongoDB Atlas M0 — `sentinel` 集群 |
| **后端** | FastAPI + Python 3.11 + Uvicorn |
| **前端** | Vanilla JS + Leaflet.js(深色地图 UI) |
| **基础设施** | Dell OptiPlex → Cloudflare Tunnel → CF Zero Trust |
| **域名** | sentinel.osintnet.uk |
## 数据
SENTINEL 的数据库包含 **249 份已验证的美国联邦政府合同**,来源包括:
- SAM.gov(奖项管理系统)
- USASpending.gov
- Indica Independent Media 进行的 18 个月开源情报研究
**亮点:**
- 🔴 Palantir USG Inc:**19.3 亿美元**监控/AI 合同
- 🔴 Palantir Technologies:**17.1 亿美元**额外合同
- 国防部:**23.1 亿美元**监控总支出
- 追踪了 29 个不同的政府机构
- 所有合同按州进行地理编码,带有 2dsphere 索引
## 代理的工作原理
SENTINEL 使用 **MongoDB MCP Server** 作为其主要数据访问工具。当你提问时,ADK 代理:
1. **规划** — Gemini 2.5 Pro 确定需要哪些 MongoDB 操作
2. **执行** — 通过 MCP 发出 `find`、`aggregate`、`count` 命令
3. **推理** — 将结果综合成基于事实、有来源的答案
4. **建议** — 提出后续查询以深入挖掘
### 示例查询
```
"Who are the top 5 vendors by total contract value?"
"Which agencies spent the most on facial recognition?"
"Show me all Clearview AI contracts"
"How many contracts were awarded after 2022 over $10M?"
"What states have the most surveillance contractors?"
```
## MongoDB MCP 集成
本项目使用官方的 `mongodb-mcp-server` 作为 ADK 代理的数据超能力:
```
from google.adk.agents import Agent
from google.adk.tools.mcp_tool import McpToolset
from google.adk.tools.mcp_tool.mcp_session_manager import StdioConnectionParams
from mcp import StdioServerParameters
root_agent = Agent(
model="gemini-2.5-pro",
name="sentinel_agent",
instruction=SENTINEL_INSTRUCTION,
tools=[
McpToolset(
connection_params=StdioConnectionParams(
server_params=StdioServerParameters(
command="npx",
args=["-y", "mongodb-mcp-server", "--readOnly"],
env={"MDB_MCP_CONNECTION_STRING": os.environ["MONGO_URI"]},
),
timeout=30,
)
)
],
)
```
**代理可用的 MCP 工具:**
- `find` — 使用复杂筛选条件查询合同
- `aggregate` — 按任意字段分组、求和、排序
- `count` — 统计匹配记录数
- `collection-schema` — 模式内省
- `db-stats` — 数据库概览
## 本地设置
```
# 克隆
git clone https://github.com/indicaindependent/sentinel.git
cd sentinel
# Python venv
python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txt
# Node(用于 MongoDB MCP server)
node --version # requires v18+
# 环境
cp .env.example .env
# 添加您的密钥:
# GEMINI_API_KEY=your_key_from_aistudio.google.com
# MONGO_URI=your_mongodb_atlas_connection_string
# 运行
uvicorn main:app --host 0.0.0.0 --port 8001 --reload
```
打开 `http://localhost:8001`
## API 参考
```
GET /api/health — System status + engine info
GET /api/stats — Contract totals, top vendors/agencies
GET /api/contracts — Query contracts (search, vendor, agency, min_value)
POST /api/query — Natural language query to Gemini + MongoDB MCP agent
```
## 评审标准对照
| 标准 | SENTINEL 的回答 |
|---|---|
| **技术实现** | Gemini 2.5 Pro + ADK 1.32 + MongoDB MCP — 完整的合作伙伴技术栈 |
| **设计** | 深色开源情报美学、Leaflet 地图、响应式、零 UI 摩擦 |
| **潜在影响** | 38.3 亿美元监控支出透明工具 — 任何公民都可访问 |
| **创意质量** | 真实数据、真实问题 — 不是玩具演示 |
## 更新日志
### v2.0 — 2026 年 5 月 5 日 — AI 引擎迁移:Claude → Gemini 2.5 Pro
此版本将整个 SENTINEL AI 推理引擎从 Anthropic 的 Claude(claude-opus-4-7)迁移到 **Google Gemini 2.5 Pro**,通过 **Google Cloud Agent Development Kit (ADK) 1.32** 框架。完成迁移是为了符合 **Google Cloud 快速代理黑客松 2026** 的要求,并解锁完整的 ADK + MongoDB MCP 合作伙伴集成技术栈。
**变更内容:**
| 组件 | 之前 (v1.x) | 之后 (v2.0) |
|-----------|--------------|--------------|
| AI 模型 | `claude-opus-4-7` (Anthropic) | `gemini-2.5-pro` (Google) |
| 代理框架 | 直接调用 Anthropic API | Google ADK 1.32 `Runner` |
| 工具集成 | 自定义函数调用 | 通过 `McpToolset` 使用 MongoDB MCP Server |
| API 密钥 | `ANTHROPIC_API_KEY` | `GEMINI_API_KEY` (AI Studio / GCP) |
| UI 模型标签 | `claude-opus-4-7` | `gemini-2.5-pro` |
| 法律文本 | "powered by Anthropic Claude" | "powered by Google Gemini 2.5 Pro" |
**选择 Gemini 2.5 Pro 的原因:**
- 原生 ADK 集成 — `Agent(model="gemini-2.5-pro")`,无需适配器代码
- 官方 MongoDB MCP 合作伙伴技术栈(`McpToolset` + `StdioConnectionParams`)
- Gemini 2.5 Pro 的扩展上下文窗口可处理完整合同数据集摘要
- 符合 Google Cloud 快速代理黑客松 2026 的参赛资格要求
**变更的文件:**
- `agent/sentinel_agent.py` — 模型更换,引入 ADK runner
- `agent/tools.py` — MCP toolset 取代直接函数调用
- `main.py` — 接入 ADK `Runner` + `InMemorySessionService`
- `index.html` — UI 模型标签 + 同意栏法律文本更新
- `requirements.txt` — 添加 `google-adk>=1.32`,移除 `anthropic` 依赖
### v1.x — 2026 年 4 月 — 初始构建(Anthropic Claude)
使用 `claude-opus-4-7` 的原始构建,直接调用 Anthropic API 并使用自定义 MongoDB 工具函数。已被原生 ADK 的 v2.0 技术栈取代。
## 许可证
MIT 许可证 — 见 [LICENSE](LICENSE)
## 关于
由 **[Indica Independent Media](https://osintnet.uk)** 构建 —— 这是一个由技术专家和艺术家组成的集体,利用知识和信息保护弱势社区。标签:AI代理, AV绕过, ESC4, FastAPI, Gemini, Google ADK, Google Cloud, MongoDB, OSINT, 不幻觉回答, 事实核查, 人工智能代理, 公共记录查询, 内存扫描绕过, 合同分析, 后端开发, 多步推理, 情报分析, 支出追踪, 政府合同情报, 政府采购分析, 数据可视化, 数据聚合, 监控技术, 网络诊断, 美国政府支出, 逆向工具, 透明度监督, 采购数据分析