Plugin Claude Code là gì và chi phí sử dụng thực tế
Tìm hiểu cách hoạt động của plugin Claude Code, cách cài đặt và cơ chế tính phí. Plugin không tốn phí bản quyền nhưng bạn sẽ trả phí token cho mọi tác vụ mà nó thực thi.
Plugin Claude Code là gì
Một plugin Claude Code là một thư mục chứa các thành phần mà Claude Code tải và quản lý như một đơn vị duy nhất. Các thành phần đó bao gồm kỹ năng (skills), tác nhân (agents), hook, máy chủ MCP, máy chủ LSP và các trình giám sát chạy ngầm. Việc cài đặt một plugin sẽ thêm tất cả các thành phần của nó cùng lúc dưới một tên gọi, và việc vô hiệu hóa nó sẽ loại bỏ chúng theo cách tương tự.
Plugin không cung cấp cho tác nhân bất kỳ khả năng nào mà nó chưa có sẵn. Mọi thành phần bên trong một plugin đều là thứ bạn có thể tự viết thủ công trong thư mục .claude/. Plugin đóng vai trò là lớp đóng gói: một cách để đánh phiên bản các thành phần đó, chia sẻ chúng cho mười lăm người và cập nhật sau này mà không cần yêu cầu mọi người phải sao chép file. Đó là toàn bộ ý tưởng, và hầu hết sự nhầm lẫn về plugin đều xuất phát từ việc kỳ vọng chúng là một loại khả năng mới.
Tệp manifest tùy chọn tại .claude-plugin/plugin.json đặt tên cho plugin, và tên đó trở thành một namespace. Một kỹ năng trong plugin có tên commit-commands được gọi bằng /commit-commands:commit, vì vậy hai plugin có thể cùng cung cấp một kỹ năng tên là commit mà không bị trùng lặp. Các tác nhân plugin cũng được phân phạm vi theo cùng cách trong danh sách @-mention, dưới dạng plugin-name:agent-name.
Plugin, skill, MCP server hoặc file quy tắc
Bốn thuật ngữ này thường bị dùng như thể chúng cạnh tranh với nhau. Thực tế không phải vậy, và cần làm rõ ranh giới giữa chúng.
- Skill là một đơn vị chỉ dẫn mà Claude tải lên khi tác vụ yêu cầu. Xem skill của Agent thực chất là gì.
- MCP server là một tiến trình riêng biệt cung cấp các công cụ cho agent thông qua một giao thức, thường là một dịch vụ mạng mà bạn tự chạy.
- File quy tắc như
CLAUDE.mdlà ngữ cảnh dự án được đọc khi bắt đầu phiên làm việc và áp dụng cho mọi thứ. - Plugin là một container có thể chứa các skill, agent, hook và định nghĩa MCP server cùng nhau, kèm theo số phiên bản và kênh phân phối.
Vì vậy, câu hỏi mà một plugin giải quyết không phải là "agent có thể làm gì". Đó là "làm thế nào để tôi phân phối cái này cho team và cập nhật nó vào tháng sau". Nếu bạn đang phân vân giữa ba loại đầu tiên, so sánh giữa skill, MCP server và file quy tắc sẽ giải quyết chi tiết quyết định đó. Nếu phần MCP là điều bạn quan tâm, chạy MCP server của riêng bạn trên VPS sẽ hướng dẫn về phía hosting.
Nơi lưu trữ plugin và cấu trúc bên trong
Một plugin được cài đặt từ marketplace sẽ được sao chép vào một cache cục bộ tại ~/.claude/plugins/cache thay vì chạy trực tiếp từ vị trí clone ban đầu. Mỗi phiên bản được cài đặt sẽ có thư mục riêng. Khi bạn cập nhật hoặc gỡ cài đặt, thư mục của phiên bản cũ sẽ được đánh dấu là mồ côi và bị xóa sau khoảng hai tuần. Nhờ đó, một phiên làm việc đang tải phiên bản cũ vẫn hoạt động bình thường thay vì bị lỗi giữa chừng.
Vì đường dẫn thay đổi sau mỗi lần cập nhật, plugin không bao giờ được hardcode vị trí của chính nó. Các hook và cấu hình MCP bên trong plugin sử dụng ${CLAUDE_PLUGIN_ROOT}, biến này sẽ trỏ đến thư mục cài đặt hiện tại. Dữ liệu trạng thái cần tồn tại sau khi cập nhật phải được lưu vào ${CLAUDE_PLUGIN_DATA}, biến này trỏ đến một thư mục ổn định nằm dưới ~/.claude/plugins/data/.
Chỉ thư mục của plugin mới được sao chép vào cache, điều này dẫn đến một hệ quả mà người dùng thường gặp phải. Một đường dẫn trỏ ra ngoài thư mục gốc của plugin, ví dụ như ../shared-utils, vẫn hoạt động khi bạn phát triển với đường dẫn cục bộ nhưng sẽ bị lỗi sau khi cài đặt, vì các file đó không bao giờ được sao chép theo.
Cấu trúc thư mục trông như sau.
my-plugin/
├── .claude-plugin/
│ └── plugin.json
├── skills/
│ └── code-review/
│ └── SKILL.md
├── agents/
├── hooks/
│ └── hooks.json
├── .mcp.json
└── bin/Chỉ plugin.json mới được đặt bên trong .claude-plugin/. Mọi thứ khác phải nằm ở thư mục gốc của plugin. Việc đặt skills/ hoặc hooks/ vào bên trong .claude-plugin/ là lý do phổ biến nhất khiến plugin cài đặt thành công nhưng không hoạt động: Claude Code tìm kiếm các thư mục đó tại thư mục gốc, không thấy gì cả, và tải một plugin không có thành phần nào.
Bản thân file manifest rất nhỏ gọn.
{
"name": "my-first-plugin",
"description": "A greeting plugin to learn the basics",
"version": "1.0.0"
}Cách cài đặt plugin cho Claude Code
Việc cài đặt gồm hai bước, và bước đầu tiên không thực sự cài đặt gì cả. Bạn thêm một marketplace, đây là danh mục các plugin, sau đó bạn mới cài đặt từng plugin từ đó. Marketplace chính thức của Anthropic, claude-plugins-official, được đăng ký sẵn cho bạn ngay lần đầu khởi chạy Claude Code ở chế độ tương tác. Các marketplace khác bạn phải tự thêm vào.
/plugin marketplace add anthropics/claude-code
/plugin install commit-commands@claude-code-pluginsLưu ý rằng repository là anthropics/claude-code trong khi marketplace có tên là claude-code-plugins. Tên này lấy từ file danh mục bên trong repository, không phải từ đường dẫn repository, vì vậy hãy đọc tên marketplace từ tab Marketplaces của /plugin trước khi gõ lệnh cài đặt.
Sau khi cài đặt, hãy đọc dòng tóm tắt. Plugin is now active. nghĩa là các thành phần đã được load trong phiên làm việc này. Run /reload-plugins to activate. nghĩa là chúng chưa được load và bạn cần chạy lệnh đó. Nếu /reload-plugins cảnh báo rằng nó sẽ đọc lại cuộc hội thoại, hãy chạy lại với /reload-plugins --force. Sau đó xác nhận plugin đã thực sự có mặt: /plugin hiển thị nó trong tab Installed, /help liệt kê các kỹ năng của nó trong Custom commands, và bất kỳ thứ gì load thất bại sẽ xuất hiện trong tab Errors kèm theo lý do.
Quá trình cài đặt sẽ hỏi về phạm vi (scope), và phạm vi này quyết định ai có quyền sử dụng plugin. Phạm vi User là dành cho bạn, trong mọi dự án. Phạm vi Project ghi plugin vào file .claude/settings.json của repository trong mục enabledPlugins, vì vậy bất kỳ ai clone repository đó đều được đề nghị sử dụng. Phạm vi Local là dành cho bạn, chỉ trong repository này.
Đối với script, Dockerfile, hoặc bất kỳ phiên làm việc nào không có bảng điều khiển tương tác, hãy sử dụng dạng lệnh shell thay thế. Nó sẽ cài đặt vào phạm vi User trừ khi bạn truyền tham số --scope.
claude plugin install commit-commands@claude-code-plugins --scope project
claude plugin listclaude plugin install chạy bên ngoài phiên làm việc, vì vậy một phiên đang mở sẽ không thấy plugin mới cho đến khi bạn chạy /reload-plugins hoặc bắt đầu một phiên mới.
Việc quản lý những gì bạn đang có tuân theo cùng một quy tắc ở cả hai nơi. /plugin list in ra những gì đã cài đặt, và chấp nhận tham số --enabled hoặc --disabled. /plugin disable name@marketplace tắt một plugin mà không xóa nó, /plugin enable bật lại, và /plugin uninstall xóa bỏ nó. Các dạng lệnh slash-command sẽ mở bảng điều khiển plugin để áp dụng thay đổi, đó là lý do tại sao các lệnh tương đương trong shell claude plugin ... là lựa chọn nên dùng trong các script.
Để cung cấp một marketplace cho cả nhóm, hãy đặt nó vào file .claude/settings.json của dự án. Các thành viên sẽ được nhắc cài đặt ngay khi họ tin tưởng thư mục repository đó.
{
"extraKnownMarketplaces": {
"my-team-tools": {
"source": {
"source": "github",
"repo": "your-org/claude-plugins"
}
}
}
}Trong khi bạn đang tự xây dựng plugin của riêng mình, hãy bỏ qua marketplace. claude --plugin-dir ./my-plugin sẽ load một thư mục cho phiên làm việc đó, /reload-plugins sẽ cập nhật các chỉnh sửa của bạn mà không cần khởi động lại, và claude plugin validate ./my-plugin sẽ kiểm tra manifest, phần frontmatter của kỹ năng và agent, cùng với hooks/hooks.json trước khi bất kỳ ai khác nhìn thấy nó.
Plugin Claude Code tốn bao nhiêu chi phí?
Cơ chế này hoàn toàn miễn phí. Tính đến tháng 8 năm 2026, không có phí cho việc thêm marketplace, cài đặt plugin hoặc duy trì trạng thái kích hoạt của chúng. Các marketplace chính thức và cộng đồng đều là các git repository công khai, và một plugin chỉ là một thư mục chứa các file văn bản.
Chi phí thực sự của plugin nằm ở token, và token chính là đơn vị đo lường mức sử dụng trong gói đăng ký hoặc hóa đơn API của bạn. Chi phí này phát sinh theo ba cách khác nhau, với cơ chế hoạt động riêng biệt.
Chi phí ngữ cảnh thường trực (Standing context cost). Những gì một plugin đóng góp sẽ nằm trong ngữ cảnh của bạn và được đọc lại sau mỗi lượt hội thoại. Trước khi cài đặt, chế độ xem chi tiết /plugin sẽ hiển thị ước tính Context cost bằng token, cùng với phần Will install liệt kê các lệnh, kỹ năng, agent, hook, cũng như các server MCP và LSP mà bạn sắp thêm vào. Hãy đọc kỹ cả hai. Các plugin từ marketplace cục bộ hoặc tùy chỉnh có thể không cung cấp dữ liệu này, khi đó bạn phải tự ước tính thủ công. Một plugin tích hợp sẵn server MCP thường là nặng nhất, vì định nghĩa công cụ rất lớn, mặc dù trên các model hỗ trợ tìm kiếm công cụ MCP, các định nghĩa đó sẽ được hoãn lại cho đến khi cần dùng đến công cụ.
Chi phí gọi thực thi (Invocation cost). Việc chạy một kỹ năng (skill) của plugin sẽ thêm các chỉ dẫn của nó vào cuộc hội thoại, vì vậy bạn chỉ trả phí cho nội dung kỹ năng khi nó được sử dụng. Agent thì khác. Một subagent chạy cuộc hội thoại riêng với system prompt và cache riêng, bắt đầu từ con số 0 (không có cache hit), vì vậy một plugin có quy trình làm việc tạo ra các agent sẽ tốn kém hơn đáng kể so với ước tính ngữ cảnh ban đầu.
Chi phí cache (Cache cost). Việc bật hoặc tắt plugin giữa phiên làm việc có thể buộc yêu cầu tiếp theo phải xử lý lại toàn bộ cuộc hội thoại của bạn. Các kỹ năng, lệnh, agent, hook, server LSP, monitor và theme không bao giờ gây ra điều này: những gì chúng thêm vào sẽ được nối tiếp sau lịch sử hiện có, vì vậy yêu cầu tiếp theo sẽ trả phí cho nội dung mới trong khi vẫn đọc mọi thứ trước đó từ cache. Ngoại lệ là plugin cung cấp server MCP. Nếu các công cụ của nó được hoãn lại thông qua tìm kiếm công cụ, cache sẽ được giữ nguyên. Nếu chúng được tải vào phần tiền tố (prefix) của prompt, yêu cầu tiếp theo sẽ đọc lại toàn bộ cuộc hội thoại dưới dạng input không được cache. Đó chính là lý do tại sao /reload-plugins đưa ra cảnh báo và từ chối thực hiện cho đến khi bạn truyền tham số --force.
Bạn có thể theo dõi thay vì đoán định. Mọi phản hồi API đều báo cáo cache_read_input_tokens và cache_creation_input_tokens, và một dòng trạng thái tùy chỉnh hiển thị mức sử dụng token trực tiếp sẽ giúp bạn nắm bắt cả hai thông số này. Một phiên làm việc hiệu quả sẽ đọc nhiều hơn là tạo mới. Nếu lượng dữ liệu tạo mới vẫn cao sau mỗi lượt, có nghĩa là thứ gì đó trong phần tiền tố của bạn đang thay đổi liên tục. Để có cái nhìn tổng quan hơn về những gì đang chiếm dụng cửa sổ ngữ cảnh, hãy xem cách quản lý cửa sổ ngữ cảnh Claude Code và ý nghĩa thực sự của các con số token đó.
Một công việc dọn dẹp nhỏ sẽ mang lại hiệu quả rõ rệt. Tab Installed nhóm các plugin bạn đã không sử dụng trong ít nhất hai tuần vào tiêu đề Not used recently, với dòng Last used trong chế độ xem chi tiết. Những plugin đó vẫn tiêu tốn thời gian khởi động và dung lượng ngữ cảnh trong mỗi phiên làm việc. Hãy vô hiệu hóa hoặc gỡ cài đặt chúng.
Plugin chạy với quyền hạn của bạn
Tài liệu của Anthropic đã nêu rõ: plugin và marketplace là các thành phần có độ tin cậy cao, có khả năng thực thi mã tùy ý trên máy của bạn với quyền hạn của người dùng. Đây không phải là giả thuyết. Các hook của plugin chạy lệnh shell dựa trên sự kiện phiên làm việc, bao gồm cả trước và sau khi gọi tool. Thư mục bin/ của nó được thêm vào PATH của Bash tool khi plugin được bật. Các MCP server của nó là những tiến trình mà nó khởi chạy. Không có gì ở đây được sandbox tách biệt khỏi tài khoản người dùng của bạn.
Trên laptop, rủi ro này bị giới hạn bởi những gì người dùng desktop có thể truy cập. Trên server, thường thì không. Tài khoản chạy agent thường giữ các SSH key, deploy token, phiên làm việc cloud CLI và quyền truy cập vào Docker socket, vì vậy "mã tùy ý với quyền của bạn" đồng nghĩa với việc chiếm quyền điều khiển máy. Nếu Claude Code chạy trên VPS, hãy đọc cách chạy Claude Code an toàn trên VPS trước khi cài đặt bất cứ thứ gì, và cách giữ thông tin xác thực tránh xa agent trước khi cài đặt một plugin kết nối với dịch vụ bên ngoài.
Một số cơ chế bảo vệ đã tồn tại và bạn cần biết chúng. Plugin phạm vi dự án (project-scope) đến từ repository thay vì từ bạn, vì vậy nó chỉ tải sau khi bạn tin tưởng workspace, các MCP server của nó vẫn cần phê duyệt cho từng server, các LSP server của nó chờ đợi sự tin tưởng đó, và các trình giám sát chạy nền của nó hoàn toàn không tải. Các agent đi kèm plugin không được phép khai báo hook, MCP server hoặc chế độ cấp quyền. Plugin từ marketplace được sao chép vào cache với các symlink trỏ ra ngoài marketplace bị bỏ qua, vì vậy một plugin không thể kéo các file tùy ý trên host vào.
Không gì thay thế được việc kiểm tra những gì bạn cài đặt. Hãy kiểm tra danh sách Will install, ưu tiên các plugin mà bạn có thể mở và đọc mã nguồn, giữ các plugin của team trong một marketplace repository mà bạn kiểm soát, và chạy claude plugin validate trên bất kỳ thứ gì bạn tự viết.
FAQ
Các plugin của Claude Code có tốn thêm phí không?
Không. Không có phí cho hệ thống plugin, cho việc thêm marketplace hoặc cài đặt plugin. Chi phí dựa trên mức sử dụng token, được tính vào gói dịch vụ hoặc hạn mức API của bạn như bất kỳ ngữ cảnh nào khác. Một plugin sẽ thêm ngữ cảnh thường trực vào mỗi lượt hội thoại, thêm nhiều hơn khi một trong các kỹ năng hoặc agent của nó được gọi, và có thể buộc thực hiện một lượt uncached tốn kém nếu nó cung cấp một MCP server có các công cụ được tải vào prompt prefix. Chế độ xem chi tiết /plugin sẽ hiển thị ước tính Context cost trước khi bạn cài đặt.
Sự khác biệt giữa plugin và skill là gì?
Skill là một đơn vị hướng dẫn đơn lẻ. Plugin là một gói có thể chứa nhiều skill, agent, hook, MCP server, LSP server và monitor, đi kèm với tên, phiên bản và marketplace để cài đặt. Hãy viết một skill độc lập trong .claude/ khi nó chỉ dành cho bạn và dự án này. Một skill đơn mục đích như Ponytail, giúp đẩy agent hướng tới thay đổi nhỏ nhất mà vẫn hiệu quả là ví dụ rõ ràng nhất: một file với một quy tắc duy nhất, cho đến ngày nhóm của bạn cũng muốn sử dụng nó. Hãy chuyển nó thành plugin khi người khác cần dùng và nó cần được cập nhật theo thời gian. Các skill trong plugin được phân namespace, vì vậy một skill bên trong plugin được gọi là /plugin-name:skill-name thay vì /skill-name.
Plugin của tôi đã cài đặt nhưng các skill không xuất hiện. Có vấn đề gì?
Trước tiên hãy kiểm tra tóm tắt cài đặt. Nếu nó báo Run /reload-plugins to activate., các thành phần chưa được tải, và nếu lệnh reload cảnh báo rằng nó sẽ đọc lại hội thoại, hãy chạy lại dưới dạng /reload-plugins --force. Nếu nó đã tải nhưng không hiển thị gì, hãy mở /plugin và đọc tab Errors. Lỗi cấu trúc phổ biến nhất là đặt skills/, agents/ hoặc hooks/ bên trong .claude-plugin/, nơi mà Claude Code không quét tới. Hãy nhớ rằng các skill trong plugin được phân namespace, vì vậy bạn cần tìm /plugin-name:skill-name trong tab Custom commands của /help. Giải pháp cuối cùng là rm -rf ~/.claude/plugins/cache, khởi động lại và cài đặt lại.
Tôi có thể cài đặt plugin mà không cần bảng điều khiển tương tác không?
Có. Sử dụng lệnh shell claude plugin install name@marketplace, lệnh này sẽ cài đặt vào phạm vi người dùng trừ khi bạn truyền tham số --scope project hoặc --scope local. Nó hoạt động trong các script, image và môi trường không tương tác nơi bảng điều khiển /plugin không khả dụng. Vì nó chạy bên ngoài phiên làm việc, một phiên đang mở cần /reload-plugins trước khi plugin có hiệu lực.
Cài đặt plugin từ một marketplace tôi tìm thấy trên GitHub có an toàn không?
Hãy coi nó như cách bạn chạy script cài đặt của repository đó với tư cách cá nhân, vì bản chất nó gần như vậy. Một plugin có thể chạy các lệnh shell thông qua hook, thêm file thực thi vào PATH của công cụ Bash và khởi động các MCP server, tất cả đều với quyền hạn của người dùng của bạn. Anthropic không kiểm soát hoặc xác minh nội dung plugin của bên thứ ba. Chỉ cài đặt từ các nguồn bạn có thể đọc được, xem xét danh sách Will install trước khi xác nhận và hãy khắt khe hơn trên máy chủ so với trên laptop, vì tài khoản trên máy chủ thường chứa các key và token có giá trị bị đánh cắp.