🎁 福利专区全网大模型免费应用 + 新用户福利 + 注册活动入口,低成本玩转 AI

提供方请求头 duanyunlun/dsh-provider-headers

DeepSeek 客户端v0.1.2
duanyunlun54 天前有提交已提供中文文档扫描:未发现敏感能力兼容 / 相关生态

在模型设置页为每个提供方增删自定义请求头

29.4/100
综合分
0
GitHub 星标
50
npm 周下载
—/5
用户评分

数据截至 2026/9/16 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。

相关生态插件(非 dsh 原生,按其对应运行时安装)
git clone https://github.com/duanyunlun/dsh-provider-headers.git

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:已验证
是什么[目录]—
生态插件
可安装,未声明 dsh 能力
暂无时间戳·判据 →
装得上吗[实装验证]✓
本站已在 dsh 0.2.1-rc.2 下真实安装成功
非静态推断
L4 · 真实安装等级说明 →
数据截至 2026/10/26·判据 →
安全吗[自动扫描]—
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
数据截至 2026/11/04·判据 →
还在维护吗[仓库]—
更新放缓:最近一次提交在 54 天前
暂无时间戳·判据 →
图例:✓ 通过! 需注意— 未判定 / 无数据· 「未判定」= 本站尚无数据,不代表插件有问题
档位由哪些信号合成

本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。

验证判据与等级说明 →

可信度证据

安装兼容性检查✓ 自动检查通过
展开查看检查明细 ↓

以下结论由程序自动检查 npm 包、engines 声明与入口文件得出,未做人工实机验证——能装不等于用着没问题。

✓npm 包dsh-provider-headers @ 0.1.2
✓Node 引擎要求 ^22.19.0 || >=24.0.0 · 基线 Node 22.19 满足
✓dsh CLI 依赖未声明 dsh 版本约束
✓入口文件main/exports/bin 已声明

验证方式:npm registry 存在性 + package.json 静态校验 · 最后检查 2026/9/22 17:51:01

安全扫描自动 · 静态分析源码
v2.7.0
🟢 扫描:未发现敏感能力尚无人工评估
展开查看扫描说明与证据 ↓

静态扫描未发现敏感能力:最多只发网络请求、读取自身元数据或只读文件,未发现执行命令、文件写入或敏感信息读取。

发起外部网络请求
查看扫描证据(共 1 处,展示前 1 条)
  • 发起网络请求
    index.js:84
    const wrapped = function fetch(input, init) {
扫描于 2026/11/4(0 天前) · 范围 入口闭包 + 全包扫描 · 来源 npm 发布包

静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。

社区实装还没有人打卡 · 装过的第一个就是你
依赖的 DSH / Cordis 模块
@deepseek-ai/cordis
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

功能亮点

  • 按服务商配置请求头
  • 增删自定义请求头
  • 会话变量展开

DeepSeek Harness 模型设置页里按服务商配置请求头,并支持按会话展开 ${sessionId}。

README

由 DeepSeek 最新模型翻译生成
dsh-provider-headers 给 DeepSeek Harness(dsh)的模型设置页加上“自定义请求头”编辑器:在每一个 pi-ai 提供方的卡片里直接增删请求头,并把 ${sessionId} 按会话展开。 不修改任何 dsh 源码,也不修改打包好的应用。 全部通过 dsh 的插件机制完成:UI 走模型设置页官方预留的扩展槽,配置写进 Harness 自带的字段,卸载后完全还原。 它解决什么问题 dsh 本身就支持按提供方配置请求头——llm-pi-ai.providers..headers。它会被: - 合并进该路由的模型请求(packages/llm/llm-pi-ai/src/adapter.ts) - 合并进该路由的「获取可用模型」请求(packages/llm/llm-pi-ai/src/discovery.ts) 但这个字段只在 settings.yaml 里手写,模型设置页没有入口(packages/client/ui-settings-models/README.md 明确写了这一点,页面上的提示也让你“直接编辑 settings.yaml”)。 本插件补上这个入口,并额外解决一件原生配置做不到的事:值随会话变化。 安装 需要 Node.js ^22.19.0 || >=24.0.0 和 pnpm。
展开完整文档(README 剩余 1 节)
dsh-provider-headers

给 DeepSeek Harness(dsh)的模型设置页加上“自定义请求头”编辑器:在每一个 pi-ai 提供方的卡片里直接增删请求头,并把 ${sessionId} 按会话展开。

不修改任何 dsh 源码,也不修改打包好的应用。 全部通过 dsh 的插件机制完成:UI 走模型设置页官方预留的扩展槽,配置写进 Harness 自带的字段,卸载后完全还原。

它解决什么问题

dsh 本身就支持按提供方配置请求头——llm-pi-ai.providers..headers。它会被:

- 合并进该路由的模型请求(packages/llm/llm-pi-ai/src/adapter.ts)
- 合并进该路由的「获取可用模型」请求(packages/llm/llm-pi-ai/src/discovery.ts)

但这个字段只在 settings.yaml 里手写,模型设置页没有入口(packages/client/ui-settings-models/README.md 明确写了这一点,页面上的提示也让你“直接编辑 settings.yaml”)。

本插件补上这个入口,并额外解决一件原生配置做不到的事:值随会话变化。

安装

需要 Node.js ^22.19.0 || >=24.0.0 和 pnpm。

已发布到 npm 后
dsh plugin --profile desktop add dsh-provider-headers

从本地目录安装
dsh plugin --profile desktop add /path/to/dsh-provider-headers

或者先打包再装
npm pack
dsh plugin --profile desktop add ./dsh-provider-headers-0.1.0.tgz

把 desktop 换成你实际使用的 profile 名(dsh 默认 profile 是 web)。装完重启该 profile,插件的浏览器半才会被页面加载。

本包声明了 dsh.bundle.patch,因此它作为 bundle 插件进入 profile 的 dsh.profile.bundles 层栈——不需要手工写挂载行,设置页也能直接启用 / 禁用 / 卸载它。

卸载:

dsh plugin --profile desktop remove dsh-provider-headers

已写进 settings.yaml 的请求头不会被主动删除。

进入插件市场

npm 上的包本身不会自动出现在市场的设置页里。市场索引由第三方仓库 DSH-Plugins-Marketplace 维护,按 GitHub 的 dsh-plugin topic 全量抓取(约 3100 条):

1. 把本仓库推到 GitHub。
2. 打上 dsh-plugin topic;再加 deepseek-harness-plugin、request-headers 提升搜索命中。
3. 在 package.json 补 repository / homepage / bugs——安装器的“已安装判定”会做包名与 repository 的双向匹配。

索引抓取有延迟,仓库建好不会立刻出现。安装器在 npm 已发布时优先走 npm。

使用

1. 打开 设置 → 模型。
2. 展开任意一个 pi-ai 提供方(DeepSeek 官方、内置第三方、自定义提供方都算)。
3. 卡片里会出现 「自定义请求头(N)」,展开后按 名称 / 值 逐行填写。
4. 点 保存。写入位置就是 Harness 原生的那个字段。

以 OpenCode Go 为例

OpenCode 从 09/05 起要求所有推理请求带 x-opencode-session,且需要一个每会话稳定的 ID。在 opencode-go 卡片里加一行:

| 名称 | 值 |
| x-opencode-session | ${sessionId} |

保存后,每个会话的请求都会带上属于它自己的 ID。落在 settings.yaml 里是这样:

llm-pi-ai:
providers:
opencode-go:
apiKeyEnv: OPENCODE_GO_API_KEY
headers:
x-opencode-session: ${sessionId}

也可以完全不写占位符,填一个固定值——那部分由 Harness 原生逻辑处理,插件不参与。

${sessionId} 是怎么生效的

Harness 无法自己展开它:一个提供方 profile 按路由解析一次,同一路由下所有会话共用同一个值。

所以插件的宿主半做了两件事:

1. 监听 llm/stream 瀑布,把一次流式调用放进一个携带该调用会话 ID 的 AsyncLocalStorage 作用域。
2. 在插件生命周期内包装 globalThis.fetch;只有落在上述作用域内的请求才会被附加展开后的请求头。

作用域之外的任何请求原样透传给原来的 fetch,其他插件后装的 wrapper 也不会被本插件卸载时覆盖掉。

只有值里含占位符的请求头走这条路径;固定值的请求头仍然走 Harness 原生逻辑。

配置

- id: model-headers
config:
dynamic: true # 默认 true;设为 false 则完全不安装 fetch 包装与监听器
hosts: [] # 默认空 = 作用域内所有主机;填写则按主机后缀收窄

已知限制

- 只覆盖 pi-ai 路由。 llm-deepseek 的 Config 里根本没有 headers 字段(请求头是硬编码的),所以 DeepSeek 官方路由的卡片不会出现这个编辑器,需要先改 Harness 本体。
- user-agent 不能覆盖。 它是 Harness 的归属标识,原生路径与插件路径都会跳过它。
- ${sessionId} 只覆盖流式模型请求。 「获取可用模型」是一次由 UI 触发的一次性请求,不经过 llm/stream,因此那里仍然发送字面量。固定值不受影响。
- 编辑器渲染在卡片里、「编辑」表单之外,因为模型设置页只开放了这一个槽位。
- 请求头的值以普通文本存在 settings.yaml,不会被脱敏。不要把密钥写进请求头,用 Harness 的凭据字段(apiKeyEnv)。

开发与验证

npm test # 两组检查,零依赖,不碰 dsh 运行时
npm run test:load # 真 Cordis 加载检查(需 @deepseek-ai/cordis)

- test/verify.mjs —— 宿主半:假 ctx + 记录型 fetch,验证展开确实到达线上请求、并发会话互不串号、保留名不被附加、作用域外的请求不受影响、卸载能还原 fetch。ctx 是严格代理,读没声明的属性就抛错,与 Cordis 一致。
- test/verify-client.mjs —— 浏览器半:把 client.js 当作页面模块队列里的产物加载,用极小的 React 桩驱动组件,验证注册的槽位与 key、以及写出的 path op 恰好落在 providers..headers 上并按 revision 加锁。ctx 同样是严格代理,且允许列表从插件导出的 inject 推导。
- test/load.mjs —— 用真的 Cordis 加载宿主半并断言 fiber 到达 ACTIVE。它同时会加载一个故意写坏的孪生插件并要求它 FAILED,否则这个检查全绿也没有意义。

两个已经踩过的坑,以及现在的检查为什么能挡住

一、配置从哪来。 0.1.0 用 ctx.config 读配置,而 Cordis 把配置作为 apply 的第二个参数传入。读未声明的属性会让 apply 抛错,进而整棵插件树加载失败(DSH 是 fail-loud 设计)。只有 test/load.mjs(真 Cordis)挡得住这类错误。

二、点号 inject 不等于服务本身。 0.1.1 声明的是 inject: ['slots', 'remote.settings', 'locale'],却访问 ctx.remote.settings。声明 remote.settings 只表示"等那个命名空间挂载",不表示允许读 ctx.remote——这是两件事,必须两个都声明。结果插件加载正常,但每次读设置都抛 cannot get property "remote" without inject,编辑器渲染成一条错误。

第二个坑没被拦住,是因为当时的测试手写了允许列表,而我把 remote 也写了进去。现在允许列表从插件自己导出的 inject 推导(只取不含点号的根名,加上核实过存在于 Cordis Context 上的核心方法),手写清单再也无法掩盖"声明"与"访问"的错配。

许可证

MIT
预览分享卡片长什么样 ↓duanyunlun/dsh-provider-headers
分享 · DeepSeek Harness Hub
duanyunlun/dsh-provider-headers

在模型设置页为每个提供方增删自定义请求头

这个插件是你维护的吗?
作者本人可认领并核对本条目;认领通过后,详情页会显示「作者已认领」标记。
认领条目 →
回到顶部