Quản lý dự án với Claude Code: Từ issue đến review

Hãy vận hành công việc với Claude Code như công việc dự án được quản lý: biến một issue thành Task có phạm vi rõ ràng, giao cho một Agent, thực thi trong worktree tách biệt, và xem xét bằng chứng trước khi merge.

Aiden Flux

Aiden Flux

4 tháng 11 2026

Quản lý dự án với Claude Code: Từ issue đến review

Claude Code là một công cụ lập trình dạng agentic, có khả năng đọc codebase của bạn, chỉnh sửa file, chạy lệnh và làm việc trực tiếp với git. Với một lập trình viên đơn lẻ trên một terminal duy nhất, nó chẳng cần quản lý gì cả: bạn mô tả công việc, xem nó diễn ra rồi đánh giá diff. Vòng lặp đó rất nhanh, và không phần nào trong hướng dẫn này yêu cầu bạn từ bỏ nó.

Khoảng trống xuất hiện khi cả một nhóm phụ thuộc vào nó. Năm lập trình viên chạy các phiên Claude Code tạo ra kết quả thật, nhưng công việc lại nằm trong những terminal riêng tư. Không ai trả lời được những câu hỏi mà một nhóm luôn cần: ai yêu cầu thay đổi này, ai đang thực thi nó ngay lúc này, lần chạy đó thực sự đã làm gì, và ai đã nghiệm thu kết quả trước khi nó được merge. Khâu thực thi thì xuất sắc; nhưng hồ sơ về công việc thì không tồn tại.

Quản lý dự án với Claude Code là cách vận hành công việc đó như công việc dự án được theo dõi và có thể đánh giá: một issue trở thành một Task có phạm vi rõ ràng, Task được giao cho một Agent thực thi qua Claude Code, lần chạy diễn ra trong một worktree tách biệt trên máy do bạn kiểm soát, và kết quả quay về cho con người đánh giá. Hướng dẫn này đi hết vòng đó với Sharkly — công cụ không thay thế Claude Code. Nó bổ sung lớp task, ngữ cảnh, kiểm soát và đánh giá dùng chung quanh công cụ mà nhóm bạn đã dùng.

TL;DR

Để quản lý công việc Claude Code như công việc dự án, hãy viết issue thành một Task có phạm vi rõ ràng gồm mục tiêu, ranh giới và tiêu chí nghiệm thu; giao nó cho một Agent có Runtime là Claude Code; để lần chạy thực thi trên một Computer đã kết nối, trong một git worktree tách biệt, đồng thời tiến độ được truyền về liên tục; sau đó xem xét bằng chứng trên Task và nghiệm thu, yêu cầu chỉnh sửa, hoặc giao lại. Claude Code đảm nhận phần thực thi. Sharkly quản lý việc giao việc, ngữ cảnh, tiến độ, điểm tắc nghẽn, kết quả và khâu đánh giá của con người xoay quanh nó, nhờ vậy các lần chạy song song vẫn hiển thị với cả nhóm thay vì biến mất trong những terminal riêng tư. Các phiên terminal đơn lẻ vẫn là công cụ đúng cho những việc nhanh, cục bộ và ít rủi ro.

Một Task được quản lý bổ sung gì cho một phiên Claude Code thuần

Một phiên thuần và một Task được quản lý đều chạy cùng một Claude Code ở bên dưới. Khác biệt nằm ở mọi thứ xoay quanh lần chạy, và chúng gói gọn trong bốn năng lực mà terminal không thể cung cấp.

Khả năng hiển thị chung. Một Task giữ yêu cầu, trạng thái task, thảo luận, hồ sơ thực thi và đánh giá ở cùng một chỗ, thay vì phân tán chúng qua những prompt và phiên riêng tư. Một đồng đội có thể mở SH-214 và thấy đã yêu cầu điều gì, đang chạy gì, và kết quả trả về ra sao.

Trách nhiệm rõ ràng. Một Task tách trách nhiệm của con người khỏi phần thực thi của Agent. Một người chịu trách nhiệm về kết quả; Agent hoặc Crew là bên được giao thực thi. Cả hai đều được ghi lại, nên câu hỏi “ai phụ trách việc này” luôn có câu trả lời.

Bằng chứng để đánh giá. Mỗi lần chạy đều tạo ra một execution trace: khi nào bắt đầu, đã gọi những công cụ nào, vì sao bị xếp hàng chờ và kết thúc ra sao. Báo cáo của Agent được lưu lại dưới dạng comment liên kết với trace đó. Việc đánh giá không còn là “tin vào người đã ngồi xem terminal” mà trở thành “đọc hồ sơ”.

Chạy song song mà không xung đột. Mỗi Task có một thư mục tách biệt, và công việc gắn với repository có thể dùng một git worktree riêng cho mỗi lần chạy, nhờ đó nhiều Task có thể cùng lúc sửa một codebase. Cơ chế chạy song song này có hướng dẫn riêng: cách chạy nhiều agent Claude Code song song.

Một lưu ý thẳng thắn trước khi đi vào từng bước. Không phải phiên Claude Code nào cũng cần đến điều này. Hãy dùng một Agent Chat độc lập, hoặc một phiên terminal thông thường, để khám phá một câu hỏi, phác thảo kế hoạch hay thực hiện một thay đổi cục bộ nhanh. Chỉ dùng Task khi công việc cần có người chịu trách nhiệm, trạng thái, lịch sử thực thi hoặc đánh giá.

Bước 1: Biến issue thành một Task mà Agent có thể thực thi

Vòng công việc bắt đầu trước cả khi agent chạy. Claude Code xây dựng hướng tiếp cận từ những gì bạn đưa, nên một Task mơ hồ sẽ tạo ra một lần chạy đầy tự tin nhưng sai hướng.

Một tiêu đề Task hữu ích nêu rõ kết quả cần đạt chứ không chỉ chủ đề. Phần mô tả nên chứa mọi thứ mà một người mới, hay một Agent, cần để bắt tay vào việc: vì sao công việc này quan trọng; những gì thuộc và không thuộc phạm vi; các file, liên kết hoặc hành vi quan sát được có liên quan; những ràng buộc và quyết định đã đưa ra; và cách nghiệm thu khi hoàn thành.

Điểm cuối cùng chính là thứ mà cách làm đơn lẻ thường bỏ qua. Viết vào phần mô tả câu “hoàn thành nghĩa là logic retry có một test fail với hành vi cũ” sẽ cho người đánh giá một danh sách kiểm tra và cho Agent một mục tiêu. Hãy giữ mục tiêu, phạm vi và tiêu chí nghiệm thu ổn định trong phần mô tả; dùng comment cho việc thảo luận.

Trạng thái cũng quan trọng ở đây: một Task nằm trong Backlog được tạm gác lại, và việc giao Agent cho nó sẽ không kích hoạt thực thi. Đó là một tính năng. Bạn có thể định hình cả một loạt Task, giao hết chúng, rồi chủ động giải phóng từng cái bằng cách đưa nó ra khỏi Backlog khi đã sẵn sàng.

Nếu issue của bạn đã nằm ở nơi khác, bạn không cần xây lại quy trình. Các tích hợp của Sharkly gồm Jira, Slack và GitHub, nên những tracker hiện có vẫn giữ nguyên, trong khi khâu thực thi trở nên có thể giao việc và truy vết được. Kỷ luật viết công việc sao cho agent có thể thực thi là một phần của sự chuyển dịch lớn hơn mà chúng tôi đề cập trong agentic coding là gì.

Bước 2: Giao nó cho một Agent có Runtime là Claude Code

Trong Sharkly, bạn không giao việc trực tiếp cho Claude Code. Bạn giao việc cho một Agent, và Runtime của Agent đó là Claude Code. Sự phân biệt này rất đáng giá.

Một Agent là một cấu hình làm việc được lưu lại chứ không phải một prompt dùng một lần: chỉ dẫn, Runtime, Skills, repository, biến môi trường và các thiết lập chạy của nó định hình cách nó xử lý công việc. Một người cấu hình Agent “Backend Fixer” một lần, chia sẻ nó tới Space, và cả nhóm cùng giao việc cho một cấu hình đã được kiểm chứng thay vì mỗi lập trình viên tự ứng biến prompt. Chúng tôi phân tích đầy đủ khái niệm này trong Agent trong Sharkly, giải thích chi tiết.

Runtime là công cụ agent cụ thể đang có sẵn trên một Computer. Khi bạn kết nối một máy, một dịch vụ cục bộ nhỏ sẽ phát hiện các công cụ agent được hỗ trợ đã cài trên đó và báo cáo từng công cụ như một Runtime; bản cài Claude Code sẽ xuất hiện như một Runtime khả dụng ngay khi dịch vụ này nhìn thấy nó.

Ba điểm về cách sắp xếp này giúp bạn giữ đúng kỳ vọng:

  • Agent tuân theo model mặc định của Runtime. Sharkly không hiển thị hay cam kết tên model nào, và không có bộ chọn model hay điều khiển độ sâu suy nghĩ trên Agent. Muốn đổi model, hãy đổi cấu hình trong chính Claude Code.
  • Việc dùng model là tự mang theo (bring-your-own). Các lần chạy tiêu thụ gói đăng ký Claude hoặc API key đã được cấu hình trong Claude Code trên Computer đó. Hạn mức model phụ thuộc vào các công cụ lập trình AI, gói dịch vụ và tài khoản API mà nhóm bạn kết nối.
  • Việc giao việc là tường minh. Bạn mở phần điều khiển Assignee của Task và chọn Agent, giống như giao một ticket cho đồng nghiệp. Người chịu trách nhiệm vẫn được ghi lại riêng.

Với công việc nhỏ và đã rõ ràng, hãy giao Task trực tiếp cho một Agent. Chỉ dùng Crew — một nhóm gồm People và Agent có thể tái sử dụng, do một Agent leader điều phối — khi leader thực sự cần diễn giải mục tiêu và gom kết quả của các thành viên khác về một Task. Phiên bản từng bước của lần giao việc đầu tiên nằm trong cách giao nhiệm vụ đầu tiên cho một AI agent.

Bước 3: Thực thi trên một Computer, trong một worktree tách biệt

Khi Task rời Backlog và Agent đã sẵn sàng, Sharkly xếp lần chạy vào hàng đợi rồi gửi nó tới Computer đã chọn: laptop của bạn, một server từ xa, hoặc một container. Dịch vụ cục bộ trên máy đó nhận lần chạy, chuẩn bị thư mục task, khởi động Claude Code và truyền tiến độ về. Code, thông tin xác thực và bản cài Claude Code của bạn không bao giờ rời khỏi phần cứng mà bạn kiểm soát.

Việc tách bạch trách nhiệm cần được nói rõ: Agent định nghĩa cách xử lý công việc; Computer cung cấp máy chủ và tài nguyên cục bộ; Runtime thực hiện phiên agent thực tế; còn Task vẫn là hồ sơ chung.

Với công việc trên repository, chế độ working-directory được khuyến nghị là Temporary: mỗi Task có một thư mục tách biệt, và dịch vụ cục bộ có thể chuẩn bị một git worktree mới cho mỗi lần chạy từ dữ liệu repository đã cache. Hai Task cùng đụng đến một repository sẽ ghi vào hai thư mục khác nhau trên đĩa, đó là lý do các lần chạy song song không ghi đè lên nhau. Nguyên lý này được trình bày trong cách dùng git worktree với các AI coding agent. Chế độ Specified — một thư mục cục bộ đã cấu hình để các lần chạy dùng lại — tồn tại cho những ngoại lệ chính đáng: repository rất lớn, cache cục bộ tốn kém, hoặc các công cụ gắn chặt với một đường dẫn cố định.

Trong lúc Claude Code làm việc, lần chạy đi qua những trạng thái hiển thị rõ: queued, dispatched, running, rồi completed, failed hoặc canceled. Trạng thái lần chạy tách biệt với trạng thái Task, và sự tách biệt đó rất hữu ích: một Task có thể vẫn ở In Progress trong khi Agent đang làm việc, đang chờ con người trả lời, hoặc đang báo lỗi — và không ai phải liên tục kiểm tra terminal để biết đang ở tình huống nào.

Bước 4: Tiến độ và các điểm tắc nghẽn đều quay về Task

Mọi thứ nhóm cần thấy đều quay về một chỗ. Báo cáo của Agent được lưu dưới dạng comment liên kết với execution trace của nó. Activity hiển thị comment và các thay đổi của task trên một dòng thời gian. Executions lưu lịch sử chạy: nguồn kích hoạt, thời gian bắt đầu và kết thúc, các lệnh gọi công cụ và chi tiết lỗi.

Các điểm tắc nghẽn hiện ra thay vì âm thầm đình trệ. Agent có thể để Task ở trạng thái chờ con người trả lời hoặc đánh giá, và công việc bị tắc sẽ đổ về Inbox — hàng đợi cá nhân tách những Task cần bạn chú ý khỏi các cập nhật ưu tiên thấp hơn. Khác biệt mang tính cấu trúc: một phiên bị đình trệ chỉ chờ đến khi bạn tình cờ mở tab, còn một Task bị tắc sẽ báo cho người chịu trách nhiệm biết rằng nó đang bị tắc.

Tiếp tục công việc chỉ là một comment, không phải một phiên mới. Một comment hợp lệ trên Task vẫn đang được giao cho Agent sẽ khởi động một lần chạy tiếp theo với toàn bộ ngữ cảnh tích lũy của Task, và các comment liên tiếp nhanh sẽ được gộp lại để bạn không tạo ra những lần chạy đang chờ trùng lặp.

Bước 5: Con người đánh giá và nghiệm thu

Vòng công việc kết thúc đúng chỗ: ở một con người. Agent nghiên cứu, thực thi, kiểm thử và báo cáo. Con người định hướng, trao quyền và nghiệm thu kết quả.

Đánh giá trên một Task được quản lý là đọc bằng chứng, chứ không phải xem lại một phiên. Người đánh giá đối chiếu báo cáo của Agent với tiêu chí nghiệm thu đã viết ở Bước 1: nó có giữ đúng phạm vi không, có chạy những kiểm tra liên quan không, có đưa ra bằng chứng cho kết luận của mình không, có ghi lại điều còn chưa chắc chắn thay vì đoán bừa không. Execution trace luôn ở đó cho những lúc bản tóm tắt chưa đủ.

Sau đó việc nghiệm thu đi theo một trong ba hướng rõ ràng. Chấp nhận công việc và chuyển Task sang trạng thái hoàn thành. Yêu cầu chỉnh sửa bằng một comment tập trung, điều này khởi động một lần chạy tiếp theo mang theo đầy đủ ngữ cảnh. Hoặc xác định rằng lần chạy đã sai: hủy nó, đọc execution log, rồi thử lại hoặc giao việc cho một Agent khác.

Không điều nào ở đây thay thế việc review git của bạn. Claude Code tạo branch, ghi commit và mở pull request qua dịch vụ git hosting quen thuộc của bạn, và khâu review merge vẫn giữ nguyên chỗ cũ. Task bổ sung những gì trang PR không thể thấy: yêu cầu ban đầu, bằng chứng thực thi và kết quả nghiệm thu được ghi lại.

Phiên làm việc đơn lẻ vs Task được quản lý

Câu hỏi Phiên Claude Code đơn lẻ Task được quản lý trong Sharkly
Ai yêu cầu việc này? Trí nhớ của bạn Mô tả Task, kèm phạm vi và tiêu chí nghiệm thu
Ai đang làm việc này? Bất kỳ ai đang giữ terminal Người chịu trách nhiệm cùng một Agent là bên được giao thực thi
Ngay lúc này đang diễn ra điều gì? Ngồi xem terminal Trạng thái lần chạy trên Task, các board và Inbox
Lần chạy đó đã làm gì? Scrollback, cho đến khi tab đóng lại Execution trace và các comment được lưu lại
Hai lần chạy có thể dùng chung một repo không? Chỉ khi bạn tự tay thiết lập worktree Mặc định mỗi Task có một worktree tách biệt
Ai đã phê duyệt kết quả? Không ai ghi lại Đánh giá và nghiệm thu ngay trên Task
Cả nhóm có thể tái sử dụng thiết lập này không? Prompt chỉ nằm với một người Agent và Skills được chia sẻ trong Space

Cột bên trái không phải là cột sai. Đó là công cụ đúng cho việc khám phá và sửa nhanh. Cột bên phải phát huy giá trị khi công việc cần được nhìn thấy, đánh giá và chạy song song.

Từ một Task đến một dự án được quản lý

Mọi thứ ở trên đều mở rộng từ một Task lên cả một kế hoạch mà không đổi hình dạng. Các Task nhóm thành Projects khi nhiều Task cùng phục vụ một kết quả, và thành Sprints khi câu hỏi đặt ra là trong khung thời gian này sẽ ship được những gì. Views lưu lại những câu hỏi mà nhóm hỏi đi hỏi lại, ví dụ như các Task đang chờ đánh giá.

Đó chính là toàn bộ luận điểm của quy trình này. Đòn bẩy của cả nhóm không đến từ việc mở thêm nhiều cuộc trò chuyện với AI, mà từ việc chia sẻ vai trò, quy tắc, ngữ cảnh và quy trình làm việc. Vị trí của kỷ luật này trong bức tranh rộng lớn hơn là chủ đề của bài hướng dẫn trụ cột: AI agent project management là gì.

Hãy bắt đầu nhỏ hơn mức bạn nghĩ là cần thiết. Kết nối một Computer, xác nhận Claude Code xuất hiện như một Runtime khả dụng, tạo một Agent với vai trò hẹp, rồi giao cho nó một Task ít rủi ro với tiêu chí nghiệm thu thực sự. Đánh giá kết quả theo cách bạn đánh giá pull request đầu tiên của một đồng đội mới. Tài liệu Sharkly trình bày từng khái niệm sâu hơn.

Câu hỏi thường gặp

Sharkly có thay thế Claude Code không?

Không. Sharkly không thay thế Claude Code, Codex hay các công cụ thực thi khác. Claude Code đảm nhận phần thực thi: đọc codebase, chỉnh sửa file, chạy lệnh và làm việc với git. Sharkly bổ sung lớp cấp nhóm xoay quanh nó, quản lý việc giao việc, ngữ cảnh task, tiến độ, điểm tắc nghẽn, kết quả và khâu đánh giá của con người.

Tôi có cần một gói đăng ký model riêng để chạy Claude Code qua Sharkly không?

Không. Việc dùng model vẫn diễn ra qua các gói đăng ký hoặc API key đã được cấu hình trong Claude Code trên những Computer bạn kết nối. Hạn mức model phụ thuộc vào các công cụ lập trình AI, gói dịch vụ và tài khoản API mà nhóm bạn kết nối.

Tôi vẫn có thể dùng Claude Code trực tiếp trong terminal chứ?

Có, và bạn nên làm vậy. Một phiên trực tiếp hoặc một Agent Chat độc lập là công cụ đúng để khám phá một câu hỏi, phác thảo kế hoạch hay thực hiện một thay đổi cục bộ nhanh. Hãy chuyển sang Task khi công việc cần có người chịu trách nhiệm, trạng thái, lịch sử thực thi hoặc đánh giá.

Điều gì xảy ra khi một lần chạy thất bại?

Lần chạy được đánh dấu failed trên Task, và execution log ghi lại tiêu đề cùng các chi tiết kỹ thuật gốc từ dịch vụ model. Hướng dẫn xử lý sự cố của Sharkly ánh xạ những trường hợp phổ biến — như giới hạn tốc độ, hết hạn mức và lỗi xác thực — sang các bước tiếp theo, đồng thời liên kết tới tài liệu lỗi của chính Claude Code. Hãy thử lại sau khi khắc phục nguyên nhân, hoặc giao Task cho một Agent khác.

Nhiều Task Claude Code có thể chạy trên cùng một repository cùng lúc không?

Có. Ở chế độ working-directory Temporary, mỗi Task chạy trong thư mục tách biệt của riêng nó, và các lần chạy gắn với repository có thể nhận một git worktree mới, nhờ đó các Task chạy đồng thời không ghi vào cùng một checkout dùng chung. Giới hạn đồng thời trên Agent và Computer sẽ khống chế số lần chạy cùng lúc.

Khám phá thêm

Gemini Omni 1.2 Flash API: Biến việc tạo video thành tác vụ mà AI Agent có thể thực thi

Gemini Omni 1.2 Flash API: Biến việc tạo video thành tác vụ mà AI Agent có thể thực thi

Vận hành Gemini Omni 1.2 Flash API dưới dạng tác vụ agent được theo dõi: cấu trúc lệnh gọi, bản brief, tài nguyên tham chiếu, chỉnh sửa qua nhiều lượt và khâu kiểm duyệt của con người trước khi phát hành clip.

6 tháng 11 2026

Cách tạo chuyển động cho linh vật thương hiệu bằng ChatGPT Images 2.6

Cách tạo chuyển động cho linh vật thương hiệu bằng ChatGPT Images 2.6

Tạo chuyển động cho linh vật thương hiệu với ChatGPT Images 2.6: prompt tạo sprite sheet đã qua thử nghiệm, cách căn chỉnh khung hình để tạo vòng lặp mượt mà, và quy trình đánh giá cùng đội ngũ.

6 tháng 11 2026

Khi mô hình AI giá rẻ lại tốn kém hơn: Cách tính chi phí Agent trên mỗi thay đổi được chấp thuận

Khi mô hình AI giá rẻ lại tốn kém hơn: Cách tính chi phí Agent trên mỗi thay đổi được chấp thuận

Với mức giá 0,10 USD cho mỗi triệu token, GPT-6 Luna giúp giảm chi phí cho từng lần thử, qua đó gia tăng số lượt thử nghiệm, hiệu suất đầu ra và các quyết định trên mỗi thay đổi được triển khai. Hãy định giá lượt chạy của agent theo từng thay đổi được chấp thuận, chứ không phải theo token.

5 tháng 11 2026