Claude Code: CLAUDE.md, lệnh tắt, agent con và kiểm soát quyền cho dev Việt
Bốn thứ quyết định Claude Code chạy hiệu quả hay phá code: file CLAUDE.md gọn và đúng, lệnh tắt tự định nghĩa, agent con biết tự nén ngữ cảnh, và quyền hạn chặt. Bài này là cách làm cụ thể, kèm lệnh và mẫu cấu hình.
Claude Code, Cursor, Codex hay Cline đều mạnh, nhưng ai dùng hằng ngày đều thấy cùng một vấn đề: agent đọc sai ngữ cảnh, sửa lan, hoặc ăn hạn mức chỉ vì mấy lệnh lặp đi lặp lại. Phần lớn không phải do model yếu, mà do ăn khớp giữa repo và agent chưa chuẩn. Bốn thứ dưới đây là chỗ nên chỉnh trước, làm xong trong một buổi chiều là thấy khác.
1. CLAUDE.md: viết cho agent đọc, không phải cho người đọc
CLAUDE.md là file agent tự nạp mỗi phiên. Đừng nhồi lịch sử dự án; viết đúng thứ agent cần để không phá code: cách chạy, cách test, chỗ không được sửa. Một file tốt thường ngắn hơn 100 dòng. Ví dụ:
# Dự án backend Go
- Chạy: `make dev` (cần Postgres local ở cổng 5432)
- Test: `make test` — không dùng `go test ./...` trực tiếp vì cần env từ .env.test
- KHÔNG sửa: `internal/gen/`, `migrations/` (sinh tự động)
- Style: lỗi trả về đúng kiểu `apperr.E`, không panic
- Trước khi commit: chạy `make lint` và `make test`
Một điểm dễ bị bỏ qua: bản 2.1.312 sửa lỗi Claude ghi đè file CLAUDE.md hoặc rules rất lớn sau khi chỉ đọc phần đầu — giờ Write buộc đọc hết hoặc sửa tại chỗ (Claude Code). Nếu đang ghim bản cũ, nên nâng. Cũng đừng lồng quá nhiều CLAUDE.md trong thư mục con — v2.1.309 vá lỗi CLAUDE.md lồng quá lớn gây compact liên tục (Claude Code).
2. Lệnh tắt: biến việc lặp thành một từ
Mỗi repo đều có 5–10 việc lặp: chạy test một package, format lại file vừa sửa, sinh migration. Đừng gõ lại prompt mỗi lần — đặt lệnh tắt trong .claude/commands/ (với Claude Code) hoặc slash command tương đương của tool bạn dùng. Một file test-one.md đại khái:
Chạy test cho package: $ARGUMENTS
1. `go test ./$ARGUMENTS/... -run . -count=1`
2. Nếu fail, đọc lỗi, sửa tối thiểu, chạy lại đúng package đó
3. Không sửa file ngoài package trừ khi lỗi nằm ở đó
Gọi bằng /test-one internal/auth. Tác dụng phụ quan trọng: prompt cố định giúp agent không lan man, tiết kiệm token và ít sửa bậy.
3. Agent con: để nó tự nén trước khi hội thoại chính phình
Agent con (subagent) hợp cho việc đọc nhiều, sửa ít: quét log, đọc một module lớn rồi trả kết luận. Bản 2.1.296 thêm autoCompactWindow vào frontmatter subagent và cờ --agents, cho subagent nén ngữ cảnh trước khi chạm cửa sổ của hội thoại chính (Claude Code). Nếu nhiều workflow agent chạy song song, biến CLAUDE_CODE_WORKFLOW_SUBAGENT_MODEL ép chúng chạy chung một model — hữu ích khi muốn agent con dùng model rẻ, còn phiên chính giữ model mạnh.
Mẹo thực dụng: cho agent con chạy bằng model rẻ (Haiku 5.5 giá 386 đ / 1 triệu token agent, hoặc MiMo-V2.6-Flash 23 đ nếu chỉ đọc file), còn phiên chính giữ Sonnet 5.5 (7.719 đ) hoặc Opus 5.5 (12.652 đ) cho việc khó. Đừng để agent con gọi model đắt chỉ để đọc log.
4. Kiểm soát quyền: chặn trước, không sửa sau
Đây là phần hay bị bỏ nhất. Agent có quyền Bash là có quyền xoá, push, sửa config. Nên đặt deny và ask trong settings của Claude Code, đừng để mặc định chấp nhận. Một mẫu:
{
"permissions": {
"deny": ["Bash(git push:*)", "Bash(rm -rf:*)", "Write(./.env*)"],
"ask": ["Bash(git commit:*)", "Bash(terraform:*)"]
}
}
Lưu ý v2.1.309 vá lỗi pattern denyWrite không áp đúng khi thư mục đi qua symlink, và lỗi lệnh sandbox tự động chấp nhận có thể sửa file cấu hình MCP truyền qua --mcp-config (Claude Code). Nói cách khác: đừng tin mù vào deny pattern nếu repo có symlink; kiểm tra lại bằng một lệnh thử. Và cảnh giác với skill/MCP lạ: chiến dịch FakeGit có hơn 800 repo giả làm AI skill hoặc MCP server, agent có thể tự gợi ý mà không ai đưa link (dev.to). Chỉ cài từ nguồn biết rõ.
5. Chạy nhiều agent: tmux ổn tới đâu thì dừng
tmux + Claude Code là combo quen: mỗi project một session, chia pane, dùng send-keys để điều khiển và capture-pane để đọc output (Hacker News). Nhưng tác giả nói rõ: tới khoảng 4 agent là bắt đầu quá tải. Đừng cố nhân lên 10 rồi ngồi canh; thà 2–3 agent chạy đúng còn hơn 10 agent chạy loạn. Nếu muốn giảm hạn mức, nhớ rằng trên gói Pro/Max, resume một phiên cũ có thể ăn phần đáng kể hạn mức 5 giờ — bản 2.1.304 thêm cảnh báo cho việc này (Claude Code).
Tóm tắt nhanh
- CLAUDE.md ngắn, đúng thứ agent cần: lệnh chạy, lệnh test, chỗ cấm sửa; nâng lên bản 2.1.312 để tránh bị ghi đè file lớn.
- Đặt lệnh tắt trong
.claude/commands/, dùng$ARGUMENTScho việc lặp — giảm token và giảm sửa bậy. - Cho agent con model rẻ, dùng
autoCompactWindowvàCLAUDE_CODE_WORKFLOW_SUBAGENT_MODELkhi cần; phiên chính giữ Sonnet 5.5 cho việc hằng ngày. - Đặt
deny/asktrong settings; kiểm tra lại nếu repo có symlink; không cài skill/MCP từ nguồn lạ. - tmux ổn tới khoảng 4 agent — ít mà đúng hơn nhiều mà loạn.
Nguồn tham khảo
- Hai skill agent cho frontend: Impeccable và Diagram Design, cài một lệnh · dev.to
- Claude Code 2.1.296: subagent tự compact sớm hơn hội thoại chính · Claude Code
- Claude Code 2.1.312: hết ghi đè CLAUDE.md lớn, sửa skills sau khi cd · Claude Code
- Claude Code v2.1.309 vá loạt lỗi sandbox và quyền Bash · Claude Code
- Anthropic tặng Agent Skills cho AAIF: 1 triệu skill, 280 triệu lượt cài · Anthropic
- Claude Code v2.1.304: thêm /auto-mode-setup và cảnh báo hạn mức khi resume · Claude Code
- 7.600 repo GitHub giả, hơn 800 giả làm MCP server dính vào agent · dev.to
- tmux + Claude Code: chạy ổn tới 4 agent là bắt đầu vỡ · Hacker News