Claude Text Editor 工具使用指南一、概述1. 简介A. 是什么Claude Text Editor 是 Anthropic 定义的一个工具，允许 Claude 直接查看和修改文本文件。这使得 Claude 能够直接与文件系统交互，提供动手协助而不仅仅是建议更改。B. 为什么学让 Claude 能够直接调试、修复和改进代码自动化文档生成和测试创建集成到开发工作流中，提升开发效率C. 学完能做什么使用 Claude 修复代码中的语法错误和逻辑问题让 Claude 帮助重构代码结构和添加文档集成文本编辑器工具到自己的应用中2. 前置知识A. 必备技能了解 RESTful API 基本概念熟悉至少一种编程语言（Python、JavaScript 等）基本的文件系统操作知识B. 推荐知识了解 Claude Messages API 的使用方式熟悉工具调用（Tool Use）的概念二、模型兼容性1. 工具版本模型工具版本Claude 4.xtext_editor_20250728Claude Sonnet 3.7（已弃用）text_editor_20250124重要说明：Claude 4.x 使用的 text_editor_20250728 版本不包含 undo_edit 命令如需撤销功能，需要使用 Claude Sonnet 3.7（已弃用）旧版工具不保证与较新模型向后兼容三、工具使用场景1. 代码调试Claude 可以识别并修复代码中的错误，从语法错误到逻辑问题。2. 代码重构让 Claude 通过有针对性的编辑来改进代码结构、可读性和性能。3. 文档生成请求 Claude 为代码库添加文档字符串、注释或 README 文件。4. 测试创建让 Claude 根据其对实现的理解为代码创建单元测试。四、工具命令1. view 命令view 命令允许 Claude 查看文件内容或列出目录内容。可以读取整个文件或特定行范围。参数：command：必须是 "view"path：要查看的文件或目录的路径view_range（可选）：包含两个整数的数组，指定要查看的起始和结束行号。行号从 1 开始索引，结束行为 -1 表示读取到文件末尾。此参数仅适用于查看文件，不适用于目录。示例：{ "command": "view", "path": "primes.py" }{ "command": "view", "path": "primes.py", "view_range": [1, 20] }2. str_replace 命令str_replace 命令允许 Claude 用新字符串替换文件中的特定字符串。用于进行精确编辑。参数：command：必须是 "str_replace"path：要修改的文件的路径old_str：要替换的文本（必须完全匹配，包括空格和缩进）new_str：要在旧文本位置插入的新文本示例：{ "command": "str_replace", "path": "primes.py", "old_str": " for num in range(2, limit + 1)", "new_str": " for num in range(2, limit + 1):" }3. create 命令create 命令允许 Claude 创建包含指定内容的新文件。参数：command：必须是 "create"path：应该创建新文件的路径file_text：要写入新文件的内容4. insert 命令insert 命令允许 Claude 在文件中的特定位置插入文本。参数：command：必须是 "insert"path：要修改的文件的路径insert_line：在其后插入文本的行号（0 表示文件开头）new_str：要插入的文本5. undo_edit 命令undo_edit 命令允许 Claude 撤销对文件的上一次编辑。重要说明：此命令仅在 Claude Sonnet 3.7（已弃用）中可用。Claude 4 模型使用的 text_editor_20250728 不支持此命令。参数：command：必须是 "undo_edit"path：应该撤销上一次编辑的文件的路径五、使用流程Text Editor 工具的使用遵循以下流程：sequenceDiagram participant U as 用户应用 participant C as Claude API participant F as 文件系统 U->>C: 1. 提供工具和用户提示 C->>U: 2. 返回 view 命令 U->>F: 3. 读取文件内容 F-->>U: 返回文件内容 U->>C: 4. 返回 tool_result C->>U: 5. 返回 str_replace 命令 U->>F: 6. 执行文本替换 F-->>U: 替换成功 U->>C: 7. 返回执行结果 C-->>U: 8. 提供完整解释1. 提供工具和提示将 Text Editor 工具提供给 Claude 并附带用户提示：curl https://api.anthropic.com/v1/messages \ -H "content-type: application/json" \ -H "x-api-key: $ANTHROPIC_API_KEY" \ -H "anthropic-version: 2023-06-01" \ -d '{ "model": "claude-sonnet-4-5", "max_tokens": 1024, "tools": [ { "type": "text_editor_20250728", "name": "str_replace_based_edit_tool" } ], "messages": [ { "role": "user", "content": "There'\''s a syntax error in my primes.py file. Can you help me fix it?" } ] }'2. Claude 使用工具查看文件Claude 会首先使用 view 命令查看文件内容：{ "type": "tool_use", "id": "toolu_01AbCdEfGhIjKlMnOpQrStU", "name": "str_replace_based_edit_tool", "input": { "command": "view", "path": "primes.py" } }3. 执行 view 命令并返回结果应用读取文件内容并返回给 Claude。返回的内容应包含行号前缀（如 "1: def is_prime(n):"），这对于使用 view_range 和 insert_line 参数至关重要。4. Claude 使用 str_replace 命令修复错误Claude 识别错误后使用 str_replace 命令进行修复：{ "type": "tool_use", "id": "toolu_01PqRsTuVwXyZAbCdEfGh", "name": "str_replace_based_edit_tool", "input": { "command": "str_replace", "path": "primes.py", "old_str": " for num in range(2, limit + 1)", "new_str": " for num in range(2, limit + 1):" } }5. 执行编辑并返回结果应用执行文本替换并返回成功结果给 Claude。6. Claude 提供完整解释最后 Claude 会提供其发现和更改的完整说明。六、实现指南1. 工具类型Text Editor 工具是无架构工具。使用时无需提供输入架构，架构内置在 Claude 模型中，无法修改。工具类型取决于模型版本：Claude 4：type: "text_editor_20250728"Claude Sonnet 3.7：type: "text_editor_20250124"2. 实现步骤A. 初始化编辑器实现创建辅助函数来处理文件操作，如读取、写入和修改文件。考虑实现备份功能以从错误中恢复。B. 处理编辑器工具调用创建函数根据命令类型处理来自 Claude 的工具调用：def handle_editor_tool(tool_call, model_version): input_params = tool_call.input command = input_params.get('command', '') file_path = input_params.get('path', '') if command == 'view': # 读取并返回文件内容 pass elif command == 'str_replace': # 替换文件中的文本 pass elif command == 'create': # 创建新文件 pass elif command == 'insert': # 在指定位置插入文本 pass elif command == 'undo_edit': # 检查是否为 Claude 4 模型 if 'str_replace_based_edit_tool' in model_version: return {"error": "undo_edit command is not supported in Claude 4"} # 为 Claude 3.7 从备份恢复 passC. 实现安全措施添加验证和安全检查：验证文件路径以防止目录遍历攻击在进行更改之前创建备份优雅地处理错误实现权限检查D. 处理 Claude 的响应从 Claude 的响应中提取并处理工具调用：# 处理 Claude 响应中的工具使用 for content in response.content: if content.type == "tool_use": # 根据命令执行工具 result = handle_editor_tool(content) # 返回结果给 Claude tool_result = { "type": "tool_result", "tool_use_id": content.id, "content": result }3. 实现注意事项安全：工具可以访问本地文件系统，需实施适当的安全措施备份：在允许编辑重要文件之前始终创建备份验证：验证所有输入以防止意外更改唯一匹配：确保替换仅匹配一个位置以避免意外编辑七、错误处理1. 文件未找到当请求的文件不存在时，应在 tool_result 中返回明确的错误消息，告知 Claude 文件未找到。2. 替换有多个匹配当 str_replace 命令的 old_str 在文件中匹配多个位置时，应返回错误，要求 Claude 提供更具体的上下文以确保唯一匹配。3. 替换无匹配当 old_str 在文件中找不到匹配时，应返回错误，告知 Claude 未找到匹配的文本。4. 权限错误当没有足够的权限执行文件操作时，应返回权限错误信息。八、最佳实践1. 提供清晰的上下文向 Claude 提供足够的上下文信息，以便它能够理解要完成的任务。2. 明确指定文件路径始终使用明确的文件路径，避免相对路径的歧义。3. 编辑前创建备份始终在编辑重要文件之前创建备份副本。4. 谨慎处理唯一文本替换确保 str_replace 命令的 old_str 参数在文件中只匹配一个位置。5. 验证更改在执行编辑后验证更改是否符合预期。九、定价和 token 使用Text Editor 工具使用与其他工具相同的定价结构。根据使用的 Claude 模型遵循标准的输入和输出 token 定价。除了基础 token 外，Text Editor 工具还需要以下额外的输入 token：工具额外输入 tokentext_editor_20250429（Claude 4.x）700 tokenstext_editor_20250124（Claude Sonnet 3.7）700 tokens十、工具集成Text Editor 工具可以与其他 Claude 工具一起使用。组合工具时，确保：工具版本与使用的模型匹配考虑请求中包含的所有工具的额外 token 使用十一、变更日志日期版本变更2025 年 7 月 28 日text_editor_20250728发布更新的 Text Editor 工具，修复了一些问题并添加了可选的 max_characters 参数。其他方面与 text_editor_20250429 相同。2025 年 4 月 29 日text_editor_20250429发布面向 Claude 4 的 Text Editor 工具。此版本移除了 undo_edit 命令，但保留所有其他功能。工具名称已更新以反映其基于 str_replace 的架构。2025 年 3 月 13 日text_editor_20250124引入独立的 Text Editor 工具文档。此版本针对 Claude Sonnet 3.7 优化，但与前一版本功能相同。2024 年 10 月 22 日text_editor_20241022Text Editor 工具的首次发布，与 Claude Sonnet 3.5 一起提供。通过 view、create、str_replace、insert 和 undo_edit 命令提供查看、创建和编辑文件的功能。十二、下一步使用建议以下是将 Text Editor 工具用于更方便和强大的方式的一些建议：1. 集成到开发工作流将 Text Editor 工具构建到开发工具或 IDE 中2. 创建代码审查系统让 Claude 审查代码并进行改进3. 构建调试助手创建一个系统，让 Claude 帮助诊断和修复代码中的问题4. 实现文件格式转换让 Claude 帮助将文件从一种格式转换为另一种格式5. 自动化文档为 Claude 自动记录代码设置工作流参考资料Text editor tool - Claude Docs
Mailscript CLI 可编程邮箱自动化工具技术分析一、概述1. 项目简介A. 是什么Mailscript（原名 CLI）是一个基于 Node.js 和 TypeScript 构建的命令行工具，提供可编程邮箱地址和低代码邮件自动化功能。该项目由 pagedotapp 组织开发，采用 MIT 开源许可证。B. 核心价值邮件自动化：类似 Zapier，但面向开发者群体低代码方案：无需转移邮箱服务商即可使用可编程性：支持自定义代码过滤器和路由规则元数据解析：自动解析邮件所有元素并提供 JSON 格式C. 技术特点TypeScript 91.6%：强类型安全保障代码质量CLI 工具：全局安装后提供命令行交互本地守护进程：通过本地 daemon 处理认证HTTP API：支持 RESTful 接口集成二、核心架构1. 系统组成graph TB subgraph 用户层 A[命令行] --> B[mailscript CLI] C[浏览器] --> D[OAuth 登录] end subgraph 本地守护进程 E[Daemon 进程] --> F[认证处理] E --> G[状态管理] end subgraph Mailscript 服务 H[API 网关] --> I[邮箱自动化引擎] I --> J[邮件解析器] I --> K[路由规则引擎] I --> L[自定义脚本执行] end subgraph 外部集成 M[现有邮箱提供商] --> I N[短信服务] --> I O[文件服务器] --> I end B --> E D --> E E --> H2. 组件功能A. CLI 工具负责用户交互和命令执行，核心命令包括：login：OAuth 认证登录automate：创建自动化规则address：管理邮箱地址inbox：管理收件箱B. 本地守护进程处理浏览器 OAuth 回调管理访问令牌和会话状态与远程 API 持续通信C. 邮件解析器解析邮件头信息（From、To、Subject、Date）提取邮件正文（纯文本、HTML）处理附件文件生成结构化 JSON 输出D. 路由规则引擎支持条件过滤（关键词、发件人、主题）支持正则表达式匹配支持邮件头内容过滤支持优先级路由三、核心功能1. 邮箱地址管理graph LR A[用户] -->|创建| B[邮箱地址] B -->|绑定规则| C[自动化脚本] C -->|触发条件| D[动作执行] D --> E[发送短信] D --> F[自动回复] D --> G[保存附件] D --> H[转发邮件]A. 无限地址为不同用途创建专用邮箱地址每个地址可独立配置自动化规则支持动态生成和销毁B. 规则绑定每个地址绑定一个或多个自动化脚本脚本在邮件到达时自动触发支持条件判断和复杂逻辑2. 邮件自动化sequenceDiagram participant M as 发件人 participant P as 邮箱提供商 participant S as Mailscript participant F as 过滤器 participant A as 动作执行 M->>P: 发送邮件 P->>S: Webhook 通知 S->>F: 解析邮件 F->>F: 匹配规则 F->>A: 触发动作 A->>A: 执行脚本A. 内置动作发送短信通知（SMS）自动回复邮件保存附件到服务器转发到主邮箱添加标签或分类B. 自定义脚本支持 JavaScript/TypeScript 编写过滤器访问完整邮件元数据集成第三方 API执行复杂业务逻辑3. 邮件解析graph TD A[原始邮件] --> B[解析器] B --> C[邮件头] B --> D[邮件正文] B --> E[附件] C --> F[From] C --> G[To] C --> H[Subject] C --> I[Date] C --> J[其他头] D --> K[纯文本] D --> L[HTML] E --> M[文件列表] F --> N[JSON 输出] G --> N H --> N I --> N J --> N K --> N L --> N M --> NA. 结构化输出{ "id": "email_id", "from": "sender@example.com", "to": "recipient@mailscript.com", "subject": "Email Subject", "date": "2026-01-19T16:30:00Z", "headers": { "message-id": "...", "references": "...", "in-reply-to": "..." }, "body": { "text": "Plain text content", "html": " ... " }, "attachments": [ { "filename": "document.pdf", "contentType": "application/pdf", "size": 12345 } ] }四、使用场景1. 重要邮件提醒监控特定发件人邮件根据关键词判断优先级发送短信到手机提醒2. 自动回复首次发件人自动回复欢迎信息常见问题自动回复 FAQ设置外出自动回复3. 附件管理自动保存发票到财务目录归档合同到指定文件夹同步附件到云存储4. 收件箱清理过滤垃圾邮件到独立文件夹将低优先级邮件归档保持主收件箱整洁五、技术实现1. 技术栈A. 核心语言TypeScript 91.6%JavaScript 7.0%HTML 1.2%B. 依赖工具Node.js 运行环境npm 包管理器Yarn 锁定依赖版本C. 开发工具ESLint：代码检查Prettier：代码格式化EditorConfig：编辑器配置统一2. 安装与使用A. 全局安装npm install -g mailscriptB. 基本命令# 登录认证 mailscript login # 查看版本 mailscript --version # 查看帮助 mailscript --helpC. 开发版安装npm install -g https://github.com/mailscript/cli.git六、架构优势1. 无需迁移邮箱与现有邮箱提供商兼容通过 Webhook 或 IMAP 接收邮件无需改变用户习惯2. 低代码方案预定义常用自动化模板可视化规则编辑器（潜在功能）降低技术门槛3. 高度可扩展支持自定义脚本开放 HTTP API可集成任意第三方服务4. 安全性考虑OAuth 2.0 认证访问令牌加密存储本地守护进程减少暴露面七、项目状态1. 开发活跃度205 次提交6 位贡献者4 个 Fork152 个 Star2. 代码质量主分支持续集成Codecov 代码覆盖率GitHub Issues 跟踪问题3. 文档完善度README 详细说明API 文档独立站点贡献指南和行为准则八、潜在应用1. 开发者工作流GitHub 通知邮件自动分类CI/CD 失败立即短信提醒工单系统邮件自动创建任务2. 企业场景客户邮件自动分配发票自动录入财务系统合同附件自动归档3. 个人效率订阅邮件自动整理重要邮件多渠道提醒附件自动备份九、技术挑战与展望1. 当前挑战实时邮件推送延迟大规模附件处理性能复杂规则引擎的执行效率2. 未来改进方向支持更多编程语言编写脚本引入机器学习进行智能分类提供可视化规则编辑器增强移动端支持十、总结Mailscript CLI 是一个创新的邮件自动化工具，通过可编程邮箱地址和低代码方案，为开发者提供了强大的邮件处理能力。其技术架构清晰，功能设计合理，既保持了易用性又不失灵活性。该项目采用 TypeScript 确保代码质量，使用守护进程架构处理认证，通过 JSON 格式提供结构化邮件数据，降低了邮件自动化的门槛。对于需要处理大量邮件或构建邮件驱动工作流的开发者来说，Mailscript 提供了一个优雅的解决方案。参考资料Mailscript CLI GitHub 仓库Mailscript 官方网站Mailscript HTTP API 文档
SECMON 信息安全监控与漏洞管理平台技术分析
SECMON 信息安全监控与漏洞管理平台技术分析一、背景与目标1. 项目背景A. 业务场景随着信息安全威胁日益复杂，企业和组织面临着持续增长的漏洞管理挑战。SECMON 是一个基于 Web 的自动化信息安全监控和漏洞管理工具，旨在帮助安全团队及时获取相关 CVE（通用漏洞披露）信息、网络安全威胁动态，并有效管理基础设施中的安全风险。B. 痛点分析信息分散：CVE 信息、安全新闻、漏洞情报散布在多个平台手动追踪效率低：依赖人工检查安全公告，容易遗漏关键信息误报率高：通用的漏洞信息包含大量无关内容，难以快速定位管理难度大：缺乏统一的平台管理产品的安全状态2. 设计目标A. 功能目标自动化收集和推送 CVE 信息监控网络安全威胁动态提供漏洞管理和搜索功能生成安全报告和可视化分析B. 非功能目标易用性：Web 界面提供直观的操作体验可扩展性：支持多用户、多产品管理集成性：日志可集成到 SIEM 系统二、系统概述1. 产品定位SECMON 是一款开源的信息安全监控工具，专注于漏洞情报收集和管理。通过自动化轮询多种数据源，为安全团队提供及时、准确的安全威胁信息。2. 核心特性CVE 邮件告警：当产品列表中出现新的 CVE 时自动发送邮件安全新闻监控：推送网络安全相关新闻，包括新威胁、攻击事件等高风险产品可视化：展示 IT 基础设施中的高风险产品CVE Excel 报告：按日期范围下载漏洞报告网络安全主题排行：展示热门网络安全主题SIEM 日志集成：日志格式易于集成到 Splunk、Graylog 等漏洞详情查询：搜索 CVE 详细信息，包括利用代码检测三、系统架构1. 总体架构graph TB subgraph 数据源层 NIST[NIST CVE API] RSS[RSS 新闻源] Github[GitHub API] ExploitDB[Exploit-DB] end subgraph 采集层 Poller[轮询器] CVECollector[CVE 收集器] NewsCollector[新闻收集器] ExploitCollector[利用代码收集器] end subgraph 处理层 Analyzer[分析引擎] CPEMatcher[CPE 匹配器] KeywordMatcher[关键词匹配器] AlertGenerator[告警生成器] end subgraph 数据层 SQLite[(SQLite 数据库)] Log[日志文件] end subgraph 应用层 Flask[Flask Web 应用] WebUI[Web 界面] API[REST API] end subgraph 通知层 Email[邮件服务] SIEM[SIEM 集成] end NIST --> Poller RSS --> Poller Github --> Poller ExploitDB --> Poller Poller --> CVECollector Poller --> NewsCollector Poller --> ExploitCollector CVECollector --> Analyzer NewsCollector --> Analyzer ExploitCollector --> Analyzer Analyzer --> CPEMatcher Analyzer --> KeywordMatcher CPEMatcher --> AlertGenerator KeywordMatcher --> AlertGenerator AlertGenerator --> SQLite AlertGenerator --> Log AlertGenerator --> Email Flask --> SQLite Flask --> Log Flask --> WebUI Flask --> API WebUI --> 用户 API --> 外部应用 Log --> SIEM2. 组件说明轮询器：定期从各数据源获取最新信息收集器：解析和标准化原始数据分析引擎：处理收集的数据，匹配用户关注的产品匹配器：支持 CPE 和关键词两种匹配方式Web 应用：提供用户界面和管理功能通知服务：发送邮件告警和集成 SIEM四、核心功能1. CVE 监控与告警A. 数据收集机制SECMON 通过两种方法收集 CVE 信息：基于关键词：主动检索相关 CVE，无需精确版本检查，仅匹配关键词（如 "VMWare"、"Apache"）基于 CPE：精确匹配特定产品版本的 CVE（如 "Windows 10 1909"、"Apache 2.4.38"）B. 匹配流程graph LR A[新 CVE 发布] --> B{匹配方式} B --> C[关键词匹配] B --> D[CPE 匹配] C --> E{关键词匹配?} E -->|是| F[添加到产品列表] E -->|否| G[忽略] D --> H{CPE 匹配?} H -->|是| F H -->|否| G F --> I[生成告警] I --> J[发送邮件]C. 邮件告警特性支持英文和法语包含 CVE 详细信息和影响评估可按产品订阅告警2. 漏洞管理A. 产品管理功能搜索、添加、删除产品显示已注册的产品列表支持批量导入产品B. CVE 管理功能分配 CVE 管理状态搜索漏洞详情检查 GitHub 和 Exploit-DB 上的利用代码按日期范围生成 Excel 报告C. 可视化展示高风险产品仪表板CVE 趋势图表网络威胁主题排行3. 安全新闻监控A. 新闻源管理监控 RSS 新闻源过滤网络安全相关内容展示热门安全主题B. 轻量级网络态势感知通过聚合和分析安全新闻，展示当前网络安全领域的热门话题和趋势。mindmap root((网络态势感知)) 威胁类型 勒索软件 APT 攻击 钓鱼攻击 受害行业 金融 医疗 政府 教育 攻击技术 零日漏洞 供应链攻击 社会工程学 防御措施 补丁管理 安全培训 多因素认证4. 利用代码检测A. 数据源GitHub API：搜索公开的漏洞利用代码Exploit-DB：查询已知的利用代码B. 检测机制自动关联 CVE 与利用代码提供利用代码的链接和描述帮助评估漏洞的利用风险五、技术实现1. 技术栈A. 后端框架Python 3.8+Flask Web 框架B. 数据存储SQLite 数据库（未加密）C. 前端技术Bootstrap 模板（sbadmin2）HTML/CSS/JavaScriptD. 外部 APINIST CVE APIGitHub APIRSS 订阅源2. 数据模型A. 核心数据表Products：存储产品信息（CPE、关键词）CVEs：存储 CVE 详细信息News：存储安全新闻Alerts：存储告警记录Users：存储用户账户信息B. 关键字段CPE 字符串：用于精确匹配产品版本关键词：用于模糊匹配CVSS 评分：评估漏洞严重程度管理状态：跟踪漏洞处理进度3. 安全考虑A. 认证机制Web UI 凭证使用 SHA512 + 盐值哈希存储支持多用户账户管理B. 安全限制GitHub API 密钥和会话密钥未加密存储数据库未加密C. 部署建议使用专用服务器或 Docker 容器隔离主机与外部网络限制访问权限六、部署与使用1. 系统要求A. 操作系统基于 Linux 的系统（已在 Debian 10 上测试）B. 运行环境Python 3.8 或 3.9C. 外部依赖有效的 GitHub API 密钥2. 部署方式A. Docker 部署（推荐）项目提供 Docker 自动化部署方案，支持：容器化运行卷持久化Git 更新集成B. 传统部署安装 Python 依赖配置数据库设置轮询任务3. 初始化配置A. 必需配置GitHub API 密钥邮件服务器设置（用于告警）数据库初始化B. 可选配置RSS 新闻源SIEM 集成用户账户七、功能特性详解1. 邮件告警系统A. CVE 告警当新发布的 CVE 影响用户订阅的产品时，系统自动发送邮件告警，包含：CVE 编号和描述影响的产品版本CVSS 评分利用代码可用性B. 新闻告警网络安全相关的重大事件和威胁情报会通过邮件推送，包括：新型威胁最近攻击安全事件C. 告警模板使用专业的 HTML/CSS 邮件模板，确保良好的阅读体验。2. SIEM 集成A. 日志格式日志采用标准格式，易于解析和集成。B. 验证平台SplunkGraylogC. 集成优势集中化安全事件管理与现有安全运营流程整合历史数据分析和审计3. 报告功能A. CVE Excel 报告按日期范围生成包含完整的 CVE 详情支持导出和分享B. 可视化仪表板高风险产品展示CVE 趋势分析网络威胁主题排行八、应用场景1. 企业安全运营中心作为漏洞管理平台的补充自动化 CVE 监控和告警与 SIEM 系统联动2. 中小企业安全团队低成本的漏洞管理解决方案简化产品安全监控流程提供及时的安全威胁情报3. 安全研究机构收集和分析漏洞趋势监控特定产品的安全状态研究网络威胁态势九、项目路线图1. 已实现功能（2.x 版本）Web UI 新模板多用户支持Docker 自动化配置网络威胁主题聚合日志格式标准化2. 计划功能REST API 开发CVE 每日更新报告其他漏洞数据库集成Windows 和 Linux 系统 CPE 扫描脚本SECMON-Open-API（免费的 0-day、病毒式漏洞和数据泄露新闻 API）十、技术优势与局限1. 技术优势开源免费，可定制性强支持多种匹配方式（CPE 和关键词）集成多个数据源Web 界面友好，易于使用支持多用户和权限管理2. 技术局限数据库未加密，存在安全风险部分敏感信息（API 密钥）明文存储依赖外部 API 的稳定性和速率限制NIST API 速率管理尚未完全解决十一、许可证SECMON 由 Aubin Custodio（Guezone）开发，采用 CC BY-NC-SA 4.0 许可证。该许可证允许：使用 SECMON改进和优化在注明作者的前提下分享限制：不得用于商业目的设计初衷是帮助企业和用户保护 IT 基础设施，了解当前网络安全世界。十二、总结SECMON 是一个功能完善的信息安全监控和漏洞管理平台，通过自动化收集和分析 CVE、安全新闻和利用代码信息，为安全团队提供了全面的安全态势感知能力。核心价值自动化：减少人工监控工作量及时性：快速获取相关安全信息精准性：通过 CPE 和关键词匹配减少误报集成性：与现有安全工具无缝集成适用建议SECMON 适合作为企业和组织漏洞管理流程的补充工具，特别是对于资源有限的安全团队，可以显著提升漏洞监控效率和响应速度。参考资料SECMON GitHub 仓库NIST CVE 数据库Exploit-DB
Pentaract：利用 Telegram API 实现无限云存储的技术分析一、项目概述1. 核心理念Pentaract 是一个开源工具，巧妙地将用户现有的 Telegram 账户转化为无限云存储后端。它不将文件上传到公开频道，而是发送到用户的私人聊天（如「已保存消息」），利用 Telegram 庞大的云基础设施构建个人无限存储系统。2. 项目背景A. 痛点分析云存储费用高昂免费层存储空间有限多服务间文件转移繁琐B. 解决方案复用已有的 Telegram 应用，利用其本质上无限的媒体和文档存储能力。3. 技术定位项目类型：本地客户端工具开发语言：Python存储后端：Telegram API安全特性：端到端加密二、系统架构1. 核心组件graph TD A[用户文件] --> B[Pentaract 客户端] B --> C[本地加密模块] C --> D[文件分块处理] D --> E[Telegram API] E --> F[私人聊天/已保存消息] F --> G[Telegram 云存储] H[用户] -->|请求下载| B B -->|通过 API 获取| F B -->|重组解密| A2. 组件说明A. Pentaract 客户端运行在用户本地机器监控指定文件夹的变更自动同步文件到 Telegram 云B. 本地加密模块使用用户控制的密钥进行本地加密Telegram 只能看到加密后的数据块端到端加密保护隐私C. 文件分块处理自动处理 Telegram 文件大小限制大文件自动分割下载时透明重组D. Telegram API使用标准 Telegram Bot API 或 MTProto认证通过 api_id 和 api_hash与私人聊天交互三、工作流程1. 上传流程sequenceDiagram participant U as 用户 participant C as Pentaract 客户端 participant E as 加密模块 participant S as 分块处理 participant T as Telegram API U->>C: 选择文件 C->>E: 本地加密 E-->>C: 加密数据 C->>S: 文件分块 S->>T: 上传数据块 T-->>S: 确认上传 S-->>C: 上传完成 C-->>U: 同步成功2. 下载流程sequenceDiagram participant U as 用户 participant C as Pentaract 客户端 participant T as Telegram API participant S as 重组模块 participant E as 解密模块 U->>C: 请求文件 C->>T: 获取数据块 T-->>C: 返回加密块 C->>S: 重组文件 S->>E: 解密数据 E-->>C: 原始文件 C-->>U: 返回文件四、技术特性1. 核心优势A. 端到端加密（E2EE）使用用户控制的密钥本地加密Telegram 仅看到加密数据块无法访问原始文件内容B. 无需新账户直接使用现有 Telegram 账户无需注册新服务利用已有的 API 访问权限C. 自动分块处理透明处理 Telegram 文件大小限制自动分割大文件下载时自动重组D. 自托管开源客户端自行运行不信任第三方中介开源代码可审计2. 适用场景归档存储文件备份跨机器同步非敏感文件免费无限存储需求3. 局限性不适合高频协作场景速度不及专业云存储依赖 Telegram 服务可用性五、部署与配置1. 环境准备A. 获取 API 凭证访问 my.telegram.org创建 Telegram 应用获取 api_id 和 api_hashB. 安装依赖# 克隆仓库 git clone https://github.com/Dominux/Pentaract.git cd Pentaract # 安装 Python 依赖 pip install -r requirements.txt2. 配置步骤A. 配置文件设置# config.yaml 示例 telegram: api_id: "your_api_id" api_hash: "your_api_hash" phone: "+1234567890" storage: sync_folder: "/path/to/sync" chat_id: "saved_messages" # 或私人聊天 ID encryption: enabled: true key_file: "/path/to/key"B. 运行客户端# 启动同步服务 python pentaract.py --config config.yaml # 首次运行需要认证 # 输入 Telegram 验证码六、技术实现要点1. 文件分块算法graph LR A[原始文件] --> B{文件大小} B -->|小于限制| C[直接上传] B -->|超过限制| D[计算分块数量] D --> E[按 2GB 切分] E --> F[添加元数据] F --> G[顺序上传] C --> H[记录文件映射] G --> H2. 加密策略A. 加密流程生成或读取用户密钥使用 AES-256-GCM 加密文件每个分块独立加密存储加密元数据B. 密钥管理密钥存储在本地支持密钥文件导入导出建议使用密码保护密钥文件3. 元数据管理graph TD A[文件系统] --> B[扫描变更] B --> C[构建文件索引] C --> D[生成哈希值] D --> E[与远程对比] E -->|新增| F[标记上传] E -->|已存在| G[跳过] E -->|已删除| H[标记清理]七、安全考虑1. 数据隐私端到端加密确保隐私本地密钥控制Telegram 无法解密内容2. 凭证安全api_id 和 api_hash 本地存储不要分享凭证文件定期轮换密钥3. 最佳实践敏感文件使用强密钥定期备份密钥文件测试恢复流程八、性能优化1. 并发上传多线程上传分块限制并发数避免 API 限流断点续传支持2. 增量同步仅同步变更文件哈希对比减少重复上传时间戳快速判断3. 缓存策略本地缓存文件列表减少 API 调用次数智能刷新机制九、项目评价1. 创新点A. 资源复用巧妙利用现有基础设施降低存储成本零额外费用B. 隐私优先本地加密设计用户完全控制开源可审计2. 适用人群开发者研究 Telegram API需要免费无限备份的用户注重隐私的个人用户3. 学习价值Telegram API 实战应用本地加密实现方案文件同步系统设计十、总结Pentaract 是一个极具创意的项目，展示了如何通过巧妙的设计将常见平台转化为新的实用工具。它不适合替代 Dropbox 或 Google Drive 进行日常高速协作，但作为免费、无限、加密的备份目标或项目归档方案，是一个精彩且实用的解决方案。该项目体现了创造性工程的核心精神：审视常见平台，发现新颖用途。对于开发者而言，这是一个值得研究的项目，其实用的 Telegram API 应用、本地加密和文件管理方案都具有很高的学习价值。参考资料Pentaract GitHub 仓库Telegram API 文档my.telegram.org 应用创建Open-source Projects 项目页
WeRSS 微信公众号订阅助手技术分析一、项目概述1. 项目简介WeRSS（We-MP-RSS）是一个开源的微信公众号订阅助手项目，旨在为用户提供符合阅读习惯的微信公众号内容管理方案。该项目通过微信公众号内容爬取和解析，自动生成 RSS 订阅源，使用户能够使用 RSS 阅读器订阅和管理微信公众号内容，摆脱微信应用的束缚。项目仓库地址为 https://github.com/rachelos/we-mp-rss，采用前后端分离架构，后端使用 Python + FastAPI，前端使用 Vue 3 + Vite，数据库支持 SQLite 和 MySQL。2. 核心功能WeRSS 提供了丰富的功能特性，主要涵盖以下几个方面：A. 内容管理功能微信公众号内容爬取和解析：支持多种爬取方式，自动获取公众号文章列表和详情RSS 订阅源生成：为每个订阅的公众号自动生成标准 RSS 格式的订阅源定时自动更新：可配置定时任务，自动抓取最新文章标签订阅：支持按标签筛选和订阅公众号B. 内容导出功能导出为 Markdown：将公众号文章转换为 Markdown 格式导出为 PDF：支持将文章导出为 PDF 文档导出为其他格式：支持 docx、json 等多种格式导出C. Web 管理界面友好的用户界面：提供简洁易用的 Web 管理界面二维码授权：支持扫码授权登录微信公众号订阅管理：可视化的订阅列表管理文章阅读：内置文章阅读器D. 通知与集成授权过期提醒：当公众号授权即将过期时自动提醒自定义通知渠道：支持钉钉、微信、飞书和自定义 WebhookAPI 接口：提供完整的 RESTful APIWebHook 支持：支持 Webhook 集成AI Agent 接入：支持 AI Agent 接入微信公众号E. 定制化配置自定义 RSS 标题、描述和封面自定义 RSS 分页大小多数据库支持：默认使用 SQLite，可选 MySQL多 RSS 客户端支持3. 技术架构WeRSS 采用前后端分离的架构设计，主要技术栈包括：A. 后端技术Python 3.13.1+：项目要求 Python 版本不低于 3.13.1FastAPI：高性能的 Python Web 框架，用于构建 RESTful APISQLite/MySQL：数据存储，默认使用 SQLite，可配置 MySQL定时任务：内置任务调度系统，支持定时抓取文章B. 前端技术Vue 3：渐进式 JavaScript 框架Vite：下一代前端构建工具Node.js 20.18.3+：前端开发环境要求C. 系统架构图graph TB subgraph 前端 A[Vue3 + Vite] end subgraph 后端 B[FastAPI] C[定时任务] D[爬虫模块] E[RSS生成] end subgraph 数据存储 F[(SQLite/MySQL)] G[文件缓存] end subgraph 外部服务 H[微信公众号] I[通知渠道] end A -->|HTTP API| B B --> F B --> G C --> D D --> H D --> F E --> B B --> I I --> J[钉钉/微信/飞书/自定义]二、系统工作原理1. 核心工作流程WeRSS 的核心工作流程可以分为订阅管理、内容爬取、RSS 生成和通知推送四个主要环节。A. 订阅管理用户通过 Web 界面添加要订阅的微信公众号，系统提供多种添加方式：二维码授权：用户使用微信扫描二维码授权登录，系统自动获取已关注的公众号列表手动添加：用户输入公众号名称或 ID，系统搜索并添加标签订阅：用户选择感兴趣的标签，系统自动订阅相关公众号订阅信息被保存到数据库中，包括公众号 ID、名称、授权状态等。B. 内容爬取系统的定时任务模块会周期性地执行内容爬取任务：文章列表爬取：根据订阅列表，爬取每个公众号的最新文章列表文章详情爬取：对新增文章，爬取完整的文章内容、图片、作者等信息内容解析：解析微信公众号的 HTML 内容，提取正文、图片链接等关键信息内容存储：将解析后的文章内容保存到数据库爬取过程支持多种爬取方式，可以应对不同的反爬策略。C. RSS 生成当用户或其他系统请求 RSS 订阅源时，系统会执行以下步骤：读取文章列表：从数据库中查询指定公众号的文章列表生成 RSS XML：按照 RSS 2.0 标准格式生成 XML 文档应用自定义配置：根据用户配置的标题、描述、封面等信息自定义 RSS返回 RSS：将生成的 RSS 内容返回给请求方D. 通知推送当有新的文章被爬取或授权即将过期时，系统会触发通知推送：检查通知条件：判断是否满足通知条件（新文章、授权过期等）格式化通知内容：根据配置的格式（HTML/文本）格式化通知内容调用 Webhook：向配置的通知渠道发送 Webhook 请求记录通知结果：记录通知发送状态，处理失败重试2. 工作流程时序图以下时序图展示了从用户订阅到获取 RSS 的完整流程：sequenceDiagram participant U as 用户 participant W as Web界面 participant A as API服务 participant J as 定时任务 participant M as 微信公众号 participant D as 数据库 U->>W: 订阅公众号 W->>A: POST /api/subscribe A->>D: 保存订阅信息 Note over J,D: 定时执行 J->>M: 爬取文章列表 M-->>J: 返回文章数据 J->>M: 爬取文章详情 M-->>J: 返回完整内容 J->>D: 保存文章 J->>A: 生成RSS A->>D: 读取文章列表 A-->>U: 返回RSS Feed U->>A: 获取RSS A->>D: 查询文章 A-->>U: 返回RSS XML3. 数据模型系统的核心数据模型包括以下几个实体：A. 公众号信息存储微信公众号的基本信息和授权状态，字段包括：公众号 ID：唯一标识符公众号名称：显示名称授权状态：是否已授权授权过期时间：授权的到期时间最后更新时间：最后爬取时间B. 文章信息存储爬取的文章内容，字段包括：文章 ID：唯一标识符公众号 ID：关联的公众号文章标题文章内容（HTML/Markdown）发布时间原文链接封面图片链接C. 订阅关系存储用户的订阅记录，字段包括：用户 ID公众号 ID订阅时间订阅状态三、部署与安装1. Docker 部署（推荐）WeRSS 提供了预构建的 Docker 镜像，部署非常简单。A. 快速启动docker run -d \ --name we-mp-rss \ -p 8001:8001 \ -v ./data:/app/data \ ghcr.io/rachelos/we-mp-rss:latest启动后访问 http://localhost:8001/ 即可使用。B. 配置说明-p 8001:8001：将容器的 8001 端口映射到主机的 8001 端口-v ./data:/app/data：将主机的 data 目录挂载到容器，确保持久化存储C. 国内加速镜像对于国内用户，可以使用代理镜像加速访问：docker run -d \ --name we-mp-rss \ -p 8001:8001 \ -v ./data:/app/data \ docker.1ms.run/rachelos/we-mp-rss:latestD. 升级更新docker stop we-mp-rss docker rm we-mp-rss docker pull ghcr.io/rachelos/we-mp-rss:latest docker run -d \ --name we-mp-rss \ -p 8001:8001 \ -v ./data:/app/data \ ghcr.io/rachelos/we-mp-rss:latest2. 源码部署如果需要从源码部署，可以按照以下步骤操作。A. 环境要求Python >= 3.13.1Node.js >= 20.18.3B. 后端服务部署克隆项目git clone https://github.com/rachelos/we-mp-rss.git cd we-mp-rss安装 Python 依赖pip install -r requirements.txt配置数据库复制配置文件模板并修改：cp config.example.yaml config.yaml启动服务python main.py -job True -init TrueC. 前端开发安装前端依赖cd we-mp-rss/web_ui yarn install启动前端服务yarn dev四、配置详解1. 环境变量配置WeRSS 通过 config.yaml 文件进行配置，支持丰富的环境变量。以下是主要的配置项说明：A. 基础配置配置项默认值说明APP_NAMEwe-mp-rss应用名称SERVER_NAMEwe-mp-rss服务器名称WEB_NAMEWeRSS微信公众号订阅助手前端显示名称PORT8001API 服务端口DEBUGFalse调试模式B. 数据库配置配置项默认值说明DBsqlite:///data/db.db数据库连接字符串ARTICLE.TRUE_DELETEFalse是否真正删除文章C. 定时任务配置配置项默认值说明ENABLE_JOBTrue是否启用定时任务SPAN_INTERVAL10定时任务执行间隔（秒）THREADS2最大线程数MAX_PAGE5最大爬取页数D. RSS 配置配置项默认值说明RSS_BASE_URL空RSS 域名地址RSS_LOCALFalse是否使用本地 RSS 链接RSS_TITLE空RSS 标题RSS_DESCRIPTION空RSS 描述RSS_COVER空RSS 封面RSS_FULL_CONTEXTTrue是否显示全文RSS_ADD_COVERTrue是否添加封面图片RSS_CDATAFalse是否启用 CDATARSS_PAGE_SIZE30RSS 分页大小E. 通知配置配置项默认值说明SEND_CODETrue是否发送授权二维码通知CODE_TITLEWeRSS授权二维码二维码通知标题DINGDING_WEBHOOK空钉钉通知 Webhook URLWECHAT_WEBHOOK空微信通知 Webhook URLFEISHU_WEBHOOK空飞书通知 Webhook URLCUSTOM_WEBHOOK空自定义通知 Webhook URLWEBHOOK.CONTENT_FORMAThtml文章内容发送格式F. 内容收集配置配置项默认值说明GATHER.CONTENTTrue是否收集内容GATHER.MODELapp收集模式GATHER.CONTENT_AUTO_CHECKFalse是否自动检查未收集文章内容GATHER.CONTENT_AUTO_INTERVAL59自动检查未收集文章内容的时间间隔（分钟）GATHER.CONTENT_MODEweb内容修正模式G. 安全配置配置项默认值说明SECRET_KEYwe-mp-rss密钥SAFE_HIDE_CONFIGdb,secret,token,notice...隐藏的配置信息SAFE_LIC_KEYRACHELOS授权加密密钥TOKEN_EXPIRE_MINUTES4320登录会话有效期（分钟）H. 缓存与日志配置配置项默认值说明CACHE.DIR./data/cache缓存目录LOG_FILE空日志文件路径LOG_LEVELINFO日志级别I. 其他配置配置项默认值说明USER_AGENTMozilla/5.0...用户代理AUTO_RELOADFalse代码变更时自动重启服务EXPORT_PDFFalse是否启用 PDF 导出功能2. 配置示例以下是一个完整的 config.yaml 配置示例：app: name: we-mp-rss server_name: we-mp-rss web_name: WeRSS微信公众号订阅助手 port: 8001 debug: false database: url: sqlite:///data/db.db article_true_delete: false job: enable: true span_interval: 10 threads: 2 max_page: 5 rss: base_url: "" local: false title: "" description: "" cover: "" full_context: true add_cover: true cdata: false page_size: 30 notification: send_code: true code_title: WeRSS授权二维码 dingding_webhook: "" wechat_webhook: "" feishu_webhook: "" custom_webhook: "" webhook_content_format: html gather: content: true model: app content_auto_check: false content_auto_interval: 59 content_mode: web security: secret_key: your-secret-key hide_config: db,secret,token,notice.wechat,notice.feishu,notice.dingding lic_key: RACHELOS token_expire_minutes: 4320 cache: dir: ./data/cache logging: file: "" level: INFO other: user_agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 auto_reload: false export_pdf: false五、技术特点1. 前后端分离架构WeRSS 采用前后端分离的架构设计，前端使用 Vue 3 + Vite 构建，后端使用 FastAPI 提供 RESTful API。这种架构带来了以下优势：开发效率提升：前后端可以独立开发和部署，提高了开发效率可维护性强：前后端职责清晰，代码组织更加规范扩展性好：可以轻松添加新的客户端（如移动端 App）性能优化：前端可以使用 Vite 进行快速构建和热更新2. 多爬取方式支持系统支持多种微信公众号内容爬取方式，可以根据不同的反爬策略自动选择合适的爬取方法。这种设计提高了系统的稳定性和可靠性。3. 灵活的通知机制WeRSS 提供了丰富的通知渠道，包括钉钉、微信、飞书和自定义 Webhook。用户可以根据自己的需求选择合适的通知方式，及时获取新文章更新和授权过期提醒。4. 多格式内容导出系统支持将微信公众号文章导出为多种格式，包括 Markdown、PDF、DOCX 和 JSON。这使得用户可以根据不同的使用场景选择合适的导出格式。5. 定时任务调度内置的定时任务调度系统可以自动执行文章爬取任务，用户无需手动触发。同时支持配置爬取间隔、最大爬取页数等参数，灵活控制爬取行为。6. API 接口完善系统提供了完整的 RESTful API，支持第三方系统集成。通过 API，用户可以实现以下功能：订阅管理文章查询RSS 获取Webhook 配置7. 数据库灵活切换支持 SQLite 和 MySQL 两种数据库，用户可以根据自己的需求选择合适的数据库。SQLite 适合小型部署和单机使用，MySQL 适合大型部署和高并发场景。六、应用场景1. 个人阅读管理对于经常阅读微信公众号内容的用户，WeRSS 提供了以下便利：统一管理：在一个界面中管理所有关注的公众号RSS 订阅：使用熟悉的 RSS 阅读器阅读公众号内容离线阅读：支持导出为 Markdown 或 PDF，方便离线阅读内容归档：自动保存历史文章，便于回顾和搜索2. 企业内容监测企业可以使用 WeRSS 监测竞争对手或行业动态：竞品监测：订阅竞争对手的公众号，及时了解其动态行业资讯：订阅行业媒体的公众号，获取最新行业资讯舆情监控：通过 Webhook 集成，将新文章推送到企业内部系统3. 内容分析与挖掘研究人员或分析师可以使用 WeRSS 进行内容分析：数据采集：批量采集公众号文章数据格式转换：将文章转换为结构化格式（JSON）内容导出：导出为 Markdown 或 PDF，便于后续处理4. AI Agent 集成WeRSS 支持 AI Agent 接入，可以实现：智能推荐：根据阅读历史推荐相关文章内容摘要：自动生成文章摘要智能问答：基于公众号内容构建知识库七、项目亮点1. 开源免费WeRSS 是完全开源的项目，采用 MIT 许可证。用户可以免费使用、修改和分发，非常适合个人和小团队使用。2. 部署简单提供 Docker 镜像，一条命令即可完成部署。对于不熟悉 Python 和 Node.js 的用户，也可以轻松使用。3. 功能完整涵盖了微信公众号订阅管理的各个方面，从订阅、爬取、RSS 生成到通知推送，功能齐全。4. 持续更新项目活跃度高，持续更新维护。根据 GitHub 数据，项目拥有 1.8k+ Star，300+ Fork，用户反馈积极。5. 社区支持项目拥有活跃的社区，用户可以通过 GitHub Issues 提问和反馈问题。同时项目还提供了详细的文档和使用说明。八、注意事项1. 合规使用使用 WeRSS 爬取微信公众号内容时，需要注意：尊重版权：爬取的内容仅供个人使用，不得用于商业用途遵守协议：遵守微信公众号的服务协议和 robots.txt 规则合理频率：设置合理的爬取频率，避免对服务器造成压力2. 数据安全备份数据：定期备份数据库，防止数据丢失权限控制：如果部署在公网，建议配置访问控制和身份认证密钥保护：妥善保管 SECRET_KEY 等敏感配置3. 性能优化数据库选择：对于大量订阅和文章，建议使用 MySQL 替代 SQLite缓存配置：合理配置缓存目录，提高访问速度定时任务：根据实际需求调整定时任务的执行间隔和线程数4. 反爬策略微信公众号可能采取反爬措施，建议：更新频率：及时关注项目更新，获取最新的反爬应对方案多种方式：系统支持多种爬取方式，当一种失效时可以尝试其他方式User Agent：合理配置 User Agent，模拟正常访问九、总结WeRSS 是一个功能完整、设计优雅的微信公众号订阅管理工具。它通过前后端分离的架构设计，提供了稳定可靠的内容爬取和 RSS 生成功能。项目开源免费，部署简单，非常适合个人和小团队使用。对于希望摆脱微信应用束缚，使用 RSS 阅读器管理微信公众号内容的用户来说，WeRSS 是一个理想的选择。同时，其完善的 API 接口和 Webhook 支持，也为企业级应用和二次开发提供了可能。参考资料WeRSS GitHub 仓库 - 项目主页WeRSS 知乎专栏文章 - 项目介绍
Octopus LLM API 聚合服务技术分析一、新闻概述1. 标题Octopus：为个人打造的 LLM API 聚合与负载均衡服务2. 发布时间2025 年 1 月 16 日3. 来源GitHub 开源项目二、核心内容1. 事件摘要A. 主要内容Octopus 是一个面向个人用户的 LLM API 聚合服务项目，旨在通过统一入口管理多个 LLM 提供商的 API，实现智能负载均衡和成本优化。B. 核心亮点多渠道聚合：统一管理多个 LLM 提供商通道智能负载均衡：支持轮询、随机、故障转移、加权等多种模式协议转换：无缝转换 OpenAI Chat、OpenAI Responses、Anthropic API 格式自动同步：模型列表和价格信息自动更新优雅 UI：简洁美观的 Web 管理面板2. 关键信息A. 技术栈后端：Go 1.24.4前端：Next.js + pnpm数据库：SQLite、MySQL、PostgreSQLB. 部署方式Docker 容器化部署二进制文件直接运行源码编译C. 默认配置服务端口：8080默认账号：admin/admin数据存储：/app/data3. 背景介绍A. 项目起源随着 LLM 服务提供商日益增多，个人用户面临管理多个 API Key、分散调用、成本统计困难等问题。Octopus 应运而生，提供统一的 API 聚合解决方案。B. 相关上下文项目借鉴了 axonhub 的 LLM API 适配模块设计，并整合了 models.dev 的 AI 模型数据库用于价格信息同步。三、详细报道1. 主要内容A. 功能特性渠道管理：支持单通道多 API Key 配置每个通道支持多个端点，智能选择延迟最短的端点自动根据通道类型追加 API 路径分组管理：将多个通道聚合为统一的对外模型名称调用时设置 model 参数为分组名称即可访问所有通道支持多种负载均衡模式负载均衡模式：轮询模式：按顺序依次分配请求到各通道随机模式：随机选择可用通道故障转移：优先使用高优先级通道，失败时切换到低优先级通道加权模式：根据配置的通道权重分配请求B. 技术改进协议转换：OpenAI Chat 格式OpenAI Responses 格式Anthropic Messages 格式Gemini Generate Content 格式自动同步：定期从 models.dev 同步模型定价数据创建通道时自动同步可用模型列表自动创建未知模型的定价信息C. 统计分析综合请求统计Token 消耗统计成本跟踪定期批量写入数据库（性能优化策略）2. 技术细节A. 系统架构graph TB Client[客户端应用] --> Octopus[Octopus API 网关] Octopus --> LoadBalancer[负载均衡器] LoadBalancer --> Channel1[通道 1] LoadBalancer --> Channel2[通道 2] LoadBalancer --> Channel3[通道 3] Channel1 --> Provider1[提供商 1] Channel2 --> Provider2[提供商 2] Channel3 --> Provider3[提供商 3] Octopus --> Database[(数据库)] Octopus --> PriceSync[价格同步] PriceSync --> ModelsDev[models.dev]B. 数据流程sequenceDiagram participant C as 客户端 participant O as Octopus participant LB as 负载均衡 participant P as LLM 提供商 participant D as 数据库 C->>O: API 请求（model=分组名） O->>LB: 负载均衡选择 LB->>O: 返回选定通道 O->>P: 转发请求（协议转换） P-->>O: 返回响应 O-->>C: 返回结果 O->>D: 异步记录统计C. 配置架构graph LR Config[配置文件] --> Server[服务器配置] Config --> Database[数据库配置] Config --> Log[日志配置] Database --> SQLite[SQLite] Database --> MySQL[MySQL] Database --> PostgreSQL[PostgreSQL]3. 数据与事实A. 支持的 LLM 提供商OpenAI（Chat Completions、Responses）Anthropic（Claude）Google（Gemini）其他兼容 OpenAI 格式的提供商B. 数据库支持数据库类型配置示例SQLitedata/data.dbMySQLuser:password@tcp(host:port)/dbnamePostgreSQLpostgresql://user:password@host:port/dbnameC. 性能优化统计数据先存储在内存按配置间隔批量写入数据库减少频繁 I/O 操作对性能的影响四、影响分析1. 行业影响A. 技术趋势LLM 服务聚合成为刚需多模型混合调用成为趋势成本优化工具需求增长B. 竞争格局与其他 API 网关相比，Octopus 更专注于个人用户场景开源免费，降低了个人用户的接入门槛轻量级设计，适合个人部署2. 用户影响A. 现有用户简化了多 API Key 管理统一调用接口，降低集成复杂度实时成本统计，便于预算控制B. 潜在用户个人开发者：快速接入多个 LLM 服务小型团队：共享 API 配额，降低成本研究人员：灵活切换不同模型进行实验C. 迁移成本部署简单，支持 Docker 一键启动兼容 OpenAI SDK，无需修改现有代码配置文件自动生成，开箱即用3. 技术趋势A. 技术方向API 聚合服务标准化智能负载均衡算法优化多协议适配成为标配B. 生态影响促进 LLM 服务的互联互通降低模型切换成本推动价格透明化五、各方反应1. 项目特点开源免费，代码托管在 GitHub活跃的开发维护清晰的文档和使用指南2. 业内评价A. 技术亮点架构简洁，易于理解和扩展前后端分离，便于独立部署多数据库支持，适应不同场景B. 应用场景个人开发环境搭建小型团队 API 管理LLM 应用后端服务3. 用户反馈A. 正面评价部署简单，快速上手UI 界面美观易用功能完整，满足个人需求B. 改进建议增加更多 LLM 提供商支持优化负载均衡算法增强监控告警功能六、相关链接1. 项目地址GitHub 仓库：https://github.com/bestruirui/octopus2. 相关项目axonhub：LLM API 适配模块参考来源models.dev：AI 模型数据库3. 技术文档完整配置说明API 接口文档部署指南参考资料Octopus GitHub Repository
Rote 个人笔记库技术分析一、项目概述1. 项目简介Rote 是一款开源的个人笔记仓库项目，主打简约优雅的笔记体验和数据自主控制。项目采用前后端分离架构，支持 Self-Hosted 部署，提供开放 API 接口，让用户完全掌控自己的数据。2. 核心特点A. 设计理念保持克制：专注于优雅的笔记体验，避免功能冗余低心理负担：提供简单直观的记录和部署体验开放接口：提供 API，支持任意场景下的数据记录和获取B. 技术亮点前后端分离架构：可独立部署所需服务Self-Hosted 支持：Docker 一键部署Markdown 文章支持：独立文章可与笔记相互引用iOS 客户端：提供移动端优雅体验二、系统架构1. 整体架构graph TB subgraph 前端层 Web[Web 界面] iOS[iOS 客户端] end subgraph API 层 API[开放 API 接口] Auth[认证授权] end subgraph 数据层 Notes[笔记数据] Articles[Markdown 文章] Export[数据导出] end subgraph 部署层 Docker[Docker 容器] Dokploy[Dokploy 平台] end Web --> API iOS --> API API --> Auth API --> Notes API --> Articles Notes --> Export Articles --> Export Docker --> API Dokploy --> Docker2. 组件说明前端组件Web 界面：基于现代 Web 技术构建的用户界面iOS 客户端：原生 iOS 应用，提供移动端访问后端服务API 服务：提供 RESTful API 接口认证服务：支持 API Key 认证机制数据存储笔记数据：核心笔记内容存储Markdown 文章：独立的文章内容，可与笔记关联三、核心功能1. 笔记管理A. 基础功能创建、编辑、删除笔记笔记分类与标签管理Markdown 格式支持B. 高级功能笔记间相互引用独立文章与笔记关联全文搜索能力2. API 接口A. 开放性设计提供完整的 API 接口，支持：第三方应用集成自动化脚本调用跨平台数据同步B. 认证机制API Key 认证用户名密码认证Token 管理3. 数据控制A. 数据主权完全掌控自己的数据无供应商锁定风险自由导出数据B. 部署自由支持 Docker 部署支持 Dokploy 一键部署可选择部署位置四、部署方案1. Docker 部署A. 快速启动使用 Docker Hub 镜像一键部署：VITE_API_BASE=http://<your-ip-address>:18000 docker-compose up -dB. 环境变量配置VITE_API_BASE：后端 API 地址IMAGE_TAG：镜像版本标签2. Dokploy 部署（推荐）A. 部署步骤访问 Dokploy 管理界面选择 Rote 应用模板点击部署按钮配置自定义域名（可选）B. 域名配置若使用自定义域名，需设置环境变量：VITE_API_BASE=http://your-domain.com # 或使用 HTTPS VITE_API_BASE=https://your-domain.com3. 部署架构graph LR User[用户] -->|HTTPS| LB[负载均衡] LB --> Web[Web 服务] LB --> API[API 服务] API --> DB[(数据库)] Web --> API API --> Storage[文件存储]五、技术栈1. 前端技术根据项目展示，技术栈包括：现代前端框架响应式设计Markdown 渲染引擎2. 后端技术RESTful API 设计数据库持久化API Key 认证机制3. 部署技术Docker 容器化Docker Compose 编排Dokploy 平台集成六、功能特色1. 保持克制的交互设计A. 设计原则专注核心功能避免过度设计简洁直观的用户界面B. 用户体验低学习成本流畅的操作体验减少认知负担2. 开放的数据接口A. API 能力完整的 CRUD 操作数据查询与过滤批量操作支持B. 集成能力支持第三方工具集成支持自动化工作流支持跨平台同步3. 数据自由导出A. 导出格式Markdown 格式JSON 格式其他常用格式B. 迁移能力无供应商锁定支持数据备份支持平台迁移七、应用场景1. 个人知识管理A. 笔记记录日常学习笔记工作经验总结项目文档记录B. 知识沉淀构建个人知识库笔记间关联引用长期知识积累2. 团队协作A. 小型团队团队知识共享协作编辑版本管理B. 文档管理技术文档产品文档流程文档3. API 集成应用A. 自动化记录脚本自动记录定时任务记录监控数据记录B. 第三方集成浏览器插件编辑器插件移动应用八、项目优势1. 开源免费MIT 许可证完全开源社区驱动2. 数据自主Self-Hosted 部署数据完全掌控无隐私风险3. 架构灵活前后端分离模块化设计易于扩展4. 部署便捷Docker 一键部署Dokploy 模板支持配置简单九、潜在改进方向1. 功能扩展A. 协作功能多人实时编辑权限管理评论系统B. 搜索增强全文搜索优化智能推荐标签云2. 性能优化A. 缓存机制Redis 缓存CDN 加速数据库优化B. 并发处理负载均衡数据库主从读写分离3. 移动端增强A. 跨平台支持Android 客户端桌面客户端小程序版本B. 离线支持本地存储离线编辑自动同步十、总结Rote 是一款设计精良的个人笔记系统，其核心价值在于：保持克制的交互设计，专注于核心笔记体验开放的 API 接口，支持任意场景集成Self-Hosted 部署，用户完全掌控数据前后端分离架构，部署灵活可扩展对于注重数据隐私、需要自主部署笔记系统的用户，Rote 是一个值得考虑的选择。参考资料Rote GitHub 仓库
gpt-load 企业级多渠道大模型 API 管理平台技术分析
gpt-load 企业级多渠道大模型 API 管理平台技术分析一、平台概述1. 简介gpt-load 是一款基于 Go 语言开发的企业级多渠道大模型 API 管理平台，专为需要集成多种 AI 服务的企业和开发者设计。它作为透明代理服务，完整保留了各 AI 服务商的原生 API 格式，支持智能密钥管理、负载均衡、故障切换和水平扩展，内置 Web 管理界面，提供高效、稳定的多 AI 服务集成管理方案。2. 核心定位企业级 AI 服务聚合中间件，解决多 AI 服务商接入、密钥管理、负载均衡等痛点问题。3. 设计目标简化 AI 服务集成复杂度，提供统一接入层，降低企业使用多种大模型的技术门槛和运维成本。二、核心功能特性1. 透明代理完全保留 OpenAI、Google Gemini 和 Anthropic Claude 等原生 API 格式，无需修改客户端代码即可无缝迁移。支持官方 OpenAI API、Azure OpenAI 以及其他 OpenAI 兼容服务。支持 Gemini Pro、Gemini Pro Vision 等模型的原生 API。支持 Claude 系列模型，支持高质量的对话和文本生成。2. 智能密钥管理支持密钥分组管理、自动轮换和故障恢复，提升密钥可用性与安全性。提供高性能密钥池，确保在高并发场景下密钥的稳定使用。3. 负载均衡支持多上游端点加权负载均衡，优化请求分发，提高服务整体可用性。自动管理密钥黑名单及恢复机制，减少因密钥失效导致的请求失败。4. 动态配置与热重载系统设置和分组配置支持热重载，修改后无需重启即可生效，提升运维效率。分组配置优先级高于系统设置，满足不同场景下的定制化需求。5. 企业级架构支持分布式主从部署和水平扩展，满足高并发场景下的性能需求。提供全面的监控功能，包括实时统计、健康检查和详细请求日志，便于问题排查与系统优化。6. 现代化管理与安全基于 Vue 3 的 Web 管理界面，直观易用，提升管理效率。管理端与代理端认证分离，支持全局和分组级别代理密钥，强化权限管控。提供优雅关闭、错误恢复和完善的安全机制，确保服务稳定运行。三、系统架构1. 架构设计graph TB subgraph 客户端层 A1[OpenAI 客户端] A2[Gemini 客户端] A3[Claude 客户端] end subgraph gpt-load 代理层 B1[API 网关] B2[认证模块] B3[负载均衡器] B4[密钥管理器] B5[健康检查] B6[配置中心] B7[Web 管理界面] end subgraph 上游服务层 C1[OpenAI API] C2[Azure OpenAI] C3[Gemini API] C4[Claude API] C5[其他兼容服务] end subgraph 数据存储层 D1[(MySQL/PostgreSQL)] D2[(SQLite)] D3[Redis 可选] end A1 --> B1 A2 --> B1 A3 --> B1 B1 --> B2 B2 --> B3 B3 --> B4 B4 --> C1 B4 --> C2 B4 --> C3 B4 --> C4 B4 --> C5 B3 --> B5 B5 --> B4 B7 --> B6 B6 --> B4 B6 --> D1 B6 --> D2 B6 --> D32. 请求处理流程sequenceDiagram participant C as 客户端 participant G as gpt-load 网关 participant A as 认证模块 participant L as 负载均衡器 participant K as 密钥管理器 participant P as 上游 AI 服务 C->>G: 发起 API 请求 G->>A: 验证代理密钥 A-->>G: 认证通过 G->>L: 获取可用端点 L->>K: 请求密钥 K-->>L: 返回健康密钥 L->>P: 转发请求 P-->>L: 返回响应 L-->>G: 转发响应 G-->>C: 返回结果3. 密钥管理机制graph LR subgraph 密钥池 A[密钥组 1] B[密钥组 2] C[密钥组 3] end subgraph 密钥状态 D[活跃密钥] E[冷却密钥] F[黑名单密钥] end subgraph 密钥操作 G[自动轮换] H[故障恢复] I[健康检查] end A --> D B --> D C --> D D --> E E --> D D --> F F --> H H --> D I --> D G --> D四、部署与安装1. 环境准备确保服务器已安装 Docker 和 Docker Compose。准备数据库（MySQL、PostgreSQL 或 SQLite）和 Redis（可选，用于缓存和分布式协调）。2. 下载配置文件mkdir -p gpt-load && cd gpt-load wget https://raw.githubusercontent.com/tbphp/gpt-load/refs/heads/main/docker-compose.yml wget -O .env https://raw.githubusercontent.com/tbphp/gpt-load/refs/heads/main/.env.example3. 修改配置文件编辑 .env 文件，修改 AUTH_KEY 为强密码，确保安全性。根据需要配置数据库连接（DATABASE_DSN）和 Redis 连接（REDIS_DSN）。4. 启动服务docker compose up -d默认使用 SQLite 数据库，适合轻量单机应用。如需使用 MySQL 或 PostgreSQL，请在 docker-compose.yml 文件中取消对应服务的注释，并配置好环境变量。5. 访问管理界面打开浏览器，访问 http://localhost:3001。使用修改后的 AUTH_KEY 登录管理界面。6. 配置 API 代理在管理界面创建服务分组（如 openai、gemini），并添加对应 AI 服务的 API 密钥。客户端通过代理端点调用，替换原生 API 地址为 http://localhost:3001/proxy/{group_name}，使用代理密钥认证。五、技术优势分析1. 透明代理设计完全保留上游 API 格式，客户端无需任何代码修改即可切换到代理层，大幅降低迁移成本。2. 多厂商统一接入同时支持 OpenAI、Azure OpenAI、Google Gemini、Anthropic Claude 等主流 AI 服务，企业可根据成本、性能、合规性等因素灵活选择服务商。3. 智能密钥管理密钥分组、自动轮换、故障恢复等机制，有效应对 API 配额限制、密钥失效等问题，提升服务稳定性。4. 负载均衡与高可用支持加权负载均衡、故障自动切换，配合分布式部署能力，满足企业级高并发场景需求。5. 运维友好热重载配置、Web 管理界面、详细监控日志，降低运维复杂度，提升问题排查效率。6. 安全加固管理端与代理端认证分离、多级代理密钥、优雅关闭机制，全面保障服务安全。六、应用场景1. AI 应用开发商需要集成多种大模型能力，希望统一管理 API 调用、控制成本、保障服务稳定性的场景。2. 企业内部 AI 平台企业内部构建 AI 能力平台，需要统一接入多种 AI 服务，并通过密钥管理、负载均衡等机制保障服务稳定性。3. AI 服务代理商为多个客户提供 AI 服务接入，需要通过密钥分组、负载均衡等机制实现多租户隔离和服务保障。4. 研发团队研发团队在开发过程中需要频繁切换不同 AI 服务进行测试和对比，gpt-load 提供了便捷的统一接入层。七、技术栈1. 后端技术Go 语言：高性能、并发能力强，适合构建代理服务。2. 前端技术Vue 3：现代化 Web 管理界面，提供良好的用户体验。3. 数据存储MySQL/PostgreSQL：生产环境推荐使用的关系型数据库。SQLite：轻量级单机部署场景。Redis：可选，用于缓存和分布式协调。4. 容器化部署Docker、Docker Compose：简化部署流程，支持快速交付。Kubernetes：支持容器编排平台部署，满足大规模集群需求。八、项目资源1. 开源地址GitHub：https://github.com/tbphp/gpt-load用户可以在此获取源代码、参与贡献或报告问题。2. 官网地址官网：https://www.gpt-load.com/基于 Next.js 14 构建，提供项目展示与文档导航。官网为开源项目提供了专业的展示平台，包含项目简介、功能特性、架构图、性能指标等内容。3. 文档地址详细文档可在官网或 GitHub 仓库的 README.md 文件中查看。文档涵盖了平台的功能特性、快速开始指南、配置说明、部署指南等内容，为用户提供全面的使用指导。九、总结gpt-load 作为一款企业级多渠道大模型 API 管理平台，通过透明代理、智能密钥管理、负载均衡等核心特性，为企业集成多种 AI 服务提供了高效、稳定的解决方案。其基于 Go 语言的高性能架构、Vue 3 现代化管理界面、热重载配置等设计，充分体现了企业级产品的设计理念。对于需要统一管理多种 AI 服务的企业和开发者而言，gpt-load 是一个值得考虑的开源选择。参考资料gpt-load 企业级多渠道大模型 API 管理平台gpt-load GitHub 仓库gpt-load 官方网站
PushMe 消息通知平台技术分析项目概述PushMe 是一个开源的轻量级消息通知解决方案，由 Android 客户端、自建服务器端和多种接收端组成。该项目旨在为个人开发者和小型团队提供简单、可靠的消息推送能力，无需复杂的注册登录流程，通过 push_key 即可实现消息推送。核心特点：简单：无需登录注册，安装后获取 push_key 即可使用轻量：Android 原生开发，安装包不到 3M可靠：支持离线消息存储与转发兼容：接口兼容企业微信/钉钉/飞书群机器人可扩展：支持插件开发和消息转发系统架构graph TD subgraph "发送端" A1[API调用] A2[curl命令] A3[第三方服务] A4[群机器人兼容] end subgraph "PushMe服务器" B1[HTTP API 端口3010] B2[WebSocket服务] B3[消息队列] B4[push_key管理] end subgraph "接收端" C1[Android客户端] C2[Windows客户端] C3[Telegram机器人] end A1 -->|HTTP POST| B1 A2 -->|HTTP POST| B1 A3 -->|HTTP POST| B1 A4 -->|HTTP POST| B1 B1 --> B3 B3 --> B2 B2 -->|WebSocket| C2 B2 -->|原生推送| C1 B2 -->|Bot API| C3 C1 -->|确认回执| B4 C2 -->|确认回执| B4架构说明：发送端：支持多种消息来源API 调用：任何支持 HTTP 的编程语言curl 命令：命令行直接发送第三方服务： webhook 集成群机器人兼容：可直接替换企业微信/钉钉/飞书群机器人地址PushMe服务器：核心消息中继HTTP API（端口3010）：接收消息推送请求WebSocket服务：实时推送给桌面客户端消息队列：处理离线消息push_key管理：用户身份验证接收端：多终端消息同步Android客户端：原生推送接收Windows客户端：WebSocket 实时接收Telegram机器人：跨平台消息转发技术栈分析服务器端（PushMeServer）组件技术选型运行时Node.js >= 16进程管理PM2部署方式Docker / 源码安装通信协议HTTP + WebSocket消息格式JSON端口分配：3010：Web管理界面、消息发送 API、WebSocket 服务（管理员和 Windows 客户端）3100：消息服务端口（Android 客户端连接）Android 客户端特性说明系统要求Android 7+开发方式原生 Android 开发安装包大小< 3M后台保活支持多种 ROM 的后台保活设置后台保活策略：权限管理：允许自启动、后台运行电池管理：允许后台高耗电（实测耗电低）通知管理：允许消息通知Android 12+：需开启 alarm 闹钟权限部分手机：关闭后台网络优化消息类型支持type 参数类型说明text通知消息普通文本消息markdown通知消息Markdown 格式文本消息html通知消息HTML 格式消息data数据消息数据可视化（支持 data/markdata/chart/echarts 格式）核心功能分析1. push_key 认证机制push_key 是 PushMe 的核心认证机制，用户在 Android 客户端生成后，即可用于 API 调用。这种设计避免了传统账号体系的复杂性：获取流程：安装APP → 生成push_key → 复制使用 → 发送消息优势：无需注册登录密钥即身份支持多设备独立密钥2. 消息通道机制PushMe 支持自定义消息通道，用户可以为不同来源的消息设置：不同的通知声音不同的震动模式不同的通知样式应用场景：监控告警：使用紧急提醒消息通知：使用普通提示定时任务：使用静默通知3. 插件系统PushMe 支持插件开发，允许用户对收到的消息进行加工处理：// 插件开发示例（概念） function processMessage(message) { // 自定义处理逻辑 return modifiedMessage; }4. 消息转发支持将手机端收到的消息转发到电脑端：Android 客户端接收消息通过 WebSocket 转发到 Windows 客户端实现跨设备消息同步API 接口发送消息接口请求地址：POST https://push.i-i.me/请求参数：参数描述必填push_key接口密钥是title消息标题与 content 至少填一项content消息内容与 title 至少填一项type消息类型（text/markdown/html/data）否topic消息主题（info/success/warning/error）否示例请求：# 发送文本消息 curl -X POST "https://push.i-i.me/" \ -d "push_key=YOUR_PUSH_KEY" \ -d "title=测试标题" \ -d "content=测试内容" # 发送 Markdown 消息 curl -X POST "https://push.i-i.me/" \ -d "push_key=YOUR_PUSH_KEY" \ -d "title=Markdown测试" \ -d "content=# 标题\n**加粗**内容" \ -d "type=markdown"兼容性接口PushMe 接口兼容企业微信/钉钉/飞书群机器人，可直接替换 webhook 地址：# 原企业微信机器人 webhook = "https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=XXX" # 替换为 PushMe webhook = "https://push.i-i.me/?push_key=YOUR_PUSH_KEY"部署方案Docker 部署docker run -dit \ -p 3010:3010 \ -p 3100:3100 \ -v $PWD/pushme-server/config:/pushme-server/config \ --name pushme-server \ --restart unless-stopped \ node:16.20.2-alpine3.17源码部署# 环境要求：nodejs >= 16 npm i --registry=https://registry.npmmirror.com npm i pm2 -g --registry=https://registry.npmmirror.com pm2 start server.js --name pushme-server pm2 save pm2 startup应用场景1. 服务监控告警# 服务器监控脚本 curl -X POST "https://push.i-i.me/" \ -d "push_key=YOUR_KEY" \ -d "title=服务器告警" \ -d "content=CPU使用率超过90%" \ -d "topic=error"2. 自动化脚本通知# Python 脚本集成 import requests def send_notification(title, content): requests.post("https://push.i-i.me/", data={ "push_key": "YOUR_KEY", "title": title, "content": content })3. CI/CD 流程通知# Jenkins Pipeline stage('Notification') { steps { sh """ curl -X POST "https://push.i-i.me/" \ -d "push_key=\${PUSH_KEY}" \ -d "title=构建通知" \ -d "content=项目 \${JOB_NAME} 构建完成" """ } }技术优势与局限优势零门槛使用：无需注册登录，获取 push_key 即可轻量高效：安装包小，资源占用低自建可控：支持私有部署，数据安全可控多端同步：Android + Windows + Telegram 全覆盖扩展性强：支持插件和自定义通道局限后台保活依赖 ROM：部分国产 ROM 后台管理严格无官方 iOS 客户端：仅支持 Android消息历史有限：离线消息存储容量有限自建需技术能力：私有部署需要 Node.js 环境与同类方案对比方案部署复杂度终端支持消息可靠性自定义能力PushMe低Android/Windows中高Server酱低微信中低Bark低iOS高中Gotify中全平台高高企业微信机器人低全平台高中总结PushMe 是一个设计精良的个人消息推送解决方案，通过简单的 push_key 机制实现了零门槛的消息推送能力。其模块化的架构设计（Android 客户端 + Node.js 服务器 + Windows 客户端）使得用户可以根据需求灵活选择部署方式。对于个人开发者和小型团队而言，PushMe 提供了一个开箱即用的消息通知平台，特别适合：服务器监控告警自动化脚本通知CI/CD 流程集成个人消息聚合项目的开源特性（MIT 许可）和完善的文档支持使其成为一个值得推荐的技术选择。参考资源GitHub 项目: yafoo/pushme服务器端: yafoo/pushme-server官方网站: push.i-i.me接口文档: push.i-i.me/docs/index
Telethon Python MTProto Telegram 客户端库技术分析
Telethon Python MTProto Telegram 客户端库技术分析一、概述1. 简介A. 是什么Telethon 是一个基于 asyncio 的纯 Python 3 MTProto 库，用于与 Telegram API 进行交互。它支持用户账户和机器人账户两种模式，是 Bot API 的替代方案。B. 为什么值得研究纯 Python 实现，无需依赖 C 扩展库完整实现 MTProto 协议，直接访问 Telegram API支持 asyncio 异步编程模型，性能优异活跃的社区维护，11.2k+ GitHub Stars被超过 69,900 个项目使用C. 学完能做什么开发 Telegram 机器人和用户自动化工具实现 Telegram 消息收发、文件传输功能构建自定义的 Telegram 客户端应用理解 MTProto 协议的工作原理2. 前置知识A. 必备技能Python 3 基础编程能力异步编程概念（async/await）Telegram 基本使用经验B. 推荐知识asyncio 库的使用MTProto 协议基础API 开发经验二、环境准备1. 系统要求Python 3.6 或更高版本asyncio 支持（Python 3.7+ 内置）网络连接2. 安装步骤基础安装pip3 install telethon完整安装（包含加密库依赖）pip3 install telethon[cryptg]3. 获取 API 凭证在使用 Telethon 之前，必须从 Telegram 获取 API 凭证：访问 https://my.telegram.org登录你的 Telegram 账户进入 API Development 部分获取：api_id：数字标识符api_hash：密钥字符串4. 验证安装from telethon import TelegramClient print(Telethon.__version__)三、核心概念1. 基本术语MTProtoMTProto 是 Telegram 开发的专有网络协议，用于客户端与服务器之间的通信。它提供了：高效的数据传输端到端加密数据完整性验证Session（会话）Session 是客户端与 Telegram 服务器之间的持久化连接状态，包含：认证信息服务器配置缓存数据Events（事件）Telethon 使用事件驱动模型处理消息和通知：NewMessage：新消息事件CallbackQuery：回调查询Raw：原始事件2. 工作原理graph TB A[Python 应用] -->|API 调用| B[Telethon 客户端] B -->|MTProto 协议| C[Telegram 服务器] C -->|响应| B B -->|异步事件| D[事件处理器] D -->|回调| A B -->|持久化| E[Session 文件]3. 架构设计Telethon 采用分层架构：graph LR A[应用层] -->|API| B[Telethon Client] B -->|请求| C[TL 层] C -->|序列化| D[MTProto 层] D -->|网络| E[Transport 层] E -->|TCP| F[TG Server]组件说明：应用层：用户代码，调用 Telethon APITelethon Client：提供高级 API 接口TL 层：Type Language，定义 API 数据结构MTProto 层：协议实现，处理加密和传输Transport 层：网络传输抽象四、快速上手1. Hello World 示例创建客户端from telethon import TelegramClient # 使用从 my.telegram.org 获取的凭据 api_id = 12345 api_hash = '0123456789abcdef0123456789abcdef' # 创建客户端，session_name 会保存登录状态 client = TelegramClient('session_name', api_id, api_hash) # 启动客户端（首次运行会要求输入手机号和验证码） client.start()基本操作# 获取当前账户信息 print(client.get_me().stringify()) # 发送消息 client.send_message('username', 'Hello! Talking to you from Telethon') # 发送文件 client.send_file('username', '/path/to/file.jpg') # 下载个人资料照片 client.download_profile_photo('me') # 获取消息历史 messages = client.get_messages('username') messages[0].download_media()2. 事件处理消息监听器from telethon import events @client.on(events.NewMessage(pattern='(?i)hi|hello')) async def handler(event): await event.respond('Hey!')多种事件类型# 新消息 @client.on(events.NewMessage) async def new_message_handler(event): print(event.message.text) # 被提及 @client.on(events.NewMessage(incoming=True, forwards=False)) async def mention_handler(event): if event.message.mentioned: await event.reply('你提到我了！') # 私聊消息 @client.on(events.NewMessage(chats='username')) async def private_handler(event): print(f'私聊消息：{event.message.text}')3. 代码讲解异步编程模型Telethon 全面采用 asyncio，所有 I/O 操作都是异步的：async def main(): # 异步获取对话列表 dialogs = await client.get_dialogs() async for dialog in dialogs: print(dialog.name) # 运行异步函数 client.loop.run_until_complete(main())Session 管理Session 文件保存了登录状态，避免每次都输入验证码：默认位置：当前目录下的 .session 文件可自定义路径：TelegramClient('/path/to/session', ...)包含加密的认证密钥五、核心功能1. 消息操作发送消息# 文本消息 await client.send_message('username', 'Hello') # 格式化消息 await client.send_message('username', '**粗体** 和 _斜体_', parse_mode='markdown') # 发送多个实体 await client.send_message('username', '消息1') await client.send_message('username', '消息2')获取消息# 获取最新消息 messages = await client.get_messages('username', limit=10) # 通过 ID 获取 message = await client.get_messages('username', ids=12345) # 搜索消息 messages = await client.get_messages('username', search='关键词')编辑和删除# 编辑消息 await client.edit_message('username', message_id, '新内容') # 删除消息 await client.delete_messages('username', message_ids, revoke=True)2. 文件处理上传文件# 发送图片 await client.send_file('username', 'photo.jpg') # 发送文档 await client.send_file('username', 'document.pdf') # 发送多个文件 await client.send_file('username', ['file1.jpg', 'file2.jpg']) # 带进度上传 def progress(current, total): print(f'{current / total * 100:.1f}%') await client.send_file('username', 'large_file.mp4', progress_callback=progress)下载文件# 下载媒体文件 await message.download_media('/path/to/save/') # 下载个人资料照片 await client.download_profile_photo('username', 'photo.jpg') # 下载聊天媒体 async for message in client.iter_messages('username'): if message.media: await message.download_media()3. 聊天管理获取对话列表# 获取所有对话 dialogs = await client.get_dialogs() # 遍历对话 async for dialog in client.iter_dialogs(): print(f'{dialog.name}: {dialog.id}')群组操作# 创建群组 from telethon.tl.functions.messages import CreateChatRequest result = await client(CreateChatRequest(users=['user1', 'user2'], title='新群组')) # 邀请成员 await client(InviteToChannelRequest(channel=group, users=['username'])) # 获取成员 members = await client.get_participants(group)4. 用户和频道获取用户信息# 获取完整用户信息 user = await client.get_entity('username') # 获取多个用户 users = await client.get_entity(['user1', 'user2', 'user3'])频道操作# 加入频道 await client(JoinChannelRequest(channel)) # 离开频道 await client(LeaveChannelRequest(channel)) # 获取频道消息 messages = await client.get_messages(channel, limit=100)六、高级功能1. Bot API 替代Telethon 可以作为 Bot API 的替代方案，提供更强大的功能：# 创建 Bot 客户端 bot = TelegramClient('bot_session', api_id, api_hash).start(bot_token='你的bot_token') # 处理命令 @bot.on(events.NewMessage(pattern='/start')) async def start(event): await event.reply('欢迎！') # 处理回调查询 @bot.on(events.CallbackQuery) async def callback(event): await event.answer('你点击了按钮！')相比 Bot API 的优势直接访问 Telegram API，功能更完整支持 Bot API 不提供的功能更低的延迟可以使用用户账户模式2. 自定义过滤器from telethon.tl.custom import Message def my_filter(event): message = event.message return message.out and '关键字' in message.text @client.on(events.NewMessage(func=my_filter)) async def custom_handler(event): print('匹配的消息：', event.message.text)3. 并发处理import asyncio async def process_chat(chat): async for message in client.iter_messages(chat): # 处理消息 pass async def main(): chats = ['chat1', 'chat2', 'chat3'] tasks = [process_chat(chat) for chat in chats] await asyncio.gather(*tasks) client.loop.run_until_complete(main())七、最佳实践1. 错误处理from telethon.errors import SessionPasswordNeededError from telethon.tl.types import InputPeerUser try: await client.send_message('username', 'Hello') except SessionPasswordNeededError: print('需要两步验证密码') await client.sign_in(password='你的密码') except Exception as e: print(f'错误：{e}')2. 性能优化使用连接池# 配置连接池 client = TelegramClient( 'session', api_id, api_hash, connection_retries=5, retry_delay=1, timeout=10 )批量操作# 批量获取信息 from telethon.tl.functions.messages import GetHistoryRequest result = await client(GetHistoryRequest( peer='username', limit=100, offset_date=None, offset_id=0, max_id=0, min_id=0, add_offset=0, hash=0 ))3. 安全建议保护 API 凭证# 不要硬编码凭据 import os from dotenv import load_dotenv load_dotenv() api_id = int(os.getenv('TELEGRAM_API_ID')) api_hash = os.getenv('TELEGRAM_API_HASH')Session 文件安全Session 文件包含认证密钥，需要妥善保管不要将 Session 文件提交到版本控制生产环境使用加密存储4. 遵守 Telegram ToS使用 Telethon 时必须遵守 Telegram 服务条款：不要发送垃圾消息不要频繁调用 API不要尝试破解或滥用 Telegram 服务违规可能导致账户被封禁八、实战案例1. 自动回复机器人from telethon import TelegramClient, events client = TelegramClient('bot_session', api_id, api_hash).start(bot_token='你的token') @client.on(events.NewMessage(pattern='/help')) async def help_handler(event): help_text = ''' 可用命令： /start - 开始使用 /help - 显示帮助 /info - 获取信息 ''' await event.reply(help_text) @client.on(events.NewMessage(pattern='/info')) async def info_handler(event): sender = await event.get_sender() await event.reply(f'你的 ID：{sender.id}') print('Bot 运行中...') client.run_until_disconnected()2. 消息转发器from telethon import TelegramClient, events client = TelegramClient('forwarder_session', api_id, api_hash) SOURCE_CHAT = 'source_chat' TARGET_CHAT = 'target_chat' @client.on(events.NewMessage(chats=SOURCE_CHAT)) async def forward_handler(event): # 转发消息 await client.forward_messages(TARGET_CHAT, event.message) print('转发器运行中...') client.start() client.run_until_disconnected()3. 文件备份工具from telethon import TelegramClient import asyncio client = TelegramClient('backup_session', api_id, api_hash) async def backup_chat(chat_username): """备份聊天中的所有媒体文件""" os.makedirs(f'backup/{chat_username}', exist_ok=True) async for message in client.iter_messages(chat_username): if message.media: file_path = await message.download_media(f'backup/{chat_username}/') print(f'已下载：{file_path}') async def main(): chats = ['chat1', 'chat2', 'chat3'] for chat in chats: await backup_chat(chat) client.start() client.loop.run_until_complete(main())4. 消息分析工具from telethon import TelegramClient from collections import Counter import datetime client = TelegramClient('analysis_session', api_id, api_hash) async def analyze_chat(chat_username): """分析聊天统计""" messages = await client.get_messages(chat_username, limit=1000) # 消息统计 total = len(messages) text_only = sum(1 for m in messages if m.text and not m.media) media_only = sum(1 for m in messages if m.media) # 最活跃用户 senders = Counter() for m in messages: if m.sender: senders[m.sender.first_name or m.sender.username] += 1 print(f''' 聊天分析：{chat_username} 总消息数：{total} 纯文本：{text_only} 媒体文件：{media_only} 最活跃用户：{senders.most_common(5)} ''') client.start() client.loop.run_until_complete(analyze_chat('目标用户名'))九、故障排查1. 常见问题认证失败# 问题：FloodWaitError # 原因：请求过于频繁 # 解决：等待指定时间后重试 from telethon.errors import FloodWaitError try: await client.send_message('username', 'Hello') except FloodWaitError as e: print(f'需要等待 {e.seconds} 秒') await asyncio.sleep(e.seconds)连接超时# 配置超时和重试 client = TelegramClient( 'session', api_id, api_hash, timeout=30, connection_retries=5 )Session 损坏# 删除损坏的 session 文件重新登录 import os if os.path.exists('session_name.session'): os.remove('session_name.session')2. 调试技巧启用日志import logging logging.basicConfig(level=logging.DEBUG) # 或者只显示 Telethon 日志 logging.getLogger('telethon').setLevel(logging.DEBUG)测试连接# 测试 API 连接 async def test_connection(): me = await client.get_me() print(f'连接成功，用户：{me.first_name}') client.loop.run_until_complete(test_connection())十、扩展生态1. 相关项目Telethon 生态系统telethon_generator：TL 定义生成器telethon_examples：官方示例集合docs.telethon.dev：完整文档替代方案Pyrogram：另一个 MTProto Python 库python-telegram-bot：Bot API 封装2. 版本迁移从 1.0 之前版本迁移Telethon 1.0 版本进行了重大更新，迁移时需要注意：大量 API 变更异步模型调整事件系统重构参考官方文档的"Compatibility and Convenience"章节。十一、项目数据1. GitHub 统计Stars：11,2kForks：1.5kContributors：184Used by：69,900+ 项目语言：Python 97.5%2. 开发状态最新版本：v1.x许可证：MIT License文档：docs.telethon.dev活跃维护：持续更新参考资料Telethon GitHub 仓库Telethon 官方文档Telegram API 开发者平台MTProto 协议文档