Tiêu đề gốc: "Hiểu về mã nguồn Claude Code của Anthropic trong một bài viết: Tại sao nó lại tốt hơn những công cụ khác?"
Tác giả gốc: Yuker, Nhà nghiên cứu AI
Vào ngày 31 tháng 3 năm 2026, nhà nghiên cứu bảo mật Chaofan Shou phát hiện ra rằng trong bản phát hành npm của gói Claude Code, tệp bản đồ nguồn (source map) đã không được loại bỏ.
Điều này có nghĩa là toàn bộ mã nguồn TypeScript của Claude Code, với 512.000 dòng và 1903 tệp, đã bị lộ trên internet công cộng.
Tất nhiên, tôi không thể đọc hết chừng đó mã trong vài giờ, vì vậy tôi đã tiếp cận mã nguồn này với ba câu hỏi:
1. Sự khác biệt cơ bản giữa Claude Code và các công cụ lập trình AI khác là gì?
2. Tại sao việc viết code của nó lại "cảm giác" tốt hơn những công cụ khác?
3. Chính xác thì điều gì ẩn giấu trong 510.000 dòng code đó?
Sau khi đọc qua, phản ứng ban đầu của tôi là: đây không chỉ là một trợ lý lập trình AI; đây là một hệ điều hành.
Hãy tưởng tượng bạn thuê một lập trình viên từ xa và cấp cho họ quyền truy cập từ xa vào máy tính của bạn.
Bạn sẽ xử lý việc đó như thế nào?
Nếu bạn là Cursor: bạn sẽ để họ ngồi cạnh mình, và mỗi khi họ cần gõ một lệnh, bạn sẽ liếc nhìn và nhấp "cho phép". Nó đơn giản, nhưng bạn phải để mắt đến họ mọi lúc.
Nếu bạn là GitHub Copilot Agent: bạn sẽ cung cấp cho họ một máy ảo hoàn toàn mới để làm việc. Sau khi họ hoàn thành, họ gửi code, bạn xem xét, rồi hợp nhất nó. Nó an toàn, nhưng họ không thể thấy môi trường cục bộ của bạn.
Nếu bạn là Claude Code:
Bạn sẽ để họ sử dụng máy tính của bạn trực tiếp—nhưng bạn đã trang bị cho nó một hệ thống bảo mật cực kỳ tinh vi. Những gì họ có thể làm, những gì họ không thể làm, hành động nào cần sự chấp thuận của bạn, hành động nào họ có thể tự thực hiện, và ngay cả khi họ muốn sử dụng rm -rf, nó cũng phải vượt qua 9 cấp độ kiểm duyệt trước khi thực thi.
Đây là ba triết lý bảo mật hoàn toàn khác nhau:

Tại sao Anthropic lại chọn con đường khó nhất?
Bởi vì chỉ bằng cách này, AI mới có thể làm việc với terminal, môi trường và cấu hình của bạn - đây mới là ý nghĩa của việc "thực sự giúp bạn lập trình", thay vì "viết một đoạn code trong phòng sạch rồi copy nó sang".
Nhưng cái giá phải trả là gì? Họ đã viết 510.000 dòng code cho việc này.
Hầu hết mọi người nghĩ các công cụ lập trình AI hoạt động như thế này:
Người dùng nhập liệu → Gọi LLM API → Nhận kết quả → Hiển thị cho người dùng
Claude Code thực tế hoạt động như thế này:
Người dùng nhập liệu
→ Lắp ráp động 7 lớp system prompt
→ Chèn trạng thái Git, quy ước dự án, bộ nhớ lịch sử
→ 42 công cụ mỗi công cụ đi kèm với một hướng dẫn sử dụng
→ LLM quyết định sử dụng công cụ nào
→ 9 lớp kiểm duyệt bảo mật (phân tích AST, bộ phân loại ML, kiểm tra sandbox...)
→ Giải quyết tranh chấp quyền hạn (bàn phím cục bộ/IDE/hook/bộ phân loại AI đều chạy đua đồng thời)
→ Độ trễ chống mệt mỏi 200ms
→ Thực thi công cụ
→ Trả về kết quả theo kiểu streaming
→ Ngữ cảnh có đang tiến gần đến giới hạn không? → Nén ba giai đoạn (nén vi mô → tự động nén → nén toàn bộ)
→ Cần song song hóa? → Tạo một đàn sub-agent
→ Lặp lại cho đến khi hoàn thành nhiệm vụ
Tôi tin rằng mọi người đều rất tò mò về những điều trên, nhưng đừng lo, hãy cùng giải mã từng cái một.
Mở src/constants/prompts.ts, và bạn sẽ thấy hàm này:

Bạn có chú ý đến SYSTEM_PROMPT_DYNAMIC_BOUNDARY đó không?
Đây là một dấu phân cách bộ nhớ đệm. Nội dung phía trên dấu phân cách là tĩnh và có thể được bộ nhớ đệm bởi Claude API để tiết kiệm chi phí token. Nội dung bên dưới dấu phân cách là động — nhánh Git hiện tại của bạn, cấu hình dự án CLAUDE.md, các sở thích đã cung cấp trước đó... mỗi tương tác đều là duy nhất.
Điều này có nghĩa là gì?
Anthropic coi các từ gợi ý như đầu ra của trình biên dịch để tối ưu hóa. Phần tĩnh là "binary đã biên dịch", và phần động là "tham số runtime". Lợi ích của cách tiếp cận này là:
1. Tiết kiệm chi phí: Phần tĩnh được lưu vào bộ nhớ đệm, tránh các khoản phí dư thừa
2. Tốc độ: Cache hit trực tiếp bỏ qua việc xử lý các token đó
3. Tính linh hoạt: Phần động cho phép mỗi tương tác nhận thức được môi trường hiện tại
Mỗi công cụ có "Hướng dẫn sử dụng" riêng
Điều đáng kinh ngạc hơn nữa là mỗi thư mục công cụ đều chứa một tệp prompt.ts — đây là Hướng dẫn sử dụng được thiết kế riêng cho LLM.
Hãy nhìn vào BashTool (src/tools/BashTool/prompt.ts, khoảng 370 dòng):

Đây không phải là tài liệu dành cho con người, đây là quy tắc ứng xử cho hành vi của AI. Mỗi khi Claude Code khởi động, các quy tắc này được chèn vào system prompt.
Đây là lý do tại sao Claude Code không bao giờ tự ý git push --force, trong khi một số công cụ khác có thể làm vậy — không phải vì mô hình thông minh hơn, mà là vì các gợi ý đã nêu rõ các quy tắc.
Thêm vào đó, phiên bản nội bộ của Anthropic khác với phiên bản bạn đang sử dụng
Code có vô số nhánh như thế này:

ant đề cập đến nhân viên nội bộ của Anthropic. Phiên bản của họ có các hướng dẫn về phong cách code chi tiết hơn ("Đừng viết comment trừ khi lý do TẠI SAO không rõ ràng"), chiến lược đầu ra quyết liệt hơn ("Viết theo kiểu kim tự tháp ngược"), và một số tính năng thử nghiệm vẫn đang trong quá trình kiểm thử A/B (Verification Agent, Explore & Plan Agent).
Điều này minh họa rằng Anthropic là người dùng lớn nhất của Claude Code. Họ đang sử dụng sản phẩm của chính mình để phát triển sản phẩm của chính mình.
Mở src/tools.ts, và bạn sẽ thấy danh sách đăng ký công cụ:

42 công cụ, nhưng hầu hết trong số đó bạn chưa bao giờ thấy trực tiếp. Đó là vì nhiều công cụ được tải một cách lười biếng (lazy load)—chỉ khi LLM cần chúng, chúng mới được chèn vào theo yêu cầu thông qua ToolSearchTool.
Tại sao lại làm như vậy?
Bởi vì với mỗi công cụ bổ sung, system prompt cần thêm một mô tả, và token cần tốn nhiều tiền hơn. Nếu bạn chỉ muốn Claude Code giúp bạn thay đổi một dòng code, nó không cần phải tải 'Cron Task Scheduler' và 'Team Collaboration Manager'.
Có một thiết kế thông minh hơn nữa:

Đặt CLAUDE_CODE_SIMPLE=true, và Claude Code sẽ chỉ còn lại ba công cụ: Bash, Read File, Modify File. Đây là cửa sau cho những người theo chủ nghĩa tối giản.

Hãy chú ý đến các giá trị mặc định đó: isConcurrencySafe mặc định là false, isReadOnly mặc định là false.
Đây được gọi là thiết kế fail-closed (đóng khi lỗi)—nếu tác giả của một công cụ quên khai báo các thuộc tính an toàn, hệ thống sẽ mặc định nó là 'không an toàn và có thể ghi'. Thà thận trọng quá mức còn hơn bỏ sót một rủi ro.

FileEditTool sẽ kiểm tra xem bạn đã đọc tệp này bằng FileReadTool chưa. Nếu chưa, nó sẽ văng lỗi trực tiếp và không cho phép sửa đổi.
Đây là lý do tại sao Claude Code sẽ không "tự động viết một đoạn code để ghi đè lên tệp của bạn" như một số công cụ khác—**nó bắt buộc phải hiểu trước khi sửa đổi**.
Bất kỳ ai đã sử dụng Claude Code đều có một cảm giác: nó dường như thực sự hiểu bạn.
Bạn bảo nó "đừng mock cơ sở dữ liệu trong các bài kiểm tra," và nó sẽ không mock trong tương tác tiếp theo. Bạn bảo nó "tôi là kỹ sư backend, người mới bắt đầu với React," và nó sẽ giải thích code front-end bằng cách sử dụng các phép ẩn dụ của backend.
Đằng sau điều này là một hệ thống bộ nhớ hoàn chỉnh.

Claude Code sử dụng một AI khác (Claude Sonnet) để xác định "những bộ nhớ nào liên quan đến cuộc trò chuyện hiện tại"
Không phải khớp từ khóa, không phải tìm kiếm vector—nó để một mô hình nhỏ quét nhanh tất cả các tiêu đề và mô tả tệp bộ nhớ, chọn ra tối đa 5 tệp liên quan nhất, sau đó chèn toàn bộ nội dung của chúng vào ngữ cảnh cuộc trò chuyện hiện tại.
Chiến lược là "ưu tiên độ chính xác hơn độ bao phủ"—thà bỏ lỡ một bộ nhớ có khả năng hữu ích còn hơn chèn một bộ nhớ không liên quan làm ô nhiễm ngữ cảnh.
Chế độ KAIROS: "Mơ" vào ban đêm
Đây là phần giống khoa học viễn tưởng nhất đối với tôi.
Có một cờ tính năng trong code gọi là KAIROS. Trong chế độ này, các bộ nhớ từ các cuộc trò chuyện dài không được lưu trữ trong các tệp có cấu trúc mà trong các mục nhập giống như nhật ký được thêm ngày tháng. Sau đó, có một kỹ năng /dream chạy vào "ban đêm" (hoạt động thấp) chưng cất các nhật ký thô này thành các tệp theo chủ đề có cấu trúc.

AI tổ chức bộ nhớ trong khi "ngủ". Đây không còn là kỹ thuật nữa; đây là sinh học.
Khi bạn yêu cầu Claude Code thực hiện một nhiệm vụ phức tạp, nó có thể lặng lẽ làm điều này:

Nó tạo ra một sub-Agent.
Và sub-Agent có một sự chèn "tự nhận thức" nghiêm ngặt để ngăn nó đệ quy tạo thêm nhiều sub-Agent:

Đoạn code này đang nói: "Bạn là một công nhân, không phải là một người quản lý. Đừng nghĩ đến việc thuê thêm người, hãy tự mình làm việc."
Mô hình điều phối: Mô hình quản lý
Trong mô hình điều phối, Claude Code trở thành một trình điều phối nhiệm vụ thuần túy, không tự mình thực hiện công việc, chỉ ủy quyền:

Các nguyên tắc cốt lõi được viết trong comment code:
"Song song là siêu năng lực của bạn" cho các nhiệm vụ nghiên cứu chỉ đọc: chạy song song. Đối với các nhiệm vụ ghi tệp: chạy nối tiếp theo nhóm tệp (tránh xung đột).
Tối ưu hóa Prompt Cache đến mức cực đoan
Để tối đa hóa tỷ lệ cache hit của các sub-Agent, tất cả kết quả tiện ích của sub-agent được fork đều sử dụng cùng một văn bản giữ chỗ:
"Fork đã bắt đầu—đang xử lý trong nền"
Tại sao? Bởi vì bộ nhớ đệm prompt của Claude API dựa trên khớp tiền tố ở cấp độ byte. Nếu các byte tiền tố của 10 sub-Agent giống hệt nhau, thì chỉ cần cái đầu tiên "khởi động lạnh", 9 cái còn lại trực tiếp hit cache.
Đây là một tối ưu hóa giúp tiết kiệm vài xu mỗi cuộc gọi, nhưng ở quy mô lớn, nó có thể tiết kiệm một khoản chi phí đáng kể.
Tất cả các LLM đều có giới hạn cửa sổ ngữ cảnh. Cuộc trò chuyện càng dài, càng nhiều tin nhắn lịch sử, nó sẽ cuối cùng vượt quá giới hạn.
Claude Code đã thiết kế nén ba lớp cho việc này:

Nén vi mô chỉ chạm vào kết quả gọi công cụ cũ — thay thế "Nội dung của tệp 500 dòng đã đọc 10 phút trước" bằng [Nội dung kết quả công cụ cũ đã bị xóa].
Các từ gợi ý và luồng đối thoại được giữ lại hoàn toàn.
Khi mức tiêu thụ token đạt gần 87% cửa sổ ngữ cảnh (kích thước cửa sổ - 13.000 buffer), nó sẽ tự động kích hoạt. Có một bộ ngắt mạch: dừng các lần thử sau 3 lần nén thất bại liên tiếp để tránh vòng lặp.
Yêu cầu AI tạo tóm tắt toàn bộ cuộc trò chuyện và sau đó thay thế tất cả các tin nhắn lịch sử bằng tóm tắt. Có một giới luật nghiêm ngặt trong quá trình tạo tóm tắt:

Tại sao lại nghiêm ngặt như vậy? Bởi vì nếu AI thực hiện các cuộc gọi công cụ bổ sung trong quá trình tóm tắt, nó sẽ làm tăng mức tiêu thụ token, phản tác dụng. Prompt này về cơ bản đang nói: "Nhiệm vụ của bạn là tóm tắt, không làm gì khác."
Ngân sách Token nén:
· Khôi phục tệp: 50.000 token
· Giới hạn mỗi tệp: 5.000 token
· Nội dung kỹ năng: 25.000 token
Những con số này không phải là ngẫu nhiên — chúng đại diện cho điểm cân bằng giữa "giữ lại đủ ngữ cảnh để tiếp tục làm việc" và "giải phóng đủ không gian để nhận tin nhắn mới."
Trong 510.000 dòng code, phần thực sự gọi LLM API có lẽ ít hơn 5%. Còn 95% còn lại thì sao?
· Kiểm tra bảo mật (18 tệp chỉ dành cho một BashTool duy nhất)
· Hệ thống quyền hạn (cho phép/từ chối/hỏi/chuyển tiếp Quyết định bậc hai)
· Quản lý ngữ cảnh (Nén ba lớp + Truy xuất bộ nhớ AI)
· Phục hồi lỗi (Bộ ngắt mạch, Exponential Backoff, Lưu trữ bản ghi)
· Điều phối đa Agent (Điều phối đàn + Giao tiếp hộp thư)
· Tương tác giao diện người dùng (140 React Components + IDE Bridge)
· Tối ưu hóa hiệu suất (Tính ổn định của Prompt Cache + Prefetch song song khi khởi động)
Nếu bạn đang xây dựng một sản phẩm AI Agent, đây là những vấn đề thực sự bạn cần giải quyết. Không phải là mô hình của bạn thông minh đến mức nào; mà là giàn giáo của bạn mạnh mẽ đến mức nào.
Không chỉ là tạo ra một prompt hay. Các prompt của Claude Code bao gồm:
· Lắp ráp động 7 lớp
· Mỗi công cụ đi kèm với một hướng dẫn sử dụng độc lập
· Các ranh giới bộ nhớ đệm được phân định chính xác
· Các phiên bản nội bộ và bên ngoài có các bộ hướng dẫn khác nhau
· Thứ tự công cụ được cố định để duy trì tính ổn định của bộ nhớ đệm
Đây là quản lý prompt kỹ thuật, không phải thủ công.
Mỗi phụ thuộc bên ngoài đều có một chính sách lỗi tương ứng:

42 công cụ = System Call Hệ thống quyền hạn = Quản lý quyền người dùng Hệ thống kỹ năng = App Store MCP Protocol = Device Driver Đàn Agent = Quản lý tiến trình Nén ngữ cảnh = Quản lý bộ nhớ Lưu trữ bản ghi = Hệ thống tệp
Đây không phải là "chatbot cộng với một vài công cụ"; đây là một hệ điều hành với LLM làm cốt lõi.
510.000 dòng code. 1903 tệp. 18 tệp bảo mật chỉ dành cho một công cụ Bash duy nhất.
9 lớp kiểm duyệt chỉ để AI giúp bạn gõ một lệnh một cách an toàn.
Đây là câu trả lời của Anthropic: Để làm cho AI thực sự hữu ích, bạn không thể nhốt nó trong lồng hoặc để nó chạy hoang dã. Bạn phải xây dựng một khung tin cậy hoàn chỉnh xung quanh nó.
Và cái giá của hệ thống tin cậy này là 510.000 dòng code.
Nội dung này chỉ được đưa ra nhằm mục đích cung cấp thông tin chung, không phải là lời khuyên về tài chính, đầu tư, pháp lý hoặc thuế. Mọi sự kiện, phần thưởng, ưu đãi trực tuyến hoặc thông tin liên quan được đề cập trong nội dung này không được xem là khuyến nghị, chào mời hoặc lời mời mua, bán, giao dịch hoặc thực hiện bất kỳ hoạt động nào khác liên quan đến tài sản crypto. Tài sản crypto có độ biến động cao và có thể dẫn đến thua lỗ.Tính khả dụng của các dịch vụ, sản phẩm và sự kiện liên quan của WEEX có thể khác nhau tùy theo khu vực. Bạn có trách nhiệm bảo đảm việc tham gia của mình tuân thủ các luật và quy định hiện hành tại địa phương.





























