Bỏ qua để đến nội dung

Giữ Claude làm việc hướng tới một mục tiêu

Bài viết được dịch tự động từ bài viết gốc, chưa được kiểm tra lại bởi con người. Chỉ những bài viết có dấu tick xanh cạnh tiêu đề là đã được kiểm tra.

Lệnh /goal đặt một điều kiện hoàn thành, và Claude tiếp tục làm việc hướng tới điều kiện đó mà không cần bạn nhắc từng bước. Sau mỗi lượt, một model nhỏ và nhanh kiểm tra xem điều kiện đã đạt chưa. Nếu chưa, Claude bắt đầu lượt tiếp theo thay vì trả quyền điều khiển lại cho bạn. Goal tự động xoá khi điều kiện được đáp ứng.

Dùng goal cho việc lớn có điểm kết thúc kiểm chứng được:

  • Migrate một module sang API mới cho đến khi mọi call site compile và test pass
  • Triển khai một design doc cho đến khi mọi tiêu chí nghiệm thu đều đạt
  • Tách một file lớn thành nhiều module nhỏ cho đến khi mỗi file dưới một ngưỡng kích thước
  • Xử lý một backlog issue có nhãn cho đến khi hàng đợi trống

So sánh các cách giữ phiên tiếp tục chạy

Phần tiêu đề “So sánh các cách giữ phiên tiếp tục chạy”

Ba cách sau giữ phiên hiện tại tiếp tục chạy giữa các prompt. Chọn dựa trên điều gì khởi động lượt tiếp theo:

Cách tiếp cậnLượt tiếp theo bắt đầu khiDừng khi
/goalLượt trước kết thúcModel xác nhận điều kiện đã đạt
/loopMột khoảng thời gian trôi quaBạn dừng, hoặc Claude tự quyết việc đã xong
Stop hookLượt trước kết thúcScript hoặc prompt của bạn tự quyết định

/goal và Stop hook đều kích hoạt sau mỗi lượt. /goal là một shortcut gắn với phiên: bạn gõ điều kiện và nó chỉ có hiệu lực cho phiên hiện tại. Stop hook nằm trong file settings, áp dụng cho mọi phiên trong phạm vi của nó, và có thể chạy script (kiểm tra tất định) hoặc prompt (model đánh giá).

Auto mode tự duyệt tool call trong một lượt nhưng không tự khởi động lượt mới - Claude dừng khi tự thấy việc đã xong. /goal thêm một bộ đánh giá riêng kiểm tra điều kiện sau mỗi lượt, nên việc hoàn thành do một model mới quyết định thay vì chính model đang làm việc. Hai cái bổ trợ nhau: auto mode bỏ prompt theo từng tool, /goal bỏ prompt theo từng lượt.

Mỗi phiên chỉ có một goal hoạt động. Cùng một lệnh dùng để đặt, kiểm tra, và xoá goal tuỳ tham số.

Chạy /goal theo sau là điều kiện bạn muốn đạt được. Nếu đã có goal đang hoạt động, goal mới sẽ thay thế.

/goal all tests in test/auth pass and the lint step is clean

Đặt goal khởi động một lượt ngay lập tức, với chính điều kiện đó làm chỉ dẫn - không cần gửi prompt riêng. Trong lúc goal hoạt động, chỉ báo ◎ /goal active hiện thời gian goal đã chạy.

Goal không thay đổi permission. Ở chế độ permission mặc định, Claude vẫn hỏi trước các tool call mà settings của bạn chưa cho phép sẵn. Muốn các lượt chạy không giám sát, kết hợp /goal với auto mode.

Sau mỗi lượt, bộ đánh giá trả về một lý do ngắn giải thích vì sao điều kiện đạt hay chưa đạt. Lý do gần nhất hiện trong status view và transcript để bạn thấy Claude đang hướng tới điều gì tiếp theo.

Bộ đánh giá xét điều kiện của bạn dựa trên những gì Claude đã thể hiện trong hội thoại - nó không tự chạy lệnh hay đọc file, nên hãy viết điều kiện là thứ mà output của Claude có thể chứng minh được. “Mọi test trong test/auth đều pass” hiệu quả vì Claude chạy test và kết quả nằm trong transcript để bộ đánh giá đọc.

Một điều kiện tốt qua nhiều lượt thường có:

  • Một trạng thái kết thúc đo được: kết quả test, exit code của build, số lượng file, hàng đợi rỗng
  • Một cách kiểm tra rõ ràng: Claude chứng minh thế nào, ví dụ “npm test exit 0” hay “git status sạch”
  • Ràng buộc quan trọng: điều gì không được thay đổi trên đường đi, ví dụ “không sửa file test nào khác”

Điều kiện tối đa 4.000 ký tự. Muốn giới hạn goal chạy bao lâu, thêm mệnh đề về lượt hoặc thời gian, ví dụ or stop after 20 turns. Claude báo cáo tiến độ so với mệnh đề đó mỗi lượt và bộ đánh giá xét từ hội thoại.

/goal

Nếu goal đang hoạt động, trạng thái hiện: điều kiện, đã chạy bao lâu, số lượt đã đánh giá, token đã dùng, và lý do gần nhất từ bộ đánh giá.

Nếu không có goal đang hoạt động nhưng có goal đã đạt trước đó trong phiên, trạng thái hiện điều kiện đã đạt cùng thời lượng, số lượt, và token đã dùng.

/goal clear

Claude in Goal cleared: kèm điều kiện để xác nhận, hoặc No goal set nếu không có gì đang hoạt động. stop, off, reset, none, cancel đều là alias của clear. Chạy /clear để bắt đầu hội thoại mới cũng xoá goal đang hoạt động.

Goal còn hoạt động khi phiên kết thúc sẽ được khôi phục khi bạn resume phiên đó bằng --resume hoặc --continue. Điều kiện được giữ nguyên, nhưng số lượt, đồng hồ, và mốc token đều reset về 0 khi resume. Goal đã đạt hoặc đã xoá thì không được khôi phục.

/goal hoạt động ở chế độ non-interactive, trong Desktop app, và qua Remote Control. Đặt goal với -p chạy vòng lặp đến khi hoàn thành trong một lần gọi:

Terminal window
claude -p "/goal CHANGELOG.md has an entry for every PR merged this week"

Với output text mặc định, không có gì in ra cho đến khi điều kiện đạt, nên một goal chạy nhiều lượt có thể trông như bị treo. Thêm --output-format stream-json --verbose để in từng message khi vòng lặp chạy.

Ngắt process bằng Ctrl+C để dừng goal non-interactive trước khi điều kiện đạt.

/goal là một wrapper quanh một Stop hook dạng prompt, gắn với phiên. Mỗi khi Claude kết thúc một lượt, Claude Code gửi điều kiện và hội thoại đến giờ cho model nhỏ nhanh đã cấu hình (mặc định là Haiku trên Claude API). Model trả lời có/không kèm lý do ngắn:

  • Không: Claude tiếp tục làm việc, lấy lý do làm chỉ dẫn cho lượt kế tiếp
  • : Claude Code xoá goal và ghi lại một mục “đã đạt” vào transcript

Muốn đánh giá bằng model khác, đặt ANTHROPIC_DEFAULT_HAIKU_MODEL.

Bộ đánh giá chạy trên provider mà phiên của bạn đang cấu hình. Nó không gọi tool, nên chỉ đánh giá được những gì Claude đã thể hiện trong hội thoại. Token đánh giá tính trên model nhỏ nhanh của provider và thường không đáng kể so với chi phí lượt chính.

/goal chỉ chạy ở workspace bạn đã chấp nhận trust dialog, vì bộ đánh giá là một phần của hệ thống hooks. /goal cũng không khả dụng khi disableAllHooks được đặt ở bất kỳ cấp settings nào, hoặc khi allowManagedHooksOnly được đặt trong managed settings. Trong mỗi trường hợp, lệnh sẽ báo lý do thay vì im lặng không làm gì.

  • /loop để chạy lại theo khoảng thời gian thay vì đến khi điều kiện đạt
  • Prompt-based hook để tự viết logic đánh giá riêng
  • Auto mode để tự duyệt tool call, giúp mỗi lượt goal chạy không giám sát
  • So sánh các cách lập lịch để chạy việc độc lập với phiên đang mở