AI Digest · bản ngày · v2 (đào sâu)

Thư viện skill: đòn bẩy lớn nhất của agent, và bề mặt tấn công chưa ai canh

Kỳ: 31/08/2026 Quét 44 nguồn Cửa sổ 27–31/08 Lướt ~4 phút Đọc sâu ~14 phút
Hôm nay trong 30 giây

🔥 Mạch chính: thứ bạn dạy agent cũng là thứ có thể phản lại bạn

Tuần này có ba kết quả độc lập, đến từ ba nhóm khác nhau, cùng chỉ vào một chỗ: thư viện skill và file hướng dẫn — thứ mà ai chạy agent nghiêm túc cũng đang xây — hiện chưa có cơ chế bảo vệ nào tương xứng.

Một, nó lây. EvoMal cho thấy skill độc lan theo con đường không ai canh: agent không thực thi skill độc, nó chỉ đọc skill đó như một mẫu viết khi cần tạo skill mới, rồi vô tình chép lại payload. Bản chép lại quay vào thư viện và tiếp tục được bắt chước. Vì vậy xoá hết bản gốc cũng không sạch — mầm bệnh đã nằm trong các bản con. Tỉ lệ tự nhiễm 20,3–41,8% trên sáu model. Điều an ủi: một câu nhắc chống chép nguyên xi kiểu "banner" kéo tỉ lệ xuống 6,7% — rẻ và nên làm ngay.

Hai, nó bị bào mòn. Nghiên cứu về compaction đo trên 20 cấu hình agent sản xuất: khi context đầy, luật an toàn và nhật ký thao tác bị nén cùng một tốc độ, vì không có gì trong đường ống biết rằng chỉ luật mới cần giữ nguyên văn mới còn hiệu lực. Con số: giữ 53% sau một vòng compact, còn 10% sau năm vòng. Cách chữa họ đề xuất — Knowledge Triage — phân loại từng dòng theo kiểu rồi cho mỗi kiểu một chính sách giữ riêng, bảo toàn nhiều hơn 2–4× ở mọi mức nén, recall 96% qua năm vòng.

Ba, cổng kiểm tra hiện tại không đo cái cần đo. NVIDIA chạy 145 skill thật qua bộ quét cấu trúc/style/bảo mật rồi đối chiếu với chất lượng do LLM chấm: tương quan rho = 0,14, tức gần như không liên quan. Đề xuất thay thế của họ là Skill Lift: chạy đúng một task hai lần trong cùng model, cùng sandbox, cùng workspace, cùng bộ chấm — một lần có nạp skill, một lần không — rồi đo chênh lệch. 947 cặp chạy từ 58 skill sản xuất, chuẩn hoá qua một định dạng quỹ đạo chung nên so được lift của cùng một skill giữa Claude Code và Cursor.

Ghép lại thì thành một lời khuyên rất cụ thể: đừng đánh giá skill bằng cách đọc nó, hãy đo nó bằng cặp chạy có/không; đừng để luật an toàn nằm chung chính sách nén với phần kể chuyện; và hãy giả định rằng mọi skill trong thư viện dùng chung đều có thể bị bắt chước, kể cả khi không bao giờ được gọi.

Nguồn: EvoMal · Knowledge Triage · NVIDIA ACES / Skill Lift — (qua AI Agents Weekly, số 30/08)

📄 Papers đáng đọc

Chọn từ 30 paper HF Daily Papers trong cửa sổ 27–31/08; số cạnh tiêu đề là upvote. Không paper nào trùng với các digest trước. Mỗi paper 3 lớp: BLUF30 giâyĐọc sâu (bấm mở).

▲ 107

AgenticEvalsJIT-Agent: Scaling Harness Intelligence via Just-in-Time Harness Evolution

BLUF: Thay vì viết sẵn một harness rồi đóng băng, JIT-Agent sinh ra harness riêng cho từng task ngay lúc chạy — cùng một model, DeepSeek-V4-Flash vượt GPT-5.6 trên DeepSearchQA +9,1 điểm và rẻ hơn 36% so với harness cố định rẻ nhất.

30 giây
  • Vấn đề: một harness viết tay phải phục vụ cả deep research, sinh sản phẩm, lẫn coding dài hơi. Cái tốt cho việc này thường dở cho việc kia, nhưng nó không đổi được.
  • Cách làm: harness được mô tả thành 4 module chuẩn — Memory, Planning, Action, Capability Orchestration — và model viết ra bộ 4 module đó cho từng task. Sai thì vá ngay giữa lúc chạy (tối đa 2 vòng sửa).
  • Kết quả: GLM-5.2 lên +7,7 điểm trung bình trên 9 benchmark (tối đa +20,2); DeepSeek-V4-Flash +8,8. Cả 24 cặp model×benchmark đều tốt hơn ReAct.
Hình 2: JIT-Agent sinh harness chuyên biệt cho 3 loại việc khác nhau từ cùng một model.
Hình 2: JIT-Agent sinh harness chuyên biệt cho 3 loại việc khác nhau từ cùng một model.
Đọc sâu (~3 phút)

Vì sao "harness cố định" là nút thắt

Điểm số của một agent không chỉ là điểm của model. Nó là điểm của model cộng lớp vỏ bọc quanh model: cách nén lịch sử, cách chia nhỏ mục tiêu, cách chọn tool. Lớp vỏ đó hiện nay do người viết tay, và viết xong là đứng yên. Hệ quả: một thiết kế duy nhất phải gánh mọi loại việc, nên nó luôn là thoả hiệp — không tối ưu cho việc nào cả.

Bốn module, và cách model tự lắp chúng

Tác giả ép mọi harness về một giao thức 4 phần, chạy theo thứ tự phụ thuộc M→P→F→A. Memory (M) nén và quản lý lịch sử thực thi. Planning (P) đẻ ra chỉ thị và mục tiêu con. Capability Orchestration (F) chọn và xếp thứ tự tool/skill. Action (A) cập nhật state của controller rồi phát hành động. Hệ thống giữ song song hai thứ: lịch sử sự kiện bất biến, và state của controller thay đổi được.

Huấn luyện qua 3 chặng. Chặng I (Customization): fine-tune có giám sát trên harness do teacher sinh, cộng preference learning để nghiêng về thiết kế vừa điểm cao vừa rẻ. Chặng II (Repair): biến các lần sinh hỏng thành quỹ đạo sửa lỗi có giới hạn, dạy model gượng dậy từ lỗi biên dịch và lỗi runtime. Chặng III (Evolution): Evo-GDPO chuẩn hoá riêng ba tín hiệu reward, độ trễ và chi phí, và chỉ giữ ứng viên nào đẩy được biên giới của kho lưu trữ đi lên.

Số liệu đáng nhớ

Tổng quát (9 benchmark)GLM-5.2: 74,1 → 81,8 (+7,7); DeepSeek-V4-Flash: 66,7 → 75,5 (+8,8)
Thắng nổi bậtDeepSearchQA +9,1 so với GPT-5.6; PinchBench +8,7; OdysseyBench +4,3
Chi phíDeepSearchQA 85,1 điểm / 400K token / $0,066 — rẻ hơn 36% so với harness cố định rẻ nhất
Tổng quát hoá24/24 cặp backbone–benchmark đều tăng; DeepSeek V4 +10,2 · Mimo 2.5 +8,6 · Qwen 3.6 +4,0

Hạn chế tác giả tự nhận

Tác giả nói thẳng rằng harness sản xuất thật — Codex, Claude Code, DeepSeek Harness — giàu cơ chế hơn nhiều so với thiết kế 4 module này. Họ coi khoảng cách đó là cố ý: dựng một nền đơn giản để nghiên cứu, không phải tái tạo hệ thống sản xuất. Họ gọi không gian thiết kế hiện tại là "điểm khởi đầu", và bổ trợ cho việc kỹ sư viết harness chứ không thay thế.

Ý nghĩa cho bạn: phần đáng lấy nhất không phải bộ sinh harness, mà là phụ lục liệt kê các thiết kế tự mọc ra và được đặt tên: Palimpsest (lập kế hoạch bằng đồ thị DAG rồi thực thi có giới hạn bề rộng, cho task xuyên nhiều ứng dụng), Trapdoor (nghiên cứu có chặn biên, uỷ quyền tool call, dùng FactGraphMemory rút sự kiện thành key-value gọn), Origami (gấp context theo tầng), Gearbox (chỉ mở quyền dùng tool khi giai đoạn trước đã hoàn tất). Đây là những khuôn mẫu bạn chép tay vào harness của mình được mà không cần chạy bộ sinh — nối thẳng với cách bạn đang tổ chức skill và CLAUDE.md.

🔬 Yêu cầu deep-dive paper này

▲ 12

AgenticThe Handoff Tax: Continuing Non-Native Trajectories in LLM Agents

BLUF: Khi bạn để model yếu làm trước rồi chuyển sang model mạnh giữa chừng, model mạnh chỉ lấy lại được 36–47% phần lợi thế của nó — mà lại đắt hơn cả việc cho model mạnh làm lại từ đầu ($1,61 so với $0,72).

30 giây
  • Quy mô: 58.000 lượt chạy agent, 2 triệu lời gọi model, 36 tỉ token, chủ yếu trên SWE-bench Verified (500 issue GitHub thật).
  • Phát hiện chính: "leo thang" (yếu → mạnh) là một khoản lỗ kép — vừa mất chất lượng vừa tốn tiền hơn phương án đơn giản nhất là bỏ hết, chạy lại bằng model mạnh.
  • Cách chữa hiệu quả nhất lại là vứt bớt: nén quỹ đạo cũ đưa hồi phục lên 60–84%; bỏ hẳn quỹ đạo, chỉ giao lại cây thư mục đã sửa, cho 64–84%.
Hình 2: bốn kiểu giao ca — giữ nguyên quỹ đạo, nén trước, nén sau, và bỏ hẳn quỹ đạo.
Hình 2: bốn kiểu giao ca — giữ nguyên quỹ đạo, nén trước, nén sau, và bỏ hẳn quỹ đạo.
Đọc sâu (~3 phút)

"Thuế giao ca" là gì

Rất nhiều hệ thống thật đang làm cùng một việc để tiết kiệm: cho model rẻ chạy trước, khi nó bí thì chuyển hồ sơ sang model đắt. Trực giác là model đắt sẽ tiếp quản phần dở dang và đi tiếp. Paper này đo xem trực giác đó đúng bao nhiêu, và câu trả lời là không nhiều. Khoản hụt đó tác giả gọi là handoff tax — thuế phải trả khi một model phải tiếp tục quỹ đạo mà không phải do chính nó tạo ra.

Bố trí thí nghiệm

Hai cặp model, mỗi cặp một nhà: Claude Haiku 4.5 (yếu) ↔ Opus 4.7 (mạnh), và GPT 5.6 Luna (yếu) ↔ 5.6 Sol (mạnh). Bốn kiểu bàn giao: Raw đưa nguyên quỹ đạo; Compactpre/Compactsuf đưa bản tóm tắt; Traj-drop không đưa quỹ đạo gì cả, chỉ để lại các chỉnh sửa trong cây làm việc. Thang đo là Quality Recovery: model nhận ca lấy lại được bao nhiêu phần trăm khoảng cách chất lượng giữa yếu và mạnh.

Số liệu đáng nhớ

Leo thang (yếu→mạnh)hồi phục chất lượng 47% (Claude) · 36% (GPT)
Chi phí leo thangRaw $1,61 so với chạy thẳng model mạnh $0,72 (Claude) — đắt hơn 2,2× mà vẫn kém hơn
Hạ cấp (mạnh→yếu)hồi phục 50% (Claude) · 79% (GPT); giữ lại phần tiết kiệm 80% (Claude) nhưng chỉ 14% (GPT)
Chữa bằng cách bỏ bớtnén quỹ đạo → 60–84%; bỏ hẳn quỹ đạo → 64–84%

Vì sao bất đối xứng

Hai chiều giao ca không giống nhau. Đi xuống (mạnh → yếu) khá ổn: model yếu nhận một quỹ đạo sạch sẽ, chất lượng cao và chỉ cần đi nốt, nên đây là đánh đổi chi phí–chất lượng có lợi, rẻ hơn dùng model mạnh suốt. Đi lên thì ngược lại: model mạnh thừa hưởng những giả định sai, những nhánh đã đi lạc, và những đoạn suy luận nó sẽ không bao giờ tự viết ra — rồi phải tiêu token để hiểu và gỡ chúng. Đó là lý do xoá bớt lại tốt hơn giữ lại: bớt quỹ đạo là bớt thứ phải gỡ.

Hạn chế

Chỉ hai cặp model mỗi họ; nghiên cứu chính chỉ trên một benchmark; tập con task khó sau khi ghép cặp rất nhỏ (N̄≈24–27); mỗi task chỉ chạy một lần nên không đo được dao động giữa các lần; điểm chuyển giao cố định chứ chưa phải chính sách thích ứng; và mọi kết luận về tiền đều phụ thuộc bảng giá hiện hành của nhà cung cấp.

Ý nghĩa cho bạn: đây là bằng chứng số cho một thói quen bạn đang dùng hằng ngày — chạy subagent rồi đưa kết quả về phiên chính, hoặc đổi model giữa chừng khi bí. Bài học ngược đời nhưng rất dùng được: khi phải leo thang lên model mạnh, đừng đưa nó toàn bộ lịch sử. Đưa bản tóm tắt, hoặc chỉ đưa trạng thái cây làm việc, còn tốt hơn. Và nếu task chưa đi được bao xa, chạy lại từ đầu bằng model mạnh vừa rẻ hơn vừa chính xác hơn tiếp tục quỹ đạo cũ — điều này nối thẳng với thiết kế context-handoff của bạn.

🔬 Yêu cầu deep-dive paper này

▲ 9

AgenticEvalsWikiSkill: Compiling Agent Experience into Persistent Knowledge for Skill Evolution

BLUF: Tách nơi lưu kinh nghiệm khỏi nơi chứa chỉ dẫn cho agent: một "wiki" tích luỹ mọi lần chạy, rồi mới chưng cất thành skill có cổng kiểm duyệt — Qwen-3.6-27B tăng trung bình +23,9 điểm, SpreadSheet nhảy từ 40,8% lên 81,7%.

30 giây
  • Ba tầng: Raw (vết thực thi thô, bất biến) → Wiki (kho tri thức bền, tích luỹ mẫu hình và lịch sử đề xuất) → Skills (chỉ dẫn thực sự được nhét vào prompt).
  • Bốn vai mỗi vòng: Inference Agent chạy task, Wiki Maintainer gộp vết chạy thành mẫu hình có cấu trúc, Skill Proposer đề xuất sửa skill, và một cổng kiểm duyệt phải chấp nhận thì thay đổi mới vào.
  • Bất ngờ nhất — skill chuyển được giữa model: Qwen-3.5-9B dùng skill do Qwen-3.6-27B tiến hoá ra đạt 70,2% ALFWorld, cao hơn 63,4% khi tự tiến hoá lấy.
Hình 2: kiến trúc ba tầng Raw → Wiki → Skills, với cổng kiểm duyệt trước khi skill được cập nhật.
Hình 2: kiến trúc ba tầng Raw → Wiki → Skills, với cổng kiểm duyệt trước khi skill được cập nhật.
Đọc sâu (~3 phút)

Vì sao phải tách wiki khỏi skill

Hầu hết hệ thống "agent tự học" đều ghi thẳng bài học vào file skill. Vấn đề: file skill là thứ được nhét vào prompt, nên nó phải ngắn. Mà bài học thì đến liên tục. Kết quả là mỗi lần học được gì đó, hệ thống phải ghi đè hoặc cắt bớt cái cũ — và thông tin dùng để quyết định ghi đè cái nào đã bị vứt mất từ vòng trước. WikiSkill tách hai vai này ra: wiki cứ phình thoải mái vì nó không vào prompt, còn skill giữ gọn vì nó có vào.

Bốn thành phần chạy vòng nào cũng đủ

Inference Agent chạy task và để lại vết thô. Wiki Maintainer đọc vết đó rồi gộp vào wiki dưới dạng mẫu hình có cấu trúc, kèm nhật ký tiến hoá và lịch sử các đề xuất trước — kể cả đề xuất đã bị từ chối. Skill Proposer đọc wiki (chứ không đọc vết thô) để đề nghị sửa skill; nhờ có lịch sử, nó biết cái gì đã thử và trượt. Gating chỉ nhận thay đổi nào chứng minh được là cải thiện.

Số liệu đáng nhớ

Mức tăng trung bình (5 benchmark)Qwen-3.5-4B +12,3 · Qwen-3.5-9B +17,5 · Qwen-3.6-27B +23,9
Nhảy vọt cụ thểGemini-3.5-Flash trên LiveMath 33,0% → 72,6%; Qwen-3.6-27B trên SpreadSheet 40,8% → 81,7%; ALFWorld 52,8% → 77,6%
Chuyển giao giữa modelQwen-3.5-9B đạt 70,2% ALFWorld bằng skill của bản 27B, so với 63,4% khi tự tiến hoá
Đối chứngvượt Trace2Skill, EvoSkill, SkillOpt và mốc không-skill

Hạn chế tác giả tự nhận

Bốn điểm, và đều thật thà. Một, cách nhét skill vào prompt chưa đánh giá được việc truy xuất và kích hoạt ở quy mô lớn — nghĩa là khi thư viện phình to thì chưa biết chọn đúng skill kiểu gì (đúng chỗ paper CaSKG bên dưới nhảy vào). Hai, cổng kiểm duyệt chặt quá nên loại luôn các đề xuất trung tính mà biết đâu về sau lại hữu ích. Ba, không có cơ chế tỉa wiki tự động khi tri thức chất đống. Bốn, benchmark chưa có task cực dài (hàng trăm hành động hay nhiều giờ liền).

Ý nghĩa cho bạn: con số chuyển giao giữa model là thứ đáng chú ý nhất — nó gợi ý rằng skill do một model mạnh chưng cất ra là tài sản dùng lại được cho model yếu hơn, tức là bạn có thể trả tiền một lần cho việc "học" rồi chạy hằng ngày bằng model rẻ. Và cấu trúc ba tầng chính là lời phê bình có số liệu cho cách viết skill phổ biến hiện nay: nhồi mọi bài học vào chính file được nạp vào prompt. Nhưng hãy đọc kèm hạn chế thứ nhất và mục tin nóng bên trên — thư viện skill càng lớn thì chọn đúngchọn an toàn đều thành vấn đề riêng.

🔬 Yêu cầu deep-dive paper này

▲ 5

EvalsAgenticCaSKG: Counterfactual-Causal Skill Graphs for Scalable Agent Skill Retrieval

BLUF: Chọn skill bằng độ giống nhau về ngữ nghĩa là sai cách; CaSKG thử xoá, thử thay, thử đảo thứ tự từng skill để biết cái nào thật sự cần — thắng ở cả 12/12 cặp model×benchmark, ALFWorld 80,0% → 86,8%.

30 giây
  • Ý tưởng: quan hệ giữa hai skill không phải "giống nhau" mà là "cái này cần cái kia đi trước". Muốn biết điều đó thì phải can thiệp, không phải đo khoảng cách vector.
  • Ba phép thử phản thực: xoá (skill này có thật sự cần không), thay thế (có bị thay bởi cái khác không), đảo thứ tự (chiều phụ thuộc có đúng không).
  • Kết quả: ScienceWorld 72,6 → 80,5 điểm và ít hơn 1,1 bước; ALFWorld 80,0% → 86,8% và ít hơn gần 2 bước — làm đúng hơn nhanh hơn.
Sơ đồ phương pháp CaSKG: dựng đồ thị ứng viên → thử phản thực → hiệu chỉnh Bayes → truy xuất theo task.
Sơ đồ phương pháp CaSKG: dựng đồ thị ứng viên → thử phản thực → hiệu chỉnh Bayes → truy xuất theo task.
Đọc sâu (~3 phút)

Vấn đề mà thư viện skill lớn tạo ra

Khi thư viện chỉ có mươi skill, bạn nạp hết vào prompt cũng được. Khi nó có hàng trăm, bạn buộc phải chọn. Cách chọn mặc định hiện nay là nhúng vector rồi lấy cái gần nhất với đề bài. Cách đó bắt được sự giống nhau về chủ đề, nhưng cái agent cần lại là chuỗi thao tác đúng thứ tự. Hai skill có thể chẳng giống nhau chữ nào mà vẫn bắt buộc phải đi liền nhau; hai skill khác nghe rất giống nhau nhưng dùng cái nào cũng được.

Bốn chặng của phương pháp

(1) Candidate Induction — dựng một đồ thị có hướng ưu tiên độ phủ cao, ghép cặp skill dựa trên tín hiệu ngữ nghĩa, từ vựng, kiểu input/output và cấu trúc. Chặng này cố ý "vơ nhiều", lọc để sau. (2) Counterfactual Edge Probing — với mỗi cạnh được chọn, chạy ba phép thử bằng văn bản có điều kiện theo chiều: removal hỏi tính cần thiết, substitution hỏi tính đặc thù, reordering hỏi tính có hướng. Đây là phần "nhân quả" thật sự: không suy ra quan hệ từ bề mặt chữ, mà can thiệp rồi xem có hỏng không. (3) Bayesian Calibration — gộp bằng chứng từ các phép thử bằng làm trơn Beta để ra điểm tin cậy, rồi xếp mỗi cạnh vào bốn trạng thái: đã xác nhận, chưa chắc, bị bác bỏ, chưa kiểm. (4) Task-Conditioned Retrieval — chạy personalized PageRank trên đồ thị đã công bố; chỉ cạnh đã được xác nhận mới truyền độ liên quan đi tiếp, còn liên kết yếu bị hạ trọng số.

Số liệu đáng nhớ

ScienceWorld U211 (tb 6 model)CaSKG 80,50 điểm / 15,29 bước — GoS 72,62 / 16,39
ALFWorld ID-140 (tb 6 model)CaSKG 86,79% / 14,05 bước — GoS 80,01% / 15,96
Độ nhất quánđiểm cao nhất ở cả 12/12 cặp model–benchmark
Đối chứngVanilla Skills (nạp hết) · Vector Skills (giống ngữ nghĩa) · GoS (đồ thị phụ thuộc)

Hạn chế

Tác giả nói rõ CaSKG chỉ đáng dùng khi thành công phụ thuộc vào việc giữ đúng một chuỗi thao tác, chứ không phải khi chỉ cần lôi ra một skill có tên hiển nhiên. Mức cải thiện thu hẹp lại với model mạnh hơn — model càng giỏi thì càng tự suy ra được thứ tự. Và với loại task chỉ cần khớp ngữ nghĩa trực tiếp thì gần như không lợi gì.

Ý nghĩa cho bạn: đây là mảnh ghép còn thiếu của WikiSkill ở trên — WikiSkill giỏi tạo skill nhưng tự nhận chưa giải quyết việc chọn skill khi thư viện phình to; CaSKG làm đúng phần đó. Chi tiết đáng mang về nhất kể cả khi bạn không dựng đồ thị: phép thử "xoá đi xem có hỏng không" là cách rẻ và trung thực để kiểm tra một skill hay một đoạn hướng dẫn có thật sự đang làm việc gì, hay chỉ đang chiếm chỗ trong context. Lưu ý hạn chế thứ hai: model càng mạnh thì lợi ích càng nhỏ, nên đừng dựng hạ tầng nặng nếu bạn chạy model đầu bảng.

🔬 Yêu cầu deep-dive paper này

📰 Tin đáng biết

Kỹ thuật agent & context

Đánh giá & khoa học

Chính sách

🧭 Ghi chú vận hành