Hướng dẫn sử dụng bộ công cụ của CPPAI cho EzyPlatform
Back To BlogsHướng dẫn sử dụng bộ công cụ của CPPAI cho EzyPlatform
Đi từ máy tính trống đến lần publish đầu tiên: cài lệnh ezy, cài Claude Code và plugin ezyplatform, dựng EzyPlatform chạy local bằng Docker, lấy access token, rồi kéo nội dung, chỉnh sửa và publish có sao lưu.
Trong bài mở đầu, chúng ta đã biết bộ giải pháp của CPPAI gồm ba phần: plugin ezyplatform cho các coding agent, lệnh ezy và image Docker. Bài này hướng dẫn cài đặt và dùng chúng theo đúng thứ tự. Các ảnh chụp màn hình được lấy trên macOS; Linux làm giống hệt, Windows chỉ khác lệnh cài đặt.
Chuẩn bị
- Một máy macOS, Linux hoặc Windows có kết nối Internet.
- Một tài khoản Claude (hoặc một coding agent khác được hỗ trợ: Codex, GitHub Copilot CLI, Cursor, oh-my-pi).
- Nếu muốn chạy EzyPlatform ngay trên máy: Docker. Không có cũng không sao,
ezy newsẽ đề nghị cài giúp. - Nếu muốn làm việc với site thật: một tài khoản admin của site đó.
Bạn không cần cài Python trước: trình cài đặt của ezy tự lo phần này.
Bước 1: Cài lệnh ezy
Chỉ cần một dòng lệnh. Trình cài đặt sẽ cài uv và cả Python 3.9+ nếu máy chưa có.
macOS / Linux
curl -LsSf https://raw.githubusercontent.com/cppai-vn/ezyplatform-cli/main/install.sh | sh
Windows (PowerShell)
powershell -ExecutionPolicy ByPass -c "irm https://raw.githubusercontent.com/cppai-vn/ezyplatform-cli/main/install.ps1 | iex"
Cài xong, mở một terminal mới rồi kiểm tra:
ezy --version
Sau này, cập nhật bằng ezy update và gỡ bằng ezy uninstall. Các thư mục dự án site của bạn luôn được giữ lại.
Bước 2: Cài coding agent và plugin ezyplatform
Lệnh ezy init chỉ cần chạy một lần cho mỗi máy. Nó tìm các coding agent đang có trên máy, cài plugin ezyplatform@cppai vào từng agent, rồi chạy ezy doctor để kiểm tra.
ezy init
Nếu máy chưa có coding agent nào, bạn sẽ thấy kết quả như sau:
ezy init khi máy chưa có coding agent: không có agent nào để cài plugin.Đã dùng Claude Code trong VS Code mà vẫn báo "not found"? Extension Claude Code cho VS Code mang theo chương trình claude riêng trong thư mục extension và không đưa lệnh claude vào PATH. ezy init cần gọi lệnh claude từ terminal, nên vẫn báo không tìm thấy. Hãy cài thêm Claude Code bản dòng lệnh như bên dưới; bản dòng lệnh và extension dùng chung cấu hình nên plugin cài một lần là cả hai cùng thấy.
Cài Claude Code bản dòng lệnh:
curl -fsSL https://claude.ai/install.sh | bash
Mở terminal mới, gõ claude một lần để đăng nhập, rồi chạy lại ezy init. Lần này plugin được cài vào Claude Code:
ezyplatform@cppai.Cách khác, không cần qua ezy init: gõ trực tiếp trong khung chat của Claude Code
/plugin marketplace add cppai-vn/agents-plugins
/plugin install ezyplatform@cppai
Dù cài theo cách nào, hãy mở một phiên Claude mới để các skill được nạp.
Mỗi agent chỉ nên nhận skill theo một cách: hoặc plugin, hoặc bản chép skill vào thư mục dự án. Cài cả hai thì agent sẽ thấy mỗi skill hai lần. ezy doctor sẽ báo nếu gặp trường hợp này.
Bước 3: Tạo dự án site
Mỗi site là một thư mục dự án trên máy. Lệnh ezy new tạo thư mục đó và hỏi site chạy ở đâu:
| Chế độ | Ý nghĩa | Khi nào dùng |
|---|---|---|
live | Kết nối với site thật qua --admin-url | Đã có site, muốn quản trị nó |
local | Tự dựng EzyPlatform + MySQL bằng Docker ngay trên máy | Học, thử nghiệm, làm site mới |
both | Có cả hai; mặc định làm việc với bản local, site thật dùng EZY_ENV=production ezy … | Thử trên local trước rồi mới đưa lên site thật |
Với người mới, nên bắt đầu bằng local để không ảnh hưởng đến site thật:
ezy new my-site --mode local
cd my-site
ezy new tạo cấu trúc dự án: environment.json, AGENTS.md, README.md, api/v1/media/, pages/…Với chế độ local, ezy new làm tiếp các việc sau:
- Kiểm tra Docker. Nếu thiếu, nó đề nghị cài: OrbStack trên macOS, Docker Engine trên Linux, Docker Desktop trên Windows.
- Tạo
docker-compose.ymlvà file.env(đã được git bỏ qua) với tên dự án Docker riêng, cổng còn trống và mật khẩu database ngẫu nhiên, rồi khởi động. - Chờ trang admin và website sẵn sàng, rồi thêm môi trường
localvàoenvironment.json.
Lần chạy đầu tiên tải khoảng 1 GB và mất vài phút. Trên máy Mac chip Apple, image chạy qua giả lập nên sẽ chậm hơn một chút.
docker-compose.yml cho bản local và environment.json để chứa access token.Nếu bạn đã có site thật, thay bằng:
ezy new my-site --mode live --admin-url https://admin.example.com
Bước 4: Tạo admin và lấy access token
Các lệnh ezy và AI agent làm việc với site thông qua access token của tài khoản admin.
- Với bản local, mở
http://127.0.0.1:9090/setup-adminvà tạo tài khoản super admin đầu tiên. Với site thật, đăng nhập bằng tài khoản admin sẵn có.
Màn hình "Cài đặt quản trị": nhập tên đăng nhập, email, mật khẩu, đồng ý điều khoản rồi bấm Gửi đi. - Mở trang
/admins/metrên trang admin, bấm hiện Access Token (nhập lại mật khẩu để xác nhận), rồi bấm Sao chép.
Trang Quản trị viên → Hồ sơ. Lưu ý Thời gian token hết hạn: khi token hết hạn, lấy token mới và dán lại. - Tự dán token vào
environment.json, đúng mục môi trường bạn dùng (localhoặc mục có"default": true), ở trườngadmin_access_token.
Không dán token vào khung chat với AI và không gửi cho ai. File environment.json đã được git bỏ qua, được đặt quyền chỉ chủ sở hữu đọc được, và các lệnh ezy không bao giờ in token ra màn hình.
Riêng bản local: cài plugin EzyArticle
Bản EzyPlatform mà ezy new --mode local dựng lên chỉ có phần lõi, chưa có EzyArticle, trong khi các lệnh ezy làm việc với trang, bài viết và fragment qua API của EzyArticle. Vì vậy cần cài EzyArticle trước khi sang bước 5:
- Đăng nhập trang admin
http://127.0.0.1:9090bằng tài khoản super admin vừa tạo. - Vào Modules → Add (
/modules/add), tìmezyarticlevà cài cả Admin Plugin lẫn Web Plugin. - Nếu trang admin yêu cầu khởi động lại, chạy
docker compose restart ezyplatformtrong thư mục dự án.
Với site thật đang chạy EzyArticle, bạn bỏ qua phần này.
Bước 5: Kiểm tra kết nối và bắt đầu làm việc
ezy check
ezy check thành công: đã kết nối, có quyền super_admin, thấy địa chỉ website và các fragment trên server.ezy check xác nhận token hợp lệ, cho biết bạn đang đăng nhập với vai trò gì và địa chỉ website là gì. Từ đây có hai cách làm việc, dùng xen kẽ được.
Cách 1: Trò chuyện với AI agent
Mở Claude Code trong thư mục dự án và nói bằng ngôn ngữ tự nhiên, ví dụ:
- "Kiểm tra cấu hình EzyPlatform giúp tôi"
- "Kéo toàn bộ nội dung site về, cả tiếng Việt và tiếng Anh"
- "Thiết kế lại trang chủ theo phong cách tối giản, giữ hai ngôn ngữ đồng bộ"
- "Publish trang chủ"
Skill ezy-guide sẽ chọn đúng skill cho từng việc. Agent luôn xem trước thay đổi và hỏi bạn trước khi ghi lên site.
Cách 2: Tự gõ lệnh
ezy pull-all --langs vi,en # chạy thử: xem sẽ kéo những gì
ezy pull-all --langs vi,en --write # kéo nội dung về máy
ezy status # so sánh bản trên máy với server
ezy publish plan page:home # xem trước những gì sẽ thay đổi
ezy publish apply page:home --yes # sao lưu → publish → kiểm tra
Đích của lệnh có dạng page:<slug> hoặc fragment:<page_name>/<fragment_name>. Sau khi publish, lệnh in sẵn câu lệnh khôi phục để bạn quay lại bản cũ nếu cần. Xem toàn bộ lệnh bằng ezy --help.
Quy trình chuẩn cho mỗi thay đổi:
sync status → sửa → media / i18n → verify preview
→ người duyệt → publish apply (sao lưu trước) → verify live
Những quy tắc an toàn cần nhớ
Mặc định chỉ chạy thử
Mọi lệnh ghi lên site (publish, khôi phục, xóa, media, i18n, mail) chỉ chạy thử nếu không có --yes.
Luôn có bản sao lưu
Trước khi publish, bản đang có trên server được lưu lại trong thư mục dự án để khôi phục bằng một lệnh.
Xóa là đưa vào Thùng rác
Trang bị xóa được chuyển vào Thùng rác của admin và có thể khôi phục bằng ezy publish restore.
Xử lý sự cố thường gặp
| Hiện tượng | Cách xử lý |
|---|---|
ezy init báo Claude Code "not found" | Cài Claude Code bản dòng lệnh (bước 2), mở terminal mới rồi chạy lại. |
| Agent thấy mỗi skill hai lần | Chạy ezy doctor, giữ lại một cách cài duy nhất (plugin hoặc bản chép). |
ezy check báo lỗi 401 | Token sai, hết hạn hoặc dán nhầm mục môi trường. Lấy lại token ở /admins/me. |
ezy check báo HTTP 200 — non-JSON response | Token vẫn đúng nhưng máy chủ chưa cài EzyArticle, nên các API /ezyarticle/... trả về trang HTML của admin. Cài EzyArticle như ở bước 4 rồi chạy lại. |
| Bản local khởi động lâu | Bình thường ở lần đầu (tải image, giả lập trên Mac chip Apple). Xem log bằng docker compose logs -f ezyplatform. |
| Bài hoặc trang mới chưa có trên server | ezy publish chỉ cập nhật nội dung đã có. Tạo lần đầu bằng extension EzyArticle cho VS Code (lệnh "Publish Content To Server"), từ lần sau dùng ezy publish. |
Quản lý bản local trong thư mục dự án:
docker compose stop # tạm dừng
docker compose up -d # chạy lại
docker compose logs -f ezyplatform # xem log
docker compose down -v # xóa hẳn, kể cả dữ liệu
Tiếp theo
Bạn đã có một dự án site kết nối được với EzyPlatform và một AI agent biết cách làm việc với nó. Các bài tiếp theo trong loạt bài sẽ đi sâu vào từng việc cụ thể. Xem danh sách đầy đủ tại mục lục loạt bài.
Young Monkeys - Founder