TL;DR

  • Prompt coding agent từng turn giờ là nút thắt của cả workflow. Đòn bẩy đã chuyển sang loop engineering: thiết kế hệ thống tự prompt agent thay bạn.
  • Loop là một mục tiêu đệ quy: purpose cộng stop condition có thể kiểm chứng được, hệ thống lặp agent cho đến khi điều kiện đúng. Bản dân dã: “cron plus a decision-maker in the body”. Loop dừng theo condition, không bao giờ theo đồng hồ.
  • Harness của bạn là cái sàn; loop là cái sàn đó tự chạy và tự nạp việc cho chính nó. Checklist 6 câu cuối bài cho biết harness của bạn đã sẵn sàng hay chưa.

Làn sóng “loop engineering” khởi đầu bằng một post trên mạng X. Ngày 7/6, Peter Steinberger (@steipete) đăng dòng này, thu về khoảng 2,2 triệu lượt xem:

Here’s your monthly reminder that you shouldn’t be prompting coding agents anymore. You should be designing loops that prompt your agents.

Phần bình luận vỡ trận: nửa bảng tin tuyên bố prompting đã chết, nửa còn lại hỏi loop khác gì cron job. Matthew Berman buông giữa đám đông: “nobody knows but him and boris”. Reply sắc nhất thuộc về phe hoài nghi: “Cronjobs have funny re-branding rn”.

Nói thẳng quan điểm của bài: prompt từng turn giờ là nút thắt cổ chai, không phải model. Đòn bẩy đã rời việc viết prompt, chuyển sang thiết kế loop, hệ thống tự prompt agent thay bạn.

Câu hỏi đáng tiền cho một senior dev đã có harness: đây là kỷ nguyên thứ tư của arc bạn đang đi, hay một cú rebrand có thể bỏ qua. Đọc xong, bạn tự trả lời được cho setup của mình.

Bốn kỷ nguyên: prompt, context, harness, loops

Mỗi kỷ nguyên nâng đòn bẩy của engineer lên một tầng: từ câu chữ trong một prompt, lên context mà agent đọc, lên môi trường agent chạy bên trong, và giờ là hệ thống vận hành chính agent đó. Bài này nối tiếp trực tiếp loạt bài harness engineering với Claude Code.

Ba kỷ nguyên đầu site đã viết kỹ; tóm tắt lại bằng một bảng.

Kỷ nguyênĐơn vị đòn bẩyViệc của bạn
1. PromptCâu chữ trong một promptViết prompt khéo hơn
2. ContextNhững gì agent đọc trước khi làmSoạn CLAUDE.md, docs, ví dụ
3. HarnessMôi trường agent chạy bên trongDựng skills, hooks, verification
4. LoopsHệ thống vận hành agentĐịnh nghĩa mục tiêu và stop condition

Kỷ nguyên bốn: hệ thống chạy agent theo mục tiêu, không cần bạn ngồi ghế prompt. Harness là cái sàn; loop là cái sàn đó tự chạy, tự nạp việc.

Bài post châm ngòi cuộc tranh cãi

Ngày 7/6, Peter Steinberger bảo 2,2 triệu người ngừng prompt coding agent, và phần replies chứng minh gần như không ai nói được thứ gì sẽ thay thế việc đó, trừ đúng một người: người đã build ra Claude Code, kèm con số.

Matt Van Horn gom cả cuộc cãi nhau vào bài article “WTF Is a Loop? Peter Steinberger vs. Boris Cherny” trên X, ngày 8/6, 3,4 triệu lượt xem. Giữa đám đông có đúng một reply trả lời trúng: “it’s continuous orchestration loops that oversee other threads/agents”.

Receipt đến từ Boris Cherny, người tạo ra Claude Code với setup /loop 5m /babysit công khai. Trong bài của Van Horn, anh nói:

I don’t prompt Claude anymore… my job is to write loops.

Kèm con số: 30 ngày gần nhất, 100% contributions của anh vào Claude Code do chính Claude Code viết, 259 PR. Anh xoá IDE từ tháng 11/2025. Sức nặng với người hoài nghi: người build ra tool đang mô tả workflow của chính mình, kèm số liệu đếm được.

Điểm mấu chốt: Trong 30 ngày, 100% contributions của Boris Cherny vào Claude Code do Claude Code viết, tổng cộng 259 PR, theo bài tổng hợp của Matt Van Horn trên X ngày 8/6/2026 (3,4 triệu lượt xem): https://x.com/mvanhorn/status/2063865685558903149

Loop engineering thực sự nghĩa là gì

Loop engineering là kỷ luật thiết kế mục tiêu đệ quy cho agent: bạn định nghĩa một mục đích và một stop condition có thể kiểm chứng được, rồi để hệ thống tự lặp đến khi điều kiện đúng. Định nghĩa chuẩn giữ nguyên tiếng Anh vì là mỏ neo trích dẫn cho cả chín phần:

A loop is a recursive goal: you define a purpose and a verifiable stop condition, and the system iterates agents against it until the condition holds — without you prompting each turn.

Nói cách khác, bạn không prompt từng turn nữa: bạn giao cho hệ thống một đích đến cùng một cách kiểm chứng “đã đến nơi”, phần lặp lại nó tự lo. Matt Van Horn có bản dân dã hơn: “cron plus a decision-maker in the body”, cron cộng một bộ ra quyết định trong thân vòng lặp.

Định nghĩa có hai bộ phận chịu lực: purpose, hệ thống tồn tại để làm gì; và stop condition có thể kiểm chứng được, do máy hoặc một model khác kiểm chứng, không bao giờ là lời tự nhận của worker. Thiếu cái thứ hai, mọi thứ còn lại chỉ là script chạy dai.

Đây là một tiến hoá có phả hệ kéo dài bốn năm:

  1. ReAct (2022): paper đặt reason và act vào một vòng lặp, thuần học thuật (arXiv).
  2. AutoGPT (2023): vòng lặp nhưng thiếu verification, thất bại thảm hại nổi tiếng (GitHub).
  3. Ralph (tháng 7/2025): vòng lặp ngu nhất mà chạy được, context mới mỗi vòng (Geoffrey Huntley).
  4. /goal (xuân 2026): được đóng gói thành sản phẩm, Codex tháng 4 rồi Claude Code v2.1.139 tháng 5; một model riêng chấm stop condition (docs).
  5. Orchestration loops (tháng 6/2026): loop giám sát loop khác; bài multi-agent setups là cửa vào.

Credit cho Simon Willison: ông đặt tên “designing agentic loops” từ tháng 9/2025, trước làn sóng chín tháng. Bản tổng hợp tốt nhất tuần rồi là “Loop Engineering” của Addy Osmani; bài này xây trên nền đó công khai, khác ở phần steelman và ở tính liên tục từ harness. Phần 2 sẽ giải phẫu năm building block cùng memory spine; giờ chỉ cần biết chúng tồn tại.

Điểm mấu chốt: Phả hệ của loop engineering trải năm chặng có ngày tháng kiểm chứng được: ReAct (2022) → AutoGPT (2023) → Ralph (7/2025) → /goal được đóng gói thành sản phẩm (Codex 4/2026, Claude Code v2.1.139 5/2026) → orchestration loops (6/2026).

Loop có phải là cron job đổi tên không?

Phần lớn là đúng, và một bài essay trung thực phải thừa nhận điều đó trước khi phản biện: vòng lặp chạy được ngu nhất thế giới chỉ là một dòng shell. Khác biệt nằm ở thứ ngồi trong thân vòng lặp; scheduler thì cron đã làm tốt từ lâu.

Nhìn nhận công bằng cho phe hoài nghi: lên lịch chạy, thử lại, lưu trạng thái trên ổ cứng, cron có đủ từ thập niên 1970 với Version 7 Unix; Vixie cron 1987 chỉ là hậu duệ. “Cronjobs have funny re-branding rn” vì thế xứng đáng một câu trả lời nghiêm túc. Ralph của Geoffrey Huntley còn chứng minh hộ phe hoài nghi:

Terminal window
while :; do cat PROMPT.md | claude-code; done

Nhìn thẳng: nó gần như là một cron job. Phần thừa nhận dừng ở đây.

Điểm mấu chốt: Ralph, vòng lặp một dòng shell while :; do cat PROMPT.md | claude-code; done, được Geoffrey Huntley công bố ngày 14/7/2025 tại https://ghuntley.com/ralph/, là tổ tiên trực tiếp của /goal ngày nay.

Phần phản biện nằm ở thân vòng lặp. Cron chạy một script cố định, dừng khi script exit. Loop đánh giá một mục tiêu, dừng khi condition verify được trở thành đúng. Bộ ra quyết định trong thân là thứ cron chưa từng có: đọc trạng thái, chọn bước tiếp theo, phán xem “done” đã thật xảy ra chưa. Một cron job không có cách nào tự nhận ra mình đã xong việc. Còn với loop, nhận ra điều đó chính là toàn bộ lý do nó tồn tại.

Loop dừng theo condition, không theo đồng hồ

“Chạy ngày đêm cho đến khi xong feature” là anti-pattern, không phải lời hứa của loop engineering. Một loop dừng khi một condition verify được trở thành đúng; thời gian chỉ được phép đóng vai cái nắp chặn trên, không bao giờ là mục tiêu.

Ngộ nhận này cần giết sớm vì nó neo cả series: nghe “loop”, người ta hình dung một agent cày qua đêm không ai trông. Chính danh sách kịch bản thất bại (failure modes) cho long-running agents của Anthropic (tháng 11/2025) ghi nhận “premature victory” và feature fake-done; playbook đó tồn tại vì “done” không verify được sẽ fail, theo chính vendor.

Tệ: “chạy cho đến khi xong feature.” “Xong” dựa trên lời tự nhận của chính worker, đúng thứ danh sách failure mode kia cảnh báo.

Tốt: “lặp cho đến khi test này pass, tối đa N vòng.” Máy check được, có chặn trên, không cần tin lời ai.

Mọi hệ thống nghiêm túc đều cap số vòng, chi phí, hoặc thời gian; Phần 3 dành riêng cho stop condition.

Điểm mấu chốt: Danh sách failure mode của Anthropic cho long-running agents (tháng 11/2025) ghi nhận “premature victory” và feature fake-done, bằng chứng từ chính vendor rằng “done” không verify được là điểm gãy số một: https://www.anthropic.com/engineering/effective-harnesses-for-long-running-agents

Việc của bạn: cái gì đổi, cái gì giữ nguyên

Phần prompting chuyển vào hệ thống; phần phán đoán ở lại với bạn. Bạn thiết kế loop, định nghĩa “done”, giới hạn phạm vi nó được đụng, và review đầu ra. Verification vẫn là việc của bạn, thứ duy nhất không đổi qua cả bốn kỷ nguyên.

Cái đổi: bạn thôi gõ “now fix the tests” lần thứ bốn mươi, trở thành người quyết định loop tồn tại để làm gì, “done” nghĩa là gì, nó được phép chạm vào đâu. Cái giá cần nói rõ: bạn đổi quyền kiểm soát từng turn lấy throughput, món đổi chỉ có lời khi verification đủ rẻ và đủ chắc để chạy mỗi vòng.

Cái giữ nguyên: verification. Loop tự chấm bài chính nó là failure mode mọi nguồn trong bài hội tụ về. Chính Boris ghép loop với self-verification, “give Claude a way to verify its work”, chất lượng tăng 2-3 lần theo con số anh đưa. Kỷ luật prequel nằm trong bài self-verification loop; Phần 3 kéo nó qua nhiều session.

Tôi từng thấy cơ chế này gãy ở phạm vi ảnh hưởng nhỏ, trong pipeline content của chính site này, thời còn thuần harness: một maker agent bịa một câu quote CEO nghe rất hợp lý rồi tự self-check cho qua. Một pass fact-checker độc lập mới chặn được nó trước khi publish. Cùng một kiểu gãy: worker tự phán “đúng rồi”. Nhân lên thành loop chạy không người trông, hậu quả hết nhỏ.

Một câu trung thực để khép: cùng một loop nhân đòn bẩy của engineer cẩn thận cũng nhân lên những dòng code rác (slop) của engineer cẩu thả, và nó không phân biệt được hai người đó. Phần 9 dành trọn cho chuyện này.

Điểm mấu chốt: “Give Claude a way to verify its work” nâng chất lượng đầu ra 2-3 lần, theo chính Boris Cherny: https://x.com/bcherny/status/2007179861115511237. Verification là biến số anh chỉ ra, không phải model.

Harness của bạn đã sẵn sàng cho loop chưa?

Loop khuếch đại bất kỳ harness nào nó bọc quanh. Harness chưa sẵn sàng thì loop tự động hoá luôn những lỗ hổng, nhanh và đều hơn bạn làm bằng tay. Sáu câu hỏi dưới đây cho biết bạn đang đứng phía nào, mất khoảng mười phút để trả lời thật.

  • Convention của project được viết ra ở nơi agent đọc được (skills, CLAUDE.md), hay vẫn nằm trong đầu bạn?
  • Hooks enforce các điều không-thương-lượng một cách máy móc, hay bạn vẫn bắt vi phạm bằng mắt?
  • Công việc bạn định loop có definition of done mà máy check được không (failing test, lint gate, schema check)?
  • State có sống sót qua một session chết không (một file mà lần chạy sau đọc được), hay context chết cùng cửa sổ?
  • Hai agent có thể làm việc trên repo mà không giẫm chân nhau không (worktrees)?
  • Bạn đã nắm rõ các giới hạn (cap) của mình chưa: số vòng lặp, chi phí, thời gian?

Chấm thật thà. Thiếu items 1–3, build harness trước theo hướng dẫn harness engineering cho senior developer. Thiếu 4–6 là đúng chỗ Parts 4–6 sẽ dạy. Qua cả sáu, bạn đủ sàn để bọc loop đầu tiên quanh một mục tiêu verify được.

FAQ

Loop engineering là gì?

Loop engineering là thiết kế mục tiêu đệ quy cho agent: một purpose cộng một stop condition có thể kiểm chứng được, hệ thống tự lặp agent cho đến khi điều kiện đúng. Bản dân dã, theo Matt Van Horn: “cron plus a decision-maker in the body”, cron cộng một bộ ra quyết định trong thân vòng lặp.

Loop có phải chỉ là cron job không?

Cron chạy một script cố định theo lịch và dừng khi script exit. Loop thêm bộ ra quyết định trong thân cùng một stop condition có thể kiểm chứng được: nó dừng khi “done” chứng minh được, không phải khi hết giờ.

Tôi có nên ngừng prompt và build loop ngay không?

Một chốt chặn trung thực, không thổi phồng: nếu task lặp lại, “done” check được bằng máy, và harness của bạn qua checklist ở trên, thì có, bắt đầu với một loop quanh một mục tiêu verify được. Thiếu một trong ba điều kiện đó thì build harness trước; “chưa phải lúc” là câu trả lời đúng cho phần lớn team hôm nay.

Phe hoài nghi đúng gần hết

Quay lại post ngày 7/6: phe hoài nghi đúng về gần như mọi thứ, trừ đúng một bộ phận, và đó lại là bộ phận quan trọng nhất. Scheduler không mới, retry không mới. Thứ mới là bộ ra quyết định trong thân vòng lặp: đọc trạng thái, chọn bước tiếp theo, chứng minh “done” thay vì tuyên bố nó.

Việc nên làm khác: tuần này chưa cần build loop vội. Chấm sáu câu checklist cho repo của bạn, chọn một việc lặp lại có definition of done máy check được, viết stop condition ra giấy trước. Câu đó chứa chữ “xong” mà thiếu lệnh check chạy được thì quay lại sửa.

Giới hạn trung thực: site này chưa vận hành loop trong production. Kinh nghiệm của chúng tôi là harness-era; series này là học loop công khai, và Phần 7 là nhật ký hành trình, kể cả những vòng fail. Chờ một màn ăn mừng chiến thắng thì ở đây không có. Thứ có thật là một định nghĩa đứng vững trong các buổi đánh giá kiến trúc (design review), và một cái gate cho biết khi nào bước qua.

Đọc tiếp

  • Anatomy of a Loop: Five Building Blocks and One Spine (sắp ra mắt): Phần 2 giải phẫu năm building block và memory spine mà bài này mới chỉ nhắc tên.
  • Harness Engineering với Claude Code: cái sàn mà cả series này xây lên trên; đọc trước nếu kỷ nguyên thứ ba với bạn còn mơ hồ.
  • Self-verification loop trong Claude Code: kỷ luật verification trong một session, prequel trực tiếp của “verification vẫn là việc của bạn”.
{
"@context": "https://schema.org",
"@type": "Article",
"headline": "Loop Engineering: Đã đến lúc ngừng prompt từng turn",
"author": {
"@type": "Organization",
"name": "ShipWithAI"
},
"datePublished": "2026-06-12",
"description": "Prompt từng turn giờ là nút thắt, không phải model. Loop engineering thay nó bằng mục tiêu đệ quy có stop condition verify được. Harness sẵn sàng chưa?",
"image": "/images/blog/loop-engineering-from-harness-to-loops-cover.png",
"articleSection": "opinion",
"keywords": "claude-code, ai, automation, opinion, vietnamese, advanced",
"mainEntityOfPage": "https://shipwithai.io/vi/blog/loop-engineering-from-harness-to-loops/"
}
{
"@context": "https://schema.org",
"@type": "FAQPage",
"mainEntity": [
{
"@type": "Question",
"name": "Loop engineering là gì?",
"acceptedAnswer": {
"@type": "Answer",
"text": "Loop engineering là thiết kế mục tiêu đệ quy cho agent: một purpose cộng một stop condition có thể kiểm chứng được, hệ thống tự lặp agent cho đến khi điều kiện đúng. Bản dân dã, theo Matt Van Horn: \"cron plus a decision-maker in the body\", cron cộng một bộ ra quyết định trong thân vòng lặp."
}
},
{
"@type": "Question",
"name": "Loop có phải chỉ là cron job không?",
"acceptedAnswer": {
"@type": "Answer",
"text": "Cron chạy một script cố định theo lịch và dừng khi script exit. Loop thêm bộ ra quyết định trong thân cùng một stop condition có thể kiểm chứng được: nó dừng khi \"done\" chứng minh được, không phải khi hết giờ."
}
},
{
"@type": "Question",
"name": "Tôi có nên ngừng prompt và build loop ngay không?",
"acceptedAnswer": {
"@type": "Answer",
"text": "Một chốt chặn trung thực, không thổi phồng: nếu task lặp lại, \"done\" check được bằng máy, và harness của bạn qua checklist ở trên, thì có, bắt đầu với một loop quanh một mục tiêu verify được. Thiếu một trong ba điều kiện đó thì build harness trước; \"chưa phải lúc\" là câu trả lời đúng cho phần lớn team hôm nay."
}
}
]
}
{
"@context": "https://schema.org",
"@type": "BreadcrumbList",
"itemListElement": [
{
"@type": "ListItem",
"position": 1,
"name": "Blog",
"item": "https://shipwithai.io/vi/blog/"
},
{
"@type": "ListItem",
"position": 2,
"name": "Loop Engineering: Đã đến lúc ngừng prompt từng turn",
"item": "https://shipwithai.io/vi/blog/loop-engineering-from-harness-to-loops/"
}
]
}