Blog

Nhiều agent AI trên một bảng: cẩm nang thực chiến

Cách chạy Claude Code, Codex và ChatGPT trên một bảng mà không làm trùng việc: hợp đồng công việc, nhận việc nguyên tử, lease và một hàng chờ xem xét.

Weft là trình quản lý công việc bằng AI cho nhà sáng lập độc lập và nhóm nhỏ.

Tất cả bài viết

Tác giả: Andrei Finogeev ·

Có, hai hoặc ba ứng dụng AI có thể dùng chung một bảng, miễn là bảng quyết định ai sở hữu từng công việc. Trong Weft, Claude Code, Codex và ChatGPT đều kết nối tới cùng một endpoint MCP. Mỗi ứng dụng nhận một công việc bằng start_task, giữ nó sống bằng tín hiệu nhịp, và nộp lại một biên nhận. Nếu hai ứng dụng cùng với tới một thẻ, ứng dụng thứ hai được báo already_claimed, và không ai làm một việc hai lần.

Chúng tôi là người làm ra Weft. Thông tin về sản phẩm khác lấy từ trang chính thức của họ, kiểm tra ngày 27/10/2026.

Cẩm nang này dành cho nhà sáng lập độc lập hoặc đội nhỏ đang chạy hai, ba ứng dụng AI cứ giẫm chân lên nhau.

Khi nào agent thứ hai thực sự có ích?

Thêm agent không mặc nhiên làm việc nhanh hơn. Chúng có ích khi công việc tách được thành những phần không đụng nhau, và gây hại khi chúng dùng chung file, chung cơ sở dữ liệu test hoặc chung một quyết định chưa ai đưa ra.

Tình huốngMột agent hay nhiều?Vì sao
Một tính năng trong một repository, xong trong một lần ngồiMột agent (cùng subagent của nó nếu có)Một ngữ cảnh chứa được tất cả; bảng chỉ thêm chi phí
Hai bản sửa độc lập ở hai vùng code khác nhauHai agent, nhánh hoặc worktree riêngKhông dùng chung file, nên rủi ro duy nhất là chọn trùng thẻ
Lên kế hoạch và phân loại trong ChatGPT, viết code trong một agent terminalHai ứng dụng, hai việc khác nhauChatGPT viết và sắp xếp công việc; agent viết code nhận chúng
Nhiều agent cùng chờ một quyết định sản phẩmMột agent, sau khi bạn quyết địnhCác agent chạy song song mỗi con sẽ đoán một kiểu

Nếu bạn không giao hai phần việc cho hai người mà không nói chuyện trước, thì đừng giao chúng cho hai agent.

Một công việc phải nói rõ gì trước khi agent nhận nó?

Agent hiểu công việc theo nghĩa đen và hiếm khi hỏi lại. Trước khi một thẻ rời Backlog, hãy cho nó:

  • Một kết quả kiểm tra được. Không phải “cải thiện onboarding”, mà là “thêm trạng thái trống cho trang dự án kèm nút tạo mới”.
  • Phạm vi. Những file, trang hay hệ thống nào nó được đụng vào, và những gì nằm ngoài giới hạn.
  • Một phép kiểm tra hoàn thành. Bài test, bản build hoặc URL cho thấy nó đã chạy.
  • Bằng chứng bạn muốn nhận lại. Đường dẫn pull request, mã băm commit, URL đã deploy.
  • Nơi nó dừng lại. Bất cứ điều gì không đảo ngược được (xuất bản, production, tiền) nên kết thúc bằng một câu hỏi gửi bạn, không phải một hành động.

Các cột mặc định của Weft là Backlog, Todo, Doing và Done. Một quy ước đơn giản rất hiệu quả: chỉ thẻ trong Todo mới sẵn sàng để nhận. Dự án giữ một repository hay một khách hàng tách khỏi phần còn lại.

Chuyện gì xảy ra khi hai agent cùng gọi start_task trên một thẻ?

Chuyển thẻ sang Doing không phải là khóa: hai agent có thể cùng đọc một thẻ Todo và cùng bắt đầu. Vì vậy trong Weft, chính việc nhận việc là cái khóa.

Một lượt gọi start_task là một lệnh insert vào cơ sở dữ liệu được bảo vệ bằng unique index, nên cơ sở dữ liệu quyết định ai thắng. Bên thắng nhận runId và leaseToken, và thẻ chuyển sang Doing. Bên thua nhận already_claimed kèm id công việc, tiêu đề và gợi ý đừng làm trùng. Việc một ứng dụng là agent terminal còn ứng dụng kia là ứng dụng chat không quan trọng.

Với agent, already_claimed là một câu trả lời bình thường, không phải lỗi. Cách đúng là gọi lại get_my_work và lấy thẻ tiếp theo. Chúng tôi mô tả toàn bộ vòng lặp trong bài vòng nhận việc, tín hiệu nhịp và biên nhận.

Tín hiệu nhịp và lease 20 phút hoạt động thế nào?

Quyền nhận việc là một lease, không phải sự phân công vĩnh viễn. start_task cấp lease 20 phút và bảo agent gia hạn mỗi 300 giây. Agent gia hạn bằng cách gọi report_progress với runId và leaseToken của nó. Nếu trong lúc đó agent đã mất lease, lượt gọi trả về lease_lost, và nó nên dừng lại thay vì tiếp tục sửa.

Khi một phiên chết, không còn ai để báo điều đó. Im lặng là tín hiệu duy nhất mà bảng nhận được, nên Weft coi im lặng chính là tín hiệu:

  • Sau 20 phút không có tín hiệu nhịp, lượt chạy bị đánh dấu là cũ, token bị xóa và công việc trở về trạng thái chưa giao.
  • Một lượt quét chạy mỗi 10 phút, và một công việc cũ cũng được giải phóng ngay khi một ứng dụng khác thử nhận nó.
  • Trong lúc agent chờ một câu hỏi gửi bạn, nó giữ công việc trong 60 phút. Sau đó lease hết, nhưng câu hỏi vẫn mở.

Tín hiệu nhịp là lượt gọi công cụ. Một công việc 40 phút với tín hiệu nhịp mỗi 5 phút tiêu khoảng 8 lượt gọi cho chúng, và Free có 200 lượt gọi mỗi tháng, nên ba agent chạy hằng ngày sẽ vượt quá. Pro không giới hạn lượt gọi.

Bảng biết agent nào đã làm gì bằng cách nào?

Mỗi ứng dụng OAuth đăng nhập vào Weft là một tác nhân riêng. Claude Code, Codex và ChatGPT đăng ký riêng biệt, và bảng hiển thị tên mà mỗi ứng dụng đã đăng ký. Mỗi sự kiện trong lịch sử ghi lại ứng dụng nào đã tạo ra nó.

Ứng dụng không có OAuth có thể dùng token truy cập cá nhân; mỗi token cũng là một tác nhân riêng, nhưng token không có phạm vi (token truy cập). Quyền được đặt theo từng kết nối OAuth:

  • full (mặc định): cả 32 công cụ.
  • write: mọi thứ trừ ba công cụ phá hủy (thùng rác, lưu trữ, kết thúc sprint).
  • read: chỉ 11 công cụ chỉ đọc.

Một cách chia hợp lý: agent viết code ở mức write, thứ gì còn thử nghiệm thì ở mức read. Ngắt kết nối một ứng dụng sẽ thu hồi token của nó mà không đụng tới các ứng dụng khác. Weft cấp refresh token, nên ứng dụng đã kết nối tự gia hạn đăng nhập.

Danh tính trên bảng không phải là sự cách ly trên ổ đĩa. Hai agent mang tên khác nhau vẫn có thể ghi đè lên nhau trong cùng một bản checkout. Hãy cho mỗi agent viết code một nhánh hoặc worktree riêng.

Việc đã xong rơi vào đâu, và bao nhiêu thứ có thể chờ bạn?

Mặc định, công việc đã hoàn thành đi thẳng vào Done. Nó dừng lại trong Hộp thư của bạn khi công việc cần xem xét hoặc khi một bước kiểm chứng thất bại. Ở đó bạn chọn Chấp nhận, Làm lại, Để sau hoặc Bỏ. Làm lại yêu cầu một ghi chú. Câu hỏi từ request_input rơi vào cùng Hộp thư đó và tới điện thoại dưới dạng thông báo đẩy, nên bạn chỉ có một chỗ để xem, dù agent nào hỏi.

Biên nhận từ complete_task mang theo kết quả, artifacts kiểm tra được, những gì chưa làm, những gì chưa rõ và một nextStep. nextStep hiện ở trên nút Chấp nhận, nên chấp nhận là phê duyệt đúng bước đó. Xem thêm trong bài agent AI của tôi đã làm gì.

Hộp thư có giới hạn, và với nhiều agent bạn sẽ chạm tới nó. Nó chứa 5 mục trong không gian làm việc một người và 10 trong đội, hoặc 45 phút xem xét ước tính, tùy cái nào tới trước. Câu hỏi cũng được tính. Khi đầy, start_task từ chối với attention_queue_full và cho agent biết nó vẫn được làm gì, như báo cáo tiến độ hay đọc bảng. Ba agent có thể tạo ra kết quả nhanh hơn một người xem xét kịp; giới hạn này ngăn chúng chất đống những kết quả bạn sẽ không bao giờ đọc.

Cái gì hỏng, và khôi phục thế nào?

Sự cốBạn thấy gìWeft làm gìBạn làm gì
Hai ứng dụng bắt đầu cùng một công việcMột thẻ trong Doing, một ứng dụng được báo already_claimedCơ sở dữ liệu cho một bên thắng; bên kia bị từ chốiKhông cần làm gì, nếu agent thua chuyển sang việc khác. Nếu nó vẫn làm tiếp, hãy siết chặt chỉ dẫn của nó
Một phiên bị sập hoặc laptop ngủMột thẻ trong Doing không có tiến độSau 20 phút không có tín hiệu nhịp, lượt chạy thành cũ và công việc trở về chưa giaoKiểm tra nhánh xem có phần việc dang dở không trước khi agent khác nhận
Agent làm xong nhưng không bao giờ gọi complete_taskCode đã merge, thẻ vẫn ở DoingLease hết hạn; công việc được giải phóng, không được đóngTự đóng nó hoặc bảo một agent hoàn thành nó kèm bằng chứng
Agent cần một quyết định chỉ bạn đưa ra đượcMột câu hỏi trong Hộp thư, có thể kèm thông báo đẩyQuyền nhận việc được giữ 60 phút; câu trả lời tới agent vào lần start_task hoặc get_my_work tiếp theoTrả lời bằng một trong các phương án nó đưa ra
Quá nhiều thứ đang chờ bạnHộp thư đầystart_task từ chối với attention_queue_fullXem xét hoặc bỏ bớt mục; agent bắt đầu lại được khi hàng chờ vơi đi
Hai agent sửa cùng một bản checkoutNhững thay đổi không liên quan trộn lẫn trong một diffKhông gì cả; Weft không nhìn thấy file của bạnTách worktree hoặc nhánh trước khi chạy agent song song

Thiết lập hai hoặc ba ứng dụng thế nào?

Cả ba kết nối tới cùng một endpoint và đăng nhập qua trình duyệt, không có key nào phải sao chép.

# 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 weft

ChatGPT kết nối qua ứng dụng Weft trong thư mục của nó, trên mọi gói kể cả Free. Các trang hướng dẫn từng bước: Claude Code, Codex, ChatGPT, Cursor (cài đặt một cú nhấp). Việc đăng nhập tuân theo đặc tả ủy quyền của MCP.

ChatGPT làm việc theo lượt: nó hành động khi bạn đang ở trong cuộc trò chuyện. Nó hợp với lên kế hoạch, viết công việc và trả lời câu hỏi. Những lượt viết code dài hợp với agent terminal hơn, vì tín hiệu nhịp mỗi vài phút cần một phiên luôn chạy.

Một tuần dùng thử trông thế nào?

  1. Ngày 1: kết nối hai ứng dụng. Claude Code và Codex, hoặc một agent viết code cộng ChatGPT. Đặt agent viết code ở quyền write.
  2. Ngày 1–2: viết năm tới mười công việc theo hợp đồng ở trên. Một kết quả, phạm vi, phép kiểm tra hoàn thành, bằng chứng. Để chúng ở Todo. Nếu bạn đã có công việc trong Linear, Jira, Notion hay Trello, hãy nhập chúng trước; nhập dữ liệu miễn phí trên mọi gói.
  3. Ngày 2–5: chạy cả hai agent trên cùng hàng Todo, mỗi agent trong worktree riêng, mỗi agent được bảo nhận việc bằng start_task và kết thúc bằng complete_task kèm artifacts.
  4. Ngày 5: cố ý thử sự cố. Chỉ cả hai agent vào cùng một thẻ và xem một bên nhận already_claimed. Tắt một phiên giữa chừng và kiểm tra thẻ lại trống sau 20 phút.
  5. Ngày 7: kiểm toán chỉ từ bảng. Có công việc nào chạy hai lần hoặc vẫn ở Doing sau khi xong không? Bạn có kiểm tra được mọi kết quả từ artifacts của nó không? Sửa mẫu công việc trước khi thêm agent thứ ba.

So với cách làm của Hypertask thì sao?

Mô hình lease của Hypertask hợp lý: nhận, tín hiệu nhịp, giải phóng, kèm thời hạn. Khác biệt nằm ở chỗ mô hình đó sống ở đâu. Tài liệu của Hypertask liệt kê lease công việc, bằng chứng và chuyển cấp là endpoint REST, có chủ đích, và tham chiếu công cụ của họ có 21 công cụ MCP mà không có công cụ lease nào (tổng quan MCP). Trong Weft, nhận việc, tín hiệu nhịp, câu hỏi và biên nhận là công cụ MCP, nên ứng dụng MCP nào cũng dùng được mà không cần viết thêm code.

WeftHypertask
Nhận việc và leaseNgay trong MCP: start_task, report_progress (lease 20 phút)Chỉ endpoint REST, có chủ đích (tài liệu)
Công cụ MCP3221 (tài liệu)
Đăng nhậpOAuth trong trình duyệt, có refresh token; token truy cập cá nhân không bắt buộcThiết lập theo tài liệu là một API key sao chép, hết hạn sau 30 ngày; kết nối duyệt qua trình duyệt kéo dài 90 ngày, không gia hạn (tài liệu)
Danh tính agentMỗi ứng dụng OAuth hoặc token là một tác nhân riêngAgent như tài khoản dịch vụ có danh tính riêng
Cách dùng với ChatGPTỨng dụng đã phát hành trong thư mục của ChatGPT, mọi gói kể cả FreeCustom GPT với OpenAPI Actions, hoặc connector tùy chỉnh qua developer mode, theo Hypertask (tài liệu)
CLI và REST APIKhông cóCLI trên npm và một REST API (tài liệu)
Ứng dụng di độngiOS và AndroidKhông có ứng dụng iOS gốc (web app trên màn hình chính); không có trên Google Play (tài liệu)
Ngôn ngữ27Chỉ tiếng Anh
Giá mỗi chỗFree: 50 công việc, 200 lượt gọi AI mỗi tháng. Pro: $7/tháng hoặc $60/nămFree: 3 bảng mỗi người. BYOK $8 theo năm / $10 theo tháng. Pro $16 theo năm / $20 theo tháng (bảng giá)
Tín dụng AIKhông cần: phần suy nghĩ diễn ra trong ứng dụng AI của chính bạnAI tích hợp; gói BYOK dùng key mô hình của riêng bạn

Hypertask là lựa chọn tốt hơn nếu agent của bạn chạy từ script hoặc CI và bạn muốn CLI cùng REST API, nếu bạn muốn agent là tài khoản dịch vụ được quản lý như người dùng, hoặc nếu bạn muốn AI tích hợp (viết công việc, nhãn thông minh, phân loại), tốc độ ưu tiên bàn phím và theo dõi thời gian. Weft không có CLI, không có REST API, không có webhook, và không tích hợp GitHub hay Slack. Weft phù hợp khi agent của bạn là những ứng dụng MCP bạn vốn đang dùng, trong đó có ChatGPT, và bạn muốn trả lời chúng từ điện thoại.

Để so sánh rộng hơn, xem so sánh trình quản lý công việc MCP và lựa chọn thay thế Hypertask.

Các agent của tôi có cần nói chuyện với nhau không?
Không. Chúng phối hợp qua bảng: nhận việc, biên nhận và câu hỏi. Weft không bao giờ gọi một agent; mỗi agent tự kéo công việc tiếp theo bằng get_my_work.
Một agent bị sập có để công việc kẹt mãi trong Doing không?
Không. Sau 20 phút không có tín hiệu nhịp, lượt chạy bị đánh dấu là cũ và công việc trở về chưa giao, nên một ứng dụng khác có thể nhận nó. Hãy kiểm tra nhánh xem có phần việc dang dở không trước.
Ba agent có nhấn chìm tôi trong việc xem xét không?
Hộp thư được giới hạn ở 5 mục cho một người (10 cho đội) hoặc 45 phút xem xét; khi đầy, agent không thể bắt đầu công việc mới. Phần lớn công việc đã xong đi thẳng vào Done.
Chạy nhiều agent có tốn hơn không?
Weft tính phí theo chỗ, không theo agent: Pro là $7/tháng hoặc $60/năm mỗi người. Gói Free giới hạn 200 lượt gọi AI mỗi tháng, và tín hiệu nhịp từ nhiều agent sẽ dùng hết nhanh. Xem bảng giá.