Sat Jun 27 2026 20:00:00 GMT-0400 (Eastern Daylight Time)
تلوين الصور بالذكاء الاصطناعي: كيف يعمل وما هي حدوده الحقيقية
كيف يحول تلوين الصور بالذكاء الاصطناعي الصور الأبيض والأسود إلى ألوان، وما يمكنه استعادتها أو عدم قدرته على ذلك (الألوان تخمين وليست استعادة)، والأدوات المستخدمة وأماكن فشله.

Cập nhật lần cuối: June 28, 2026
Một subagent Claude Code là một phiên Claude riêng biệt mà agent chính khởi chạy cho một nhiệm vụ tập trung, sau đó tích hợp kết quả vào công việc của bạn. Tuần trước, tôi đã triển khai ba subagent song song để tách một lần refactor thành schema, API và các bài kiểm thử (tests), và chúng hoàn thành nhanh hơn so với việc một phiên dài duy nhất lên kế hoạch. Bài viết này sẽ đề cập đến cách định nghĩa và triển khai subagents, các mẫu điều phối (orchestration patterns) tôi sử dụng để mô phỏng một nhóm nhỏ, và ranh giới thực tế nơi subagents tốn kém hơn mức chúng tiết kiệm được.
Trả lời nhanh: subagent Claude Code là gì?
Subagent là một instance của Claude với cửa sổ context riêng, system prompt riêng, và bộ công cụ (tool set) hẹp. Phiên chính không bị mất ngữ cảnh khi chạy subagent, bởi vì subagent hoạt động trong môi trường cô lập và chỉ trả về bản tóm tắt. Hãy nghĩ về nó như việc giao một nhiệm vụ cho đồng nghiệp mà người đó sẽ không bao giờ làm gián đoạn màn hình của bạn.
Cơ chế chính thức rất đơn giản. Bạn thả một file markdown vào .claude/agents/ với YAML frontmatter, và Claude Code có thể gọi nó thông qua Task tool khi một tác vụ khớp với mô tả của nó. Tài liệu về sub-agents là nguồn chân lý cho các trường (fields), và kho lưu trữ Claude Code theo dõi các thay đổi đối với định dạng này.
Một định nghĩa subagent tối thiểu trông như thế này:
---
name: migration-writer
description: Writes and runs database migrations for this repo. Use for schema changes.
tools: Read, Edit, Bash
model: inherit
---
You are a migration specialist. Always check existing migrations first, never drop columns without a confirmation step, and run the migration against the local DB before reporting done.
Khi file đó tồn tại, tôi yêu cầu agent chính "sử dụng subagent migration-writer để thêm bảng orders" và nó sẽ triển khai một worker có phạm vi giới hạn thay vì xử lý lộn xộn ngay trong luồng công việc. Dòng model: inherit giữ chi phí và chất lượng ngang bằng với phiên chính; gán một model rẻ hơn như haiku cho subagent nặng về đọc là một đòn bẩy thực sự khi bạn chạy nhiều subagents.
Khi nào nên dùng subagents thay vì một phiên duy nhất?
Hãy sử dụng subagent khi nhiệm vụ chạy lâu, nặng ngữ cảnh (context-heavy), hoặc cần bộ công cụ mà bạn không muốn có trong phiên chính. Hãy giữ nó trong một phiên khi công việc ngắn, gắn kết chặt chẽ với những gì bạn đang làm, hoặc cần trao đổi qua lại liên tục với bạn.
Tôi sử dụng subagents cho các công việc nếu không sẽ làm ô nhiễm ngữ cảnh chính của tôi bằng log, các lần đọc lớn, hoặc thử và sai. Một bản kiểm toán toàn bộ codebase mà greps 200 files là một ứng cử viên hoàn hảo, bởi vì subagent sẽ đọc tất cả và trả về bản tóm tắt hai đoạn văn trong khi phiên chính của tôi vẫn sạch sẽ.
| Factor | Single session | Subagent |
|---|---|---|
| Short, interactive task | Best | Overkill |
| Large read or search that bloats context | Worse | Best |
| Needs a restricted tool set | Hard | Easy (per-agent tools) |
| Tightly coupled to current edits | Best | Worse (returns a summary) |
| Repeatable workflow you run often | Okay | Best (one definition, reused) |
Nếu bạn mới làm quen với agent này, Hướng dẫn tối ưu Claude Code sẽ bao quát các kiến thức cơ bản trước khi bạn thêm subagents lên trên.
Cách triển khai subagents trong Claude Code?
Việc triển khai xảy ra theo hai cách. Agent chính có thể tự gọi Task tool khi một tác vụ phù hợp với mô tả của subagent, hoặc bạn có thể chỉ định tên nó rõ ràng trong prompt của mình. Tôi thích việc đặt tên hơn, bởi vì việc dispatch ngầm đôi khi bỏ qua agent mà tôi muốn sử dụng.
Một vài mẫu tôi thường xuyên chạy:
- "Sử dụng subagent code-reviewer trên diff trong nhánh này, sau đó áp dụng các gợi ý của nó."
- "Triển khai migration-writer để thêm cột
users.email_verified, và triển khai test-writer để bao phủ nó. Chạy cả hai." - "Khởi động subagent api-docs đối với
src/routes/và chỉ trả về skeleton OpenAPI."
Subagent chạy trong ngữ cảnh riêng của nó, vì vậy nó không thể thấy cuộc trò chuyện đang diễn ra của bạn trừ khi bạn truyền chi tiết đó vào prompt. Sự cô lập này chính là điểm mấu chốt. Khi nó hoàn thành, bạn nhận được một kết quả, chứ không phải một luồng nhiễu trung gian.

Các mẫu tôi sử dụng cho quy trình làm việc kiểu nhóm
Bí quyết là sao chép cách một đội thực tế chia công việc, sau đó ánh xạ mỗi vai trò sang một subagent. Dưới đây là các mẫu mà tôi thường xuyên quay lại.
Nghiên cứu, rồi phân tán. Tôi triển khai một subagent để thu thập ngữ cảnh, đọc bản tóm tắt của nó, sau đó triển khai nhiều subagents thực hiện trên một giao diện chung. Điều này mô phỏng việc trưởng nhóm kỹ thuật xác định phạm vi công việc trước khi giao các ticket.
Xây dựng dựa trên hợp đồng (contract). Định nghĩa API hoặc props component trước, sau đó chạy một subagent backend và một subagent frontend song song dựa trên hợp đồng đó. Cả hai đều không chặn nhau, và xung đột hiếm vì chúng chạm vào các file khác nhau.
Xem xét như một vai trò riêng biệt. Tôi giữ một subagent code-reviewer chỉ với các công cụ đọc (read tools). Sau bất kỳ thay đổi nào không tầm thường, tôi chạy nó trên diff. Việc giới hạn công cụ của nó có nghĩa là nó thực sự không thể chỉnh sửa, điều này giúp việc đánh giá được trung thực.
Đối với các quy trình làm việc lặp lại như thế này, hãy kết hợp subagents với Claude Code skills: một skill mã hóa các bước, và subagents thực hiện công việc cô lập. Và nếu một subagent cần dữ liệu bên ngoài, hãy nối nó tới một máy chủ MCP theo cách mà Hướng dẫn tích hợp MCP Claude Code mô tả.
Ví dụ minh họa: orders và payments
Tháng trước tôi đã tách tính năng orders-plus-payments thành ba subagents dựa trên một contract kiểu (typed contract). Contract là một interface TypeScript duy nhất cho một Order với status, totalCents, và paymentId. Tôi đã triển khai: một subagent backend để thực hiện việc tạo order và các chuyển đổi trạng thái; một subagent payments để nối cuộc gọi Stripe và lưu trữ paymentId; và một subagent test để bao phủ cả trường hợp thành công (happy path) và trường hợp biên hoàn tiền (refund edge case). Cả ba đều chạm vào các file khác nhau, vì vậy việc merge chỉ là ba thao tác copy-paste sạch sẽ thay vì một phiên giải quyết xung đột. Toàn bộ quá trình chạy mất 14 phút; cùng công việc trong một phiên tuần tự mất 41 phút tuần trước, bởi vì ngữ cảnh duy nhất liên tục tải lại tài liệu Stripe.
Làm thế nào để điều phối công việc song song mà không bị mất ngữ cảnh?
Phiên chính là người điều phối của bạn. Công việc của nó là chia nhỏ công việc, giao các prompt có phạm vi giới hạn, và ghép các kết quả lại với nhau. Hãy giữ cho người điều phối gọn nhẹ và để subagents đảm nhận các lần đọc nặng.
Một lần chạy song song điển hình đối với tôi trông như thế này:
- Viết contract và ranh giới file trong phiên chính.
- Triển khai hai đến bốn subagents, mỗi agent có một lát cắt (slice) và điều kiện thành công rõ ràng.
- Đọc từng bản tóm tắt khi nó trả về, không phải giữa chừng.
- Merge trong phiên chính, tự giải quyết các mối nối.
- Chạy subagent test cuối cùng trên kết quả tích hợp.
Tính song song chỉ mang lại lợi ích khi các lát cắt thực sự độc lập. Nếu hai subagents đều chỉnh sửa schema.prisma, bạn chưa chia nhỏ công việc, bạn đã tạo ra một vấn đề merge. Hãy vẽ ranh giới tại các file và contract, sau đó áp dụng chúng trong prompt.

Khi nào subagents gây thêm chi phí vận hành hơn mức tiết kiệm?
Subagents thêm độ trễ (latency), tokens, và chi phí điều phối. Việc chuyển giao bản tóm tắt làm mất chi tiết, vì vậy bất cứ thứ gì cần sự liên tục sâu sắc đều là một lựa chọn kém phù hợp. Hãy trung thực về sự đánh đổi này trước khi bạn tìm đến chúng.
| Overhead source | When it bites | My mitigation |
|---|---|---|
| Extra context per subagent | Many small subagents | Batch related work into one |
| Summary loses detail | Tightly coupled edits | Keep coupled work in one session |
| Dispatch latency | Trivial five-minute tasks | Just do it inline |
| Repeated setup prompts | Same prompt every time | Encode it in a skill |
| Failed handoffs | Vague success criteria | State exactly what "done" means |
Tôi đã chạy một bài kiểm tra hiệu suất trên một nhánh tính năng: một subagent cho mỗi microservice so với một phiên duy nhất đi qua chúng theo thứ tự. Đối với năm dịch vụ ít liên kết, song song thắng hơn khoảng 40 phần trăm về thời gian thực tế (wall-clock time). Đối với ba dịch vụ chia sẻ mô hình dữ liệu, phiên đơn lẻ nhanh hơn, bởi vì việc merge và giải thích lại đã tiêu tốn lợi ích của tính song song.
Bài học rút ra: tính song song tưởng thưởng cho sự độc lập và trừng phạt sự liên kết (coupling). Nếu các lát cắt của bạn chia sẻ trạng thái, đừng làm chúng song song.
Những sai lầm phổ biến là gì?
- Quá nhiều subagents. Tôi giới hạn một lần chạy ở mức ba đến năm. Vượt quá đó, chi phí điều phối vượt qua lợi ích song song.
- Prompt mơ hồ. "Sửa auth" sẽ thất bại. "Thêm endpoint làm mới JWT tại
/auth/refresh, trả về{ token }, kèm theo bài kiểm thử" thành công. - Không có tiêu chí thành công. Nêu rõ "hoàn thành" nghĩa là gì. "Migration được áp dụng cục bộ và đã kiểm tra rollback" tốt hơn "xử lý schema".
- Bộ công cụ sai. Chỉ cho reviewer các công cụ đọc. Cho agent triển khai chính xác các lệnh nó cần, không cái gì rộng hơn.
- Bỏ qua lỗi. Nếu một subagent trả về lỗi, hãy đọc nó. Thử lại mù quáng sẽ đốt tokens và che giấu một vấn đề thực sự.
- Bỏ qua bước merge. Subagents trả về kết quả; bạn vẫn phải tự mình chịu trách nhiệm tích hợp. Hãy dành thời gian thực tế cho việc này.
Sai lầm tốn kém nhất là coi subagents như tính song song miễn phí cho bất cứ điều gì. Chúng là các worker có phạm vi giới hạn đằng sau ranh giới bản tóm tắt, và ranh giới đó có chi phí.

Tóm tắt
Subagents biến Claude Code thành thứ gì đó giống như một đội nhóm nhỏ: một người điều phối gọn nhẹ triển khai các worker có phạm vi giới hạn, mỗi worker mang ngữ cảnh riêng và báo cáo lại kết quả. Hãy định nghĩa chúng trong .claude/agents/, triển khai bằng Task tool, và giữ phiên chính của bạn sạch sẽ bằng cách đẩy các lần đọc nặng và các vai trò lặp đi lặp lại vào subagents.
Sử dụng chúng khi công việc dài, nặng ngữ cảnh, hoặc cần bộ công cụ bị hạn chế. Bỏ qua chúng cho các tác vụ ngắn, gắn kết, tương tác nơi bản tóm tắt làm mất quá nhiều chi tiết. Hãy vẽ ranh giới tại các file và contract, giới hạn một lần chạy ở vài agent, và luôn dành thời gian dự trù để tự mình merge các kết quả.
Một lưu ý thực tế: subagents nhân bội thông lượng (throughput), chứ không phải phán đoán (judgment). Chúng sẽ vui vẻ xây dựng sai thứ gì đó song song qua bốn ngữ cảnh cô lập. Công việc điều phối, định nghĩa contract, và đánh giá cuối cùng vẫn thuộc về bạn, vì vậy đòn bẩy chỉ thể hiện khi các lát cắt thực sự độc lập và tiêu chí thành công là chính xác. Nếu bạn muốn tìm hiểu sâu hơn về giao thức cung cấp sức mạnh cho nhiều kết nối công cụ này, MCP explainer là tài liệu đọc tiếp theo tốt, và Claude Code docs bao gồm các cài đặt mà tôi chưa nhắc lại ở đây.
Credit hình ảnh
- Một nhóm nhà phát triển làm việc cùng nhau bằng máy tính trong một văn phòng công nghệ hiện đại — photo bởi Rebrand Cities trên Pexels
- Mã lập trình đầy màu sắc trên màn hình máy tính — photo bởi inna mykytas trên Pexels
- Một nhà phát triển viết mã trên máy tính xách tay trước nhiều màn hình — photo bởi Christina Morillo trên Pexels
- Hai lập trình viên tập trung viết mã cạnh nhau trong một văn phòng hiện đại — photo bởi Rebrand Cities trên Pexels
Sử dụng các công cụ miễn phí trong khi bạn theo dõi hướng dẫn.
Đọc tiếp

Wed Mar 25 2026 20:00:00 GMT-0400 (Eastern Daylight Time)
Công cụ Thay đổi Kích thước Ảnh Hàng loạt: Giảm kích thước hàng trăm ảnh cùng lúc (Miễn phí)
Giảm kích thước hàng trăm ảnh theo lô miễn phí bằng công cụ trình duyệt, ImageMagick, XnConvert hoặc script Python. Tận hưởng tiết kiệm dung lượng thực tế và quy trình xử lý hàng loạt an toàn.

Wed Mar 18 2026 20:00:00 GMT-0400 (Eastern Daylight Time)
Bộ Chuyển Đổi WebP: Hướng Dẫn Chuyển Ảnh Sang WebP (Kích Thước Thực)
Chuyển đổi ảnh JPEG và PNG sang định dạng WebP để tối ưu hóa kích thước tệp web. Bài viết bao gồm các kích thước đo thực tế, lệnh cwebp, phương pháp sử dụng Python/trình duyệt, cùng chiến lược dự phòng (fallback) cho JPEG/PNG.

Wed Mar 11 2026 20:00:00 GMT-0400 (Eastern Daylight Time)
Real-ESRGAN AI Upscaling: Cách thức hoạt động và khi nào nên sử dụng nó
Bài viết này giải thích Real-ESRGAN là gì, cách thức hoạt động của super-resolution dựa trên GAN, những điểm mạnh (như upscaling 4x ảnh và tác phẩm nghệ thuật), cũng như các giới hạn khi nó thất bại, kèm theo lệnh sử dụng chi tiết.