Agentic engineering · cho dự án nhiều milestone · v2.8.0
Một team outsource bằng AI agent.
Vận hành đúng quy trình, liên tục 24/7, cho những dự án lớn.
Astragentic đưa bạn vào vị trí khách hàng của một đơn vị phát triển phần mềm hoàn chỉnh: một người đại diện để trao đổi, một team agent với role rõ ràng để thi công, và một issue tracker làm trung tâm để mọi việc đều có dấu vết. Bạn giữ quyền quyết định và toàn quyền giám sát; phần thực thi thuộc về team.
AI outsource team
Công việc của mỗi agent.
Mỗi thành viên trong team là một agent: một session Claude Code, Codex hoặc OpenCode mở từ CLI với một role cố định. Nó nhận việc, làm xong thì trả kết quả, và có thể nhân bản: nhiều Builder cùng thi công, nhiều QA cùng kiểm, như một team thật.
Mỗi role có một tên riêng: Thomas, Shaper, Builder, Rin, QA. Tên riêng giữ agent không trôi khỏi role của mình trong context dài, và là địa chỉ để gửi việc, đọc pane, gắn đúng skill.
- Thomasngười đại diệnSession thường trực, sống qua nhiều ticket.Giữ tracker, chạy frontier query, claim, dispatch và merge. Là agent duy nhất còn ở đó khi Builder đã đóng session, nên mọi trạng thái bền đều thuộc Thomas. Hỏi lại bạn ở những quyết định quan trọng.claude · claude-opus-5 · effort medium
- Shaperđịnh hìnhMột session liền mạch từ đầu tới cuối, không compact.Chạy grill-with-docs, to-spec, to-tickets theo thứ tự, dừng sau spec để bạn duyệt.claude · claude-opus-5 · effort high
- Builderthi côngMột session mỗi ticket, trong worktree riêng, là người viết duy nhất ở đó.Implement, code review hai trục, simplify, rồi lượt review chéo vendor. Commit ở mỗi ranh giới, không chỉ lúc handback.claude · claude-sonnet-5 · effort medium
- RingateMột session mỗi milestone, worktree tách riêng tại đúng SHA được review.Chỉ đọc và viết đúng một file: báo cáo gate. Một vòng mỗi milestone, không lặp.claude · claude-opus-4-8 · effort medium
- QAnghiệm thuMột session mỗi lượt walk, với sản phẩm đang chạy thật trong worktree riêng.Dùng sản phẩm như người dùng, không đọc diff. Mặc định chỉ đọc, mọi thao tác ghi cần bạn cho phép từng lần.claude · claude-sonnet-5 · effort low
Model và effort theo role
Agent của mỗi role chạy trên model và effort hợp với việc của role đó. Thomas và Shaper suy luận dài nên dùng Opus, Shaper ở effort high vì grill và spec là chỗ tốn suy nghĩ nhất; Builder và QA thi công và kiểm thử nên dùng Sonnet cho nhanh và rẻ; Rin gate trên Opus ở effort medium.
Bảng này đọc thẳng từ .agents/orchestrator.md trong repo của bạn. Đổi một dòng là đổi runtime, model hay effort của role đó ở lần dispatch kế tiếp, không cần sửa contract của role.
harness/.agents/orchestrator.md
## Active assignments| Role | Runtime | Model | Effort ||---|---|---|---|
| thomas | claude | claude-opus-5 | medium || shaper | claude | claude-opus-5 | high || builder | claude | claude-sonnet-5 | medium || rin | claude | claude-opus-4-8 | medium || qa | claude | claude-sonnet-5 | low |
Thomas quản trị cả team: nhận yêu cầu từ bạn, gọi Shaper khi cần spec, dispatch ticket cho Builder, gọi Rin gate ở mỗi milestone và QA walk trước khi merge, rồi báo lại bạn. Mỗi mũi tên trên hình là một lượt trao đổi đi và về.
Cách bạn làm việc với AI team
Mô hình vận hành.
Bạn là khách hàng, trao đổi với Thomas là người đại diện của team. Team làm việc quanh issue tracker, và mọi việc đều đi qua đó để bạn đọc lại được bất cứ lúc nào.
Hằng ngày, bạn chỉ làm việc với Thomas
- Thomas điều phối team.
- Thomas mở session Shaper khi cần shape, dispatch ticket cho Builder theo capacity, gọi Rin gate ở mỗi milestone và QA walk trước khi merge. Bạn không phải tự gọi từng agent.
- Thomas đọc báo cáo thay bạn.
- Handback, receipt, kết luận gate, walk report đều về Thomas trước. Thomas đọc, đối chiếu với ticket, rồi kể lại cho bạn theo cách hai bên vẫn trao đổi: ngôn ngữ bạn dùng, mức chi tiết bạn cần, ví dụ thay cho thuật ngữ khi bạn muốn. Báo cáo gốc vẫn nằm trên tracker để bạn kiểm chứng.
- Bạn chỉ cần làm Thomas hiểu ý định của mình.
- Bạn nói điều mình muốn và hướng đi; Thomas tự triển khai với team, tự quyết trong quá trình làm. Nó chỉ quay lại hỏi khi một quyết định thật sự là của bạn, như UI/UX hay tech stack, và lúc đó câu hỏi đã được thu gọn thành một lựa chọn trả lời được.
Giao tiếp giữa các agent
Dispatch một ticket là mở một cuộc trao đổi có địa chỉ.
Ticket là một issue trên tracker: một task, một feature hay một requirement đã được cắt đủ nhỏ để một Builder hoàn thành trong một session. Mỗi ticket mang một id ổn định trong tiêu đề, một trạng thái, một assignee, và các blocking edge tới việc phải xong trước. Shaper tạo ticket từ spec bằng skill to-tickets; Thomas chỉ dispatch những ticket đã sẵn sàng.
Thomas dispatch theo skill dispatch-ticket: claim trên tracker, tạo branch và worktree, mở pane herdr, launch agent theo role, gửi brief, đặt watcher. Chuỗi ticket → assignee → pane → worktree → branch → PR là một-một, nên nhiều Builder làm song song mà không giẫm lên nhau.
Khi các agent cùng chạy Claude Code, kênh chính là cross-session messaging có sẵn của Claude Code. Mỗi session Claude Code có một tên; Thomas tra tên session của Builder bằng ListAgents rồi gửi cho đúng tên đó. Ở session nhận, thông điệp hiện thành một dòng preview › Message from @thomas: …, mở rộng bằng ctrl+o, và câu trả lời đi ngược về đúng session đã gửi. Builder bị chặn thì hỏi; Thomas đọc câu hỏi, trả lời qua đúng kênh đó, rồi đặt Monitor mới chờ tín hiệu làm xong. Nhờ vậy vòng dispatch, hỏi, đáp, handback chạy liền mạch mà không cần người ngồi canh.
Điều một Builder trên Codex qua herdr
herdr agent start "builder-TRA-142" --kind codex --pane <id> -- codex --profile builderherdr agent prompt <pane-id> "<brief>"herdr agent read <pane-id>
herdr là mặt phẳng nhìn thấy và là đường dự phòng: mỗi agent một pane có tên, watcher báo working, blocked, idle. Thomas đọc pane bằng herdr agent read khi một session im lặng, và điều Builder trên Codex hay OpenCode qua herdr CLI, nơi không có cross-session messaging.
Issue tracker
Mọi việc đi qua tracker, nên không việc nào lạc hướng.
Trạng thái công việc sống trên tracker, không trong chat hay trí nhớ của một agent. Thomas hỏi tracker cái gì đã sẵn sàng; bạn mở board là đọc được.
Không còn danh sách task trong file markdown với ô checked mà agent phải nhớ sửa. Ticket có id, status, assignee, blocking edge; đọc và ghi qua API, ai hỏi cũng nhận cùng một câu trả lời.
Claim là một dòng assignee ghi và đọc lại được, nên nhiều Builder chạy song song. Issue phát sinh giữa chừng thành ticket mới, không rơi mất trong tin nhắn.
Một ticket là một branch, một worktree, một PR, cùng mã ticket trong tên. Mỗi Builder một worktree; merge xong thì ticket đóng, worktree dọn.
Mỗi ticket giữ nội dung việc, cách làm, câu hỏi đã hỏi, receipt đã commit. Bạn hiểu một việc bằng cách mở ticket. GitHub Issues, Jira, Linear đều dùng được; không có công cụ mới phải học.
năm yêu cầu với tracker · nguyên văn từ tracker-contract.md
- A stable ticket id in the TITLE
- A status with five states — Backlog / Todo / In Progress / Done / Won't fix
- An assignee, written and read back atomically
- Every precondition as a queryable EDGE
- A surface the OWNER can open and read without running a query
linear-issue-trackerLinear
github-issue-trackerGitHub Issues
jira-issue-trackerJira
Vòng đời ticket
Một ticket đi qua bảy stage.
Bảy stage có tên, nên mỗi sự cố đo được gắn vào đúng một stage.
- 01claim
Assignee ghi rồi đọc lại.
- 02brief
Dispatch vào pane, tại Base.
- 03build
Builder làm trong worktree riêng.
- 04code-review
Rin đọc lại artifact và dấu vết.
- 05simplify
Dọn marker, cắt phần thừa.
- 06arm
Codex đọc lại, receipt buộc vào SHA.
- 07merge
Ledger ghi một dòng, assignee gỡ.
mattpocock-skills
Astragentic chọn mattpocock-skills làm khung quản trị và phát triển dự án.
Bộ skill của Matt Pocock bao trọn hai nửa của một dự án. Nửa quản trị: wayfinder định hướng, triage phân loại việc, grill hỏi cho ra yêu cầu, to-spec chốt spec, to-tickets cắt thành ticket. Nửa phát triển: implement theo TDD, code-review, simplify, diagnosing-bugs. Astragentic gắn từng skill vào đúng role, nên Thomas quản trị và Builder thi công theo cùng một khung, từ yêu cầu đầu tiên tới PR cuối cùng.
- Thomas
- triage · wayfinder · to-questionnaire · ask-matt
- Shaper
- grill-with-docs → to-spec → to-tickets
- Builder
- implement
- Dùng chung
- grilling · tdd · code-review · codebase-design · domain-modeling · research · prototype · diagnosing-bugs
Vì sao
AI đã là một developer thực thụ. Astragentic đặt bạn vào vị trí người dẫn dắt team developer đó.
Coding agent hôm nay nhận việc, viết code, chạy test và sửa cho tới khi xanh, như một kỹ sư ngồi cạnh bạn. Khi thực thi không còn là nút thắt, giá trị của người kỹ sư chuyển sang chỗ khác: đặt yêu cầu đúng, quyết định đúng, và giữ cả quy trình đi đúng hướng.
Astragentic được xây để bạn làm đúng phần đó. Nó tổ chức các agent thành một team outsource theo kỷ luật SDLC quen thuộc, và thiết kế lại cách dispatch, review, handback để khai thác tốc độ và khối lượng mà một team người không duy trì được.
Tính năng
Sáu điều một team làm được mà một agent đơn lẻ thì không.
Mỗi thẻ mở trang giải thích cơ chế bên dưới.
Review gate hai lớp, hai vendor.
Mọi ticket đi qua code-review theo Standards và Spec trên Claude Code, rồi một lượt đọc chéo trên Codex. Hai model của hai vendor đọc cùng một diff trước khi merge, nên chất lượng không phụ thuộc vào một model duy nhất.
Read more →Vận hành liên tục quanh issue tracker.
Mọi yêu cầu, spec và ticket đều nằm trên tracker. Review phát hiện việc mới thì ghi thành ticket mới. Team chạy 24/7 mà không cần bạn ngồi canh, và không có việc nào rơi ra ngoài hệ thống.
Read more →Team có tên, có role, có contract.
Thomas đại diện, Shaper định hình, Builder thi công, Rin giữ gate, QA nghiệm thu. Mỗi role có contract và system context riêng, nên trách nhiệm rõ và không ai làm thay việc của ai. Claude Code, Codex và OpenCode đều hỗ trợ agent profile ở mức này.
Read more →Một quy trình, nhiều runtime.
Claude Code là nền bắt buộc; Codex và OpenCode thêm vào khi bạn cần vendor thứ hai hay model khác. Role nào chạy trên runtime nào khai trong orchestrator.md; đổi runtime không đổi quy trình.
harness/.agents/orchestrator.mdbuilder · claude · claude-sonnet-5 · medium
Read more →Role Runtime Model Effort Thomas claude claude-opus-5 medium Shaper claude claude-opus-5 high Builder claude claude-sonnet-5 medium Rin claude claude-opus-4-8 medium QA claude claude-sonnet-5 low Đúng model cho đúng việc.
Sonnet cho Builder và QA, nơi cần nhanh và rẻ; Opus cho Thomas, Shaper và Rin, nơi cần suy luận dài. Chi phí và chất lượng cân theo từng role thay vì một model cho tất cả.
Read more →Toàn quyền giám sát, không cần ra tay.
Board tracker, pane herdr, thiết kế và quyết định đều đọc lại được. Thomas hỏi lại bạn ở những điểm quan trọng: UI/UX, lựa chọn tech stack. Bạn quyết, team làm.
Read more →
Quy mô phù hợp
Dành cho dự án dài hơi, nhiều phần, chạy song song.
Một dự án lớn không lớn vì có sprint hay story. Nó lớn vì bốn thứ: sống lâu (nhiều release, codebase còn sửa nhiều tháng sau ra mắt), rộng (nhiều module hay hệ con làm cùng lúc), phụ thuộc (việc này phải xong trước việc kia), và rủi ro (có người dùng thật, regression gây thiệt hại). Astragentic có đúng bốn cơ chế cho bốn thứ đó: tracker và receipt giữ trạng thái ngoài trí nhớ agent, claim và worktree cho nhiều Builder chạy song song, blocking edge và frontier query giữ thứ tự, Rin gate và QA walk chặn trước khi merge. Thiếu cả bốn thì bộ máy này là thừa, một session agent bình thường là đủ.
Hợp khi
- Có roadmap nhiều release; codebase còn sống nhiều tháng sau khi ra mắt.
- Nhiều module hay hệ con (app, backend, admin, tích hợp) làm song song.
- Việc phụ thuộc nhau, cần thứ tự; có người dùng thật, regression là rủi ro.
Chưa cần khi
- Một deliverable, giao xong là xong.
- Một người làm tuần tự cũng kịp, không có gì chạy song song.
- Không có phụ thuộc giữa các việc, không có release sau.
Tech stack
Bảy thứ cần có trước khi cài.
Bốn bắt buộc, một tuỳ chọn, một chọn một. Script check-requirements.sh kiểm tất cả cho bạn trước khi cài.
Tech stack cần có
- Claude Code CLIrequired
Runtime chạy các agent. Gate milestone của Rin chỉ chạy trên Claude, nên thiếu Claude là không gate được.
- Codex CLIoptional
Vendor thứ hai cho lượt review chéo và runtime dự phòng. Thiếu Codex, team chạy chế độ một provider.
- Git ≥ 2.5, có worktreerequired
Ranh giới cô lập: mỗi Builder một checkout riêng, không ai ghi đè HEAD của ai.
- herdr ≥ 0.8.0 và herdr skillrequired
Mỗi agent một pane. Thomas nhìn thấy agent nào đang chạy, gửi và chờ tin qua herdr CLI.
- mattpocock-skills ≥ 1.2.3required
Phương pháp SDLC mà team đi theo: grill, spec, tickets, implement, code review.
- Issue tracker: GitHub Issues, Jira hoặc Linearpick one
Bộ nhớ chung (shared memory) của team. Mọi task, claim và receipt đều đi qua đây.
- python3required
Chạy các hook gác git và nạp lại contract sau compaction.
Mở agent qua CLI trên ba runtime
claude --dangerously-skip-permissions --agent builder --model <model> --effort <low|medium|high|xhigh|max>codex --profile builder # model + model_reasoning_effort nằm trong profile TOMLopencode --agent builder -m <provider>/<model> # không có cờ effort
Install
Năm bước để đưa team vào repo của bạn.
Kiểm yêu cầu, cài harness, để Claude Code thích nghi harness với repo, cấu hình mattpocock-skills một lần, rồi mở session Thomas. Từ đó mọi việc đi qua Thomas.
năm bước · chạy theo thứ tự
Kiểm máy có đủ tech stack chưa
./check-requirements.sh
Cài harness vào repo của bạn
Chạy từ thư mục Astragentic, trỏ tới thư mục dự án. Lệnh chỉ chép một bản release vào
.astraler/releases/của dự án đó, không sửa file nào của bạn. Một bản Astragentic cài được cho nhiều dự án; bạn chỉnh và nâng cấp harness ở một chỗ rồi cài lại cho từng dự án../install.sh /path/to/your-repo
Để Claude Code thích nghi harness với repo
Đọc và thực thi ADAPT-HARNESS.md: đặt tên tracker, prefix ticket, đường dẫn docs.
cd /path/to/your-repo
claude "Read .astraler/releases/2.8.0/ADAPT-HARNESS.md completely and execute it."
Cấu hình mattpocock-skills cho repo, chạy một lần
Skill này khai tracker, bộ nhãn triage và chỗ để CONTEXT.md, ADR; các skill engineering sau đó đọc cấu hình này.
claude
/mattpocock-skills:setup-matt-pocock-skills
Mở session Thomas
Thomas chạy không hỏi quyền từng lệnh để điều phối liên tục; model và effort theo dòng thomas trong orchestrator.md.
claude --dangerously-skip-permissions --agent thomas --model claude-opus-5 --effort medium