# antrust **Repository Path**: borisliu/antrust ## Basic Information - **Project Name**: antrust - **Description**: 安小智,一个数字员工,工作在反诈与网信安全中心。 - **Primary Language**: Python - **License**: MulanPSL-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-12-25 - **Last Updated**: 2026-01-08 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 🧠 AnTrust(安小智) ## 本地办公数字员工 & 轻量安全告警辅助方案 **Windows 11 / n8n / Docker / MiniMax M2.1** > **Repo Name**:`antrust` > **数字员工名称**:安小智(AnTrust) > **Gitee 仓库地址**:https://gitee.com/borisliu/antrust --- ## 📋 项目概述 **AnTrust(安小智)** 是一个运行在本地电脑上的 **数字员工 / 自动化 Agent**,目前已完成 **邮箱附件自动处理与播报** 场景。 ### ✅ 已实现功能 **邮箱附件自动处理与播报** - 自动监听企业邮箱(IMAP) - 自动判断是否有附件 - 自动解码附件文件名(支持 RFC2047 编码) - 筛选包含"广电报送"的 Excel 附件 - 读取 Excel 数据并分析 - 使用 AI 生成汇总报告 - 自动发送钉钉消息播报 --- ## 🚀 快速开始 ### 1. 环境要求 - Docker 和 Docker Compose - Windows 11(或 Linux/macOS) ### 2. 启动服务 ```bash # 启动 n8n 和 runners 服务 docker-compose up -d # 访问 n8n # http://localhost:5678 ``` ### 3. 导入工作流 1. 打开 n8n:http://localhost:5678 2. 点击 **Workflows** → **Import from File** 3. 选择 `docs/监测bjfz邮箱广电报送信息.json` 4. 配置必要的凭据(IMAP、SMTP、钉钉机器人、MiniMax API) ### 4. 配置凭据 需要在 n8n 中配置以下凭据: - **IMAP**:企业邮箱接收配置 - **SMTP**:企业邮箱发送配置 - **钉钉机器人**:用于发送消息播报 - **MiniMax API**:用于 AI 分析 --- ## 📁 项目文件说明 ### 核心配置文件 - **`docker-compose.yml`** - Docker Compose 配置(n8n + runners,支持 Python Code 节点) ### Python 示例代码 **`sample-code/`** 目录包含可直接在 n8n Python Code 节点中使用的示例代码: - **`sample-code/check_attachments.py`** - 判断邮件是否有附件 - 用于 IMAP 节点之后 - 输出:`hasAttachments`、`attachmentCount` 等字段 - **`sample-code/process_attachments.py`** - 处理附件文件名(解码 RFC2047 编码) - 用于附件处理流程中 - 自动解码中文文件名 - 拆分附件,每个附件生成一条记录 详细使用说明请参考:`sample-code/README.md` ### 工作流文件 - **`docs/监测bjfz邮箱广电报送信息.json`** - 完整的工作流配置 - 包含邮件监听、附件处理、Excel 读取、AI 分析、消息播报等完整流程 ### 技术文档 - **`docs/n8n-2.0-Python-Code节点正确用法.md`** - Python Code 节点使用指南 - **`docs/README-n8n-Python配置总结.md`** - n8n Python 环境配置详细说明 --- ## 🔄 工作流程说明 ### 当前实现的工作流:邮箱附件自动处理 ```text IMAP 监听邮箱 ↓ 判断是否有附件(Python Code) ↓ 处理附件文件名(Python Code:解码 RFC2047) ↓ 拆分附件(Split Out) ↓ 筛选"广电报送"文件(IF 节点) ↓ 读取 Excel 内容(Extract From File) ↓ 聚合数据(Aggregate) ↓ AI 分析生成报告(MiniMax) ↓ 发送钉钉消息播报 ``` ### 关键节点说明 1. **追加附件信息**:使用 `sample-code/check_attachments.py` 判断是否有附件 2. **处理附件文件名**:使用 `sample-code/process_attachments.py` 解码文件名 3. **判断文件名是否包含"广电报送"**:筛选目标 Excel 文件 4. **读取Excel文件内容**:使用 n8n 内置节点提取 Excel 数据 5. **AI分析输出结果**:使用 MiniMax M2.1 分析数据并生成报告 --- ## 💻 使用 Python Code 节点 ### 重要提示:n8n 2.0+ 使用 `_items` 变量 在 n8n 2.0+ 版本中,Python Code 节点使用 `_items`(而不是 `items`): ```python # 正确的代码(n8n 2.0+) result = [] for item in _items: data = item.get('json', {}) result.append({ 'json': { 'message': 'Hello from Python!', 'data': data } }) return result ``` **两种模式**: - **Run Once for All Items**:使用 `_items`(处理所有输入项) - **Run Once for Each Item**:使用 `_item`(处理单个输入项) 详细说明请参考:`docs/n8n-2.0-Python-Code节点正确用法.md` --- ## 🐳 Docker 部署说明 ### 配置说明 项目使用 **External Runners** 模式,通过独立的 runners 服务执行 Python 代码: - **n8n 服务**:使用 `ghcr.io/deluxebear/n8n:chs` 镜像(中文版) - **runners 服务**:使用 `n8nio/runners:latest` 镜像(包含 Python 环境) - **网络模式**:使用 `host` 模式(Windows 推荐) ### 验证配置 ```bash # 检查服务状态 docker-compose ps # 查看日志 docker-compose logs n8n docker-compose logs runners ``` 应该看到 runners 服务成功注册: - `Registered runner "launcher-python"` - `Registered runner "launcher-javascript"` 详细配置说明请参考:`docs/README-n8n-Python配置总结.md` --- ## 🔐 安全与护栏 ### 已实现的安全措施 - **脱敏处理**:消息播报不包含敏感信息明文 - **白名单机制**:邮件转发收件人固定配置 - **错误处理**:各节点包含异常处理逻辑 ### 建议的安全措施(待实现) - **幂等性**:邮件 message-id + 附件 hash 防止重复处理 - **审计日志**:记录所有操作,可追溯、可回放 - **VPN 检查**:查询外部系统前检查 VPN 连接状态 --- ## 📚 技术参考 ### n8n 相关文档 - [n8n 官方文档](https://docs.n8n.io/) - [Task Runners 配置文档](https://docs.n8n.io/hosting/configuration/task-runners/) - [Python Code 节点文档](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.code/) ### 项目文档 - `docs/n8n-2.0-Python-Code节点正确用法.md` - Python Code 节点使用指南 - `docs/README-n8n-Python配置总结.md` - n8n Python 环境配置详细说明 - `docs/n8n-Runners-最佳实践链接汇总.md` - 官方文档和社区链接汇总 --- ## 🔮 未来规划 ### 办公自动化场景(待实现) - [ ] Excel 数据汇总统计(按手机号、渠道等) - [ ] 微信群自动发送汇总报告 - [ ] 反诈系统查询与邮件发送 ### 安全告警场景(规划中) - [ ] 阿里云 EDR 告警自动拉取 - [ ] 奇安信 NGSOC 告警采集 - [ ] 告警去重、分级、汇总 - [ ] 每日安全日报自动生成 --- ## 📝 常见问题 ### Q: Python Code 节点报错 `name 'items' is not defined` A: 在 n8n 2.0+ 中,需要使用 `_items` 而不是 `items`。请参考 `docs/n8n-2.0-Python-Code节点正确用法.md` ### Q: runners 服务无法连接 n8n A: 检查 `N8N_RUNNERS_AUTH_TOKEN` 是否一致,检查网络连接(host 模式下使用 `127.0.0.1:5679`) ### Q: 附件文件名显示乱码 A: 使用 `sample-code/process_attachments.py` 代码自动解码 RFC2047 编码的文件名 --- ## 📄 许可证 见 `LICENSE` 文件 --- > **AnTrust(安小智)** > Local Digital Employee & Lightweight Security Alert Assistant > 最后更新:2026-01-XX