Loop Engineering — Từ một agent run đến hệ thống tự vận hành có kiểm soát
ChaoYue0307/awesome-loop-engineering ngày 2026-07-18.Luận đề: leverage point đã chuyển từ prompt sang operating system Thesis
Loop Engineering là thực hành thiết kế recurring AI-agent systems có thể tìm việc, hành động trong boundary rõ, kiểm chứng bằng bằng chứng bên ngoài, lưu state qua nhiều run và tự quyết định retry, report, escalate hay exit trong một budget hữu hạn. Nó không phải prompt được lặp lại, không phải software event loop, và cũng không đồng nghĩa với cron job có gắn model.
Cách hiểu ngắn nhất là: prompt engineering thiết kế lời yêu cầu, còn Loop Engineering thiết kế điều gì sẽ xảy ra sau lời yêu cầu đó. Khi agent hoàn thành một bước, hệ thống dựa vào đâu để biết nó đã làm đúng? Nếu thất bại, failure nào đáng thử lại và failure nào cần con người? Nếu process chết giữa chừng, lần chạy sau đọc state ở đâu? Nếu không còn việc, loop có biết im lặng hay vẫn tự tạo thêm hoạt động? Những câu hỏi này không nằm trong năng lực ngôn ngữ của model; chúng là quyết định kiến trúc và vận hành.
Ở mô hình làm việc tương tác truyền thống, con người vô thức đảm nhiệm toàn bộ control plane. Ta đọc output, nhớ điều đã thử, copy log mới vào context, quyết định cho agent chạy tiếp, giới hạn scope và dừng khi thấy rủi ro. Khi chuyển sang schedule, background task hoặc run-until-done, các quyết định ấy không biến mất. Nếu không được thiết kế thành contract, chúng trở thành hidden defaults mà model hoặc runtime tự lấp đầy.
Vì vậy, Loop Engineering không chủ yếu hỏi “làm sao để agent thông minh hơn?”. Nó hỏi “làm sao để một hệ thống dùng agent có thể lặp lại mà vẫn reviewable, bounded và accountable?”. Đây là chuyển dịch từ tối ưu chất lượng một câu trả lời sang tối ưu hành vi của một recurring job qua thời gian. Model vẫn quan trọng, nhưng model chỉ là một actor bên trong hệ thống lớn hơn.
Luận đề của báo cáo này là: độ tin cậy của loop đến từ cấu trúc bên ngoài model — work intake có nguồn gốc, workspace có giới hạn, verifier độc lập, state bền, budget hữu hạn, receipt truy nguyên được và human owner có quyền can thiệp. Một model mạnh có thể tăng xác suất thành công của mỗi attempt; nó không tự tạo ra những thuộc tính vận hành đó.
Prompt, context và harness cải thiện một run; Loop Engineering quản trị recurring agent work qua thời gian.
Vì sao Loop Engineering xuất hiện lúc này? Context
Khái niệm này xuất hiện khi ba xu hướng hội tụ. Thứ nhất, coding agents và general-purpose agents đã giữ được mạch hành động dài hơn: chúng có thể đọc nhiều file, gọi tool, quan sát lỗi, sửa và kiểm tra lại thay vì chỉ sinh một đoạn text. Thứ hai, runtime đã có các primitive cần cho recurring work — schedule, goal, worktree, skill, connector, sub-agent và background execution. Thứ ba, chi phí generation giảm tương đối nhanh hơn chi phí judgment: tạo thêm một patch dễ hơn, nhưng chứng minh patch đúng và đủ an toàn vẫn đắt.
Bài viết của Addy Osmani mô tả sự chuyển dịch này bằng một hình ảnh trực quan: thay vì liên tục prompt agent, người dùng thiết kế một hệ thống tự tìm việc, giao việc, kiểm tra, ghi nhớ và quyết định bước tiếp theo. Điểm đáng chú ý không phải vòng lặp shell mới lạ; nó là việc các primitive trước đây rời rạc nay trở thành product capabilities phổ biến và có thể ghép thành một operating model.
Hướng dẫn long-horizon của OpenAI cũng cho thấy một run dài không đứng vững nhờ “một prompt khổng lồ”. Nó dùng spec để đóng băng target, plan để chia milestone, runbook để quy định cách hành động, validation ở mỗi mốc và documentation như audit log sống. Đó chính là các mảnh của một loop contract ở quy mô một project: externalized intent, checkpoint, verifier và durable memory.
Tuy nhiên, khả năng chạy lâu không đồng nghĩa khả năng vận hành lặp lại. Một session 25 giờ vẫn có thể dựa vào state của một process và một objective duy nhất. Một operational loop phải xử lý thêm cold start, duplicate item, stale evidence, permission drift, budget theo chu kỳ, no-work outcome và handoff giữa nhiều run. Time horizon dài là điều kiện thúc đẩy Loop Engineering, không phải bằng chứng rằng bài toán đã được giải.
Nói cách khác, leverage point đã dịch chuyển. Khi generation là bottleneck, ta đầu tư vào prompt và model. Khi agent có thể tự tạo nhiều candidate action, bottleneck chuyển sang chọn việc đúng, chứng minh kết quả, giữ state và giới hạn blast radius. Loop Engineering là tên gọi cho phần kỹ thuật quanh bottleneck mới đó.
Giải phẫu định nghĩa: mỗi động từ là một trách nhiệm hệ thống Definition
Working Definition của repo mô tả Loop Engineering là thực hành thiết kế recurring systems có thể discover work, delegate, verify, persist state, decide next actions và run again. Câu này dễ bị đọc như một danh sách feature. Thực chất, mỗi động từ đóng một lỗ hổng reliability khác nhau; bỏ bất kỳ động từ nào cũng làm hệ thống đổi bản chất.
Recurring — sự lặp lại phải được thiết kế trước
Recurring không có nghĩa “agent thất bại nên ta bảo thử lại”. Nó nghĩa recurrence là một phần của operating model ngay từ đầu: có trigger, identity của job, cadence hoặc goal condition, state qua các lần chạy và stop rule. Một retry tình cờ vẫn là thao tác tương tác; một loop biết trước vì sao lần chạy tiếp theo được phép tồn tại.
Discover / receive work — agent không được tự invent backlog
Loop phải nối với một nguồn việc thật: PR đang bị block, CI failure, issue queue, dashboard alert, feedback stream hoặc corpus cần refresh. Intake không chỉ là connector đọc dữ liệu; nó còn có selection rule, dedupe, freshness và no-work behavior. Không có intake rõ, một agent được khuyến khích “luôn hữu ích” rất dễ biến maintenance loop thành cỗ máy tự mở rộng scope.
Delegate và act — authority phải đi cùng responsibility
Delegate không mặc định nghĩa multi-agent. Một single agent vẫn có thể nhận role rõ và được kiểm tra bằng deterministic gate. Khi có maker-checker hay manager-worker, delegation phải nêu ai khám phá, ai thay đổi, ai kiểm chứng và output nào là handoff contract. Số agent không tạo separation of duties nếu tất cả cùng dùng một authority và cùng tin vào một summary không có raw evidence.
Act luôn diễn ra trong một workspace cụ thể. Worktree, branch, container, sandbox hay read-only mode không chỉ là chi tiết runtime: chúng định nghĩa blast radius. Cùng một instruction “fix this” có ý nghĩa rất khác khi agent chỉ được sửa hai file trong branch so với khi nó có credential production và filesystem của người dùng.
Verify — biến output thành claim có thể kiểm tra
Model tạo ra candidate result; verifier quyết định candidate có thỏa điều kiện hay không. Test, typecheck, schema, threshold, frozen benchmark, policy check và reviewer decision là các loại evidence khác nhau. Chúng không hoàn hảo, nhưng chúng đưa completion ra khỏi cảm giác của actor. Nếu cùng agent vừa tạo thay đổi vừa là nguồn duy nhất tuyên bố “đã xong”, hệ thống có feedback nhưng chưa có accountability.
Persist — state là API giữa các run
Conversation context là working memory tạm thời; durable state là contract qua thời gian. Run sau cần biết item ID, phase, attempt count, evidence đã quan sát, side effect đã commit, blocker còn lại và next action. Khi state chỉ nằm trong chat hoặc một summary tùy hứng, cold run không thể phân biệt “chưa làm” với “đã thử và thất bại”, dẫn đến duplicate work và repeated side effects.
Decide và run again — repetition là kết quả của policy
Phần quan trọng nhất của loop không phải cạnh quay lại, mà là các cạnh không quay lại. Evidence mới và budget còn có thể dẫn tới retry; thiếu authority dẫn tới escalation; không có item dẫn tới no-op report; goal được chứng minh dẫn tới exit; failure lặp lại hoặc budget hết dẫn tới stop-without-success. Một vòng lặp vô điều kiện chỉ tự động hóa momentum. Loop Engineering tự động hóa một decision policy có giới hạn.
Bản đồ bằng chứng của repo Corpus
Repo awesome-loop-engineering vừa là một catalog, vừa là một đề xuất chuẩn hóa lĩnh vực. Hai vai trò này
cần được đọc tách biệt. Catalog cho biết các paper, tool, benchmark và practitioner pattern nào có liên quan; phần
definition, contract schema, pattern library và maturity model là synthesis của maintainer nhằm biến landscape đó
thành artifact có thể dùng. Số lượng nguồn cho breadth, nhưng không tự tạo consensus cho taxonomy.
| Facet | Phân bố snapshot | Diễn giải |
|---|---|---|
| Loại nguồn | 200 paper · 105 tool · 78 blog · 72 docs · 38 benchmark | Breadth tốt; không nên coi mọi row là bằng chứng ngang nhau. |
| Evidence tier | A: 465 · B: 99 · C: 15 | Tier mô tả nguồn gốc/khả năng inspect, không phải scientific quality score. |
| Scope fit | Direct: 162 · Enabling: 381 · Adjacent: 36 | Phần lớn corpus là thành phần hỗ trợ, không trực tiếp chứng minh hiệu quả operational loop. |
| Loop layer | Harness: 155 · Workflow: 120 · Cross-layer: 102 | Khái niệm được dựng từ nhiều lớp; boundary là điều phải giữ khi tổng hợp. |
| Lifecycle focus | Verification: 236 · State: 138 · Trigger: 42 · Objective: 21 | Literature dày ở kiểm chứng và tooling hơn ở contract-level operating evidence. |
Con số đáng chú ý nhất không phải 579 mà là tỷ lệ giữa direct và enabling. Chỉ 162 rows được gắn direct scope; 381 rows là enabling evidence như harness, memory, orchestration, verifier hoặc runtime. Điều này phản ánh đúng bản chất cross-layer của lĩnh vực, đồng thời nhắc ta không nên lấy thành công của một component làm bằng chứng cho reliability của toàn operational loop.
Ví dụ, một sandbox tool chứng minh khả năng cô lập execution; nó không chứng minh intake sẽ dedupe đúng. Một benchmark agent chứng minh task success trong distribution nhất định; nó không chứng minh scheduled job sẽ resume sau crash, giữ cost budget hoặc escalation đúng owner. Một memory framework chứng minh persistence primitive; nó không đảm bảo state được update ở đúng transaction boundary. Mỗi nguồn trả lời một phần của contract, hiếm khi trả lời cả hệ thống.
Phân bố lifecycle cũng cho thấy field hiện nghiêng về những phần dễ quan sát: verification, workspace, state và context có nhiều tài liệu hơn objective, trigger hay intake. Nhưng trong production, failure ở intake — chọn nhầm item, đọc stale state, xử lý trùng — có thể gây thiệt hại trước cả khi agent bắt đầu reasoning. Báo cáo này vì vậy dùng corpus như evidence map, không dùng nó như bảng xếp hạng mức độ quan trọng.
Bản đồ sáu kỹ thuật nền tảng Overview
Sáu kỹ thuật dưới đây không phải sáu mẹo độc lập. Chúng tạo một chuỗi dependency: xác định đúng layer trước khi thiết kế lifecycle; lifecycle được đóng băng thành contract; contract chỉ đáng tin khi có verification và durable state; sau đó mới chọn pattern/runtime và tăng maturity. Đọc ngược thứ tự thường tạo ra hệ thống nhiều automation nhưng ít control.
| ID | Kỹ thuật | Theme |
|---|---|---|
| F.1 | Tách boundary của discipline | Scope |
| F.2 | Lifecycle có evidence và next-action policy | Loop |
| F.3 | Loop Contract: 11 quyết định + name | Contract |
| R.1 | Verification + durable state + receipts | Reliability |
| O.1 | Pattern → contract → runtime | Operations |
| G.1 | Maturity có thứ tự và governance | Govern |
Đơn vị thiết kế: recurring job, không phải một prompt Mental model
Prompt có lifetime của một request hoặc một run. Recurring job có lifetime dài hơn model context, process và đôi khi cả model version. Vì thế, job cần một identity ổn định, một nguồn work, state schema, acceptance criteria, budget, owner và lifecycle của riêng nó. Nếu các yếu tố này chỉ nằm trong prompt, mỗi run có thể diễn giải lại operating policy theo context hiện tại.
Hãy so sánh hai câu. “Sửa CI cho tới khi xanh” là một instruction có mục tiêu nhưng còn mơ hồ về authority và evidence. “Khi required check X fail trên PR đang mở, nhận đúng failure đó, tạo clean worktree tại failing SHA, thử tối đa ba narrow patches, không sửa verifier, chỉ success khi original command pass; nếu flaky hoặc vượt scope thì comment receipts cho owner” là một recurring job đã bắt đầu có contract.
Sự khác biệt không nằm ở độ dài câu chữ. Bản thứ hai xác định identity của item, isolation boundary, mutation policy, independent gate, budget và escalation. Những quyết định này có thể được serialize thành JSON, review trong pull request, validate bằng schema và thực thi trên nhiều runtime. Prompt của implementer vẫn có thể ngắn vì operating policy đã sống ở nơi khác.
Mental model hữu ích là ba vòng lặp lồng nhau. Model loop diễn ra bên trong inference; agent loop reason → tool → observe trong một task; operational loop trigger → intake → run → verify → persist → decide qua nhiều session. Mỗi loop có time scale, state và failure mode khác nhau. Thành công ở vòng trong không đủ để chứng minh vòng ngoài đáng tin.
Đây cũng là lý do benchmark task success cần được đọc cẩn thận. Một agent giải được issue trong sandbox chưa cho biết hệ thống sẽ chọn issue nào, tránh xử lý trùng ra sao, có sửa test để “thắng” không, resume sau crash thế nào, chi phí tích lũy bao nhiêu hay ai nhận handoff khi product requirement mâu thuẫn. Operational reliability là một đơn vị đánh giá khác với model capability.
Nền tảng khái niệm Foundation
1. Tách rõ prompt, context, harness và loop
F.1Bốn discipline này nên được hiểu như bốn lớp trách nhiệm lồng nhau, không phải bốn trường phái cạnh tranh. Prompt định hình một interaction; context cung cấp vật liệu nhận thức; harness tạo môi trường cho một run; loop quyết định một recurring job sống như thế nào qua nhiều run. Mỗi lớp kế thừa lớp dưới nhưng không thể thay thế nó.
| Discipline | Câu hỏi | Artifact điển hình | Điểm mù nếu đứng một mình |
|---|---|---|---|
| Prompt | Nói gì với model? | System/user instruction | Không có state, trigger hay external gate. |
| Context | Model được thấy gì? | Docs, examples, memory, tool output | Không quyết định permission và cadence. |
| Harness | Một run chạy trong môi trường nào? | Tools, sandbox, checks, traces | Không định nghĩa cross-run intake và next action. |
| Loop | Vì sao run tiếp theo xảy ra? | Pattern + contract + runtime + receipts | Cần ba lớp dưới làm execution substrate. |
Model-level recurrence là adjacent: learned computation lặp trong một inference. Agent layer là reason/tool/observe trong một task. Operational Loop Engineering bắt đầu khi recurrence có trigger thật, state bền, external evidence, budget và human handoff.
Hãy lấy cùng một ví dụ CI failure. Ở lớp prompt, câu hỏi là nên mô tả lỗi và yêu cầu sửa ra sao. Ở lớp context, câu hỏi là cung cấp log nào, file nào và convention nào. Ở lớp harness, ta quyết định agent chạy command gì, trong worktree nào, với network và filesystem permission nào. Chỉ ở lớp loop ta mới trả lời: failure nào được intake, làm sao dedupe commit đã xử lý, pass condition nào cho phép đóng việc, attempt tiếp theo mang thông tin mới gì và khi nào phải bàn giao cho maintainer.
Ranh giới cũng có thể nhìn theo time horizon. Prompt tồn tại trong một turn; context thường sống trong một task; harness bao quanh một run; loop nối các run thành một đơn vị vận hành. Vì vậy, thêm memory vào agent chưa tự động tạo loop. Memory chỉ là một primitive; hệ thống vẫn cần policy giải thích state nào đáng lưu và state đó ảnh hưởng quyết định tiếp theo thế nào.
Phân biệt này đặc biệt quan trọng với workflow automation. Workflow cố định biết trước đường đi giữa các bước; agentic loop cho actor quyền khám phá hoặc chọn next action trong boundary. Nhưng mức linh hoạt cao hơn kéo theo nghĩa vụ kiểm chứng cao hơn. Nếu toàn bộ đường đi đã deterministic và ổn định, một workflow bình thường thường rẻ, dễ audit và an toàn hơn việc đưa model vào giữa.
Ưu điểm
- Giúp chọn đúng abstraction và tránh rebrand automation thông thường.
- Cho phép thay model/harness mà giữ nguyên operating policy.
- Tạo vocabulary chung giữa builder, security, operator và reviewer.
Nhược điểm
- Boundary trong thực tế có thể chồng lấn; một tool vừa thuộc harness vừa cung cấp trigger.
- Khái niệm còn mới, terminology chưa có consensus rộng.
2. Lifecycle biến recurrence thành một state machine có policy
F.2Lifecycle là cách biến một actor xác suất thành hệ thống có hành vi quan sát được. Agent có thể đề xuất action khác nhau ở mỗi lần chạy, nhưng transition giữa các phase phải tuân theo rule ổn định: chỉ nhận item hợp lệ, chỉ hành động trong scope, chỉ retry sau khi có evidence, và chỉ exit khi pass condition được chứng minh. Phần deterministic bao quanh phần agentic chính là nơi reliability được xây dựng.
Operational lifecycle: evidence, không phải cảm giác của actor, quyết định cạnh tiếp theo.
flowchart LR
A["Objective + trigger"] --> B["Discover / intake"]
B --> C["Load state + context"]
C --> D["Delegate + act"]
D --> E["External verification"]
E --> F["Persist state + receipts"]
F --> G{"Decision policy"}
G -->|"new evidence + budget"| C
G -->|"goal proven"| H["Exit"]
G -->|"authority / ambiguity / budget"| I["Escalate"]
G -->|"no qualifying work"| J["Report / no-op"] Trong sơ đồ này, verification không phải dấu chấm cuối mà là sensor của control loop. Nó chuyển trạng thái thực của môi trường thành observation mà policy có thể dùng. Observation có thể là test exit code, diff ngoài scope, latency vượt ngưỡng hoặc reviewer từ chối. Agent không cần “tin” verifier; runtime chỉ cần không cho phép actor bỏ qua kết quả của verifier khi chọn transition.
Pseudocode: control loop với external verifier và durable state
type Outcome = "retry" | "report" | "escalate" | "exit";
while (budget.remaining()) {
const work = await intake.discover(trigger);
if (!work) return receipt.noWork();
const result = await agent.act({
work,
context: await context.loadFresh(),
workspace: sandbox.scoped()
});
const evidence = await verifier.check(result);
await state.persist({ result, evidence });
const next: Outcome = policy.decide(evidence, budget);
if (next !== "retry") return handoff(next, evidence);
}Thứ tự verify → persist → decide có ý nghĩa crash-safety. Nếu runtime quyết định retry trước khi ghi lại evidence, process chết đúng lúc đó sẽ làm run sau mất nguyên nhân của retry. Nếu action đã tạo side effect nhưng checkpoint chưa ghi idempotency key, run sau có thể thực hiện lại cùng side effect. State machine tốt vì thế không chỉ mô tả happy path; nó định nghĩa điểm commit của từng phase.
Retry có ích phải là một thí nghiệm mới, không phải phát lại cùng điều kiện. Nó cần ít nhất một thay đổi: context mới, strategy mới, owner mới, permission mới hoặc evidence mới từ môi trường. Khi failure signature lặp lại mà không có biến nào đổi, policy nên giảm budget hoặc escalate. Quy tắc này biến budget từ giới hạn chi phí thụ động thành một cơ chế chống stagnation.
3. Loop Contract đóng băng 11 quyết định vận hành
F.3Trong một phiên làm việc có người giám sát, contract thường tồn tại trong đầu người dùng. Người đó biết repo nào được sửa, biết “test xanh” chưa chắc đủ, nhớ attempt trước đã thất bại ở đâu và tự dừng khi output bắt đầu lệch mục tiêu. Khi bỏ người khỏi từng turn, các quyết định ngầm ấy phải trở thành dữ liệu có thể review, version và validate. Loop Contract là artifact để làm việc đó.
name, thành 12 top-level keys.
↗ Loop Contract schema
Mười một operating parts chia thành ba câu hỏi lớn. Set up trả lời loop tồn tại để làm gì, được
đánh thức khi nào, nhận item nào và hành động ở đâu. Run quy định context, role, evidence và memory
nối các attempt. Govern đặt trần tài nguyên, đường escalation và điều kiện exit. Trường
name thứ mười hai trong schema là identity của contract, không phải một quyết định vận hành mới.
Set up objective · trigger · intake · workspace Run context · agents · verification · state Govern budget · escalation · exit
Giá trị của contract không nằm ở độ dài. Một contract tốt làm cho omission trở nên rõ: không có no-work behavior, không có disallowed action, không có owner cho escalation, hay exit condition chỉ viết “agent believes done”. Những khoảng trống này dự báo failure mode trước khi chạy. Schema validation chỉ bắt lỗi cấu trúc; design review vẫn phải đánh giá policy có phù hợp với rủi ro thực tế hay không.
Contract cũng tách policy khỏi runtime. Cùng một objective và verifier có thể chạy bằng cron, CI event hoặc một orchestration platform khác mà không thay đổi ý nghĩa của job. Ngược lại, đổi từ single agent sang maker-checker là thay đổi contract vì nó đổi authority và handoff. Tính portable này giúp team review operating model trước khi bị cuốn vào lựa chọn vendor hoặc framework.
Phân tích sâu: 11 operating parts, 12 schema keys, state machine và CI repair case study
Reliability và vận hành Operations
4. Verification + state + receipts là flywheel của reliability
R.1Reliability không đến từ một control duy nhất mà từ vòng liên kết giữa ba loại artifact. State ghi hệ thống tin mình đang ở đâu; evidence ghi môi trường thực sự phản hồi thế nào; decision record giải thích vì sao evidence đó dẫn tới retry, exit hay escalation. Thiếu một trong ba, run sau chỉ có dữ liệu mà không có nghĩa, hoặc có kết luận mà không thể truy nguyên.
| Control | Artifact tốt | Failure bị chặn |
|---|---|---|
| External gate | Exit code, test, schema, threshold, reviewer decision | Model self-approval |
| Durable state | Checkpoint, issue comment, progress ledger, event log | Lặp lại attempt cũ, mất next action |
| Receipts | Commands, logs, diff, trace ID, screenshot, stop reason | Không audit được claim “done” |
| Budget | Retries + runtime + token/cost + concurrency | Infinite loop và cost exhaustion |
| Escalation | Condition + destination + evidence bundle | Agent cố giải judgment/authority problem |
External verifier nên được coi là một product surface độc lập, không phải vài command ghép cuối prompt. Nó có version, owner, coverage, false-positive, false-negative và drift. Test suite có thể xanh nhưng không kiểm tra requirement mới; benchmark có thể bị tối ưu quá mức; metric có thể trễ; reviewer có thể thiếu context. Vì mọi verifier chỉ là proxy cho trạng thái mong muốn, contract cần chỉ rõ verifier nào đủ cho action nào và khi nào phải yêu cầu judgment của con người.
Maker-checker chỉ tạo separation of duties khi checker có góc nhìn độc lập: đọc raw diff hoặc log, chạy gate bằng credential riêng, và có quyền reject transition. Hai agent dùng cùng context, cùng tool quyền ghi và cùng nhắc lại một summary không tạo ra hai nguồn bằng chứng; chúng chỉ nhân đôi một failure mode. Topology vì vậy đứng sau authority design, không đứng trước.
Chín anti-pattern phải reject ngay
- Prompt loop không có contract.
- Infinite retry.
- Model self-approval.
- Hidden state.
- Unsafe production autonomy.
- Generic automation được rebrand.
- Context dump loop.
- Không có escalation path.
- Không có receipts.
Receipts là cơ chế biến autonomy thành trust có thể kiểm toán. Một receipt tốt không chỉ ghi “completed”; nó nối item và attempt với input version, command đã chạy, output quan trọng, diff hoặc side effect, verifier result, budget đã dùng và stop reason. Operator nhờ đó có thể trả lời hai câu khác nhau: hệ thống đã làm gì, và tại sao nó được phép làm bước tiếp theo.
Durable state cũng phải được thiết kế quanh idempotency. Nếu loop crash sau khi gửi comment nhưng trước checkpoint, run sau có thể gửi lại. Nếu checkpoint ghi “done” trước khi side effect commit, công việc có thể bị mất. Các loop có tác động thật cần item key, attempt key, phase transition và commit ordering rõ ràng — cùng những discipline quen thuộc của distributed systems, dù actor ở giữa là model.
5. Chọn theo chuỗi pattern → contract → runtime
O.1Chuỗi lựa chọn nên bắt đầu từ recurring symptom vì symptom giữ ta gần với giá trị thực. “PR hay bị bỏ quên sau feedback” là một vấn đề có owner và outcome; “hãy dùng multi-agent framework” mới chỉ là lựa chọn công nghệ. Pattern đặt tên cho cấu trúc lặp và failure mode, contract cụ thể hóa policy trong bối cảnh của team, còn runtime chỉ là nơi thực thi policy ấy.
Artifact pipeline từ recurring symptom tới operational evidence.
flowchart LR
A["Recurring symptom"] --> B["Named pattern"]
B --> C["Adapted Loop Contract"]
C --> D["Runtime + isolation"]
D --> E["Agent / workflow execution"]
E --> F["Evidence + receipts"]
F --> G{"Policy decision"}
G -->|"improve contract"| C
G -->|"retry"| E
G -->|"handoff / exit"| H["Owner"] Ba artifact có vòng đời khác nhau. Pattern thay đổi chậm và có thể tái sử dụng giữa tổ chức. Contract được version theo repository, risk class và operating policy. Runtime có thể đổi nhanh theo capability hoặc vendor. Tách chúng giúp tránh hai cực đoan: template quá trừu tượng không chạy được, hoặc implementation quá dính tool đến mức không ai review được ý nghĩa vận hành.
| Domain | Patterns tiêu biểu | Verified finish |
|---|---|---|
| Build & Maintain | PR babysitter, CI repair, docs drift, dependency triage | Checks pass, diff scoped, source-of-truth aligned. |
| Operate & Observe | Deploy verifier, incident response, cost/performance loop | Threshold/policy holds và owner/decision được ghi. |
| Learn & Optimize | Eval regression, benchmark optimization, knowledge freshness | Baseline phục hồi hoặc gain lặp lại được mà guardrail còn nguyên. |
| Govern & Protect | Security review, enterprise approval, accessibility, red team | Evidence cụ thể + approval/audit boundary không bị vượt. |
Ví dụ docs drift cho thấy boundary rất rõ. Cron chỉ đánh thức process theo lịch. Một agent run có thể so source và docs rồi đề xuất patch. Workflow có thể chạy check → patch → test theo đường cố định. Chỉ khi hệ thống còn intake nguồn thay đổi mới, nhớ phần đã xử lý, kiểm chứng docs khớp source-of-truth, tránh sửa vùng cấm, phát receipt và quyết định khi nào chạy lại thì ta mới có operational loop hoàn chỉnh.
Runtime nên được chọn sau contract bằng các câu hỏi cụ thể: trigger có đúng loại event không, state có sống qua cold start không, isolation có giới hạn write scope không, secret được cấp theo job hay theo user, verifier có thể enforce transition không, và operator nhận evidence ở đâu. Một runtime có nhiều feature nhưng không enforce được boundary quan trọng nhất vẫn là lựa chọn sai.
Kinh tế học cũng phải nằm trong pattern selection. Giá trị kỳ vọng của loop có thể đọc đơn giản là tần suất công việc nhân lợi ích đã kiểm chứng, trừ chi phí inference, verification, review, failure và vận hành. Task hiếm, giá trị thấp hoặc verifier đắt có thể không đáng loop hóa dù kỹ thuật hoàn toàn khả thi.
Ưu điểm
- Pattern bắt đầu từ symptom và failure mode thay vì từ tool.
- Contract portable hơn runtime; dễ review và migrate.
- Starter giúp prototype nhanh nhưng vẫn giữ control loop visible.
Nhược điểm
- Template có thể tạo cảm giác an toàn giả nếu không adapt permission/budget.
- Vendor runtime thay đổi; phải xác minh capability hiện tại trước unattended use.
Phân tích sâu: 20 patterns, 8 starters, runtime selection và lộ trình maturity 0–6
6. Autonomy phải được earn theo thứ tự
G.1Maturity model hữu ích nhất khi đọc như thứ tự dependency, không phải thang điểm danh tiếng. Schedule trước state làm hệ thống quên theo lịch. Multi-agent trước verifier tạo nhiều action hơn nhưng không có chuẩn phán quyết. Production autonomy trước rollback biến một lỗi suy luận thành incident. Mỗi level chỉ nên được mở khi control của level trước đã tạo evidence vận hành đủ ổn định.
| Level | Capability mới | Promotion signal |
|---|---|---|
| 0 → 1 | Manual prompting → bounded scripted retry | Cùng task và feedback lặp lại đủ thường xuyên. |
| 1 → 2 | Schedule/event + no-work exit | Không cần người launch từng run. |
| 2 → 3 | Durable checkpoint + receipts | Work span nhiều run hoặc bị duplicate/lost context. |
| 3 → 4 | External gate kiểm soát transition/exit | Có stable evidence để quyết định pass/fail. |
| 4 → 5 | Separation of duties, specialists | Một role là bottleneck hoặc cần independent review. |
| 5 → 6 | Production supervision | Loop có thể tác động user, money, credential hoặc infra. |
Promotion signal không nên là “demo chạy được”. Level 2 cần chứng minh no-work không sinh side effect và duplicate trigger được xử lý. Level 3 cần cold-run resume và crash-recovery drill. Level 4 cần verifier có owner, baseline và policy khi chính verifier hỏng. Level 5 cần chứng minh specialist thực sự giảm một bottleneck hoặc tạo independent review, thay vì chỉ tăng token và coordination overhead.
Khi loop trưởng thành, vai trò con người không biến mất mà dịch chuyển từ data plane sang control plane. Thay vì steering từng tool call, human owner định nghĩa objective, approve authority, review receipts, xử lý exception và sửa contract. Đây là thay đổi về điểm can thiệp: ít thao tác thường xuyên hơn, nhưng trách nhiệm với boundary và verifier lại rõ hơn.
Không phải loop nào cũng nên đạt Level 6. Một loop read-only tổng hợp drift hàng ngày có thể tạo đủ giá trị ở Level 2–3. Một remediation loop có quyền production có thể cần telemetry và approval ở Level 6 ngay cả khi chỉ dùng một agent. Maturity mô tả capability cần thiết theo risk, không mô tả số agent hay độ “ấn tượng” của demo.
Bốn hướng mở rộng: từ design kit tới operating discipline Deep dives
Ba deep dive nền tảng giải thích contract, reliability và lựa chọn runtime. Bốn bài mở rộng dưới đây đi vào các boundary nơi recurring systems thường vỡ khi chuyển từ prototype sang vận hành: nhận việc, phối hợp nhiều actor, đo outcome/causality và triển khai quyền tự chủ vào production.
| Deep dive | Câu hỏi trung tâm | Artifact đầu ra |
|---|---|---|
| Work Intake & Scheduling | Tín hiệu nào được phép trở thành work item? | Identity bundle, admission decision, lease/recovery policy |
| Multi-Agent Coordination | Topology có tạo leverage lớn hơn coordination cost? | Ownership graph, typed handoff, merge/conflict policy |
| Evaluation & Observability | Outcome có đúng và decision đã hình thành thế nào? | Eval protocol, causal receipt, longitudinal scorecard |
| Production Rollout | Quyền tự chủ được promote, demote và retire ra sao? | Permission envelope, canary gate, incident/retirement runbook |
Trigger không phải work order
Schedule, event và manual launch chỉ đánh thức runtime. Intake phải chuẩn hóa identity, kiểm freshness, dedupe, eligibility, capacity và lease trước model call. Bài này nối taxonomy của repo với CloudEvents, GitHub Actions concurrency và durable execution để đóng duplicate, stale-work và crash windows.
Phân tích sâu: trigger, intake, dedupe, leases và crash-safe scheduling
Multi-agent là protocol phối hợp
Manager, handoff, worker và checker khác nhau ở completion ownership, dependency graph và authority. Bài này chỉ ra khi nào parallelism có lợi, structured handoff cần mang gì và vì sao hai personas chưa tạo được independence.
Phân tích sâu: topology, ownership, handoff và coordination cost
Eval và telemetry cần gặp nhau ở receipt
Evaluation đo outcome và consistency; observability dựng lại causal path. Bài này mở rộng workstream shared evaluation protocol của repo thành full-loop fixtures, grader hierarchy, OpenTelemetry spans, recovery metrics và reproducibility bundle.
Phân tích sâu: full-loop evals, traces, receipts và longitudinal metrics
Autonomy phải được rollout như production capability
Observe, recommend, approval-gated và bounded action là các permission envelopes khác nhau. Bài này áp dụng canary/SRE, lifecycle risk và agentic security vào promotion, demotion, kill/revoke/rollback, incident drill và retirement.
Phân tích sâu: progressive autonomy, canary, incident response và lifecycle governance
Evidence, phản biện và giới hạn Critical reading
Một repo “awesome list” mạnh ở khả năng tổ chức landscape nhưng có giới hạn epistemic riêng. Nó cho ta biết artifact, project và paper nào cùng chạm vào recurring agent systems; nó không phải controlled study chứng minh Loop Engineering làm mọi team nhanh hơn hay an toàn hơn. Vì vậy, cần tách ba mức claim: repo có artifact thật, artifact tạo thành một conceptual framework nhất quán, và framework tạo hiệu quả ngoài thực địa. Hai mức đầu có bằng chứng trực tiếp hơn mức cuối.
Điều repo chứng minh tốt
- Một vocabulary và artifact chain nhất quán cho recurring agent systems.
- Schema, contracts và starters có thể inspect/chạy, không chỉ là essay.
- Coverage rộng về verification, harness, runtime, memory, security và evaluation.
- Anti-patterns và research agenda thừa nhận false completion, infinite loops, cost và human oversight.
Đóng góp thuyết phục nhất là artifact language. Working Definition đặt boundary; pattern matrix nối symptom với control; Loop Contract biến control thành dữ liệu; JSON Schema bắt lỗi cấu trúc; runnable starters cho thấy lifecycle có thể được hiện thực hóa. Chuỗi này cho phép một team tranh luận trên objective, evidence và authority cụ thể thay vì tranh luận chung chung rằng agent “đủ thông minh” hay chưa.
Điều chưa thể suy ra
- Không thể suy ra loop luôn tốt hơn supervised single run hay fixed workflow.
- Không thể lấy số lượng nguồn làm bằng chứng adoption hoặc reliability.
- Schema-valid contract không đồng nghĩa policy đúng hoặc verifier đáng tin.
- Benchmark task success chưa đo đầy đủ recovery, idempotency, auditability, cost và operator burden qua thời gian.
Corpus cũng thiên về component evidence: 381/579 nguồn được xếp enabling và chỉ 162 nguồn direct. Nhiều tài liệu tốt về benchmark, memory, orchestration hoặc security chứng minh một mảnh của stack, nhưng không tự chứng minh recurring system chứa các mảnh đó sẽ recovery tốt, idempotent, tiết kiệm hay dễ vận hành. Đây không phải lỗi của catalog; nó là ranh giới cần giữ khi chuyển từ “có nhiều nền tảng liên quan” sang “operating model đã được xác nhận”.
Khoảng trống nghiên cứu lớn nằm ở longitudinal evidence. Ta cần benchmark đo nhiều run chứ không chỉ task success: tỷ lệ phục hồi sau crash, duplicate side effect, verifier drift, false completion, thời gian human review, chi phí cho mỗi verified outcome và tỷ lệ escalation hữu ích. Một loop thắng benchmark trong sandbox nhưng tiêu tốn quá nhiều operator attention có thể vẫn thất bại về mặt sản phẩm.
Cuối cùng là verification horizon: không verifier nào nhìn thấy toàn bộ thực tại. Test đo behavior đã encode; metric đo proxy; reviewer quan sát một snapshot. Khi loop tối ưu lặp lại theo cùng một proxy, nguy cơ Goodhart tăng lên. Thiết kế tốt phải version verifier, theo dõi drift, dùng nhiều evidence độc lập khi rủi ro cao và giữ đường escalation cho những quyết định không thể nén thành gate.
Playbook: thiết kế loop đầu tiên Apply
Bước đầu tiên không phải chọn framework mà là quyết định công việc có đáng trở thành loop hay không. Candidate tốt có recurrence thật, input có thể nhận diện, action có thể giới hạn, external signal đủ đáng tin và owner sẵn sàng nhận exception. Nếu thiếu một trong các điều kiện này, hãy bắt đầu bằng checklist, dashboard hoặc supervised workflow để học failure mode trước.
Với candidate phù hợp, hãy thiết kế từ cuối về đầu. Viết một câu “verified finish” đủ cụ thể để người khác có thể kiểm tra mà không đọc suy nghĩ của agent. Từ finish condition suy ra verifier; từ verifier suy ra evidence cần thu; từ evidence suy ra state cần lưu; rồi mới xác định actor, prompt và runtime. Trình tự này ngăn generation capability lấn át điều kiện thành công.
- Chọn một recurring symptom nhỏ. Ví dụ CI failure có command tái hiện được.
- Viết verified finish trước. Exit code, threshold hoặc named reviewer decision.
- Đóng băng contract. Intake, allowed/disallowed actions, state, budget, escalation, exit.
- Prototype một item/một iteration. Chạy trong worktree/sandbox, read-mostly nếu có thể.
- Inject failure. Timeout, duplicate item, broken verifier, missing credential, repeated evidence.
- Review receipts và economics. Chỉ tăng cadence/budget/topology khi có measurable benefit.
Prototype tốt nhất là loop nhỏ nhất còn giữ nguyên semantics: một loại item, một workspace cô lập, một iteration, một verifier và một receipt. Chạy nó bằng tay nhiều lần trước khi thêm schedule. Mục tiêu giai đoạn này không phải throughput mà là quan sát xem contract có đủ để một cold run hiểu đúng trạng thái và một operator giải thích đúng mọi transition hay không.
Failure injection là phần của design, không phải QA bổ sung. Hãy cố tình tạo stale input, duplicate trigger, timeout, verifier unavailable, credential thiếu, side effect thành công nhưng checkpoint thất bại và nhiều attempt trả cùng một signature. Mỗi tình huống phải kết thúc bằng retry có thông tin mới, no-op, rollback hoặc escalation có owner — không phải bằng một loop tiếp tục vì “còn budget”.
Chỉ tăng cadence, budget, write permission hoặc topology sau khi receipts cho thấy lợi ích đo được. Promotion review nên so sánh verified outcomes với tổng chi phí và operator burden, đồng thời xem lại false completion và near miss. Autonomy là quyền được cấp dựa trên evidence vận hành, không phải thuộc tính mặc định của model.
- Verifier trước agent. Nếu chưa biết thế nào là pass, đừng tự động retry.
- State trước schedule. Nếu cold run không resume được, recurring run chỉ lặp lại sự quên.
- Permissions trước production. Viết rõ điều agent không được làm.
- Evidence trước autonomy. Tăng budget sau khi failure drill và receipts đủ tốt.
Kết luận Wrap
Cách đọc hữu ích nhất: Loop Engineering là control-plane engineering cho agent work qua thời gian. Giá trị của repo không nằm ở khẩu hiệu hay con số 579, mà ở việc nối concept → pattern → contract → schema → runtime → receipt thành một chuỗi có thể review và tái sử dụng. Một loop tốt không “tự chủ càng nhiều càng tốt”; nó làm rõ công việc nào được phép lặp, bằng chứng nào đủ mạnh, state nào phải sống sót và lúc nào con người phải lấy lại quyền quyết định.
Hệ quả sâu hơn là đơn vị kiến trúc cũng thay đổi. Prompt không còn là artifact trung tâm; state schema, verifier, permission boundary và transition policy trở thành first-class. Model có thể được thay thế hoặc nâng cấp, nhưng recurring job vẫn phải giữ identity, history và accountability. Đây là điểm Loop Engineering gặp distributed systems, SRE, workflow orchestration và safety engineering.
Khả năng quan trọng nhất của một loop không phải “chạy mãi”, mà là dừng đúng lý do. Nó phải biết khi goal đã được chứng minh, khi không còn việc, khi attempt tiếp theo không mang thêm thông tin, khi authority không đủ và khi risk đã vượt appetite. Thiết kế cạnh exit, no-op và escalation thường quyết định chất lượng hệ thống nhiều hơn thiết kế cạnh retry.
Vì thế, deliverable thực tế đáng giá không nhất thiết là một “đội agent tự trị”. Nó có thể chỉ là một recurring job nhỏ, có contract đọc được, workspace hẹp, verifier độc lập, checkpoint bền và receipt tốt. Cấu trúc này cho phép team tăng autonomy từng bước mà vẫn giữ khả năng review và rollback — thứ một demo nhiều agent thường không thể hiện.
Nếu chỉ giữ lại một câu hỏi sau báo cáo, hãy dùng câu này: khi không còn người đứng cạnh agent ở mỗi turn, hệ thống nào sẽ thay người đó chọn việc, giới hạn quyền, kiểm tra kết quả, nhớ lịch sử và quyết định dừng? Câu trả lời cụ thể cho năm trách nhiệm ấy chính là Loop Engineering của hệ thống bạn.