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