Cuộc chiến framework Claude Code
(shmck.substack.com)- Các nhà phát triển hiện đang ở giai đoạn học cách cộng tác với AI, và giá trị của Claude được tối đa hóa khi nó được dùng như một framework chứ không chỉ là một chatbot
- Trong cộng đồng, nhiều thử nghiệm khác nhau về cách cấu hình và tận dụng Claude đang tiếp diễn, sôi nổi đến mức có thể gọi đây là Claude Code Framework Wars
- Từ đó, đang hình thành một xu hướng sử dụng Claude cho nhiều vai trò như quản lý dự án, kiến trúc sư, lập trình viên, reviewer
- Việc thiết kế framework đòi hỏi 8 quyết định chính, gồm quản lý công việc, cung cấp chỉ dẫn, cộng tác tác tử, vận hành phiên, truy cập công cụ, phát triển mã, chuyển giao, bảo toàn ngữ cảnh
- Bài học cốt lõi là AI không thay thế nhà phát triển mà trở thành đồng đội giúp nhân bội năng suất thông qua các quy tắc và vai trò được cấu trúc rõ ràng
Mở đầu
- Ý tưởng cốt lõi: xem Claude không phải là công cụ hội thoại đơn thuần mà là một framework, tạo ra kết quả có giá trị và có thể dự đoán được thông qua các quy tắc rõ ràng cùng luồng công việc cụ thể
- Nhà phát triển chuyển từ việc viết code sang các vai trò giá trị cao hơn như quản lý dự án, thiết kế, kiến trúc
- Framework Claude Code hoạt động bằng prompt có cấu trúc mà không cần viết code
- Claude Code Framework Wars: cộng đồng nhà phát triển đang thử nghiệm nhiều cách tiếp cận khác nhau để khai thác AI một cách hiệu quả
- Hàng chục dự án mã nguồn mở đang cạnh tranh bằng cách định nghĩa luồng công việc và cấu trúc vai trò
- Ví dụ: Agent OS, Claude-Flow
Các lựa chọn chính cần cân nhắc khi thiết kế framework
1. Vị trí quản lý công việc
- Cần xác định nguồn công việc mà Claude có thể tham chiếu
- Backlog Markdown: quản lý công việc bằng danh sách việc cần làm ở định dạng Markdown
- Ví dụ: Backlog.md, ReqText
- Văn bản có cấu trúc: chuyển đặc tả sản phẩm thành công việc
- Ví dụ: Agent OS
- Issue/ticket: lưu đặc tả trong GitHub Issues hoặc ticket Jira và liên kết với code review
- Ví dụ: ccpm
- Backlog Markdown: quản lý công việc bằng danh sách việc cần làm ở định dạng Markdown
- Cốt lõi: công việc phải được lưu ở nơi Claude có thể truy cập và theo dõi được
2. Cách cung cấp hướng dẫn cho Claude
- Thay vì prompt mơ hồ, cần cung cấp chỉ dẫn cho Claude bằng cấu trúc rõ ràng
- Thư viện lệnh: các lệnh slash được định nghĩa sẵn như
/create-tasks,/review - Tiêu chuẩn coding: nêu rõ tech stack và guideline lập trình
- Định nghĩa hoàn thành: mã hóa tiêu chí hoàn tất công việc
- Hook xác minh kích hoạt: bắt buộc linting và test với mọi thay đổi
- Claude reviewer: Claude đồng thời thực hiện cả phát triển lẫn review
- Thư viện lệnh: các lệnh slash được định nghĩa sẵn như
- Cốt lõi: các quy tắc rõ ràng và có thể lặp lại giúp nâng cao chất lượng công việc của Claude
3. Cấu trúc cộng tác giữa các tác tử
- Khi dùng nhiều tác tử Claude, cần điều phối bằng vai trò và kế hoạch
- Mô phỏng vai trò: AI đảm nhận các vai trò PM, kiến trúc sư, lập trình viên, tester
- Ví dụ: Agent OS
- Xử lý song song kiểu swarm: chạy đồng thời nhiều tác tử trong luồng có cấu trúc từ đặc tả → mã giả → code → test
- Ví dụ: Claude-Flow
- Artifact gốc theo repository: lưu công việc, log, bản ghi quyết định (ADR) trong codebase để duy trì bộ nhớ
- Ví dụ: Roo Commander
- Mô phỏng vai trò: AI đảm nhận các vai trò PM, kiến trúc sư, lập trình viên, tester
- Cốt lõi: điều phối giúp tránh xung đột giữa nhiều AI worker
4. Cách vận hành phiên
- Để tránh sự lộn xộn trong đầu ra của AI, cần thiết lập session làm môi trường làm việc
- Điều phối terminal: Claude kiểm soát lệnh, cửa sổ, log
- Ví dụ: Symphony, Claude-Squad
- Worktree song song: chạy nhiều nhánh song song bằng Git Worktrees
- Ví dụ: Crystal
- Container song song: chạy Claude trong các container độc lập để tránh xung đột
- Ví dụ: ClaudeBox
- Điều phối terminal: Claude kiểm soát lệnh, cửa sổ, log
- Cốt lõi: tối đa hóa năng suất bằng công việc song song mà không xảy ra xung đột
4. Cách thực thi phiên
- Để tránh sự lộn xộn trong đầu ra của AI, cần thiết lập session làm môi trường làm việc
- Điều phối terminal: Claude kiểm soát lệnh, cửa sổ, log
- Ví dụ: Symphony, Claude-Squad
- Worktree song song: chạy nhiều nhánh song song bằng Git Worktrees
- Ví dụ: Crystal
- Container song song: chạy Claude trong các container độc lập để tránh xung đột
- Ví dụ: ClaudeBox
- Điều phối terminal: Claude kiểm soát lệnh, cửa sổ, log
- Cốt lõi: tối đa hóa năng suất bằng công việc song song mà không xảy ra xung đột
5. Truy cập công cụ của Claude
- Cấu hình để Claude tận dụng kiến thức trên toàn bộ tech stack
- Tích hợp MCP: kết nối trình duyệt, cơ sở dữ liệu, test runner, framework tự động hóa UI
- Thư viện công cụ tùy chỉnh: xây dựng bằng shell script và câu lệnh
- Ví dụ: Symphony
- Trình truy cập cơ sở dữ liệu: công cụ truy cập cơ sở dữ liệu mạnh mẽ
- Ví dụ: Claudable with Supabase
- Hook test và xác minh: chạy test bằng Vitest, Jest... trước khi hoàn tất công việc
- Ví dụ: Agent OS
- Cốt lõi: tích hợp công cụ biến Claude từ công cụ tự động hoàn thành đơn thuần thành một thành viên chủ động của nhóm
6. Cách phát triển mã
- Claude đảm nhận nhiều vai trò khác nhau tùy nhu cầu
- Quản lý dự án (PM): chuyển đặc tả sản phẩm thành công việc và backlog
- Kiến trúc sư: thiết kế cấu trúc tổng thể, định nghĩa interface, đặt quy tắc trước khi coding
- Người triển khai: viết code theo test và tiêu chuẩn
- QA: rà soát vấn đề trong công việc
- Ví dụ: BMAD-code
- Reviewer: kiểm tra chất lượng PR, độ dễ đọc, rủi ro
- Cốt lõi: khai thác AI trên toàn bộ vòng đời phần mềm
7. Cách chuyển giao mã
- Xác định cách thức code đi vào repository
- Cốt lõi: chọn vòng lặp an toàn cho production hoặc scaffold dành cho nguyên mẫu
8. Cách bảo toàn ngữ cảnh
- Giải quyết vấn đề hay quên của Claude bằng bộ nhớ framework
- Tài liệu và nhật ký: liên tục cập nhật CLAUDE.md, ghi chú kiến trúc, nhật ký dự án
- Ví dụ: Claude Conductor
- Bộ nhớ bền vững và kiểm tra định kỳ: tóm tắt công việc gần đây, kiểm tra sức khỏe dự án, lưu quyết định
- Ví dụ: Claude-Flow
- Tài liệu và nhật ký: liên tục cập nhật CLAUDE.md, ghi chú kiến trúc, nhật ký dự án
- Cốt lõi: không có bộ nhớ thì AI sẽ lặp lại lỗi; có bộ nhớ thì tiến độ được tích lũy
Cách kết hợp
- Hãy coi các lựa chọn như một menu, không cần thiết lập tất cả cùng một lúc
- Thiết lập cho người mới bắt đầu: backlog Markdown + khác biệt ticket
- Nhóm có cấu trúc: đặc tả sản phẩm + tiêu chuẩn + mô phỏng vai trò
- Thiên về thử nghiệm: artifact trong repository + session song song
- Chế độ nguyên mẫu: app builder + scaffold tài liệu
Kết luận và hàm ý
- Bài học cốt lõi: Claude phát huy hiệu quả tốt nhất trong môi trường có cấu trúc
- Không phải thay thế vai trò của nhà phát triển, mà là giảm công việc boilerplate để tập trung vào định nghĩa đặc tả, review thiết kế và xác định kiến trúc
- Nếu công việc đi sai hướng, nó có thể nhanh chóng trật đường ray, vì vậy quản lý có cấu trúc là điều bắt buộc
- Dù vẫn còn ở giai đoạn đầu, các framework đang đưa AI đến gần hơn với tập hợp thành viên nhóm có thể quản lý được thay vì một chiếc hộp ma thuật
- Càng cung cấp nhiều cấu trúc, giá trị nhận lại càng lớn
- Thông qua các dự án mã nguồn mở, cộng đồng đang thử nghiệm nhiều framework khác nhau để tìm cách sử dụng AI hiệu quả
- Nhà phát triển có thể tận dụng Claude một cách có hệ thống để tập trung vào công việc giá trị cao và tích hợp AI như một thành viên trong nhóm nhằm tối đa hóa năng suất
1 bình luận
Ý kiến trên Hacker News
Tôi đã thử vài "framework" cho Claude Code, nhưng không rõ hiệu năng có thực sự cải thiện một cách khách quan hay không
Toàn là những nghi thức xoay quanh một quy trình phức tạp như thể công thức chính thống, nhưng không rõ rốt cuộc là vì điều gì
Tôi có cảm giác cách làm kiểu framework này không phù hợp với mục tiêu huấn luyện của mô hình
Trên thực tế, nó giống như ném cho mô hình những thông tin không cần thiết rồi cưỡng ép làm bẩn ngữ cảnh để khớp với "quy trình do tôi đặt ra"
Theo tôi, điều quan trọng là loại bỏ ô nhiễm ngữ cảnh, chỉ cung cấp đúng thông tin thật sự cần cho công việc, rồi cải thiện dần dần
Kiểu cộng tác truyền thống này sẽ phù hợp hơn nếu được thực hiện bên ngoài ngữ cảnh của agent vốn bị giới hạn ngữ cảnh
Bài này hoàn toàn không nhắc đến subagents nên tôi khá tò mò không biết nó được viết từ khi nào
Tôi giao cho subagent những việc như "chỉ lấy ra từ memory bank các thông tin liên quan đến công việc hiện tại" hay "chạy test rồi chỉ phản hồi lỗi và độ bao phủ"
Làm vậy giúp tôi tránh việc ngữ cảnh của agent chính nhanh chóng bị lấp đầy
https://docs.anthropic.com/en/docs/claude-code/sub-agents
Từ khi áp dụng một vài thực hành thiết thực như dev containers và worktrees, cuộc sống của tôi dễ thở hơn hẳn
Tôi cũng tự làm một "framework" shell script của riêng mình để quản lý file dự án và tạo worktree, và việc đó chỉ mất khoảng hai ngày
Không bị phụ thuộc vào một công cụ cụ thể nên rất thoải mái
Tôi đồng ý rằng ô nhiễm ngữ cảnh là một thực tế thật sự cần quan tâm
Đặc biệt, sau khi trải nghiệm việc định nghĩa MCP endpoint chiếm một phần đáng kể trong ngữ cảnh của tôi (khoảng 20 nghìn token), tôi luôn cân nhắc cả vấn đề ngữ cảnh khi chọn MCP
Tôi thấy nó giống tình huống của một quản lý dự án ngoài đời thực
Điều tôi muốn là dùng Claude để đưa bước hỏi trước những chỗ chưa rõ vào trong quá trình viết đề xuất
Nếu chỉ đưa cho một kỹ sư thực thụ yêu cầu và kết quả mong đợi, họ đương nhiên sẽ hỏi thêm trước khi thực hiện để chốt lại cho chắc
Tôi hy vọng Claude cũng có thể tự động hóa quy trình xác nhận này
Tôi thường xuyên gặp trường hợp nó gây ra nhiều sai sót vì hoàn toàn không xét đến các câu hỏi chưa được làm rõ
Khi áp dụng các framework kiểu này, tôi muốn biết trên thực tế mọi người cho nó mức tự chủ đến đâu, và dùng trong môi trường nào (greenfield/brownfield)
Tôi cũng muốn hỏi có ai từng gắn Claude Code vào phần mềm doanh nghiệp và tự tin với kết quả đầu ra hay chưa
Ở công ty tôi có thể tiếp cận Claude Code khá thoải mái, nhưng trên codebase của tôi, nếu có frontend UI hay Playwright thì kết quả rất thất thường
Tôi muốn biết các kinh nghiệm thực chiến như lượng code rác còn lại bao nhiêu, độ mệt khi cộng tác với đồng nghiệp ra sao, quy mô pull request, chi phí suy luận, cách quản lý khi chạy song song, v.v.
Tài liệu README đôi khi đầy các thuật ngữ đặc thù hệ thống, emoji, hay cách sắp xếp toolbox quá cá nhân hóa nên tạo cảm giác như tài liệu quảng bá để bán hàng
Rốt cuộc tôi nghĩ Anthropic hay nơi khác rồi cũng sẽ tích hợp những chức năng này vào CLI nội bộ của họ
Cá nhân tôi thì để mô hình reasoning xử lý toàn bộ từ spec 10 trang, lint/type check/formatter/hook nghiêm ngặt, checklist công việc đến cả red/green TDD, rồi chỉ cần bảo GPT-5 một câu “go” là kết quả cần thiết sẽ tự động được tạo ra
Chỉ cần có cùng bộ công cụ thì ai cũng có thể dễ dàng tạo hệ thống của riêng mình
Tôi dùng gói Max $200 nên chi phí suy luận cũng cố định
Đặc biệt trong tình huống greenfield như thêm tính năng mới, kết quả rất rõ rệt
Với những đợt refactor phức tạp hay thay đổi sâu trong hệ thống thì vẫn tiến triển khá tốt nếu có tài liệu thiết kế tốt, còn nơi tài liệu kém thì hiệu quả không cao
Ban đầu có khá nhiều "code chưa tốt" — các phần triển khai kém về style, khả năng tái sử dụng hoặc khả năng bảo trì — nhưng từ khi tôi tăng cường file CLAUDE.md và buộc persona developer luôn dùng subagent "elixir-code-reviewer", chất lượng code đã cải thiện rõ rệt
Nền tảng của chúng tôi là mã nguồn mở, nên hiện tôi chia sẻ cấu hình Claude command và subagent tại đây
https://github.com/Simon-Initiative/oli-torus/tree/master/.claude
Tôi cảm nhận rất rõ phong cách đặc trưng của LLM trong bài blog
Thông tin thì hữu ích, nhưng cảm giác học về AI từ chính AI cũng khá thú vị
Dạo này nhiều bài viết về AI đều cho cảm giác như vậy
Trên thực tế, trừ khi là công việc không mang tính chuyên môn, bạn vẫn phải trực tiếp giám sát Claude Code và can thiệp ngay nếu nó đi sai hướng
Về bảo mật, không thể cấp quá nhiều quyền hoặc bỏ qua việc kiểm tra nó thật sự đang chạy lệnh gì
Các "framework" hiện tại vẫn còn cả một chặng đường dài, và ở thời điểm này có lẽ thực tế nhất là xem nó như “một thực tập sinh junior phun code với tốc độ khủng khiếp”
Có thể tác giả chưa kiểm tra repo kỹ, hoặc đơn giản đây là kết quả của một đợt nghiên cứu hạn chế
Ví dụ, superClaude không phải là MCP server, còn metaGPT có vẻ không tương thích với Claude Code
Tôi luôn thắc mắc vì sao agent, giống như con người, lại không được tự quản lý ngữ cảnh của chính mình
Tôi không hiểu vì sao toàn bộ lịch sử công việc trước đó cứ phải được đưa vào đầy đủ mỗi lần
Nếu để agent tự quyết định nên giữ lại ngữ cảnh nào là hiệu quả, và tự học các ưu nhược điểm của việc quản lý ngữ cảnh, thì có lẽ khả năng xử lý từng tác vụ sẽ tốt hơn
Cuối cùng thì ở đây cũng đang lặp lại textbook "bitter lesson"
Mọi người tạo ra đủ loại "framework", nhưng rồi thế hệ mô hình tiếp theo lại khiến tất cả trở nên vô dụng
http://www.incompleteideas.net/IncIdeas/BitterLesson.html
Tôi khá ngạc nhiên vì BMAD-method không được nhắc đến
Theo trải nghiệm của tôi, BMAD-method là phần bổ trợ tốt nhất cho Claude Code
Tôi tò mò BMAD-method là gì
Tôi muốn biết nó có đơn thuần chỉ ở mức system prompt hay không, và điều gì khiến nó hữu ích đến vậy
https://github.com/bmad-code-org/BMAD-METHOD
Hệ thống BMAD có vẻ giống AgentOS được giới thiệu trong bài
Kiểu context engineering này đã phát huy hiệu quả với tôi, và tôi để chính Claude tạo command và agent rồi chỉnh lại cho phù hợp nhu cầu
Gần đây tôi cũng активно dùng cả json và markdown để chia sẻ context
taskmaster cũng vậy, nhưng không có trong danh sách
Quản lý context khiến tôi liên tưởng đến lập trình cấp thấp
Tôi nghĩ nó giống việc phải nạp chính xác các giá trị vào thanh ghi CPU để có được phép tính đúng
Khác ở chỗ, với từng tác vụ, chúng ta có ít quyền hơn nhiều trong việc thêm hoặc bỏ context
Tôi đã thử B-MAD Framework và hiệu quả khác biệt đến mức giờ gần như không thể làm việc nếu thiếu công cụ này
Tôi hy vọng sau này sẽ có nhiều framework kiểu này hơn nữa
Tôi muốn biết có ai thực sự dùng những framework này chưa
Chúng có mang lại kết quả thực chất hay chỉ là làn sóng hype chạy theo xu hướng
Kết quả thì đúng như dự đoán: đủ loại tính năng được tung ra mà không qua kiểm chứng, tài liệu tử tế cũng không có, chỉ toàn những Claude-isms
Thực tế thì chúng chỉ ở mức dùng được cho một vài dự án nhỏ mà người tạo ra quan tâm