dsh-provider-headers

DSH PLUGIN浏览器与联网

仓库 duanyunlun/dsh-provider-headers

浏览器与联网 L5 · 运行验证通过 安全审查:低风险 可信度:金 可安装插件
安装这个插件

为 DeepSeek Harness 模型设置页补上按提供方编辑请求头的入口,并支持 ${sessionId} 按会话动态展开,无需改动 dsh 源码。

一句话选型结论

按资料字段整理

dsh-provider-headers 是浏览器与联网类的 DSH 可安装插件,验证等级 L5 · 运行验证通过,安全审查为低风险,列出 4 项功能,有可直接复制的安装命令。验证通过不等于安全:插件会读写文件、执行命令或联网,装前先到仓库确认它做了什么;涉及密钥或系统权限的,建议先在隔离环境试装。

分类浏览器与联网 收录类型可安装插件 验证等级L5 · 运行验证通过 安全审查低风险
验证等级 L5 L5 · 运行验证通过
GitHub 星标 0 复刻 0 · 未关闭 issue 0
最近更新 2026-09-11 创建于 2026-09-11
README 7.5 KB 正文体量,越大说明说明书写得越细

安装

可安装插件
在 DSH 里执行,装完用 dsh plugin list 确认已挂上;标了 L4 / L5 的命令已在沙盒里真实跑通
dsh plugin --profile web add dsh-provider-headers@0.1.2
  1. 1
    确认版本与运行环境

    兼容的 DSH 版本为 0.2.0-rc.2 等 8 个;版本不匹配时安装会报错。

  2. 2
    执行安装命令

    在 DSH 里执行上面的命令;多包仓库要注意区分具体子包名,别装错包。

  3. 3
    确认已挂载

    用 dsh plugin list 查看列表里是否出现这个插件,出现即挂载成功。

  4. 4
    试跑并检查权限

    加载后跑一个最小用例,确认它能正常工作;同时看它申请了哪些文件、命令或网络权限。

兼容 DSH 版本0.2.0-rc.2 等 8 个版本版本不匹配时安装会报错
Node.js 要求未标注来自仓库 package.json 的 engines 字段
前置依赖无需要同时安装的同级依赖
npm 包名未发布到 npm可用 npm view 查看包信息

能做什么

4 项功能
字段来自项目仓库与公开索引,中文说明由本站标注

dsh-provider-headers:为 DeepSeek Harness 模型设置页补上请求头编辑器

  • 模型设置页内编辑请求头
  • ${sessionId} 按会话动态展开
  • 写入原生 settings.yaml 字段
  • 卸载后完全还原

上游标签

deepseek-harnessdeepseek-harness-plugindshdsh-pluginrequest-headers

验证等级与安全审查

L5 · 运行验证通过
自动化流程结论,不是人工审核
验证等级L5 · 运行验证通过在 dsh 沙盒中完成安装与运行冒烟——装得上、跑得起来
安全审查低风险静态分析结论,未标注不代表已通过审查
仓库健康度活跃按仓库活跃度与最近更新时间给出
可信度金综合仓库活跃度与验证结果

上面的结论来自上游最近一次自动化验证(2026-10-08): 同一套检查会在插件发新版后重跑,页面显示的是最新一次的逐项结果。

逐项检查结果

L1 · 已找到 ✓ 通过
  • L1.0_DEFAULTED_FROM_L3 由 L3 推定 默认通过——L3 安装规范已通过(全库 L3 扫描策略)
L2 · 结构化 ✓ 通过
  • L2.0_DEFAULTED_FROM_L3 由 L3 推定 默认通过——L3 安装规范已通过(全库 L3 扫描策略)
L3 · 安装规范 ✓ 通过
  • L3.1_INSTALL_COMMAND_PARSED 安装命令已解析 方式:安装规范解析
  • L3.2_DSH_VERSION_DECLARED DSH 版本已声明 方式:DSH 版本声明
L4 · 安装已测 ✓ 通过
  • L4.1_INSTALL_EXECUTED_CONFINED 受限沙盒内执行安装 方式:沙盒安装执行
  • L4.2_INSTALL_SUCCESS 沙盒安装成功 方式:沙盒安装执行
  • L4.3_ARTIFACT_CONFIRMED 安装产物已确认 方式:沙盒安装执行
L5 · 运行已测 ✓ 通过
  • L5.1_INSTALL_PASSED_SANDBOXED 沙盒安装通过 方式:沙盒安装执行
  • L5.2_WEB_BOOT_READY Web 启动就绪 方式:Web 启动
  • L5.3_HTTP_SERVED HTTP 服务响应 方式:HTTP 请求
  • L5.4_PLUGIN_INVENTORY_ACTIVE 插件清单中已激活 方式:插件清单查询

风险详情

  • 审查结论 通过
  • 结论说明 vet 静态分析未发现可疑行为,判定为干净(clean)。
  • 风险计数 严重 0 / 高 0 / 中 0
  • 风险详情 未发现严重或警告级问题。

选择建议

装之前先看这几条
按条目字段给出的判断,不替你决定用不用

值得选的地方

  • 验证等级 L5:安装和运行都在沙盒里跑通过,装完能直接用的概率高。
  • 静态安全审查为低风险,没有发现明显可疑行为。
  • 有可直接复制的安装命令,不用自己翻文档找入口。
  • 标注了兼容的 DSH 版本(0.2.0-rc.2 等 8 个),按版本装不容易报错。
  • 列出了 4 项功能,能直接看出它解决什么问题。

先想清楚的地方

  • 没有声明 Node.js 版本要求,版本不匹配可能装不上。
  • 验证通过不等于安全:插件会读写文件、执行命令或联网,装前先到仓库确认它做了什么。

更适合

  • 需要在浏览器与联网场景里给 DSH 补能力的人。
  • 想装完就能用、不想自己排依赖的人。
  • 能接受在本地装依赖、愿意自己确认权限的人。

不太适合

  • 只使用 DSH 官方内置能力、不接受第三方插件的人。

同类对比

6 个同类
同分类里挑最接近的几条,字段以各自详情页为准
插件验证等级安全审查星标兼容版本安装命令
dsh-provider-headers当前 L5 · 运行验证通过 低风险 0 0.2.0-rc.2 等 8 个 有
dsh-our-free-model L3 · 安装规范通过 低风险 8,796 未标注 有
dsh-web L3 · 安装规范通过 低风险 8,549 未标注 无
BrowserSkill L4 · 沙盒安装通过 低风险 8,456 未标注 有
dsh-pocket L5 · 运行验证通过 低风险 1,656 0.2.0-rc.2 等 12 个 有
Browser4 L4 · 沙盒安装通过 中风险 1,152 未标注 有

仓库档案

浏览器与联网
字段来自项目仓库与公开索引,中文说明由本站标注
作者 / 维护方duanyunlun仓库 dsh-provider-headers · 默认分支 main
分类浏览器与联网network
收录类型可安装插件声明了 dsh.bundle、可用 dsh plugin add 安装的条目
开发语言JavaScript仓库主语言
许可证MIT商用或二次分发前请确认条款原文
星标 / 复刻 / issue0 / 0 / 0收录时的数值,非实时
创建 / 更新2026-09-11 · 2026-09-11最后推送 2026-09-11
本站收录2026-09-13首次进入本站目录的时间

README 全文

7.5 KB
作者原文,中文版优先;只做安全转义,不改内容

dsh-provider-headers

English | 中文

给 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

常见问题

8 问
答案由本站依据条目字段整理,不引用上游原文
dsh-provider-headers 怎么安装?

在 DSH 里执行 `dsh plugin --profile web add dsh-provider-headers@0.1.2` 即可。

dsh-provider-headers 的验证等级是什么意思?

L5 · 运行验证通过。在 dsh 沙盒中完成安装与运行冒烟——装得上、跑得起来

dsh-provider-headers 安全吗?

低风险。vet 静态分析未发现可疑行为,判定为干净(clean)。

dsh-provider-headers 装之前要先确认什么?

先看它会读写哪些文件、执行哪些命令、连接哪些网络地址;验证等级只说明装得上、跑得起来,不等于安全。涉及密钥或系统权限的,建议先在隔离环境试装。

dsh-provider-headers 支持哪些 DSH 版本?

上游记录的兼容版本包括 0.2.0-rc.2、0.2.0-rc.1、0.1.7-rc.2、0.1.7-rc.1、0.1.7-alpha.2、0.1.6-alpha.2、0.1.6-alpha.1、0.1.5-rc.2。

dsh-provider-headers 用的是什么许可证?

上游标注为 MIT。商用或二次分发前请到仓库确认许可证原文。

dsh-provider-headers 有哪些功能?

模型设置页内编辑请求头、${sessionId} 按会话动态展开、写入原生 settings.yaml 字段、卸载后完全还原。

这条记录的数据可靠吗?

本站按仓库名去重后合并整理,字段以作者仓库与 npm 元数据为准;安装命令、仓库地址与 README 保持原文,带 L4 / L5 标记的安装命令已在隔离沙盒里真实跑通。

浏览器与联网
按星标排序,可作替代方案

dsh-our-free-model

dsh-our-free-model

在 DeepSeek Harness 中装上这个 DSH plugin,无需登录、注册或填 API Key,即可直接调用 DeepSeek

L3 · 安装规范通过 8,796 星

dsh-web

dsh-web

侧边栏多列任务看板:卡片交给真实 DSH 智能体会话执行,支持 cron 定时(Host 侧到点执行,关浏览器也生效)。

L3 · 安装规范通过 8,549 星

BrowserSkill

BrowserSkill

BrowserSkill 的 DeepSeek Harness 浏览器自动化桥接插件,通过原生浏览器工具控制可见的 Chrome 和 Edg

L4 · 沙盒安装通过 8,456 星

dsh-pocket

dsh-pocket

DSH Pocket 让 DeepSeek Harness 装进口袋:电脑跑 dsh web,手机扫码即实时同步访问(局域网+公网),人在外

L5 · 运行验证通过 1,656 星

Browser4

Browser4

L4 · 沙盒安装通过 1,152 星

agentrq

agentrq

L4 · 沙盒安装通过 1,140 星

duanyunlun 的其它插件

2 个

插件的元信息来自作者仓库;分类、验证等级与安全结论的中文说明为中文整理,最近核验 2026-10-08。