• 请不要在回答技术问题时复制粘贴 AI 生成的内容
tingbinli
V2EX  ›  程序员

一个小工具: WaitAgent。

  •  
  •   tingbinli · 15h 43m ago · 680 views

    帮朋友 KK 转发他的一个小工具:WaitAgent 。

    项目地址: https://github.com/kikakkz/wait-agent.git

    它本质上不是一个 AI 框架,也不是任务调度系统,而是我在做多 Agent / 多机协作时,逐步弄出来的一个 session 管理工具。

    一、起点:我遇到的问题

    我自己是一个独立开发者,之前有一个很小的团队,当前处于半解散状态。当前我自己有一些产品在开发,但是还没有到赚钱阶段,而我又需要赚钱将这些产品养下去。感谢 AI coding assistant ,我可以接一些外部的开发任务来赚钱。

    但是并行的任务多了之后,我遇到了极大的困扰:我要同时开很多 terminal 来并行开发这些任务,我不得不不停切换这些 terminal tab ,来查看任务状态,确定当前是否需要我介入,心智负担很重。

    同时,因为单机资源有限,我日常是同时 5 台机器一起工作,这样又要去切不同的机器,每天开始工作的 bring up 都是一个很痛苦的过程。

    当重复多次以后,我逐渐思考痛苦的来源:本质上我的注意力焦点只有一个,但是我同时需要关心很多不可见任务的状态,这是我痛苦的源泉。所以我想:我能不能将这些后台任务,都抽象成可靠状态,我只需要关注这些可靠状态,选择我介入的时机。那么只要状态是可信的,我的心智就是放松的。

    二、WaitAgent 的核心设计

    我从一开始就没有想过要去做太重的事情:不要做 all in one 的智能体聚合,不要做智能体协同通信,不要做模型聚合。我的目标只是解决我的困境,准确的总结是这需要的是一个类 tmux ,但支持多机,单状态焦点的工具。

    所以我很自然地从 tmux 开始了。WaitAgent 里面集成了 tmux ,来作为展示 pane 。

    原则 1:任何时刻我们只有一个焦点 pane

    我也研究过一些 agent mux 应用,但是大多都基于 pane 拼接,在一个窗口塞入很多小的 pane ,每个 pane 一个 agent session ,事实上是窗口内的 agent 多开能力。但是对于人类来说,眼睛同时看一个窗口内的多个焦点,和切 tab 并没有本质区别。因此 WaitAgent 上任何时刻都只会有一个 active 的焦点 pane 。

    原则 2:所有 session 都有可靠状态

    只有一个焦点的情况下,我们怎么同时兼顾其他 session 呢?所以我们将所有 session 抽象成了一组 sidebar 上的状态。状态只有三个,I 表示等待输入,C 表示等待确认,R 表示正在运行。这样当我们同时运行很多 session ,我们只需要看哪些状态是 I ,哪些状态是 C ,然后介入交互即可。R 是不需要交互的。状态的可靠解决了我需要随时想着哪些任务已经完成,在等我了这件事情。

    原则 3:提供机制,不提供策略

    我不想去约束人们怎么使用智能体,怎么使用 pane ,怎么使用主机,WaitAgent 只提供通道和 session 状态,其他的一切都应该和 ssh 远程主机方式一摸一样。实作上我也采用了和 ssh 一样的 pty mirror 方式,这样在多机之间可以获得和 ssh 一样的性能。

    三、当前状态和后续方向

    目前 WaitAgent 还是一个很早期的工具,我实现了基础的多机,多 agent session 管理能力,提供可 session 状态列表,这样已经具有基础能力。

    几个比较确定的演进方向是:

    1 工作区快照能力

    当前当 waitagent 全部退出或关机,上一次工作内容在下一次是需要重新输入的。如果同时有 10 个 session 在工作,那么下一次 bring up 过程依然较为痛苦。因此我预期会引入 workspace 能力,这样在上一次退出,会保存当前 workspace 快照,下次 bring up 只要导入快照继续,就能重建 workspace 的 sessions 状态。

    2 云端能力

    对于不习惯 CLI 的人,我预计在将来提供云端能力,这样只要在本机运行 WaitAgent ,就可以通过网页直接和本机的 WaitAgent 沟通交互。

    3 集成到 TG/微信

    把 WaitAgent 集成到 TG 和微信,这样可以躺着 Coding 。

    4 可以在 CLI 呼出不同 agent 的 session 列表并提供切换能力

    当前 codex ,claude 等这些 app 实现有 session 列表,但是 CLI 实现没有。我希望在 WaitAgent 这里提供不同 agent 的 session 列表呼出能力,并且可以切换。

    5 为不同 agent 提供自定义 auto process 能力

    我希望用户可以通过 sidebar 上的 item ,定义一些针对 session 的自动处理规则,这样用户不用一把梭哈全部自动不能掌控,保持对于任务 session 的随时介入能力。

    如果你有类似的 multi-agent / 分布式执行经验,也欢迎交流这个抽象是不是成立,或者在哪些场景会失效。

    No Comments Yet
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   1167 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 17:54 · PVG 01:54 · LAX 10:54 · JFK 13:54
    ♥ Do have faith in what you're doing.