Agent 9 — Agent Skills: bộ kỹ năng nạp động theo ngữ cảnh

13 thg 7, 2026 5 lượt xem
#ai
#claude
#agent
#mcp
#progressive-disclosure
#skills

Vấn đề: năng lực agent muốn nhiều, nhưng context lại hữu hạn

Sau 8 bài của series, ta có một agent biết chạy vòng lặp (agentic loop), có tool tốt (tool design), có bộ nhớ (memory) và có hàng rào an toàn (safety & production). Nhưng một câu hỏi thực tế luôn quay lại: làm sao để một agent biết làm hàng chục việc chuyên biệt — phân tích tín dụng, soạn báo cáo NHNN, viết SQL đúng chuẩn kho dữ liệu, kiểm tra chính sách bảo mật — mà không phải nhồi tất cả hướng dẫn đó vào một system prompt khổng lồ?

Nhồi hết vào prompt là con đường chết. Context là tài nguyên hữu hạn (xem context engineering); prompt càng dài, chi phí càng cao, độ trễ càng lớn, và chất lượng suy giảm vì hiện tượng context rot — model bị nhiễu bởi phần lớn nội dung không liên quan tới câu hỏi hiện tại. Bạn không thể dạy agent 40 quy trình bằng cách dán 40 quy trình vào mọi request.

Agent Skills — khái niệm Anthropic ra mắt năm 2025 — là câu trả lời. Ý tưởng gọn: đóng gói mỗi năng lực thành một skill (một thư mục có file mô tả), cho model thấy tên và mô tả của mọi skill, nhưng chỉ nạp toàn bộ nội dung khi skill đó thực sự liên quan tới nhiệm vụ. Đây chính là nguyên tắc just-in-time retrieval của context engineering áp dụng vào chính năng lực của agent.

Skill là gì: một thư mục và một file SKILL.md

Một Skill không phải là một dòng code magic — nó đơn giản là một thư mục trên đĩa, trong đó bắt buộc có một file tên SKILL.md. File này mở đầu bằng frontmatter YAML tối thiểu gồm hai trường: namedescription. Phần thân sau frontmatter là hướng dẫn chi tiết (bằng ngôn ngữ tự nhiên) cho model.

Ngoài SKILL.md, thư mục skill có thể (tùy chọn) chứa thêm:

  • Hướng dẫn chi tiết tách riêng thành nhiều file (để SKILL.md giữ ngắn gọn).
  • Script/code thực thi — skill có thể chứa code chạy được (ví dụ một script Python xử lý bảng, một file SQL mẫu).
  • Tài nguyên — template báo cáo, ví dụ mẫu, bảng tra cứu, schema.

Cây thư mục một skill điển hình (minh hoạ):

skills/
└── phan-tich-tin-dung/
    ├── SKILL.md               # bắt buộc: name + description + hướng dẫn
    ├── references/
    │   ├── thang-diem-xhtn.md  # chi tiết thang điểm xếp hạng tín nhiệm
    │   └── nguong-phe-duyet.md # ngưỡng phê duyệt theo phân khúc
    ├── templates/
    │   └── to-trinh-tin-dung.md
    └── scripts/
        └── tinh_dti.py         # tính debt-to-income (code chạy được)

Nội dung SKILL.md mẫu (minh hoạ, không phải cấu hình có thật của NCB):

---
name: phan-tich-tin-dung
description: >
  Dùng khi cần đánh giá hồ sơ tín dụng khách hàng cá nhân: tính tỷ lệ
  DTI, đối chiếu thang điểm xếp hạng tín nhiệm nội bộ, và soạn tờ trình
  phê duyệt. KHÔNG dùng cho khách hàng doanh nghiệp hay thẩm định tài sản.
---

# Phân tích tín dụng khách hàng cá nhân

## Khi nào áp dụng
Áp dụng cho câu hỏi kiểu "khách này có đủ điều kiện vay không",
"tính DTI cho hồ sơ X", "soạn tờ trình cho khoản vay Y".

## Quy trình
1. Thu thập: thu nhập, dư nợ hiện hữu, số tiền đề nghị vay, kỳ hạn.
2. Tính DTI bằng scripts/tinh_dti.py (đầu vào JSON, đầu ra tỷ lệ %).
3. Đối chiếu references/nguong-phe-duyet.md để ra khuyến nghị.
4. Nếu cần tờ trình, dùng templates/to-trinh-tin-dung.md.

## Ràng buộc
- Chỉ đọc dữ liệu qua tool truy vấn read-replica.
- Mọi khuyến nghị phải nêu rõ căn cứ; quyết định cuối do cán bộ tín dụng.

Điểm mấu chốt: SKILL.md ngắn, chỉ nêu khi nào dùngquy trình cấp cao; mọi chi tiết dài (thang điểm, ngưỡng số, template) được đẩy vào tài nguyên phụ để model chỉ đọc khi thật sự cần tới.

Progressive disclosure: trái tim của cơ chế

Progressive disclosure (tiết lộ dần theo nhu cầu) là nguyên lý làm cho Skills mở rộng gần như vô hạn mà context vẫn gọn. Nó hoạt động theo ba tầng:

  1. Tầng metadata (luôn thấy): model luôn nhìn thấy chỉ phần name + description gọn của mọi skill trong thư viện. Vài chục skill chỉ tốn vài trăm token — rẻ.
  2. Tầng nội dung (nạp khi liên quan): khi model xét thấy một skill khớp nhiệm vụ (dựa trên description), agent mới đọc toàn bộ SKILL.md của skill đó vào context.
  3. Tầng tài nguyên (nạp sâu hơn khi cần): trong lúc theo hướng dẫn, agent tiếp tục đọc các file tham chiếu, template, hoặc chạy script — chỉ những gì bước hiện tại đòi hỏi.

So sánh với phương án "nhồi hết vào system prompt": nếu bạn dán nội dung đầy đủ của 40 skill vào prompt, mỗi request phải mang theo hàng chục nghìn token — phần lớn không liên quan tới câu hỏi. Với progressive disclosure, request chỉ mang metadata (vài trăm token) cộng với đúng một hoặc hai skill được nạp. Kết quả: năng lực mở rộng gần như vô hạn, nhưng context vẫn gọn và tránh được context rot.

Model tự chọn skill — "chỉnh động theo ngữ cảnh"

Điều làm Skills khác một thư mục hướng dẫn thông thường là: model tự chọn skill nào để nạp, dựa hoàn toàn vào trường description. Không có bảng định tuyến cứng do lập trình viên viết; model đọc mô tả gọn của tất cả skill rồi quyết định cái nào khớp với ý định của người dùng.

Đây chính là ý nghĩa "nạp động theo ngữ cảnh": cùng một agent, cùng một thư viện skill, nhưng câu hỏi khác nhau sẽ kéo về những skill khác nhau — mà không cần bạn viết một if/else nào. Hệ quả trực tiếp: description là bề mặt quan trọng nhất của một skill. Nếu mô tả mơ hồ, model sẽ bỏ sót skill đáng dùng hoặc nạp nhầm skill lạc đề. Một description tốt phải nêu rõ khi nào dùngkhi nào KHÔNG dùng (như ví dụ ở trên: "KHÔNG dùng cho khách hàng doanh nghiệp").

Di động và tái dùng: viết một lần, dùng khắp nơi

Một skill là dữ liệu (thư mục + file), không phải mã gắn chặt vào một ứng dụng. Nhờ vậy nó di động: cùng một skill có thể dùng được across nhiều nơi trong hệ sinh thái Claude —

  • Claude Code (CLI cho kỹ sư),
  • Claude API qua Agent SDK (agent tự dựng, chạy trong dịch vụ nội bộ),
  • ứng dụng Claude (trợ lý cho người dùng nghiệp vụ).

Đội của bạn viết skill "chuẩn SQL kho dữ liệu" một lần; data engineer dùng nó trong Claude Code, còn trợ lý phân tích của phòng nghiệp vụ dùng chính skill đó qua Agent SDK. Vì skill có thể chứa code chạy được, nó không chỉ là kiến thức tĩnh mà còn mang theo cả công cụ tính toán đi kèm — một "gói năng lực" hoàn chỉnh và mang đi được.

Skill vs Tool vs MCP: ba mảnh bổ sung nhau

Ba khái niệm này hay bị lẫn. Chúng giải quyết ba vấn đề khác nhau và bổ sung cho nhau, không thay thế:

Khái niệmBản chấtTrả lời câu hỏiVí dụ
ToolMột hàm model gọi được, có input/output định nghĩa rõ"Agent có thể làm gì?"query_readonly_db(sql), send_email(...)
MCPChuẩn mở để kết nối model với tool và nguồn dữ liệu"Tool/dữ liệu cắm vào agent bằng cách nào?"Một MCP server phơi ra bộ tool truy vấn kho dữ liệu
SkillGói kiến thức + quy trình + tài nguyên, nạp khi cần"Agent biết cách làm việc đó thế nào?"Skill "soạn báo cáo NHNN" gồm quy trình + template

Cách hình dung: MCP là ổ cắm để lắp tool vào; Tool là hàm agent gọi để tác động thế giới (chi tiết ở tool designtools & agents); còn Skill là cuốn sổ tay nghề dạy agent quy trìnhbối cảnh để dùng những tool đó cho đúng. Một skill "phân tích tín dụng" vẫn gọi tool truy vấn dữ liệu (có thể tool đó tới qua MCP), nhưng bản thân skill mang phần "tri thức nghiệp vụ" mà tool không có: DTI tính thế nào, ngưỡng phê duyệt ở đâu, tờ trình trình bày ra sao.

Nói ngắn: tool cho agent tay chân, MCP cho agent đường kết nối, skill cho agent bài bản làm việc.

Thiết kế skill tốt: các nguyên tắc

Kinh nghiệm thực tế khi xây skill (một số là khuyến nghị chung, không phải đặc tả cứng):

  • description nêu rõ "khi nào dùng". Đây là thứ model dựa vào để chọn. Viết theo hướng tình huống người dùng ("dùng khi cần…"), kèm ranh giới loại trừ ("không dùng khi…").
  • Một skill một việc. Đừng gộp "phân tích tín dụng" và "soạn báo cáo NHNN" vào một skill. Skill hẹp thì description rõ, model chọn chính xác, và tái dùng dễ.
  • SKILL.md ngắn, đẩy chi tiết vào tài nguyên phụ. Thân skill chỉ nên là bản đồ: quy trình cấp cao và trỏ tới file chi tiết. Nội dung dài (bảng ngưỡng, schema, ví dụ) nằm ở references/, templates/ để chỉ nạp khi bước hiện tại cần.
  • Đóng gói ví dụ và template. Kèm sẵn mẫu đầu ra chuẩn (tờ trình, báo cáo) giúp agent cho kết quả nhất quán, giảm "tự bịa định dạng".
  • Versioning. Skill là tài sản dùng chung, cần được đánh phiên bản và quản lý thay đổi như mã nguồn — để khi cập nhật ngưỡng phê duyệt hay chính sách, mọi agent nhận đúng phiên bản đã duyệt.

Xây thư viện skill dùng chung cho mọi agent

Sức mạnh thật của Skills lộ ra khi bạn coi chúng như một thư viện dùng chung (shared skill library) của cả tổ chức, thay vì hướng dẫn rải rác trong từng prompt. Kiến trúc điển hình:

Mọi agent trỏ tới cùng một thư viện. Skill "chính sách bảo mật dữ liệu" chỉ viết một lần nhưng mọi agent đều tự nạp khi câu hỏi chạm dữ liệu nhạy cảm. Khi phòng Quản lý rủi ro cập nhật ngưỡng phê duyệt, bạn sửa một skill, tăng version, và mọi trợ lý lập tức dùng bản mới — không phải đi sửa mười system prompt. Đây là điểm nối trực tiếp với tư duy harness engineering: năng lực nằm trong bộ khung quanh model, được quản lý như tài sản kỹ thuật, chứ không phải trong những đoạn prompt chép tay.

Quản trị Skills trong ngân hàng

Với NCB, một skill có thể chứa code chạy đượchướng dẫn tác động tới dữ liệu khách hàng, nên nó là bề mặt cần quản trị nghiêm — liên hệ trực tiếp safety & production:

  • Kiểm soát skill được phép. Chỉ nạp skill từ nguồn tin cậy (thư viện nội bộ đã duyệt), không cho agent tự kéo skill lạ từ ngoài. Một skill độc có thể chứa hướng dẫn ngầm (prompt injection) hoặc code rò rỉ dữ liệu.
  • Review skill có code như review dependency. Skill chứa script phải qua code review và kiểm soát phiên bản y như một thư viện phần mềm: ai viết, ai duyệt, chạy với quyền gì.
  • Không rò rỉ dữ liệu. Script trong skill phải tuân đúng ranh giới quyền của agent — đọc qua tool read-replica, không tự mở kết nối ngoài, không ghi log chứa PII. Nguyên tắc least-privilege của bài 8 áp dụng nguyên vẹn cho code đi kèm skill.
  • Audit. Ghi lại skill nào được nạp cho request nào, phiên bản bao nhiêu — để khi thanh tra có thể tái dựng "agent đã dựa trên bài bản nào để ra khuyến nghị này".

Use case thực tế

Bối cảnh. NCB có ba nhóm dùng trợ lý AI: phòng Tín dụng, phòng Kế toán/Báo cáo, và Data Team. Trước đây mỗi nhóm tự nhét hướng dẫn nghiệp vụ vào system prompt riêng: prompt phình 12–18 nghìn token, trùng lặp phần "chính sách bảo mật dữ liệu" ở cả ba nơi, và mỗi lần NHNN đổi biểu mẫu báo cáo là phải đi sửa ba chỗ — thường sót một chỗ.

Giải pháp. Đội nền tảng dựng một thư viện skill dùng chung, ban đầu 4 skill lõi:

Skilldescription (rút gọn)Tài nguyên kèm
phan-tich-tin-dungĐánh giá hồ sơ vay cá nhân: DTI, xếp hạng, tờ trìnhscript tính DTI, ngưỡng phê duyệt, template tờ trình
bao-cao-nhnnSoạn báo cáo định kỳ gửi NHNN theo biểu mẫu hiện hànhtemplate biểu mẫu, quy tắc điền, hạn nộp
chuan-sql-kho-du-lieuViết SQL đúng chuẩn kho: tên bảng, quy ước JOIN, ép kiểu ROUNDsơ đồ schema, ví dụ query mẫu
chinh-sach-bao-mat-du-lieuRàng buộc xử lý PII, phân loại dữ liệu, điều cấmbảng phân loại dữ liệu, checklist

Vận hành. Một analyst hỏi "khách CIF 12345 có đủ điều kiện vay 300 triệu, kỳ hạn 24 tháng không?". Agent xét metadata mọi skill, thấy phan-tich-tin-dung khớp, đọc SKILL.md của nó, rồi nạp thêm references/nguong-phe-duyet.md và chạy scripts/tinh_dti.py; đồng thời tự nạp chinh-sach-bao-mat-du-lieu vì câu hỏi chạm dữ liệu khách hàng. Ba skill còn lại không được nạp — chúng chỉ tồn tại ở tầng metadata.

Kết quả (số liệu ước lượng, mang tính minh hoạ).

  • Kích thước prompt nền cho mỗi request giảm từ ~15K token xuống ~3–4K token (metadata + đúng skill được nạp) — giảm khoảng 70–75% context không liên quan.
  • Chính sách bảo mật từ ba bản chép tay gộp về một skill; cập nhật biểu mẫu NHNN chỉ sửa một file thay vì ba, thời gian cập nhật ước tính giảm từ ~nửa ngày xuống dưới một giờ.
  • Nhờ template và ngưỡng chuẩn hoá, tờ trình và báo cáo nhất quán hơn, giảm vòng chỉnh sửa qua lại (ước lượng định tính, chưa đo chính thức).

Cần nhấn mạnh: các con số trên là ước lượng cho mục đích minh hoạ, chưa phải số đo production đã kiểm định. Và mọi khuyến nghị của agent vẫn là đầu vào cho cán bộ nghiệp vụ, giữ nguyên human-in-the-loop cho quyết định phê duyệt.

Ghi nhớ

  • Skill = một thư mục có SKILL.md (frontmatter tối thiểu name + description), tùy chọn kèm hướng dẫn chi tiết, script chạy được, và tài nguyên (template/ví dụ).
  • Progressive disclosure ba tầng: model luôn thấy metadata (name+description) mọi skill; đọc toàn bộ SKILL.md khi liên quan; nạp tài nguyên/chạy script khi bước hiện tại cần. Nhờ đó có rất nhiều skill mà context vẫn gọn, tránh context rot.
  • Model tự chọn skill dựa trên description — đây là "nạp động theo ngữ cảnh". description là bề mặt quan trọng nhất: nêu rõ khi nào dùngkhi nào không.
  • Di động: cùng skill dùng across Claude Code, Claude API (Agent SDK), app Claude; skill có thể chứa code chạy được.
  • Phân biệt: Tool = hàm model gọi; MCP = chuẩn kết nối tool/dữ liệu; Skill = gói kiến thức + quy trình + tài nguyên nạp khi cần. Ba mảnh bổ sung nhau.
  • Thiết kế tốt: một skill một việc; SKILL.md ngắn, đẩy chi tiết vào tài nguyên phụ; đóng gói template/ví dụ; có versioning.
  • Lợi ích vs nhồi system prompt: mở rộng năng lực gần như vô hạn mà context gọn — thay vì kéo dài prompt tới mức suy giảm chất lượng.
  • Quản trị ngân hàng: chỉ nạp skill từ nguồn tin cậy; review skill chứa code như review dependency; ép least-privilege để không rò rỉ dữ liệu; audit skill nào nạp cho request nào (xem safety & production).

Nguồn tham khảo

  • Anthropic — Agent Skills documentation (docs.claude.com, mục "Agent Skills": cấu trúc SKILL.md, frontmatter name/description, progressive disclosure).
  • Anthropic Engineering Blog — "Equipping agents for the real world with Agent Skills" (bài giới thiệu Agent Skills, 2025).
  • Anthropic Engineering Blog — "Effective context engineering for AI agents" (nguyên tắc just-in-time retrieval và context như tài nguyên hữu hạn).
  • Anthropic — Claude Agent SDK documentation (docs.claude.com: dựng agent tự chạy, nạp skill qua SDK).
  • Model Context Protocol — đặc tả chuẩn mở kết nối model với tool và nguồn dữ liệu (phân biệt với Skill).
  • Anthropic — Claude Docs, mục Tool use / Building with tools (định nghĩa tool là hàm model gọi được).

Bài viết liên quan

Đặt nền cho chuỗi AI: phân biệt ba vòng tròn lồng nhau AI ⊃ ML ⊃ DL và khác biệt bản chất giữa lập trình truyền thống với học từ dữ liệu. Giới thiệu ba kiểu học máy (supervised, unsupervised, reinforcement), phân loại descriptive/predictive/prescriptive, quy trình ML end-to-end, chia train/validation/test, overfitting/underfitting và các thuật ngữ nền tảng, gắn với ứng dụng ngân hàng NCB.

13 thg 7, 2026 18

Harness — lớp scaffolding quanh model (vòng lặp, tool, context, memory, verify, sub-agent) — mới là thứ quyết định agent chạy được hay chỉ là demo. Bài này mổ xẻ giải phẫu một harness, 7 kỹ năng cốt lõi khi xây agent, single vs multi-agent (kèm số liệu hiệu quả/chi phí), các repo nên dùng, và một quickstart Python dựng-là-chạy cho bối cảnh ngân hàng.

13 thg 7, 2026 15

Hiểu LLM từ gốc: bản chất dự đoán token, ba giai đoạn huấn luyện (pretraining, fine-tuning, RLHF), token, context window và các tham số sinh (temperature, top-p). Nắm hiện tượng hallucination và kỹ thuật prompt engineering (vai trò, few-shot, chain-of-thought, ràng buộc đầu ra), kèm ví dụ gọi API model Claude mới nhất với adaptive thinking.

13 thg 7, 2026 14

Vì sao dữ liệu quyết định chất lượng mô hình hơn cả thuật toán. Bài này đi qua toàn bộ pipeline chuẩn bị dữ liệu: phân loại dữ liệu, làm sạch (thiếu/ngoại lai/trùng lặp), mã hoá hạng mục, scaling, feature engineering, giảm chiều, và cách phòng data leakage — soi qua bài toán chấm điểm tín dụng.

13 thg 7, 2026 14

Cảm nhận của bạn

Bình luận

Bạn cần để viết bình luận.

Chưa có bình luận. Hãy là người đầu tiên chia sẻ!