Boris Cherny - người tạo ra Claude Code - từng nói một câu mà cộng đồng AI lan truyền rộng rãi: "Tôi không còn prompt Claude nữa. Công việc của tôi là viết loops."

Câu đó nghe có vẻ triết học, nhưng thực ra rất cụ thể. Nó mô tả một kiến trúc: thay vì nói chuyện với AI, bạn xây dựng hệ thống bao quanh AI để nó hoạt động mà không cần bạn can thiệp liên tục.

Avid đã dành 3 tháng để tái tạo setup đó và ghi lại toàn bộ - 4.000 từ về cách xây dựng và lý do tồn tại của từng mảnh ghép.

Sự thật mà ít người nói với bạn

Bạn không cần build model. Thứ bạn cần build là hạ tầng xung quanh model:

  • Memory tồn tại qua các session

  • Skills encode cách thực hiện từng loại task

  • Protocols quy định agent được và không được làm gì

Đây là insight mà Garry Tan đã đóng đinh: the harness does not think. Nó đọc files, gọi tools, ghi logs, chạy hooks. Toàn bộ intelligence nằm trong skill files và memory files. Protocols là người canh cửa.

Điều này có nghĩa:

  • Bạn có thể swap harness bất cứ lúc nào mà không mất gì

  • Bạn có thể swap model mà không mất gì

  • Thứ duy nhất tích lũy giá trị là skills, memory, và protocols

  • Và đó chỉ là plain markdown và JSON trong một git repo

Bốn lớp memory - không phải một đống lộn xộn

Sai lầm lớn nhất khi mới bắt đầu: gom tất cả memory vào một chỗ. Cách này chạy được khoảng 6 tuần. Sau đó nó vỡ.

Lý do: các loại memory khác nhau cần retention policy khác nhau, retrieval strategy khác nhau, và update frequency khác nhau.

Layer 1: Working Context

Trạng thái live của task đang chạy - files đang mở, plans chưa xong, hypotheses đang kiểm tra. Đây là lớp biến động nhất, thay đổi mỗi vài phút và trở nên vô nghĩa ngay khi task kết thúc.

Lý do externalize: resumption. Khi context window reset hoặc bạn quay lại hôm sau, agent đọc WORKSPACE.md và tiếp tục ngay từ điểm dừng thay vì dựng lại từ đầu.

Layer 2: Episodic Memory

Ghi lại những gì đã xảy ra trong các runs trước - decision points, tool calls, failures, outcomes, reflections. Không phải chỉ là log. Các episode được retrieve phục vụ như concrete precedents giúp agent tránh lặp lại sai lầm đã biết.

Hai trường quan trọng nhất: pain_score (mức độ thiệt hại) và importance (khả năng lặp lại). Salience scoring function dùng cả hai để quyết định gì nổi lên khi retrieve.

Layer 3: Semantic Memory

Lưu các abstractions tồn tại lâu hơn bất kỳ episode cụ thể nào - patterns và heuristics có xu hướng đúng across tasks. Khác với episodic ở chức năng:

  • Episodic: "điều này đã xảy ra vào ngày đó"

  • Semantic: "điều này thường đúng trong nhiều trường hợp"

Dream cycle là cơ chế promote episodic entries lên semantic lessons khi chúng tái diễn hoặc score đủ cao.

Layer 4: Personal Memory

Thông tin ổn định về bạn cụ thể - preferences, conventions, recurring constraints. Layer này tồn tại vì user-specific information cần retention rules khác với general task knowledge. Không bao giờ merge vào LESSONS.md vì thứ hiệu quả với bạn có thể là lời khuyên tệ hại trong general.

Dream Cycle - bộ não ngủ để học

Gọi là dream cycle vì nó chạy qua đêm và compress raw logs của cả ngày thành distilled lessons - giống như giấc ngủ consolidate memories.

Phiên bản nâng cấp làm 3 thứ mà bản gốc không làm được:

  1. Phát hiện recurring patterns across episodes và boost salience của chúng

  2. Tự động promote high-salience patterns từ episodic vào semantic memory - những lessons quan trọng được hardened thành permanent knowledge mà không cần bạn curate thủ công

  3. Archive decayed entries thay vì xóa - bạn có thể git log memory/ để recover thứ bị compress quá mạnh

Chạy cron job mỗi đêm. Hoặc trigger thủ công sau các session căng thẳng.

Skills và Progressive Disclosure

Sau 3 tháng chạy 30+ skills, bài học quan trọng nhất: bản thân skill files chỉ giải quyết một nửa vấn đề. Nửa kia là tìm và load đúng skill vào đúng thời điểm mà không làm ngập context window.

Giải pháp: progressive disclosure. Agent đọc _index.md mỗi khi bắt đầu session - ngắn gọn, chỉ có tên, mô tả một dòng, và trigger phrases. Khi trigger match, agent load full SKILL.md cho skill đó. Khi không có gì match, toàn bộ skill files ở yên trên disk.

Điều này quan trọng vì context budget. Model có một số lượng tokens cố định để xử lý. Memory retrieval, skill loading, tool schemas, và reasoning của model đều cạnh tranh với nhau. Dump mọi skill file vào context mọi lúc = lãng phí tokens vào instructions không liên quan và model hoạt động tệ hơn, không tốt hơn.

Sáu vòng phản hồi khiến hệ thống tự cải thiện

Đây là phần khiến hệ thống tốt hơn theo thời gian thay vì đứng im, và không vòng nào yêu cầu bạn làm gì thủ công sau khi setup:

  1. Memory → Skills: Khi memory-manager phát hiện recurring pattern trong episodic memory, nó trigger skillforge tạo skill mới từ pattern đó

  2. Skills → Memory: Mỗi skill execution được log vào episodic memory qua post_execution hook - success hoặc failure đều có pain score

  3. Skills → Protocols: Khi skill cần gọi external tool, call đi qua pre_tool_call hook - skill mô tả cần làm gì, protocol quản lý cách làm và liệu có được phép không

  4. Protocols → Skills: Khi đã có typed tool schema, dễ dàng viết skill dùng nó đúng cách. Schema nói chính xác arguments cần thiết, preconditions, và constraints. Đây là lý do viết schemas trước, skills sau cho kết quả tốt hơn chiều ngược lại.

  5. Memory → Protocols: Nếu episodic entries cho thấy một API endpoint fail thường xuyên, agent học cách prefer alternative path

  6. Protocol results → Memory: Tool outputs, approval events, error payloads - tất cả được log vào episodic memory qua post_execution hook

Cycle này tự reinforcing. Memory tốt hơn dẫn đến skill creation tốt hơn, dẫn đến execution traces phong phú hơn, dẫn đến memory tốt hơn.

Nhưng nó cũng có thể amplify errors. Một lesson sai trong semantic memory có thể dẫn đến skill lỗi, failures của skill generate thêm bad entries. Dream cycle decay mechanism và self-rewrite hooks conservative update policy là circuit breakers ngăn điều này.

90 ngày - thực tế xảy ra gì

  • Tuần 1–2: frustrating. Agent vẫn quên mọi thứ. Memory files có đó nhưng agent không đọc consistently. Chưa viết memory-manager nên không có gì kéo files vào loop.

  • Tuần 2–4: bắt đầu click. Sau khi có memory-manager, agent bắt đầu check LESSONS.md trước khi ra quyết định.

  • Tuần 4–5: bắt đầu tự edit. Một buổi sáng mở git-proxy KNOWLEDGE.md và thấy một dòng chưa bao giờ viết. Agent đã hit rate limit, log lại, và trong reflection cycle, memory-manager tự patch skill đó.

  • Tuần 8: bắt đầu compound. Các skills được viết bởi skillforge để giải quyết những vấn đề chỉ nhớ mang máng. Agent không chỉ remember corrections nữa mà generalize từ chúng. Lesson về API timeouts trong một project định hình cách handle error trong project hoàn toàn khác.

  • Tuần 10: đụng tường. 30 skills, LESSONS.md phình to, tool schemas cho mọi thứ. Hơn 90K tokens loaded trước khi model bắt đầu suy nghĩ. Model bắt đầu tệ hơn. Progressive disclosure và skill registry kéo nó trở lại và performance snap back gần như ngay lập tức.

"Agent không hề smart. Điều nó làm được là consistent. Nó check notes của chính mình. Nó update instructions của chính mình. Nó không có ngày tệ mà quên những gì đã học tuần trước."

Sự consistent đó, compound qua nhiều tháng, tạo ra thứ gì đó khác biệt về chất - dù underlying model vẫn như cũ.

Những gì sẽ làm khác nếu bắt đầu lại

  • Viết memory-manager ngay ngày đầu, không phải tuần 3

  • Build four-layer memory separation từ đầu

  • Giữ brain repo tách biệt khỏi code repos

  • Bắt đầu với ít skills hơn

  • Tạo context-rich skills thay vì procedure-based skills

  • Build protocol layer ngay ngày đầu, không phải tuần 6

Lesson cuối: đừng viết driving directions

Skill đầu tiên về api-scaffold là 12 bước đánh số. Bước đầu check cái này, bước hai chạy cái kia, bước ba validate field này.

Bản rewrite là một đoạn văn: "Tôi build APIs trong FastAPI, REST conventions, explicit error types, typed request bodies, rate limiting ở middleware layer. Đây là 3 endpoints tôi nghĩ được build tốt. Đây là một cái failed và tại sao. Build thứ gì đó trông giống những cái tốt."

Bản rewrite cho output tốt hơn ngay bây giờ - và tiếp tục tốt hơn khi models improve.

Skill cần 3 thứ:

  1. Procedures để agent có skeleton và không skip phase

  2. Heuristics để có default tại các fork và không freeze

  3. Constraints để có fence quanh yard

Ranh giới giữa structure và micromanagement rất rõ trong thực tế:

  • Structure: "verify tests pass before committing"

  • Micromanagement: "run npm test, grep for passed, then git add -A, then git commit..."


Model bạn có thể swap bất cứ lúc nào thứ tốt hơn ra. Skills và memory thì không thể thay thế - chúng encode những sai lầm cụ thể của bạn, quyết định cụ thể của bạn, cách làm việc cụ thể của bạn.

Own your memory. Own your skills. Keep them in plain files và git nơi không ai lấy được khỏi bạn.

Stack đầy đủ trên GitHub: github.com/codejunkie99/agentic-stack - hoạt động với Claude Code, Cursor, hoặc bất kỳ agent nào đọc markdown.