AgentInbox: 给 Agent 的收件箱
最近又捣鼓了一个工具:AgentInbox。
它给 Agent 加了一层 event bus:先把外部变化收进来,再送回当前 session,让 Agent 可以接着把手上的事情做完。这个工具是从我的一个开发流需求里长出来的。
同一个项目里,我一般会开至少两个 Codex / Claude Code 窗口。
一个偏产品经理兼架构师角色,负责分析需求、定计划、创建 issue、review PR,以及最后决定合并。
另外一个偏开发者角色,负责分析 issue、制定开发计划、提交 PR,再继续跟 review 和 CI。
这里面我经常在扮演一个很笨但又很关键的角色:转发信息。
比如:
- reviewer 留了 comment
- CI 跑完了
- PR 下面又有人补了一条约束
这些变化理论上都应该回到对应的 Agent 身上,但现实里经常还是得靠我去 GitHub 看一下,再手动转过去。问题不在信息有没有发生,而在这些信息很难稳定地回到对应的 agent session。
一旦我去处理别的事情,这个链路就很容易断掉。
那能不能让这些 Agent 直接被 GitHub 事件驱动,自己协作起来?
最直接的办法当然是让 Agent 自己盯着。
比如每次 Codex 提交 PR 之后,它会问我要不要继续盯 review 和 CI。我说可以,它就开始定时轮询接口。这个办法也能工作,但一直不太稳:费 token,容易断。
说到底,还是缺一套给 Agent 用的事件服务。
比如:
- 订阅 GitHub event
- 订阅 CI 状态变化
- 订阅 X 上的 feed 流
- 然后在事件发生时,驱动 Agent 主动采取行动
这就是 AgentInbox 想解决的问题。
Event Flow

AgentInbox 是怎么工作的
AgentInbox 做的事情很直接:先把外部事件收下来,再按不同 Agent 的订阅规则写进各自的 inbox。
它会把数据源(Source)里的事件拉到本地,再根据 Agent 定义的订阅规则(Subscription)做过滤。每个 Agent 都有自己的 Inbox,命中的事件会写进去。
Inbox 里一有新的消息,AgentInbox 就会负责通知 Agent。Agent 收到通知后再去读取,处理完以后做 ack。
为什么不把事件一股脑直接推给 Agent,还要多一个 Inbox?
因为一旦某个数据源突然冒出很多消息,直接全塞给 Agent,Agent 很容易就会被冲爆。这和人处理消息有点像:系统先告诉你有多少未读,再由你决定什么时候打开、按什么顺序处理。
GitHub Review Workflow

最麻烦的是怎么通知到 Agent
把事件收进来并不难,真正麻烦的是最后一步:怎么把消息送到 Agent。
最理想的方式当然是 Agent 自己暴露一个 webhook 接口,AgentInbox 直接推过去。
但现实是,Codex / Claude Code 现在都没有提供这样的接口。
所以 AgentInbox 目前做的是另一套机制:基于 terminal session 的通知。
它支持 tmux 和 iTerm。当 Inbox 里有新消息时,它会直接把消息发到对应的 terminal 窗口,把提醒内容直接填进 Codex / Claude Code 的输入框并发送,让 Agent 继续干活。
这不是最优雅的方式,但对 Codex / Claude Code 这样的 Agent 来说,是一个可行的办法。
现在已经能跑什么
我已经断断续续试了几天,也陆续修了一些 bug。现在至少 reviewer 和 developer 这种协作工作流已经能完整跑通:
- developer 开 PR
- reviewer 收到通知去 review
- developer 收到 review comment 和 CI 结果继续修
- reviewer 再确认、再合并
这样一来,本地 Agent 更像一个能持续收消息、持续跟进、持续协作的工作对象,不再只是一个一次性执行器。
试试
仓库:
AgentInbox: https://github.com/holon-run/agentinboxUXC: https://github.com/holon-run/uxc
文档:
- https://agentinbox.holon.run
- https://agentinbox.holon.run/guides/getting-started
- https://agentinbox.holon.run/guides/onboarding-with-agent-skill
如果你用的是 Codex 或 Claude Code,可以先装 skill:
npx skills add holon-run/agentinbox --skill agentinbox -a codex -a claude-code
然后装 AgentInbox 和 uxc:
npm install -g @holon-run/agentinbox
brew tap holon-run/homebrew-tap
brew install uxc
后面还会继续补什么
现在内置的 EventSource 还不多,主要是 GitHub 和 Feishu,不过已经支持自定义扩展。
后面我会继续补更多的 EventSource,以及更多的 terminal / agent runtime 集成方式。
这层东西继续长出来,本地 Agent 的工作流就会更像一个长期在线的协作者,不用每次都重新喂上下文。