zshell

Làm việc với tác nhân AI

Để tác nhân lập trình giao việc và phối hợp giữa các ô Zshell trong khi bạn vẫn tập trung và kiểm soát.

Tự động hóa Zshell chủ yếu dành cho tác nhân lập trình AI. Nó cho tác nhân cách an toàn để làm việc với các ô và phối hợp tác nhân khác, không phải ngôn ngữ lệnh mới mà bạn cần học.

Tích hợp AI mặc định bật. Cứ nói chuyện bình thường với tác nhân. Nó có thể tạo ô nền, khởi chạy tác nhân được giao việc, chạy lệnh, chờ kết quả và mang câu trả lời về mà không lấy tiêu điểm ô bạn đang dùng.

Chờ kết quả lệnh

Với các lệnh sẽ kết thúc như kiểm thử hoặc bản dựng, tác nhân có thể chờ mã thoát và thời gian chạy của chính lệnh đó rồi đọc đầu ra terminal gần đây đã lưu. Nếu hết thời gian chờ, lệnh vẫn tiếp tục chạy và có thể chờ lại cùng tác vụ mà không đổi tiêu điểm. Cần dấu nhắc trống trong zsh cục bộ ban đầu do Zshell khởi chạy; không hỗ trợ shell lồng nhau, SSH và chương trình khởi động tùy chỉnh. Đầu ra gần đây có giới hạn và có thể chứa các lệnh hoặc dấu nhắc trước đó. Hãy yêu cầu tác nhân lưu toàn bộ đầu ra vào tệp khi cần.

Các lệnh exit, logout và exec trực tiếp bị từ chối vì kết thúc hoặc thay thế shell gốc; hãy dùng /bin/sh -c để chạy chúng trong tiến trình con.

Thiết lập

Kiểm tra Cài đặt → Tự động hóa → AI. Mặc định bật; nếu từng tắt, hãy bật lại rồi mở terminal mới hoặc khởi động lại tác nhân đang chạy.

Zshell hỗ trợ Codex, Claude Code, Gemini CLI, Grok Build, OpenCode, Cursor Agent, Aider, Amp và Pi. Nếu thấy thiết lập tác nhân hiện có xung đột, Zshell giữ nguyên thiết lập đó, đưa công tắc về trạng thái trước và hiện lỗi trong Cài đặt.

Yêu cầu bằng ngôn ngữ tự nhiên

Nói kết quả bạn muốn. Ví dụ:

Chạy các kiểm thử liên quan trong ô nền và cho tôi biết chỗ thất bại.

Giao lỗi này cho tác nhân Codex khác, rồi xem xét kết quả của nó.

Hỏi tác nhân làm API xem schema đã sẵn sàng chưa, rồi chuyển câu trả lời cho tác nhân chạy kiểm thử.

Khởi động máy chủ phát triển cạnh chúng ta, đợi nó sẵn sàng và đưa tôi URL.

Kiểm tra tác nhân nền đã xong chưa. Nếu bị chặn, cho tôi biết nó cần gì.

Tác nhân dùng giao diện tự động hóa Zshell thay bạn. Bạn không cần gõ hay nhớ lệnh tự động hóa nào.

Phối hợp tác nhân giữa các ô

Bạn có thể chia việc liên quan vào nhiều ô Zshell và nhờ tác nhân chính phối hợp. Ví dụ một tác nhân làm API trong khi tác nhân khác cập nhật kiểm thử. Tác nhân điều phối hỏi kết quả của một tác nhân cụ thể, gửi yêu cầu tiếp theo, chuyển phần hữu ích cho tác nhân khác và trả lời tổng hợp. Chúng có thể dùng các công cụ lập trình được hỗ trợ khác nhau.

Cách này bỏ bước sao chép/dán của công việc song song. Mỗi tác nhân giữ hội thoại riêng trong ô riêng; tác nhân điều phối chỉ chuyển câu hỏi, cập nhật hoặc kết quả mà bên kia cần.

Gửi yêu cầu tiếp không có nghĩa công việc đã xong. Tác nhân điều phối vẫn đợi, đọc kết quả và kiểm tra đầu ra. Tin nhắn tác nhân khác cũng không được coi là sự chấp thuận của bạn. Quyền, thông tin xác thực, quyết định tin cậy và thao tác phá hủy vẫn quay về bạn.

Tiếp tục làm việc trong lúc chạy

Ô được giao việc ở nền trừ khi bạn muốn xem. Khi tích hợp vòng đời gốc của nhà cung cấp báo trạng thái, Zshell hiện trên ô và tab của tác nhân:

Trạng tháiÝ nghĩa với bạn
Đang làm việcTác nhân đang xử lý nhiệm vụ.
Bị chặnCần bạn nhập liệu, phê duyệt hoặc quyết định.
Hoàn tấtĐã xong ở nền và bạn chưa xem ô.

Zshell ưu tiên sự kiện gốc từ Codex, Claude Code, Pi, OpenCode và Grok, sau đó đến báo cáo rõ ràng của chương trình. Di chuột lên huy hiệu hoặc mở Agents để xem nguồn, lý do chờ, phần trăm và tác vụ con. Hook Codex phải được xem xét và tin cậy trong /hooks; Zshell không bỏ qua bước này.

Khi không có báo cáo gốc, chỉ một phần giới hạn ở cuối màn hình hiện tại của tiến trình Agent đã nhận diện được kiểm tra. Suy luận từ màn hình được ghi rõ, không báo hoàn thành, không gửi thông báo và không đáp ứng zshell +agent wait. Nó không phê duyệt yêu cầu. Hãy kiểm tra khung và kết quả thực tế.

Chương trình báo tiến độ bằng zshell +agent report và xóa báo cáo của mình bằng zshell +agent clear. Báo cáo hết hạn sau 120 giây không cập nhật hoặc khi tiến trình sở hữu kết thúc.

Khi tích hợp báo hoàn tất hoặc cần nhập liệu, Zshell cũng có thể gửi thông báo. Cmd+Shift+A chuyển tới tác nhân tiếp theo được báo cần bạn chú ý.

Mức dùng và giới hạn tài khoản

Cài đặt → Tự động hóa → Mức dùng tài khoản hiển thị giới hạn tài khoản khả dụng cho Claude Code và Codex, gồm phần trăm đã dùng, thời điểm đặt lại nếu có và lần cập nhật cuối. Dùng Làm mới mức dùng để lấy dữ liệu mới nhất.

Codex cần CLI đã cài, đăng nhập và có khả năng báo giới hạn tài khoản. Mức dùng Claude Code xuất hiện khi Zshell nhận báo cáo sử dụng qua dòng trạng thái của nhà cung cấp. Mục chỉ hiện khi có dữ liệu; các khoảng thời gian được hỗ trợ tùy nhà cung cấp và tài khoản. Đây là giới hạn tài khoản, không phải tổng token của phiên đang có tiêu điểm.

Quy trình điển hình

  1. Chạy tác nhân lập trình quen dùng trong terminal Zshell.
  2. Yêu cầu giao nhiệm vụ có phạm vi rõ, chạy việc nền hoặc phối hợp tác nhân khác.
  3. Tiếp tục làm trong ô hiện tại, trong khi Zshell giữ công việc được giao hiển thị trong bố cục dự án.
  4. Theo dõi huy hiệu Đang làm việc, Bị chặn, Hoàn tất do nhà cung cấp báo nếu có. Nếu công cụ không báo vòng đời, mở ô để xem hội thoại hoặc đầu ra terminal.
  5. Xem tệp kết quả trong bảng Git, kiểm tra diff và quyết định giữ gì.

Bạn vẫn nắm quyền

  • Tự động hóa tác nhân giới hạn trong dự án Zshell hiện tại, không chạm ô của dự án hoặc cửa sổ khác.
  • Công việc nền không lấy tiêu điểm trừ khi bạn yêu cầu rõ.
  • Zshell không trả lời thay bạn các lời nhắc về quyền, thông tin xác thực, tin cậy hoặc thao tác phá hủy. Tác nhân bị chặn theo báo cáo trả quyết định cho bạn.
  • Hoàn tất được báo là tín hiệu để xem xét, không phải tự phê duyệt thay đổi.

Nếu tác nhân không dùng Zshell

  • Xác nhận Cài đặt → Tự động hóa → AI đang bật.
  • Mở terminal mới nếu terminal hiện tại có trước khi bật tùy chọn.
  • Khởi động lại tác nhân đã chạy trước lúc bật.
  • Kiểm tra lỗi thiết lập hiển thị ngay trong Cài đặt.
  • Yêu cầu rõ “ô nền Zshell” hoặc “tác nhân Zshell được giao việc” nếu muốn dùng quy trình này cho nhiệm vụ.

Tiếp tục cuộc trò chuyện gốc

Khi bật Tiếp tục cuộc trò chuyện của tác nhân, ngăn không có PTY gốc khả dụng sẽ tiếp tục cuộc trò chuyện Claude Code, Codex, Pi hoặc OpenCode đã lưu của ngăn đó. Các ngăn trong cùng thư mục giữ cuộc trò chuyện riêng.

Zshell cài hook SessionStart cho Claude Code và Codex, phần mở rộng Pi và plugin TUI OpenCode vào cấu hình nhà cung cấp hiện có. Các hook, plugin, cài đặt và chú thích JSONC khác được giữ lại. Khi nhà cung cấp yêu cầu, bật hook trong xác nhận tin cậy của Claude Code và duyệt hook Codex mới trong /hooks. Khởi động lại tác nhân đã chạy trước khi cài đặt.

Chỉ tiếp tục cuộc trò chuyện gốc đã xác minh được các tích hợp này báo cáo. Phiên app-server Codex dùng chung được hỗ trợ khi ID cuộc trò chuyện đã xác minh khớp với ngăn; kết quả không rõ ràng sẽ không được liên kết. Với cuộc trò chuyện trên máy từ xa, xem phiên từ xa dùng chung. OpenCode cần API plugin TUI; phiên bản cũ, phiên máy chủ không giao diện và opencode attach không được hỗ trợ. Tác nhân con không thể thay cuộc trò chuyện của ngăn cha. Pi cần tệp phiên đã lưu.

Thiếu danh tính được xác minh, thư mục gốc hoặc tệp Pi sẽ mở shell mới. Không tìm thấy CLI cũng quay về shell. Zshell không chạy lại lệnh khởi động tùy ý hoặc chọn cuộc trò chuyện gần nhất. CLI hiển thị lỗi nhà cung cấp, như cuộc trò chuyện đã bị xóa.

Tìm và tiếp tục hội thoại đã lưu

Mở Tác tử → Lịch sử hội thoại của tác nhân, nhấn đồng hồ ở đầu thanh bên dự án. Tìm trên các dự án theo tiêu đề, nhà cung cấp, dự án, ID hội thoại, thư mục làm việc hoặc cấu hình. Zshell giữ 200 hội thoại cục bộ đã xác minh gần nhất sau khi tác nhân và ngăn đóng, cũng như sau khi ứng dụng khởi động lại. Gần đây hiển thị 20 kết quả chưa lưu trữ; Tất cả bao gồm mục đã lưu trữ; Đã lưu trữ chỉ hiển thị các mục đó.

Chọn Hiện hội thoại nếu đang mở hoặc Tiếp tục hội thoại nếu đã lưu. Zshell dùng lại ngăn đang mở, kết nối lại PTY còn hoạt động hoặc tiếp tục đúng hội thoại của nhà cung cấp bằng thư mục và cấu hình ban đầu. Tiếp tục thủ công cần bật tích hợp AI ngay cả khi tắt khôi phục tự động. Thư mục bị thiếu hoặc tệp Pi bị thiếu hay không khớp sẽ báo lỗi trước khi tạo ngăn.

Lưu trữ ẩn mục khỏi Gần đây; Bỏ lưu trữ đưa mục trở lại. Xóa… chỉ xóa lịch sử Zshell và giữ tệp hội thoại của nhà cung cấp.

Trong ngăn Zshell, zshell +agent history --all và zshell +agent resume --id HISTORY_UUID giới hạn ở dự án của ngăn. Từ terminal bên ngoài thông thường, giữ Zshell chạy, tìm UUID dự án rồi chọn rõ ràng:

zshell +agent history projects
zshell +agent history --project PROJECT_UUID --all
zshell +agent resume --project PROJECT_UUID --id HISTORY_UUID --focus

CLI tiếp tục ở nền trừ khi thêm --focus. Với dự án mở trong nhiều cửa sổ, chọn --window WINDOW_UUID từ history projects. Nếu có nhiều phiên bản ứng dụng đang chạy, dùng --connection PATH với đường dẫn tuyệt đối của tệp kết nối riêng do CLI chỉ ra. Các tùy chọn này dành cho terminal bên ngoài; tiến trình trong ngăn vẫn giữ phạm vi dự án ban đầu.

Theo dõi sự kiện dự án trực tiếp

Chạy zshell +events trong terminal Zshell để nhận thay đổi tiếp theo của dự án và cửa sổ đó dưới dạng NDJSON, không thăm dò định kỳ. Tùy chọn: --pane UUID, --event NAME có thể lặp lại, --once và --timeout MS (0 chờ vô hạn).

Bao gồm tạo và đóng phiên, ngăn, tiêu điểm, tiến độ, yêu cầu chú ý và hoàn thành của agent, cùng lệnh hoàn tất. stream.ready bắt đầu ở sequence 0; mỗi sự kiện khớp tăng thứ tự. Mỗi dòng gồm version, event, stream_id, sequence, time theo mili giây Unix, project_id và data. Không phát lại lịch sử. Đọc kết quả bằng +pane wait --task UUID.

Giới hạn: 32 đăng ký, 256 khung và 1 MiB mỗi hàng đợi, 64 KiB mỗi khung. Bên đọc chậm nhận stream.lagged nếu có thể rồi ngắt; không ghi được trong 2 giây cũng đóng kết nối. Chậm, ngắt bất ngờ hoặc sai thứ tự trả mã khác 0. Đăng ký lại và đọc trạng thái hiện tại. Đóng terminal, đổi token hoặc chuyển sang dự án/cửa sổ khác kết thúc đăng ký. Không có điều khiển bên ngoài hay --project; xóa biến môi trường không tăng quyền. --once hết giờ không khớp trả 124; hết giờ thông thường trả 0.

zshell +events --event command.task.finished --once --timeout 30000

pane.updated: data.from → data (tab_id, pane_id, terminal_id, content).