Mods trong Claude Code: tự vẽ pane, thêm lệnh, can thiệp tool call
Tóm tắt
Mod là plugin JavaScript/TypeScript chạy bên trong Claude Code: vẽ pane, thêm lệnh, sửa hoặc chặn tool call. Mạnh nhất trong các cách mở rộng nhưng chạy với toàn quyền của bạn, nên chỉ cài mod tin cậy và kiểm tra bằng claude plugin validate trước.
Hook, skill, status line và MCP server đều mở rộng Claude Code từ bên ngoài: chạy một script, hoặc đưa thêm chữ, thêm tool cho Claude. Nhưng nếu bạn muốn một ô bên cạnh transcript vẽ biểu đồ mức đầy của context, hay chặn một lệnh rm -rf kèm nút "tiếp tục / huỷ" ngay trong giao diện? Đó là việc của mod: một loại plugin chạy bên trong Claude Code, viết bằng JavaScript hoặc TypeScript.
Mod làm được gì mà công cụ khác không làm được?
- Vẽ giao diện dùng được: một pane bên cạnh transcript hoặc một dải phía trên ô nhập, có tab, nút, ô nhập liệu.
- Vẽ lại giao diện có sẵn: đổi dòng hiển thị tool call, spinner, hộp thoại hỏi đáp.
- Can thiệp tool call hay request: giữ một tool call để hỏi bạn, tự trả lời thay vì chạy tool, gửi một request sang model khác.
- Lệnh chạy code của bạn ngay: một
/lenhchạy hàm của bạn mà không cần lượt Claude, kể cả khi Claude đang làm. - Chia sẻ dữ liệu giữa các hook: hook này đếm, hook kia hiển thị.
Mod trông như thế nào?
// hooks/register.js: đếm tool call, hiện cạnh spinner
let calls = 0
export function register(on) {
on('tool.call', async ($, e, next) => {
calls += 1
$.ui.invalidate('ui.render')
return next(e)
})
on('ui.render', { component: 'Spinner' }, async ($, e, next) =>
next({ ...e, props: { ...e.props, suffix: ' · tool calls: ' + calls + '…' } }))
}
Một mod nhỏ gồm ba file: .claude-plugin/plugin.json, hooks/hooks.json trỏ tới code, và hooks/register.js. Mỗi hook có thể quan sát sự kiện, sửa nó, hoặc tự trả lời thay cho hành vi mặc định. Cách nhanh nhất để có mod: mô tả điều bạn muốn trong một phiên Claude Code và để Claude viết.
So sánh nhanh
| Mod | Settings hook | Skill | MCP | |
|---|---|---|---|---|
| Vẽ giao diện | Có | Không | Không | Không |
| Viết bằng | JS/TS | Script + settings.json | Markdown | Server bất kỳ |
| Chọn khi | Cần pane, lệnh tuỳ biến, sửa sự kiện | Chặn, cho phép, log bằng script có sẵn | Hay dán đi dán lại cùng chỉ dẫn | Cần kết nối hệ thống ngoài |
Cài và thử
/plugin install token-chart@your-org # cài từ marketplace
claude plugin validate ./some-mod # xem mod xử lý sự kiện nào, gọi gì, trước khi cài
/plugin # dòng "N mod active" cho biết mod đã nạp
Anthropic có vài mod mẫu trong repo claude-code-playground, ví dụ blast-radius giữ lệnh shell rủi ro và cho xem nó sẽ thay đổi gì trước khi chạy. Một số tính năng của chính Claude Code, như /diff, cũng là mod.
Rủi ro: mod chạy với quyền của bạn
- Mod không bị sandbox: đọc ghi file, chạy tiến trình, gọi mạng, đọc biến môi trường và settings (kể cả API key), thấy mọi prompt và tool call.
- Mod có thể sửa prompt, tự gửi prompt, và trong một số cấu hình còn duyệt tool call thay bạn.
- Chỉ cài từ tác giả và marketplace tin cậy; chạy
claude plugin validateđể xem danh sách sự kiện và lời gọi trước. - Tắt: gỡ plugin trong
/plugin, chạy--safe-modecho một phiên, hoặc"disableAllHooks": true. - Mod không thể đổi nội dung prompt xin quyền mà bạn thấy.
Áp dụng thế nào?
- Dev: Nhờ Claude viết một mod nhỏ hiển thị thông tin bạn hay cần (token, nhánh, trạng thái test) cạnh spinner.
- Tech Lead: Dùng mod kiểu
blast-radiusđể thêm bước xác nhận trực quan cho lệnh phá huỷ trong team. - PM/Admin: Đặt chính sách mod qua managed settings; review mod như review code trước khi cho phép.
Nguồn & tham khảo
- Mods overview — Claude Code Docs