jvinhit//lab

Search posts

Type to search across journal entries.

↑ ↓ navigate ↵ open esc close

Claude Code từ zero đến thành thạo · Phần 21 — Cấu hình: settings, model, effort, fast mode, output style

Bốn tầng settings và thứ tự ưu tiên, các khoá đáng biết, chọn model và effort level, extended thinking, context 1M và ngưỡng auto-compact, fast mode, cùng output style — thứ đổi hẳn vai và giọng của Claude.

Hai mươi phần trước đã nhắc tới settings ở rất nhiều chỗ. Bài này gom chúng lại thành một chỗ tra cứu: file settings nằm đâu, ai thắng ai, khoá nào đáng biết, rồi tới chọn model và effort, fast mode, và output style.

Bốn tầng settings

Phạm viVị tríẢnh hưởng aiChia sẻ
Managedmanaged-settings.json ở cấp hệ thống (server/plist/registry)Mọi thành viên tổ chức hoặc mọi user trên máyCó, do IT triển khai
User~/.claude/settings.jsonBạn, ở mọi projectKhông
Project.claude/settings.jsonMọi collaborator của repoCó, trong git
Local.claude/settings.local.jsonBạn, chỉ trong repo nàyKhông, bị gitignore

Trên Windows, ~/.claude giải về %USERPROFILE%\.claude.

Thứ tự ưu tiên

Khi cùng một setting xuất hiện ở nhiều tầng, Claude Code áp theo thứ tự:

  1. Managed — cao nhất, không ghi đè được
  2. Tham số dòng lệnh — override tạm cho phiên
  3. Local — thắng project và user
  4. Project — thắng user
  5. User — thấp nhất

Ngoại lệ quan trọng: permission rule GỘP giữa các tầng thay vì ghi đè — và như phần 7 đã nói, một deny rule ở bất kỳ tầng nào cũng chặn được một allow rule ở tầng khác.

Chạy /status để xem file settings nào đã nạp. Hoặc /config key=value để đổi một tuỳ chọn mà không mở giao diện.

Khi nào thay đổi có hiệu lực

Phần lớn settings tự nạp lại khi file đổi, gồm permissions, hooks, env, và các credential helper.

Nhưng ba thứ chỉ đọc một lần lúc khởi động, nên cần khởi động lại: model (dùng /model để đổi giữa phiên), outputStyle (có hiệu lực sau /clear), và fastMode.

Các khoá đáng biết

{
  "$schema": "https://json.schemastore.org/claude-code-settings.json",
  "model": "opus",
  "permissions": {
    "allow": ["Bash(npm run lint)", "Bash(npm run test *)"],
    "deny": ["Bash(curl *)", "Read(./.env)", "Read(./secrets/**)"]
  },
  "env": {
    "CLAUDE_CODE_ENABLE_TELEMETRY": "1"
  },
  "autoCompactEnabled": true,
  "autoMemoryEnabled": true
}
KhoáTác dụng
modelModel mặc định. Đọc lúc bắt đầu phiên; dùng /model để đổi giữa phiên
permissionsAllow/ask/deny rule cho tool và tài nguyên (phần 7)
envBiến môi trường cho Claude Code
hooksLệnh chạy theo sự kiện (phần 13)
alwaysThinkingEnabledBật extended thinking mặc định
autoCompactEnabledTự compact khi đầy context. Mặc định true
autoCompactWindowNgưỡng context window, 100k–1M token
autoMemoryEnabled / autoMemoryDirectoryBật auto memory / đổi chỗ lưu (phần 4)
availableModelsGiới hạn model nào user chọn được
cleanupPeriodDaysSố ngày trước khi xoá file phiên cũ. Mặc định 30, tối thiểu 1
defaultShellShell mặc định cho lệnh ! — "bash" hoặc "powershell"
statusLineĐịnh dạng status line tuỳ biến
outputStyleOutput style
attributionText ghi công trong commit/PR
companyAnnouncementsThông báo hiện lúc khởi động
autoUpdatesChannelKênh phát hành — "latest" hoặc "stable"
disableBundledSkillsTắt bundled skill (trừ /doctor)
skillOverridesGhi đè mức hiển thị của skill (phần 12)
claudeMdExcludesLoại CLAUDE.md theo path/glob (phần 4, 20)
worktreebaseRef, sparsePaths, symlinkDirectories, bgIsolation (phần 17, 20)
crossSessionInbound / isolatePeerMachinesKiểm soát nhắn tin giữa các phiên (phần 17)
disableWorkflows / workflowSizeGuidelineTắt / chặn quy mô dynamic workflow (phần 18)
disableAllHooksTắt mọi hook (phần 13)

Nhóm dành cho quản trị viên, chỉ có tác dụng ở managed settings: allowManagedPermissionRulesOnly, allowManagedHooksOnly, allowedMcpServers / deniedMcpServers / allowManagedMcpServersOnly, blockedMarketplaces, strictKnownMarketplaces, allowedHttpHookUrls, disableCommandPluginSources, claudeMd, forceLoginMethod.


Chọn model

Cấu hình model theo thứ tự ưu tiên:

  1. Trong phiên — /model <alias|name> để đổi ngay, hoặc /model không tham số để mở picker
  2. Lúc khởi động — claude --model <alias|name>
  3. Biến môi trường — ANTHROPIC_MODEL=<alias|name>
  4. Settings — trường model trong file settings

Trong picker: Enter đổi model và lưu làm mặc định; s chỉ đổi cho phiên hiện tại. Gõ /model <name> trực tiếp hành xử như Enter.

Flag --model và biến ANTHROPIC_MODEL chỉ áp cho phiên bạn khởi động với chúng. Muốn chạy model khác nhau ở nhiều terminal cùng lúc thì khởi động mỗi cái với flag riêng thay vì đổi bằng /model.

Và một hành vi hữu ích: phiên resume giữ nguyên model nó đang dùng lúc transcript được lưu, bất kể setting model hiện tại — điều này ngăn lựa chọn /model của một phiên khác làm đổi model khi resume.

Alias

AliasHành vi
defaultXoá mọi override và về model được khuyến nghị cho loại tài khoản của bạn. Không phải một alias model
bestFable 5 ở nơi tổ chức bạn có quyền, ngược lại là Opus mới nhất
fableClaude Fable 5, cho task khó và chạy lâu nhất
sonnetSonnet mới nhất, cho việc coding hằng ngày
opusOpus mới nhất, cho suy luận phức tạp
haikuHaiku, nhanh và tiết kiệm cho việc đơn giản
sonnet[1m] / opus[1m]Cùng model với context window 1 triệu token
opusplanChế độ đặc biệt: dùng opus trong plan mode, rồi chuyển sang sonnet khi thực thi

Nhắc lại từ phần 3: opusplan nghĩa là mỗi lần vào/ra plan mode là một lần đổi model, và đổi model huỷ toàn bộ prompt cache.

Effort level

Effort level điều khiển adaptive reasoning — để model tự quyết có nên nghĩ và nghĩ bao nhiêu ở mỗi bước, dựa trên độ phức tạp của task.

ModelCác mức
Fable 5low, medium, high, xhigh, max
Opus 5, Sonnet 5, Opus 4.8, Opus 4.7low, medium, high, xhigh, max
Opus 4.6, Sonnet 4.6low, medium, high, max

Mặc định là high trên mọi model hỗ trợ effort, trừ Opus 4.7 mặc định xhigh. Đặt một mức model đang chạy không hỗ trợ thì Claude Code lùi về mức cao nhất được hỗ trợ ở dưới hoặc bằng mức bạn đặt — ví dụ xhigh chạy như high trên Opus 4.6.

MứcDùng khi
lowDành cho task ngắn, phạm vi hẹp, nhạy về độ trễ và không nhạy về trí tuệ
mediumGiảm token cho việc nhạy về chi phí, chấp nhận đổi một phần trí tuệ
highCân bằng token và trí tuệ. Mặc định
xhigh / maxSuy luận sâu nhất. max chỉ áp cho phiên hiện tại trừ khi đặt qua CLAUDE_CODE_EFFORT_LEVEL

low, medium, high, xhigh tồn tại qua các phiên khi bạn đặt chúng trong một phiên tương tác.

ultracode không phải một mức effort của model — nó là một setting của Claude Code: gửi xhigh cho model và thêm việc bắt Claude điều phối dynamic workflow cho các task đáng kể (phần 18). Nó chỉ áp cho phiên hiện tại, và biến CLAUDE_CODE_EFFORT_LEVEL cùng setting effortLevel không nhận giá trị này.

Extended thinking

Extended thinking là phần suy luận Claude phát ra trước khi trả lời. Trên model hỗ trợ adaptive reasoning, effort level là điều khiển chính; các thiết lập dưới đây chỉ bật/tắt và điều khiển cách hiển thị.

Điều khiểnCách đặt
Bật/tắt cho phiên hiện tạiOption+T (macOS) hoặc Alt+T (Windows/Linux)
Đặt mặc định toàn cục/config, toggle thinking mode → lưu thành alwaysThinkingEnabled
Tắt bất kể effortMAX_THINKING_TOKENS=0

Thinking không tắt được trên Fable 5 — cả ba cách trên đều không có tác dụng ở đó.

Claude Code gập output thinking mặc định; bấm Ctrl+O để bật verbose mode và xem phần suy luận dưới dạng chữ xám in nghiêng. Phiên tương tác trên Anthropic API nhận redacted thinking block mặc định — đặt showThinkingSummaries: true nếu bạn muốn có bản tóm tắt đầy đủ khi mở ra.

Bạn bị tính phí cho mọi thinking token được sinh ra, kể cả khi nó bị gập hay bị redact.

Muốn suy luận sâu hơn cho một lần duy nhất thì chèn ultrathink vào bất kỳ đâu trong prompt hoặc trong nội dung skill (phần 12).

Context 1 triệu token

Fable 5, Sonnet 5, Opus 4.6 trở lên, và Sonnet 4.6 hỗ trợ context window 1 triệu token. Trên Anthropic API, Fable 5, Sonnet 5 và Opus 4.7 trở lên luôn chạy với cửa sổ 1M.

GóiOpus với 1MSonnet 4.6 với 1M
Max, Team, EnterpriseBao gồm trong subscriptionCần usage credit
ProCần usage creditCần usage credit
API và pay-as-you-goToàn quyềnToàn quyền

Cửa sổ 1M dùng giá model tiêu chuẩn, không có phụ phí cho token vượt 200K.

Tắt bằng CLAUDE_CODE_DISABLE_1M_CONTEXT=1 — Claude Code gỡ các biến thể 1M khỏi picker, và với model có cửa sổ 1M gốc như Sonnet 5 thì coi model đó như có cửa sổ 200K.

Ngưỡng auto-compact

Auto-compact window là mức context window được phép đầy tới đâu trước khi Claude Code compact hội thoại. Ba chỗ đặt được, theo thứ tự ưu tiên tăng dần:

  • /autocompact 500k — lưu vào user settings thành autoCompactWindow và áp cho phiên hiện tại. /autocompact auto để về cửa sổ được tinh chỉnh cho model của bạn.
  • --autocompact lúc khởi động — override setting đã lưu cho lần launch đó, và không bị tầng settings ưu tiên cao hơn chặn như /autocompact bị.
  • CLAUDE_CODE_AUTO_COMPACT_WINDOW — thắng cả lệnh, cả flag, cả setting.

Lệnh và flag nhận cỡ từ 100K tới 1M token, dưới dạng số thuần (200000), có hậu tố (500k, 1M), hoặc một số trần từ 100 tới 1000 nghĩa là nghìn (200 là 200.000). Biến môi trường chỉ nhận số thuần. Claude Code chặn trên ở context window của model.

Không đặt gì thì Claude Code compact khi hội thoại đạt giới hạn context của model, trừ vài trường hợp: phiên cloud compact khi gần tới giới hạn; Sonnet 4.6 và Opus 4.6 không có extended context compact ở mốc 200K; Sonnet 5 compact ở khoảng 967K mặc định; và phiên trên một model ID Claude Code không nhận diện được compact ở cửa sổ nó giả định cho ID đó.

Trường hợp cuối đáng nhớ nếu bạn dùng LLM gateway: dùng CLAUDE_CODE_MAX_CONTEXT_TOKENS để khai cửa sổ Claude Code nên giả định.


Fast mode

Fast mode là một cấu hình tốc độ cao cho Claude Opus, làm model nhanh tới 2,5 lần với chi phí mỗi token cao hơn.

Fast mode không phải một model khác. Nó dùng Claude Opus với một cấu hình API khác, ưu tiên tốc độ hơn hiệu quả chi phí. Bạn nhận đúng chất lượng và năng lực đó, chỉ phản hồi nhanh hơn. Hỗ trợ trên Opus 5 và Opus 4.8; không có trên Sonnet, Haiku hay model khác.

Bật bằng /fast, hoặc "fastMode": true trong user settings. Khi bật: nếu bạn đang ở model khác thì Claude Code tự chuyển sang Opus; hiện thông báo Fast mode ON; và một icon ↯ nhỏ xuất hiện cạnh prompt.

Đánh đổi chi phí — phần quan trọng nhất

ModelInput (MTok)Output (MTok)
Opus 510 USD50 USD
Opus 4.810 USD50 USD

Giá fast mode phẳng trên toàn bộ cửa sổ 1M token.

Lần đầu bạn bật fast mode trong một hội thoại, bạn trả giá input token fast mode chưa cache cho TOÀN BỘ ngữ cảnh hội thoại. Càng vào sâu trong hội thoại thì việc này càng đắt — nên bật fast mode ngay từ đầu thì rẻ hơn.

Chi phí đó chỉ phát sinh một lần cho mỗi hội thoại, nên tắt rồi bật lại sau đó không lặp lại nó (xem phần 3).

Dùng fast mode cho việc tương tác mà độ trễ quan trọng hơn chi phí: lặp nhanh trên thay đổi code, debug trực tiếp, việc gấp deadline. Dùng standard mode cho task tự chủ chạy dài, xử lý hàng loạt, CI/CD, và workload nhạy chi phí.

Thiết lậpTác dụng
Fast modeCùng chất lượng model, độ trễ thấp hơn, chi phí cao hơn
Effort level thấp hơnÍt thời gian nghĩ hơn, phản hồi nhanh hơn, chất lượng có thể thấp hơn ở task phức tạp

Kết hợp được cả hai để đạt tốc độ tối đa trên các task đơn giản.

Điều kiện và giới hạn

Fast mode cần Anthropic API hoặc subscription — không có trên Bedrock, Google Cloud’s Agent Platform, Microsoft Foundry, hay Claude Platform on AWS. Trên gói subscription, usage credit phải được bật, và fast mode rút trực tiếp từ usage credit kể cả khi bạn còn usage trong gói. Với Team và Enterprise, fast mode tắt mặc định và một Owner phải bật nó.

Khi đụng rate limit của fast mode: nó tự lùi về tốc độ tiêu chuẩn, icon ↯ chuyển xám để báo cooldown, bạn làm việc tiếp ở tốc độ và giá tiêu chuẩn, và fast mode tự bật lại khi cooldown hết.

Nếu hết usage credit giữa phiên, Claude Code thử lại từng request bị từ chối ở tốc độ tiêu chuẩn — bạn vẫn làm việc được và không có cooldown.

Muốn mỗi phiên bắt đầu với fast mode tắt và buộc opt-in tường minh:

{
  "fastModePerSessionOptIn": true
}

Hữu ích để kiểm soát chi phí trong tổ chức nơi user chạy nhiều phiên song song.


Output style

Output style đổi CÁCH Claude phản hồi, không đổi thứ Claude BIẾT. Nó sửa system prompt để đặt vai, giọng, và định dạng output.

Dùng nó khi bạn cứ phải prompt lại cùng một giọng hoặc định dạng ở mọi lượt, hoặc khi bạn muốn Claude làm một việc không phải software engineering.

Với chỉ dẫn về project, convention hay codebase thì dùng CLAUDE.md (phần 4), không dùng output style.

Bốn style dựng sẵn

  • Default — system prompt sẵn có, thiết kế để làm task software engineering hiệu quả
  • Proactive — Claude thực thi ngay, đưa ra giả định hợp lý thay vì dừng lại hỏi các quyết định thường lệ, và ưu tiên hành động hơn lập plan. Đây là hướng dẫn tự chủ mạnh hơn mức auto mode áp, và nó hoạt động mà không đổi permission mode của bạn — nên permission mode vẫn quyết định thứ gì chạy mà không cần hỏi
  • Explanatory — chèn các mục “Insights” mang tính giáo dục giữa lúc làm việc, giúp bạn hiểu các lựa chọn cài đặt và pattern của codebase
  • Learning — chế độ học qua làm: Claude chia sẻ “Insights” và còn nhờ bạn tự viết những mảnh code nhỏ có tính chiến lược, chèn marker TODO(human) vào code cho bạn hiện thực

Đổi style

Chạy /config rồi chọn Output style. Claude Code lưu lựa chọn vào .claude/settings.local.json. Hoặc sửa trực tiếp:

{
  "outputStyle": "Explanatory"
}

Output style là phần của system prompt, mà Claude Code đọc một lần lúc bắt đầu phiên. Thay đổi chỉ có hiệu lực sau /clear hoặc ở phiên mới.

Lệnh riêng /output-style đã bị gỡ ở v2.1.91 — dùng /config hoặc sửa setting.

Tự viết output style

Một file Markdown, ba cấp lưu được: ~/.claude/output-styles (user), .claude/output-styles (project), và trong thư mục managed settings. Tên file trở thành tên style trừ khi bạn đặt name trong frontmatter.

---
name: Diagrams first
description: Lead every explanation with a diagram
keep-coding-instructions: true
---

When explaining code, architecture, or data flow, start with a Mermaid diagram showing the structure, then explain in prose.

## Diagram conventions

Use `flowchart TD` for control flow and `sequenceDiagram` for request paths. Keep diagrams under 15 nodes.
FrontmatterMục đíchMặc định
nameTên style, nếu không lấy tên fileLấy từ tên file
descriptionMô tả, hiện trong picker /configKhông
keep-coding-instructionsGiữ chỉ dẫn software engineering dựng sẵn của Claude Codefalse
force-for-pluginChỉ cho output style của plugin: tự áp style này khi plugin được bật, ghi đè setting outputStyle của userfalse

Trường keep-coding-instructions là quyết định quan trọng nhất khi tự viết style. Đặt true khi bạn đổi cách Claude giao tiếp nhưng vẫn muốn nó code như cũ. Bỏ trống khi Claude sẽ không làm software engineering gì cả — ví dụ một trợ lý viết lách hay một nhà phân tích dữ liệu.

Cách nó hoạt động

Claude Code thêm chỉ dẫn của output style vào cuối system prompt, và mọi output style đều kích hoạt các lời nhắc để Claude tuân theo chúng suốt hội thoại.

Output style chỉ áp cho hội thoại chính. Một subagent chạy system prompt riêng của nó nên style không đổi cách subagent phản hồi. Fork là ngoại lệ, vì nó kế thừa trọn system prompt của cha (phần 16).

So với bốn cơ chế gần giống

Cơ chếCách hoạt độngDùng khi
Output styleSửa system promptBạn muốn một vai, giọng, hoặc định dạng phản hồi mặc định khác ở mọi lượt
CLAUDE.mdThêm một tin nhắn user sau system promptClaude nên luôn biết convention và ngữ cảnh codebase của bạn
--append-system-promptNối vào system prompt mà không gỡ gìBạn muốn một bổ sung một lần cho một lời gọi duy nhất
SubagentChạy với system prompt, model và tool riêngBạn muốn một trợ lý có phạm vi tách biệt cho một task tập trung
SkillNạp chỉ dẫn theo task khi được gọi hoặc khi liên quanBạn có một workflow tái dùng

Nguồn

Docs gốc cập nhật thường xuyên; khi có mâu thuẫn, tin bản tiếng Anh.