系列教程
41 节
Codex 教程
按顺序阅读,循序渐进掌握相关 AI 工具与实战方法。
从「ChatGPT (Codex) 教程」开始
上一篇写好了 hello-plugin 的源码,这一篇把它真正加载进 Web UI。要用到两个东西:patch 覆盖层 cordis.yml 和 --patch 启动参数。
在已有的 scratch-plugin/src 旁边再加一个 cordis.yml,整个临时项目长这样:
scratch-plugin/
├── src/
│ └── my-plugin.ts # 插件源码(上一篇写的 hello-plugin)
└── cordis.yml # patch 覆盖层:告诉框架插入哪个插件
先在仓库根目录运行 pwd 拿到绝对路径,然后创建 scratch-plugin/cordis.yml:
# 文件路径:scratch-plugin/cordis.yml
# 这是一个 Web 覆盖层(overlay),只负责插入本地插件
- insert:
- id: hello
# name 是插件文件路径,必须是绝对路径!
name: '/absolute/path/to/deepseek-harness/scratch-plugin/src/my-plugin.ts'
把 /absolute/path/to/deepseek-harness 替换成 pwd 打印的真实路径。插件路径必须是绝对路径,相对路径无法解析。
保持终端位于仓库根目录,用这个覆盖层启动 Web UI:
pnpm dsh web --patch ./scratch-plugin/cordis.yml
启动期间终端会打印 [hello-plugin] plugin loaded!;打开 http://127.0.0.1:3080,在设置的插件列表里搜索 hello,就能看到刚安装的插件。
dsh 会把多个配置来源按顺序叠加成一份最终配置,--patch 传入的 cordis.yml 就是启动时叠加进 profile 的一个覆盖层:
| 概念 | 是什么 | 作用 |
|---|---|---|
| profile | 一份可启动的组装配置 | 决定 Web UI 由哪些组合包组成 |
| patch 覆盖层 | 启动时额外叠加的 yml | 插入本地插件、覆盖某项配置 |
| insert | patch 里插入插件的语法 | 按 name 的绝对路径加载插件 |
提示:--patch 适合本地开发调试;要把插件交付给其他人时,应该用组合包(bundle)的方式。