31 điểm bởi GN⁺ 20 ngày trước | 1 bình luận | Chia sẻ qua WhatsApp
  • Đây là một dự án không chính thức phân tích trực quan toàn bộ cấu trúc và cơ chế hoạt động nội bộ của Claude Code, cho phép khám phá vòng lặp agenthệ thống hơn 50 công cụ từ xử lý đầu vào đến render phản hồi
  • Gồm 804 tệp, hơn 220 nghìn dòng mã, hơn 40 lệnh, hơn 22 công cụ, và là kết quả phân tích độc lập không liên quan đến Anthropic
  • Vòng lặp agent gồm 11 giai đoạn xử lý như đầu vào, thông điệp, hệ thống, API, gọi công cụ, render..., giúp lần theo quá trình Claude Code tạo phản hồi
  • Thông qua hệ thống công cụ và danh mục lệnh, dự án phân loại chi tiết các chức năng như thao tác tệp, thực thi, tìm kiếm, lập kế hoạch, quản lý hệ thống, đồng thời bao gồm nhiều tính năng riêng tư/thử nghiệm
  • Các tính năng ẩn như Buddy, Kairos, UltraPlan, Coordinator Mode hỗ trợ các hành vi mở rộng như lập kế hoạch dài hạn, tác vụ song song, điều khiển từ xa, phiên duy trì liên tục

Cấu trúc và cơ chế hoạt động nội bộ của Claude Code

  • Một dự án cho phép khám phá trực quan toàn bộ vòng lặp agent, hơn 50 công cụ, điều phối đa agentcác tính năng riêng tư của Claude Code, từ xử lý đầu vào đến render phản hồi
  • Gồm tổng cộng 804 tệp, hơn 220 nghìn dòng mã, hơn 40 lệnh, hơn 22 công cụ
  • Được phân tích dựa trên mã nguồn công khai và là dự án không chính thức không liên quan đến Anthropic
  • Thời điểm phân tích là 31 tháng 3 năm 2026, được zackautocracy tuyển chọn cùng DeepWiki
  • Vòng lặp agent

    • Khi người dùng nhập thông điệp, Claude Code sẽ đi qua 11 giai đoạn: đầu vào → thông điệp → lịch sử → hệ thống → API → token → công cụ → vòng lặp → render → hook → chờ
    • Đầu vào được xử lý thông qua component TextInput của Ink, còn trong chế độ không tương tác thì dùng stdin
    • Mỗi giai đoạn được tổ chức để có thể theo dõi chi tiết quá trình Claude Code nhận thông điệp và tạo phản hồi
  • Trình khám phá kiến trúc

    • Có thể bấm để duyệt toàn bộ cây mã nguồn, với các thành phần chính như sau
      • Tools & Commands: công cụ và lệnh tích hợp
      • Core Processing: logic xử lý cốt lõi
      • UI Layer: cấu trúc giao diện người dùng
      • Infrastructure: hạ tầng và môi trường thực thi
      • Support & Utilities: tiện ích hỗ trợ
      • Personality & UX: các yếu tố liên quan đến trải nghiệm người dùng

Hệ thống công cụ và lệnh

  • Hệ thống công cụ

    • Phân loại theo chức năng hơn 22 công cụ tích hợp mà Claude Code có thể gọi
    • Thao tác tệp

      • 6 công cụ gồm FileRead, FileEdit, FileWrite, Glob, Grep, NotebookEdit
    • Thực thi

      • 3 công cụ gồm Bash, PowerShell, REPL
    • Tìm kiếm và nhập dữ liệu

      • 4 công cụ gồm WebBrowser🔒, WebFetch, WebSearch, ToolSearch
    • Agent và tác vụ

      • 11 công cụ gồm Agent, SendMessage, TaskCreate, TaskList, TeamCreate
    • Lập kế hoạch

      • 5 công cụ gồm EnterPlanMode, ExitPlanMode, VerifyPlanExecution🔒
    • Liên quan đến MCP

      • 4 công cụ gồm ListMcpResources, ReadMcpResource, McpAuth
    • Hệ thống

      • 11 công cụ gồm AskUserQuestion, TodoWrite, Config, Workflow🔒, TerminalCapture🔒
    • Tính năng thử nghiệm

      • 8 công cụ gồm Sleep, SendUserMessage, LSP🔒, PushNotification🔒
  • Danh mục lệnh

    • Phân loại theo chức năng toàn bộ lệnh slash có thể dùng trong Claude Code
    • Thiết lập và cấu hình

      • 12 lệnh gồm /init, /login, /logout, /config, /permissions, /model, /theme
    • Quy trình làm việc hằng ngày

      • 24 lệnh gồm /compact, /memory, /context, /plan, /resume, /files, /summary
    • Code review và Git

      • 13 lệnh gồm /review, /commit, /diff, /branch, /issue, /autofix-pr🔒
    • Debug và chẩn đoán

      • 23 lệnh gồm /status, /stats, /usage, /think-back, /debug-tool-call, /heapdump
    • Tính năng nâng cao và thử nghiệm

      • 23 lệnh gồm /advisor, /remote-control🔒, /teleport, /plugin, /web-setup, /help, /exit

Các tính năng ẩn

  • Bao gồm nhiều tính năng riêng tư có trong mã nhưng chưa được triển khai
  • Buddy

    • Thú cưng ảo tồn tại trong terminal, với loài và độ hiếm được quyết định theo ID tài khoản
  • Kairos

    • Chế độ duy trì hỗ trợ hợp nhất ký ức giữa các phiên và hoạt động nền tự chủ
  • UltraPlan

    • Phiên lập kế hoạch dài hạn có thể chạy tối đa 30 phút trên mô hình cấp Opus
  • Coordinator Mode

    • Agent trưởng chia nhỏ công việc và tạo worker song song để thu thập kết quả
  • Bridge

    • Tính năng cho phép điều khiển Claude Code từ xa bằng điện thoại hoặc trình duyệt
  • Daemon Mode

    • Chạy phiên nền với tùy chọn --bg, nội bộ sử dụng tmux
  • UDS Inbox

    • Hỗ trợ giao tiếp giữa các phiên thông qua Unix domain socket
  • Auto-Dream

    • Giữa các phiên, AI sẽ ôn lại hoạt động trước đó và sắp xếp nội dung đã học

Thông tin dự án

  • dự án phân tích không chính thức, không có liên hệ trực tiếp với Anthropic
  • Được tạo dựa trên mã nguồn Claude Code đã công khai, và một số nội dung có thể không chính xác hoặc đã cũ
  • Phân tích được thực hiện dựa trên mã nguồn do @Fried_rice công khai
  • Được tạo bởi zackautocracy với sự hỗ trợ tuyển chọn AI từ DeepWiki

1 bình luận

 
Ý kiến trên Hacker News
  • Một codebase CLI tác nhân quy mô 500k dòng cho thấy việc điều khiển một LLM mang tính xác suất theo cách quyết định là địa ngục quản lý trạng thái phức tạp đến mức nào
    Nó hoạt động tốt trên các nền tảng đơn giản, nhưng rất dễ vỡ trong các kho mã doanh nghiệp lớn
    Nếu không có state machine bên ngoài, độ tin cậy phải được cưỡng ép bằng brute force, nên 90% mã bị lấp đầy bởi defensive programming — regex, dọn ngữ cảnh, vòng lặp retry, rollback trạng thái, v.v. để ngăn tác nhân bị trôi
    Phần trực quan hóa thì đẹp, nhưng vẫn tạo cảm giác đang cưỡi lên một khối mã hơn là có governance ở cấp hệ thống

    • Có rất nhiều bàn luận tiêu cực về code, nhưng lại gần như không có thảo luận về chính kiến trúc, điều này khá lạ
      Điểm cốt lõi là phía client chỉ cung cấp một bộ công cụ đơn giản (read file, output rich text, v.v.) và được thiết kế để server có thể đổi mới nhanh chóng
      Tôi nghĩ nước sốt bí mật nằm ở chính cấu trúc buộc đội server phải nghĩ xem “với API giới hạn này thì có thể khai thác sáng tạo đến đâu?”
    • Cũng từng có nhiều nghiên cứu công nghiệp nhằm kiểm soát con người theo kiểu quyết định luận, nhưng ngay cả như thế họ vẫn là một tập thể không thể kiểm soát
    • Toàn bộ nền kinh tế đã được xây trên kiểu công nghệ này
      Nếu nó không giữ được lời hứa thì đó không chỉ là mức “code không ổn định”, mà là vấn đề có thể làm rung chuyển toàn bộ hệ thống tài chính
    • Khó phân biệt đây là kết quả của defensive programming, hay là độ phức tạp tất yếu khi lập trình cùng AI
    • Tôi không đồng ý với nhận định “nó vỡ trong các kho mã lớn”
      Những nơi như Meta ngược lại còn là ví dụ dùng CC hiệu quả nhất
  • Tôi là tác giả. Chỉ vài giờ sau khi Claude Code bị rò rỉ, tôi đã làm trang trực quan hóa này
    Bình thường tôi dùng pi để xây coding agent của riêng mình, và muốn nghiên cứu cấu trúc của Anthropic (tool system, agent loop, v.v.)
    Vì 500 nghìn dòng mã quá khó khám phá nên tôi tạo bản đồ trực quan để dùng làm tài liệu tham khảo
    Tôi vẫn đang tiếp tục cập nhật trang dựa trên phản hồi, nên nếu còn phần nào thiếu thì rất mong được báo lại

    • Tôi cũng đang nối pi và cc với llama.cpp cục bộ để chạy trong môi trường hoàn toàn offline
      Tôi đã so sánh, phân tích thiết kế và cách triển khai của hai hệ thống, và thấy ấn tượng vì trang của tác giả có vẻ cũng được làm bằng pi
      Nếu có thể, tôi muốn xem thêm trực quan hóa pi vs cc
    • UX và tính năng của trang rất xuất sắc. Tôi tò mò liệu có kế hoạch công khai source code không
    • Tông và nhịp điệu của bài viết rất tốt
      Tuy vậy, sẽ hay hơn nếu thêm chú thích hoặc tooltip ở phần ‘định dạng message của Anthropic’ — vì thực chất đó cũng là định dạng của OpenAI
    • Tôi muốn biết thêm về cách tác giả thiết lập agent
  • Tôi tò mò liệu có tồn tại agent harness nào được viết mà không cần AI không
    Cấu trúc chỉ là một TUI đơn giản gọi model endpoint mà lại thành 500k dòng thì cảm giác hơi quá tay

    • LoC vốn đã là một chỉ số năng suất vô nghĩa
      Nó có thể nhằm mục đích tái sử dụng mã hoặc đóng gói thành thư viện, cũng có thể là hệ quả của áp lực thời gian kiểu startup
    • Tôi khuyên nên xem pi coding agent
    • TUI của CC không phải giao diện văn bản đơn giản mà là rendering dựa trên React
    • Chất lượng mã của Opencode khá ổn
    • CLI của Claude Code thực chất gần như là chuyển một headless browser thành văn bản, nên lúc debug rất bất tiện
      Vấn đề chuyển đổi ASCII → Unicode có thể làm hỏng pipe hoặc parser, và cũng khiến copy/paste khó khăn
      Chức năng lẽ ra phải đơn giản lại biến thành một cỗ máy Rube Goldberg
  • Có ý kiến thắc mắc: “500k dòng, chẳng phải chỉ ở mức REPL đơn giản sao?”

    • Các sản phẩm cạnh tranh cũng có quy mô tương tự
      Opencode 670k, Codex 720k, Gemini khoảng 570k dòng, nên kích thước của Claude Code không phải bất thường
    • Có thể đã tồn tại một động lực vô thức rằng vì LLM phức tạp nên công cụ cũng phải phức tạp
    • Thực tế thì có rất nhiều chỉnh sửa chắp vá kiểu vibe fix, và thiếu một thiết kế nhất quán
      Dù vậy, một số ý tưởng chi tiết như theo dõi cache TTL vẫn khá thú vị
    • Thay vì chỉ trích đơn giản kiểu “nó phình to vì JS/Electron”, quan điểm ở đây là tự đọc đi (RTFA)
    • Cũng có bàn luận rằng với loại chương trình này thì LoC hợp lý nên là bao nhiêu
  • Nếu là năm 2020 thì hẳn không ai tưởng tượng nổi việc phân tích trực quan mã bị rò rỉ như thế này

    • Cũng có ý kiến cho rằng công cụ phân tích tĩnh thời đó vẫn làm được
    • Tôi tò mò quy trình thực tế để tạo ra nó là gì, và AI đã được dùng như thế nào
  • Tôi cũng làm một trang tương tự từ 11 tiếng trước nhưng không được chú ý
    Dù vậy, vẫn vui khi thấy một cách triển khai khác
    Thử nghiệm của tôi ở đây

    • Thời nay ai cũng thử làm những thứ tương tự, nên ai được chú ý hơn cũng không có nhiều ý nghĩa
  • Điều vẫn khiến tôi ngạc nhiên là người ta có thể làm một trang đẹp như vậy chỉ trong hai ngày

    • Có lẽ nó được tạo bằng Claude Code
      Các trang do LLM tạo ra đôi khi trông rất chất lượng nhưng độ tin cậy của nội dung lại thấp
      Ví dụ như nzoilwatch.com — nhìn như do chuyên gia làm nhưng thực tế lại là dự án cá nhân
      Nếu công khai rõ ràng việc có dùng LLM hay không thì sẽ giảm bớt hiểu nhầm
    • Chỉ cần prompt đúng, Claude có thể tạo website trong vài phút
    • Tôi đã nói chuyện với các nhà phát triển công cụ tác nhân lớn, và họ bảo rằng họ dùng công cụ để làm ra công cụ
      Khi tôi nói UI mình làm còn sơ sài, họ đáp rằng họ tận dụng thư viện UI component nội bộ
      Thế là tôi cũng tự tạo một thư viện tên substrateui.dev, rồi dùng Claude Code để tái cấu trúc design system và thưởng thức chính quá trình học UI
    • Có người lại đánh giá độ dễ đọc và tương tác của trang này là không thoải mái
    • Dù vậy, thật mỉa mai khi trên HN người ta vẫn nói LLM làm giảm năng suất
  • Có thể xem source bị rò rỉ trong kho Codeberg

  • Việc Anthropic dùng công cụ của chính mình để phát triển sản phẩm của mình khá thú vị
    Nhưng với một dự án đã tồn tại 1 năm thì giờ cũng nên đến giai đoạn ổn định hơn rồi

    • Một dự án kéo dài 1 năm với nhiều lập trình viên tham gia thì khả năng vẫn còn nhiều bug là rất cao
    • Việc trì hoãn technical debt cũng có thể là một lựa chọn hợp lý
      Vì rốt cuộc LLM trong tương lai sẽ lo bảo trì, nên theo góc nhìn đó con người không nhất thiết phải tự tay dọn dẹp
    • Boris Cherny đã trực tiếp nhắc rằng họ “dùng CC để làm CC”
    • Thực tế, nếu nhìn vào các tweet họ tự hào chia sẻ thì có thể thấy mức tiêu thụ tài nguyên quá đà, như TUI API đòi 68GB RAM hay render văn bản mất 16ms
  • Có thể thêm dự án này vào Awesome Claude Code