# PROVENANCE — 来源、取用范围与许可状态 本文件记录本插件与上游项目的关系,供后续维护者与使用者判断许可与责任边界。 ## 上游 | 项 | 值 | | --- | --- | | 仓库 | `kte66/dsh-balance` | | URL | https://github.com/kte66/dsh-balance | | 被取用的提交 | `617876adda664c44968324e6c424a9d97120c0b5`(`main`,2026-08-16T15:44:30Z,`style: 告警提示去掉感叹号`) | | 许可证声明 | `package.json` 内 `"license": "MIT"`——**这是上游唯一的许可声明**;核对全部 6 个提交的 git tree,`LICENSE`/`COPYING`/`NOTICE` 类文件**从未存在过** | | 版权头 / author 字段 | 无版权头;`package.json` 无 `author`;提交作者为 `kkcc <2318122493@qq.com>` | | 分发状态 | 从未发布到 npm;不在 `dsh-plugin-catalog` 内;未出现在任何精选列表 | ### 上游停更取证(2026-09-30 复核) | 证据 | 实测值 | | --- | --- | | 最后 push | 2026-08-16T15:48:08Z | | 提交总数 / 时间分布 | 6 次,**全部集中在 2026-08-16 一天** | | star / fork / watcher | 1 / 0 / 0 | | tags / releases | 0 / 0 | | issues / PR | 0 / 0 | | contributors | 1 | | 原作者账号活动 | 账号本身仍在活跃(2026-09 有公开事件),但**该仓库自 8/16 后无任何提交** | | 市场目录 | `dsh-plugin-catalog@2026.930.4748`(4392 条)中**无 kte66 条目** | 结论:这是一个**一次性产物**——作者账号活着,项目本身已停止维护。 ## 取用范围(实测重合度,非主观判断) > **结论先行:本插件是上游的派生作品(derivative work),不是独立重写。** > 本文件早期版本曾声称"不存在逐字相同的段落";经实测比对(2026-09-30),该说法**不成立**,现已更正并保留更正记录。 比对方法:比较"去除首尾空白并折叠内部空白后的非空行",脚本见 [`tools/similarity-audit.mjs`](tools/similarity-audit.mjs)(可复现:`node tools/similarity-audit.mjs <上游目录>`)。 | 文件 | 共享不同行 | 占我方 | 占上游 | 含实质表达行 | 最长连续相同块 | token 级 Jaccard | | --- | --- | --- | --- | --- | --- | --- | | `lib/index.js` | 42 | 18.1%(我方 232 行) | 36.2%(上游 116 行) | 32 | **12 行** | 43.4% | | `lib/client.js` | 96 | 28.8%(我方 333 行) | 51.3%(上游 187 行) | 80 | 8 行 | 54.2% | | `cordis.patch.yml` | 1 | 20.0% | 20.0% | 0 | 1 行 | 90.0% | 最长的逐字连续块举例: - `lib/index.js`:上游 105–116 行 ≡ 我方 `ctx.tools.register({ … })` **整段**(含中文工具描述字符串)。 - `lib/client.js`:上游 42–49 行 ≡ 我方 `function BalancePill()` 开头的 `React.useState` 系列。 **因此,任何关于本插件的许可判断都必须按 "MIT 派生作品" 处理**:客户端半部与上游的行重合度超过一半,不能声称为独立实现。沿用的内容中,界面位置与交互约定(输入框工具行左端、设置项、工具名)属功能性约定,但**代码表达层面存在大量逐字沿用**。 ### 上游自身是否为他人衍生品(许可链核查) 已比对上游与两个实现同一功能的 npm 包:`ds-balance@0.2.4`(storyOuO,MIT)与 `dsh-deepseek-balance@0.1.0`。重合仅限通用样板(`window.__ModuleLoader__.load`、`Object.defineProperty(exports, Symbol.toStringTag…)`、`'content-type'`/`'cache-control'` 等 HTTP 头、`React.useEffect`),最长连续块 2–4 行且均为 DSH 插件的固定写法。**未发现上游是他人作品的衍生品**,其上方不存在第三方权利人。 ## 许可依据与合规状态 | 项 | 状态 | | --- | --- | | 上游许可声明 | `package.json` → `"license": "MIT"`(唯一声明) | | 上游是否提供 `LICENSE` 文件 | **从未提供**(已核对全部 6 个提交的 git tree) | | 上游 README 体现的授权意图 | README 写明"拷到任何机器即可作为 DSH 的 bundle 插件"、"安装方式 0:把这段话发给 AI,自动安装",体现允许复用与再分发的意图 | | 我方履行 MIT 义务 | `LICENSE` 含完整 MIT 正文 + 两行版权声明(本项目 + 上游);本文件记录来源提交与取用范围 | ### 残余风险(诚实列示) 1. **许可声明不够正式(低—中)**:上游从未分发 MIT 正文,也无版权声明行,严格解读下其授权可被认为"声明存在、文本缺失"。MIT 声明是权利人的公开授权表示,且生态(npm/GitHub)普遍以 `package.json` 的 SPDX 字段为准,但这不是无懈可击的许可文件。 2. **署名精确度(低)**:`LICENSE` 以 GitHub 账号 `kte66` + 仓库 URL 署名;提交作者另有姓名 `kkcc`,未列出。 3. **权利人反对时的可能处置(低)**:最可能是要求撤下或改名,而非索赔——本项目无商业获益且已充分署名。 4. **建议动作(未执行,需人工决定)**: - 向上游提 issue 请求补 `LICENSE` 文件或书面确认 MIT,形成善意记录; - 如需最小暴露面,可先将本仓库转为私有; - 或按上方比对结果**去重合重写**(优先目标:`lib/client.js` 的设置行构造、`lib/index.js` 的 `tools.register` 块),把逐字沿用降到样板级别。 > 本节是工程与流程层面的核查,**不构成法律意见**。若用于商业分发,或权利人提出异议,请咨询律师。 ## 变更摘要(相对上游) 1. **密钥不再落盘**:改用 `curl --header @-` 经 stdin 传递 Authorization 头;上游写临时文件并用 `mode: 0o600`,而该模式在 Windows 上不生效(实测 `0o666`)。 2. **密钥不进 argv**:argv 可被同机其它进程读取;本项目以单元测试锁定这一性质。 3. **新增同源校验**:拒绝 `Origin` 不匹配与 `Sec-Fetch-Site: cross-site` 的读取;上游路由无任何来源策略。 4. **不再默认遮蔽内置 UI**:上游无条件用 `priority: -1` 顶掉内置 `cordis-panel` 徽标;本项目改为设置项且默认关闭。 5. **失败退避 + 隐藏页暂停**:上游为固定 60s 轮询,密钥失效时会持续打接口。 6. **路由与配置命名空间化**:`/ds-composer-balance`、`dsh-composer-balance:config`(上游为通用名 `/ds-balance`、`ds-balance:config`)。 7. **可测试性**:解析、argv 构造、同源判定、渲染均为纯函数并带断言测试。