与上游项目的对比及归属说明
August 15, 2026 · View on GitHub
结论
本项目是上游 kinyokun/dsh-session-import 的衍生改进版,不是 clean-room 重写,也不应宣称为独立原创。MIT License 允许使用、修改和再发布,前提是保留原始版权与许可声明。
本版的合理定位是:在保留上游产品构想和主要架构的基础上,针对安装、格式兼容、安全边界、事务一致性、前端交互和测试覆盖进行后续工程化改进。
对比基线
| 项目 | 上游基线 | 当前改进版 |
|---|---|---|
| 仓库 | kinyokun/dsh-session-import | 基于该仓库的本地衍生版本 |
| 版本 | 1.0.2 | 1.1.0 |
| Git 提交 | aef1947395aa61e8b4cb9b8bda343f5733b96a0c | 该提交之上的工作树改动 |
| 许可证 | MIT | MIT,保留上游版权声明 |
| 对比日期 | 2026-08-15 | 2026-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/status、analyze、import、delete接口框架;- 新会话 ID、时间戳平移、标题覆盖、工作区挂载和状态同步;
- 基础结构验证、SHA-256 指纹、导入后装载校验和失败回滚;
- 新对话页的导入按钮、导入对话框、预览及同步项选择。
本版的实质改动
| 维度 | 上游 1.0.2 | 当前 1.1.0 |
|---|---|---|
| 安装集成 | 需要手动复制文件并修改 profile patch | 增加 cordis.patch.yml、dsh.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、消息结构、surfaceOp 和 sourceEventSeqs 校验 |
| 正确性 | 已有导入和装载回滚主流程 | 修复 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 test、npm run check、npm pack --dry-run;- 真实导出 ZIP 的离线解析和宿主
/analyze校验; /import?dryRun=1预演;- 持久化导入并以
open=1恢复为活跃会话; - 持久化产物复核。
实测文件 SHA-256 为 bfed10a54a36f3c2221e62240ebbe8aeecb9b941b6f23969649e0e426284ccbe,主日志包含 7,062 个事件和 6 份子代理日志,校验结果为零错误、零警告,导入过程未丢弃同步事件。新会话 ID 为 session-729100f0-6087-483b-bea2-c2bc888720a3。
再发布要求
公开发布或提交插件市场前应同时做到:
- 保留
LICENSE中的Copyright (c) 2026 kinyokun和 MIT 全文。 - 保留
NOTICE.md与 README 的上游链接,不要隐藏 fork/衍生关系。 - 保留从上游基线开始的 Git 历史,让功能差异可用提交和 diff 复核。
- 使用自己的仓库地址、问题地址和发布身份;不要继续把上游仓库写成改进版的发布仓库。
- 发布说明只主张本版确实新增或修复的内容,不要把上游已有功能写成独立原创。
当前 package.json 和安装示例仍指向上游仓库,因为尚未提供改进版的新仓库地址。正式发布前必须替换这些元数据,否则用户安装到的会是上游版本,也会造成维护身份混淆。