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

路由隐私策略 AmmarByFar/dsh-trustedrouter

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

按模型设置 TrustedRouter 隐私下限与路由规则

30.7/100
综合分
1
GitHub 星标
—
npm 周下载
—/5
用户评分

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

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

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:已验证
是什么
生态插件
可安装,未声明 dsh 能力
装得上吗
本站已在 dsh 0.2.1-rc.5 下真实安装成功
非静态推断
L5 · 运行时冒烟等级说明 →
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 27 天前
档位由哪些信号合成

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

验证判据与等级说明 →
社区实装还没有人打卡 · 装过的第一个就是你
安装兼容性检查⚠ 装前注意

未发布到 npm registry,仅可从源码安装

展开查看检查明细 ↓

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

✗npm 包dsh-trustedrouter(未发布到 npm,仅可源码安装)
✓Node 引擎要求 >=20 · 基线 Node 22.19 满足
✓dsh CLI 依赖未声明 dsh 版本约束
✓入口文件main/exports/bin 已声明

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

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

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

发起外部网络请求
查看扫描证据(共 1 处,展示前 1 条)
  • 发起网络请求
    client.js:1135
    const catalogs = createCatalogs(url => globalThis.fetch(url))
扫描于 2026/11/3(0 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库

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

依赖的 DSH / Cordis 模块
@deepseek-ai/schemastery
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

功能亮点

  • 按模型设置隐私下限
  • 配置路由规则

README

由 DeepSeek 最新模型翻译生成
dsh-trustedrouter 按模型设置 TrustedRouter 的隐私与路由,供 DeepSeek Harness(dsh)使用。 每个模型都可以单独选择:隐私下限、允许哪些服务商提供、优化目标、计费方式,以及是否要求服务商位于美国。这些都在 dsh web UI 的 Settings → Models 里设置。插件会把你选的配置加进每个请求,作为 TrustedRouter 的 provider 对象。 Settings → Models 里 TrustedRouter 卡片中的 Privacy & routing 区域 为什么需要插件 TrustedRouter 只从请求体读取路由和隐私策略,例如 {"provider": {"min_privacy": "confidential"}}。用请求头或 API key 设置都做不到同样的事。dsh 的模型服务商能加请求头,但加不了请求体字段,所以没有这个插件,就没法指定隐私下限。 环境要求 - dsh web,已在 0.2.0-rc.2 和 0.2.1-alpha.1 上测试(见 Tested with)。不支持桌面应用。 - PATH 里有 pnpm。 dsh 用它安装插件,否则会报 "pnpm was not found"。
展开完整文档(README 剩余 1 节)
dsh-trustedrouter

按模型设置 TrustedRouter 的隐私与路由,供 DeepSeek Harness(dsh)使用。

每个模型都可以单独选择:隐私下限、允许哪些服务商提供、优化目标、计费方式,以及是否要求服务商位于美国。这些都在 dsh web UI 的 Settings → Models 里设置。插件会把你选的配置加进每个请求,作为 TrustedRouter 的 provider 对象。

Settings → Models 里 TrustedRouter 卡片中的 Privacy & routing 区域

为什么需要插件

TrustedRouter 只从请求体读取路由和隐私策略,例如 {"provider": {"min_privacy": "confidential"}}。用请求头或 API key 设置都做不到同样的事。dsh 的模型服务商能加请求头,但加不了请求体字段,所以没有这个插件,就没法指定隐私下限。

环境要求

- dsh web,已在 0.2.0-rc.2 和 0.2.1-alpha.1 上测试(见 Tested with)。不支持桌面应用。
- PATH 里有 pnpm。 dsh 用它安装插件,否则会报 "pnpm was not found"。没装的话,运行 corepack enable pnpm 或 npm install -g pnpm。
- dsh 里有一个 TrustedRouter 服务商。 Settings → Models → Add model provider → Custom model API:
- base URL 填 https://api.trustedrouter.com/v1;
- API protocol 选 OpenAI Chat Completions;
- 填你的 TrustedRouter API key;
- 填你要用的模型,例如 z-ai/glm-5.3。

安装

在 dsh web UI 里:

1. 侧边栏 → Plugins → Add plugin。
2. 输入 https://github.com/AmmarByFar/dsh-trustedrouter#v0.1.0,选 Install。
3. 选 Enable now。不用刷新或重启。

在命令行里,针对 dsh web 用的 web 配置档:

dsh plugin --profile web add github:AmmarByFar/dsh-trustedrouter#v0.1.0

如果 dsh web 正在运行,重启它。

插件没有构建步骤,所以 pnpm 不会让你确认允许构建。它唯一的 peer 依赖 @deepseek-ai/schemastery 来自 dsh 本身,所以 pnpm 打印的 peer 警告是正常的。

装完还不会改变任何行为。 在你设置策略之前,请求都原样发出。

升级。 dsh 目前还不能更新已安装的插件。先卸载插件(Plugins → TrustedRouter privacy → Uninstall),再安装新的 tag。你的设置存在配置档里,不在插件里,所以会保留。

使用

按模型设置:Settings → Models

打开 Settings → Models,找到你的 TrustedRouter 卡片,展开 Privacy & routing。

服务商的每个模型都会列出,并显示它拿到的策略。标签说明策略来自哪里:
- Custom:来自模型自己的设置;
- Defaults:只有默认值;
- Uses \<model\>:变体模型,例如 z-ai/glm-5.3:nitro,它跟随基础模型,除非你单独给它设置。

Edit 打开模型的设置: Editing z-ai/glm-5.3: a Confidential floor, limited to two providers

| 设置 | 发送字段 | 说明 |
| 隐私底线 | min_privacy:no_store、zdr 或 confidential | 每个级别都会列出该模型下满足条件的服务商。若没有服务商达到底线,TrustedRouter 会直接拒绝请求,而不是降级使用。 |
| 优先 | sort:price、latency 或 throughput | |
| 只用这些服务商 | only | 留空表示允许所有服务商。 |
| 永不用这些服务商 | ignore | |
| 计费 | usage:credits 或 byok | 使用 TrustedRouter 额度,或你自己的服务商密钥(BYOK)。 |
| 仅限总部在美国的服务商 | jurisdiction: "us" | |

改动设置时,编辑器会统计仍然符合条件的服务商数量。如果一个都不剩,它会提醒你,因为那样 TrustedRouter 会拒绝该模型的所有请求。

Apply 会保存到你的配置档,下一次请求就会生效,无需重启。

有几点需要知道:
- 这一区块只出现在已保存的服务商上,且其 base URL 属于已配置的网关。默认是 https://api.trustedrouter.com/v1。
- 你只能在 dsh 所在机器的浏览器里修改设置。这是 dsh 对所有设置的统一规则。
- 要按模型列出服务商,浏览器会在你首次打开该区块时拉取 TrustedRouter 的公开模型列表(/models,不发送 API key)。如果拉取失败,则提供所有隐私级别。

默认值与高级设置:Plugins 页面

侧边栏 → Plugins → TrustedRouter privacy(在 Installed 下),然后是 Components 下的 TrustedRouter privacy 行。

Plugins 下的 TrustedRouter privacy 页面

- Gateways: 策略适用的 base URL,每行一个。如果你用 EU 网关,就加上 https://api-europe-west4.quillrouter.com/v1。
- Defaults for every model: 与单个模型相同的设置。模型自身的设置会逐字段覆盖它们。
- Advanced defaults:
- 首选服务商顺序(order);
- 是否回退到其他服务商(allow_fallbacks);
- 提示词与补全的最高价格,单位为 USD / 百万 token(max_price)。
- Per-model overrides (JSON): 每个模型的设置,包括 Models 页面不显示的 provider 字段。
- Raw body rules (JSON): 深度合并进某个 base URL 下每个 POST 的字段,用于 provider 之外的任何内容。
- Log changes to the terminal: 见 Check that it works。

配置文件

两个页面都会写入你配置档 cordis.patch.yml 里的 trustedrouter 行。对 dsh web 来说,是 ~/.dsh/profiles/web/cordis.patch.yml;如果你设置了 $DSH_HOME,则在它下面。你也可以手动编辑:

- id: trustedrouter
config:
gateways: [https://api.trustedrouter.com/v1] # the default
defaults: { min_privacy: zdr } # for every model on those gateways
models: # keyed by model idyaml
z-ai/glm-5.3: { min_privacy: confidential, only: [tinfoil, privatemode] }
rules: [] # optional [{ baseURL, body }], deep-merged after the policy
log: false

请求的 provider 是怎么拼出来的:
- 模型的设置就是它在 models 里的条目,合并到 defaults 之上。像 z-ai/glm-5.3:nitro 这种带 :suffix 的 id,用基础模型的条目,除非它自己有一条。
- 结果会合并到请求已有的 provider 之上,所以你的策略说了算。列表是替换,不是合并。
- 值会做类型检查,所以拼错的隐私级别或格式错误的 URL 会被拒绝。插件不认识的字段会原样透传;TrustedRouter 对未知选项返回 400,所以拼错会大声报错,而不是被忽略。

验证是否生效

1. 打开 Log changes to the terminal(或设置 log: true)。
2. 用 TrustedRouter 模型发一条聊天。运行 dsh web 的终端会打印这样一行:

[trustedrouter] added provider to POST https://api.trustedrouter.com/v1/chat/completions for z-ai/glm-5.3: {"min_privacy":"confidential"}
3. 可选:验证下限确实生效。给一个没有 confidential 服务商提供的模型设置 Confidential,比如 anthropic/claude-haiku-4.5。聊天应该失败,报 TrustedRouter 的 400:No route candidates match the requested provider filters。

每次升级 dsh 后重复第 2 步(见工作原理与限制)。日志从不包含请求体,只有 URL、模型 id 和添加的字段。

工作原理与限制

- 它包装了 dsh 服务器的 fetch。 发往网关的 POST 会把 provider 合并进 JSON 请求体。GET 请求,比如模型发现,以及发往其他 URL 的请求,原样透传。模型没有策略的请求会逐字节原样发出。
- 它失败即关闭。 如果发往网关的 POST 需要策略,但请求体读不出来,插件会拒绝发送,而不是不带策略发出去。拒绝信息总会打印到终端。
- 它依赖 dsh 内部实现。 它能工作,是因为 dsh 的模型客户端用的是全局 fetch。如果某个 dsh 版本改了这一点,请求会在没有你策略的情况下发出,而且不会报错。升级 dsh 后检查日志行。本仓库的 CI 每周还会针对 dsh 的 latest 和 alpha 版本跑一次,用来抓这个问题。
- 设置是按模型,不是按聊天。
- 仅限 Web: 浏览器里的 dsh web,不是桌面应用。

测试环境

| dsh | Node |
| 0.2.0-rc.2 (npm latest) | 22 |
| 0.2.1-alpha.1 (npm alpha) | 22 |

dsh 还是预发布版,所以更新的版本可能会挪动这个插件挂接的设置页面。

开发 sh
npm install # the schemastery devDependency, for tests
npm test # unit tests, host and client
test/e2e/run-all.sh # headless dsh against a mock gateway; DSH_VERSION=0.2.0-rc.2|alpha|latest
test/e2e/clean-install.sh # 把打包好的插件装进全新的 dsh home,检查前后端两部分 test/ui/scratch-web.sh start <dir> # 启动一个临时的 dsh web,把当前 checkout 链接进去,供浏览器使用

没有构建步骤:index.js(服务端部分)和 client.js(浏览器端部分)就是最终发布的内容。PLAN.md 里有设计说明,以及它们依赖的 dsh 内部机制。

许可证

MIT
预览分享卡片长什么样 ↓AmmarByFar/dsh-trustedrouter
分享 · DeepSeek Harness Hub
AmmarByFar/dsh-trustedrouter

按模型设置 TrustedRouter 隐私下限与路由规则

这是你的仓库?认领条目

回到顶部