BennJo101/Log_Distillery
GitHub: BennJo101/Log_Distillery
一个纯前端的 AI 日志分析工具,通过递归式分块摘要将海量日志蒸馏成精炼报告,并自动生成运维改进建议。
Stars: 1 | Forks: 0
# 🥃 Log Distillery
Log Distillery 会接收任意大小的原始日志文件,将其分块为带编号的“桶”(barrels),通过 AI agent 处理每个分块以生成摘要,然后递归地蒸馏这些摘要——一轮接一轮——直到只剩下一份精炼的报告。在完成最终的“出酒”后,它会根据在日志中发现的内容,自动生成四类可操作的善后建议。
## 文件
| 文件 | 描述 |
|------|-------------|
| `log_distillery.html` | 单一独立文件——在运行时通过切换按钮在 **Claude Direct** (Anthropic API) 或 **N8N Webhook** 之间进行选择 |
无需构建步骤,无需依赖,无需服务器。在任何现代浏览器中打开即可。
## 工作原理
```
Raw Log
│
▼
Chunk into N-line barrels (default: 30 lines each)
│
▼
Round 1 ── AI summarizes each barrel individually
│ → [Summary 1] [Summary 2] [Summary 3] ... [Summary N]
▼
Round 2 ── Summaries batched (default: 6 per group) and re-distilled
│ → [Summary A] [Summary B] [Summary C]
▼
Round 3+ ── Repeats until one summary remains (up to 10 rounds)
│
▼
Final Pour ── Single distilled report streams to screen
│
▼
Aftercare ── Four AI-generated recommendation panels fire automatically
Log Hygiene · Incident Response · Monitoring · N8N Automation
```
## 快速开始
1. 在浏览器中打开 `log_distillery.html`
2. 使用 **Claude Direct / N8N Webhook** 切换按钮选择你的蒸馏器:
- **Claude Direct** —— 输入你的 Anthropic API key 并选择一个模型
- **N8N Webhook** —— 输入你的 N8N webhook URL 以及可选的 auth header
3. 点击 **Save Config** 以在本地加密并存储你的凭据——它们会在随后的每次打开时自动加载
4. 将日志文件拖放到拖放区,浏览选择一个,或直接粘贴
5. 根据需要调整 **Mash Bill**(每个分块的行数)和 **Barrel Batch Size**
6. *(可选)* 在 **"What should the still be looking for?"** 字段中输入关注点,以引导 AI 关注特定的事件、错误或模式
7. 点击 **Fire the Still**
## Focus 字段
在启动之前,你可以在 **"What should the still be looking for?"** 字段中输入一段自然语言的指令:
提供该内容后,它将作为一条明确的指令直接注入到每个 AI prompt 中——包括每个桶的摘要和每一轮的整合过程。按钮上方的 **Distillation Plan** 摘要将反映你的关注点,并在你启动前预览桶的分解情况。
留空则表示蒸馏过程不设特定焦点,AI 会自行呈现其判断为最重要的内容。
## 配置
| 字段 | 默认值 | 描述 |
|-------|---------|-------------|
| Mash Bill (行数/分块) | 30 | 每个桶的行数。值越大 = API 调用越少,粒度越低 |
| Barrel Batch Size | 6 | 每轮蒸馏过程中分组的摘要数量 |
**根据日志大小推荐的 Mash Bill:**
| 日志大小 | Mash Bill |
|----------|-----------|
| < 200 行 | 15–25 |
| 200–1,000 行 | 30 (默认) |
| 1,000–5,000 行 | 75–100 |
| > 5,000 行 | 150–200 |
## 保存配置
Log Distillery 使用 AES-256-GCM 加密,通过浏览器内置的 Web Crypto API 在不同会话之间记住你的凭据。没有任何内容以明文形式存储。
### 工作原理
输入你的凭据,然后点击 **Save Config**。这些值将使用从你的浏览器配置文件(user agent、屏幕尺寸、时区)派生的密钥进行加密,并存储在 `localStorage` 中。在随后的每次打开时,保存的配置都会被静默解密,并且配置栏会被隐藏——该工具可立即投入使用。
随时点击 **Forget** 以清除已保存的配置并恢复显示配置栏。
### 安全提示
- 凭据在存储前已加密——在浏览器 DevTools 或 localStorage 检查器中无法以明文读取
- 加密密钥与你的特定浏览器配置文件绑定;存储的数据在任何其他机器或浏览器上都是无意义的
- 凭据永远不会传输到除 API endpoint (Anthropic 或你的 N8N 实例) 之外的任何地方
- 对于公共或无人值守的机器,使用完毕后请点击 **Forget**
## Claude Direct 模式
直接从你的浏览器调用 Anthropic API。无需代理或服务器。
**支持的模型:**
| 模型 | 速度 | 质量 | 最适用场景 |
|-------|-------|---------|----------|
| `claude-sonnet-4` | 快 | 高 | 通用场景——推荐 |
| `claude-haiku-4-5` | 最快 | 良好 | 大型日志,对成本敏感 |
| `claude-opus-4-6` | 慢 | 最高 | 需要深度分析的复杂日志 |
你的 API key 通过 **Save Config** 进行加密并存储在本地——除了 `api.anthropic.com` 之外,它永远不会传输到任何其他地方。
## N8N Webhook 模式
每个分块和每次蒸馏调用都会单独 POST 到你的 N8N webhook。N8N 负责处理 AI 调用——Bedrock、Azure OpenAI、Ollama 或任何 LLM 节点——并返回摘要。这使得所有日志内容都保留在你自己的基础设施内。
### 发送到 N8N 的 Payload(每次调用)
```
{
"system_prompt": "You are a log analysis AI...",
"user_message": "Summarize the following log section (lines 1–30):\n\n 1: 2024-01-15 08:00:01 INFO ...",
"chunk_id": 1,
"round": 1,
"lines": "1-30"
}
```
善后调用使用 `"round": "aftercare"`,并将 `"chunk_id"` 设置为以下之一:
`"hygiene"` · `"incident"` · `"monitoring"` · `"automation"`
如有需要,这允许你在 N8N 中将善后调用路由到不同的模型或工作流。
### 预期的 N8N 响应
返回以下任意一种——Distillery 会自动识别它:
```
{ "summary": "..." }
{ "text": "..." }
{ "output": "..." }
{ "message": "..." }
```
或者返回纯字符串格式的响应正文。
### 可选 Auth Header
如果你的 N8N webhook 需要身份验证,请在 **Auth Header** 字段中输入完整的 header 值。它将作为每次请求的 `Authorization` header 发送。
```
Bearer your-token-here
```
## 设置 N8N
### 选项 A —— N8N Cloud(最简单)
1. 在 [app.n8n.cloud](https://app.n8n.cloud) 注册
2. 创建一个免费账户(包含试用)
3. 跳至下方的 **构建工作流** —— 你的实例已立即可用
### 选项 B —— 使用 Docker 自托管(生产环境 / CMMC 推荐)
自托管可将所有日志数据保留在你自己的网络边界内。推荐用于 GovCloud、CMMC、FedRAMP,或任何数据不能离开你控制范围的环境。
**前置条件:**
- 一台 Linux 服务器或 VM(推荐使用 Ubuntu 22.04+),至少配备 2 GB RAM
- 已安装 Docker v20.10+(通过 `docker -v` 验证)
- 防火墙已开放 5678 端口
**步骤 1 —— 创建 N8N 目录并设置权限**
```
mkdir ~/n8n && cd ~/n8n
mkdir n8n_data
sudo chown -R 1000:1000 n8n_data
```
**步骤 2 —— 创建 `docker-compose.yml`**
```
services:
n8n:
image: n8nio/n8n
restart: unless-stopped
ports:
- "5678:5678"
environment:
- N8N_BASIC_AUTH_ACTIVE=true
- N8N_BASIC_AUTH_USER=admin
- N8N_BASIC_AUTH_PASSWORD=changeme
- N8N_HOST=your-server-ip-or-domain
- WEBHOOK_URL=http://your-server-ip-or-domain:5678/
- GENERIC_TIMEZONE=America/Detroit
volumes:
- ./n8n_data:/home/node/.n8n
```
将 `your-server-ip-or-domain`、`admin` 和 `changeme` 替换为你的实际值。
**步骤 3 —— 启动 N8N**
```
docker compose up -d
```
N8N 将在 `http://your-server:5678` 上可用。首次打开时,系统会提示你创建一个所有者账户。
**步骤 4 —— (可选) 保持 N8N 更新**
```
docker compose pull && docker compose up -d
```
### 在 N8N 中构建 Log Distillery 工作流
一旦你的 N8N 实例运行起来:
**步骤 1 —— 创建新的工作流**
在 N8N 编辑器中点击 **+ New Workflow**。
**步骤 2 —— 添加 Webhook 触发节点**
- 点击 **+** 添加节点,搜索 **Webhook**
- 将 **HTTP Method** 设置为 `POST`
- 将 **Path** 设置为具有描述性的内容,例如 `log-distillery`
- 将 **Respond** 设置为 `Using 'Respond to Webhook' Node`
- 复制显示的 **Test URL** —— 你将把它粘贴到 Log Distillery 的 Webhook URL 字段中
**步骤 3 —— 添加 AI Agent 节点**
在 Webhook 触发器之后连接一个 AI 节点。选项:
- **Anthropic 节点** —— 将 system prompt 设置为 `{{ $json.system_prompt }}`,将 user message 设置为 `{{ $json.user_message }}`
- **AWS Bedrock 节点** —— 同样的表达式,通过你的 GovCloud Bedrock endpoint 路由
- **OpenAI / Azure OpenAI 节点** —— 同样的表达式,使用你 300K TPM 的 GPT-4.1 部署
- **HTTP Request 节点** —— 手动调用任何 LLM API endpoint
**步骤 4 —— 添加 Respond to Webhook 节点**
将其连接在 AI 节点之后。设置:
- **Respond With** → `JSON`
- **Response Body** → `{ "summary": "{{ $json.text }}" }` (调整字段名以匹配你的 AI 节点输出字段)
**步骤 5 —— 测试**
- 在 Webhook 节点上点击 **Listen for Test Event**
- 在 Log Distillery 中,粘贴 Test URL 并触发一个小型日志
- 观察 N8N 中的执行亮起 —— 确认已收到响应
**步骤 6 —— 激活用于生产环境**
- 将工作流切换为 **Active** 状态(右上角)
- 在 Log Distillery 中,从 Test URL 切换到 **Production URL**
- 生产 URL 格式:`http://your-server:5678/webhook/log-distillery`
## 善后建议
在生成最终的蒸馏摘要后,四个建议面板会使用相同的 AI 后端自动生成:
| 面板 | 涵盖内容 |
|-------|--------|
| **📦 日志卫生** | 归档策略、轮转策略、保留期限、压缩 |
| **🚨 事件响应** | 分类排查步骤、错误修复、通知目标、事后复盘 |
| **📊 监控** | 告警阈值、仪表盘建议、异常检测规则、健康检查频率 |
| **⚙️ N8N 自动化** | 工作流触发器、自动工单生成、Slack/邮件告警、升级逻辑 |
这四项均由实际的蒸馏摘要驱动——专门针对在你的日志中发现的事件、错误和模式定制,而非通用的模板内容。每张卡片在生成过程中会闪烁铜色光芒,完成后变为金色。
在 N8N 模式下,善后调用会以 `"round": "aftercare"` 到达你的 webhook,以便你根据需要将它们分流到不同的模型或工作流,从而实现针对每个类别的专门处理。
## UI 概览
| 元素 | 功能 |
|---------|----------|
| 蒸馏器选择器 | 在 Claude Direct 和 N8N Webhook 之间切换 |
| Save Config / Forget | 将凭据加密并持久化到 localStorage,或将其清除 |
| 拖放区 | 拖放文件、浏览选择,或直接粘贴日志文本 |
| 状态栏 | 实时估算行数、桶数和蒸馏轮次 |
| Focus 字段 | 注入到每个 AI prompt 中的自然语言指令 |
| Distillation Plan | 实时预览检测到的日志类型、桶分解情况以及你的关注点 |
| 轮次卡片 | 每一轮蒸馏都会渲染出可折叠的桶状图块 |
| 桶图块 | 点击任意图块可在详情抽屉中打开完整的摘要文本 |
| 进度条 | 铜色填充用于跟踪流水线的完成进度 |
| Final Pour | 蒸馏摘要逐字流式显示在屏幕上 |
| 善后网格 | 四张卡片独立生成,并带有闪烁的铜色状态点 |
## 合规性说明
| 模式 | 数据路由 | 适用于 |
|------|-------------|--------------|
| Claude Direct | 日志内容从浏览器发往 → `api.anthropic.com` | 常规使用,非敏感日志 |
| N8N Webhook | 日志内容仅发往 → 你的 N8N 实例 | CMMC, FedRAMP, NIST, GCC High, GovCloud |
对于 CMMC/FedRAMP 环境:在你的 AWS GovCloud 或 Azure Government 边界内运行 N8N,将其指向 Bedrock Claude 或 Azure OpenAI GPT-4.1,日志内容就绝不会跨越你的网络边界。
## 浏览器兼容性
Chrome 90+, Edge 90+, Firefox 88+, Safari 15+。需要支持 `fetch`、`async/await` 和 `navigator.clipboard`。
*Log Distillery —— 由人工智能打造 · 小批量精酿*
标签:AI摘要, HTML单页应用, N8N自动化, 后端开发, 多模态安全, 数据可视化, 自动化运维