dsh-plugin-custom-headers
Verifieddsh-plugin-custom-headers · v0.1.0 · MIT · Web UI
Custom request headers settings page for DeepSeek Harness: per-route HTTP headers for custom model (llm-pi-ai) providers, written into the llm-pi-ai user settings section
Install
dsh plugin add dsh-plugin-custom-headers Confirm the layer applied with dsh --profile default --dump-config — see the install guide.
Source
Tags
Creators
Readme
dsh-plugin-custom-headers
为 DeepSeek Harness 的 Web 界面添加一个「自定义请求头」设置页:为自定义模型(llm-pi-ai 提供方路由)配置随每次模型请求发送的 HTTP 请求头。
- 路由列表来自
llm-pi-ai的 provider profile(显示名 + 路由 id)。 - 「填入 Codex CLI 模板」一键填入一组 Codex CLI 请求头。
user-agent是 Harness 强制署名的保留名(pi-ai 适配器会剥离它),页面会标记该行并在保存时跳过。- 保存的配置写入用户设置文档(
settings.yaml的llm-pi-ai.providers.<route>.headers),重启后依然生效。 - 纯浏览器插件:页面注册一个
settings.section条目,通过 DSH 自带的 settings 远程接口读写,无需修改宿主、无需重编译、无需改 apiproxy 白名单(llm-pi-ai命名空间本来就在白名单里,模型页在用)。
安装
前置条件:
- Node.js ≥ 22.19(DSH 的运行要求)。
- 已安装并用
webprofile 启动的 DeepSeek Harness(本插件是 Web 界面插件)。 - 已在「模型」设置页添加至少一个自定义模型(
llm-pi-ai路由)——插件只为这些路由配置请求头,没有自定义模型时页面会提示先去添加。
1. 安装插件
dsh plugin --profile web add dsh-plugin-custom-headers
这条命令等价于在 profile 目录执行 pnpm add,并自动把包登记为 bundle 层(因为包声明了 dsh.bundle.patch),无需手动改任何配置文件。
2. 重启并打开
重启 DSH(或刷新 Web 页面),让新插件进入浏览器 roster。
3. 使用
打开 设置 → 自定义请求头:
- 在「提供方路由」下拉里选择要配置的模型;
- 点「+ 添加请求头」逐行填写请求头名和值,或点「填入 Codex CLI 模板」一键填入;
- 点「保存」。保存后写入
settings.yaml的llm-pi-ai.providers.<route>.headers分节,重启后依然生效,后续模型请求都会携带这些请求头。
user-agent是 Harness 强制署名的保留名,页面会标记该行并在保存时跳过,无法覆盖。
卸载
dsh plugin --profile web remove dsh-plugin-custom-headers
备选:也可以直接从 GitHub 仓库安装(无需发布 npm):
dsh plugin --profile web add github:DJ1667/dsh-pluging-ui-settings-custom-headers但 GitHub 安装不会触发 npm 的prepack构建,仓库里必须提交了构建好的lib/才能用(本仓库未提交lib/,因此建议走 npm 安装)。
工作原理(为什么不需要重编译)
DSH 的插件安装走 profile bundle 机制(apps/cli/src/plugin.ts):
dsh plugin add <包>在 profile 目录执行pnpm add,包声明了dsh.bundle.patch就会被自动登记为 bundle 层;- 启动时该层的
cordis.patch.yml把插件插入浏览器 roster; dsh-client-modules扫描到包声明dsh.client.platform: "web",直接服务exports["./client"]指向的构建产物(lib/client.js),浏览器动态加载。
所以发布包里必须包含构建好的 lib/client.js(prepack 脚本会在发布前自动构建)。
构建与发布
pnpm install
pnpm run bundle # 产出 lib/index.js、lib/invariant.js、lib/client.js、lib/types/
npm login # 首次发布需要登录 npm 账号
npm publish # prepack 会自动重新构建
注意:lib/client.js 里写入的模块 id 取自 package.json 的 name,浏览器模块表按包名查找。改包名时务必同步改 cordis.patch.yml 里的 name 字段(tsdown 配置会自动跟随 package.json,不用改)。
兼容性
- 依赖 DSH 自带(官方仓库已包含)的
dsh-llm-pi-ai适配器来合并请求头,无需额外安装。 peerDependencies里的@deepseek-ai/dsh-*版本范围要和安装方运行的 DSH 版本线匹配(当前为0.1.0-rc.x),@deepseek-ai/cordis是独立版本线(4.x)。DSH 升级到新版本线时,可能需要同步调整这里的范围。- 请求头数据(
llm-pi-ai.providers.<route>.headers)中如果包含apiKey明文,请改用apiKeyEnv引用环境变量,避免配置泄露。
开发
pnpm install
pnpm run bundle --watch # 增量构建
pnpm run typecheck
License
MIT