dsh-copyright-kit:从代码仓库生成软件著作权登记材料草稿

前言

做智能体开发的人大概都有过这个体会:功能代码写完了,要申报软件著作权时才发现,真正花时间的不是写代码,而是整理材料。源程序文档要求每页 50 行、连续 60 页、页眉带软件名和版本号;说明书要有固定的六章结构;申请表还要填开发完成日期、代码行数、编程语言占比这些字段。手工凑这些文档,往往比写代码还累,而且格式稍有不符就会被打回。

下面介绍的这个 DSH 插件,就是针对这个痛点的:给它一个代码仓库和软件名,它在本机生成源程序 docx、说明书 docx、界面截图和申请表字段草稿。维护者是 feely0208,包名 @deepwhale-cn/dsh-copyright-kit,版本 0.1.0,MIT 许可证。它的定位是「辅助起草 + 排版 + 核对」,不是代办,也不构成法律意见。

这是什么

一句话定位:把「代码仓库 + 软件名」变成软件著作权登记要用的材料草稿,全部在本机生成。

它解决三件事:

  1. 源程序文档的排版:每页固定 50 行、显式分页、页眉和页码域,都由脚本生成,不靠手工调。
  2. 说明书的骨架:按登记习惯的六章结构排版,用户没给的信息写 【待补充】,不编造。
  3. 申请表字段的推导:软件名、版本号、代码行数、语言占比这些字段给出草稿值,并逐项标注推导依据和置信度。

核心功能

源程序文档

递归收集仓库里的源码,按跳过规则过滤后写入 docx:

  • 跳过 node_modules、.venv、dist 等依赖和构建目录,跳过锁文件、二进制、媒体文件、隐藏文件和符号链接,跳过 package.json 这类工程清单,超过 1MB 或疑似压缩生成的文件也不收。
  • 每页固定 50 行,不足补空行;页与页之间是显式分页符,不是靠内容自然溢出。
  • 源码超过 60 页时,取前 30 页 + 后 30 页,中间页不收录,计划里会写明。
  • 页眉左侧是「软件名 版本号」,右侧是 PAGE 域页码。
  • 版式为 A4,上下边距 2.0cm、左右 2.5cm,正文 Consolas/宋体 9pt,固定行距 13.6pt。

生成之后插件会自动读回 docx,核对页数、每页行数、页眉和页码域,把结果一起返回,不用自己一页页翻。

说明书骨架

按六章结构排版:概述、主要功能、运行环境、操作说明、技术特点、版本说明。用户提供了 functions 和 overview 就填进去,没给的信息写 【待补充:…】。首次发表日期无法从代码推导,一律留空。

界面截图

调用本机 Chrome 或 Chromium 的无头模式,截 http(s) 地址或本地 HTML 文件,默认 1440×900。截图只是本机渲染,插件自身不发起网络请求,目标地址是否联网由使用者决定。

申请表字段草稿

产出 申请表字段草稿.json 和 .md,包含软件名、版本号、开发完成日期、首次发表日期、代码行数、编程语言占比。代码行数是按文件行数累加的统计口径,不等于登记系统的「有效代码行」口径,插件会标注这一点。不确定的字段留空,并给出推导依据和置信度。

计划先行,再落盘

侧栏「软著工坊」面板把流程分成两步。第一步「生成计划」列出会收哪些文件、跳过多少、总行数、原始页数与实际采用页数、语言占比,以及每项材料的前置条件(python-docx、Chrome 是否可用)。计划确认后才真正写盘,生成结果展示每个产物的路径与核对结果。输入变化会让旧计划失效,避免用旧计划跑新参数。

安装与启用

安装命令如下,来自插件 README:

dsh plugin --profile web add @deepwhale-cn/dsh-copyright-kit

装好后侧栏会多一个「软著工坊」图标。命令本身使用的是包名而不是 GitHub 地址,不要凭名称拼 dsh plugin add github:owner/repo。

除必需的 @deepseek-ai/dsh-tools 之外,插件声明的运行时要求是 dsh >=0.1.0-rc.6 <0.3.0,Node.js 不小于 18。

前置依赖

两项依赖缺了会明确报错,不会静默失败。

1、python3 + python-docx,用于生成 docx:

python3 -m pip install python-docx

解释器可以用环境变量 DSH_COPYRIGHT_PYTHON 指定。

2、Google Chrome 或 Chromium,只在需要截图时用到。默认会在常见路径查找,例如 /Applications/Google Chrome.app/Contents/MacOS/Google Chrome,也可以用 DSH_COPYRIGHT_CHROME=/path/to/chrome 指定。

另有两个可选的环境变量:

变量 作用 默认值
DSH_COPYRIGHT_OUT 输出根目录 ~/软著材料
DSH_COPYRIGHT_REPOS_DIR 面板候选仓库的扫描根 ~/dsh-guard

典型用法

方式一,在面板里走两步流程:先看「生成计划」,检查收录文件范围和前置条件,确认后再点「开始生成」。

方式二,在对话里直接说:「用软著工坊把这个仓库生成源程序和申请表」。

方式三是调服务端工具,四个工具的参数如下:

工具 主要参数 说明
copyright_source_doc repo、software_name、version、output 生成源程序 docx 并读回核对
copyright_manual software_name、version、functions[]、overview、environment、output 生成说明书骨架,缺的信息留占位
copyright_screenshots targets[]、output_dir、width、height 本机 Chrome 无头截图
copyright_form repo、software_name、version、output 推导申请表字段草稿

输出结构如下,以默认输出根目录为例:

~/软著材料/<软件名>-<版本>/
├── 源程序.docx
├── 说明书.docx
├── 截图/
│   ├── 01-首页.png
│   └── ...
├── 申请表字段草稿.json
└── 申请表字段草稿.md

自检

仓库自带三个命令,本地跑一遍就能确认插件可用:

node --check lib/index.js
node scripts/preflight-client.mjs .
node scripts/selftest.mjs

selftest 只写系统临时目录、不联网,覆盖 80 页裁剪、每页 50 行、页眉和 PAGE 域、物理容量、说明书占位、申请表留空字段、本地 HTML 截图以及 HTTP 面板接口。

适用场景与注意

适合需要申报软件著作权、手上有代码仓库、不想手工排版源程序和说明书的开发者与团队。

几点需要注意:

  1. 这是辅助起草工具,不构成法律意见。材料格式和内容仍需申请人或代理机构按登记要求核对,是否构成作品、权属归谁,由申请人负责。
  2. 插件以当前 dsh 进程的权限运行,安装前应检查源码和许可证,再决定是否用于内部代码。本插件是 MIT 许可,仓库里也带 LICENSE 文件。
  3. 插件自身不联网,只读源码,除输出目录外不写任何文件。
  4. 申请表字段只是草稿,最终以版权保护中心系统里的表单为准。
  5. 说明书不会编造信息,缺失部分一律以 【待补充】 占位。

结尾

这个插件的价值在于把登记材料里最机械的部分交给脚本:分页、页眉、截图、字段推导和读回核对。它不保证登记通过,也不替代人工核对,但能把人从一页页调格式里解放出来。

插件目录页:https://www.skillhub.cn/plugins/feely0208/dsh-copyright-kit
GitHub:https://github.com/feely0208/dsh-copyright-kit

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜