Các bài trong khoáBài 10/25

25 bài

Domain 3: Claude Code·Task 3.1

Vận hành Claude Code - thành phần, phiên, headless, auto mode

Các thành phần của Claude Code (rule, skill, command, agent, memory), khởi tạo repo bằng /init, quản lý phiên, chạy headless trong CI và chọn chế độ quyền.

  • 7 phút đọc
  • Đối chiếu docs 02/11/2026
  • 10 nguồn

Đọc xong bạn nắm được

  • Biết mỗi thành phần của Claude Code (rule, skill, command, subagent, auto memory) dùng cho việc gì và nằm ở đâu
  • Khởi tạo một repo cho Claude Code với /init, CLAUDE.md và .claude/settings.json cấp dự án
  • Tiếp tục, chọn lại và dọn phiên làm việc bằng lệnh có sẵn
  • Chạy Claude Code không tương tác trong CI, lấy đầu ra JSON hoặc stream, và cấp quyền đúng mức
  • Chọn chế độ quyền phù hợp, kể cả auto mode

Claude Code có khá nhiều "ngăn kéo": CLAUDE.md, rule, skill, command, subagent, memory, hook, settings. Đề thi hỏi bạn có biết thứ nào để làm gì, và có chạy được Claude Code ngoài terminal tương tác, như trong pipeline CI, không.

Bài này giúp bạn trả lời: dựng một repo cho Claude Code thế nào, mỗi thành phần dùng khi nào, và chạy Claude Code tự động ra sao?

Ví dụ xuyên suốt: studio thiết kế web nhận dự án mới

Một studio thiết kế web 12 người làm website cho khách, mỗi khách một repo. Tuần này studio nhận dự án mới và muốn:

  1. Ai mở repo bằng Claude Code cũng có cùng quy ước: dùng pnpm, component đặt trong src/components, không sửa file trong public/legacy.
  2. Có lệnh /bao-cao-tuan để Claude tóm tắt các thay đổi trong tuần gửi khách.
  3. Mỗi đêm một job CI cho Claude Code cập nhật thư viện phụ thuộc, chạy test và ghi kết quả ra file JSON.

Các thành phần và chỗ của chúng

Đề thi liệt kê các thành phần cốt lõi (core components) của Claude Code:

Thành phầnLà gìNằm ở
CLAUDE.mdChỉ dẫn nạp vào mọi phiênGốc repo, ~/.claude/, tầng managed (bài 2.6)
RulesChỉ dẫn chia theo chủ đề, có thể chỉ áp cho một số đường dẫn file.claude/rules/*.md, giới hạn bằng paths: trong frontmatter
SkillsHướng dẫn, kiến thức, quy trình mà Claude dùng khi phù hợp, hoặc bạn gọi bằng /ten-skill.claude/skills/<ten>/SKILL.md
CommandsLệnh do bạn tự tạo; nay đã gộp vào skill.claude/commands/<ten>.md vẫn chạy, tạo ra /ten như skill
Agents (subagent)Ngữ cảnh làm việc riêng, trả về bản tóm tắt.claude/agents/*.md
Agent memoryAuto memory: Claude tự ghi những gì học được về dự án~/.claude/projects/<project>/memory/, có file chỉ mục MEMORY.md

Vài điểm đề hay hỏi:

  • Auto memory khác CLAUDE.md: CLAUDE.md do bạn viết (chỉ dẫn, quy tắc); auto memory do Claude viết (điều học được, những lần bạn sửa nó). Phần đầu của MEMORY.md (200 dòng hoặc 25KB đầu) được nạp vào mọi phiên. Tắt bằng autoMemoryEnabled: false hoặc biến CLAUDE_CODE_DISABLE_AUTO_MEMORY=1. Subagent cũng có thể có bộ nhớ riêng qua trường memory.
  • Cả hai đều chỉ là ngữ cảnh: docs nói Claude coi chúng là ngữ cảnh, không phải cấu hình bắt buộc. Việc nhất định phải chặn thì dùng hook PreToolUse hoặc luật quyền.
  • Chọn thành phần theo dấu hiệu: docs gợi ý Claude làm sai một quy ước hai lần thì thêm vào CLAUDE.md; bạn gõ lại cùng một prompt nhiều lần thì lưu thành skill; một việc phụ làm ngập hội thoại bằng output không dùng lại thì chuyển cho subagent; muốn một việc xảy ra mọi lần mà không phải nhắc thì viết hook.

Trong ví dụ, /bao-cao-tuan là một skill ở .claude/skills/bao-cao-tuan/SKILL.md. Luật "không sửa public/legacy" thì không nên chỉ ghi trong CLAUDE.md: đặt luật deny trong settings hoặc hook để nó được thực thi chắc chắn.

Khởi tạo repo: /init, CLAUDE.md và settings.json

Lệnh /init khởi tạo dự án với một file CLAUDE.md hướng dẫn (đặt CLAUDE_CODE_NEW_INIT=1 để có quy trình hỏi đáp, đi qua cả skill, hook và memory cá nhân). Sau đó đội bổ sung quy ước riêng và commit file này để mọi người dùng chung.

Quyền, model mặc định, biến môi trường và hook cho cả đội đặt trong .claude/settings.json cấp dự án và commit vào repo; ngoại lệ riêng của từng người để trong .claude/settings.local.json.

{
  "permissions": {
    "allow": ["Bash(pnpm test *)", "Bash(pnpm lint *)"],
    "deny": ["Edit(./public/legacy/**)"]
  }
}

Quản lý phiên

Claude Code lưu phiên liên tục vào file transcript, nên bạn quay lại được sau khi thoát hay sau /clear:

LệnhTác dụng
claude --continueMở lại phiên gần nhất trong thư mục hiện tại
claude --resumeMở danh sách phiên để chọn; --resume <tên> vào thẳng phiên đó
/resumeChuyển sang phiên khác ngay trong phiên đang mở
/clearBắt đầu hội thoại mới; phiên cũ vẫn được lưu
/compactTóm tắt hội thoại để giải phóng context

Ngoài các lệnh có sẵn (built-in slash commands) như /init, /clear, /compact, /context, /model, /permissions, /memory, bạn tạo lệnh riêng (custom slash commands) bằng skill như /bao-cao-tuan ở trên.

Chạy không tương tác: headless và streaming

Đề thi gọi đây là chế độ headless và streaming mode. Thêm -p (hay --print) để Claude Code chạy một lần không tương tác:

claude -p "Cập nhật thư viện phụ thuộc và chạy test" \
  --output-format json --allowedTools "Bash,Read,Edit" > ket-qua.json
Tuỳ chọnTác dụng
--output-format textMặc định, chỉ chữ
--output-format jsonMột khối JSON có kết quả, session ID, chi phí (total_cost_usd)
--output-format stream-jsonMỗi dòng một sự kiện JSON, theo thời gian thực (kèm --verbose)
--json-schemaĐi với json để đầu ra theo đúng schema
--allowedToolsTool được dùng không cần hỏi
--permission-modeChế độ quyền cho cả phiên
--continue, --resumeNối tiếp hội thoại giữa các lần chạy -p
--bareBỏ qua việc tự tìm hook, skill, plugin, MCP, auto memory, CLAUDE.md; docs khuyên dùng cho script và có thể thành mặc định của -p sau này

Docs lưu ý: không có --bare, một lần chạy -p vẫn chạy hook trong .claude/settings.json và kết nối MCP server trong .mcp.json của repo, kể cả ở thư mục bạn chưa từng tin cậy, mà không hỏi gì.

Chế độ quyền, kể cả auto mode

Chế độ quyền quyết định Claude được làm gì mà không hỏi:

Chế độChạy không hỏiHợp với
default (Manual)Chỉ đọcViệc nhạy cảm, code lạ
acceptEditsĐọc, sửa file, lệnh file thông dụng (mkdir, mv, cp…)Sửa code bạn đang xem lại
planĐọc và lập kế hoạch, chưa sửaTìm hiểu trước khi sửa
autoMọi thứ, có một model phân loại chạy nền kiểm từng hành độngViệc dài, đỡ phải duyệt liên tục
dontAskChỉ những gì đã cho phép trước; còn lại bị từ chốiCI khoá chặt
bypassPermissionsMọi thứ, không kiểmChỉ container hay máy ảo cô lập

Với job đêm của studio, dontAsk cùng danh sách allow cụ thể là lựa chọn chặt nhất: lệnh nào chưa được phép thì bị từ chối thay vì treo chờ người duyệt. Nếu việc phức tạp hơn, --permission-mode auto để model phân loại kiểm từng hành động, kèm --permission-prompts none để không có gì chờ người trả lời.

Nguồn

  1. Exam Guide CCDV-F v1.0, Domain 3(mở tab mới)
  2. Extend Claude Code - features overview (Claude Code Docs)(mở tab mới)
  3. How Claude remembers your project (Claude Code Docs)(mở tab mới)
  4. Extend Claude with skills (Claude Code Docs)(mở tab mới)
  5. Create custom subagents (Claude Code Docs)(mở tab mới)
  6. Commands (Claude Code Docs)(mở tab mới)
  7. Manage sessions (Claude Code Docs)(mở tab mới)
  8. Run Claude Code programmatically (Claude Code Docs)(mở tab mới)
  9. Permission modes (Claude Code Docs)(mở tab mới)
  10. Settings files and precedence (Claude Code Docs)(mở tab mới)

Nắm rồi thì thử sức với đề

Xem khoá luyện thi
Vận hành Claude Code - thành phần, phiên, headless, auto mode · Anthropic Exam Pro