Dành cho nhà phát triển
Kết nối các agent của bạn vào cùng đồ thị với kế hoạch của bạn
Project Orchestrator mở mọi thứ ứng dụng làm được dưới dạng công cụ MCP, một REST API và hai luồng WebSocket. Một máy chủ Rust giữ mã, kế hoạch, quyết định và ghi chú trong một đồ thị Neo4j và trong Meilisearch.
- công cụ MCP
- 31
- công cụ MCP
- action trong số đó
- 402
- action trong số đó
- ngôn ngữ được phân tích
- 17
- ngôn ngữ được phân tích
- luồng WebSocket
- 3
- luồng WebSocket
Bạn đang tìm chính sản phẩm? Hãy quay lại trang chủ.
project(action: "sync", slug: "my-app")
code(
action: "analyze_impact",
target: "src/session.rs",
project_slug: "my-app"
)
plan(action: "run", plan_id: "<uuid>")Kết nối
Kết nối PO với một ứng dụng khách MCP
Ứng dụng máy tính hoặc máy chủ phải đang chạy. Sau đó một lệnh đăng ký PO vào Claude Code, hoặc bạn tự thêm mục cấu hình cho bất kỳ ứng dụng khách MCP nào khác.
Cài và khởi động máy chủ
Máy chủ cần Neo4j và Meilisearch. NATS là tùy chọn. Kho mã có sẵn một docker-compose.yml cho cả ba.
orchestrator serve
# needs Neo4j and Meilisearch: docker compose up -dbrew install this-rs/tap/project-orchestratororchestrator serve --port 8080Đăng ký PO vào Claude Code
Lệnh này ghi mục MCP ở chế độ stdio, kèm URL máy chủ này và bí mật xác thực của nó, và phê duyệt trước các công cụ.
orchestrator setup-claude
orchestrator setup-claude --port 8080setup-claude cũng thêm mcp__project-orchestrator__* vào các công cụ được phép trong ~/.claude/settings.json, nên Claude Code không hỏi trước mỗi lệnh gọi.
Kiểm tra là nó hoạt động
Trong Claude Code, chạy /mcp: project-orchestrator phải có trong danh sách. Sau đó hãy xin danh sách các dự án: Claude gọi project(action: "list").
Claude Code
# in Claude Code/mcp# then ask: "List all registered projects"# Claude calls: project(action: "list")Mọi ứng dụng khách MCP, stdio
mcp_server là một proxy mỏng: nó nói MCP qua stdio và chuyển từng lệnh gọi đến REST API. Nó không bao giờ tự kết nối với Neo4j. Đặt PO_AUTH_TOKEN, hoặc PO_JWT_SECRET để nó tự tạo token khi khởi động.
~/.claude/mcp.json
{ "mcpServers": { "project-orchestrator": { "command": "/path/to/mcp_server", "env": { "PO_SERVER_URL": "http://127.0.0.1:8080", "PO_AUTH_TOKEN": "<jwt-session-token>" } } }}Ứng dụng khách từ xa, Streamable HTTP
Máy chủ cũng trả lời MCP tại POST /mcp, sau cùng lớp xác thực với REST API. Một session id được trả về trong header Mcp-Session-Id và phải được gửi lại ở mỗi yêu cầu.
Claude Code
claude mcp add --transport http project-orchestrator http://127.0.0.1:8080/mcp \ --header "Authorization: Bearer <token>"HTTP
POST /mcpAuthorization: Bearer <token>Content-Type: application/json{"jsonrpc":"2.0","id":1,"method":"tools/list"}Công cụ MCP
31 công cụ, một dạng lệnh gọi
Mỗi công cụ nhận một tham số action và chuyển đến một thao tác. Tìm theo công cụ, action hoặc tham số, rồi sao chép đúng lệnh gọi.
31 công cụ
plan
Plans with dependency graph, waves, critical path, and the autonomous runner.
Lập kế hoạch và bàn giao 27 action
Ví dụ lệnh gọi
plan( action: "create", title: "Migrate session store to Redis", priority: 8)Action
+21 nữa
Tham số
plan_idproject_idtitledescriptionpriorityconstraintsstatussearchlimitoffsetsort_bysort_orderpriority_minpriority_maxcwdproject_slugtrigger_idtrigger_typeconfigcooldown_secsrun_idrun_idstask_idparent_session_idcustom_sections
Giá trị tham số như <uuid> là chỗ giữ chỗ. Tên action và tham số được đọc từ mã nguồn của máy chủ.
Kiến trúc
Một máy chủ Rust, ba kho lưu trữ, mọi ứng dụng khách
Các ứng dụng khách không bao giờ chạm vào cơ sở dữ liệu. Chúng nói chuyện với máy chủ, nơi phân tích mã, phục vụ API và phát luồng sự kiện.
MCP clients
Claude Code, Cursor hoặc bất kỳ ứng dụng khách MCP nào. Chúng nói MCP với mcp_server qua stdio, hoặc với POST /mcp qua HTTP.
Desktop app
Ứng dụng Tauri 2 nhúng giao diện và khởi động máy chủ. Nó quản lý các container Neo4j và Meilisearch qua Docker.
WebSocket clients
Bất cứ thứ gì mở /ws/chat/{session_id}, /ws/events hoặc /ws/run/{run_id}.
mcp_server
Chương trình mcp_server: nhận MCP qua stdio, gửi ra các lệnh REST. Không giữ trạng thái.
orchestrator
Chương trình orchestrator (axum). REST API, trình quản lý chat, trình chạy kế hoạch, trình phân tích tree-sitter, bus sự kiện.
Neo4j
Đồ thị: mã, kế hoạch, tác vụ, quyết định, ghi chú, kỹ năng, quy trình, phiên chat.
Meilisearch
Tìm kiếm toàn văn trên mã, ghi chú, quyết định và tin nhắn chat.
NATStùy chọn
Đồng bộ sự kiện và chuyển tiếp chat giữa nhiều phiên bản máy chủ. Nếu không có nó, máy chủ chỉ chạy cục bộ.
Claude
Trình quản lý chat điều khiển Claude qua SDK nexus-claude.
Chúng nói chuyện với nhau thế nào
- MCP clients / mcp_serverstdio
- MCP clients / orchestratorHTTP /mcp
- mcp_server / orchestratorREST
- Desktop app / orchestratorREST + WebSocket
- WebSocket clients / orchestratorWebSocket
- orchestrator / Neo4jbolt
- orchestrator / MeilisearchHTTP
- orchestrator / NATSNATS
- orchestrator / ClaudeSDK
Phân tích mã
17 ngôn ngữ, được phân tích bằng tree-sitter
Mỗi tệp được phân tích thành hàm, struct, trait, enum, import, khối impl và các cạnh gọi hàm, rồi được lưu vào đồ thị.
17 ngôn ngữ
Rust
Phần mở rộng: .rs
tree-sitter-rust
TypeScript / JavaScript
Phần mở rộng: .ts .tsx .js .jsx .mjs .cjs
tree-sitter-typescript
Python
Phần mở rộng: .py .pyi
tree-sitter-python
Go
Phần mở rộng: .go
tree-sitter-go
Java
Phần mở rộng: .java
tree-sitter-java
C
Phần mở rộng: .c .h
tree-sitter-c
C++
Phần mở rộng: .cpp .cc .cxx .hpp .hxx .hh
tree-sitter-cpp
Ruby
Phần mở rộng: .rb .rake .gemspec
tree-sitter-ruby
PHP
Phần mở rộng: .php .phtml .php5 .php7
tree-sitter-php
Kotlin
Phần mở rộng: .kt .kts
tree-sitter-kotlin-ng
Swift
Phần mở rộng: .swift
tree-sitter-swift
Bash
Phần mở rộng: .sh .bash .zsh
tree-sitter-bash
C#
Phần mở rộng: .cs
tree-sitter-c-sharp
Scala
Phần mở rộng: .scala .sc
tree-sitter-scala
Zig
Phần mở rộng: .zig
tree-sitter-zig
HCL (Terraform)
Phần mở rộng: .tf .tfvars
tree-sitter-hcl
Dart
Phần mở rộng: .dart
tree-sitter-dart
Trên mỗi tệp: hàm, struct, trait, enum, import, khối impl, lời gọi hàm kèm điểm tin cậy.
Các tệp JavaScript (.js, .jsx, .mjs, .cjs) được đọc bằng ngữ pháp TypeScript.
API và sự kiện
REST cho trạng thái, WebSocket cho thay đổi
Kế hoạch, mã, ghi chú và phần còn lại là JSON thuần qua HTTP. Các thay đổi được đẩy qua WebSocket.
Các endpoint REST chính
Hầu hết các route nằm sau middleware xác thực. Khi chưa cấu hình mục xác thực, API ở chế độ mở.
| GET | /health | Liveness |
| GET | /api/version | Server version |
| GET | /api/projects | List projects (POST creates) |
| POST | /api/projects/{slug}/sync | Parse a project into the graph |
| GET | /api/plans/{plan_id}/waves | Parallel waves of a plan |
| POST | /api/plans/{plan_id}/run | Start the runner on a plan |
| GET | /api/code/search | Search code |
| GET | /api/code/impact | Impact analysis |
| GET | /api/notes/search | Search notes |
| GET | /api/decisions/search | Search decisions |
| POST | /api/reason | Reasoning over the graph |
| POST | /mcp | MCP over Streamable HTTP |
Các luồng WebSocket
/ws/events
Mọi thao tác tạo, cập nhật, xóa, liên kết, hủy liên kết và đổi trạng thái, dưới dạng một sự kiện JSON. Lọc bằng các tham số truy vấn entity_types, project_id và layers.
/ws/chat/{session_id}
Cuộc trò chuyện với Claude. Gửi user_message, interrupt, permission_response và input_response; nhận các sự kiện chat, được phát lại từ last_event sau khi kết nối lại.
/ws/run/{run_id}
Một luồng cho một lượt chạy kế hoạch: các sự kiện của trình chạy (tác vụ đã bắt đầu, đợt đã bắt đầu...) cùng các sự kiện chat của mọi phiên con.
Trình duyệt xác thực bằng cookie, hoặc bằng một vé dùng một lần từ POST /auth/ws-ticket được truyền qua tham số ticket.
Một thông điệp /ws/events
/ws/events?entity_types=plan,task&project_id=<uuid>
{ "entity_type": "task", "action": "status_changed", "entity_id": "<uuid>", "payload": { "old_status": "pending", "new_status": "in_progress" }, "timestamp": "2026-10-05T10:00:00Z", "project_id": "<uuid>"}Mở rộng
Ba cách để biến PO thành của bạn
Cả ba đều có sẵn qua cùng các công cụ MCP.
Protocol
Định nghĩa một máy trạng thái hữu hạn với các trạng thái và chuyển tiếp, bắt đầu một lượt chạy, và để các agent đưa nó tiến lên bằng công cụ protocol.
Skill
Skill là các cụm ghi chú và mã hình thành từ việc sử dụng; công cụ skill kích hoạt, xuất và nhập chúng giữa các dự án và phiên bản.
MCP federation
mcp_federation kết nối các máy chủ MCP bên ngoài qua stdio, sse hoặc streamable_http, để các công cụ của chúng dùng được thông qua PO.