morlay/dsh-plugin--packages-preset-dsh-preset ↗★ 9
@morlay/dsh-preset
Personal dsh profile bundle: disables the shipped agent presets, builds generated standard / collaboration presets into dist, declares personal llm-pi-ai provider routes, and carries the deployment sandbox access rules. 禁用官方预设并构建个人专属的提示词、服务商路由和沙箱规则,适合深度定制个人环境。
설치
npx -p @deepseek-ai/dsh dsh plugin --profile web add github:morlay/dsh-plugin#17db2e513964877a60c0d965cb6696c6539337f8&path:packages/preset/dsh-preset@morlay/dsh-preset
个人用 dsh profile bundle。包的实体是 cordis.patch.yml 与构建产出的 dist/presets/(bundle patch 由
dsh.bundle.patch 声明、profile 组合器经该字段解析)。
设计与取舍(禁用官方 roster 的理由、persona / reminder 的提示词分层、生成器机制、patch 层级与放置)见 设计 预设生成与装配。
内容
| 文件 | 作用 |
|---|---|
cordis.patch.yml | bundle patch:禁用官方 preset、注册本包 preset 为默认、声明个人 llm-pi-ai route、覆盖沙箱规则、禁用官方 office-to-pdf 与 subagent-model-selection-settings 行、插入 prompt-reminder / reference-injection 行 |
tool/generate-presets.ts | 从上游生成 preset 的模块 + tsdown hooks(standard 产物末尾追加 工具按需注入 行;并禁用 planning 组——本部署不用 plan 模式) |
dist/presets/standard/ | 构建产物:默认 preset「标准模式」(由上游 standard 生成,起始只启用基础工具组) |
dist/presets/collaboration/ | 构建产物:自定义 preset「协作模式」(同一上游 standard 生成,起始档位含协作编排组) |
装配
agent-presets 行把 roots 指向本包的 dist/presets/(default: standard、
includeShippedRoot: false、trust: system)。该目录随包分发,位置只能在运行期解析,
因此用 !!js 表达式从 profile 的 baseUrl 起 createRequire 解析包路径——表达式本体
与行内容见 cordis.patch.yml,机制与理由见
设计 预设生成与装配。
桌面形态:桌面宿主把 agent-presets.roots 固定为 dsh 包内的 config/agent-presets
挂载点(system root),上面的 !!js roots 在桌面 profile 里被覆盖。app 工作区改用
dsh.desktop.agentPresets 声明本包的 dist/presets,由
dsh-desktopify 在 dev 项目与种子 profile 里把内容
物化到该挂载点。
office 相关
两类 office 内容归属不同,本包只管得住其中一个(判断依据、上游证据与上游需求见 设计 预设生成与装配):
- Office→PDF 转档后端(
@deepseek-ai/dsh-office-to-pdf)是官方 web-app bundle 的 profile 行: 本 bundle 的cordis.patch.yml按 id 覆盖disabled: true,不启用。副作用是 Sidebar 文档预览的 Office 标签页(docx / xls(x) / ppt(x))显示unavailable。 - office skill(
@deepseek-ai/dsh-skill-office的 docx / pptx / xlsx 三个 skill)不是 profile 行——上游桌面 宿主命令式装载它,bundle / preset patch 都没有旋钮。桌面形态改由 dsh-desktopify 的 host 变体 (@morlay/dsh-desktop-host)决定:该变体既不装载 officeSkills, 也不再随包它的 assets,因此桌面里不出现这三个 skill。
生成与升级
产物由 tsdown 的 build:done hook 在每次 pnpm build 时生成。单独重生成(默认输出
dist/presets,可传目录)——生成器没有单独的 npm script,直接跑脚本:
pnpm exec tsx packages/preset/dsh-preset/tool/generate-presets.ts [outDir]
上游升级与适配流程见 dsh-plugin-upstream-sync 技能。
维护注意
- 本 bundle patch 插入的每一行,其
name都必须能被 profile 的依赖树解析:本包dependencies已声明@morlay/dsh-sandbox-local/@morlay/dsh-prompt-reminder/@morlay/dsh-reference-injection/@morlay/dsh-tool-gating,因此 app 的 preset 相关依赖只声明@morlay/dsh-preset;换工作区时要保证这些包在依赖树里可达,否则对应装配行加载失败。生成器写进 standard 产物的tool-gating行同属这一类。 - 提示词与规则变化要重启:profile 在启动时装载,
system-prompt的 section 与access规则在插件构造时注册 / 解析。dev 模式重启just custom dev/just custom desktop,打包形态 需重新just custom bundle(patch 随 seed 快照复制)。 - dev 模式需要先构建:
just custom dev/just custom desktop/just custom bundle都先跑preset-build(pnpm --filter @morlay/dsh-preset run build)。dist/presets只在 build 时生成, 源码树里没有,新克隆下直接起 profile 会找不到 preset。 - 发布产物:
package.json的files必须含dist(preset 在其中)与tool,判据见 设计 预设生成与装配。