Giao diện
5. Lên mức tự động (nấc 3 → 4)
Ở chương 1 ta có bốn nấc tự động. Workflow chính (chương 3) đưa bạn tới nấc 3: agent tự chạy theo spec và plan, bạn duyệt đầu và cuối. Chương này nói cách lên nấc 4: để agent chạy dài, qua đêm, theo lịch hoặc trên cloud, trong khi bạn không ngồi nhìn.
Nấc 4 không phải "bật một công tắc là xong". Nó là nấc 3 cộng thêm cơ chế lặp và rào chắn. Thiếu nền thì chạy càng lâu càng hỏng nhiều.
Điều kiện tiên quyết
Trước khi để agent chạy một mình, kiểm đủ bốn thứ:
| Cần có | Vì sao | Thiếu thì sao |
|---|---|---|
| Spec | Agent biết làm gì và không làm gì | Agent tự đoán yêu cầu, chạy càng lâu càng lệch |
| Plan file | Việc được chia nhỏ, có thứ tự, có checkbox để đánh dấu tiến độ | Mỗi vòng lặp agent tự nghĩ lại từ đầu, làm trùng hoặc bỏ sót |
| Test | Agent tự biết mình đúng hay sai mà không cần hỏi bạn | Agent báo "xong" dựa trên cảm giác |
| Giới hạn số vòng | Có điểm dừng chắc chắn kể cả khi task không thể hoàn thành | Vòng lặp đốt token tới khi bạn phát hiện |
Bài tập về nhà (chương 9, file practice/lab/backlog.md) được viết sẵn theo đúng khuôn này: mỗi mục có tiêu chí chấp nhận đo được, kết thúc bằng bun run check-types và bun test pass.
Auto mode
Auto mode (chế độ tự động) là một permission mode: một bộ phân loại duyệt thay bạn từng hành động, hành động rủi ro vẫn bị chặn hoặc hỏi lại. Chi tiết các mode: Permission mode.
Hiện trạng (Claude Code 2.1.310):
- Từ v2.1.283,
autolà mode khởi đầu cho phiên terminal/VS Code tương tác, trên mọi gói và mọi provider. Ngoại lệ: tài khoản HIPAA (v2.1.285+) vềdefault. claude -pthì không. Từ v2.1.302, chạy headless (-phoặc Agent SDK) mà không đặt mode thì vềdefault(Manual). Tool cần duyệt sẽ bị từ chối vì không có ai bấm duyệt. Chạy headless phải chủ động chọn: hoặc--permission-mode auto, hoặc có allow rule.- Đặt
permissions.defaultMode: "auto"trong.claude/settings.jsoncủa repo không có tác dụng. Muốn auto thì dùng flag lúc khởi động. - Thư mục chưa trust: allow rule của dự án không áp dụng khi chạy
claude -p(đã chạy thử trên máy soạn tài liệu). Mởclaudetương tác một lần trong thư mục đó và đồng ý trust trước.
bash
# Headless, để bộ phân loại duyệt thay
claude -p "Thực thi task 3 trong docs/superpowers/plans/..." --permission-mode auto
# Headless, chỉ cho đúng những tool cần (allowlist hẹp)
claude -p "Chạy test và sửa lỗi kiểu" --allowedTools "Read,Edit,Bash(bun test*),Bash(bun run check-types*)"Auto mode giảm số lần bị hỏi, không thay được test và review. Rào chắn ở chương 6.
Ralph loop
Ralph loop biến một phiên Claude Code thành vòng lặp: agent làm việc, định dừng, thì Stop hook chặn lại và đưa lại đúng prompt cũ. Agent thấy công việc của vòng trước qua file và git history, nên mỗi vòng làm tiếp từ chỗ dở. Vòng lặp chạy ngay trong phiên hiện tại, không cần script bash bên ngoài.
Cài và chạy
text
/plugin install ralph-loop@claude-plugins-officialStarter đã bật sẵn plugin này trong enabledPlugins. Cú pháp:
text
/ralph-loop "<prompt>" --max-iterations <n> --completion-promise "<text>"| Tùy chọn | Ý nghĩa |
|---|---|
--max-iterations <n> | Dừng sau n vòng. Mặc định là không giới hạn, nên luôn đặt |
--completion-promise <text> | Chuỗi báo xong. Agent phải in nó bên trong thẻ <promise>...</promise> |
/cancel-ralph | Hủy vòng lặp đang chạy |
Completion promise: khớp chuỗi chính xác
Plugin chỉ coi là xong khi phần chữ cuối cùng của agent có <promise>TEXT</promise> và TEXT khớp chính xác với --completion-promise (khoảng trắng thừa được gom lại). Hệ quả:
- Prompt nên ghi rõ: "khi xong thì in
<promise>DONE</promise>". Chỉ ghi "in dòng DONE" thì có thể không khớp, vì hook tìm nội dung trong thẻ. - Chỉ có một chuỗi xong. Không dùng được hai kết cục kiểu "SUCCESS" và "BLOCKED". Vì vậy README của plugin nói rõ:
--max-iterationsmới là chốt an toàn chính. - Plugin dặn agent chỉ in promise khi điều đó hoàn toàn đúng, không in để thoát vòng. Đó là lời dặn trong prompt, không phải bằng chứng. Bằng chứng là test pass và diff bạn đọc.
Ví dụ cho bài về nhà
text
/ralph-loop "Đọc docs/backlog.md mục 1. Làm theo TDD. Xong khi mọi tiêu chí chấp nhận đạt, check-types và test pass, đã tự kiểm tra trên trình duyệt bằng skill verify-app, và đã commit. Mỗi vòng, nếu còn kẹt thì ghi vào docs/ket.md: kẹt ở đâu, đã thử gì. Khi xong hẳn thì in đúng: <promise>DONE</promise>" --max-iterations 15 --completion-promise "DONE"Câu ghi chỗ kẹt lấy ý từ README plugin: cho agent việc có ích khi bí (ghi lại chỗ kẹt cho bạn đọc) thay vì lặp mù. Agent không tự thoát vòng lặp được, chỉ có promise hoặc --max-iterations dừng nó, nên đừng viết "sau N vòng thì dừng".
Giới hạn 8 lần tiếp tục của Stop hook
Claude Code giới hạn tối đa 8 lần tiếp tục liên tiếp do Stop hook gây ra. Bộ đếm reset mỗi khi Claude gọi tool. Nâng giới hạn bằng biến môi trường CLAUDE_CODE_STOP_HOOK_BLOCK_CAP.
Ảnh hưởng thực tế:
- Vòng lặp đang làm việc thật (đọc file, sửa code, chạy test) thì gần như không chạm trần, vì mỗi lần gọi tool là bộ đếm về 0.
- Vòng lặp bị kẹt, chỉ trả lời bằng chữ mà không gọi tool, sẽ bị cắt sau 8 lần liên tiếp. Đây là một lưới an toàn có sẵn, nhưng không thay
--max-iterations: một vòng lặp vẫn gọi tool mà không tiến triển (sửa đi sửa lại cùng một chỗ) thì không bị giới hạn này chặn.
Những gì Ralph loop không làm
- Không tự lập kế hoạch. Prompt nên trỏ tới spec/plan có sẵn.
- Không thay việc review. Xong vòng lặp vẫn phải đọc diff (xem chương 6).
- Không hợp với việc cần người quyết định thiết kế, hoặc tiêu chí xong mơ hồ (theo README plugin).
Codex: /goal
Bên Codex, cơ chế tương đương là /goal: đặt một mục tiêu, agent theo đuổi tới khi đạt.
text
/goal <mục tiêu>
/goal # xem mục tiêu hiện tại
/goal pause | resume | clear/goal đã ra khỏi experimental (18–22/05/2026). Việc goal được giữ qua resume/khởi động lại và có ngân sách token: theo báo cáo cộng đồng, chưa có trong docs chính thức (kiểm tra ngày 24/10/2026). Đối chiếu đầy đủ ở chương 7.
Chạy theo lịch và chạy trên cloud
Claude Code: scheduled tasks
Scheduled tasks (việc chạy theo lịch, trước gọi là routines) để agent tự chạy trên cloud theo lịch. Đang ở dạng research preview.
text
/schedule # alias: /routines
/schedule list
/schedule update
/schedule runQuản lý trên web tại claude.ai/code/routines. Lưu ý:
- Lịch dày hơn 1 lần/giờ bị từ chối.
- Lượt chạy theo lịch chạy ở auto mode.
Codex: Scheduled tasks
Tạo trên desktop app hoặc web; trigger theo lịch hoặc theo sự kiện (Gmail, Slack, GitHub). CLI Codex không quản lý được scheduled tasks.
Phiên cloud
bash
claude --cloud "Làm mục 3 trong docs/backlog.md theo TDD"Mở một phiên chạy trên cloud thay vì trên máy bạn. --remote là tên cũ, đã deprecated.
You Should Know khi chạy dài
You Should Know (agent nhắc việc) là một "built-in mod" của Claude Code (từ v2.1.287, 01/10/2026): một agent phụ theo dõi phiên và nhắc những điều bạn hoặc Claude có thể bỏ sót. Phiên càng dài, càng nhiều output trôi qua, nó càng có ích.
text
/plugin enable cc-plugin-you-should-know@builtinStarter đã có dòng "cc-plugin-you-should-know@builtin": true trong enabledPlugins.
- Ghi chú nói rõ ai chịu trách nhiệm: "we", "the main agent" hoặc "you".
- Nó không chặn agent. Nó nhắc, quyết định vẫn là của bạn.
- Nó không thay review diff hay test.
- Chỉ chạy ở phiên first-party có bật telemetry (xem giới hạn ở chương 6).
- Tắt mặc định và ghi chú hiện phía trên ô prompt: theo báo cáo cộng đồng, chưa có trong docs chính thức (kiểm tra ngày 24/10/2026).
Theo dõi một lần chạy dài
Bạn không ngồi nhìn, nhưng phải biết hỏi ở đâu khi quay lại.
| Nhìn vào | Trả lời câu hỏi | Cách xem |
|---|---|---|
git log | Agent đã làm xong những bước nào, commit có đều không | git log --oneline -20, git diff HEAD~3 |
| File plan | Task nào đã đánh dấu - [x], task nào còn dở | Mở file trong docs/superpowers/plans/ |
| File trạng thái Ralph | Đang ở vòng thứ mấy | head -10 .claude/ralph-loop.local.md (trường iteration:). File biến mất khi vòng lặp kết thúc hoặc bị hủy |
| You Should Know | Có gì bất thường agent lướt qua (test bị skip, lệnh lỗi bị bỏ qua...) | Ghi chú trong phiên |
| Agent view | Các phiên nền đang chạy | claude agents; khởi chạy nền bằng claude --bg "task" |
Dấu hiệu nên dừng tay (/cancel-ralph): nhiều vòng liền không có commit mới, test cứ đỏ ở cùng một chỗ, hoặc diff bắt đầu đụng vào file ngoài phạm vi spec.
Nguồn
- Permission modes: https://code.claude.com/docs/en/permission-modes
- Headless: https://code.claude.com/docs/en/headless
- CLI reference (
--cloud,claude agents,--bg): https://code.claude.com/docs/en/cli-reference - Changelog (2.1.283, 2.1.285, 2.1.287, 2.1.288, 2.1.302): https://code.claude.com/docs/en/changelog
- Hooks (Stop hook, giới hạn 8 lần): https://code.claude.com/docs/en/hooks
- Ralph loop plugin: https://github.com/anthropics/claude-plugins-official/tree/main/plugins/ralph-loop
- Scheduled tasks: https://code.claude.com/docs/en/routines
- Codex
/goal: https://learn.chatgpt.com/use-cases/follow-goals - Codex Scheduled tasks: https://learn.chatgpt.com/docs/automations.md
/goalgiữ qua resume (cộng đồng): https://codex.danielvaughan.com- You Should Know (cộng đồng): https://dsebastien.net ; https://nerdschalk.com