Ngày 1 tháng 10, Anthropic bổ sung cho Claude Code một cơ chế mở rộng gọi là mods. Theo blog chính thức, mod là một hàm TypeScript ngắn, gắn vào các sự kiện của Claude Code, có thể viết lại prompt, thêm phần tử giao diện, thay thế chức năng có sẵn, hoặc đơn giản là bổ sung một chức năng mới. Cả bản CLI và bản desktop đều hỗ trợ, yêu cầu Claude Code từ phiên bản 2.1.287 trở lên.
Việc phân phối đi theo hệ thống plugin hiện có: cài từ chợ plugin của Claude, hoặc chạy lệnh /plugin ngay trong phiên làm việc. Muốn chia sẻ mod tự viết cho người khác dùng, chỉ cần đóng gói thành plugin và nộp lên chợ.
Mods can thiệp được vào đâu
Trong Claude Code, mỗi khi gọi công cụ, xin cấp quyền, hay vẽ một vùng trên màn hình, một sự kiện sẽ được phát ra; mod có thể chạy trước, chạy sau sự kiện đó, hoặc thay thế hoàn toàn nó. Danh sách năng lực chính thức gồm:
- viết lại prompt gửi tới mô hình;
- chặn, viết lại hoặc chạy lại lệnh gọi công cụ;
- chấp thuận hoặc từ chối yêu cầu cấp quyền;
- xóa bớt một phần nội dung đầu ra của công cụ trước khi Claude đọc tới;
- thêm nút bấm và ô nhập liệu vào giao diện.
Bài hướng dẫn nhập môn trên blog dành cho developer do Addy Osmani viết, đi sâu hơn vào cách xử lý mô hình. Mỗi hook là một mắt trong chuỗi middleware, có ba cách viết: gọi next(e) để cho qua trước, rồi xem kết quả sau, gọi là quan sát; truyền sự kiện đã sửa trường dữ liệu xuống dưới, gọi là viết lại; không gọi next() mà trả thẳng {deny: "reason"}, gọi là trả lời. Các sự kiện được bao quát gồm gọi công cụ, gửi prompt, bắt đầu và kết thúc một lượt, lệnh slash và việc render giao diện.
Ví dụ trong bài hướng dẫn là một mod khoảng 80 dòng tên Token Weather. Nó vẽ một kiểu “dự báo thời tiết ngữ cảnh” ngay trên ô nhập liệu: đổi biểu tượng thời tiết theo tỷ lệ sử dụng cửa sổ ngữ cảnh, hiển thị số token hiện tại kèm tỷ lệ phần trăm, kèm một đường biểu đồ mini của 12 lượt gần nhất, và ghi chú mức tăng so với lượt trước. Phần giao diện dùng component AbovePrompt.
Từ hooks đến mods
Claude Code vốn đã có settings hooks: mỗi sự kiện khởi chạy một lệnh shell, trao đổi JSON qua stdin và stdout. Cách làm này đơn giản, nhưng cái giá phải trả là mỗi lần đều là một tiến trình mới, không nhớ được gì từ lần trước.
Mods chỉ nạp một lần khi phiên làm việc bắt đầu, sau đó thường trú luôn. Bài hướng dẫn chỉ ra ba điểm khác biệt: lưu được trạng thái, render được giao diện có thể thay đổi, và gọi được chính các chức năng của Claude Code, như mở panel hay đăng ký lệnh. Để vẽ được đường biểu đồ 12 lượt, Token Weather phải dựa vào trạng thái thường trú này; nếu đổi sang shell hook thì phải tự ghi dữ liệu ra đĩa.
Nhìn xa hơn, khả năng mở rộng của Claude Code được xây dần từng lớp: đầu tiên là CLAUDE.md và settings hooks, sau đó có chợ plugin /plugin, và mới vài ngày trước, việc hỗ trợ AGENTS.md cũng được làm bằng một plugin tích hợp sẵn. Mods biến hook từ “gắn thêm một script bên ngoài” thành “chạy một đoạn mã ngay trong tiến trình”, khiến phạm vi có thể can thiệp tăng lên đáng kể.
Giới hạn an toàn
Phạm vi lớn hơn thì rủi ro cũng lớn hơn. Blog chính thức nói thẳng:
Mods run with the same access to your machine as Claude Code itself. They aren't sandboxed, and you should only install mods from sources you trust.
(Mods có quyền truy cập máy của bạn giống như Claude Code chính nó. Chúng không chạy trong sandbox, và bạn chỉ nên cài mods từ những nguồn mà bạn tin tưởng.)
Bài hướng dẫn còn có một câu khác mô tả môi trường chạy: module chạy trong một môi trường cách ly riêng, không có DOM, cũng không có Node, mọi thao tác ra bên ngoài đều phải đi qua giao diện $. Đặt hai câu này cạnh nhau sẽ thấy: cái bị cách ly là runtime, không phải quyền hạn. Một mod chỉ cần nhận được sự kiện cấp quyền là có thể bấm “đồng ý” thay người dùng.
Các gói Team và Enterprise, cùng những máy đã cài đặt cấu hình quản trị tập trung, sẽ nạp trước một mod tích hợp sẵn tên sec-default, dùng để chặn các hành vi rủi ro cao của mod tự cài, chẳng hạn ghi đè quy tắc từ chối cấp quyền; quản trị viên còn có thể giới hạn trong bảng điều khiển enterprise những chợ plugin nào được phép cài. Tài khoản cá nhân mặc định không có lớp chặn này. Với các nhóm ở Trung Quốc đại lục, nơi ngưỡng tài khoản và mạng để dùng Claude Code vốn đã cao, mods trong ngắn hạn giống một công cụ tùy biến thêm cho những nhóm đã dùng sản phẩm; hệ sinh thái mod bên thứ ba lớn nhanh đến đâu còn tùy việc kiểm duyệt chợ plugin được nới rộng đến mức nào.
Nguồn tham khảo: blog chính thức Anthropic Claude, bài hướng dẫn nhập môn trên blog developer của Claude, CocoLoop; bài hướng dẫn chính thức đã được đối chiếu về yêu cầu phiên bản, loại sự kiện và số dòng mã ví dụ.