Jido Elixir 智能体框架

面向 Elixir/OTP 的有状态工作流与协作进程框架。

Star 数
★ 1.9k
最近更新
2 天前
License
Apache-2.0
主语言
Elixir

30 秒速览

可在哪里用
通用 · 跨平台
开始前需要
Elixir 1.17+Erlang/OTP 26+Shell / 命令行
典型场景
Elixir 后端团队需要把多个长期运行、可监督的业务进程组织为协作工作流时。
主要局限
采用需要 Elixir 1.17+ 和 Erlang/OTP 26+,对非 BEAM 技术栈团队存在运行时与迁移成本。

这个 Agent 能做什么,适合哪些场景?

Jido 是一个用于构建工作流和多主体系统的 Elixir 自主智能体框架。它将智能体定义为带状态、实现 cmd/2 的不可变结构;Action 执行工作并转换状态,Signal 将事件路由进系统,Directive 描述由运行时处理的外部效果。生产运行使用基于 GenServer 的 AgentServer,并提供监督、父子智能体生命周期、信号路由、实例分区和多租户边界。框架还提供 Direct 与 FSM 执行策略、可组合插件、计划式编排和 Pod 形式的持久智能体组。AI 不是核心运行条件,模型集成由 jido_ai 等生态包按需提供。

开发者用 use Jido.Agent 定义名称、描述、schema 和 signal_routes,再用 use Jido.Action 定义带参数 schema 的 run/2。调用 MyAgent.cmd(agent, {ActionModule, params}) 会执行 Action,返回更新后的 agent 与 directives;StateOp 由策略层处理状态更新,而 Emit、SpawnAgent、Schedule、Stop 等 Directive 由 AgentServer 运行时解释。运行中的 AgentServer 可通过 Jido.AgentServer.call(pid, Jido.Signal.new!("increment", %{amount: 10}, source: "/user")) 接收 Signal;实例模块可用 start_agent、whereis 和 list_agents 管理进程。

  1. Elixir 后端团队需要把多个长期运行、可监督的业务进程组织为协作工作流时。
  2. 需要将 CloudEvents 风格消息路由到有明确状态和命令边界的服务时。
  3. 构建需要父子进程生命周期管理、延迟调度或运行时发射事件的 BEAM 应用时。
  4. 希望以 FSM 策略实现状态驱动流程,而非在 GenServer 回调中混合业务逻辑时。
  5. 需要在共享实例中通过 logical partitions 或 Pod 管理多租户工作空间时。

如何安装或部署这个 Agent?

运行:

mix igniter.install jido

这会添加依赖、创建 MyApp.Jido、写入配置并加入监督树。也可在 mix.exs 添加 {:jido, "~> 2.0"},创建:

defmodule MyApp.Jido do
use Jido, otp_app: :my_app

end

在 config/config.exs 配置:

config :my_app, MyApp.Jido, max_tasks: 1000, agent_pools: []

并将 MyApp.Jido 放入 application.ex 的 children。文档要求 Elixir 1.17+ 与 Erlang/OTP 26+;未说明凭据要求。

如何使用这个 Agent?

先定义 Agent 和 Action,例如为 Agent 配置 signal_routes: [{"increment", MyApp.Actions.Increment}],并在 Action 的 run/2 中返回 {:ok, %{count: current + params.amount}}。创建并执行:

agent = MyApp.CounterAgent.new()

{agent, directives} = MyApp.CounterAgent.cmd(agent, {MyApp.Actions.Increment, %{amount: 5}})

要以进程方式运行:

{:ok, pid} = MyApp.Jido.start_agent(MyApp.CounterAgent, id: "counter-1")
{:ok, agent} = Jido.AgentServer.call(pid, Jido.Signal.new!("increment", %{amount: 10}, source: "/user"))

Signal 类型必须已在 signal_routes 中声明。

这个 Agent 有哪些优点和局限?

优点
  • 以 Elixir/OTP 和 GenServer 为基础,提供监督与故障容忍,而不是只提供链式调用接口。
  • cmd/2 明确返回更新后的 agent 和 directives,使状态转换与运行时拥有的效果分离。
  • 提供可配置的父子层级、实例作用域监督、逻辑分区与 Pod,适合持久化协作进程拓扑。
  • Direct 与 FSM 策略,以及可合并 schema 的插件,支持不同的工作流建模方式。
局限
  • 采用需要 Elixir 1.17+ 和 Erlang/OTP 26+,对非 BEAM 技术栈团队存在运行时与迁移成本。
  • AI/LLM 不属于核心包;需要模型功能时还要评估并集成 jido_ai、req_llm 等生态包。
  • Action 可以执行 API、文件或数据库操作,因此具体应用仍须自行设计 I/O、权限和错误处理边界。
  • 资料只展示内置运行时与生态包,未说明针对 OpenAI、Anthropic 或其他命名模型提供商的核心包适配范围。

这个 Agent 与同类方案有什么区别?

README 将 Jido 与 LangChain、CrewAI 对比:LangChain 被描述为 Python 优先的链式编排,CrewAI 被描述为基于角色的团队协作;Jido 的定位是建立在 GenServer 之上的 OTP 原生智能体模式,强调监督树、不可变状态和显式 Directive 效果边界。

与相关度最高的同类 agent 并排比较关键指标。

Agent 源码审查 Star 最近更新 主语言 完整支持的平台
Jido Elixir 智能体框架 当前 41 · 缺口较多 ★ 1.9k 2 天前 Elixir
Pi Dynamic Workflows 88 · 表现良好 ★ 531 9 天前 TypeScript
LlamaAgents 66 · 存在缺口 ★ 452 3 天前 Python
Agently AI 应用运行时 63 · 存在缺口 ★ 1.7k 11 天前 Python OpenAI API · Claude API

FollowAgents 如何评估这个 Agent?

FollowAgents 源码审查 · FARS-2.1
缺口较多
41/ 100 五分制 2.1 / 5
信任安全 6/29
可靠稳定 6/14
适用触发 10/18
规范维护 9/18
有效结果 7/13
证据核验 3/8
查看各维度的扣分理由
信任安全6 / 29 · 1.0/5

证据显示框架强调显式指令和运行时所有权,但未提供权限最小化、用户确认或敏感数据处理的机制。依赖安全仅通过CI和常规依赖管理体现,未提供漏洞扫描证据。外部效果通过指令描述,但未提供回滚机制。来源归属仅通过许可证和版权声明体现。

可靠稳定6 / 14 · 2.1/5

文档和代码示例一致,但未提供故障消息的详细说明。依赖可用性通过Hex和GitHub Actions体现,但未提供依赖锁定或镜像。

适用触发10 / 18 · 2.8/5

明确面向Elixir开发者,提供了多种场景和指南。能力边界通过指令和策略说明,但触发精度未详细说明。环境适配通过OTP和Elixir版本要求体现。

规范维护9 / 18 · 2.5/5

信息架构清晰,安装说明详细,命名稳定,示例和FAQ丰富。已知限制未明确列出,许可证为Apache-2.0,版本控制通过Hex和GitHub Actions体现,维护责任通过贡献指南体现。

有效结果7 / 13 · 2.7/5

输出可用性通过清晰的API和示例体现,边际价值通过对比原始OTP体现,成本效益未提供性能或资源使用数据。

证据核验3 / 8 · 1.9/5

声明与代码示例一致,但未提供独立验证。事实与推断未明确分离。

风险与缓解建议
  • 源码中未见:执行前用户确认开启或自行加上执行前确认;先在沙箱或测试环境跑通,确认行为后再接入真实数据。
  • 源码中未见:敏感信息处理使用专用、低权限、可随时吊销的 API 密钥,不要复用生产凭据,也不要让密钥出现在日志里。
  • 源码中未见:回滚或恢复路径运行前先备份,或在 git 分支、快照上操作,确保改动可以撤销。
  • 未提供权限最小化或用户确认机制,部署时需自行实施安全控制。
  • 未提供敏感数据处理或回滚机制,需评估数据保护需求。
  • 依赖安全未提供漏洞扫描证据,建议使用依赖审计工具。
  • 未明确列出已知限制,需自行评估适用性。
证据充分度: 评估于 2026年8月9日 审查版本 4689b92e4d7d 评估后仓库已有新提交,评分可能未覆盖最新改动
查看完整评分方法 →

常见问题

Jido 是否必须使用 AI 或 LLM?
不需要。核心 jido 包提供智能体架构和运行时;README 将 AI/LLM 集成列为可选的 jido_ai 等生态能力。
cmd/2 返回的 directives 会再次修改 agent 状态吗?
不会。README 说明返回的 agent 已是完整状态,directives 仅描述由运行时拥有的外部效果。
生产环境如何运行智能体?
使用基于 GenServer 的 AgentServer;可通过实例模块的 start_agent 启动,并用 AgentServer.call 发送 Signal。
框架怎样处理运行中子进程和故障?
它提供父子智能体层级、生命周期管理和实例作用域监督;SpawnAgent 默认使用 restart: :transient。
核心包是否要求网络、文件系统或 MCP?
README 未将这些列为核心运行要求。Action 可以在需要立即结果时调用 API、读取文件或查询数据库,但这取决于应用实现。
在 GitHub 查看 ↗ 安装 ↓

对比同类 Agent

用同一套 FARS 评审,横向比较这个 Agent 所属的短名单。

相关 Agents