把写好的 hello-plugin 通过 patch 覆盖层 cordis.yml + --patch 启动参数 加载进 Web UI。
scratch-plugin 目录结构
1scratch-plugin/
2├── src/
3│ └── my-plugin.ts # 插件源码
4└── cordis.yml # patch 覆盖层:告诉框架插入哪个插件
cordis.yml 的 insert 语法
1# 文件路径:scratch-plugin/cordis.yml
2# 这是一个 Web 覆盖层(overlay),只负责插入本地插件
3- insert:
4 - id: hello
5 # name 是插件文件路径,必须是绝对路径!
6 name: '/absolute/path/to/deepseek-harness/scratch-plugin/src/my-plugin.ts'
注意:把 /absolute/path/to/deepseek-harness 替换成 pwd 打印的真实路径。
启动命令
1pnpm dsh web --patch ./scratch-plugin/cordis.yml
启动期间终端会打印 [hello-plugin] plugin loaded!。打开 http://127.0.0.1:3080,在设置插件列表中搜索 hello 可以看到安装的插件。
要点
- 插件路径必须是绝对路径。
- patch 文件只贡献配置,不会改变 loader 解析模块路径时使用的 profile 目录。
- dsh 把多个配置来源按顺序叠加成一个最终配置,
--patch传入的 cordis.yml 在启动时叠加进 profile。
--patch 适合本地开发调试;要把插件交付给其他人时,用组合包(bundle)的方式(见 bundle 与 profile)。| 概念 | 是什么 | 作用 |
|---|---|---|
| profile | 一份可启动的组装配置 | 决定 Web UI 由哪些组合包组成 |
| patch 覆盖层 | 启动时额外叠加的 yml | 插入本地插件、覆盖某项配置 |
| insert | patch 里插入插件的语法 | 按 name 绝对路径加载插件 |