Cotal-AI/Cotal · 上手攻略

  • 仓库Cotal-AI/Cotal
  • 链接:https://github.com/Cotal-AI/Cotal
  • 分类:skill / 多 Agent 协议 / Agent 协调标准
  • 作者:spark
  • 更新:2026-09-24

⚠️ 本文基于仓库 README 与官网文档站(GitHub 已验 · 200 OK · 抓取于 2026-09-23)撰写,未 clone 源码、未跑通 quickstart。版本、命令均按 README 声明,未独立交叉验证。


1. 这是什么

Cotal-AI/Cotal给 AI Agent 用的开放 pub/sub 标准,口号 "The open pub/sub standard for AI agents"。它的核心抽象是:

  • Space(共享空间):一个 mesh 里所有 agent 共享同一片存在空间,每个 agent 都能看到「谁在、状态如何」
  • Topology-free:谁管谁、谁是 worker、谁是 manager,都是配置而不是协议强加——同一份标准能跑扁平 peer 群、manager + worker 树、命令链、或任意混合
  • 三种寻址(multicast / unicast / anycast)+ presence:pub/sub 的全部工具箱

底层传输是 NATS + JetStream(生产验证多年的消息基础设施);参考实现是 TypeScript。协议本身与语言无关——任何带 NATS 客户端的语言都可以实现。

⚠️ 立标候选位:skill / 多 Agent 协议(主)+ Agent 协调标准 / MCP 互补层(副)。

2. 解决什么问题

主流 agent 协作工具被两类硬约束困住:

  1. 树状结构锁定:一个 controller 发活儿,worker 永远互不见面 → 没有横向协调。
  2. 一对一裸消息:没有共享空间,agent 间发现 / 状态同步全靠上层硬塞。

Cotal 把「结构」从协议层提到配置层。同一个 mesh 既能跑 flat team of peersmanager + workerschain of command、也能混着来。配套还有:

  • 多 space 并行:一台机器上同时跑多个 mesh(cotal meshes 列出,cotal use <space> 切换,每条命令都接受 --space <name>)。一个客户端项目、一个研究团队跑在同一个 broker 上但完全互不可见。
  • 跨机器 mesh:broker 可以跑在你 internet 可达的服务器上,笔记本、工作站、云容器加入同一个 space。
  • 与 MCP / A2A 互补而非取代
  • MCP = 工具连接
  • A2A = 两个 agent 的点对点 request/response
  • Cotal = 多个 agent 的实时 pub/sub(presence、channel、durable delivery、三种寻址统一模型)
  • 数据形状复用 A2A:identity 用 A2A 的 AgentCardrole 是 anycast 寻址的 service),wire message 复用 A2A Message / Part复用 A2A 的 HTTP/JSON-RPC transport、Task RPC、request/response server model——只复用形状。

3. 快速安装

3.1 macOS / Linux(主路径 · curl 安装脚本)

curl -fsSL https://get.cotal.ai | sh

⚠️ 这个脚本安装到 home 目录,不需 sudo,然后跑引导式 setup。先在 https://get.cotal.ai 看一遍源码,或用 | sh -s -- --dry-run 预览。

3.2 Windows / Node 22+

如果已有 Node 22+:

npm install -g cotal-ai
cotal setup

3.3 让 agent 帮你装

把 https://docs.cotal.ai/prompt.md 指给 coding agent。

3.4 最小运行(quickstart)

cotal up --detach     # 启动 mesh(后台)
cotal spawn           # 把你的 agent 放上去,开始聊(Ctrl-C 退出)
cotal web             # 在浏览器里看
cotal down            # 停掉一切

⚠️ 默认 cotal upJWT 鉴权(sender authenticity + per-agent ACL + server-side delivery daemon 的 durable delivery)。cotal up --openloopback-only、live-only、不鉴权 的松散模式,仅适合本地实验。

3.5 引导式三人 demo

cotal setup --demo   # 加 david (engineer) / sven (guide) / me(你驾驶)
cotal spawn david
cotal console        # 在终端里实时看

3.6 一键团队

可以用一个 cotal.yaml manifest 描述整个团队;agent 可以跑在 cmux / tmux / Orca 终端里,或者换成 Codex / OpenCode / Hermes 跑。安装 flag、依赖、卸载见 docs/getting-started.md

4. 核心用法

4.1 三种寻址 + presence

寻址 用途 例子
Multicast(广播到 channel) #general / #review → 所有订阅者收到 群组同步
Unicast(点对点单播) 发到具体 instance,对端忙时消息在 durable inbox 里等 给 bob 发私信
Anycast(按角色找任一) 发给「reviewer」服务,恰好一个空闲 reviewer 接 委派 / 负载均衡,不用点名

所有寻址之下都跑 presence:每个 agent 发布实时状态(idle / waiting / working / offline)+ A2A AgentCard。任何在 space 里的 agent 都能读 roster,看到谁在干啥——这是没有中心调度器还能横向协调的根。

4.2 Coding Agent 当 manager

cotal up 自带一个 manager endpoint,你自己的 agent 可以按需拉队友:

用 coding agent 时:cotal up 起一个 manager,agent 通过 cotal_spawn 按需拉队友。例:「给我拉一个 reviewer」→ manager 在 mesh 上 spawn。详见 docs/connect-claude.md

4.3 已支持的 Agent(connector)

Agent 接入方式
Claude Code installed plugin + hooks
OpenCode native in-process plugin
Codex app-server + 它自己的 TUI
Hermes gateway daemon + plugin
Jcode Harness API + 它自己的 TUI
pi pi extension + live steer

⚠️ 它们接入方式不同但暴露同一套 cotal_* 工具,且全部 push——peer 消息到达时立刻唤醒空闲 agent。Codex 和 pi 还会「live turn」:用 steer() 把到达消息折进正在进行的那一轮。想加新 connector?去 discussion #80 投票。

4.4 Web Dashboard(cotal web

在浏览器里开一个「god-view」面板:

  • Graph view:整个 mesh 画成一幅 live force-directed 星图,channel membership 是边、消息流过时边会发光
  • Monitor & channels:roster(状态用形状+颜色表示)、每个 channel 的消息列表、golden-signal tiles(working / waiting / idle / offline / oldest-unattended)
  • Agent detail:点任一节点下钻——role、harness / model、live status、当前活动、tags

⚠️ 只读 + 最小权限:dashboard 自签发窄权限 cred 然后丢弃签名 seed。终端版 cotal console 看同一个 space。

4.5 复用 A2A 数据形状

Cotal 用 A2A 的 HTTP/JSON-RPC transport、Task RPC、request/response server model——只复用 形状AgentCard / Message / Part)。底层是 NATS + JetStream(生产验证多年的部分,Cotal 不重造轮子)。

5. 典型适用场景

  • 多 agent 横向协调:一个 coding agent 拉一个 reviewer,reviewer 在 mesh 上被 anycast 唤醒;不需要中心 orchestrator 死板派发。
  • 多项目隔离:同一台机器跑多个 mesh(client 项目 + research 团队),互不可见。
  • 跨机器 mesh:笔记本 + 工作站 + 云容器进同一个 space;broker 跑在 internet 可达服务器。
  • Coding agent 即 manager:agent 本身能拉队友(reviewer / tester / debugger),按需 spawn。
  • 多人可视化监控:浏览器 dashboard 看整个团队的工作分布、NEEDS-YOU 队列、idle / waiting / working tiles。

不适用:

  • 只要 1 个 agent(overhead 大材小用)
  • 要 HTTP/JSON-RPC 兼容 A2A 全套(Cotal 只复用形状,不复用 transport)
  • 要非 NATS 消息基础设施(协议强绑 NATS,参见 FAQ)

6. 坑与注意

  1. 官方实现只有 TypeScript(FAQ 自陈):其他语言的 client 是 planned。如果你的主力栈是 Python / Rust / Go,目前只能等或自己写。
  2. NATS 是协议层强约束:Cotal 是 NATS 上面的 contract(subjects + schemas + presence / ack-on-surface / sender authenticity 等 client 行为)。换底层不现实。
  3. cotal up 默认 JWT 鉴权:peer 接入需要配 cred;本地实验要用 --open,但那是 live-only、loopback-only。
  4. curl 安装脚本依赖网络:被网络隔离的环境要先在能上网的机器审 get.cotal.ai 脚本。
  5. dashboard 是只读:要做控制还是要走 CLI 或 connector。
  6. 码群 demo 演示性强、生产参考弱:仓库自带的 examples(01 lateral coordination / 02 swarm 重建 console / 04 Frontier Tower faces)偏 demo;要在生产场景用,需要自己结合 cotal.yaml manifest 做配置治理。
  7. A2A 兼容是单向 + 形状级:你用 A2A 的工具人想接入 Cotal,需要写 connector;Cotal 反向不会变回 A2A transport。
  8. agent impersonation 由 NATS 拦截:sender 跟 NATS subject 绑定,server 用 agent JWT 校验,伪造 sender 直接拒。DM 用 bind-only durable per-identity inbox,agent 不能 re-target。

7. 与同类对比

维度 Cotal A2A MCP LangGraph / CrewAI / AutoGen
多 agent pub/sub 两 agent request/response agent ↔ 工具 应用层 agent 编排框架
结构 topology-free 配置 一对一 不涉及 通常强结构(graph / crew)
基础设施 NATS + JetStream HTTP/JSON-RPC JSON-RPC 进程内 / 自带状态
跨机器 ✅ mesh 弱(HTTP) 弱(stdio/HTTP) ❌ 进程内
presence
durable delivery ✅(JetStream) 看实现
anycast(角色负载均衡) 自己造

⚠️ Cotal 的定位是「在 MCP 和 A2A 之上补多 agent live 协调」,不是要取代它们。如果你只是要工具调用,去 MCP;只要 1-to-1,去 A2A;要做横向 pub/sub + presence + durable delivery,Cotal。

8. 一句话推荐结论

要做「多 agent 真·横向协作 + 跨机器 mesh + presence」时,Cotal 是目前少有的开源标准选择;前提是接受 NATS 强依赖 + TypeScript-only 官方实现。