Mọi người đều nói về loop. Hầu như không ai nói về thứ mà loop chạy trên đó. 9 trên 10 người xây dựng chạy Claude Code trên bộ khung mặc định - không có quy tắc, không có agent con, không có hook, không có bộ nhớ.
Rồi họ tự hỏi tại sao loop của họ lại tạo ra rác. Sự thật rất đơn giản: một loop chỉ tốt bằng bộ khung bên dưới nó. Đây là lộ trình 14 bước để xây dựng bộ khung đó - từ một agent duy nhất đến một hệ thống tự cải thiện.
Theo dõi Substack của tôi để nhận AI alpha mới nhất:
Kỹ thuật loop - xây dựng một hệ thống nhắc nhở agent của bạn theo lịch trình - đã thu hút mọi sự chú ý trong tháng này. Nhưng Addy Osmani, người đã viết bài phân tích dài về loop, đã cẩn thận chỉ ra thứ nằm bên dưới nó:
“Kỹ thuật loop nằm trên một tầng so với bộ khung. Bộ khung là môi trường mà một agent duy nhất chạy bên trong. Loop là bộ khung, nhưng nó chạy theo bộ đếm thời gian, sinh ra các trợ lý, và tự nuôi sống chính nó.”
Kỹ thuật khung là thiết kế môi trường đó: mô hình, công cụ, quyền hạn, ngữ cảnh, bộ nhớ.
Đó là tầng không hào nhoáng - và nó là tầng quyết định xem mọi thứ bên trên có hoạt động hay không. Một loop tuyệt vời trên một bộ khung tồi là cách nhanh chóng để tạo ra rác trên quy mô lớn.

14 bước. 3 tầng lớp. Nền tảng mà mọi thứ khác dựa vào.
Phần 1 · Bộ khung là gì
01. Bộ khung là môi trường mà một agent chạy bên trong.
Loại bỏ thuật ngữ phức tạp, một bộ khung chỉ gồm bốn thứ: mô hình thực hiện suy luận, công cụ mà nó có thể sử dụng, quyền hạn trên các công cụ đó, và ngữ cảnh mà nó đọc khi bắt đầu mỗi lần chạy.
Đó là toàn bộ bề mặt. Mọi thứ khác - agent con, hook, bộ nhớ - là cách để định hình một trong bốn thứ đó.

Lý do bộ khung quan trọng hơn mọi người nghĩ: agent là một vòng lặp while True, nó chọn một công cụ, chạy nó, xem kết quả và quyết định bước tiếp theo.
Bộ khung xác định những công cụ nào tồn tại, agent được phép làm gì, và nó biết gì khi bắt đầu. Cùng một mô hình, bộ khung khác nhau, agent hoàn toàn khác nhau.
02. Toàn bộ bộ khung nằm trong một thư mục. .claude/
Mọi thứ định hình agent của bạn nằm trong một thư mục duy nhất tại thư mục gốc của dự án. Hãy học cách bố trí này và bạn có thể hiểu ngay bộ khung của bất kỳ ai:
1.claude/2├─ CLAUDE.md # sự thật cố định — được đọc mỗi phiên3├─ settings.json # quyền hạn, mô hình, hook4├─ .mcp.json # kết nối công cụ bên ngoài5├─ rules/ # hành vi theo phạm vi đường dẫn6│ ├─ tests.md7│ └─ python-types.md8├─ agents/ # định nghĩa agent con (~30 dòng mỗi cái)9│ ├─ reviewer.md10│ └─ eval-runner.md11├─ skills/ # quy trình làm việc có thể tái sử dụng12│ └─ pr-checklist/13│ └─ SKILL.md14└─ agent-memory/ # thông tin tồn tại giữa các lần chạy15 └─ STATE.md
Một quy tắc giúp phân biệt bộ khung sạch với bộ khung lộn xộn: giữ nó đủ nhỏ để bạn có thể giải thích tại sao mỗi tệp tồn tại. Nếu bạn không thể nói một quy tắc, hook, hay agent con dùng để làm gì, hãy xóa nó.
03. Bộ khung vs loop vs hệ thống. Ba tầng, đừng nhầm lẫn chúng.
Hầu hết các vấn đề "thiết lập agent của tôi là một mớ hỗn độn" đến từ việc nhầm lẫn ba tầng này. Hãy phân biệt chúng rõ ràng:
- Bộ khung là môi trường chạy mà một agent sống trong đó. Cấu hình tĩnh: mô hình, công cụ, quyền hạn, ngữ cảnh. Vấn đề này.
- Loop nhắc nhở agent theo bộ đếm thời gian, sinh ra các trợ lý, tự nuôi sống chính nó. Nó chạy trên bộ khung.
- Hệ thống tự cải thiện là một loop cộng với bộ nhớ tích lũy - mỗi lần chạy làm cho lần chạy tiếp theo sắc bén hơn.
Phiên bản thực tế: đặt sự thật cố định trong ngữ cảnh, thực thi trong hook, quy trình trong skill, và sự cô lập trong agent con.
Việc trộn lẫn chúng - thực thi trong CLAUDE.md, quy trình làm phình ngữ cảnh - là nguyên nhân gốc rễ của các agent không nhất quán và đắt đỏ.
04. Bộ khung mặc định. Những gì bạn có sẵn.
Cài đặt Claude Code, mở một thư mục, và bạn đã có một bộ khung - chỉ là một bộ khung trống. Mặc định cung cấp cho bạn một mô hình có năng lực, các công cụ tích hợp (đọc, ghi, bash, tìm kiếm), và các lời nhắc phê duyệt trên mọi thứ rủi ro. Không có ngữ cảnh dự án, không có agent con tùy chỉnh, không có bộ nhớ.

Đối với một tác vụ một lần, mặc định là ổn. Đối với bất cứ điều gì bạn làm nhiều hơn một lần, mặc định khiến agent phải suy luận lại dự án của bạn từ đầu mỗi phiên, yêu cầu cho phép cho các thao tác an toàn, và quên mọi thứ khi bạn đóng terminal.
Mười bước tiếp theo là về việc thu hẹp khoảng cách đó.
05. CLAUDE.md: sự thật cố định, giữ ngắn gọn.
CLAUDE.md được đọc khi bắt đầu mỗi phiên. Đó là kiến thức cố định của agent về dự án của bạn - quy ước, kiến trúc, những "chúng tôi không làm theo cách này vì sự cố đó."

Sai lầm phổ biến nhất: để nó phát triển thành một tài liệu quy trình khổng lồ làm phình mỗi phiên.
Quy tắc từ những người thực hành hàng ngày: giữ tệp bộ nhớ chính dưới ~500 token. Sự thật cố định được đặt ở đây.
Các quy trình nhiều bước được đặt trong skill (bước 8). Các hành vi theo đường dẫn cụ thể được đặt trong các tệp rules/ được phạm vi hóa nơi chúng áp dụng. Nếu một phần của CLAUDE.md đã trở thành một quy trình thay vì một sự thật, nó thuộc về nơi khác.
Đọc to CLAUDE.md của bạn lên. Mỗi dòng nên là một
sự thật
mà agent cần trong mọi phiên (“chúng tôi dùng pnpm, không phải npm”). Nếu một dòng là một
quy trình
(“để thêm một tính năng, đầu tiên…”), hãy chuyển nó vào một skill.
Nếu nó là một quy tắc cho một thư mục cụ thể, hãy chuyển nó vào rules/.
06. settings.json: quyền hạn và mô hình, thiết lập một lần.
Bộ khung mặc định hỏi trước mọi hành động rủi ro. Điều đó đúng khi bạn đang theo dõi và sai khi bạn không. settings.json là nơi bạn phê duyệt trước những thứ an toàn, từ chối những thứ nguy hiểm, và chọn mô hình nào sẽ chạy.
1{2 "model": "claude-sonnet-4-6",3 "permissions": {4 "autoApprove": [5 "Read(*)", "Grep(*)",6 "Bash(npm test)", "Bash(git status)"7 ],8 "deny": [9 "Bash(rm -rf*)", "Bash(git push*)",10 "Edit(.env*)", "Edit(secrets/*)"11 ]12 }13}
Bài kiểm tra để quyết định tự động phê duyệt: nếu điều này sai, khó khăn thế nào để hoàn tác? Rẻ để hoàn tác → tự động phê duyệt.
Đắt để hoàn tác (force-push, xóa tệp, động đến bí mật) → luôn từ chối hoặc hỏi. Khu vực trung gian có thể tự động phê duyệt nếu bạn ghi lại nhật ký.
07. Agent con: ngữ cảnh cô lập cho công việc bẩn thỉu.
Một agent con là một phiên Claude độc lập được khởi chạy từ phiên chính - cửa sổ ngữ cảnh riêng, danh sách công cụ riêng. Mục đích không phải là song song hóa vì mục đích tự thân. Nó là giữ nhiễu ra khỏi ngữ cảnh chính.
Một tác vụ nghiên cứu đọc 40 tệp, một lượt đánh giá cần một góc nhìn mới mẻ, một lần chạy đánh giá tạo ra một bức tường nhật ký - những thứ đó thuộc về agent con để chúng không làm ô nhiễm luồng chính.
GIF
Agent con có giá trị nhất trong bất kỳ bộ khung nào là agent kiểm tra công việc mà agent chính đã làm. Một mô hình đánh giá đầu ra của chính nó thì quá dễ dãi với chính nó;
Một người đánh giá riêng biệt với một cửa sổ ngữ cảnh mới sẽ bắt được những gì người viết đã tự thuyết phục mình. Đây là sự phân chia người viết-vs-người kiểm tra làm cho mọi loop bên trên bộ khung trở nên đáng tin cậy.
08. Skill: quy trình mà agent tái sử dụng.
Một Skill là một tệp SKILL.md mà agent chạy - hoặc khi bạn gọi nó bằng /skill-name hoặc tự động khi tác vụ khớp với mô tả của nó.

Không giống như agent con, nó chạy trong cùng một cửa sổ ngữ cảnh. Nó chỉ là các hướng dẫn có thể tái sử dụng trở thành một phần của phiên.
Kích hoạt để tạo một skill: bạn nhận thấy mình dán cùng một hướng dẫn vào mọi cuộc trò chuyện mới. Đó là một skill đang chờ được tạo ra. Một danh sách kiểm tra PR, một quy trình đánh giá, một quy trình phát hành - viết một lần, gọi mãi mãi.
Và bởi vì skill là đơn vị có thể tái sử dụng, chúng là thứ làm cho bộ khung cải thiện theo thời gian: mỗi khi quy trình thất bại theo một cách mới, bạn thêm bài học vào skill, và lần chạy tiếp theo kế thừa nó.
09. Hook: quy tắc xác định mà mô hình không thể ảo giác.
Mọi thứ cho đến nay đều phụ thuộc vào mô hình hiểu hướng dẫn của bạn. Hook thì không.
Một hook là một lệnh shell được kích hoạt tại một điểm cố định trong vòng đời của agent - trước khi một công cụ chạy, sau khi một tệp thay đổi, khi phiên kết thúc - và mã thoát của nó có thể chặn hành động. Hook là sự thực thi, CLAUDE.md là gợi ý.

Hai hook xứng đáng có mặt trong hầu hết mọi bộ khung:
- Một cổng PreToolUse chặn các lệnh nguy hiểm một cách xác định — rm -rf, đọc .env, push lên nhánh main. Mã thoát 2 dừng cuộc gọi trước khi nó xảy ra. Mô hình không thể nói chuyện để vượt qua nó.
- Một trình định dạng PostToolUse chạy linter hoặc formatter của bạn sau mỗi lần chỉnh sửa. Agent không bao giờ gửi mã chưa được định dạng vì bộ khung tự động định dạng nó.
1"hooks": {2 "PreToolUse": [{3 "matcher": "Bash",4 "command": "./.claude/hooks/block-dangerous.sh"5 // exit 2 = chặn cuộc gọi trước khi nó chạy6 }],7 "PostToolUse": [{8 "matcher": "Edit|Write",9 "command": "prettier --write \"$CLAUDE_FILE_PATH\""10 }]11}
Sử dụng hook cho bất cứ điều gì phải xảy ra hoặc không bao giờ được xảy ra - an toàn, định dạng, ghi nhật ký kiểm toán.
Đừng sử dụng chúng cho các phán đoán; đó là việc của mô hình. Một bộ khung tốt có một hoặc hai hook sắc bén, không phải hai mươi.
Phần 3 · Làm cho nó tích lũy
10. Thêm một loop. Bây giờ bộ khung chạy theo bộ đếm thời gian.
Một bộ khung đã được cấu hình vẫn đợi bạn gõ lệnh. Một loop làm cho nó tự chạy. Phiên bản đơn giản nhất là /loop trong Claude Code - một lời nhắc định kỳ theo nhịp.

Kết hợp nó với /goal và loop tiếp tục cho đến khi một điều kiện mục tiêu là đúng, được kiểm tra bởi một người chấm điểm độc lập thay vì agent tự chấm điểm chính mình.
1> /loop 30m /goal Tất cả các bài kiểm tra đều đạt và lint sạch.2 Phân loại các lỗi mới, soạn thảo bản sửa lỗi trong các nhánh claude/.34▲ Claude sử dụng bộ khung bạn đã xây dựng:5 - rules/ cho các quy ước6 - agent con reviewer để kiểm tra từng bản sửa lỗi7 - PreToolUse hook chặn push lên nhánh main8✓ Đang lặp. Người chấm điểm độc lập quyết định "xong."
Hãy chú ý điều vừa xảy ra: loop đã không thêm trí thông minh. Nó tái sử dụng mọi thứ trong bộ khung - các quy tắc, agent con reviewer, hook an toàn. Một bộ khung tốt làm cho một loop trở nên tầm thường. Đó là toàn bộ mục đích của việc xây dựng nền tảng trước.
11. Thêm quy trình làm việc động. Bộ khung tự viết sự phối hợp của riêng nó.
Đối với các tác vụ quá phức tạp cho một loop đơn lẻ - song song hóa lớn, có cấu trúc cao, đối kháng - Claude có thể tự viết bộ khung JavaScript của riêng nó một cách nhanh chóng.
Đó là một quy trình làm việc động: agent() để sinh ra, parallel() để phân nhánh, pipeline() để truyền tải. Nó kết hợp các agent con mà bộ khung của bạn định nghĩa thành các mẫu như phân nhánh-và-tổng hợp hoặc xác minh đối kháng.

Mối liên hệ với kỹ thuật khung: một quy trình làm việc động chỉ tốt bằng các agent con và skill mà nó có thể gọi.
Nếu bộ khung của bạn có một agent con reviewer sắc bén và một skill đánh giá được viết tốt, quy trình làm việc có những phần tốt để phối hợp. Nếu bộ khung trống rỗng, quy trình làm việc không có gì để làm việc.
Quy trình làm việc là người chỉ huy, bộ khung của bạn là dàn nhạc.
12. Thêm bộ nhớ. Điều mà agent quên, bộ khung nhớ.
Đây là bước biến một bộ khung đã được cấu hình thành một hệ thống thực sự cải thiện. Agent quên mọi thứ giữa các lần chạy. Bộ khung không nhất thiết phải làm vậy.
Một tệp trạng thái - một tệp markdown trong agent-memory/, hoặc một board Linear - ghi lại những gì đã được thử, điều gì đã hiệu quả, điều gì đã thất bại, quy tắc nào đã tồn tại.

Mẫu hình làm cho bộ nhớ tích lũy, rút ra từ cách các agent mạnh nhất sử dụng nó:
- Ghi trước khi rời đi. Mỗi lần chạy kết thúc bằng cách cập nhật tệp trạng thái - bài học rút ra, sự thật đã xác minh, bước tiếp theo.
- Đọc khi bắt đầu. Mỗi lần chạy bắt đầu bằng cách đọc tệp trạng thái và các skill liên quan, để nó tiếp tục thay vì khởi động lại.
- Chắt lọc vào skill. Khi một bài học mang tính tổng quát (“Windows runner cần bash, không phải PowerShell”), nó được nâng cấp từ tệp trạng thái vào một skill, nơi nó áp dụng cho mọi dự án tương lai.
1# Bộ nhớ dự án23## Sự thật đã xác minh # ngừng phỏng đoán về những điều này4- prc tính bằng đô la, không phải xu (đã kiểm tra qua SELECT MIN/MAX)5- Thứ tự middleware xác thực: rate_limit -> jwt -> rbac67## Bài học đã rút ra # chắt lọc những bài học tổng quát vào skill8- Windows CI runner thất bại TLS 1.2 trong PowerShell — dùng bash9- Các migration trên bảng >1M hàng phải xử lý theo lô 10k1011## Phiên trước # tiếp tục, không khởi động lại122026-06-11 · 3 bản sửa lỗi đã được merge, 2 đã được chuyển lên. Tiếp theo: xác minh bản sửa lỗi rate-limit.
13. Khép kín vòng lặp. Đầu ra → bài học → skill → đầu ra tốt hơn.
Đây là nơi ba tầng khóa chặt lại với nhau thành một thứ tự cải thiện. Mỗi lần chạy tạo ra đầu ra. Agent con reviewer (bước 7) kiểm tra nó.
Kết quả - cái gì đạt, cái gì thất bại, cái gì đã được học - được ghi vào bộ nhớ (bước 12). Những bài học tổng quát được chắt lọc vào skill (bước 8).
Lần chạy tiếp theo kế thừa các skill sắc bén hơn và bộ nhớ phong phú hơn.
Đó là toàn bộ vòng lặp tự cải thiện, và hãy chú ý nó được xây dựng hoàn toàn từ các phần của bộ khung:
- Agent con chấm điểm công việc - kiểm tra khách quan, ngữ cảnh mới.
- Bộ nhớ ghi lại phán quyết - tồn tại giữa các lần chạy.
- Skill áp dụng bài học - lần sau thì thông minh hơn.
- Loop chạy lại - bây giờ với tất cả những gì lần trước đã học.
Mô hình không bao giờ thay đổi. Bộ khung xung quanh nó trở nên sắc bén hơn. Đó là ý nghĩa thực sự của "tự cải thiện" - không phải một mô hình học hỏi, mà là một bộ khung tích lũy.
14. Phân phối bộ khung. Đóng gói nó. Chia sẻ nó. Tái sử dụng nó.
Một bộ khung hoạt động trên một dự án là một tài sản.
Đóng gói các skill, agent con và quy tắc vào một plugin và toàn bộ nhóm của bạn cài đặt cùng một thiết lập trong một bước - cùng quy ước, cùng hook an toàn, cùng reviewer.

Bộ khung không còn là thiết lập cá nhân của bạn nữa mà trở thành cơ sở hạ tầng dùng chung.
Thứ tự xây dựng, một lần cuối, bởi vì thứ tự là bài học: làm cho một lần chạy thủ công đáng tin cậy trên một bộ khung sạch.
Thêm ngữ cảnh và quyền hạn. Thêm một agent con reviewer. Thêm bộ nhớ. Sau đó và chỉ sau đó, bọc nó trong một loop. Một loop trên một bộ khung tốt sẽ tích lũy. Một loop trên một bộ khung tồi chỉ làm chảy máu nhanh hơn.
§ Những sai lầm về bộ khung làm cho mọi loop tồi tệ hơn
- Chạy trên mặc định. Không có ngữ cảnh, không có quy tắc, không có bộ nhớ - agent phải suy luận lại dự án của bạn mỗi phiên.
- CLAUDE.md bị phình to. Các quy trình nhồi nhét vào ngữ cảnh cố định, làm phình mỗi lần chạy. Hãy chuyển chúng vào skill.
- Thực thi trong CLAUDE.md thay vì hook. Mô hình có thể bỏ qua một gợi ý. Nó không thể bỏ qua một hook thoát với mã 2.
- Một agent viết và tự chấm điểm công việc của chính nó. Hãy thêm một agent con reviewer với một cửa sổ ngữ cảnh mới.
- Không có bộ nhớ. Mỗi lần chạy khởi động lại từ con số không. Tệp trạng thái là thứ làm cho ngày mai tiếp tục.
- Bọc một loop quanh một bộ khung tồi. Loop chỉ tạo ra rác nhanh hơn. Hãy xây dựng nền tảng trước.
- Hai mươi hook. Một hoặc hai hook sắc bén đánh bại một đống mà không ai hiểu.
- Phân phối một bộ khung mà không quét nó. Bí mật bị rò rỉ và quyền hạn quá rộng sẽ lan truyền đến tất cả những người cài đặt nó.
Kết luận:
Loop nhận được vinh quang. Bộ khung làm công việc thực sự.
Kỹ thuật loop là phần thú vị - agent tự nhắc nhở chính nó, chạy trong khi bạn ngủ. Nhưng một loop chỉ là một bộ khung có bộ đếm thời gian.
Mọi thứ quyết định đầu ra tốt hay rác đều nằm ở một tầng bên dưới, trong mô hình bạn chọn, công cụ bạn cho phép, ngữ cảnh bạn viết, reviewer bạn thêm vào, bộ nhớ bạn giữ lại.
Xây dựng tầng đó tốt và mọi thứ bên trên sẽ tích lũy: loop tái sử dụng các agent con của bạn, quy trình làm việc phối hợp các skill của bạn, bộ nhớ làm cho mỗi lần chạy sắc bén hơn lần trước.
Tự cải thiện không bao giờ là một thuộc tính của mô hình. Nó là một thuộc tính của bộ khung mà bạn xây dựng xung quanh nó.
Hãy chọn một điều bạn chưa làm - có thể là một agent con reviewer, một hook an toàn, hoặc một tệp trạng thái — và thêm nó ngay hôm nay. Giữ bộ khung đủ nhỏ để giải thích. Sau đó đặt một loop lên trên, và xem nền tảng làm việc.






