章节 01
导读 / 主楼:Jido Phoenix:实时Web界面与AI代理框架的深度融合实践
Jido Phoenix:实时Web界面与AI代理框架的深度融合实践
背景:AI代理需要什么样的界面?
当前大多数AI代理以命令行或API形式存在,用户通过文本提示与它们交互,等待响应,然后继续下一轮对话。这种模式对于简单任务尚可,但对于复杂工作流——如多步骤审批、人机协作创作——就显得力不从心。
我们需要的是能够实时反映代理状态、支持人机协作、可视化工作流的界面。这正是jido_phx项目试图展示的:如何将AI代理框架与实时Web技术深度融合。
项目概览
jido_phx是一个基于Phoenix LiveView的应用程序,演示了Jido代理框架的核心能力。它包含两个主要示例:
- 实时计数器:展示信号路由和状态管理
- PRD生成工作流:展示多代理协作和人机审批流程
技术栈
| 层级 | 技术选择 |
|---|---|
| Web框架 | Phoenix 1.8 + Phoenix LiveView 1.1 |
| 代理框架 | Jido 2.0 |
| LLM客户端 | req_llm 1.0 |
| 数据库 | PostgreSQL via Ecto |
| 前端样式 | Tailwind CSS |
| 构建工具 | esbuild |
| HTTP服务器 | Bandit |
这个技术栈体现了Elixir生态系统的现代最佳实践。
核心概念:信号驱动的代理
Jido框架的核心抽象是"信号"(Signal)。代理不直接响应函数调用,而是通过发送和接收信号来协调。这种模式带来了几个优势:
松耦合
代理之间不直接依赖,而是通过信号总线通信。新增代理或修改现有代理不会影响其他组件。
可观察性
所有信号流都是可追踪的,便于调试和审计。系统可以记录完整的信号历史,重现代理决策过程。
实时同步
Phoenix PubSub让信号变化能够即时推送到所有连接的客户端,实现真正的实时协作。
示例一:实时计数器
这个简单示例演示了核心机制:
信号路由:
- counter.increment → 增加计数
- counter.decrement → 减少计数
- counter.reset → 重置计数
关键设计:状态由代理管理,而非LiveView。这意味着:
- 多标签页同步:在一个浏览器标签页操作,其他标签页自动更新
- 状态持久化:页面刷新后状态保留
- 可扩展性:可以在服务器端添加更多代理处理复杂逻辑
示例二:PRD生成工作流
这是项目的重头戏——一个完整的人机协作流程,使用三个代理协同生成产品需求文档(PRD)和技术规范:
代理架构
CoordinatorAgent(协调者)
├── ProductManagerAgent(产品经理)→ 通过LLM生成PRD
└── TechnicalLeadAgent(技术负责人)→ 通过LLM生成技术规范
状态机设计
工作流采用严格的状态机管理:
idle(空闲)
└─ pipeline.start ──→ awaiting_prd(等待PRD)
└─ prd.review_requested ──→ awaiting_prd_review(等待PRD审核)
├─ prd.approved ──→ awaiting_spec(等待技术规范)
│ └─ spec.review_requested ──→ awaiting_spec_review(等待规范审核)
│ ├─ spec.approved ──→ complete(完成)
│ └─ spec.rejected ──→ awaiting_spec(规范修订)
└─ prd.rejected ──→ awaiting_prd(PRD修订)
人机协作的关键设计
每个审核步骤都需要显式的人类批准或拒绝(附带反馈)。这体现了负责任的人机协作原则:
- AI负责生成初稿和迭代修改
- 人类负责质量把控和方向决策
- 系统记录完整的决策历史
生成的文档可以从UI直接下载,方便后续使用。
为什么这很重要?
从聊天到工作流
传统的AI交互是"问-答"模式,而jido_phx展示的是"工作流"模式:
- 多步骤、有状态的流程
- 明确的人机分工
- 可追踪、可审计的执行历史
实时协作的基础
通过PubSub实现的实时同步,为多人协作场景奠定了基础。想象一个团队同时审查AI生成的PRD,每个人的反馈都即时可见。
生产就绪的示范
项目使用成熟的Elixir技术栈,包含完整的测试套件(mix test)和预提交检查(mix precommit),展示了如何将AI代理集成到严肃的生产系统中。
快速体验
# 克隆仓库
git clone https://github.com/johnwesonga/jido_phx.git
cd jido_phx
# 安装依赖、创建数据库、构建资源
mix setup
# 启动服务器
mix phx.server
# 或在IEx中启动
iex -S mix phx.server
访问 http://localhost:4000 即可体验。
Jido框架的设计哲学
从jido_phx可以窥见Jido框架的核心理念:
- 信号优先:一切通信通过信号,确保松耦合和可观察性
- 状态隔离:代理管理自己的状态,不依赖外部系统
- 人机协作:设计时就考虑人类参与,而非事后补救
- 实时原生:利用Elixir/OTP的并发能力实现真正的实时体验
应用场景展望
基于jido_phx的架构,可以构建:
智能客服系统
AI代理处理常见问题,复杂问题升级给人工客服,状态实时同步到所有客户端。
内容审核工作流
AI初筛内容,人工复核可疑项,多人协作审核,完整记录审核历史。
代码审查助手
AI代理分析代码变更,生成审查意见,人类审查员批准或修改,最终合并决策。
创意协作平台
多个AI代理分别负责头脑风暴、结构梳理、文案撰写,人类创作者在关键节点介入指导。
结语
jido_phx虽然是一个演示项目,但它展示了AI代理与Web界面深度融合的可能性。在AI能力日益强大的今天,如何设计人机协作的界面和工作流,将成为产品竞争力的关键 differentiate因素。
Jido框架的信号驱动架构和Phoenix LiveView的实时能力相结合,为这一领域提供了一个优雅的技术方案。对于Elixir开发者和对AI工作流感兴趣的工程师来说,这是一个值得深入研究的范例。