多个 AI 智能体共用一块看板:实战指南
如何让 Claude Code、Codex 和 ChatGPT 共用一块看板而不重复劳动:任务契约、原子认领、租约,以及唯一的审阅队列。
Weft 是为独立创业者和小团队打造的 AI 任务管理工具。
作者: Andrei Finogeev ·
可以,两三个 AI 客户端完全能共用一块看板,只要由看板来决定每个任务归谁。在 Weft 里,Claude Code、Codex 和 ChatGPT 都连到同一个 MCP 端点。每个客户端用 start_task 认领任务,用心跳维持它,最后交回一张回执。如果两个客户端伸手去拿同一张卡片,第二个会被告知 already_claimed,谁也不会把活干两遍。
Weft 是我们做的。关于其他产品的事实来自它们的官方页面,核对于 2026年10月27日。
这篇指南写给同时运行两三个 AI 客户端、而它们总是互相踩脚的独立创业者或小团队。
什么时候第二个智能体真的有用?
智能体多了,工作并不会自动变快。当工作能拆成互不相干的几块时,它们有帮助;当它们共用文件、测试数据库,或者共同等着一个还没人做的决定时,它们反而添乱。
| 情况 | 一个智能体还是多个? | 原因 |
|---|---|---|
| 一个仓库里的一个功能,一口气做完 | 一个智能体(如果它有子智能体,就用它自己的) | 一个上下文装得下所有东西;看板只会增加开销 |
| 代码不同区域里的两个独立修复 | 两个智能体,各用独立的分支或 worktree | 没有共用文件,唯一的风险是挑中同一张卡片 |
| 在 ChatGPT 里做规划和分拣,在终端智能体里写代码 | 两个客户端,分工不同 | ChatGPT 编写和整理任务;编程智能体认领它们 |
| 几个智能体都在等同一个产品决定 | 一个智能体,等你决定之后 | 并行的智能体会各猜各的 |
如果你不会在没商量过的情况下把两件活交给两个人,那也别交给两个智能体。
任务要写清楚什么,智能体才能接?
智能体会照字面理解任务,而且很少发问。在卡片离开 Backlog 之前,给它写上:
- 一个可以核查的结果。不是“改进新手引导”,而是“在项目页面加一个带创建按钮的空状态”。
- 范围。它可以动哪些文件、页面或系统,哪些是禁区。
- 完成标准。能证明它成功的测试、构建或 URL。
- 你想拿回的证据。pull request 链接、提交哈希、已部署的 URL。
- 在哪里停下。任何不可逆的事(发布、生产环境、钱)都应该以向你提问结束,而不是直接动手。
Weft 的默认列是 Backlog、Todo、Doing 和 Done。一个简单的约定就很好用:只有 Todo 里的卡片才可以认领。项目则把一个仓库或一个客户和其余部分隔开。
两个智能体对同一张卡片调用 start_task 时会发生什么?
把卡片移到 Doing 不是锁:两个智能体可能读到同一张 Todo 卡片,然后都开工。所以在 Weft 里,认领本身就是锁。
一次 start_task 调用就是一次由唯一索引把关的数据库插入,所以由数据库裁定谁赢。赢的一方拿到 runId 和 leaseToken,卡片移到 Doing。输的一方收到 already_claimed,附带任务 id、标题和一条不要重复劳动的提示。一个客户端是终端智能体、另一个是聊天应用,这都无所谓。
对智能体来说,already_claimed 是正常的答复,不是错误。正确的做法是再调用一次 get_my_work,去拿下一张卡片。完整的循环我们写在了认领、心跳与回执循环里。
心跳和 20 分钟租约是怎么运作的?
认领是租约,不是永久分配。start_task 给出 20 分钟的租约,并告诉智能体每 300 秒续一次。智能体通过带着 runId 和 leaseToken 调用 report_progress 来续租。如果智能体在此期间已经丢了租约,调用会返回 lease_lost,它就应该停下,而不是继续改。
会话挂掉时,没有人能出来说一声。沉默是看板唯一能收到的信号,所以 Weft 就把沉默当作信号:
- 20 分钟没有心跳,这次运行就被标记为过期,令牌被清除,任务回到未分配状态。
- 每 10 分钟有一次清扫,而当另一个客户端尝试认领时,过期的任务也会立即被释放。
- 智能体在等你回答问题时,会保留任务 60 分钟。之后租约失效,但问题仍然开着。
心跳也是工具调用。一个 40 分钟的任务,每 5 分钟一次心跳,大约要花掉 8 次调用;免费版每月 200 次调用,所以三个天天在跑的智能体很快就会超出。Pro 没有调用上限。
看板怎么知道哪个智能体做了什么?
每个登录 Weft 的 OAuth 客户端都是一个独立的操作者。Claude Code、Codex 和 ChatGPT 各自单独注册,看板上显示每个客户端注册时用的名字。每条历史事件都会记录是哪个客户端产生的。
不支持 OAuth 的客户端可以用个人访问令牌;每个令牌也是一个独立的操作者,但令牌没有权限范围(访问令牌)。权限按 OAuth 连接设置:
- full(默认):全部 32 个工具。
- write:除三个破坏性工具(移入回收站、归档、完成冲刺)之外的全部。
- read:只有 11 个只读工具。
一种合理的分配:编程智能体用 write,任何实验性质的用 read。断开一个客户端会撤销它的令牌,而不影响其他客户端。Weft 发放刷新令牌,所以已连接的客户端会自己续期登录。
看板上的身份不等于磁盘上的隔离。两个名字不同的智能体,在同一个检出目录里照样会互相覆盖。给每个编程智能体单独的分支或 worktree。
完成的工作落在哪里?最多能有多少在等你?
默认情况下,完成的任务直接进 Done。当任务需要审阅,或验证检查没通过时,它会停在你的收件箱里。你在那里选择“接受”、“返工”、“以后再说”或“放弃”。选“返工”时要写一条备注。来自 request_input 的问题也会进同一个收件箱,并以推送形式发到你的手机上,所以不管是哪个智能体在问,你都只需要看一个地方。
complete_task 的回执里有结果、你可以核查的产物、没做的部分、未知项和一个 nextStep。nextStep 显示在“接受”按钮上方,所以接受批准的恰好就是那一步。更多内容见我的 AI 智能体到底做了什么。
收件箱有上限,而有了几个智能体,你一定会碰到它。单人工作区最多 5 项,团队 10 项,或者预估审阅时间 45 分钟,以先到者为准。提问也算在内。满了之后,start_task 会用 attention_queue_full 拒绝,并告诉智能体它还能做什么,比如汇报进度或读看板。三个智能体产出工作的速度,可能比一个人审阅的速度快;这个上限能防止它们堆出一堆你永远不会看的结果。
会出什么故障,怎么恢复?
| 故障 | 你看到的 | Weft 怎么处理 | 你该做什么 |
|---|---|---|---|
| 两个客户端开始同一个任务 | 一张卡片在 Doing,一个客户端被告知 already_claimed | 数据库只让一个认领胜出;另一个被拒绝 | 如果输的智能体转去做别的,那就什么都不用做。如果它还是继续干,就收紧它的指令 |
| 会话崩溃或笔记本休眠 | Doing 里有张卡片毫无进展 | 20 分钟没有心跳,这次运行就过期,任务回到未分配 | 在另一个智能体接手之前,检查分支上有没有做了一半的工作 |
| 智能体做完了,却没调用 complete_task | 工作已合并,卡片还在 Doing | 租约过期;任务被释放,而不是被关闭 | 自己关掉它,或者让一个智能体带上证据把它完成 |
| 智能体需要一个只有你能做的决定 | 收件箱里有个问题,可能还有推送 | 认领保留 60 分钟;答案会在智能体下一次调用 start_task 或 get_my_work 时送达 | 从它给的选项里选一个作答 |
| 等你处理的东西太多 | 收件箱满了 | start_task 用 attention_queue_full 拒绝 | 审阅或放弃一些项目;队列减少后,智能体就能重新开工 |
| 两个智能体改同一个检出目录 | 不相干的改动混在同一个 diff 里 | 什么都不做;Weft 看不到你的文件 | 在并行运行智能体之前,先分好 worktree 或分支 |
怎么配置两三个客户端?
三个客户端都连到同一个端点,都通过浏览器登录,没有密钥要复制。
# Claude Code
claude mcp add --transport http weft https://letsweft.com/api/mcp
# Codex: add to ~/.codex/config.toml, then sign in
[mcp_servers.weft]
url = "https://letsweft.com/api/mcp"
codex mcp login weftChatGPT 通过其应用目录里的 Weft 应用连接,所有方案都能用,包括免费版。分步设置页面:Claude Code、Codex、ChatGPT、Cursor(一键安装)。登录流程遵循 MCP 授权规范。
ChatGPT 是按轮次工作的:只有你在对话里时它才会行动。它适合做规划、写任务和回答问题。长时间的编程运行更适合终端智能体,因为每几分钟一次的心跳需要一个持续运行的会话。
为期一周的试用是什么样的?
- 第 1 天:连接两个客户端。Claude Code 和 Codex,或者一个编程智能体加 ChatGPT。给编程智能体 write 权限。
- 第 1–2 天:按上面的契约写五到十个任务。一个结果、范围、完成标准、证据。把它们放在 Todo。如果你在 Linear、Jira、Notion 或 Trello 里已经有任务,先导入;所有方案都能免费导入。
- 第 2–5 天:让两个智能体处理同一个 Todo 队列,各自在自己的 worktree 里,都被要求用 start_task 认领、用 complete_task 加产物完成。
- 第 5 天:故意制造故障。让两个智能体指向同一张卡片,看其中一个收到 already_claimed。在任务中途杀掉一个会话,检查 20 分钟后卡片是否重新空出来。
- 第 7 天:只凭看板做一次审计。有没有任务被跑了两遍,或者做完后还留在 Doing?每个结果你都能通过产物核查吗?在加第三个智能体之前,先把任务模板改好。
这和 Hypertask 的做法相比如何?
Hypertask 的租约模型是靠谱的:认领、心跳、释放,带过期时间。区别在于这个模型放在哪里。Hypertask 的文档把任务租约、证据和升级请求列为只有 REST 端点,有意为之;它的工具参考里有 21 个 MCP 工具,其中没有租约工具(MCP 概览)。在 Weft 里,认领、心跳、提问和回执都是 MCP 工具,所以任何 MCP 客户端不用额外写代码就能用。
| Weft | Hypertask | |
|---|---|---|
| 认领与租约 | 在 MCP 里:start_task、report_progress(20 分钟租约) | 只有 REST 端点,有意为之(文档) |
| MCP 工具 | 32 | 21(文档) |
| 登录 | 浏览器里 OAuth,带刷新令牌;可选个人访问令牌 | 文档中的设置方式是复制一个 30 天后过期的 API 密钥;浏览器批准的连接可用 90 天,不能刷新(文档) |
| 智能体身份 | 每个 OAuth 客户端或令牌都是独立的操作者 | 智能体作为拥有独立身份的服务账号 |
| ChatGPT 接入 | ChatGPT 应用目录里的已发布应用,所有方案都能用,包括免费版 | 按 Hypertask 的说法,是带 OpenAPI Actions 的自定义 GPT,或开发者模式下的自定义连接器(文档) |
| CLI 和 REST API | 没有 | npm 上的 CLI 和 REST API(文档) |
| 移动应用 | iOS 和 Android | 没有原生 iOS 应用(主屏幕上的网页应用);没有上架 Google Play(文档) |
| 语言 | 27 | 只有英语 |
| 每席位价格 | 免费版:50 个任务,每月 200 次 AI 调用。Pro:每月 $7 或每年 $60 | 免费版:每人 3 块看板。BYOK 按年 $8 / 按月 $10。Pro 按年 $16 / 按月 $20(价格) |
| AI 点数 | 不需要:思考发生在你自己的 AI 客户端里 | 内置 AI;BYOK 方案使用你自己的模型密钥 |
如果你的智能体从脚本或 CI 运行、你想要 CLI 和 REST API,如果你想把智能体当作像用户一样管理的服务账号,或者你想要内置 AI(写任务、智能标签、分拣)、键盘优先的速度和时间追踪,Hypertask 是更好的选择。Weft 没有 CLI,没有 REST API,没有 webhook,也没有 GitHub 或 Slack 集成。当你的智能体就是你已经在用的 MCP 客户端(ChatGPT 也在其中),而你想在手机上回复它们时,Weft 才合适。
更全面的对比,见 MCP 任务管理器对比和 Hypertask 替代方案。
- 我的智能体之间需要互相通信吗?
- 不需要。它们通过看板协调:认领、回执和提问。Weft 从不主动调用智能体;每个智能体自己用 get_my_work 拉取下一个任务。
- 崩溃的智能体会让任务永远卡在 Doing 里吗?
- 不会。20 分钟没有心跳,这次运行就被标记为过期,任务回到未分配状态,其他客户端就可以认领。先检查一下分支上有没有做了一半的工作。
- 三个智能体不会让我被审阅淹没吗?
- 收件箱上限是单人 5 项(团队 10 项)或 45 分钟的审阅量;满了之后,智能体就不能开始新任务。大多数完成的任务会直接进 Done。
- 运行多个智能体会更贵吗?
- Weft 按席位收费,不按智能体收费:Pro 每人每月 $7 或每年 $60。免费方案的 AI 调用上限是每月 200 次,多个智能体的心跳会很快用完。参见价格。