dsh-our-free-model 完整指南:免 Key 免费模型插件如何把每一次请求的凭据与回环边界管住
dsh-our-free-model 完整指南:免 Key 免费模型插件如何把每一次请求的凭据与回环边界管住
【免费下载链接】dsh-our-free-model在 dsh 里装上这个插件即可,无需登录、注册或填 API Key,就能使用包括 DeepSeek V4.1 Flash、Kimi K3 在内的前沿模型——完全免费,不限量。 All you do is install this plugin in dsh: no login, no sign-up, no API key — the frontier models are just there, DeepSeek V4.1 Flash and Kimi K3 among them. Completely free, with no usage cap.项目地址: https://gitcode.com/gh_mirrors/ds/dsh-our-free-model
在 dsh 里装上 dsh-our-free-model,DeepSeek V4.1 Flash、Kimi K3 这类前沿模型直接可用——不登录、不注册、不填 API Key,免费且不限量。但免费额度放在你自己的机器上,同机的任何进程、任何网页里的跨站脚本,都可能来蹭这口水。所以这个插件给每根水管都装了计量表:每个请求先验表,再流水。本文跟着一次请求走完全程——从进门口的设置接口,到接向远端网关的出水管——看沿途每只阀门是怎么装的。
🚪 设置接口谁能碰:路由、权限、网络三层边界
[]
路由层:设置接口注册在/api/our-free-model前缀下,比内核的/api更长,而宿主按"最长前缀优先"分发——请求先命中插件,轮不到内核自己的鉴权出手。插件因此必须自建计量站,实现在 src/trust.js。
权限层:计量站两道闸。第一道借用宿主的 connection 服务——与内核/api同级的 cookie/token 准入判定;该服务逐请求读取(宿主可能晚于插件加载才发布它),dsh 0.1.7 之前的老内核以旧方法名requestRejection发布同一判定,围栏自动映射旧名,只换名字、不松判定。第二道给没有 connection 服务的极简宿主:Host 不是回环地址,403;sec-fetch-site标记跨站,403;Origin/Referer 与 Host 不同源、不同端口、不同协议,403。实测口径与内核一致:异源 Host/Origin 一律 403,无 cookie 的回环请求 401;拒绝日志只写状态、来源、原因三个固定字段,请求头与 Cookie 不落日志。
网络层:转发端口只绑回环地址,见下一节。
本节结论:这条路由比内核鉴权早一步,但计量站只许更严、不许更松。
🔧 转发端口如何绑回环地址,占用了又怎么办
先解析再绑定:默认监听 127.0.0.1:18899。localhost这类主机名先做 DNS 解析,且要求全部解析结果都是回环 IP,真正传给监听的是解析出的 IP 而非原始字符串——hosts 文件或企业 DNS 若把localhost指到可路由网卡,绑定直接报错、服务不启动,不存在"检查通过但实际露出去"的中间态(src/forward.js 的resolveLoopbackBind)。正常时监听在 18899 等客;异常时宁可整条水管不接。
端口被占:不判死刑。先在同一端口做 4 轮指数退避重试(间隔 150、300、600 ms),覆盖"旧进程正在关闭"的窗口;再依次向后找 10 个连续端口;仍无解落到随机端口。设置页把"请求 18899、实际监听 18900"原样展示,落盘的也是实际端口。Windows 上 EACCES 与 EADDRINUSE 分开诊断,提示直指netsh interface portproxy残留规则与 Hyper-V/WinNAT 端口预留,不把人引去查"权限"这条错误线索。
验表:/与/health存活探针先于 Key 检查应答,只回答"是否在线";其余接口一律要 Key。Key 由 crypto 生成ofm-前缀加 24 字节随机数,比对时双方先各做一次 SHA-256 再走 timingSafeEqual——耗时不随"前几位匹配"变化,按时差逐字节猜 Key 的计时侧信道被堵死。请求体超过 8 MiB 直接 413,不是 500。
要对外,走另一根管:局域网中继(默认 18326)只认专用 lanKey,与本机 Key 互不通用;门口把调用方的 Key 换成本机网关 Key 再拨127.0.0.1:8326,外部凭据不过这一层;白名单只放行/v1/models、/v1/chat/completions、/v1/responses、/v1/reasoning-efforts四条模型接口,其余在转发一个字节之前就 404;带着跳数标记x-ofm-chan-relay-hop的请求直接 508(src/chan-relay.js)。
[]
本节结论:管口只朝屋内部开;端口堵了换路线而不是断水,换出来的路线原样示人。
📒 转发 Key、局域网 Key 与 EAC 密封分别存在哪
出水管接远端网关(EAC 协付渠道)时,插件手里只有一张密封的行程单:AES-256-GCM 密文装着网关地址与 HMAC 签名密钥(src/vault.js),真实中继 Key 只放在 Worker 的环境变量里。每个出站请求按"时间戳 + HMAC-SHA256(方法/路径/body 的 SHA-256 摘要)"签名(src/eac.js),明文凭据不落盘、不出进程。
| 凭据/数据 | 存放形态 | 泄露影响面 | 轮换或恢复动作 |
|---|---|---|---|
| 转发 Key | crypto 24 字节随机,ofm-前缀,写进 0600 权限的 settings.json | 仅限本机已配置的工具 | 设置页单独轮换,局域网 Key 不牵连 |
| 局域网 Key | 同一 0600 文件的独立字段(src/store.js 落盘即带 0600 模式) | 仅限同网络其他设备 | 单独轮换,本机工具不牵连 |
| EAC 签名密钥 | 插件仅持 AES-256-GCM 密封,真 Key 在 Worker 环境变量 | 密封被提取也只是可吊销的间接入口,600 秒防重放窗口是仿冒上限 | 网关侧轮换SIGNING_SECRETS(轮换期新旧并存),客户端零改动 |
| 用量热力图等看板数据 | 全部落本机,不上传任何位置 | 无外泄面 | 无需轮换 |
本节结论:三张计量表各记各的水,漏哪张只换哪张,其余管路照常走水。
[]
🛠️ 故障行为清单:每个异常都朝拒绝的方向失败
安全设计的一半价值在失败路径上。这条线的全量故障映射:
| 异常场景 | 实际行为 | 设计意图 |
|---|---|---|
| 宿主 connection 服务抛错 | 503 停止准入,绝不降级到更弱的结构检查 | 计量站坏了先关闸,不掀开栏杆 |
老内核只发布旧名requestRejection | 自动映射到准入视图;"方法不存在"不误读成故障,对象形返回不误读成"无拒绝" | 兼容只做名字转换,不放松判定 |
localhost解析出可路由 IP | 绑定直接抛错,服务不启动 | 宁可用量不可用,不递给整个子网 |
| 请求端口 18899 被占 | 4 轮退避 → 10 端口扫描 → 随机端口,实际端口原样公示 | 功能可用且不说谎 |
| 中继端口与本地监听配成同一端口 | 跳数标记触发 508 | 端口不被自环烧穿 |
| 中继时网关 Key 尚未生成 | 503,提示先打开一次网关页 | 无凭据不转发,失败闭合 |
| 网关验签失败 / 时间戳偏离超 600 秒 / 模型在白名单外 | 401 / 401 / 403 | 远端管口同样收口(worker/README.md) |
本节结论:故障只会朝一个方向流——拒绝或明示,从不悄悄开水。
这座建筑里,每根管子有自己的表,每张表有自己的阀;任何一只阀门拿不准,默认动作都是关死——免费的水,只流向本机的表。
【免费下载链接】dsh-our-free-model在 dsh 里装上这个插件即可,无需登录、注册或填 API Key,就能使用包括 DeepSeek V4.1 Flash、Kimi K3 在内的前沿模型——完全免费,不限量。 All you do is install this plugin in dsh: no login, no sign-up, no API key — the frontier models are just there, DeepSeek V4.1 Flash and Kimi K3 among them. Completely free, with no usage cap.项目地址: https://gitcode.com/gh_mirrors/ds/dsh-our-free-model
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考