Huginn 项目介绍
Huginn 项目介绍
项目定位
Huginn 是一个自托管的事件驱动 Agent 自动化系统——它让你在自己的服务器上运行”个人 IFTTT”,通过有向图编排数十种 Agent,实现网络监控、数据抓取、事件告警和跨平台自动化。
核心能力
- 网站监控与数据抓取: 基于 XPath/CSS Selector/JSONPath 的网页、API、Feed 结构化提取,支持变更检测与合并模式
- 事件驱动自动化: Agent 通过 Event/Link 构成有向图,事件沿图自动传播,下游 Agent 实时响应
- 75+ 内置 Agent 类型: 覆盖 Web、RSS、Twitter、Email、Slack、Telegram、Twilio、Dropbox、S3、Weather、OpenAI 等
- 动态控制编排: CommanderAgent/SchedulerAgent 支持运行时动态启用、禁用、配置和调度 Agent
- 自定义逻辑: JavaScriptAgent 支持运行自定义 JS 代码;Liquid 模板引擎提供强大的数据转换能力
- 外部事件注入: Webhook 端点让外部系统可以向 Agent 网络发送事件
- 异常检测: PeakDetectorAgent 基于滑动窗口统计分析自动检测事件流中的峰值
技术栈
| 维度 | 技术选型 |
|---|---|
| 语言 | Ruby >= 3.4.0 |
| Web 框架 | Ruby on Rails 8.1.3 |
| 模板引擎 | ERB + Liquid(Agent 配置与数据转换) |
| 前端 | jQuery + Bootstrap + Ace Editor |
| 数据库 | MySQL(默认)/ PostgreSQL |
| 后台任务 | ActiveJob + Delayed Job(可选 Resque) |
| 定时调度 | Rufus Scheduler |
| 长连接 | EM-HTTP-Request(Twitter Stream 等) |
| 构建部署 | Docker / Heroku / Capistrano |
架构概览
核心数据流:
- 调度触发 (
check) — Scheduler 按 Cron 周期调用 Agent 的check方法,主动获取数据 - 事件创建 (
create_event) — Agent 将获取到的数据封装为 Event 存入数据库 - 事件传播 (
receive!) — 传播器扫描新 Event,沿 Link 推送到下游 Agent - 事件处理 (
receive) — 下游 Agent 的receive方法处理接收到的 Event,可再次创建新 Event
快速体验
最简方式 — Docker:
docker run -it -p 3000:3000 --name huginn huginn/huginn访问 http://localhost:3000,使用 admin / password 登录。
教程导读
本教程分为 AI 应用 与 编程核心 两个部分:
AI 应用教程(/tutorials/huginn/ai/)
从 Huginn 的源码中抽象出 AI Agent 设计的通用知识,包括事件驱动架构、插件系统、模板引擎集成、调度与反应式触发、内存与状态管理、控制流编排、Dry Run 验证、Webhook 注入、异常检测等。本章将引用以下 common 通用知识教程:
编程核心教程(/tutorials/huginn/dev/)
聚焦 Huginn 的 Ruby on Rails 工程实践,包括 Rails 架构设计、异步任务队列、长运行进程管理、多数据库适配、测试策略、Docker 部署、配置管理与多租户系统。