智能体编排
概览
OMAR 采用层级化智能体模型,由执行助理(EA)编排工作智能体。EA 将高层任务拆分为可并行的子任务,并创建智能体来执行。
统一智能体模型
除 EA 外,所有智能体使用相同的提示词(agent.md)。没有 PM/Worker 的区分 —— 每个创建的智能体都是自主的:接收任务后自行决定是直接完成还是创建子智能体,完成后报告结果。
EA(executive-assistant.md)比较特殊:它纯粹作为调度器 —— 从不直接工作,只负责创建智能体、监控进度和管理项目。它的提示词会前置记忆上下文。
智能体生命周期
用户向 EA 下达任务
│
▼
EA 提出计划(JSON)
│
▼
OMAR 解析计划,通过 API 创建智能体
│
▼
┌─────────┐ ┌─────────┐ ┌─────────┐
│ 智能体1 │ │ 智能体2 │ │ 智能体3 │
│ 工作中 │ │ 工作中 │ │ 等待中 │
└─────────┘ └─────────┘ └─────────┘
│
▼
智能体通过 [TASK COMPLETE] 报告完成
│
▼
EA 汇总结果
父子层级
智能体通过 ~/.omar/agent_parents.json 追踪父节点。这使得:
- TUI 中的树形可视化(使用制表符绘制的命令树)
- 导航:
→/Tab深入子节点,←返回父节点 - 层级化状态监控
任何智能体都可以创建子节点,支持任意深度。
EA 协议
EA 完全通过 HTTP API 与 OMAR 通信。它从不直接执行工作 —— 只负责创建智能体、监控输出和管理项目。
创建智能体
curl -X POST http://localhost:9876/api/agents \
-H "Content-Type: application/json" \
-d '{"name": "api", "task": "创建 Express 服务器,包含 /users 和 /posts 端点"}'
监控智能体
# 查看特定智能体的输出
curl http://localhost:9876/api/agents/api
# 列出所有智能体及健康状态
curl http://localhost:9876/api/agents
向智能体发送输入
curl -X POST http://localhost:9876/api/agents/api/send \
-H "Content-Type: application/json" \
-d '{"text": "也添加 /comments 端点", "enter": true}'
完成时终止智能体
curl -X DELETE http://localhost:9876/api/agents/api
管理项目
# 添加项目
curl -X POST http://localhost:9876/api/projects \
-H "Content-Type: application/json" \
-d '{"name": "构建 REST API"}'
# 完成项目
curl -X DELETE http://localhost:9876/api/projects/<id>
智能体上下文
创建带任务的智能体时,OMAR 注入统一的 agent.md 提示词。每个智能体都是自主的 —— 自行决定是直接工作还是创建子智能体:
You are an Agent in the OMAR system.
You receive a task from your parent, assess it, and
decide the best way to get it done — either by doing
it yourself or by spawning sub-agents.
YOUR NAME: api
YOUR PARENT: ea
YOUR TASK: 创建 Express 服务器,包含 /users 和 /posts 端点
智能体通过输出 [TASK COMPLETE] 加上结果摘要来标记完成。
事件驱动协调
调度器支持智能体间的定时协调:
- 唤醒:智能体调度自唤醒事件以检查子智能体进度
- 任务交接:智能体 A 在依赖就绪时为智能体 B 调度事件
- 定时任务:周期性事件在每次投递后自动重新调度
事件通过向目标智能体的 tmux 会话注入文本来投递。
# 调度一次性唤醒事件
curl -X POST http://localhost:9876/api/events \
-H "Content-Type: application/json" \
-d '{
"sender": "ea",
"receiver": "api",
"payload": "检查 API 实现进度",
"timestamp": 1772904000000000000
}'
# 调度周期性定时任务(每 5 分钟)
curl -X POST http://localhost:9876/api/events \
-H "Content-Type: application/json" \
-d '{
"sender": "ea",
"receiver": "api",
"payload": "进度检查",
"recurring_ns": 300000000000
}'
记忆持久化
OMAR 跨会话维护状态:
~/.omar/memory.md—— 活跃项目、智能体和任务的快照~/.omar/worker_tasks.json—— 会话名到任务描述的映射~/.omar/agent_parents.json—— 父子关系~/.omar/status/<session>.md—— 智能体自报告状态
重启时,EA 提示词会包含上次的记忆快照以保持上下文连续性。