与上游项目的对比及归属说明

August 15, 2026 · View on GitHub

结论

本项目是上游 kinyokun/dsh-session-import 的衍生改进版,不是 clean-room 重写,也不应宣称为独立原创。MIT License 允许使用、修改和再发布,前提是保留原始版权与许可声明。

本版的合理定位是:在保留上游产品构想和主要架构的基础上,针对安装、格式兼容、安全边界、事务一致性、前端交互和测试覆盖进行后续工程化改进。

对比基线

项目上游基线当前改进版
仓库kinyokun/dsh-session-import基于该仓库的本地衍生版本
版本1.0.21.1.0
Git 提交aef1947395aa61e8b4cb9b8bda343f5733b96a0c该提交之上的工作树改动
许可证MITMIT,保留上游版权声明
对比日期2026-08-152026-08-15

对比时上游远端 HEAD 仍为上述提交。以下统计取自整理归属材料之前的功能工作树,不包含 NOTICE、本对比文档及其 README/清单链接:共涉及 15 个文件,增加 779 行、删除 138 行;其中 host.js+288/-70,client.js+121/-11,新增自动化测试 222 行。行数只能说明改动规模,不能单独证明原创性,因此还需结合下面的行为差异和提交历史判断。

哪些部分来自上游

以下核心能力在上游 1.0.2 已经存在,本版不将它们列为新增原创:

  • DSH 导出 ZIP/JSONL 的导入用途和整体产品构想;
  • host.js + client.js 的双端插件结构;
  • /session-import/statusanalyzeimportdelete 接口框架;
  • 新会话 ID、时间戳平移、标题覆盖、工作区挂载和状态同步;
  • 基础结构验证、SHA-256 指纹、导入后装载校验和失败回滚;
  • 新对话页的导入按钮、导入对话框、预览及同步项选择。

本版的实质改动

维度上游 1.0.2当前 1.1.0
安装集成需要手动复制文件并修改 profile patch增加 cordis.patch.ymldsh.bundle.patch 导出和客户端依赖声明,可由 DSH CLI 自动挂载
ZIP 读取基础 stored/deflate 读取,拒绝加密并检查声明大小解析中央目录,只解压根日志;增加 CRC-32、目录/本地头一致性、重复名、范围、分卷和 ZIP64 检查
资源边界上传 256 MB,单条目解压上限 1 GiB上传和根日志均 256 MB,另加 10,000 条目和 1,000,000 展开事件上限;附件仅统计不解压
当前格式校验以 seq、类型白名单、引用和配对为主追加 rc.6 的事件 envelope、消息结构、surfaceOpsourceEventSeqs 校验
正确性已有导入和装载回滚主流程修复 chunk dt 重复累加、禁用 preset 仍复制头预设、create/append 失败漏回滚及缓存预热顺序
seq 重排每个引用重复扫描删除列表预计算线性映射,避免平方复杂度
删除保护冷会话可直接进入删除路径只允许删除当前插件进程登记的导入会话,并复核 artifact 父目录和会话 ID
客户端基础文件选择、分析、导入对话框增加请求取消、文件选择竞态保护、指纹即时校验、Escape、焦点恢复和移动端布局
自动化测试shell 冒烟脚本和少量 fixture增加零外部依赖 Node 测试,覆盖解析、ZIP、校验、重排、回滚、删除保护、客户端工具函数和包清单

完整的逐行差异以 Git 为准:

git diff aef1947395aa61e8b4cb9b8bda343f5733b96a0c -- host.js client.js package.json
git diff --stat aef1947395aa61e8b4cb9b8bda343f5733b96a0c

验证证据

2026-08-15 在 Windows、Node.js 24.19.0 和本机 DSH Web 上完成以下验证:

  • npm testnpm run checknpm pack --dry-run;
  • 真实导出 ZIP 的离线解析和宿主 /analyze 校验;
  • /import?dryRun=1 预演;
  • 持久化导入并以 open=1 恢复为活跃会话;
  • 持久化产物复核。

实测文件 SHA-256 为 bfed10a54a36f3c2221e62240ebbe8aeecb9b941b6f23969649e0e426284ccbe,主日志包含 7,062 个事件和 6 份子代理日志,校验结果为零错误、零警告,导入过程未丢弃同步事件。新会话 ID 为 session-729100f0-6087-483b-bea2-c2bc888720a3

再发布要求

公开发布或提交插件市场前应同时做到:

  1. 保留 LICENSE 中的 Copyright (c) 2026 kinyokun 和 MIT 全文。
  2. 保留 NOTICE.md 与 README 的上游链接,不要隐藏 fork/衍生关系。
  3. 保留从上游基线开始的 Git 历史,让功能差异可用提交和 diff 复核。
  4. 使用自己的仓库地址、问题地址和发布身份;不要继续把上游仓库写成改进版的发布仓库。
  5. 发布说明只主张本版确实新增或修复的内容,不要把上游已有功能写成独立原创。

当前 package.json 和安装示例仍指向上游仓库,因为尚未提供改进版的新仓库地址。正式发布前必须替换这些元数据,否则用户安装到的会是上游版本,也会造成维护身份混淆。