开源链接分析与OSINT框架
注意: 该项目正在积极开发中。它拥有稳定的核心能力和测试覆盖,我们持续在每个版本中改进文档、加固和特性深度。欢迎贡献、报告错误和提供反馈。
docker compose up| 图谱调查 | 实体丰富 |
|---|---|
![]() | ![]() |
| 转换中心 | 导出导入 |
|---|---|
![]() | ![]() |
| 工具 | 版本 |
|---|---|
| Python | 3.14+ |
| uv | latest |
| Node.js | 20+ |
| pnpm | latest |
cd backend uv sync uv run uvicorn ogi.main:app --reload
API 将在 `http://localhost:8000` 可用。
对于本地转换执行,Redis 和转换工作进程也必须运行。仅 Redis 是不够的。
启动 Redis:```bash
docker run -d --name ogi-redis -p 6379:6379 redis:7-alpine
在第二个终端中启动转换工作器:```bash cd backend uv run python -m ogi.worker.run_worker
如果你看到 `Job queue not available` 或 `Redis not available`,请确认:
- `OGI_REDIS_URL` 指向 `redis://localhost:6379/0`(对于本地基于主机的运行)
- 在 Redis 启动后,后端已重新启动
- 独立的 worker 进程正在运行
- 你没有在 Docker Compose 之外使用仅限 Docker 的主机名 `redis`
如果你将后端与 PostgreSQL 一起运行(`OGI_USE_SQLITE=false`),启动时会自动应用 Alembic 迁移,然后再处理请求。Docker 部署在后端容器入口点中也执行相同操作。
AI Investigator 的运行由另一个独立的 worker 处理:```bash
cd backend
uv run python -m ogi.agent.run_worker
cd frontend pnpm install pnpm dev
打开 http://localhost:5173。就这样。
### AI 调查员
AI 调查员是一个可选的后台支持的工作流,可以规划转换序列、请求审批,并在工作区内汇总调查进度。
- 在项目内打开 `AI Investigator` 标签页
- 在调查员设置对话框中配置提供者和模型
- 将提供者 API 密钥存储到 `API Keys`
- 与后端一起运行独立的 `agent-worker` 进程
当前实现支持每个用户的提供者配置,以及一个专用的工作进程,独立于主 API 服务器执行调查步骤。
### CLI
运行 CLI 的两种支持方式:
**推荐**(无需激活):```bash
cd backend
uv sync
uv run ogi --help
已激活的虚拟环境(普通 ogi 命令):```bash
cd backend
uv venv
..venv\Scripts\Activate.ps1 uv pip install -e . ogi --help
## Docker
### 开发```bash
cp .env.example .env
docker compose up
使用预构建的GHCR镜像。
重要:docker-compose.prod.yml 需要外部的PostgreSQL数据库。它不包含 db 服务。
如果您想要包含内置Postgres和Redis的一体化本地Docker栈,请使用:```bash docker compose up -d
仅当你已经有一个可访问的PostgreSQL实例并已相应设置`OGI_DATABASE_URL`时,才使用生产compose文件:```bash
docker compose -f docker-compose.prod.yml pull
docker compose -f docker-compose.prod.yml up -d
在 .env 中设置 OGI_IMAGE_TAG 以固定特定的发布镜像标签(例如 v0.2.6)。默认为 latest。
新 Hetzner 用户可以使用第一个链接注册并获得 Hetzner Cloud 积分。这是一个推荐链接,因此如果推荐符合条件,OGI 维护者也可能获得 Hetzner Cloud 积分。创建服务器后,使用上面的 Docker 部署命令来运行 OGI。
OGI 内置了合理的每次转换最大值,例如 max_results、max_links、max_urls 和 max_content_chars,但这些上限现在可以集中覆盖,因此云部署可以在不硬编码本地限制的情况下强制执行它们。
在 .env 中使用 OGI_TRANSFORM_SETTING_MAX_OVERRIDES:```env
OGI_TRANSFORM_SETTING_MAX_OVERRIDES=max_results=50,max_urls=25,max_links=40,max_content_chars=20000
在本地优先部署中移除特定限制:```env
OGI_TRANSFORM_SETTING_MAX_OVERRIDES=max_results=none,max_urls=none,max_links=none,max_content_chars=none
覆盖项由转换设置名称键控,适用于内置转换和使用 OGI 共享转换基础/运行时的社区插件。
托管云版本位于 ogi.khas.app,最初设计为让用户快速试用 OGI,再决定是否自行部署。如今它已成为该项目最受欢迎的使用方式,拥有超过 350 名活跃云用户。
使用量的增加也提高了这个副项目的基础设施成本。因此,仓库包含了一个云专属的支持者订阅(Supporter)和转换运行冷却系统。在公共云实例上,免费用户可能在转换运行之间受到超时限制,而支持者用户可以以象征性的每月 3 美元订阅,以帮助支付 Supabase 和 VPS 费用。
支持者订阅可以在个人资料计费控制或 Stripe 计费门户中取消。取消将停止未来计费,但已付费的订阅期不予退款或按比例折算。
此计费代码通过配置有意进行防护:仅当 OGI_DEPLOYMENT_MODE=cloud 且 OGI_CLOUD_BILLING_ENABLED=true 时才生效。自托管部署应保持计费禁用,并且不应看到任何计费或付费墙行为。
OGI 包含安装级别的产品遥测,旨在帮助我们了解实际使用情况,特别是在自托管部署中。
OGI_TELEMETRY_ENABLED=true 启用遥测收集OGI_TELEMETRY_LEVEL=full 是默认收集级别OGI_TELEMETRY_ENABLED=false 完全禁用遥测OGI_TELEMETRY_LEVEL=basic 减少发送内容basic 发送:
full 额外发送:
遥测设计为避免发送图内容、实体值、API 密钥、提示或其他调查数据。当前政策详情也已发布在隐私政策中。
| 服务 | 描述 | 端口 |
|---|---|---|
backend | FastAPI 应用服务器 | 8000 |
worker | RQ 异步任务工人 | - |
agent-worker | AI 调查员工人 | - |
frontend | 通过 nginx 提供的 React 应用 | 80 |
db | PostgreSQL 16 | 5432 |
redis | Redis 7(任务队列) | 6379 |
| 服务 | 描述 | 端口 |
|---|---|---|
backend | FastAPI 应用服务器 | 8000 |
worker | RQ 异步任务工人 | - |
agent-worker | AI 调查员工人 | - |
frontend | 通过 nginx 提供的 React 应用 | 80 |
redis | Redis 7(任务队列) | 6379 |
docker-compose.prod.yml 期望通过 OGI_DATABASE_URL 提供外部 PostgreSQL 数据库。
如果您使用预构建镜像且插件需要额外的 Python 库,OGI 会在容器启动时从以下位置安装插件依赖:
plugins/requirements.txt(首选),或plugins/requirements.txt 缺失时,从 plugins/ogi-lock.json 自动生成依赖。环境变量: