Claude Code ‘hỏi’ ít, code nhiều: Tối ưu Settings.json để tăng tốc Workflow

Artificial Intelligence tutorial - IT technology blog
Artificial Intelligence tutorial - IT technology blog

Khi Claude Code quá “lễ phép” làm chậm nhịp độ làm việc

Sau hơn một tháng ‘ăn ngủ’ cùng Claude Code CLI để xử lý các task khó như chuyển đổi 50 React Class Components sang Functional Hooks, mình nhận ra một điều: AI càng an toàn thì đôi khi lại càng… phiền. Cái cảm giác đang hăng máu refactor mà cứ mỗi 30 giây terminal lại hiện: “Tôi có quyền đọc file này không?”, “Tôi chạy lệnh test nhé?” thực sự là một bài test tính kiên nhẫn.

Lúc mới dùng thì thấy an tâm, nhưng khi đã vào luồng việc (flow) mà phải nhấn y liên tục thì cực kỳ ức chế. Chưa kể, mỗi lần mở session mới, mình lại phải dặn đi dặn lại: “Dùng chuẩn ES6 nhé” hay “Chừa thư mục build ra”. Đây là dấu hiệu cho thấy bạn đang bỏ phí file cấu hình – thứ có thể giúp hiệu suất làm việc tăng vọt nếu biết tùy chỉnh đúng cách.

Tại sao Claude Code lại “nhát tay” như vậy?

Lý do Anthropic thiết kế như vậy rất thực tế: Họ sợ bạn bay sạch source code. Theo mặc định, Claude Code chạy theo triết lý “Zero Trust”. Nó không có quyền can thiệp sâu vào hệ thống nếu bạn chưa gật đầu. Cơ chế này bảo vệ dự án khỏi những tình huống dở khóc dở cười như AI vô tình chạy rm -rf / hoặc đọc nhầm các file chứa secret key nhạy cảm.

Tuy nhiên, cấu hình mặc định chỉ dành cho người mới. Để biến Claude thành một cộng sự đắc lực trong workflow chuyên nghiệp, bạn cần định nghĩa các quy tắc ngầm. Nếu thiếu file cấu hình, Claude Code sẽ:

  • Quên sạch các quy tắc về coding style ngay khi tắt terminal.
  • Bắt bạn xác nhận cả những lệnh cơ bản như ls hay cat.
  • Không thể tự chạy Prettier hay Linter sau khi sửa code, khiến bạn phải dọn dẹp thủ công.

Làm chủ file Settings.json: Những thiết lập đáng giá

Để can thiệp sâu, hãy mở file settings.json. Trên Linux/macOS, nó nằm ở ~/.claude/settings.json. Bạn có thể mở nhanh bằng lệnh claude config ngay trong terminal.

1. Cấu hình Permissions: Cân bằng giữa tiện lợi và an toàn

Đây là khu vực giúp bạn thoát cảnh làm “người máy nhấn nút yes”. Mình thường phân loại quyền như sau:

{
  "permissions": {
    "autoApprove": {
      "read": true,
      "write": false,
      "execute": [
        "ls",
        "git status",
        "npm test",
        "jest --onlyChanged"
      ]
    }
  }
}

Lưu ý xương máu: Mình luôn để read: true để Claude nắm context dự án nhanh nhất có thể. Riêng write, mình chọn false vì muốn tận mắt soi git diff trước khi lưu. Với execute, chỉ nên cấp quyền tự động cho các lệnh đọc dữ liệu hoặc chạy test. Tuyệt đối không đưa các lệnh deploy hay push vào danh sách này.

2. Hooks: Tự động hóa những việc lặp đi lặp lại

Hooks là tính năng “out trình” giúp bạn tiết kiệm ít nhất 15-20 phút mỗi ngày. Nó cho phép thực thi lệnh tự động TRƯỚC hoặc SAU khi Claude làm việc. Chẳng hạn, mình luôn muốn code được format chuẩn chỉ ngay sau khi AI chỉnh sửa.

{
  "hooks": {
    "postEdit": "npx eslint --fix . && npx prettier --write .",
    "onSessionStart": "git pull origin main"
  }
}

Nhờ thiết lập này, Claude vừa sửa xong là máy tự chạy Lint và Prettier. Code luôn đẹp mà không cần mình phải nhắc một câu nào. Mình đã áp dụng cách này cho dự án React lớn và tiết kiệm được rất nhiều thời gian review những lỗi format ngớ ngẩn.

3. Behavior: Dạy AI cách “cư xử”

Phần này giúp Claude hiểu rõ vị trí của nó. Bạn có thể ép nó dùng một model cụ thể để tối ưu chi phí hoặc quy định ngôn ngữ phản hồi cố định.

{
  "behavior": {
    "preferredLanguage": "Vietnamese",
    "defaultModel": "claude-3-5-sonnet",
    "alwaysIncludeContext": ["architecture.md", "package.json"]
  }
}

Mẹo nhỏ: Việc luôn đưa package.json vào context giúp Claude không bao giờ gợi ý những thư viện lạ hoắc hoặc sai version với dự án hiện tại của bạn.

Template cấu hình chuẩn cho Developer

Nếu bạn ngại vọc vạch từ đầu, hãy copy template mình đã tinh chỉnh qua nhiều dự án thực tế dưới đây. Nó đảm bảo đủ độ thoáng để code nhanh nhưng vẫn đủ an toàn để không gây họa.

{
  "version": "1.0",
  "permissions": {
    "autoApprove": {
      "read": true,
      "write": false,
      "execute": ["ls", "grep", "npm test", "vitest"]
    }
  },
  "behavior": {
    "style": "concise",
    "maxHistoryMessages": 30
  },
  "hooks": {
    "onSessionStart": "npm install --dry-run"
  }
}

Lời khuyên cuối: Dù tin tưởng cấu hình đến đâu, đừng bao giờ quên soi lại git diff. File settings.json sinh ra để làm trợ lý, không phải để thay thế sự cẩn trọng của một kỹ sư. Chúc anh em nâng cấp workflow thành công!

Share: