Hacker News Nổi bật (buzzing.cc bản dịch tiếng Trung)
85

Sản phẩm

Claude Code ra mắt tính năng nhắn tin liên phiên: Đồng bộ công việc giữa các terminal

(giờ Việt Nam)

Tóm tắt AI

Claude Code vừa cập nhật tính năng cho phép gửi tin nhắn giữa các phiên làm việc khác nhau, giúp lập trình viên dễ dàng đồng bộ ngữ cảnh và truyền lệnh qua nhiều cửa sổ terminal.

Bản dịch AI

Tính năng nhắn tin giữa các phiên (cross-session messaging) cho phép Claude gửi tin nhắn từ một phiên Claude Code này sang một phiên khác. Khi một thay đổi trong phiên này làm gián đoạn công việc mà phiên khác đang thực hiện, Claude có thể cảnh báo phiên đó trước khi bạn kịp nhận ra. Khi một phiên giải quyết được vấn đề mà phiên khác đang gặp khó khăn, Claude có thể gửi câu trả lời qua đó. Tin nhắn là một đoạn văn bản do một Claude viết cho Claude khác, không bao giờ bao gồm lịch sử trò chuyện hay tệp tin. Để chuyển toàn bộ cuộc trò chuyện hoặc ngữ cảnh của nó, hãy sử dụng tính năng khôi phục phiên (resume session). Claude sử dụng hai công cụ cho việc này: ListAgents để khám phá các tác nhân (agent) mà nó có thể liên lạc, và SendMessage để gửi tin nhắn đến một trong số chúng theo tên. Với cùng công cụ SendMessage, Claude cũng có thể nhắn tin cho các tác nhân phụ (subagents) và đồng đội trong nhóm tác nhân trong cùng một phiên hoặc nhóm. Trang này đề cập đến việc nhắn tin giữa các phiên độc lập của bạn.

Khi nào nên sử dụng tính năng nhắn tin giữa các phiên

Hãy sử dụng tính năng nhắn tin khi một trong các phiên của bạn có thông tin mà phiên khác cần trong quá trình thực hiện tác vụ. Claude có thể tự gửi tin nhắn khi thấy cần thiết, ví dụ như sau khi thực hiện một thay đổi ảnh hưởng đến công việc của phiên khác, hoặc bạn có thể yêu cầu nó gửi. Các trường hợp phổ biến:

Sử dụng tính năng nhắn tin giữa các phiên độc lập mà bạn tự khởi chạy và điều khiển. Claude Code có tính năng riêng cho từng cách chạy hoặc kết nối nhiều phiên, vì vậy hãy sử dụng tính năng phù hợp với công việc bạn đang làm:

Nhắn tin cho phiên khác

Khi một trong các phiên của bạn tìm ra thông tin mà phiên khác cần, chẳng hạn như kết quả tìm kiếm, trạng thái hoặc quyết định, Claude sẽ chuyển tiếp thông tin đó thay vì bạn phải sao chép-dán giữa các terminal. Claude tự khám phá mục tiêu bằng ListAgents và gửi bằng SendMessage, vì vậy bạn không bao giờ phải tự gọi các công cụ này. Claude có thể tự quyết định gửi tin nhắn mà không cần yêu cầu, và bạn cũng có thể nhắc nó gửi. Để tự đưa ra yêu cầu, hãy nói với Claude những gì bạn muốn phiên kia biết hoặc thực hiện. Ví dụ này là một câu lệnh bạn nhập, không phải tin nhắn Claude gửi:

Claude tự viết nội dung tin nhắn thực tế, vì vậy câu lệnh của bạn có thể để phần nội dung cho Claude tự xử lý. Câu lệnh này yêu cầu một bản tóm tắt mà không cần chỉ định cách diễn đạt, và nội dung Claude gửi sẽ thay đổi tùy theo ngữ cảnh:

Để biết tin nhắn do Claude viết trông như thế nào khi đến nơi, bao gồm cả ví dụ, hãy xem phần "tin nhắn trông như thế nào".

Gửi tin nhắn

Claude nhận tin nhắn sẽ đọc nội dung giữa các lần gọi công cụ trong một lượt hoạt động, vì vậy một công cụ đang chạy sẽ không bao giờ bị gián đoạn. Khi phiên nhận đang ở trạng thái nhàn rỗi, Claude Code sẽ bắt đầu một lượt mới với tin nhắn đó. Giữa hai phiên tương tác thông thường với cài đặt mặc định, Claude Code sẽ gửi tin nhắn. Tuy nhiên, việc gửi không được đảm bảo trong mọi cấu hình. Phiên nhận sẽ kiểm tra từng tin nhắn đến dựa trên các kiểm soát đầu vào của chính nó, và quá trình kiểm tra sẽ dẫn đến một trong ba kết quả:

Sau khi được gửi, tin nhắn được tính vào mức sử dụng giống như một câu lệnh bạn nhập, và Claude nhận có thể trả lời người gửi theo cách tương tự, ngoại trừ trường hợp gửi một chiều giữa các máy. Các ranh giới quyền hạn vẫn được duy trì theo từng phiên. Claude được hướng dẫn không bao giờ yêu cầu phiên khác thực hiện một hành động đã bị từ chối hoặc chặn trong phiên của chính nó, hoặc bị cài đặt quyền hạn của chính nó chặn, và thay vào đó sẽ chuyển công việc đó lại cho bạn. Ở phía nhận, các câu lệnh và quy tắc quyền hạn của phiên nhận vẫn áp dụng cho bất kỳ yêu cầu nào trong tin nhắn.

Xem các phiên mà Claude có thể liên lạc

Claude tự tìm mục tiêu của tin nhắn, vì vậy bạn không cần chạy bất kỳ lệnh nào trước khi yêu cầu nó gửi. Để tự mình xem các phiên mà Claude có thể liên lạc, hãy chạy lệnh /list-agents. Lệnh này liệt kê từng phiên cùng với tên mà nó phản hồi, và tên đó chính là nơi Claude gửi tin nhắn đến. Danh sách bao gồm:

Một phiên phản hồi theo tên bạn đặt bằng lệnh /rename hoặc cờ --name. Khi bạn không đặt tên, Claude Code sẽ tự đặt tên cho phiên đó. Một phiên tương tác sẽ có tên bắt nguồn từ tên thư mục làm việc của nó, ví dụ như myapp-3f. Hai phiên có thể trùng tên nhau. Kết quả của /list-agents hiển thị thư mục làm việc của từng phiên cục bộ, giúp phân biệt các phiên trùng tên khi chúng chạy trong các thư mục khác nhau. Danh sách của Claude thêm một mã định danh ngắn vào mỗi hàng và sử dụng nó trong địa chỉ khi tên bị trùng.

Nhắn tin cho các phiên trên máy khác

Vị trí chạy của phiên kia quyết định cách tin nhắn di chuyển và những gì Claude ở đây có thể gửi:

Việc gửi tin nhắn trên cùng một máy hoạt động ở bất cứ nơi nào tính năng này được bật. Mỗi phiên tự đăng ký vào các tệp trên đĩa và liên kết socket hộp thư đến của nó tại đó. Khi Claude liệt kê hoặc nhắn tin cho các phiên cục bộ của bạn, Claude Code sẽ đọc các tệp đó để tìm chúng, vì vậy hai phiên chỉ có thể liên lạc với nhau khi chúng nhìn thấy cùng một tệp. Một container có hệ thống tệp riêng, vì vậy một phiên bên trong nó và một phiên trên máy chủ (host) không thể liên lạc với nhau. Hai phiên bên trong cùng một container vẫn có thể nhắn tin cho nhau, kể cả trên một runner tự lưu trữ (self-hosted). Một phản hồi cần có địa chỉ phản hồi, và hầu hết mọi tin nhắn đều mang theo địa chỉ này. Một phản hồi gửi đến một phiên ngoài máy này, được gửi khi phiên phản hồi không kết nối với Remote Control, vẫn được thực hiện như một yêu cầu trực tiếp đến máy chủ Anthropic, nhưng nó đến mà không có địa chỉ phản hồi, vì vậy người nhận không thể trả lời. Claude sẽ được thông báo về điều này khi nó gửi tin nhắn. Để yêu cầu sự chấp thuận của bạn trước khi bất kỳ tin nhắn nào ra khỏi máy này, hãy đặt isolatePeerMachines.

Cách một phiên xử lý tin nhắn đến

Khi phiên A nhắn tin cho phiên B, Claude Code thông báo cho Claude của phiên B rằng tin nhắn đến từ một phiên khác, không phải từ bạn, và giới hạn những gì tin nhắn đó có thể thực hiện:

Tin nhắn trông như thế nào

Khi tin nhắn đến, nó xuất hiện trong cuộc trò chuyện với người gửi, được xếp hàng trong khi Claude đang ở giữa lượt hoặc bắt đầu một lượt mới ngay lập tức khi phiên đang nhàn rỗi. Sau khi Claude đã đọc, Claude Code thu gọn nó thành một dòng "Message from", có thể mở rộng bằng Ctrl+O. Tin nhắn là một đoạn văn bản do một Claude viết cho Claude khác. Claude nhận được tin nhắn cùng với tên người gửi và địa chỉ phản hồi, ngoại trừ trường hợp phản hồi một chiều giữa các máy, vốn không có địa chỉ phản hồi. Bạn thấy tên và văn bản, và phiên nhận chỉ nhận được văn bản đó, không bao giờ nhận được lịch sử trò chuyện hay tệp tin của người gửi. Ví dụ này là một tin nhắn mà một Claude đã viết cho Claude khác, như phiên nhận nhìn thấy:

Kiểm soát tin nhắn đến

Đặt crossSessionInbound để chọn cách một phiên xử lý các tin nhắn đến từ các phiên khác của bạn:

Để xem giá trị nào được áp dụng, hãy tuân theo các quy tắc ưu tiên crossSessionInbound trong tài liệu tham khảo cài đặt. Khi không có giá trị nào được áp dụng, Claude Code sẽ quyết định cho từng tin nhắn dựa trên chế độ quyền hạn của hai phiên. Nó nhóm các phiên bỏ qua các câu lệnh quyền hạn vào một loại, và mọi phiên khác vào loại còn lại. Chế độ Plan được tính là bỏ qua trong các phiên có sẵn quyền bỏ qua, và auto, acceptEdits, dontAsk được tính là yêu cầu xác nhận:

Khi cài đặt mặc định giữ lại một tin nhắn, Claude Code sẽ mở một hộp thoại phê duyệt trong phiên nhận. Hộp thoại hiển thị người gửi và bản xem trước:

Khi người gửi chạy trên cùng một máy, Claude Code sẽ thông báo cho phiên gửi biết điều gì đã xảy ra. Một thông báo xuất hiện ở đó khi tin nhắn bị giữ lại, và một thông báo tiếp theo sẽ báo cáo kết quả khi người nhận sau đó gửi, từ chối hoặc để tin nhắn hết hạn. Một tin nhắn bị từ chối khi đến nơi sẽ không tạo ra thông báo ở phía người gửi. Claude Code giữ tối đa 100 tin nhắn, tách biệt với hàng đợi gửi, và sau đó sẽ loại bỏ tin nhắn cũ nhất.

Các phiên không tương tác

Claude Code liên kết một socket hộp thư đến cho một phiên claude -p giống như một phiên tương tác, vì vậy một worker -p chạy lâu dài có thể nhận tin nhắn và xuất hiện trong danh sách. Khi bạn bắt đầu một phiên ở chế độ bare, Claude Code không liên kết socket, vì vậy phiên đó không thể nhận tin nhắn và không xuất hiện trong danh sách tác nhân. Một phiên -p không thể hiển thị hộp thoại phê duyệt. Một tin nhắn bị giữ lại sẽ vẫn ở trạng thái đó. Claude Code chỉ gửi nó nếu một chế độ hoặc thay đổi cài đặt sau đó cho phép, theo các quy tắc tương tự như trên. Để cho phép một worker -p nhận tin nhắn mà không cần giám sát, hãy khởi chạy nó với crossSessionInbound được đặt thành accept trong giá trị --settings của nó. Một thiết lập accept trong cài đặt người dùng của bạn cũng có tác dụng nhưng sẽ áp dụng cho mọi phiên bạn chạy.

Socket hộp thư đến của phiên

Hãy đọc phần này khi một phiên bạn mong đợi không có trong danh sách tác nhân, khi bạn muốn một tập lệnh hoặc hook đăng vào một phiên, hoặc khi một lệnh trong môi trường sandbox không thể truy cập socket. Claude Code liên kết một socket hộp thư đến cho mỗi phiên đã bật tính năng nhắn tin giữa các phiên, nơi các phiên khác trên máy gửi tin nhắn đến. Nó giới hạn socket cho người dùng hệ điều hành của bạn, vì vậy trên một máy dùng chung, các phiên của người dùng khác không thể truy cập nó. Để biết loại phiên nào liên kết socket, hãy xem phần Các phiên không tương tác. Bạn có thể tìm thấy đường dẫn ở hai nơi:

Claude Code chạy các tin nhắn đến trên socket thông qua các kiểm soát đầu vào giống như bất kỳ tin nhắn ngang hàng nào khác, với một ngoại lệ và một điều kiện tiên quyết:

Hạn chế nhắn tin giữa các phiên

Ngoài các cài đặt mặc định cho từng tin nhắn, bạn có thể thu hẹp phạm vi nhắn tin theo hai cách. Yêu cầu sự chấp thuận của bạn trước khi bất kỳ tin nhắn nào rời khỏi máy, hoặc tắt tính năng nhắn tin cho một phiên hoặc một tổ chức.

Yêu cầu phê duyệt cho tin nhắn giữa các máy

Đặt isolatePeerMachines thành true để yêu cầu sự chấp thuận rõ ràng của bạn trước khi bất kỳ SendMessage nào đến được một phiên ngoài máy này:

Với cài đặt này, Claude Code yêu cầu sự chấp thuận của bạn trước khi phản hồi của Claude gửi đến một phiên ngoài máy này được thực hiện, ngay cả ở chế độ bypassPermissions, vốn bỏ qua các câu lệnh quyền hạn thông thường. Giá trị true từ bất kỳ phạm vi cài đặt nào cũng được áp dụng, vì vậy một tệp dự án đã được kiểm tra (checked-in) có thể bật yêu cầu này nhưng không thể tắt nó. Các tin nhắn giữa các phiên trên cùng một máy không yêu cầu xác nhận.

Tắt tính năng nhắn tin giữa các phiên

Việc nhận và gửi là các kiểm soát riêng biệt, vì vậy hãy tắt hướng nào bạn cần, hoặc cả hai. Sử dụng crossSessionInbound cho các tin nhắn đến, và các quy tắc quyền hạn cho những gì Claude ở đây có thể gửi hoặc liệt kê:

Quản trị viên có thể tắt cả hai phía cho một tổ chức trong cài đặt được quản lý, kết hợp các quy tắc từ chối với việc từ chối:

Với thiết lập này, Claude Code vẫn liên kết socket hộp thư đến của mỗi phiên, nhưng sẽ loại bỏ mọi tin nhắn đến mà không gửi bất cứ thứ gì cho Claude. Việc từ chối SendMessage cũng loại bỏ khả năng nhắn tin cho các tác nhân phụ và đồng đội trong nhóm tác nhân, vì cùng một công cụ phục vụ cả hai. Một phiên từ chối không hiển thị thay đổi rõ ràng nào trong /status của chính nó hoặc trong danh sách của các phiên khác, vì vậy hãy xác nhận cài đặt từ cấu hình của phiên đó.

Claude CodeLập trìnhAI AgentCông cụ phát triển
Đọc bài gốc

Bài viết được AI dịch và tổng hợp tự động từ Hacker News Nổi bật (buzzing.cc bản dịch tiếng Trung). Liên kết bài gốc ở phía trên. Dữ liệu đồng bộ qua API công khai được ghi nguồn tại AI HOT (canonical) ↗. AIHOT.vn luôn dẫn nguồn đầy đủ — nếu bạn thấy điểm cần chỉnh sửa, hãy gửi ý kiến tại trang phản hồi.