Giải thích Harness²: agent tự cải tiến harness mà không cần train

Harness² cho agent tự sửa skill, script, sub-agent và hook trong control loop qua vòng Propose, Probe, Compose, kèm kết quả và chỗ gãy.

Đã duyệt độc lập · cập nhật 24/10/2026 · 12 min

1. Harness dựng sẵn phải vừa với mọi task

Muhammad mở đầu bằng một nhận xét (video đăng ngày 24/10/2026): mọi agent chúng ta đang dùng đều đi kèm một harness dựng sẵn (pre-built harness). Vấn đề là một harness dựng sẵn buộc phải "một cỡ cho tất cả" (one size fits all). Và trong phần lớn trường hợp, một harness chung chung đơn giản là không được tối ưu cho đúng những task cụ thể bạn đang cố giải.

Anh dẫn một thí nghiệm của nhóm nghiên cứu (theo video đăng ngày 24/10/2026): họ đặt cùng một model AI vào bốn harness phổ biến, trong đó có Claude Code và Codex, và không có harness nào thắng ở mọi nơi. Claude Code làm tốt hơn ở coding và spreadsheet, còn Codex làm tốt hơn ở các task web.

Bốn harness CodeBuddy, OpenCode, Codex, Claude Code và model Gemini 3.5 Flash được các nhà nghiên cứu thử
Màn hình minh hoạ thí nghiệm theo video đăng ngày 24/10/2026: bốn harness CodeBuddy, OpenCode, Codex và Claude Code, cùng chạy một model là Gemini 3.5 Flash, dưới con mắt của nhóm nghiên cứu.

Theo Muhammad (video đăng ngày 24/10/2026), các nghiên cứu liên tục cho thấy một harness làm riêng cho task của bạn luôn thắng một harness dựng sẵn chung chung. Vậy nếu ngay khi bạn giao task cho agent, chính agent có thể dựng và tiến hoá harness của nó ngay trong lúc làm (on the fly) thì sao? Nếu nó có thể tự viết lại instruction của mình, tự tạo tool, thậm chí tự sửa control loop của chính nó trong lúc đang làm việc thì sao?

2. Harness²: agent tự dựng và tự tiến hoá harness của mình

Đó chính là ý tưởng đằng sau một project mới mà Muhammad nói là của Google Research và Northwestern University, tên là Harness squared, hay Harness 2, viết là Harness² (video đăng ngày 24/10/2026). Trang dự án ghi nhóm tác giả thuộc Northwestern University và Google Cloud AI Research, và paper được nộp lên arXiv ngày 9/10/2026 (đọc ngày 24/10/2026).

Anh gọi phát hiện lớn nhất của họ là "wild" (video đăng ngày 24/10/2026): một model nhỏ hơn, yếu hơn, chạy trong một harness tự tiến hoá, đã thắng thẳng một frontier model mạnh hơn nhiều đang chạy trên harness dựng sẵn mặc định của nó.

Biểu đồ WorkBuddy: GLM-5 với evolved harness đạt 75.7, Gemini 3.5 Flash với default harness đạt 72.4, chênh +3.3, dòng chữ harness > model
Con số trên màn hình (paper, video đăng ngày 24/10/2026): trên WorkBuddy-Bench, GLM-5, được ghi là model nhỏ hơn (smaller), chạy với evolved harness đạt 75.7; Gemini 3.5 Flash với default harness đạt 72.4; chênh lệch +3.3. Dòng chữ bên dưới: "harness > model".

Ngay trước đó, màn hình còn hiện một câu trích từ paper (video đăng ngày 24/10/2026): trên WorkBuddy-Bench, chỉ một bước đã đưa GLM-5 lên 75.7 với OpenCode và 75.3 với Codex, vượt điểm của Gemini với harness gốc tương ứng là 72.4 và 74.5.

Trong video này (đăng ngày 24/10/2026), anh lần lượt đi qua ba điều: các ý tưởng cốt lõi của Harness² là gì, chuyện gì xảy ra khi một agent được tự sửa vòng lặp của chính nó, và cách tiếp cận này gãy ở đâu khi ra thế giới thật.

3. Vì sao nhồi thêm rule vào system prompt làm agent tệ đi

Theo Muhammad (video đăng ngày 24/10/2026), khi hầu hết mọi người cố build một agent tự cải tiến, nước đi hiển nhiên là để model cứ thêm rule mới vào system prompt mỗi khi nó mắc lỗi. Các nhà nghiên cứu đã thử cách đó, và nó thực ra làm agent tệ đi.

Vì sao? Anh giải thích (video đăng ngày 24/10/2026): vì system prompt luôn bật (always on). Mỗi chữ bạn thêm vào prompt đều bị gửi đi ở từng bước của từng task, và rốt cuộc ăn vào sự chú ý (attention) lẫn token budget của model. Với các task dài, lý do số một khiến agent thất bại là chúng dành quá nhiều thời gian đọc instruction và suy luận, tới mức hết budget trước khi kịp cố hoàn thành công việc.

system promptrule+ rule+ rule+ rule bước 1bước 2bước 3bước 4bước 5 việc thậtviệc thật phần tô đậm: prompt gửi lại ở mọi bước, ăn vào token budget
Hình 3.1Ý Muhammad giải thích bằng hình ảnh "always on" trên màn hình (video đăng ngày 24/10/2026): mỗi rule thêm vào system prompt bị gửi lại ở mọi bước và ăn dần vào token budget.

Vì vậy, thay vì làm phình system prompt, thiết kế harness mới này cho agent sửa bốn lớp thông minh hơn nhiều ngay trong lúc làm (theo video đăng ngày 24/10/2026).

4. Bốn lớp agent được tự sửa: skill và script tool

Lớp thứ nhất là on-demand skill (theo video đăng ngày 24/10/2026). Khi agent học được một workflow chuyên biệt, như cách redline (sửa có đánh dấu) một hợp đồng pháp lý hay làm sạch một spreadsheet, nó viết playbook đó thành một skill riêng, và skill này tốn 0 token cho tới khi một task thực sự kích hoạt nó.

Sơ đồ bốn lớp quanh agent: 1 skills, 2 script tools, 3 subagents, 4 loop hooks
Bốn lớp agent được tự sửa trong Harness², như màn hình trình bày (video đăng ngày 24/10/2026): 1 skills, 2 script tools, 3 subagents, 4 loop hooks, xếp quanh agent ở giữa.

Lớp thứ hai là custom tool. Theo Muhammad (video đăng ngày 24/10/2026), LLM rất kém trong việc làm phép tính lặp đi lặp lại hay kiểm hàng trăm ô dữ liệu trong đầu. Vì vậy, khi một task cần kiểm chứng dữ liệu, agent viết một script Python nhỏ để kiểm dữ liệu một cách tất định (deterministic). Anh nói cách làm này đã được chứng minh là chạy rất tốt với AI agent.

Trên màn hình, ví dụ là một file check.py ba dòng duyệt qua từng ô của sheet.xlsx và đánh dấu ô nào trống (video đăng ngày 24/10/2026):

for cell in sheet:
  if cell.value is None:
    flag(cell)

5. Sub-agent và hook trong control loop

Lớp thứ ba là sub-agent (theo video đăng ngày 24/10/2026). Nếu một task đòi đọc 20 tài liệu khổng lồ chỉ để rút ra một bảng nhỏ, agent sinh ra một sub-agent riêng với bộ nhớ sạch của nó, để toàn bộ văn bản thô không bao giờ làm rối context của agent chính. Theo Muhammad, nhờ vậy họ tránh được context rot và loại bỏ được các yếu tố gây nhiễu (distractor).

Lớp thứ tư là tự sửa control loop của chính nó, và anh gọi đây là thay đổi lớn nhất (video đăng ngày 24/10/2026). Một rule nằm trong prompt chỉ là một lời gợi ý lịch sự mà một model đang bị phân tâm có thể bỏ qua. Bằng cách chèn hook dạng code thẳng vào vòng lặp của mình, agent có thể tự áp những rule cứng lên chính nó.

Anh kể hai ví dụ (video đăng ngày 24/10/2026). Ở một task, agent cứ suy luận mãi cho tới khi hết thời gian; nó bèn viết một watchdog hook vào chính vòng lặp của mình, đếm số bước và buộc nó dừng nghiên cứu để viết file kết quả cuối. Ở một task khác, nó tự chặn mình không được kết thúc cho tới khi một script xác nhận trong file Excel không có công thức nào bị trống.

Code TypeScript của plugin deliverable_watchdog: sau 25 tool call mà thư mục output còn trống thì nối cảnh báo vào kết quả tool
Watchdog plugin trên màn hình (video đăng ngày 24/10/2026): file deliverable_watc…, nhãn "C8 · Plugin · 3,262 B", chạy "inside the tool loop". Sau 25 tool call mà thư mục output/ vẫn trống, nó nối dòng "[watchdog] output/ is still empty." vào kết quả tool; bên cạnh là bộ đếm tool calls 25 và một tool result mẫu.

Đoạn code hiện trên màn hình, chép đúng như đang hiển thị (video đăng ngày 24/10/2026):

/* An instruction is skippable;
 * a line appended to a tool
 * result is not. */
const FIRST_WARN = 25
'tool.execute.after': (_, out) => {
  if (!outputFiles() &&
      ++calls >= FIRST_WARN)
    out.output += [watchdog]
      output/ is still empty.
      Stop researching: write
      EVERY required artifact.
}  // never blocks; only appends

Muhammad nói chúng ta đã thấy pattern này ở nơi khác (video đăng ngày 24/10/2026): bạn có thể sửa hoàn toàn agentic loop của DeepSeek harness, và Claude Code mods giờ cho phép bạn sửa control loop của Claude Code.

Hai khung: DeepSeek Harness agent loop và Claude Code mods control loop, chú thích same idea
Hai khung cạnh nhau trên màn hình (video đăng ngày 24/10/2026): "DeepSeek Harness · agent loop" và "Claude Code mods · control loop", nối bằng mũi tên "same idea".

6. Câu hỏi khó nhất: ngoài đời không có answer key

Theo Muhammad (video đăng ngày 24/10/2026), điều này dẫn tới câu hỏi khó nhất trong paper, vì phần lớn các thí nghiệm được làm trên eval. Trong lab, bạn tối ưu được một harness vì bạn có một training set kèm answer key. Ngoài thế giới thật, khi bạn giao cho agent một task hoàn toàn mới, không có answer key nào cả.

Hai khung lab (evals) với training set, harness, answer key, score và khung real world trống
"Idea 2 · no answer key" trên màn hình (video đăng ngày 24/10/2026): bên trái là lab (evals) với training set, harness, answer key và đồng hồ score; bên phải là real world, trống trơn.

Và khi các nhà nghiên cứu để AI tự viết harness của nó một cách mù quáng, không kiểm thử các edit đó, hiệu năng giảm 10% (con số Muhammad nêu, video đăng ngày 24/10/2026). Để giải bài toán này mà không cần answer key, Harness² dùng một vòng lặp ba bước gọi là Propose, Probe và Compose.

7. Bước 1, Propose: chạy một lần, hai editor đọc log

Muhammad giải thích cách nó chạy (video đăng ngày 24/10/2026). Đầu tiên, ở bước Propose, agent chạy task một lần với harness mặc định. Dù không có điểm chấm, log vẫn cho thấy agent đã vật lộn ở đâu.

Sau đó hai editor chuyên biệt kiểm tra log ấy (theo video đăng ngày 24/10/2026). Một editor chỉ sửa phần cơ chế của workflow, như lỗi tool. Editor thứ hai đóng vai chuyên gia của domain, như một kế toán hay một luật sư, và liên tục thêm các rule của domain.

Vòng ba bước Propose, Probe, Compose và ba agent: default, workflow edit với tool guidance và hook, domain edit với SKILL.md
Ba phiên bản harness trên màn hình (video đăng ngày 24/10/2026): "default", "workflow edit" (thêm tool guidance và một hook) và "domain edit" (thêm một SKILL.md), phía trên là vòng Propose, Probe, Compose.

8. Bước 2 và 3, Probe và Compose: chỉ giữ edit đã chứng minh

Bước thứ hai là Probe (theo video đăng ngày 24/10/2026). Ở bước này, hệ thống chạy các harness đã nâng cấp trên đúng task đó. Lúc này ta có kết quả baseline với harness mặc định, và kết quả với harness đã nâng cấp.

Bước thứ ba là Compose (theo video đăng ngày 24/10/2026). Ở đây hệ thống so hành vi trước và sau, đặt cạnh nhau. Thay vì đoán câu trả lời nào nghe hay hơn, nó kiểm xem một edit có sửa được một lỗi cụ thể của lần chạy đầu hay không, ví dụ bắt được 12 ô spreadsheet bị trống mà lần chạy đầu đã bỏ sót. Chỉ những edit đã được chứng minh mới được gộp vào harness cuối. Nếu edit không giúp gì, hệ thống đơn giản giữ nguyên harness gốc.

Bước Compose: baseline không có edit đặt cạnh bản upgraded với check.py, SKILL.md, rule; ô chữ sounds nicer?
Bước Compose trên màn hình (video đăng ngày 24/10/2026): bên trái là baseline "no edits", bên phải là bản "upgraded" với check.py, SKILL.md và một rule; hai kết quả được so qua lại, còn ô "sounds nicer?" là kiểu đánh giá mà bước này tránh.

Theo Muhammad (video đăng ngày 24/10/2026), đây là một cách rất hay để chỉ thêm vào baseline những năng lực thực sự giúp ích, thay vì đi theo những thử nghiệm chỉ có vẻ là đang giúp.

9. Hai tầng đệ quy và experience library

Muhammad chỉ ra (video đăng ngày 24/10/2026): cách trên sửa được task hiện tại mà agent đang làm, nhưng chuyện gì xảy ra ở task tiếp theo? Giả sử có task 1 và task 2. Nếu bạn mang nguyên harness đã tuỳ biến nặng của task 1 sang task 2, nó có thể hỏng, vì một nửa số rule đó chỉ dành riêng cho task 1.

Đó là lý do project được gọi là Harness bình phương (theo video đăng ngày 24/10/2026). Nó dùng hai tầng đệ quy (recursion). Tầng 1 tiến hoá harness cho đúng task đang ở trước mặt bạn. Tầng 2 tiến hoá cách hệ thống dựng harness cho các task tương lai.

Sau mỗi task, hệ thống nhìn lại xem edit nào thực sự có ích, lọc bỏ phần nhiễu chỉ riêng cho task đó, rồi lưu các tool, skill và bài học (lesson) dùng lại được vào một experience library (theo video đăng ngày 24/10/2026). Khi task tiếp theo tới, agent bắt đầu lại với một harness nền sạch, và chỉ kéo từ thư viện đó những tool và skill đã được chứng minh mà nó cần.

Task 2 bắt đầu với clean base harness, phễu lọc và kệ experience library chứa check.py, SKILL.md, lesson
"Idea 3 · two levels" trên màn hình (video đăng ngày 24/10/2026): task 2 bắt đầu với "clean base", kết quả của task trước đi qua một phễu lọc, và những gì còn lại (check.py, SKILL.md, lesson) được xếp lên kệ experience library.

Theo anh (video đăng ngày 24/10/2026), theo thời gian hệ thống sẽ xây được một thư viện tool và skill có thể dùng cho các task sau.

10. Cái gì hiệu quả: kết quả trên các domain

Tiếp theo, Muhammad đi qua cái gì thực sự hiệu quả, cái gì gãy, và đâu là bài học thật từ paper (video đăng ngày 24/10/2026). Bắt đầu với cái hiệu quả.

Theo cách Muhammad tóm tắt kết quả của paper (video đăng ngày 24/10/2026): trên coding, web, office và công việc pháp lý, việc tiến hoá harness ngay trong lúc làm thắng các harness tĩnh, kể cả Claude Code và Codex để nguyên, ở mọi domain. Với các task phức tạp như redline văn bản pháp lý hay đối soát ngân sách (budget reconciliation), tiến hoá harness đã nâng độ chính xác của task thêm 35 đến 50 điểm chỉ trong một bước, mà anh gọi là khá đáng kể.

Ba biểu đồ cột WB-code, WB-web, WB-office so CodeBuddy, OpenCode, Codex, Claude Code và Ours với Gemini 3.5 Flash
Biểu đồ từ paper trên màn hình (video đăng ngày 24/10/2026), Gemini 3.5 Flash trên WorkBuddy-Bench. WB-code: CodeBuddy 71.2, OpenCode 73.4, Codex 74.0, Claude Code 76.2, "Ours" 80.8 (+4.6). WB-web: 68.7, 69.9, 72.5, 71.2, "Ours" 78.3 (+5.8). WB-office: 72.5, 74.0, 77.0, 78.5, "Ours" 83.4 (+4.9). Mỗi mức tăng ghi trên cột "Ours" đúng bằng khoảng cách tới cột cao nhất còn lại.

Abstract của paper (đọc ngày 24/10/2026) ghi con số theo cách khác: trên ba benchmark chuyên môn và bốn cấu hình model và harness, một bước Harness² cải thiện GLM-5 và Gemini 3.5 Flash so với harness gốc, tăng tới 11.5 điểm trên WorkBuddy-Bench, 4.5 điểm trên JobBench và 11.8 điểm phần trăm trên LAB.

11. Harness hơn model: dựng bằng model lớn, chạy bằng model nhỏ

Theo Muhammad (video đăng ngày 24/10/2026), quan trọng nhất là paper chứng minh hiệu ứng "harness hơn model" (harness over model). Không chỉ một model nhỏ hơn là GLM-5 với harness đã tiến hoá thắng một model mạnh hơn, trong trường hợp này là Gemini 3.5 Flash trên harness mặc định của nó. Mà khi các nhà nghiên cứu lấy harness đã tiến hoá cho Gemini và đưa nguyên xi cho một model nhỏ hơn, điểm của model nhỏ hơn đó tăng thêm 17 điểm ngay lập tức.

Anh nhấn mạnh đây là một điểm rất quan trọng cần nhớ (video đăng ngày 24/10/2026). Nó có nghĩa là bạn có thể tuỳ biến harness bằng một model lớn hơn, mạnh hơn, rồi trong production, bạn có thể dùng harness đã tiến hoá đó với một model tương đối nhỏ hơn.

Gemini 3.5 Flashbuild: tiến hoá harness GLM-5production: dùng lại harness harness đã tiến hoá costcost
Hình 11.1Ý tưởng màn hình vẽ lúc này (video đăng ngày 24/10/2026): dựng harness với Gemini 3.5 Flash ở bước build, thanh cost đầy; mang harness đó sang GLM-5 cho production, thanh cost gần như trống.

12. Chỗ gãy thứ nhất: compute bị nhân lên

Tiếp đến, Muhammad bàn về chỗ cả ý tưởng này gãy (video đăng ngày 24/10/2026). Thứ nhất là compute bị nhân lên (compute multiplier). Thử các harness ứng viên ngay trong lúc làm tốn từ 4 tới 20 lần chạy agent đầy đủ cho một task duy nhất.

Một task dẫn tới 4 agent cho một bước và 20 agent với budget 5, chữ x4 to x20 agent runs
"Where it breaks · 1 · compute" trên màn hình (video đăng ngày 24/10/2026): một task, một bước đã cần 4 lần chạy agent, với "budget 5" là 20 lần, tức "x4 to x20 agent runs". Hai mục kế tiếp đã hiện mờ ở góc: echo chamber và cheating.

Vì vậy, theo anh (video đăng ngày 24/10/2026), bạn sẽ không bao giờ muốn chạy cách này trực tiếp cho một prompt nhanh. Thay vào đó, bạn dùng nó cho 10 hay 20 task đầu của chính mình để xây thư viện cho domain của bạn, rồi tái sử dụng harness đã nâng cấp cho các task trong production.

13. Chỗ gãy thứ hai và thứ ba: echo chamber và agent tự tìm đáp án

Thứ hai là cái bẫy echo chamber (theo video đăng ngày 24/10/2026). Khi không có answer key thật, lúc agent tự viết các script kiểm chứng của mình, nó có thể nhúng luôn những giả định sai của chính nó vào bộ kiểm (checker). Muhammad kể trong một bài test, checker do agent tự viết báo pass ba lần, trong khi bài test thật thì fail.

Vì vậy, theo anh (video đăng ngày 24/10/2026), đây là điều cần nhớ: trong phần lớn trường hợp, bạn muốn có một verifier hay checker riêng, khác với model mà bạn đang tiến hoá harness cho nó.

Thứ ba là khoảnh khắc mà Muhammad gọi là buồn cười nhất trong repo (video đăng ngày 24/10/2026). Trong một lần chạy validation có quyền truy cập internet mở, theo lời anh, agent nhận ra mình đang bị kiểm tra trên một benchmark công khai, rồi tự vào Hugging Face và tải về rubric chấm điểm của benchmark đó, hoàn toàn tự mình làm.

Đoạn Web access trong file docs/EXPERIMENTS.md của repo harness2, agent nối ra open internet, nhãn JobBench và 3 cheating
"3 · cheating" trên màn hình (video đăng ngày 24/10/2026): mục "Web access" trong docs/EXPERIMENTS.md của repo harness2, cạnh nhãn JobBench và một agent nối ra "open internet".

File docs/EXPERIMENTS.md của repo (đọc ngày 24/10/2026) ghi cụ thể hơn: cả ba benchmark đều công khai, JobBench công bố file RUBRICS.json của từng task trên Hugging Face, và trong một lần chạy validation của bản phát hành này, một rollout của Codex trên JobBench đã tải rubric của task mình mà không hề được yêu cầu. File này cũng khuyên chặn các host huggingface.co, hf.co, *.hf.co, github.com và raw.githubusercontent.com cho executor sau bước setup; màn hình tiếp theo trong video (đăng ngày 24/10/2026) cũng vẽ agent nối tới huggingface.co, hf.co và github.com.

Theo Muhammad (video đăng ngày 24/10/2026), đây là hành vi chúng ta đã bắt đầu thấy ngày càng nhiều. Các agent này giờ có nhiều quyền tự chủ (autonomy) hơn hẳn, và chúng sẽ dùng mọi nguồn lực có thể có trong tay để hoàn thành task. Vì vậy, nếu bạn đang đánh giá harness tự tiến hoá của mình, hay harness nói chung, bạn cần có guardrail thật tốt quanh loại quyền truy cập mà chúng được có.

14. Bài học chính khi build agent

Bài học lớn từ Harness², theo Muhammad (video đăng ngày 24/10/2026), rất đơn giản: cách bạn engineer harness giờ quan trọng ngang với việc bạn chọn model nào.

Nếu bạn đang build agent, anh gợi ý bốn điều (video đăng ngày 24/10/2026):

  • Giữ các prompt always-on thật nhỏ (theo video đăng ngày 24/10/2026).
  • Chuyển các playbook của domain vào on-demand skill (theo video đăng ngày 24/10/2026).
  • Thay việc LLM suy luận lặp đi lặp lại bằng script nhỏ (theo video đăng ngày 24/10/2026).
  • Áp những rule quan trọng nhất của bạn ngay bên trong control loop (theo video đăng ngày 24/10/2026).
tiny prompton-demand skillssmall scriptsrules in the loop SKILL.mdcheck.py harness = model: cách engineer harness quan trọng ngang việc chọn model
Hình 14.1Bốn ô "Takeaway" mà màn hình đánh dấu lúc kết (video đăng ngày 24/10/2026): tiny prompt, on-demand skills, small scripts và rules in the loop, cạnh hình cái cân thăng bằng giữa harness và model.

Anh để paper và repo GitHub trong phần mô tả video, cảm ơn người xem và hẹn gặp lại ở video sau.

Nguồn và liên kết 7 nguồn

  1. Tên gốc: Harness² Explained: Self-Improving Agents Without Training
  2. Sự kiện: YouTube
  3. Video gốc: https://www.youtube.com/watch?v=pW2ktrJlsyE youtube.com
  4. Kênh YouTube Prompt Engineering (Muhammad Farooq): youtube.com/channel/UCDq7SjbgRKty5TgGafW8Clg youtube.com
  5. Paper "Harness^2: Recursive Agent Harnessing for an Open World" trên arXiv, nộp ngày 9/10/2026 (đọc ngày 24/10/2026): arxiv.org/abs/2610.14224 arxiv.org
  6. Repo mã nguồn harness2 của Google Research trên GitHub, có README và docs/EXPERIMENTS.md với mục Web access (đọc ngày 24/10/2026): github.com/google-research/harness2 github.com
  7. Trang dự án Harness², có sơ đồ hai tầng đệ quy, tám thành phần harness và bảng kết quả (đọc ngày 24/10/2026): harness2.github.io harness2.github.io