Chuyển tới nội dung chính

Cây làm việc Git

Hermes Agent thường được sử dụng trên các kho lưu trữ lớn và tồn tại lâu dài. Khi bạn muốn:

  • Chạy nhiều tác nhân song song trên cùng một dự án, hoặc
  • Tách biệt các công cụ tái cấu trúc thử nghiệm khỏi nhánh chính của bạn,

Git worktrees là cách an toàn nhất để cung cấp cho mỗi tác nhân quyền kiểm tra riêng mà không cần sao chép toàn bộ kho lưu trữ.

Trang này trình bày cách kết hợp các cây làm việc với Hermes để mỗi phiên có một thư mục làm việc sạch sẽ, tách biệt.

Tại sao nên sử dụng Worktrees với Hermes?

Hermes coi thư mục làm việc hiện tại là thư mục gốc của dự án:

  • CLI: thư mục nơi bạn chạy hermes hoặc hermes chat
  • Cổng nhắn tin: thư mục do MESSAGING_CWD đặt

Nếu bạn điều hành nhiều tổng đài viên trong cùng một lần thanh toán, các thay đổi của chúng có thể ảnh hưởng lẫn nhau:

  • Một tác nhân có thể xóa hoặc viết lại các tập tin mà tác nhân kia đang sử dụng.
  • Việc hiểu những thay đổi nào thuộc về thí nghiệm nào trở nên khó khăn hơn.

Với cây công việc, mỗi tác nhân sẽ nhận được:

  • Chi nhánh và thư mục làm việc riêng
  • Lịch sử Trình quản lý điểm kiểm tra của riêng nó** cho /rollback

Xem thêm: Điểm kiểm tra và /rollback.

Bắt đầu nhanh: Tạo cây làm việc

Từ kho lưu trữ chính của bạn (chứa .git/ ), hãy tạo một cây công việc mới cho nhánh tính năng:

# From the main repo root
cd /path/to/your/repo

# Create a new branch and worktree in ../repo-feature
git worktree add ../repo-feature feature/hermes-experiment

Điều này tạo ra:

  • Một thư mục mới: ../repo-feature
  • Một nhánh mới: feature/hermes-experiment đã được kiểm xuất trong thư mục đó

Bây giờ bạn có thể cd vào cây công việc mới và chạy Hermes ở đó:

cd ../repo-feature

# Start Hermes in the worktree
hermes

Hermes sẽ:

  • Xem ../repo-feature làm gốc dự án.
  • Sử dụng thư mục đó cho các tệp ngữ cảnh, chỉnh sửa mã và công cụ.
  • Sử dụng lịch sử điểm kiểm tra riêng cho /rollback trong phạm vi cây công việc này.

Chạy song song nhiều Agent

Bạn có thể tạo nhiều cây làm việc, mỗi cây có nhánh riêng:

cd /path/to/your/repo

git worktree add ../repo-experiment-a feature/hermes-a
git worktree add ../repo-experiment-b feature/hermes-b

Trong các terminal riêng biệt:

# Terminal 1
cd ../repo-experiment-a
hermes

# Terminal 2
cd ../repo-experiment-b
hermes

Mỗi quá trình Hermes:

  • Hoạt động trên nhánh riêng của nó ( feature/hermes-a so với feature/hermes-b ).
  • Ghi các điểm kiểm tra dưới hàm băm repo bóng khác (bắt nguồn từ đường dẫn cây công việc).
  • Có thể sử dụng /rollback độc lập mà không ảnh hưởng đến cái khác.

Điều này đặc biệt hữu ích khi:

  • Chạy các trình tái cấu trúc hàng loạt.
  • Thử các cách tiếp cận khác nhau cho cùng một nhiệm vụ.
  • Ghép nối các phiên CLI + cổng với cùng một kho lưu trữ ngược dòng.

Dọn dẹp cây làm việc một cách an toàn

Khi bạn hoàn thành một thử nghiệm:

  1. Quyết định giữ hay loại bỏ tác phẩm.
  2. Nếu bạn muốn giữ nó:
    • Gộp nhánh vào nhánh chính của bạn như bình thường.
  3. Xóa cây làm việc:
cd /path/to/your/repo

# Remove the worktree directory and its reference
git worktree remove ../repo-feature

Ghi chú:

  • git worktree remove sẽ từ chối xóa cây công việc có những thay đổi chưa được cam kết trừ khi bạn ép buộc.
  • Việc xóa một cây làm việc không tự động xóa nhánh; bạn có thể xóa hoặc giữ nhánh bằng các lệnh git branch thông thường.
  • Dữ liệu điểm kiểm tra Hermes trong ~/.hermes/checkpoints/ không được tự động cắt bớt khi bạn xóa cây công việc nhưng nó thường rất nhỏ.

Các phương pháp hay nhất- Một cây công việc cho mỗi thí nghiệm của Hermes

  • Tạo một nhánh/cây công việc dành riêng cho mỗi thay đổi đáng kể.
  • Điều này giúp tập trung vào những khác biệt và PR ở mức nhỏ và có thể xem xét được.
  • Đặt tên các nhánh sau khi thử nghiệm
    • ví dụ feature/hermes-checkpoints-docs , feature/hermes-refactor-tests .
  • Cam kết thường xuyên
    • Sử dụng cam kết git cho các cột mốc cấp cao.
    • Sử dụng điểm kiểm tra và /rollback làm mạng lưới an toàn cho các chỉnh sửa dựa trên công cụ ở giữa.
  • Tránh chạy Hermes từ gốc repo trần khi sử dụng cây công việc
    • Thay vào đó, hãy ưu tiên các thư mục cây làm việc để mỗi tác nhân có phạm vi rõ ràng.

Sử dụng hermes -w (Chế độ cây làm việc tự động)

Hermes có cờ -w tích hợp sẵn tự động tạo cây công việc git dùng một lần với nhánh riêng của nó. Bạn không cần thiết lập cây công việc theo cách thủ công — chỉ cần cd vào kho lưu trữ của bạn và chạy:

cd /path/to/your/repo
hermes -w

Hermes sẽ:

  • Tạo một cây làm việc tạm thời trong .worktrees/ bên trong kho lưu trữ của bạn.
  • Kiểm tra một nhánh riêng biệt (ví dụ hermes/hermes-<hash> ).
  • Chạy phiên CLI đầy đủ bên trong cây công việc đó.

Đây là cách dễ nhất để có được sự cô lập của cây làm việc. Bạn cũng có thể kết hợp nó với một truy vấn duy nhất:

hermes -w -q "Fix issue #123"

Đối với các tác nhân song song, hãy mở nhiều terminal và chạy hermes -w trong mỗi terminal — mọi lệnh gọi sẽ tự động có cây làm việc và nhánh riêng.

Kết hợp tất cả lại với nhau

  • Sử dụng git Worktrees để cung cấp cho mỗi phiên Hermes quyền kiểm tra rõ ràng.
  • Sử dụng nhánh để nắm bắt lịch sử cấp cao của các thử nghiệm của bạn.
  • Sử dụng **điểm kiểm tra + /rollback ** để khắc phục các lỗi trong mỗi cây công việc.

Sự kết hợp này mang lại cho bạn:

  • Đảm bảo mạnh mẽ rằng các tác nhân và thí nghiệm khác nhau không dẫm lên nhau.
  • Chu kỳ lặp lại nhanh và dễ dàng phục hồi sau những chỉnh sửa sai.
  • Yêu cầu kéo sạch sẽ, có thể xem xét được.