Nếu bạn chạy nhiều hơn một tác nhân mã hóa, bạn đã biết phần khó chịu.
Bạn đang làm việc sâu với Claude Code trong một repo. Bạn muốn một tác nhân thứ hai tham gia. Có thể là Codex trong một cửa sổ khác. Có thể là Claude của đồng đội bạn trên cùng một dự án. Vậy bạn thực sự làm gì? Bạn chọn toàn bộ cuộc trò chuyện, sao chép nó, dán nó vào tác nhân kia, và hy vọng không có gì quan trọng bị rơi ra trên đường đi.
Đó là quy trình làm việc. Sao chép, dán, cầu nguyện. Mỗi lần bàn giao đều mất đi một chút ngữ cảnh. Mỗi mã kết nối bạn chuyển qua lại giữa các terminal là một thứ nữa để làm rối tung lên. Và không có gì ngăn một tiến trình ngẫu nhiên nào đó đăng bài với tư cách là "tác nhân đánh giá của bạn," bởi vì không có khái niệm thực sự về danh tính ở bất kỳ đâu trong vòng lặp.
Tôi đã chán làm việc này bằng tay, vì vậy tôi đã xây dựng Parler.
Parler là một tệp nhị phân Rust nhỏ cho phép các tác nhân riêng biệt tìm thấy nhau, chứng minh danh tính của chúng và bàn giao một cuộc trò chuyện trực tiếp mà không cần bạn đóng vai trò người chuyển phát. Nó hoạt động như một CLI và như một máy chủ MCP, vì vậy bất cứ thứ gì nói được MCP (Claude Code, Codex, Cursor, Windsurf, Gemini, Claude Desktop) đều có thể sử dụng tất cả các tính năng của nó.
Đây là hướng dẫn thực hành. Kết thúc hướng dẫn này, bạn sẽ có hai tác nhân chia sẻ một cuộc trò chuyện từ một khóa duy nhất và bạn sẽ biết cách thực hiện phần còn lại.
Cài đặt và kết nối mọi thứ trong hai dòng lệnh
Cài đặt một lần, sau đó trỏ mọi tác nhân trên máy của bạn đến Parler.
1curl -fsSL https://raw.githubusercontent.com/tamdogood/parler-ai/main/scripts/install.sh | sh2parler connect
parler connect là toàn bộ quá trình thiết lập. Nó quét máy của bạn để tìm mọi tác nhân AI bạn đã cài đặt và ghi cấu hình MCP chính xác cho từng tác nhân, vào đúng tệp, hợp nhất với bất cứ thứ gì đã có ở đó thay vì ghi đè lên các máy chủ MCP khác của bạn. Khởi động lại các tác nhân của bạn và giờ đây chúng có thể khám phá và nhắn tin cho nhau.
Không có cấu hình riêng cho từng tác nhân để bạn phải chỉnh sửa thủ công, không có mã để dán, không có trung tâm để chọn. Mỗi tác nhân âm thầm có được danh tính riêng của mình trong ~/.parler/agents/<id>, và theo mặc định, tất cả chúng gặp nhau trên trung tâm chia sẻ mà dự án chạy tại wss://parler-hub.fly.dev.
Lo lắng về một lệnh chỉnh sửa tệp cấu hình? Hãy xem trước khi nó ghi:
1parler connect --list # những gì được phát hiện và những gì đã được kết nối2parler connect --print # in đoạn mã, không thay đổi gì3parler connect --verify # kết nối chúng, sau đó chờ và hiển thị từng cái khi nó kết nối
Thích xây dựng từ mã nguồn hơn?
1cargo install --git https://github.com/tamdogood/parler-ai parler-bin,
sau đó chạy parler connect theo cách tương tự.
Sự kiện chính: bàn giao một cuộc trò chuyện trực tiếp
Đây là lý do toàn bộ thứ này tồn tại. Bạn đang giữa chừng trò chuyện với một tác nhân và bạn muốn một tác nhân khác tiếp quản hoặc giúp đỡ, mà không cần dán lại toàn bộ nội dung cuộc trò chuyện.
Bước 1: mở một phiên
Bạn không cần phải ghi nhớ bất kỳ lệnh nào. Tác nhân hiện tại của bạn đã có các công cụ Parler, vì vậy chỉ cần yêu cầu nó bằng tiếng Anh đơn giản:
Mở một phiên Parler, tóm tắt những gì chúng ta đã làm việc làm ngữ cảnh và đưa cho tôi chìa khóa.
Đằng sau hậu trường, nó gọi **parler_open_session**, đặt bản tóm tắt của bạn làm tin nhắn đầu tiên của một phòng mới và đưa lại cho bạn một khóa ngắn như A3KELDJR.
Bước 2: tác nhân tiếp theo yêu cầu tham gia, chỉ trong một dòng lệnh
Tác nhân thứ hai không cần thiết lập trước nào cả. Trỏ nó trực tiếp vào phiên bằng cách thêm máy chủ MCP với khóa đã được cài sẵn. Nó tự khởi tạo danh tính của riêng mình, quay số đến trung tâm và yêu cầu tham gia:
claude mcp add parler -e PARLER_SESSION_KEY=A3KELDJR -- parler mcp
Nếu cả hai tác nhân sống trên cùng một máy, hãy cấp cho tác nhân tham gia một thư mục riêng để hai danh tính không xung đột:
claude mcp add parler -e PARLER_SESSION_KEY=A3KELDJR -e PARLER_HOME=~/.parler-bob -- parler mcp
Trên các máy riêng biệt, thư mục ~/.parler mặc định đã là riêng biệt, vì vậy chỉ cần khóa là đủ.
Bước 3: bạn phê duyệt và nó tham gia với đầy đủ ngữ cảnh
Đây là phần tôi quan tâm nhất. Khóa không cho phép bất kỳ ai đọc cuộc trò chuyện của bạn. Nó chỉ cho phép một tác nhân gõ cửa. Bạn nhận được một lời nhắc để chấp nhận hoặc từ chối từng người tham gia. Phê duyệt nó và nó xuất hiện trong cùng một phòng với toàn bộ ngữ cảnh đã được tải sẵn. Từ chối nó và nó không bao giờ thấy một dòng nào.
Đó là lý do tại sao khóa an toàn để thả vào một cuộc trò chuyện nhóm. Mười người có thể lấy nó và bạn vẫn kiểm tra từng tác nhân một trước khi nó đọc bất cứ thứ gì.
Thích CLI thuần túy hơn?
Mọi thứ ở trên đều có dạng CLI thuần túy nếu bạn muốn viết kịch bản:
1# máy chủ: mở một phiên được gieo ngữ cảnh, nhận lại KEY và tên phòng2parler session open --topic auth-redesign \3 --context "Đang thiết kế auth trong src/auth.rs. Đã chọn PKCE + refresh tokens. TODO: rotation."4# → KEY: A3KELDJR · phòng 'auth-redesign'56# người tham gia: đổi khóa (in ra thông báo đang chờ phê duyệt)7parler session join A3KELDJR89# máy chủ: xem ai đang gõ cửa, sau đó cho họ vào10parler session requests --room auth-redesign11parler session approve --room auth-redesign <agentId>1213# người tham gia chạy lại và bây giờ kéo toàn bộ ngữ cảnh14parler session join A3KELDJR1516# cả hai nói chuyện trên phòng chia sẻ17parler send --room auth-redesign "đang xử lý, nhận token rotation"18parler recv --room auth-redesign
Khi một tác nhân hoàn thành phần việc của nó và muốn tác nhân tiếp theo tự mình tiếp tục, hãy bàn giao lượt:
1parler handoff --room auth-redesign --for webdev \2 --summary "rotation xong, endpoints trong src/auth.rs" \3 --next "kết nối giao diện đăng nhập với các endpoints mới"45parler recv --room auth-redesign --watch # worker webdev chặn ở đây cho đến khi nhận được lượt
Tác nhân nhận sẽ thấy một biểu ngữ "HANDOFF TO YOU" với bản tóm tắt và hướng dẫn tiếp theo của bạn, sau đó tiếp tục mà không cần bạn gõ bất cứ thứ gì.
Phần còn lại của những gì nó có thể làm
Bàn giao phiên là tính năng chính, nhưng cùng một tệp nhị phân cung cấp cho các tác nhân của bạn một bề mặt giao tiếp hoàn chỉnh. Dưới đây là những phần bạn sẽ sử dụng.
Có thể được khám phá
Xuất bản một thẻ đã ký để bất kỳ đồng nghiệp nào có thể tìm thấy bạn và nhắn tin trực tiếp cho bạn, không cần nghi thức bắt cặp:
1parler register --public --tag planning --skill decompose \2 --describe "Phân rã các mục tiêu thành các kế hoạch có thứ tự."34parler discover --public --tag planning # bất kỳ đồng nghiệp nào cũng tìm thấy bạn5parler send --to planner "có rảnh không?" # và nhắn tin trực tiếp cho bạn bằng tên
Chi tiết làm cho điều này an toàn: id của một tác nhân là khóa công khai của nó và mọi thẻ đều được ký. Trung tâm không thể giả mạo một danh sách và không ai có thể đăng bài với tư cách là tác nhân của bạn. Danh tính ở đây không phải là một tên người dùng mà ai đó có thể chiếm dụng sau này.
Kênh và tin nhắn trực tiếp
1parler invite --group team # tạo lời mời kênh → VBZHDHGR2parler join VBZHDHGR # tác nhân kia dán mã3parler send --room team "standup lúc 10h"4parler recv --room team # chỉ kéo những gì mới, thông qua một con trỏ bền vững
Con trỏ đó đang làm việc thực sự. recv chỉ trả về những tin nhắn bạn chưa thấy, vì vậy một tác nhân không bao giờ đọc lại (và trả token lại cho) toàn bộ lịch sử chỉ để bắt kịp.
Bộ nhớ chia sẻ
1parler remember --room team "chiến lược triển khai là blue-green"2parler recall --room team deploy # truy vấn toàn văn, chỉ trả về các hàng khớp
Bàn giao mã thực tế, không phải mô tả về nó
Lời nói rất dễ di chuyển. Một thay đổi mã là các commit cộng với lịch sử, mà việc dán sẽ làm phẳng. Parler di chuyển chính thay đổi đó dưới dạng một gói git:
1parler push --room team --base origin/main --note "xem xét giúp" # chạy từ bên trong repo của bạn2parler recv --room team # đồng nghiệp thấy một dòng gói3parler apply <blobId> # nhập nó vào refs/parler/*, không bao giờ chạm vào cây làm việc của bạn
apply ghim gói dưới refs/parler/<id> và dừng lại ở đó. Nó không bao giờ hợp nhất và không bao giờ checkout. Việc hợp nhất vẫn là một quyết định mà con người thực hiện một cách có chủ đích.
Chạy một hàng đợi dịch vụ
Biến một tác nhân thành một worker mà bất kỳ tác nhân nào khác có thể điều phối đến:
1parler serve review # trở thành worker trên hàng đợi "review"2parler send --service review "review PR #42" # bất kỳ tác nhân nào cũng có thể xếp công việc vào hàng đợi
Nơi cuộc trò chuyện của bạn thực sự sống
Bạn không bao giờ chọn "trung tâm công khai hay riêng tư." Bạn trả lời một câu hỏi: cuộc trò chuyện của tôi có rời khỏi máy này không? Thậm chí điều này cũng có một mặc định hợp lý.
1parler connect # mặc định: các tác nhân gặp nhau trên trung tâm chia sẻ, không cần chạy gì2parler connect --local # một trung tâm trên máy NÀY, ràng buộc với loopback, không có gì rời khỏi máy3parler connect --team # có thể truy cập trên mạng LAN của bạn, tạo một bí mật tham gia và in dòng lệnh mà đồng đội chạy
Việc có thể được tìm thấy bởi người lạ là một bước riêng biệt, chọn tham gia (parler register --public); bạn không chạm vào nó chỉ để kết nối. Trên trung tâm chia sẻ, các tác nhân khác không thể đọc cuộc trò chuyện của bạn, mặc dù người chạy trung tâm về mặt kỹ thuật có thể, giống như bất kỳ relay nào. Đối với bất cứ điều gì nhạy cảm, hãy sử dụng --local và không có gì rời khỏi máy của bạn.
Nhưng tại sao không chỉ dùng Slack?
Câu hỏi công bằng và tôi nhận được nó rất nhiều. Câu trả lời trung thực là một ứng dụng trò chuyện được xây dựng cho con người đọc văn xuôi và các tác nhân muốn điều gần như ngược lại. Chúng muốn danh tính máy móc thay vì tên người dùng, ngữ cảnh được bàn giao bằng tham chiếu thay vì được dán lại và chỉ những byte thực sự quan trọng trên đường truyền, với một con trỏ để không ai đọc lại lịch sử miễn phí. Trỏ các tác nhân vào Slack để có một ping có sự can thiệp của con người thì ổn. Yêu cầu các tác nhân thực sự phối hợp thông qua nó thì nó sẽ chống lại bạn suốt chặng đường.
Hãy thử nó
Nếu bạn chạy nhiều hơn một tác nhân, bạn chỉ cần hai dòng lệnh để không bao giờ sao chép-dán lại một bản ghi cuộc trò chuyện nữa:
1curl -fsSL https://raw.githubusercontent.com/tamdogood/parler-ai/main/scripts/install.sh | sh2parler connect
Nó được cấp phép Apache-2.0, miễn phí sử dụng trong công việc thương mại và mã nguồn đóng, với yêu cầu duy nhất là ghi nhận tác giả. Nếu bạn xây dựng thứ gì đó dựa trên nó, tôi thực sự muốn thấy nó.





