7.3 KiB
7.3 KiB
Hướng dẫn về Repository và Agents
- Link Repo: https://github.com/moltbot/moltbot
- Giao tiếp trên GitHub: Khi comment trên Issues hoặc PR, hãy dùng chuỗi nhiều dòng (literal multiline strings) hoặc
-F - <<'EOF'(hoặc$'...') để tạo dòng mới thực sự. Tuyệt đối không nhúng ký tự\nvào chuỗi.
Cấu trúc Dự án & Tổ chức Module
- Mã nguồn (
src/): Nơi chứa toàn bộ source code.src/cli: Các file kết nối CLI.src/commands: Logic các câu lệnh commands.src/provider-web.ts: Nhà cung cấp dịch vụ web.src/infra: Cơ sở hạ tầng.src/media: Pipeline xử lý media.
- Tests: Các file test (
*.test.ts) được đặt ngay cạnh file code tương ứng (colocated). - Tài liệu (
docs/): Chứa ảnh, tài liệu về hàng đợi (queue), cấu hình Pi. File build ra sẽ nằm trongdist/. - Plugins/Extensions:
- Nằm trong thư mục
extensions/*(được quản lý như các gói workspace). - Lưu ý quan trọng: Chỉ thêm dependencies vào file
package.jsoncủa extension đó, KHÔNG thêm vàopackage.jsongốc của dự án trừ khi phần core thực sự cần dùng. - Cài đặt: Khi chạy install plugin, hệ thống sẽ chạy
npm install --omit=dev. Do đó, các dependency cần thiết khi chạy (runtime) phải nằm trongdependencies. - Tránh dùng
workspace:*trongdependenciesvì sẽ gây lỗi khinpm install. Thay vào đó, hãy đểmoltbottrongdevDependencieshoặcpeerDependencies. Runtime sẽ tự động giải quyếtclawdbot/plugin-sdkthông qua jiti alias.
- Nằm trong thư mục
- Trình cài đặt (Installers): Các file script cài đặt (
install.sh,install.ps1...) nằm ở repo anh em../molt.bot. - Kênh nhắn tin (Channels):
- Khi sửa logic chung (routing, allowlists, pairing...), hãy nhớ kiểm tra ảnh hưởng đến tất cả các kênh (cả built-in và extensions).
- Tài liệu kênh:
docs/channels/ - Code kênh core:
src/telegram,src/discord,src/slack, v.v. - Extensions:
extensions/msteams,extensions/zalo...
Quy chuẩn Liên kết Tài liệu (Mintlify)
- Website Docs: docs.molt.bot.
- Link nội bộ (trong thư mục
docs/): Sử dụng đường dẫn tương đối gốc (root-relative), KHÔNG có đuôi.md.- Ví dụ đúng:
[Cấu hình](/configuration) - Ví dụ sai:
[Cấu hình](../configuration.md)
- Ví dụ đúng:
- Tham chiếu chéo (Anchor links): Dùng anchor trên đường dẫn gốc. Ví dụ:
[Hooks](/configuration#hooks). - Tiêu đề: Tránh dùng dấu gạch ngang dài (em dashes
—) hoặc dấu nháy đơn'trong tiêu đề bài viết vì chúng làm hỏng cơ chế tạo link anchor của Mintlify. - Gửi link cho người khác: Luôn dùng URL đầy đủ
https://docs.molt.bot/.... - Trong README: Luôn dùng link tuyệt đối để bấm được ngay trên GitHub.
- Nội dung: Viết chung chung, tránh lộ tên thiết bị/hostname cá nhân. Dùng
user@gateway-hostthay vìhieu@may-cua-toi.
Vận hành VM (Dành cho nội bộ exe.dev)
- Truy cập:
ssh exe.dev->ssh vm-name. - Lưu ý: SSH có thể chập chờn, nên dùng Shelley (web agent) hoặc giữ phiên
tmuxnếu chạy tác vụ lâu. - Cập nhật:
sudo npm i -g moltbot@latest(Cần quyền root vì cài global). - Cấu hình: Dùng
moltbot config set ...và đảm bảogateway.mode=local. - Discord: Lưu token thô, không cần tiền tố
DISCORD_BOT_TOKEN=. - Khởi động lại (Restart): Kill process cũ và chạy lại nohup.
- Kiểm tra: Dùng
moltbot channels status --probehoặctaillog.
Lệnh Build, Test & Dev
- Runtime: Node 22+. (Dự án vẫn hỗ trợ cả Node và Bun).
- Cài đặt:
pnpm install(Ưu tiên).bun installcũng được hỗ trợ (nhớ đồng bộpnpm-lock.yaml). - Dev:
- Chạy script/test: Dùng
buncho nhanh (bun <file.ts>). - Chạy CLI dev:
pnpm moltbot ...(chạy qua bun/tsx) hoặcpnpm dev. - Chạy bản build (production): Dùng Node để chạy file trong
dist/.
- Chạy script/test: Dùng
- Check code:
pnpm build(tsc),pnpm lint(oxlint),pnpm format(oxfmt). - Test:
pnpm test(vitest).
Phong cách Code (Coding Style)
- Ngôn ngữ: TypeScript (ESM). Bắt buộc dùng kiểu dữ liệu chặt chẽ (strict typing), hạn chế tối đa
any. - Lint/Format: Phải chạy
pnpm linttrước khi commit. - Comment: Viết chú thích ngắn gọn cho các đoạn logic "ảo diệu" hoặc khó hiểu.
- Kích thước file: Cố gắng giữ dưới ~700 dòng code. Tách nhỏ ra nếu file quá dài để dễ đọc và dễ test.
- Đặt tên:
- Moltbot: Dùng cho tên sản phẩm, tiêu đề tài liệu.
moltbot: Dùng cho lệnh CLI, tên gói, đường dẫn file, key cấu hình.
Kênh phát hành (Release Channels)
- stable: Chỉ dành cho bản release có gắn thẻ (
vYYYY.M.D). - beta: Bản thử nghiệm (
-beta.N), có thể không có app macOS đi kèm. - dev: Nhánh
mainđang phát triển.
Hướng dẫn Test
- Framework: Vitest.
- Ngưỡng coverage: 70% (dòng, nhánh, hàm).
- Tên file:
*.test.ts(unit test) và*.e2e.test.ts(end-to-end test). - Workers: Tối đa 16 workers.
- Live Test: Test với key thật (API thật) dùng lệnh
CLAWDBOT_LIVE_TEST=1 pnpm test:live. - Mobile: Ưu tiên test trên thiết bị thật (iOS/Android) trước khi dùng giả lập.
Quy trình Commit & PR
- Tạo commit: Dùng script
scripts/committer "<msg>" <file...>thay vìgit committhủ công để đảm bảo quy chuẩn. - Thông điệp: Ngắn gọn, bắt đầu bằng động từ (Ví dụ:
CLI: add verbose flag). - PR:
- Mỗi PR nên tập trung vào một vấn đề. Đừng gom nhiều refactor không liên quan vào một PR.
- Review: Dùng
gh pr viewhoặcgh pr diff. Đừng switch nhánh lung tung. - Merge: Ưu tiên Rebase để lịch sử đẹp. Nếu lịch sử quá rối rắm thì Squash.
- Luôn thêm người đóng góp (PR author) vào danh sách co-contributor nếu squash.
- Sau khi merge PR của người mới: Nhớ chạy script cập nhật danh sách contributors trong README.
An toàn Đa Tác nhân (Multi-Agent Safety) 🤖
Khi làm việc trong môi trường có nhiều Agent cùng hoạt động:
- Git Stash: KHÔNG BAO GIỜ tự ý
git stashhoặcgit pull --rebase --autostashtrừ khi được user yêu cầu. Agent khác có thể đang code dở. - Git Worktree: KHÔNG tạo, xóa, sửa worktree nếu không được bảo.
- Chuyển nhánh: KHÔNG tự ý switch nhánh.
- File lạ: Nếu thấy file lạ (do agent khác tạo), cứ lờ đi và tập trung vào file của mình.
- Sung đột: Khi user bảo "push", có thể
git pull --rebase. Khi "commit", chỉ commit file bạn sửa.
Mẹo nhỏ: Moltbot được thiết kế rất linh hoạt. Hãy đọc kỹ code trước khi sửa, và luôn ưu tiên sự ổn định (stability) lên hàng đầu. Chúc bạn code vui vẻ! 🦞