Bỏ qua tới nội dung chính
Quay lại tin tức

43 giây so với 30 phút: Phân tích chuyên sâu về Chế độ lập kế hoạch của Claude Code

Medium Towards AI· Ishan Ghosh· 25/5/2026general

Đừng yêu cầu AI thực hiện mọi thứ cùng lúc. Bí quyết để có kết quả vượt trội không phải là một câu lệnh (prompt) tốt hơn mà là một quy trình tốt hơn. Tất cả chúng ta đều đã trải nghiệm "phép màu" này. Bạn nhìn chằm chằm vào con trỏ nhấp nháy, gõ một yêu cầu lớn – "Viết một hướng dẫn toàn diện dài 2.000 từ về Python decorators, hoàn chỉnh với các ví dụ mã, các trường hợp đặc biệt và một phần giới thiệu hài hước" – rồi nhấn Enter. Sau đó, bạn ngồi lại và xem Claude tạo ra một khối văn bản khổng lồ chỉ trong vài giây. Điều đó mang lại cảm giác vô cùng mạnh mẽ. Nhưng nếu bạn nhìn kỹ vào kết quả đó, những điểm yếu thường bắt đầu lộ rõ. Phần giới thiệu hơi sáo rỗng. Các ví dụ mã chung chung. Đến lúc

Đừng yêu cầu AI thực hiện mọi thứ cùng lúc. Bí quyết để có kết quả đầu ra chất lượng cao không nằm ở một câu lệnh tốt hơn mà là ở một quy trình tốt hơn. Tất cả chúng ta đều đã trải nghiệm "phép thuật" này. Bạn nhìn chằm chằm vào con trỏ nhấp nháy, gõ một yêu cầu lớn – “Viết một hướng dẫn toàn diện dài 2.000 từ về Python decorators, hoàn chỉnh với các ví dụ mã, các trường hợp biên và một phần giới thiệu hài hước” – rồi nhấn Enter. Sau đó, bạn ngồi lại và xem Claude tạo ra một khối văn bản trong vài giây. Điều đó mang lại cảm giác vô cùng mạnh mẽ. Nhưng nếu bạn nhìn kỹ vào kết quả đầu ra đó, những điểm yếu thường bắt đầu lộ rõ. Phần giới thiệu hơi sáo rỗng. Các ví dụ mã chung chung. Đến khi nó đề cập đến các trường hợp biên, logic bắt đầu trở nên lộn xộn. Khi tôi yêu cầu Claude Code “Xây dựng một SQS consumer cho client-messages-sqs”, tôi muốn xem chính xác chế độ “No-Plan” mặc định của nó so với chế độ “Plan” có chủ đích. Kết quả khác biệt đáng kể. Chế độ No-Plan mất chính xác 43 giây và cung cấp một triển khai Node.js hoạt động. Chế độ Plan mất 30 phút. Nhưng những gì nó tạo ra là một hệ thống Python sẵn sàng cho sản xuất, hoàn chỉnh với kiểm thử toàn diện, các tệp kê khai triển khai Docker/Kubernetes, xử lý tắt máy an toàn, ghi nhật ký có cấu trúc và 25 bài kiểm thử đạt. Thử nghiệm này không chỉ là so sánh giữa tốc độ và sự kỹ lưỡng; nó còn là về việc hiểu cách tiếp cận nào phù hợp với trường hợp sử dụng kiến trúc cụ thể của bạn. Hãy cùng đi sâu vào mã. Thiết lập Để đảm bảo một thử nghiệm công bằng, tôi đã chạy cùng một câu lệnh chính xác hai lần: Build a SQS consumer for client-messages-sqs Tôi đã sử dụng các thư mục trống, mới cho cả hai lần thử, không cung cấp thêm ngữ cảnh nào và đã ghi lại nhật ký phiên thực từ Claude Code v2.1.142. Chế độ No-Plan: Cuộc chạy nước rút 43 giây Ở chế độ No-Plan (cài đặt mặc định), Claude Code đã đi thẳng vào thực thi. Trong vòng 43 giây, nó đã tạo ra 5 tệp với tổng cộng khoảng 200 dòng mã. Cấu trúc dự án Nó cung cấp cho tôi một boilerplate Node.js phẳng, tiêu chuẩn: sqs-consumer-noplan/ ├── src/ │ └── index.js (81 dòng) ├── package.json ├── .env.example ├── .gitignore └── README.md (57 dòng) Triển khai Mã này hoàn toàn có chức năng, sử dụng AWS SDK v3 để triển khai long-polling. Dưới đây là giao diện của vòng lặp chính: // src/index.js async function pollMessages() { while (true) { try { const command = new ReceiveMessageCommand({ QueueUrl: QUEUE_URL, MaxNumberOfMessages: MAX_MESSAGES, WaitTimeSeconds: WAIT_TIME_SECONDS, VisibilityTimeout: VISIBILITY_TIMEOUT, }); const { Messages } = await sqsClient.send(command); Nếu (Messages && Messages.length > 0) { cho (const message của Messages) { await processMessage(message); await sqsClient.send(new DeleteMessageCommand({ QueueUrl: QUEUE_URL, ReceiptHandle: message.ReceiptHandle, })); } } catch (error) { console.error('Lỗi khi thăm dò tin nhắn:', error); await new Promise(resolve => setTimeout(resolve, 5000)); } } } Đánh giá: Hệ thống đã sẵn sàng chạy ngay lập tức với lệnh npm install && npm start. Tuy nhiên, hệ thống thiếu các bài kiểm tra, khả năng tắt máy an toàn (SIGTERM/SIGINT), ghi nhật ký có cấu trúc và an toàn kiểu dữ liệu. Xử lý lỗi chỉ là một khối try/catch cơ bản. Chế độ Lập kế hoạch: Lớp học chuyên sâu về kiến trúc trong 30 phút Khi tôi bật chế độ Lập kế hoạch, AI đã tạm dừng. Trước khi viết một dòng mã nào, AI đã khám phá thư mục trống và đặt các câu hỏi làm rõ về ngôn ngữ, hành vi của người dùng và môi trường thời gian chạy. Tôi đã chỉ định Python, yêu cầu chức năng ghi nhật ký/xác nhận và yêu cầu một quy trình chạy dài. Sau đó, AI đã tạo ra một kế hoạch triển khai dài 787 dòng bao gồm ngữ cảnh, cấu trúc dự án, thiết kế thành phần, chiến lược xử lý lỗi ba cấp, kiểm thử và triển khai. Sau khi được phê duyệt, AI mất 30 phút để tạo ra 20 tệp và khoảng 2.100 dòng mã. Cấu trúc dự án Lưu ý sự thay đổi ngay lập tức sang một kiến trúc mô-đun, sẵn sàng cho sản xuất: sqs-consumer-plan-mode-on/ ├── src/ │ └── sqs_consumer/ │ ├── __init__.py │ ├── config.py (84 dòng) │ ├── logger.py (76 dòng) │ ├── message_processor.py (100 dòng) │ ├── consumer.py (294 dòng) │ └── main.py (94 dòng) ├── tests/ │ ├── unit/ │ │ ├── test_config.py (133 dòng) │ │ └── test_consumer.py (234 dòng) │ └── conftest.py (34 dòng) ├── deployments/ │ ├── docker/ │ │ └── Dockerfile (43 dòng) │ └── k8s/ │ ├── deployment.yaml (138 dòng) │ └── secret.yaml (22 dòng) ├── pyproject.toml (78 dòng) └── README.md (501 dòng) Triển khai Mã kết quả được xây dựng để có khả năng phục hồi. Thay vì một tập lệnh phẳng, hệ thống bao gồm Pydantic để cấu hình an toàn kiểu dữ liệu, một giao diện MessageProcessor trừu tượng để mở rộng và xử lý tín hiệu thích hợp để tắt máy an toàn. Hãy xem cách hệ thống xử lý logic thử lại với thời gian chờ tăng dần: # src/sqs_consumer/consumer.py def _process_with_retry(self, message: Dict[str, Any]) -> bool: """Xử lý tin nhắn với thời gian chờ tăng dần.""" for attempt in range(1, self.config.max_retries + 1): try: result = self.processor.process(message) if result == ProcessingResult.SUCCESS: return True except Exception as e: if self._is_retryable_error(e): if attempt < self.config.max_retries: delay = self.config.retry_delay_seconds * (2 ** (attempt - 1)) logger.warning( "Lỗi có thể thử lại, sẽ thử lại", attempt=attempt, retry_delay_seconds=delay, ) time.sleep(delay) continue logger.error("Lỗi không thể thử lại", error=str(e)) return False logger.error("Đã vượt quá số lần thử lại tối đa") return False Đánh giá: Chế độ Lập kế hoạch đã cung cấp một giải pháp cấp doanh nghiệp. Giải pháp này bao gồm 25 bài kiểm tra đơn vị vượt qua (độ bao phủ 80%+), một bản dựng Docker đa giai đoạn, các tệp kê khai Kubernetes với khả năng tự động mở rộng và một tệp README khổng lồ dài 501 dòng với các bước khắc phục sự cố. Các con số: So sánh song song 30 phút có quá dài không? Lợi tức đầu tư (ROI) của việc lập kế hoạch Thật dễ dàng để nhìn vào sự khác biệt thời gian gấp 40 lần (43 giây so với 30 phút) và cho rằng chế độ Lập kế hoạch không hiệu quả. Nhưng sự khác biệt đó không phải là chi phí phát sinh – đó là một khoản đầu tư. Nếu bạn lấy tập lệnh Node.js không có kế hoạch và cố gắng đưa nó vào sản xuất, bạn sẽ dễ dàng mất hơn 9 giờ để viết thử nghiệm thủ công. s, gỡ lỗi

Nguồn tin: Medium Towards AI — Tác giả: Ishan Ghosh. Bản dịch tiếng Việt do AI thực hiện, có thể có sai sót.