这三个名词分别回答“运行哪套组合”“分发哪组配置”“执行哪段能力代码”。
Profile
Profile 位于 $DSH_HOME/profiles/<name>,是一个具名的可运行组合。它保存 Bundle 清单、外部插件依赖和自身 cordis.patch.yml。
Bundle
Bundle 通过 npm 包分发一组 Cordis 配置条目,并在 package.json 的 dsh.bundle.patch 字段声明 Patch 文件。
Plugin
Plugin 是实际向 Cordis ctx 注册服务、事件、工具或其他能力的模块。Bundle 可以加载多个 Plugin,一个 Profile 也可以组合多个 Bundle。
配置叠加顺序
后应用者胜出:
- Profile manifest 中的 Bundle,按列表顺序;
- Profile 的
cordis.patch.yml; - Home 级
$DSH_HOME/cordis.patch.yml; - 命令行
--patch,按参数顺序。
dsh --profile web --dump-default-config
dsh --profile web --dump-config
dsh --profile web --patch ./extra.cordis.yml --dump-config
关键警告:不是深合并
Patch 会替换目标条目的整个 config。如果原配置里还有端口、运行时表达式或其他字段,只覆盖其中一个键也可能把其余字段一起删除。
用字面 config 替换含 !!js 的条目时,还可能让 --port 等应用参数不再生效。修改后一定要运行 --dump-config 检查最终结果。
安装与移除外部插件
dsh plugin --profile my-profile add <package-or-git-spec>
dsh plugin --profile my-profile remove <package>
pnpm 10+ 默认阻止 Git 源码依赖的 prepare。加入 allowBuilds 等于允许包在 Agent sandbox 之外执行安装时代码;只应允许可信来源,并 pin commit。
证据与修订
一手来源
本页叙事经过压缩;命令、行为与风险边界以以下官方源码或文档为准。