Huginn
在自有服务器上构建监测网络、处理事件并自动采取行动的代理。
- Star 数
- ★ 50k
- 最近更新
- 今天
- License
- MIT
- 主语言
- Ruby
- FA 评分
- 61/100 · 存在缺口
30 秒速览
- 运行形态
- 可在哪里用
- 通用 · 跨平台
- 费用
- 免费,无需付费服务
- 上手难度
- 高 · 需要较重的基础设施
- 开始前需要
- 典型场景
- 自行运维服务器的个人用户,希望监测天气预报,并在次日可能下雨或下雪时收到邮件提醒。
- 不适合
- 希望零运维、开箱即用的团队,需自行部署并维护数据库
- 不愿管理服务器、密钥与升级的个人用户
- 需要完全离线运行的团队,部分 Agent 依赖外部服务与 API 密钥
这个 Agent 能做什么,适合哪些场景?
Huginn 是一个自托管的在线任务自动化系统,定位类似可改造的 IFTTT 或 Zapier。系统中的 Agents 产生和消费事件,并沿有向图传播数据,从而把监测、条件处理和后续动作连接成工作流。它可以读取网页、RSS 和消息服务,接收 WebHooks,运行自定义 JavaScript,并通过邮件、短信或第三方服务输出通知和动作。核心 Agents 还可由通过 ADDITIONAL_GEMS 配置的外部 Huginn Agent gems 扩展。项目提供官方 Docker 镜像,也支持配合 MySQL 或 PostgreSQL 的本地安装;数据和执行环境由部署者掌控。
用户配置多个 Agents,并将其连接为有向事件图:上游 Agent 从网页、RSS、Twitter、IMAP、MQTT、位置数据或 WebHooks 等来源读取或接收信息并创建事件,下游 Agent 消费事件、执行筛选或自定义 JavaScript,再触发邮件摘要、短信、WebHooks 或第三方服务动作。已列出的连接对象包括 HipChat、FTP、IMAP、Jabber、JIRA、MQTT、nextbus、Pushbullet、Pushover、RSS、Bash、Slack、StubHub、翻译 API、Twilio、Twitter 和 Weibo。它能抓取网页并在内容变化时发邮件、统计高频事件并在峰值出现时发送短信,也能编排使用 HumanTaskAgent 的 Amazon Mechanical Turk 流程。特定或复杂功能可以封装为外部 Huginn Agent Gem,并通过 ADDITIONAL_GEMS 加入安装。
- 自行运维服务器的个人用户,希望监测天气预报,并在次日可能下雨或下雪时收到邮件提醒。
- 品牌或项目维护者需要跟踪 Twitter 上的项目名称,并在有人提及时获得更新。
- 研究者或分析人员希望统计 Twitter 中某个词的讨论频率,并在讨论量突然升高时收到通知。
- 采购者或旅行者希望持续监测购物、机票或其他出行优惠,而不必反复手动检查。
- 网站运营人员需要抓取页面,并在页面内容发生变化时通过邮件获知。
- 团队需要把 RSS、WebHooks、Slack、Twilio、邮件等来源和动作连接成自行托管的事件工作流。
如何安装或部署这个 Agent?
最快的试用方式是使用官方 Docker 镜像,具体安装过程由项目的 doc/docker/install.md 提供。本地安装时,先 fork 仓库,然后运行 git remote add upstream https://github.com/huginn/huginn.git。执行 cp .env.example .env,编辑 .env,至少更改 APP_SECRET_TOKEN;同时准备 MySQL 或 PostgreSQL,使用 PostgreSQL 时在后续命令前加 DATABASE_ADAPTER=postgresql。依次运行 bundle、bundle exec rake db:create、bundle exec rake db:migrate 和 bundle exec rake db:seed。最后执行 bundle exec foreman start,访问 http://localhost:3000/,首次可使用用户名 admin、密码 password 登录。生产部署可采用 Docker、项目列出的 Heroku 或 OpenShift 路径,或遵循手动服务器安装文档;Heroku 只能在付费订阅计划上启动 Huginn。
如何使用这个 Agent?
完成初始化并运行 bundle exec foreman start 后,打开 http://localhost:3000/,以 admin / password 登录并创建 Agents。为每个 Agent 配置数据来源、事件处理条件或输出动作,再把产生事件的 Agent 与消费事件的 Agent 连接成有向工作流。需要天气数据时,应申请 Pirate Weather 的 Weather Data API key,并在预置 WeatherAgent 中把 api_key: your-key 替换为实际密钥。开发环境默认拦截邮件,可在 http://localhost:3000/letter_opener 查看;若要通过 SMTP 真正发送邮件,在 .env 中设置 SEND_EMAIL_IN_DEVELOPMENT=true。如需安装外部 Agent gems,使用 .env.example 所述的 ADDITIONAL_GEMS 环境变量。
这个 Agent 有哪些优点和局限?
- 工作流由产生和消费事件的 Agents 组成有向图,可把多个监测、转换和动作步骤组合起来。
- 支持自托管,部署者能够控制数据所在的服务器,而不是必须交给单一自动化 SaaS。
- 输入和输出范围广,明确覆盖网页抓取、RSS、WebHooks、邮件、短信、Slack、Twilio、MQTT 等服务。
- 既能运行自定义 JavaScript,也能通过 Huginn Agent gems 扩展复杂或专用 Agent。
- 提供官方 Docker 镜像,并支持 MySQL 或 PostgreSQL 两种数据库路径。
- 采用方需要自行部署、保护、升级和维护应用及 MySQL 或 PostgreSQL 数据库。
- 部分 Agent 依赖外部服务和凭据,例如 WeatherAgent 需要 Pirate Weather API key,相关服务也可能有各自的可用性或费用约束。
- 本地初始化包含环境文件、密钥、数据库迁移和进程启动等多个步骤,不是免运维的托管服务。
- 示例开发数据库提供
admin/password登录信息,部署者必须妥善处理默认凭据和生产安全配置。 - Heroku 部署不能使用免费计划;说明要求付费订阅,并建议非实验用途采用 1GB 付费计划或 Docker。
这个 Agent 与同类方案有什么区别?
项目将 Huginn 描述为可在自有服务器上运行、可改造的 IFTTT 或 Zapier。核心差异是 Huginn 让部署者掌控数据和运行环境,并允许通过自定义 JavaScript及外部 Agent gems 扩展;相应代价是部署者需要承担数据库、应用进程、升级和安全维护。
与相关度最高的同类 agent 并排比较关键指标。
| Agent | 源码审查 | 形态 / 费用 | Star | 最近更新 | 主语言 | 完整支持的平台 |
|---|---|---|---|---|---|---|
| Huginn 当前 | 61 · 存在缺口 | 自托管服务免费 | ★ 50k | 今天 | Ruby | — |
| Sim AI 工作区 | 71 · 存在缺口 | 命令行工具免费版 + 付费版 | ★ 30k | 1 天前 | TypeScript | OpenAI API · Claude API |
| ODS 私有 AI 服务器 | 71 · 存在缺口 | 命令行工具免费 | ★ 7.6k | 今天 | Python | OpenAI API · Claude API |
| Auto Company 自主 AI 公司 | 70 · 存在缺口 | 命令行工具免费 + 模型费 | ★ 3.1k | 1 天前 | Python | Codex · Claude Code |
FollowAgents 如何评估这个 Agent?
查看各维度的扣分理由
README 清楚说明事件沿有向图流动、系统可自托管,并列出邮件、Webhook、Bash、JavaScript、第三方 API 等外部作用;开发环境默认拦截邮件也是有用的安全防护。CI 使用显式最小权限,SSL、APP_SECRET_TOKEN 和 API 密钥也有提示。但没有证据表明代理执行前会逐次征求确认、按代理实施细粒度权限或提供统一撤销机制;敏感数据的存储、日志、加密和清除规则未说明,广泛连接器及任意脚本能力也缺少配套隔离说明。依赖更新有 Renovate 专用工作流,但未展示漏洞扫描或风险处置,且数据库服务使用 latest 标签。MIT 文件和原始作者归属明确,但当前发布者身份与治理主体没有得到完整确认。
README、安装步骤、测试说明和 CI 在 Rails、两种数据库及 Docker 路径上基本一致;CI 覆盖 MySQL/PostgreSQL、原生 JSON 开关和多架构镜像构建,依赖获取也有 Bundler、npm 和容器路径支持。扣分在于静态材料没有展示运行时重试、队列恢复、连接器降级或系统化故障诊断;失败消息仅能从少量 CI 的文件缺失检查和健康检查间接看出,面向用户的错误说明不足。
材料为普通用户、部署者和代理开发者提供了大量具体场景,包括监控、抓取、通知、Webhook、脚本及人工工作流;支持 Docker、本地安装、Heroku、OpenShift、手动服务器、MySQL/PostgreSQL 和外部 Agent gems,环境适配证据充分。能力边界通过“事件生产/消费、有向图、在线自动化”得到基本界定,但 Bash、自定义 JavaScript 和第三方连接器的安全或资源边界不明确;触发器虽提到定时、峰值、网页变化和 Webhook,却没有给出足够的匹配精度、去重或误触发控制细节。
README 结构清楚,覆盖概念、示例、安装、开发、扩展、部署和许可;本地安装步骤具体,示例、截图、视频及 wiki 路径丰富,因此安装说明和示例项得分较高。Huginn、Agent 和事件图等核心命名较稳定,但外部服务示例可能随时间变化。已说明 Heroku 付费要求、开发邮件拦截和 SSL 关闭注意事项,却没有集中列出已知限制。MIT 许可正文完整。版本发布策略、正式 changelog 和兼容性承诺证据很薄;维护入口和贡献流程存在,但当前维护责任主体及明确更新支持政策不完整。
事件图、自托管控制和大量现成自动化场景显示出明显的组合价值,能够把监控结果转成邮件、短信、Webhook 或其他动作;截图和示例使预期输出较易理解。扣分在于没有提供结构化输出契约、运维结果质量指标或实际成效数据。自托管与扩展性带来较高边际价值,但需要数据库、Ruby/Node 依赖、部署维护和第三方凭据,Heroku 还需要付费方案,因此成本收益并非无条件优秀。
主要能力、安装要求、测试命令和部署矩阵都能追溯到提供的 README、工作流及配置文件;README 的双数据库和 Docker 测试说法也被 CI 与 develop.yml 部分交叉印证。扣分在于未提供代理实现代码、测试结果、发行记录或安全审计材料,许多连接器能力只能依赖 README 陈述。“你始终知道谁拥有你的数据”等宣传性结论没有在材料中被充分限定;不过大多数事实陈述与建议性措辞仍能区分。
- 源码中未见:执行前用户确认开启或自行加上执行前确认;先在沙箱或测试环境跑通,确认行为后再接入真实数据。
- 源码中未见:回滚或恢复路径运行前先备份,或在 git 分支、快照上操作,确保改动可以撤销。
- 代理可执行 Bash 和自定义 JavaScript,并能发送邮件、短信、Webhook 或调用第三方服务;启用前应逐个审查权限、凭据范围和触发条件。
- 不要在生产环境保留示例中的 admin/password、数据库 password 或占位 API 密钥;应轮换密钥、限制网络访问并核实日志是否包含事件载荷或凭据。
- 数据库测试和容器配置使用 latest 镜像标签,且材料未展示依赖漏洞扫描;部署时应固定镜像摘要或版本并建立漏洞更新流程。
- 资料未证明外部动作具有确认、幂等、撤销或恢复机制;对发信、发帖、脚本及写入型 Webhook 应先在隔离环境测试并设置速率限制。
最近版本
来自该项目 GitHub Releases 的最新发布记录,说明为上游原文摘录,未经本站改写或测试。
-
发布说明摘录
v2026.10.14 Changes - Show maps of location Events with OpenStreetMap and Leaflet when UserLocationAgent has no Google Maps api_key, instead of showing no map. [#3791](https://github.com/huginn/huginn/pull/3791) - Upgrade the PostgreSQL Docker Compose example from PostgreSQL 9.5 to 18. [#3789](https://github.com/huginn/huginn/pull/3789) - Move the Heroku setup to the heroku-24 stack and Heroku's native multi-buildpack support. [#3788](https://github.com/huginn/huginn/pull/3788) …在 GitHub 查看 ↗ -
发布说明摘录
v2026.10.04 Changes - Upgrade to json 3.0.2, which rejects duplicate object keys and JavaScript-style comments by default. - Deduplicate automatic Agent checks from schedules and controller Agents while a check is queued, running, or awaiting retry. [#3767](https://github.com/huginn/huginn/pull/3767) - Move navigation labels to translation keys while preserving the English text. [#3763](https://github.com/huginn/huginn/pull/3763) …在 GitHub 查看 ↗ -
发布说明摘录
v2026.09.22 JSONPath safety and compatibility - Restrict legacy JSONPath method calls to an allowlist for JSON value types. The guard also covers filters, computed indexes, and direct uses of the jsonpath gem. See [GHSA-9x7r-mpvj-vj8v](https://github.com/huginn/huginn/security/advisories/GHSA-9x7r-mpvj-vj8v). - Use RFC 9535 JSONPath evaluation by default. Agents requiring legacy behavior can use use_legacy_jsonpath: true; legacy evaluation remains subject to the method allowlist. - Normalize examples and defaults to JSONPath expressions with an explicit $ root. Upgrading …在 GitHub 查看 ↗
常见问题
Huginn 必须使用付费云服务吗?
它会把数据交给某个固定的 AI 或自动化平台吗?
运行前需要哪些凭据?
.env 中更改 APP_SECRET_TOKEN。具体 Agents 可能还需要服务凭据,例如 WeatherAgent 需要 Pirate Weather API key;SMTP 和其他第三方集成也需要相应配置。开发环境为什么没有真正发出邮件?
/letter_opener 查看。若确实需要通过 SMTP 发送,应在 .env 中设置 SEND_EMAIL_IN_DEVELOPMENT=true。可以添加仓库核心之外的 Agent 吗?
ADDITIONAL_GEMS 环境变量加入现有安装。