nlink-jp/ir-timeline
GitHub: nlink-jp/ir-timeline
一个基于Go语言、单二进制的事件响应时间线记录工具,通过浏览器UI和SQLite实现轻量、便携的时间线管理。
Stars: 1 | Forks: 0
# ir-timeline
事件响应时间线记录器 —— 一个单二进制、基于浏览器的工具,用于通过文本、图像、标签和时间差追踪 IR 事件。
[日文版 README](README.ja.md)
## 概念
用现代的、本地优先的工具取代基于 Excel 的 IR 时间线管理:
- **单二进制文件** —— 无运行时依赖,无需 Python、Node.js
- **单一数据库文件** —— 每个事件一个 SQLite 文件,图像存储为 BLOB
- **浏览器 UI** —— 现代时间线视图,支持深色/浅色主题
- **可移植** —— 复制数据库文件即可分享或归档事件
## 快速开始
```
# 构建
make build
# 运行(如果不存在则创建 timeline.db,打开浏览器)
./dist/ir-timeline
# 使用特定的 DB 文件
./dist/ir-timeline --db incident-2026-04-01.db
# 自定义端口,不自动打开
./dist/ir-timeline --port 9090 --no-browser
```
## 功能特性
### 列表视图(垂直时间线)
事件按时间顺序显示,卡片包含描述、执行者、标签、图像以及事件间的时间差。
### 图表视图(水平泳道)
时间位于 X 轴,标签作为泳道位于 Y 轴。拥有多个标签的事件会出现在所有相关泳道中。悬停可查看详情,点击可编辑。
### 通用功能
| 功能 | 详情 |
|---------|--------|
| **多标签** | 每个事件可拥有多个标签以实现灵活分组 |
| **标签颜色** | 自动分配颜色(常见 IR 阶段固定颜色,自定义标签基于哈希生成) |
| **图片附件** | 拖放或文件选择器,存储为 SQLite 中的 BLOB |
| **图片预览** | 卡片中显示缩略图,点击可查看灯箱 |
| **时间差** | 连续事件间的经过时间 |
| **深色/浅色** | 主题切换,偏好保存于 localStorage |
| **案例 ID** | 在页眉显示徽章,可编辑 |
| **标签筛选** | 按特定标签筛选时间线 |
| **Markdown 导出** | 将时间线下载为 `.md` 文件 |
## 命令行标志
```
ir-timeline [flags]
--db SQLite database path (default: timeline.db)
--port HTTP server port (default: 8888)
--no-browser Don't auto-open browser
--version Show version
```
## 预定义标签颜色
| 标签 | 颜色 |
|-----|-------|
| `detection` | 蓝色 |
| `analysis` | 紫色 |
| `containment` | 橙色 |
| `eradication` | 红色 |
| `recovery` | 绿色 |
| `communication` | 青色 |
| `lesson` | 靛蓝色 |
任何其他标签名称将根据其哈希自动生成颜色。
## 安全性
- 仅绑定到 `127.0.0.1` —— 无远程访问
- 所有 SQL 查询均使用参数化语句
- 基于 DOM 的渲染(`textContent` / `createElement`),不使用 `innerHTML`
- 图片上传限制为 10 MB,仅允许 `image/*` MIME 类型
## 架构
```
ir-timeline (Go binary)
├── main.go — entry point, flags, HTTP server
├── storage.go — SQLite schema, CRUD operations
├── handler.go — REST API handlers
└── web/
└── index.html — SPA (HTML + CSS + JS, embedded via embed.FS)
```
完整设计文档请参阅 [docs/design.md](docs/design.md)。
## 构建
```
make build # → dist/ir-timeline
make test # → go test ./...
make build-all # → 5 platform binaries
make clean # → remove dist/
```
## 属于 cybersecurity-series 系列
ir-timeline 是 [cybersecurity-series](https://github.com/nlink-jp/cybersecurity-series) 的一部分 ——
专为威胁情报、事件响应和安全运营设计的 AI 增强工具。
标签:CSV输出, LangChain, Markdown导出, Mutation, SQLite, 事件追踪, 二进制发布, 亮色主题, 便携, 分析工具, 单二进制, 卡片视图, 可视化, 后端开发, 图片附件, 安全事件管理, 库, 应急响应, 开源工具, 数据可视化, 无依赖, 日志审计, 时间差, 时间线, 时间线记录器, 暗黑主题, 本地工具, 标签管理, 泳道图, 浏览器UI, 调试辅助, 轻量级, 过滤器