TL;DR - LangChain nhảy từ 52.8% lên 66.5% trên Terminal Bench 2.0 bằng cách siết constraint, không đổi model. Chạy ở mức reasoning cao nhất (xhigh) lại cho điểm thấp hơn. Ba data points chứng minh: tự do là kẻ thù của AI agent reliability. Xem bằng chứng →

Hai cách tiếp cận. Cùng model. Kết quả khác nhau:

# Cách A: Cho agent nhiều tự do hơn
→ Upgrade model, thêm tools, tăng context window
→ Bỏ guardrails để agent "chạy nhanh hơn"
→ Kết quả: khó đoán, rollback 3 lần mỗi session
# Cách B: Cho agent nhiều constraint hơn
→ Cùng model, cùng tools, cùng context
→ Thêm: verification loop, compute budget, context injection
→ Kết quả: 52.8% → 66.5% trên Terminal Bench 2.0 (LangChain, 2026)

Mỗi lần một team phàn nàn Claude Code “làm sai,” tôi hỏi cùng một câu: cái gì đã ngăn nó làm vậy? Câu trả lời luôn là: không có gì. Agent có khả năng thực hiện hành động đó. Không gì chặn nó cả.

Bản năng của developer là muốn model thông minh hơn. Giải pháp thật sự là harness chặt hơn.

Đây là Nghịch Lý Constraint: bạn càng hạn chế những gì AI agent có thể làm, nó càng làm tốt những gì nó nên làm.


Tại sao ai cũng nghĩ “model thông minh hơn” là câu trả lời?

Developer theo bản năng sẽ optimize cho capability. Logic nghe hợp lý: model mạnh hơn + nhiều tools hơn + ít hạn chế hơn = output tốt hơn. Nhưng giả định này nhầm lẫn capability với reliability, hai thứ hoàn toàn khác nhau (LangChain Blog, Feb 2026).

Một senior developer không có code review, không CI/CD, không linting, có full production access sẽ ship code tệ hơn một junior developer làm việc trong pipeline nghiêm ngặt. Không phải vì senior kém hơn. Mà vì capability không giới hạn không tự tổ chức thành hành vi đúng. Nó chỉ có diện tích sai lầm lớn hơn.

AI agent cũng vậy, nhưng tệ hơn. LLM không có trực giác “cái này sai sai.” Nó không dừng lại trước lệnh nguy hiểm để suy nghĩ “khoan, mình có nên làm không?” Constraint cung cấp trực giác đó từ bên ngoài.

OpenAI đã chứng minh điều này ở quy mô lớn. Team Codex ship khoảng một triệu dòng code production mà không có dòng nào do con người viết, trong năm tháng. Codex thành công không phải vì model thông minh hơn, mà vì nó chạy trong một môi trường cực kỳ chặt: AGENTS.md, reproducible dev environments, CI invariants, và mechanical verification (InfoQ, Feb 2026).

Câu hỏi đúng không phải “model bạn thông minh cỡ nào?” Câu hỏi đúng là “harness bạn chặt cỡ nào?”

Key insight: Team Codex của OpenAI ship khoảng một triệu dòng production code, zero dòng do con người viết, trong năm tháng, dùng môi trường heavily constrained với AGENTS.md, reproducible setups, và CI invariants. Capability của model là mặc định. Constraint mới là thứ tạo nên reliability (InfoQ, Feb 2026).


Bằng chứng nào cho thấy constraint tốt hơn capability?

Ba data points độc lập từ ba team khác nhau, tất cả chỉ về cùng một kết luận: constraint chặt hơn cho output tốt hơn capability mạnh hơn. Bằng chứng mạnh nhất đến từ kết quả Terminal Bench 2.0 của LangChain, nơi thay đổi harness tạo ra cải thiện 13.7 điểm với cùng model.

Bằng chứng 1: LangChain Terminal Bench 2.0

LangChain cải thiện coding agent từ 52.8% lên 66.5% trên Terminal Bench 2.0 chỉ bằng cách thay đổi harness. Cùng model (gpt-5.2-codex). Không fine-tuning. Không đổi model. Chỉ ba thay đổi harness: context injection qua LocalContextMiddleware, self-verification loop qua PreCompletionChecklistMiddleware, và quản lý compute budget (LangChain Blog, Feb 2026).

Phần ngược đời nhất: chạy ở reasoning budget cao nhất (xhigh) chỉ đạt 53.9%, tệ hơn cả baseline ban đầu. Mức high đạt 63.6%. Compute nhiều hơn gây timeout, kéo hiệu suất xuống.

Cấu hìnhĐiểmThay đổi
Baseline (chưa thay đổi harness)52.8%-
Harness changes + high reasoning66.5%+13.7pp
Harness changes + xhigh reasoning53.9%+1.1pp (timeout)

Suy nghĩ nhiều hơn không giúp gì. Constraint tốt hơn thì có.

Bằng chứng 2: AGENTS.md của Mitchell Hashimoto

Mitchell Hashimoto (tác giả Terraform, Vagrant, Ghostty) xem AGENTS.md như một failure log. Mỗi dòng tồn tại vì agent đã mắc lỗi đó ít nhất một lần. Theo lời ông: “Each line in that file is based on a bad agent behavior, and it almost completely resolved them all” (mitchellh.com, 2026).

Ghostty là một trong những codebase dùng AI hiệu quả nhất trong open source. Hashimoto ước tính agent chạy 10-20% thời gian làm việc của ông ở background. Và codebase chạy trên một trong những harness chặt nhất. Không phải bất chấp constraint. Mà nhờ constraint.

Nguyên tắc của ông: mỗi khi agent mắc lỗi, ông dành thời gian engineer giải pháp để agent không bao giờ mắc lỗi đó nữa (HumanLayer Blog, Mar 2026). Mỗi constraint là một bài học. Mỗi bài học khiến session tiếp theo đáng tin hơn. Đọc thêm về phương pháp này: CLAUDE.md không phải file hướng dẫn, mà là failure log.

Bằng chứng 3: Permission model của Claude Code

Claude Code mặc định read-only. Bạn phải cho phép write access, tạo file, và chạy command một cách tường minh. Đây không phải hạn chế. Đây là quyết định thiết kế khiến nó đáng tin hơn các tool mặc định full access.

Nghĩ xem read-only default có nghĩa gì cho action space của agent. Thay vì đánh giá mọi hành động có thể (kể cả destructive), agent hoạt động trong một tập hành động an toàn có giới hạn. Khi cần làm gì ngoài tập đó, nó hỏi. Việc hỏi đó chính là constraint, và nó bắt lỗi trước khi xảy ra.

So sánh với agent có full file system access từ đầu. Nó không bao giờ dừng. Không bao giờ hỏi. Cứ thế làm, kể cả rm -rf khi nghĩ cần dọn dẹp. Tôi đã viết về chuyện này xảy ra trong dự án thực tế. Ba lớp phòng thủ, agent vẫn tìm đường vượt qua vì một path không có constraint.

Key insight: LangChain cải thiện từ 52.8% lên 66.5% trên Terminal Bench 2.0 chỉ bằng thay đổi harness, giữ nguyên gpt-5.2-codex. Chạy ở reasoning budget tối đa (xhigh) lại cho điểm tệ hơn, 53.9%, do timeout. Compute nhiều hơn gây hại. Constraint chặt hơn thì giúp (LangChain Blog, Feb 2026).


Tại sao constraint thực sự cải thiện AI agent output?

Constraint cải thiện output qua ba cơ chế: giảm search space, làm rõ intent, và enforcement deterministic. Đây không phải lý thuyết suông. Chúng giải thích chính xác tại sao thay đổi harness của LangChain tạo ra cải thiện 13.7 điểm (LangChain Blog, Feb 2026).

Cơ chế 1: Constraint giảm search space. Agent không bị giới hạn phải đánh giá mọi hành động có thể, kể cả destructive. Agent bị constraint chỉ đánh giá các hành động hợp lệ. Giống như chess engine chơi tốt hơn với opening book: loại bỏ nước đi tệ sớm nghĩa là dành compute cho nước đi tốt.

LocalContextMiddleware của LangChain là search space reduction trong thực tế. Thay vì agent tốn bước tìm hiểu môi trường (cấu trúc thư mục, tools có sẵn, phiên bản Python), middleware inject context đó từ đầu.

Cơ chế 2: Constraint làm rõ intent. Khi bạn nói agent “không sửa file trong /config,” bạn không chỉ ngăn hành động xấu. Bạn đang cho agent thông tin về cái gì quan trọng. Constraint là một dạng giao tiếp khó hiểu sai hơn instruction.

Instruction nói: “Cẩn thận với config files.” Mơ hồ. “Cẩn thận” nghĩa là read-only? Backup trước? Hỏi trước khi sửa? Constraint nói: Hook block tất cả write vào /config/**. Không mơ hồ. Không cần diễn giải.

Cơ chế 3: Hard stop thắng soft warning. Đây là cơ chế quan trọng nhất. Một Hook block git push --force không yêu cầu agent “quyết định” có nên tuân thủ rule không. Rule được enforce. Agent không tốn token cân nhắc instruction với context khác. Quyết định đã được đưa ra.

PreCompletionChecklistMiddleware của LangChain là hard stop. Agent không thể đánh dấu task hoàn thành mà không chạy verification. Nó không “quyết định” có verify hay không. Verification là bắt buộc.

EnforcementCơ chếComplianceVí dụ
InstructionSoft context, LLM cân nhắc60-70%“Đừng force push”
HookShell script, chạy trước action100%Block force push
MiddlewareCode trong agent pipeline100%Bắt buộc verification

Key insight: Hard enforcement (hooks, middleware) đạt 100% compliance so với 60-70% cho soft instruction trong CLAUDE.md. PreCompletionChecklistMiddleware của LangChain bắt buộc verification trước khi hoàn thành task, loại bỏ khả năng agent bỏ qua testing. Agent không tốn token quyết định có verify không; quyết định đã được đưa ra ở tầng kiến trúc (LangChain Blog, Feb 2026).


Nhận tips Claude Code hàng tuần - Mỗi tuần một tip thực tế. Không spam, không fluff. Đăng ký AI Developer Weekly →


Constraint có làm chậm development không?

Không. Agent không bị constraint tốn nhiều thời gian phục hồi từ sai lầm hơn agent bị constraint tốn cho guardrail checks. Một quyết định sai của agent (xóa file, force push, migration hỏng) tốn 30 phút recovery. Một Hook check tốn 5 milliseconds (LangChain Blog, Feb 2026).

Nghĩ về session không có constraint. Agent chạy tự do 20 phút, tạo destructive change ở phút 15, bạn tốn 30 phút khôi phục. Tổng: 50 phút cho 15 phút công việc có ích.

Giờ nghĩ về session có constraint. Agent đụng Hook ở phút 15, bị chặn, đổi approach. Tổng: 25 phút cho 25 phút công việc có ích.

# Session không constraint
Agent chạy → lỗi ở phút 15 → rollback → thử lại → 50 phút tổng
Công việc có ích: 15 phút (30% efficiency)
# Session có constraint
Agent chạy → bị chặn ở phút 15 → đổi hướng → hoàn thành → 25 phút tổng
Công việc có ích: 25 phút (100% efficiency)

LoopDetectionMiddleware của LangChain minh họa rõ nhất. Nó phát hiện khi agent stuck trong vòng lặp edit lặp đi lặp lại và bắt agent xem xét lại approach. Không có constraint này, agent đốt token sửa đi sửa lại cùng file. Có constraint, agent lùi lại thử chiến lược khác.

Chi phí thật sự không phải constraint. Chi phí thật sự là recovery từ những gì sẽ xảy ra khi không có constraint.

Key insight: LoopDetectionMiddleware của LangChain phát hiện agent edit lặp lại và bắt buộc xem xét lại plan, ngăn vòng lặp đốt token. Constraint không làm chậm development; chúng loại bỏ thời gian recovery từ sai lầm không bị giới hạn. Một hook check 5ms ngăn 30 phút rollback (LangChain Blog, Feb 2026).


Nên constraint ở đâu (và ở đâu thì không)?

Constraint hành động không thể đảo ngược, thao tác cross-environment, và path nhạy cảm về security. Không constraint lựa chọn style, thuật toán, hay approach refactoring. Quy tắc từ framework 5 lớp harness: nếu hành động đó khó undo, constraint nó. Nếu chỉ ảnh hưởng code quality (không phải code safety), để agent tự quyết.

Constraint (tốn nhiều để undo)Không constraint (tốn ít)
Xóa file, rm -rfNaming convention
git push --forceChọn thuật toán
Ghi production databaseApproach refactoring
Sửa .env và secretsStyle comment
Thay đổi CI/CD pipelineCấu trúc test

Over-constraining là rủi ro thật. Nếu mọi file đều protected, mọi command cần approval, mọi edit cần pre-authorization, bạn đã xây hệ thống “an toàn” nhưng không làm được gì. Mục tiêu không phải zero risk. Mục tiêu là zero unrecoverable risk.

Permission model của Claude Code cân bằng đúng. Read không giới hạn. Write cần approval. Command destructive cần allowlist tường minh. Agent khám phá tự do nhưng không thể phá hỏng thứ gì mà không có sự đồng ý của bạn.

Try it now: Mở .claude/settings.json và kiểm tra permission config. Nếu agent có unrestricted write access, thêm một Hook block edit vào file nhạy cảm nhất. Bắt đầu với .envcredentials. Một constraint đó sẽ ngăn những lỗi “oops” phổ biến nhất. Xem hướng dẫn chọn Hook để copy-paste template.


Đang xây harness từng layer? Nhận .claude/ Template Repo khi nó sẵn sàng. Đăng ký waitlist →


FAQ

Nghịch lý constraint trong AI agent là gì?

Nghịch lý constraint là phát hiện ngược đời rằng hạn chế capability của AI agent lại tạo output tốt hơn cho nó nhiều tự do hơn. LangChain chứng minh bằng cách tăng 13.7 điểm benchmark chỉ bằng harness constraint (52.8% lên 66.5% trên Terminal Bench 2.0, cùng model). Cơ chế: constraint giảm search space, làm rõ intent, và enforce rule một cách deterministic.

Compute nhiều hơn có luôn cải thiện hiệu suất AI agent không?

Không. Data benchmark của LangChain cho thấy chạy ở reasoning budget tối đa (xhigh) chỉ đạt 53.9%, tệ hơn mức high ở 63.6%. Compute nhiều hơn gây timeout kéo hiệu suất xuống. Approach tối ưu là budgeted compute với hard verification stop, không phải reasoning không giới hạn (LangChain Blog, Feb 2026).

Constraining khác gì limiting AI agent?

Constraining nghĩa là loại bỏ hành động nguy hiểm hoặc lãng phí khỏi action space của agent trong khi giữ nguyên khả năng giải quyết vấn đề. Limiting nghĩa là giảm capability hoàn toàn. Hook block rm -rf là constraint. Gỡ bỏ file system access hoàn toàn là limitation. Constraint cải thiện reliability. Limitation giảm usefulness.

AI agent harness nên có bao nhiêu constraint?

Đủ để ngăn lỗi không thể phục hồi, không nhiều đến mức agent không làm việc được. Setup production của HumanLayer chạy dưới 60 dòng constraint. Quy tắc: constraint hành động nào mà undo sẽ tốn hơn 5 phút. Mọi thứ khác để agent tự quyết. Bắt đầu với 3-5 constraint và thêm chỉ sau lỗi thực tế, theo failure log pattern.


Đọc Thêm