Mọi hệ thống agent đều đối mặt với cùng một sự đánh đổi khó chịu. Bạn muốn một cơ sở kiến thức sâu, được tổ chức tốt, có thể tồn tại qua các đợt code review và lịch sử git. Nhưng bạn cũng cần runtime phải chạy nhanh và luôn tập trung. Hai nhu cầu này mâu thuẫn với nhau. Bạn càng lưu trữ nhiều chỉ dẫn, bạn càng dễ nảy sinh ý định đổ tất cả chúng vào prompt và hy vọng điều tốt đẹp nhất sẽ đến. Nhưng niềm hy vọng đó rất tốn kém.

Trong hệ sinh thái Agent Project Context, sự căng thẳng này được phân chia rõ ràng qua hai lớp. APC xử lý tính bền vững. APX xử lý tốc độ. Hiểu được cách chúng tương tác—và tại sao APX từ chối tải trước mọi định nghĩa kỹ năng—sẽ giúp bạn hiểu về kỹ thuật prompt (prompt engineering) nhiều hơn bất kỳ hướng dẫn tối ưu hóa nào khác.

Kho lưu trữ và Engine

Nhiệm vụ của APC là tính vĩnh cửu. Nó lưu trữ các tệp kỹ năng có thể tái sử dụng trong thư mục .apc/skills/ dưới dạng các tài liệu Markdown thuần túy. Vì các tệp này nằm trong kho lưu trữ (repository) của bạn, chúng sẽ đi kèm với hệ thống kiểm soát phiên bản. Bạn có thể tạo một pull request để thay đổi quy trình triển khai. Bạn có thể so sánh sự khác biệt (diff) của một bản hoàn tác chính sách bảo mật từ sáu tuần trước. Bạn có thể kiểm tra chính xác agent được kỳ vọng phải biết những gì và vào thời điểm nào. Khả năng kiểm tra đó rất quan trọng khi một bản triển khai lỗi được đưa lên môi trường thực tế hoặc khi một kiểm toán viên tuân thủ bắt đầu đặt câu hỏi.

Ngược lại, APX sống trong khoảnh khắc. Nó quản lý cuộc hội thoại thực tế giữa bạn và mô hình. Mục tiêu của nó không phải là lưu trữ kiến thức mà là sử dụng kiến thức đó một cách chính xác. Khi APX coi các kỹ năng là những gánh nặng vĩnh viễn, toàn bộ hệ thống sẽ chậm lại. Cửa sổ ngữ cảnh (context window) bị lấp đầy. Chi phí token tăng lên. Tệ hơn nữa, sự chú ý của mô hình bị phân tán vào các chỉ dẫn không liên quan gì đến yêu cầu hiện tại.

Đây là lý do tại sao nội dung kỹ năng được tải theo yêu cầu.

Cái giá thực sự của một Prompt cồng kềnh

Hầu hết các đội ngũ đều hiểu rằng token tốn tiền. Nhưng ít đội ngũ nhận ra rằng các token không liên quan sẽ làm mất đi độ chính xác.

Khi APX đưa mọi kỹ năng có sẵn vào mỗi lượt hội thoại, prompt sẽ trở nên nhiễu. Mô hình nhận được cùng một lúc sổ tay triển khai (deployment runbook), hướng dẫn bảo mật, tài liệu tham khảo phong cách API, danh sách kiểm tra thử nghiệm và các câu hỏi thường gặp (FAQ) khi onboarding. Ngay cả với cửa sổ ngữ cảnh lớn, chất lượng suy luận vẫn bị giảm sút khi mô hình phải sàng lọc nhiễu để tìm tín hiệu. Nó có thể bám lấy một yêu cầu bảo mật dành cho triển khai thực tế trong khi đang trả lời một câu hỏi về thiết lập kiểm thử cục bộ. Nó có thể "ảo tưởng" (hallucinate) các bước từ danh sách kiểm tra phát hành vào một bản sửa lỗi đơn giản. Mỗi đoạn văn bản không liên quan thêm vào đều là một sự xao nhãng trực chờ xảy ra.

Phép toán rất đơn giản. Hầu hết các lượt hội thoại không cần đến hầu hết các kỹ năng. Nếu bạn đang yêu cầu một bản sửa lỗi nhanh cho một nhật ký lỗi (error log), bạn không cần toàn bộ văn bản của sổ tay triển khai hay hướng dẫn tăng cường bảo mật. Bạn cần mô hình nhìn thấy lỗi, hiểu các quy ước dự án của bạn và chỉnh sửa đúng tệp. Việc tải các nội dung kỹ năng không liên quan không giúp ích gì cho mô hình. Nó buộc mô hình phải lọc bỏ dữ liệu vô dụng trước khi thực sự bắt đầu giải quyết vấn đề thực tế của bạn.

Cơ chế tải theo yêu cầu hoạt động như thế nào

Cơ chế này đơn giản nhưng có tính toán. APC tiếp tục nắm giữ "nguồn sự thật" (ground truth). Các định nghĩa kỹ năng của bạn vẫn nằm đúng nơi của chúng: trong .apc/skills/<name>.md.

APX không sao chép các tệp đó vào bộ nhớ hoạt động. Thay vào đó, nó biên soạn một danh mục rút gọn các tên kỹ năng. Mô hình nhìn thấy danh sách này và hiểu rằng có một danh mục đang tồn tại. Nếu nó cần duyệt qua hoặc xác nhận các khả năng hiện có, nó có thể gọi hàm list_skills. Điều này mang lại cho nó khả năng hiển thị mà không gây quá tải về khối lượng.

Khi tác vụ thực sự yêu cầu cú pháp chính xác, các bước chi tiết hoặc các ràng buộc cụ thể được mã hóa trong một tệp kỹ năng, mô hình sẽ gọi load_skill. Tại thời điểm đó, và chỉ tại thời điểm đó, APX mới lấy toàn bộ nội dung Markdown từ APC và đưa nó vào ngữ cảnh. Chỉ dẫn được đưa vào ngay lập tức khi cần, được sử dụng một lần cho mục đích dự kiến, và hệ thống tránh được việc phải mang theo nó như một gánh nặng thừa thãi.

Hãy nghĩ về sự khác biệt giữa việc import một thư viện và việc dán mọi định nghĩa hàm vào tệp chính của bạn. Một cách tiếp cận giúp mã nguồn của bạn dễ điều hướng. Cách còn lại tạo ra một mớ hỗn độn mà chỉ có thể biên dịch được một cách tình cờ.

Ai sẽ thắng khi các kỹ năng xung đột

APX cũng áp dụng một thứ tự ưu tiên rõ ràng khi nó tải các kỹ năng. Không phải môi trường nào cũng giống nhau, và những lời khuyên chung chung không bao giờ được phép ghi đè lên kiến thức cục bộ.

Kỹ năng dự án được ưu tiên hàng đầu. Các tệp này nằm trong kho lưu trữ hiện tại của bạn tại .apc/skills/. Chúng ghi lại các quy ước cụ thể của nhóm, các wrapper tùy chỉnh, các tiêu chuẩn đặt tên cũ và bộ công cụ (toolchain) riêng biệt của bạn. Nếu dự án của bạn định nghĩa cách xử lý di chuyển cơ sở dữ liệu (database migrations) riêng, định nghĩa đó sẽ được ưu tiên.

Tiếp theo là các kỹ năng toàn cục. Chúng bao gồm các mẫu (patterns) áp dụng cho toàn tổ chức khi bản thân dự án không có định nghĩa cụ thể. Chúng đóng vai trò như một thư viện tiêu chuẩn.

Các kỹ năng runtime tích hợp sẵn nằm ở mức thấp nhất để làm phương án dự phòng (fallback). Chúng xử lý các khả năng chung mà mọi agent đều nên hiểu nhưng chưa có dự án cụ thể nào cần định nghĩa lại.

Cách tiếp cận phân lớp này có nghĩa là kho lưu trữ của bạn giữ quyền kiểm soát hành vi của chính nó. Một kỹ năng toàn cục hoặc tích hợp sẵn không thể vô tình chiếm quyền điều khiển một quy trình làm việc mà nhóm của bạn đã chủ ý tùy chỉnh.

Hình ảnh thực tế của mô hình này

Hãy hình dung một tác vụ bảo trì điển hình. Một đồng nghiệp dán một nhật ký lỗi (error log) vào khung chat. Traceback chỉ ra một tham chiếu null duy nhất trong một module tiện ích. Cách khắc phục có thể chỉ là hai dòng mã lập trình phòng vệ.

Trong một hệ thống không có cơ chế tải theo yêu cầu, APX sẽ nhồi nhét mọi kỹ năng mà nó biết vào ngữ cảnh. Mô hình hiện phải xem xét bốn mươi trang văn bản trước khi chạm vào hai dòng mã đó. Nó thấy danh sách kiểm tra phát hành (release checklist) và tự hỏi liệu có nên tăng phiên bản hay không. Nó thấy hướng dẫn bảo mật và cân nhắc việc xác thực đầu vào cho một hàm vốn chỉ cần kiểm tra null. Nó thấy runbook triển khai và bắt đầu nghĩ về các môi trường staging. Mô hình bị xao nhãng. Phản hồi mất nhiều thời gian hơn. Bộ đếm token chạy liên tục.

Với thiết kế tải theo yêu cầu của APX, mô hình chỉ thấy các tên gọi. Nó biết rằng [release-checklist], [security-guide], [deployment-runbook], và [error-handling] tồn tại. Nó bỏ qua ba cái đầu tiên. Nó có thể tải [error-handling] nếu các quy ước về an toàn null (null safety) của dự án bạn là đặc thù. Nó sửa lỗi. Các kỹ năng không liên quan chưa bao giờ lọt vào cửa sổ ngữ cảnh. Mô hình vẫn giữ được sự tập trung vì prompt luôn sạch sẽ.

Logic tương tự cũng áp dụng khi tác vụ thực sự phức tạp. Nếu sau đó bạn yêu cầu agent chuẩn bị triển khai sản phẩm (production deployment), nó có thể tải runbook triển khai, tham khảo hướng dẫn bảo mật và tuân thủ chính xác danh sách kiểm tra phát hành khi các bước đó trở nên cần thiết. Kiến thức luôn ở đó. Nó chỉ đơn giản là chờ đợi thời điểm thích hợp.

Kỷ luật Prompt như một Kiến trúc

Sự tách biệt giữa APC và APX không chỉ là một chi tiết triển khai. Đó là một triết lý về kỷ luật prompt. APC lưu giữ kiến thức mãi mãi, giúp chúng có thể xem xét, quản lý phiên bản và an toàn. APX quyết định xem bao nhiêu kiến thức đó xứng đáng có một vị trí trong ngữ cảnh hoạt động ngay lúc này.

Một danh mục kỹ năng phong phú là một tài sản. Một prompt cồng kềnh là một gánh nặng. Mục tiêu là giữ cho ngữ cảnh của bạn có tính di động mà không cần phải luôn luôn hoạt động. Kho lưu trữ của bạn nên chứa mọi hướng dẫn mà nhóm của bạn từng viết, nhưng agent chỉ nên đọc những hướng dẫn giúp ích cho tác vụ tức thời.

Nếu hệ thống của bạn buộc mô hình phải mang theo toàn bộ nội dung của mọi kỹ năng vào mỗi lượt tương tác, bạn không phải đang xây dựng một trợ lý thông minh. Bạn đang xây dựng một thủ thư kéo toàn bộ kho lưu trữ đến mỗi khi có câu hỏi tra cứu. Hãy lưu trữ mọi thứ. Chỉ tải những gì quan trọng. Đó là cách bạn giữ cho các agent hoạt động nhanh, ngữ cảnh sạch sẽ và khả năng suy luận sắc bén.