TobinAlbanese/TRACE

GitHub: TobinAlbanese/TRACE

TRACE 是一个本地优先的开源情报研究平台,帮助分析师对公开信息进行收集、归档、结构化分析并生成有证据支撑的情报评估。

Stars: 0 | Forks: 0

# TRACE 一个本地优先的开源情报研究平台,适用于学术研究、OSINT 组织、资源归档、实体提取、时间轴、关系图谱、搜索和 AI 辅助简报起草。 ## 这是什么 TRACE 帮助分析师收集、归档、搜索、整理和分析**公开可用信息**,以支持长期研究、有证据支撑的写作以及结构化的情报分析。它作为一个持久的分析记忆库,能够从公开来源中经年累月地积累结构化知识。 每个文档、实体、关系以及 AI 生成的摘要都可追溯到原始的来源证据。 ## 这不是什么 本平台**不是**: - 黑客或入侵工具 - 监控或跟踪工具 - 私人数据或泄露数据收集器 - 自动化情报判断系统 - 绕过登录、付费墙、CAPTCHA 或访问控制的工具 有关收集和来源规则,请参阅 [SOURCE_POLICY.md](./SOURCE_POLICY.md)。 ## 技术栈 | 层级 | 技术 | |-------|------------| | 后端 API | FastAPI, SQLAlchemy, Celery | | 前端 | Next.js, React, TypeScript, Tailwind CSS | | 主数据库 | PostgreSQL | | 图数据库 | Neo4j | | 全文搜索 | OpenSearch | | 向量搜索 | Qdrant | | 缓存 / 队列 | Redis | | Workers | Python 服务 | | 基础设施 | Docker Compose | ## 仓库结构 ``` trace/ ├── apps/ │ ├── api/ # FastAPI backend │ └── web/ # Next.js frontend ├── services/ # Python worker services ├── packages/ # Shared TypeScript/Python packages ├── database/ # Schemas, migrations, DB configs ├── data/ # Local evidence archive (gitignored) ├── scripts/ # Dev and ops scripts ├── tests/ # Integration and e2e tests └── docs/ # Additional documentation ``` 有关系统设计,请参阅 [ARCHITECTURE.md](./ARCHITECTURE.md);有关完整的项目概述,请参阅 [PROJECT_BRIEF.md](./PROJECT_BRIEF.md)。 ## 第一个里程碑 — 版本 0.1 重点:**手动文档提取、证据归档、元数据存储、文档搜索和分析师笔记。** 没有自动化收集器。没有实体提取 pipeline。暂无图谱或时间轴功能。 有关完整的开发计划,请参阅 [ROADMAP.md](./ROADMAP.md)。 ## 快速开始 ### 前置条件 - Docker Desktop - Python 3.12+ - Node.js 20+ - Git ### 设置 ``` # Clone 并进入 repository cd trace # 复制 environment template cp .env.example .env # 启动 infrastructure services docker compose up -d # Backend python -m venv .venv && source .venv/bin/activate pip install -r apps/api/requirements.txt uvicorn app.main:app --app-dir apps/api --reload # Frontend (实现后) cd apps/web npm install npm run dev ``` 在仓库根目录下,可以使用以下命令运行测试: ``` ./.venv/bin/python -m ruff check apps/api/app tests ./.venv/bin/python -m pytest ``` ## 手动文档上传 API 第二阶段增加了纯后端的手动提取功能,支持 PDF、TXT、Markdown 和 HTML 文件。启动后端,然后在 `http://localhost:8000/docs` 打开 FastAPI 文档,并使用 `POST /documents/upload`。 示例: ``` curl -X POST "http://localhost:8000/documents/upload" \ -F "file=@example.pdf" \ -F "title=Example Public Report" \ -F "source_name=Manual Upload" \ -F "document_type=report" \ -F "region=Eastern Europe" ``` 上传的原始文件存储在 `data/archive/raw/YYYY/MM/DD/` 下,文件名包含文档 ID、SHA-256 前缀以及经过净化处理的原始文件名。该归档目录保持 gitignored 状态。 ## 文档 | 文档 | 用途 | |----------|---------| | [PROJECT_BRIEF.md](./PROJECT_BRIEF.md) | 执行摘要与项目理念 | | [ARCHITECTURE.md](./ARCHITECTURE.md) | 系统架构与文件夹职责 | | [DATA_MODEL.md](./DATA_MODEL.md) | 数据库设计草案 | | [SOURCE_POLICY.md](./SOURCE_POLICY.md) | 数据来源与收集限制 | | [ROADMAP.md](./ROADMAP.md) | 开发阶段与里程碑 | | [AGENTS.md](./AGENTS.md) | AI 编程 Agent 规则 | | [CLAUDE.md](./CLAUDE.md) | Agent 上下文与约定 | ## License 待定 — 仅供学术和研究使用。请确保遵守来源条款与适用法律。
标签:ESC4, OSINT, 全文检索, 实体关系抽取, 幻觉缓解, 开源情报平台, 情报分析, 搜索引擎查询, 测试用例, 版权保护, 知识管理, 网络诊断, 逆向工具