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, 全文检索, 实体关系抽取, 幻觉缓解, 开源情报平台, 情报分析, 搜索引擎查询, 测试用例, 版权保护, 知识管理, 网络诊断, 逆向工具