- Trong 3 năm gần đây, sự tiến hóa của cách mở rộng LLM đã phát triển qua nhiều hình thức như plugin, chỉ dẫn người dùng, bộ nhớ, giao thức, kỹ năng
- Ban đầu, ChatGPT Plugins thử nghiệm việc dùng công cụ đa dụng thông qua gọi API, nhưng thất bại vì giới hạn của mô hình và UX phức tạp
- Sau đó, Custom Instructions và Custom GPTs xuất hiện, cung cấp cá nhân hóa đơn giản dựa trên prompt và cấu trúc mô hình tùy biến có thể chia sẻ
- Model Context Protocol (MCP) và Claude Code cho phép tích hợp công cụ phức tạp nhưng mạnh mẽ, và gần đây Agent Skills hồi sinh điều này dưới dạng đơn giản hơn
- Cuối cùng, kiến trúc agent thực hiện công việc chỉ bằng công cụ mục đích chung và chỉ dẫn ngôn ngữ tự nhiên sẽ trở thành hướng đi cốt lõi của việc mở rộng LLM
Lịch sử và sự thay đổi của mở rộng LLM
- Cách sử dụng LLM đã phát triển từ nhập văn bản đơn giản thành agent điều khiển codebase và trình duyệt
- Câu hỏi trọng tâm nổi lên là làm thế nào để hỗ trợ tùy biến theo người dùng (customization)
- Nhiều cách tiếp cận đã được thử nghiệm, từ system prompt đơn giản đến giao thức client-server phức tạp
ChatGPT Plugins (tháng 3/2023)
- OpenAI công bố ChatGPT Plugins, được thiết kế để LLM gọi các REST endpoint thông qua đặc tả OpenAPI
- Hướng tới khả năng dùng công cụ đa dụng ở cấp độ AGI
- Tuy nhiên, do giới hạn của GPT-3.5 và GPT-4 đời đầu, khi khám phá đặc tả API quy mô lớn, lỗi và mất ngữ cảnh thường xảy ra
- UX bất tiện như phải kích hoạt plugin thủ công cũng là một vấn đề
- Dù vậy, plugin Code Interpreter (sau này là Advanced Data Analysis) đã cho thấy tiềm năng của một môi trường thực thi sandbox mạnh mẽ
Custom Instructions (tháng 7/2023)
- Tính năng prompt tùy chỉnh đơn giản giúp giảm độ phức tạp của plugin
- Được tự động thêm vào mọi cuộc trò chuyện, giải quyết vấn đề phải lặp lại phần thiết lập ngữ cảnh
- Sau đó, nó đóng vai trò như tiền thân của các tệp quy tắc trong môi trường phát triển như
.cursorrules, CLAUDE.md
Custom GPTs (tháng 11/2023)
- OpenAI đã sản phẩm hóa prompt engineering thông qua Custom GPTs
- Gộp persona, tệp và action để tạo ra liên kết GPT tùy chỉnh có thể chia sẻ
- Đây là bước lùi từ cách tiếp cận mở của plugin sang dạng ứng dụng đơn mục đích
Memory trong ChatGPT (tháng 2/2024)
- Trường hợp đầu tiên chuyển sang tính năng cá nhân hóa tự động
- Ghi nhớ thông tin được nhắc đến trong hội thoại và tự động phản ánh vào ngữ cảnh về sau
- Đánh dấu sự khởi đầu của kiến trúc agent liên tục duy trì trạng thái dài hạn ngay cả khi người dùng không tự thiết lập
Cursor Rules (tháng 4/2024)
- Cursor IDE đưa vào quản lý chỉ dẫn theo cấp độ kho lưu trữ thông qua tệp
.cursorrules
- Ví dụ: “dùng tab”, “không dùng dấu chấm phẩy”, “dùng TypeScript”
- Sau đó mở rộng sang cấu trúc thư mục
.cursor/rules, cho phép áp dụng quy tắc theo từng tệp và từng thư mục
- Tính năng để LLM tự quyết định khi nào áp dụng quy tắc cũng được bổ sung
Model Context Protocol (MCP, tháng 11/2024)
- MCP do Anthropic giới thiệu cung cấp cấu trúc để mô hình sử dụng công cụ thực một cách ổn định
- Duy trì kết nối client-server để trao đổi định nghĩa công cụ, tài nguyên và prompt
- Không chỉ là thêm ngữ cảnh đơn thuần mà còn cung cấp năng lực thực thi thực sự (capabilities)
- Ví dụ: đọc repository, truy vấn DB, triển khai lên Vercel
- Dù có độ phức tạp và gánh nặng cấu hình lớn, nó được dùng làm lớp nền cho ChatGPT Apps (công bố tháng 10/2025)
Claude Code và cơ chế mở rộng (tháng 2/2025)
- Claude Code là một agent tích hợp nhiều cách mở rộng khác nhau
- Quản lý chỉ dẫn kho lưu trữ bằng
CLAUDE.md
- Tích hợp công cụ bằng MCP
- Hỗ trợ Slash Commands, Hooks, Sub-agents, Output Styles (sắp bị loại bỏ) v.v.
- Dù khả năng duy trì của một số tính năng còn chưa rõ ràng, nó được xem là mô hình tích hợp thử nghiệm cho việc mở rộng agent
Agent Skills (tháng 10/2025)
- Là phiên bản tái sinh của ChatGPT Plugins, sử dụng cấu trúc skill dựa trên thư mục mà không cần giao thức phức tạp
- Gồm
skills/, SKILL.md, script và các tệp ví dụ
- Chỉ đọc toàn bộ nội dung khi cần, nhờ đó giải quyết vấn đề quá tải cửa sổ ngữ cảnh (context bloat)
- Ví dụ: skill kiểm thử web app dựa trên Playwright
SKILL.md chứa metadata và hướng dẫn sử dụng
- Script được chạy trực tiếp, và LLM không cần nạp nội dung code vào ngữ cảnh một cách không cần thiết
- Tiền đề là có quyền truy cập máy tính mục đích chung, và trọng tâm là cách tiếp cận tin vào công cụ đa dụng hơn là công cụ chuyên biệt
Triển vọng tương lai
- Agent Skills hiện thực hóa lý tưởng của plugin thời kỳ đầu
- Mô hình đã đủ thông minh để thực hiện công việc chỉ bằng công cụ chung và chỉ dẫn
- Agent không còn được định nghĩa là một vòng lặp LLM đơn thuần mà là một chủ thể thực thi gắn với máy tính
- Ví dụ: Claude Code, Zo Computer là các hình thức tích hợp LLM với máy tính
- Từ sau năm 2026, các ứng dụng LLM được dự đoán sẽ lan rộng theo kiến trúc agent tích hợp sẵn trong máy tính
- Kết luận lại, có khả năng mở rộng dựa trên ngôn ngữ tự nhiên sẽ một lần nữa trở thành trung tâm, thay vì các giao thức phức tạp như MCP
1 bình luận
Ý kiến trên Hacker News
Tôi nghĩ ngôn ngữ tự nhiên quá mơ hồ, nên việc mở rộng nó thành một ngôn ngữ lập trình là không hiệu quả
Lý do toán học có ngôn ngữ đặc thù miền riêng chính là để bảo đảm tính rõ ràng
Làm vậy bằng tiếng Anh thì khá phiền, nhưng khi quen rồi có thể giảm được sự mơ hồ
Khái niệm liên quan được trình bày khá tốt trong tài liệu này
Tôi nghĩ Skills là khái niệm đã biến giấc mơ của ChatGPT Plugins thành hiện thực
Giờ mô hình đã đủ thông minh để điều đó thực sự có thể hoạt động
Simon Willison cũng lập luận trong bài này rằng Skills là thay đổi lớn hơn MCP, nhưng có vẻ hiện tại vẫn ít được chú ý hơn do quán tính của MCP
Nhưng xét ở chỗ nó loại bỏ phần scaffolding phức tạp mà MCP yêu cầu thì ý nghĩa của nó lớn hơn nhiều
Ví dụ, khi xử lý transcript trong tài khoản Fathom, tôi chỉ cần tạo một script CLI và viết SKILL.md là xong
Việc kiểm thử API phía client cũng được giải quyết theo cách tương tự
Chỉ là cách tiếp cận này kém hào nhoáng hơn, và cũng ít chỗ để xây dựng tooling quy mô lớn nên có vẻ ít được chú ý hơn
Thêm vào đó, Skills giả định một agent có thể thực thi mã tùy ý, nên rào cản tiếp cận khá cao
Từ trước đến nay tôi vẫn bảo Claude Code kiểu “đọc X rồi làm Y”, nên tôi tò mò Skills khác gì điều đó
Phải dựa vào I/O và các lệnh print để theo dõi công việc nên khá bức bối
MCP dành cho việc xây dựng hệ thống, còn Skills lại chỉ dành cho Claude nên mức độ lock-in rất cao
Việc không thể tham chiếu hay kết hợp giữa các skill cũng là một hạn chế lớn
Cuối cùng, nếu phải giải quyết các vấn đề như khả năng mở rộng, tái sử dụng hay dùng từ xa thì có lẽ lại sẽ quay về MCP
Tuy vậy, nếu Skills trở thành một góc nhìn khác của MCP, thì sau này có thể sẽ xuất hiện thứ như trình chuyển đổi Skill→MCP
Tôi không hiểu việc mô hình được cải thiện thì liên quan gì đến Bitter Lesson
Đây vẫn là cấu trúc đưa chuyên môn của con người vào để bù cho giới hạn của mô hình
Nếu đúng là Bitter Lesson thì phải là trường hợp cho kết quả tốt hơn chỉ bằng cách tăng tài nguyên tính toán mà không có sự can thiệp của con người
Custom GPTs là một khái niệm cũ, nhưng gần đây tôi đã tìm ra một cách dùng khá thực tế
Tôi tạo một Custom GPT kết nối với Notion API để quản lý biên bản họp và việc cần làm cho vợ tôi, và chỉ trong vài giờ nó đã hoạt động khá hữu ích
Tôi định tích hợp với ứng dụng Reminders, nhưng vì ràng buộc API và vấn đề quyền ở UI nên cuối cùng phải tự làm một MCP server
Tôi bật Amphetamine trên một chiếc MacBook Pro cũ rồi kết nối bằng Tailnet và đường hầm Cloudflare để ChatGPT có thể truy cập
Dù phức tạp, nhưng việc đặt một AI agent làm hub trung tâm lại khá đáng giá
Phần triển khai liên quan được ghi lại trong blog này
Ngay cả ChatGPT 5.1 vẫn tiếp tục ảo giác ra những API không tồn tại, nhưng dù vậy nó vẫn đang dần tốt lên
Cũng như mỗi lần con người cải thiện khả năng xử lý thông tin thì thế giới lại thay đổi, chỉ cần LLM tăng xác suất cho ra đáp án đúng thì thế giới cũng sẽ lại đổi khác
Tôi đồng cảm với câu “muốn bán khống MCP”
MCP khó xử lý, nhưng trên đời có nhiều tác vụ cần giao diện an toàn
Lý do thiết kế ban đầu phức tạp là vì nó phơi bày nguyên trạng thực tế xử lý token dạng streaming
Dù phức tạp, tôi vẫn nghĩ nó đang ở ranh giới của một hệ thống đơn giản nhưng vẫn hoạt động được
Nó sẽ không thể bị thay thế hoàn toàn, và để mô hình xử lý đúng môi trường agent thì những cấu trúc như MCP vẫn sẽ cần thiết thêm một thời gian
Các mô hình ngày nay đã có thể tương tác đủ tốt chỉ với mô tả API đơn giản
Nếu đã có sẵn API thì lý do để làm thêm MCP server sẽ giảm đi
Việc triển khai chỉ ở mức JSON-RPC + API khá đơn giản
Ví dụ hello-world của Python FastMCP gần như giống hệt bản Flask
Skills xuất hiện như một phản ứng ngược lại với nó, và về sau có lẽ sẽ phát triển thành cấu trúc tự lắp ráp giữa không gian LLM và không gian mã
Skills.md rồi cũng có lẽ sẽ gặp vấn đề phình to ngữ cảnh giống như MCP
Tôi thà chỉ để lại script mà không cần mô tả, rồi để LLM được huấn luyện để tự tìm thứ cần thiết trong thư mục còn hơn
Ví dụ, có thể đặt một sub-agent nhẹ để đọc và chọn skill
ChatGPT Apps được công bố trong tháng này khiến tôi cảm thấy gần như y hệt ChatGPT Plugin của 3 năm trước
Khác biệt chỉ là cách gọi plugin — trước đây chọn trong menu thả xuống, còn giờ chỉ cần đưa tên vào prompt
Từ góc nhìn người dùng, có vẻ không khác biệt lớn
Tôi xem prompt là một chương trình xác suất, và nghĩ rằng cần có một shell chuyên dụng để gọi nó
Các agent lập trình như Claude Code hay Codex là ví dụ cho điều đó
Tôi đang nghiên cứu việc tách chức năng này khỏi IDE để phát triển thành một shell độc lập như llm-do
Cốt lõi thật sự của việc mở rộng LLM là tích hợp shell
Một LLM được nối với shell thì về cơ bản có thể làm gần như mọi thứ