Chuyển đến nội dung chính

Profile so với bundle

Hai thứ mà các lệnh cài làm việc cùng, và vì sao danh mục chỉ liệt kê một trong hai.

Các lệnh cài làm việc với hai đối tượng khác nhau: bundle, là các package, và profile, là các tổ hợp package. Sự khác biệt giải thích cả cách CLI hoạt động lẫn danh mục chứa những gì.

Bundle là một package

Một bundle là một package npm có package.json khai báo manifest dsh.bundle. Khai báo đó là thứ khiến nó thành plugin chứ không phải thư viện: nó mang theo một layer patch (cordis.patch.yml) và module mà layer tham chiếu, và cài nó vào một profile sẽ kích hoạt layer đó. Bundle là thứ các tác giả publish, và là thứ duy nhất danh mục này liệt kê.

Profile là một tổ hợp

Một profile là một tổ hợp bundle chạy được: danh sách cộng với thứ tự của nó. CLI quản lý profile cho bạn — cài thì thêm một bundle, gỡ thì bỏ nó đi, và thứ tự của danh sách là thứ tự các layer được áp, với các bundle sau ghi đè các bundle trước. Một profile là trạng thái cục bộ, được sinh ra trên máy của bạn ($DSH_HOME/profiles/<name>), không bao giờ được publish và không bao giờ được liệt kê trong danh mục.

Một quy trình điển hình

Gọi tên một profile trong lệnh cài và lần cài đầu tiên sẽ tạo ra nó, gieo @deepseek-ai/dsh-base làm bundle đầu tiên. Cài một vài bundle, rồi xác nhận các layer đã áp theo đúng thứ tự:

dsh plugin --profile demo add <bundle-a>
dsh plugin --profile demo add <bundle-b>
dsh --profile demo --dump-config

Kết quả verify hiển thị các layer theo thứ tự bundle của profile, tức thứ tự profile sẽ áp lúc khởi động. Gỡ một bundle cũng theo cách đó khi xong:

dsh plugin --profile demo remove <bundle-b>

Vì sao sự phân biệt này quan trọng

Nếu bạn chỉ nhớ một điều: danh mục là một danh sách các bundle. Profile là câu trả lời cục bộ của bạn cho "tôi chạy những bundle nào cùng nhau, và theo thứ tự nào" — hai máy có thể có những profile hoàn toàn khác nhau dựng từ cùng các mục. Khi một package vắng mặt trong danh mục nhưng cài được ở máy cục bộ, hãy kiểm tra xem nó có thực sự khai báo dsh.bundle không: không có nó, package là một thư viện cài vào được profile nhưng không thêm layer nào.

Không khái niệm nào thay thế khái niệm kia. Bạn publish một bundle một lần và tái dùng nó trong bao nhiêu profile tùy thích, và mỗi profile đều tái tạo được từ cùng các bundle công khai. Đó là toàn bộ mô hình: bundle là đơn vị phân phối, profile là đơn vị thực thi.

Cập nhật lần cuối 2026-08-22