yc-software/qm
qm là một multiplayer agent harness thiên về điều phối nhiều agent/công việc song song, phù hợp cho môi trường dev có nhiều workflow tự động hóa hơn là một thư viện ứng dụng thông thường. Với ~5k sao…
Kết luận: partial · Công nghệ: agent-orchestration · developer-tooling · multi-agent · workflow-automation · typescript
qm là một multiplayer agent harness thiên về điều phối nhiều agent/công việc song song, phù hợp cho môi trường dev có nhiều workflow tự động hóa hơn là một thư viện ứng dụng thông thường. Với ~5k sao và viết bằng TypeScript, đây là một công cụ đáng trial cho các bài toán orchestration, agent runtime và quy trình làm việc nhiều tác nhân.
📖 Giới thiệu chi tiết
🧩 Nó là gì?
yc-software/qm là một công cụ giúp một tổ chức dùng nhiều agent AI cùng lúc để làm việc qua Slack và giao diện web. Thay vì chỉ là “trợ lý cá nhân”, qm được thiết kế để mỗi nhân viên, mỗi kênh chat, mỗi dự án có không gian làm việc riêng nhưng vẫn có thể cộng tác chung.
🎯 Giải quyết vấn đề gì? Dành cho ai?
qm giải quyết bài toán: “Làm sao để đưa agent AI vào môi trường công ty mà không bị rối, lẫn dữ liệu, lẫn quyền, hoặc phụ thuộc vào một nhà cung cấp duy nhất?”
Nó phù hợp với:
- Startup hoặc team kỹ thuật muốn dùng agent AI cho công việc hằng ngày.
- Công ty muốn agent làm việc trong Slack, web app, repo code, tài liệu nội bộ, email, database, hệ thống CI/logs.
- Team muốn mỗi người có “agent của riêng mình”, nhưng vẫn có thể dùng agent chung trong channel, group message hoặc project.
- Tổ chức cần kiểm soát quyền, bảo mật, lịch chạy tự động và dữ liệu lâu dài.
- Người đang thử nghiệm orchestration, agent runtime hoặc workflow nhiều tác nhân.
Nói đơn giản: nếu bạn muốn agent AI không chỉ trả lời câu hỏi, mà còn làm việc thật trong môi trường công ty, qm là một nền tảng đáng thử.
⚙️ Hoạt động ra sao?
- Mỗi người hoặc mỗi phòng/kênh có một “scope” riêng. Có thể hiểu “scope” là phạm vi làm việc riêng, gồm bộ nhớ, file, quyền, lịch chạy, keychain và sandbox.
qmcó một core trung tâm xử lý danh tính, quyền, lịch chạy và vòng lặp agent.- Agent có thể chạy qua nhiều harness/model khác nhau như Pi, OpenCode, Codex và Claude Code, nên bạn không bị khóa vào một vendor duy nhất.
- Dữ liệu bền vững như session, memory và queue được lưu trong Postgres.
- Mỗi scope có một sandbox riêng. Đây giống như “máy tính riêng” của agent, nơi agent có thể chạy lệnh, giữ lại tool đã cài và làm việc với file.
- Agent có một tập công cụ cố định, trong đó có
executeđể chạy lệnh trong sandbox riêng của scope. - Slack, web UI, admin panel và public portal là các plugin tùy chọn chạy trên HTTP API của core.
- Web UI được build bằng Vite và render bằng Lit; Slack plugin dùng Bolt; core chạy TypeScript trực tiếp trên Node và dùng Fastify cho HTTP.
- Những phần riêng của từng công ty như cấu hình, tool, skill, sandbox image và hạ tầng nằm trong một deployment directory, được
qmCLI kiểm tra và deploy.
Sơ đồ ý tưởng tối giản:
Người dùng / Slack / Web
|
v
QM Core: identity, policy, scheduler, agent loop
|
v
Sandbox riêng theo từng scope
|
v
File, tool, service đã đăng nhập, lệnh execute
🆚 Khi nào nên dùng / không nên
Nên dùng qm khi:
- Bạn muốn triển khai agent AI cho cả team hoặc cả công ty, không chỉ cho một cá nhân.
- Bạn cần nhiều không gian làm việc tách biệt: theo người dùng, kênh Slack, project hoặc phòng ban.
- Bạn muốn agent làm việc lâu dài: nhớ ngữ cảnh, chạy lịch tự động, theo dõi thay đổi, mở PR, kiểm tra CI, build app nội bộ.
- Bạn cần quyền quản trị, chính sách bảo mật và audit rõ ràng.
- Bạn muốn có thể đổi harness/model như Pi, OpenCode, Codex hoặc Claude Code mà không viết lại toàn bộ hệ thống.
Không nên dùng qm khi:
- Bạn chỉ cần một chatbot đơn giản để hỏi đáp.
- Bạn đang tìm một thư viện nhỏ để nhúng vào app.
- Bạn chưa cần Slack, web UI, sandbox, quyền theo scope hoặc workflow tự động.
- Bạn không muốn vận hành hạ tầng như Postgres, sandbox, cloud deployment và cấu hình tổ chức.
- Bạn cần một sản phẩm “bấm là chạy” hoàn toàn managed;
qmthiên về tự triển khai trong cloud account của chính tổ chức.
So với một agent cá nhân như các coding assistant thông thường, qm giống “hệ điều phối agent cho cả tổ chức” hơn là một con bot đơn lẻ.
🚀 Bắt đầu nhanh
Cách nhanh nhất là tạo một deployment repository cho tổ chức của bạn, phụ thuộc vào package @yc-software/qm.
Cài và khởi tạo:
npm exec --yes --package=@yc-software/qm@latest -- \
qm init . --org <slug> --target <fly-or-aws>
npm install
Trong đó:
<slug>là tên ngắn của tổ chức, ví dụacme.<fly-or-aws>là môi trường deploy bạn chọn, ví dụflyhoặcaws.
Ví dụ tối thiểu:
mkdir my-qm-deploy
cd my-qm-deploy
npm exec --yes --package=@yc-software/qm@latest -- \
qm init . --org acme --target fly
npm install
Sau khi chạy qm init, công cụ sẽ hướng dẫn bạn qua các phần chính như:
- cấu hình hạ tầng,
- đăng nhập web,
- credential cho connector,
- Slack access nếu muốn dùng Slack,
- deploy,
- kiểm tra bản chạy thật.
Nếu tổ chức muốn giữ toàn bộ codebase và phần tùy chỉnh riêng trong một repo riêng tư, có thể tạo private fork theo kiểu clone thường:
gh repo create <org>/qm-private --private
git clone --bare git@github.com:yc-software/qm qm-seed.git
git -C qm-seed.git push --mirror git@github.com:<org>/qm-private
rm -rf qm-seed.git
git clone git@github.com:<org>/qm-private
git -C qm-private remote add upstream git@github.com:yc-software/qm
Lưu ý: README khuyến nghị không dùng nút Fork của GitHub cho trường hợp private fork, vì GitHub fork của repo public không thể chuyển thành private theo cách an toàn như mong muốn.
✅ Điểm mạnh & ⚠️ Hạn chế
Điểm mạnh:
- Thiết kế cho môi trường nhiều người dùng, nhiều channel, nhiều project ngay từ đầu.
- Có scope riêng cho từng người hoặc phòng, giúp tách bộ nhớ, file, quyền, keychain và sandbox.
- Dùng được cả Slack và web với cùng danh tính, cấu hình và quyền.
- Không phụ thuộc một model hoặc harness duy nhất; có thể dùng Pi, OpenCode, Codex hoặc Claude Code trên cùng core.
- Hỗ trợ công việc nền như crons và watches, giúp agent làm việc ngay cả khi không có ai đang nhìn.
- Có cơ chế quản trị: cấu hình cấp tổ chức, quyền, posture bảo mật, model/harness được phép dùng.
- Có thể build web app nội bộ và publish cho đúng người.
- Mã nguồn mở, viết bằng TypeScript, có license MIT.
Hạn chế:
- Không phải lựa chọn nhẹ nhất nếu bạn chỉ cần chatbot hoặc automation nhỏ.
- Cần hiểu và vận hành deployment, cloud account, Postgres, sandbox và secret.
- Việc thiết lập ban đầu có nhiều phần: hạ tầng, sign-in, connector, Slack, policy và verification.
- Agent hoạt động với quyền của người dùng, nên tổ chức phải thiết kế bảo mật và audit cẩn thận.
- Chế độ
Dangerousbỏ qua content screening và pause giữa tool calls, nên chỉ phù hợp khi bạn thật sự hiểu rủi ro. - Đóng góp code trực tiếp không phải quy trình chính; dự án ưu tiên nhận đề xuất bằng text trong
.txthoặc.mddướiadrs/.