Cách hoạt động
Từ một mục tiêu đến kế hoạch bạn theo dõi được
Sáu giai đoạn, trong một vòng lặp. Bạn nói điều bạn muốn. PO lập kế hoạch, sắp thứ tự các tác vụ, nhớ lại những gì dự án đã biết, chạy công việc, kiểm tra và lưu lại những gì đã học. Dưới mỗi giai đoạn, bạn có thể mở phần chi tiết kỹ thuật.
Lập kế hoạch → Sắp thứ tự → Nhớ lại → Chạy → Kiểm tra → Ghi nhớ, rồi quay lại Nhớ lại. Những gì giai đoạn 6 lưu lại sẽ được giai đoạn 3 nhớ lại ở kế hoạch kế tiếp.
Vòng lặp
Vòng lặp, từng giai đoạn
Cuộn xuống: mỗi hình được vẽ giống như các màn hình của sản phẩm. Ví dụ là một cuối tuần của nhóm.
Giai đoạn 1 trên 6
Bạn nói điều bạn muốn, bạn nhận một kế hoạch
Bạn mô tả kết quả trong một câu. Trợ lý biến nó thành một kế hoạch gồm các tác vụ. Mỗi tác vụ có các bước, và mỗi bước cho biết cách kiểm tra là đã xong.
Bên trong
Kết quả được lưu thành một kế hoạch có mức ưu tiên và các ràng buộc, rồi chia thành các tác vụ. Mỗi tác vụ cho biết nó phụ thuộc vào gì và liệt kê các bước. Mỗi bước mang theo phép kiểm tra chứng minh nó đã xong.
Kế hoạch, tác vụ và bước được lưu thành dữ liệu, không phải văn bản tự do trong một cuộc chat. Các màn hình và trình chạy đọc cùng một trạng thái.
plan(action: "create", title, description, priority: 8, constraints: [{ constraint_type: "performance", … }])task(action: "create", plan_id, title, depends_on: [task_id], steps: [{ description, verification }])- Trạng thái kế hoạch: draft, approved, in_progress, completed, cancelled.
- Các loại ràng buộc: performance, security, style, compatibility, other.
- code(action: "plan_implementation", auto_create_plan: true) soạn một kế hoạch từ đồ thị mã.
Giai đoạn 2 trên 6
Các tác vụ không phụ thuộc nhau được làm cùng nhau
PO sắp xếp các tác vụ. Một tác vụ chỉ chờ những tác vụ nó cần. Tất cả các tác vụ khác có thể bắt đầu ngay, cùng lúc.
Bên trong
Một tác vụ chỉ bắt đầu khi mọi thứ nó phụ thuộc đã hoàn thành. PO biến các liên kết này thành các đợt: đợt 1 gồm mọi tác vụ không còn điều kiện tiên quyết nào, đợt 2 gồm những gì đợt 1 mở khóa, và cứ thế.
Các tác vụ trong cùng một đợt độc lập với nhau, nên chúng chạy cùng lúc. Chuỗi phụ thuộc dài nhất, tức đường găng, quyết định số đợt tối thiểu.
plan(action: "get_waves", plan_id)plan(action: "get_critical_path", plan_id)- plan(action: "get_dependency_graph") trả về DAG của các tác vụ.
- task(action: "get_next") trả về tác vụ kế tiếp không bị chặn, ưu tiên cao nhất trước.
- Khi một lượt chạy được tiếp tục, các đợt được tính lại và các đợt đã xong sẽ được bỏ qua.
Giai đoạn 3 trên 6
Trợ lý tra cứu những gì dự án đã biết
Trước mỗi tác vụ, trợ lý đọc các ghi chú và quyết định có liên quan. Nhờ vậy nó không hỏi lại những câu cũ.
Bên trong
Trước một tác vụ, trợ lý đọc bộ nhớ của dự án: ghi chú (cảnh báo, hướng dẫn, mẫu làm việc), quyết định kèm lý do và, với dự án có mã, phần mã quanh các tệp nó sẽ chạm vào. Tìm kiếm theo ý nghĩa sẽ tìm các kết quả gần nhất trước.
Sau đó PO đi theo các liên kết giữa các ghi chú. Một ghi chú không khớp với câu hỏi vẫn có thể xuất hiện, vì một ghi chú đã khớp liên kết chặt với nó. Liên kết yếu dần ở mỗi bước, và các ghi chú đã mờ đi sẽ bị loại.
note(action: "search_semantic", query, project_slug)decision(action: "search_semantic", query)admin(action: "search_neurons", query, max_hops: 2)note(action: "get_context", entity_type: "file", entity_id)- Mặc định của spreading activation: 20 ghi chú khởi đầu, 2 bước nhảy, tín hiệu giảm một nửa ở mỗi bước, 10 kết quả.
- 40% số chỗ trong kết quả dành cho các ghi chú đến được qua synapse.
- Điểm lan truyền bằng điểm của nút cha x trọng số synapse x năng lượng của ghi chú x độ suy giảm.
Giai đoạn 4 trên 6
Các trợ lý làm tác vụ, từng nhóm một
Mỗi tác vụ được giao cho một trợ lý riêng. Các tác vụ trong một nhóm chạy cùng lúc, còn nhóm kế tiếp phải chờ.
Bên trong
plan(action: "run") khởi động trình chạy trên một nhánh git riêng. Với mỗi đợt, nó mở một phiên agent cho mỗi tác vụ đủ điều kiện và chạy song song, tối đa theo một giới hạn (mặc định là 4).
Mỗi tác vụ nhận một prompt dựng từ bộ nhớ dự án: mô tả, các bước và ràng buộc của nó, các ghi chú liên kết, persona và kỹ năng phù hợp, cùng bản tóm tắt những gì các đợt trước đã làm. Một lớp bảo vệ theo dõi phiên về thời gian nhàn rỗi, lời gọi lặp lại và quá thời gian, và gửi gợi ý khi agent đi lạc hướng.
plan(action: "run", plan_id, cwd, project_slug)plan(action: "run_status", plan_id)- Một tác vụ được xếp loại đơn giản, phức tạp hoặc sáng tạo dựa trên thẻ, bước và tệp của nó. Loại này đặt giới hạn thời gian và ngân sách chi phí.
- Đơn giản: 600 s và $0.50. Phức tạp: 3600 s và $2.00. Sáng tạo: 1800 s và $1.00.
- Các lượt chạy được lưu, nên có thể tiếp tục một lượt chạy sau khi khởi động lại. plan(action: "cancel_run") dừng một lượt chạy.
Giai đoạn 5 trên 6
Một nhóm xong khi các phép kiểm tra đều đạt
Trước khi nhóm kế tiếp bắt đầu, PO kiểm tra công việc. Các bước phải được đóng và không tệp nhạy cảm nào được lọt vào thay đổi. Với dự án có mã, PO còn kiểm tra rằng nó vẫn build được.
Bên trong
Khi một đợt kết thúc, trình chạy kiểm tra nó trước khi đợt sau bắt đầu. Nó kiểm tra rằng các agent đã tạo commit, mọi bước đều đã hoàn thành hoặc bị bỏ qua, dự án build được và diff không chứa tệp nhạy cảm nào.
Bản thân lượt chạy là một máy trạng thái. Một protocol vòng đời đi từ approved sang executing rồi post_run, và mỗi lần chuyển cần một trigger rõ ràng. Tác vụ có agent thất bại hoặc quá thời gian sẽ được thử lại một lần theo mặc định, kèm lỗi làm ngữ cảnh.
protocol(action: "transition", run_id, trigger: "child_completed")step(action: "get_progress", task_id)- Kiểm tra build: cargo check, npm run build hoặc go build ./..., tùy ngôn ngữ phát hiện được.
- Các tệp nhạy cảm bị từ chối: .env, credentials.json, *.pem, *.key và tương tự.
- Kiểm thử là tùy chọn, mặc định tắt. plan-runner-reviewed thêm trạng thái awaiting_review để một người xem xét.
Giai đoạn 6 trên 6
Những gì đã học được lưu lại cho lần sau
Khi công việc xong, những gì đã quyết định và học được sẽ được ghi ngược vào bộ nhớ dự án. Kế hoạch kế tiếp bắt đầu với chúng.
Bên trong
Khi một tác vụ hoàn thành, trình chạy ghi ngược mà không gọi mô hình nào: nó gắn các commit với tác vụ và kế hoạch, tạo một ghi chú ngữ cảnh từ git log, và nối các quyết định với những tệp chúng ảnh hưởng.
Trợ lý thêm những gì chỉ nó biết: quyết định kèm các phương án thay thế, cảnh báo, mẫu làm việc. Các ghi chú được dùng cùng nhau sẽ gần nhau hơn. Các ghi chú không bao giờ được dùng sẽ mất năng lượng và trở nên cũ. Một episode ghi lại yêu cầu, đường đi qua các trạng thái và kết quả. Kế hoạch kế tiếp bắt đầu từ giai đoạn 3 với tất cả những điều đó.
decision(action: "add", task_id, rationale, alternatives)note(action: "create", note_type: "gotcha", content, anchors)episode(action: "collect", run_id, project_id)admin(action: "reinforce_neurons", note_ids)- Độ cũ tăng theo thời gian kể từ lần hoạt động cuối, với tốc độ phụ thuộc vào loại ghi chú. note(action: "confirm") đặt lại nó.
- Kỹ năng hình thành từ các cụm ghi chú liên kết chặt (admin(action: "detect_skills")).
Phân vai
Ai làm gì
PO lo phần cơ chế, để trợ lý tập trung vào công việc.
PO tự làm, không cần nhắc
- Sắp xếp các tác vụ thành nhóm và khởi động các trợ lý.
- Kiểm tra từng nhóm: các bước đã đóng, không có tệp nhạy cảm, và build cho dự án có mã.
- Gắn các thay đổi với tác vụ và viết một ghi chú về những gì đã xảy ra.
- Giữ các thay đổi của mỗi lượt chạy trên một nhánh git riêng.
- Ghi lại trợ lý chuyên biệt và kỹ năng nào đã giúp.
Trợ lý làm, qua các công cụ của nó
- Tìm ghi chú và quyết định trước khi bắt đầu.
- Tạo kế hoạch, tác vụ và bước, và cập nhật trạng thái của chúng.
- Lưu quyết định kèm các phương án thay thế và những gì chúng ảnh hưởng.
- Viết cảnh báo, hướng dẫn và mẫu làm việc, gắn với đối tượng của chúng.
- Đưa một quy trình tiến lên, từng bước.
Cách bắt đầu
Ba cách khởi động vòng lặp
Từ công cụ AI của bạn
Claude Code, Cursor hoặc một công cụ AI khác được kết nối với PO. Bạn mô tả kết quả. Nó lập kế hoạch, sắp thứ tự và nhớ lại, rồi lưu những gì đã học khi kết thúc.
Từ chat
Phần chat tích hợp trong PO nói chuyện với cùng một trợ lý. Mỗi tin nhắn mang theo các kỹ năng phù hợp, các ghi chú và quyết định liên quan, và những gì đang diễn ra.
Tự chạy
Một kế hoạch có thể chạy khi không có ai ở đó. Nó bắt đầu theo lịch hoặc khi có một sự kiện, với một quãng nghỉ giữa hai lần bắt đầu. Các kiểu khởi động là schedule, webhook, event và chat.
Bộ nhớ
PO nhớ những gì bạn quyết định và học được
Ghi chú, quyết định và các liên kết giữa chúng luôn gắn với dự án của bạn. PO tìm lại chúng khi cần. Cuộn xuống để xem một bộ nhớ lớn dần.
Ví dụ tự dựng: một dự án sự kiện nhỏ. Các tên trong đồ thị chỉ là minh họa, không phải dữ liệu của bạn. Màu sắc và hình dạng giống đồ thị trong sản phẩm.
1 trên 5
Các tệp của bạn trở thành những chấm
PO bắt đầu từ những gì có trong dự án: tài liệu, bảng tính, tệp. Mỗi tệp là một chấm xanh dương.
2 trên 5
Kế hoạch và tác vụ tham gia
Kế hoạch và tác vụ được thêm vào cùng một bức tranh. Mỗi tác vụ được nối với các tệp nó chạm đến.
3 trên 5
Ghi chú và quyết định luôn có liên kết
Điều bạn học được trở thành ghi chú. Điều bạn quyết định trở thành quyết định. Cả hai vẫn được nối với các tệp và với nhau.
4 trên 5
Những thứ liên quan tụ lại với nhau
Các mục cùng chủ đề dịch lại gần nhau. Bạn thấy ngay các chủ đề chính của dự án.
5 trên 5
PO tìm câu trả lời theo các liên kết
Bạn đặt một câu hỏi. PO tìm các ghi chú khớp (màu lục lam). Rồi nó đi theo các liên kết đến những mục liên quan (màu tím), kể cả khi từ ngữ khác nhau.
Bên trong: tên của các liên kết
Đây là tên mà sản phẩm dùng cho các liên kết trong đồ thị của nó. Bạn không cần biết chúng để dùng PO.
- CONTAINSMột kế hoạch chứa các tác vụ của nó.
- IMPORTSMột tệp dùng một tệp khác.
- AFFECTSMột tác vụ chạm đến một tệp.
- CO_CHANGEDHai tệp thường thay đổi cùng nhau, thấy được trong lịch sử của mã.
- SYNAPSEMột liên kết giữa ghi chú, quyết định và tệp. Các liên kết không ai dùng sẽ mờ dần.
Dùng thử
Xem một trợ lý làm việc cùng PO
Chọn một yêu cầu. Bạn sẽ thấy câu trả lời bằng lời đơn giản, cùng các lệnh gọi mà trợ lý gửi đến PO ở phía sau. Mở một lệnh gọi để xem chi tiết.
Two notes apply: the place must be close to a train station, and last year the menu had nothing vegetarian. I will write the plan around both.
The plan has 3 tasks in 2 waves. The shortlist and the date poll do not depend on each other, so they happen at the same time. Booking waits for both.
Bản demo mô phỏng: câu trả lời được viết sẵn và không có máy chủ nào được liên hệ. Các lệnh gọi và tham số của chúng là thật.
Bắt đầu
Cho các trợ lý AI của bạn một bộ nhớ và một kế hoạch
Cài trình điều phối, kết nối Claude Code qua MCP, rồi để trợ lý đầu tiên đọc dự án trước khi viết dòng mã đầu tiên.
Hoặc bắt đầu từ terminal
brew install this-rs/tap/project-orchestrator