起因:Agent 多了,脑子先不够用了
这阵子我手里同时跑着好几个 AI Agent,云服务器上两个,本地 Mac 上一个,各自干各自的活,听起来挺美,实际问题很朴素——我不知道它们谁还活着
想知道某个 Agent 在不在线,得 SSH 上去看进程;想派个活,得逐个开窗口贴指令;干完没有、结果是什么,全靠翻聊天记录,就像后厨请了好几个帮工,却没有打卡机,也没有传菜口,谁迟到了、菜做好没有,全得跑进后厨挨个问
我想要的其实不复杂,一块看板,告诉我谁活着;一个传菜口,把任务和文件送过去,把结果收回来,找了一圈没趁手的,于是自己动手,做了 Agent Matrix
它是怎么工作的
核心思路一句话:接入这件事,让 Agent 自己干
在 WebUI 里点一下「接入新 Agent」,系统会生成一段十几行的接入指令,里面带一个一次性注册令牌,我把这段指令原样粘贴给目标 Agent,剩下的它自己完成
- 先
curl下载服务器上的setup.sh,并且先通读一遍(这是我特意写进指令的要求,Agent 得知道自己在跑什么) - 带着令牌执行脚本,自动完成:注册换发心跳令牌、落盘配置到
~/.agent-matrix/、安装心跳和任务执行脚本、装定时任务(cron / launchd / systemd 自动识别)、最后自检 - 自检通过后汇报一声,WebUI 上的状态灯变绿,接入完成
之后每台 Agent 默认每分钟报一次心跳,超过 3 分钟没动静就判定离线,管理端只需要一个浏览器,看板每 15 秒自动刷新,绿灯红灯一眼扫过去就心里有数了
派任务也简单,在「任务」页写下标题和内容,@ 一个或多个 Agent,最多可以挂 10 个附件(单个 100MB 以内),Agent 按轮询节奏自己来拉,拉取即锁定,同一个任务不会被拉两次,结果写回也只有一次机会,不会覆盖;想接着深挖,就在详情页点「继续任务」,同一任务、同一 Agent 的会话是连续的,上下文不断
部署:一个二进制加一个文件
服务端是 Go 写的单静态二进制,数据库是嵌入式 SQLite,所有状态都在一个文件里,备份就拷这一个文件,升级就换个二进制重启,systemd 拉起即可,没有 Kafka,没有 Redis,没有一堆中间件要伺候;对我来说,一个工具如果自己就是负担,那它解决再多问题也亏了
折腾中的几个取舍
做这个东西时砍掉的功能,可能比留下的还多,说几个主要的
不做 DAG 编排,不做自动重试,任务模型刻意简单——一轮派发、一次执行、一次回写,要接着做就追加一轮;任务卡住超过 10 分钟会标出「疑似卡住」,但重新投递必须由人点,因为自治 Agent 执行多久没法预估,自动重派很可能导致同一件事做两遍,那种事故比卡住更难收拾
控制面极简,编排下沉给 Agent,任务交到 Agent 手里之后,怎么拆解、调用什么技能,由它自己规划,Matrix 只负责三件事——谁活着、把话和文件送到、把结果收回来;我的判断是,AI 让执行越来越廉价,稀缺的是判断力,所以判断该做什么、选谁来做、验收做得对不对,这三件事永远留给人,这不是功能缺失,是边界宣言
代价也明说,只支持 Linux 和 macOS,任务执行器只适配了 OpenClaw 和 Hermes Agent 两家,只能聊天、没法执行 shell 命令的 Agent(比如某些托管的 IM 机器人)接不进来,这是机制决定的,不是配置问题
最后
项目开源,Apache 2.0 协议,代码和完整文档都在 GitHub,如果你也在养一堆 Agent、管得头大,欢迎试试,有坑直接在 issue 里喊我
折腾这个工具的过程本身也验证了一件事——现在一个人加几个 Agent,真能撑起一个以前要小团队才做得动的系统,下次聊聊这背后的工作方式
常见问题
支持 Windows 吗
不支持,Agent 侧脚本依赖 cron / launchd / systemd 定时机制,Windows 的任务计划实现差异太大,短期内没有适配计划
Agent 必须装什么客户端吗
不用,接入指令会先 curl 下载服务器上的 setup.sh(脚本要求 Agent 先通读再执行),装的是两个 shell 脚本加一个定时任务,没有 daemon、没有常驻进程
跟 LangSmith / LangGraph Studio 这类平台比,它适合谁
它们是重平台,功能全但需要托管和配套;Agent Matrix 是单二进制 + SQLite,五分钟部署、一个文件备份,适合个人和小团队管理自己的 Agent 机器,要 DAG 编排、评估体系的大型团队不是它的目标用户
自动重试为什么不做
自治 Agent 执行时长不可预估,自动重派很可能导致同一件事做两遍,任务卡住超过 10 分钟会标记「疑似卡住」,但重新投递必须由人决定