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自动化, 后端开发, 多模态安全, 数据可视化, 自动化运维