SoftwareCopyright-Skill 软著鉴别材料规则全解析:前后 30 页代码选材、90 列折行与 Word 自动分页实战
AI 技能文档【免费下载链接】SoftwareCopyright-Skill中国软件著作权申请材料 生成器 Skills本 Skills 通过阅读本地项目自动生成全套 .docx 软著申请材料全开源无须再付费购买任何软著申请服务项目地址https://gitcode.com/gh_mirrors/so/SoftwareCopyright-Skill点击查看免费下载本文围绕software-copyright-materials的参考资料 copyright_material_rules.md 展开系统拆解中国软件著作权登记中“程序鉴别材料”的合规规则以及开源仓库 SoftwareCopyright-Skill 如何把这些规则落地为可执行、可校验的自动化流程。读完本文你将掌握软著代码材料的前后各 30 页规则与不足 60 页时的替代方案代码正文 8pt/13pt 行距、每页约 55 物理行的选材估算逻辑90 显示列确定性折行的实现细节以及为何 Markdown 页分组不等于 DOCX 硬分页、最终页数必须交给 Word 排版引擎校准这一关键设计。一、鉴别材料规则源程序与文档的前后 30 页要求依据《计算机软件著作权登记办法》第十条软件鉴别材料分为程序鉴别材料与文档鉴别材料两类。程序鉴别材料即申请软件的源程序文档鉴别材料即说明书、用户操作手册等配套文档。该参考文档首先给出了四条基础执行规则源程序和文档一般由前、后各连续 30 页组成整个程序或文档不足 60 页时提交全部除特定情况外程序每页不少于 50 行除特定情况外文档每页不少于 30 行。这四句话是整个代码材料生成流程的“宪法”。SoftwareCopyright-Skill 的所有脚本设计都以满足这四条为最低目标extract_code_material.py中用SPLIT_THRESHOLD_PAGES 60表示 60 页阈值测试用例 test_workflow_integrity.py 也专门验证了“前 30 页/后 30 页模式下提交页数必须为 60”def test_submitted_pages_are_60_for_front_back_mode(self) - None: manifest {mode: front30_back30, total_pages: 143} self.assertEqual(submitted_code_page_count(manifest), 60)二、本 skill 的落地规则从法规到可执行参数1. 每页约 55 个物理行满足“每页不少于 50 行”代码正文使用8pt 字号、13pt 固定行距代码选材默认按每页约 55 个物理行估算。相关常量集中在 common.pyCODE_FONT_NAME Consolas CODE_FONT_SIZE 8pt CODE_LINE_SPACING 13pt CODE_LINES_PER_PAGE 55 CODE_MAX_COLUMNS 90关键理解55 行/页只是一个选材量估算值不是 DOCX 的硬分页边界。它用于决定“前 30 页/后 30 页”到底要抽取多少代码而不是在 Word 里强行塞满每页 55 行。生成完成后由 OfficeCLI/Word 重新读取真实页数并核对。分页估算在 extract_code_material.py 中实现纯按物理行数切块def paginate(lines: list[str], lines_per_page: int) - list[list[str]]: return [lines[i : i lines_per_page] for i in range(0, len(lines), lines_per_page)]2. 90 显示列确定性折行避免 Word 二次换行导致页数漂移代码中的制表符先按 4 个空格展开单行超过90 显示列时确定性折成多个物理行全角字符按 2 列计算。折行逻辑同样位于 extract_code_material.pydef display_width(text: str) - int: Return deterministic monospace display columns for Latin and CJK text. width 0 for char in text: width 2 if unicodedata.east_asian_width(char) in {W, F} else 1 return width def wrap_display_line(line: str, max_columns: int MAX_CODE_COLUMNS) - list[str]: Wrap one source line without dropping characters or relying on Word wrapping. if max_columns 8: raise ValueError(max_columns must be at least 8) expanded line.expandtabs(4) if not expanded: return [] segments: list[str] [] current: list[str] [] current_width 0 for char in expanded: char_width 2 if unicodedata.east_asian_width(char) in {W, F} else 1 if current and current_width char_width max_columns: segments.append(.join(current)) current [] current_width 0 current.append(char) current_width char_width if current: segments.append(.join(current)) return segments设计意图很明确如果长行交给 Word 自动换行Word 按自身字体度量换出的折点与 Python 按“等宽 90 列”估算的折点不一致就会造成实际页数与选材估算页数漂移。为此脚本在抽取阶段就完成确定性折行每个物理行后续在 DOCX 中对应一个段落Word 不会再因代码宽度二次换行。对应测试在 test_code_layout.py 中逐条锁定了行为def test_display_width_counts_cjk_as_two_columns(self) - None: self.assertEqual(display_width(abc中文), 7) def test_long_line_wrap_preserves_all_characters(self) - None: source const value (中 * 70) (x * 80) ; wrapped wrap_display_line(source, 100) self.assertGreater(len(wrapped), 1) self.assertEqual(.join(wrapped), source) self.assertTrue(all(display_width(line) 100 for line in wrapped)) def test_tabs_are_expanded_before_wrapping(self) - None: wrapped wrap_display_line(a\tb, 100) self.assertEqual(wrapped, [a b])3. 物理行连续写入 DOCX由 Word 排版引擎自动换页所有物理行连续写入 DOCX不插入人工分页符。Word 根据 A4 页面、页边距、字体和行距自动换页。DOCX 段落生成位于 build_docx_from_md.pydef code_paragraph_commands(pages: list[tuple[int, list[str]]]) - list[dict[str, Any]]: commands: list[dict[str, Any]] [] for _, lines in pages: for line in lines: commands.append({command: add, parent: /body, type: paragraph, props: { text: line if line else , font: CODE_FONT_NAME, font.ea: SimSun, size: CODE_FONT_SIZE, color: #000000, spaceBefore: 0pt, spaceAfter: 0pt, lineSpacing: CODE_LINE_SPACING, lineRule: exact, widowControl: false, wordWrap: false}}) return commands注意lineRule: exact13pt 固定行距、wordWrap: false段落内不换行因为行已在抽取阶段折好以及不设置pageBreakBefore。A4 页面与页边距则由 document_commands 统一写入代码材料使用1.8cm页边距21cm × 29.7cm 纵向页面。4. 60 页分档前 30 页 / 后 30 页 / 全部代码总页数分档逻辑在 extract_code_material.py总页数 60只输出前 30 页 后 30 页两份 Markdown代码-前30页.md、代码-后30页.md正式生成时对应软件全称-代码(前30页).docx与软件全称-代码(后30页).docx总页数 60只输出全部代码代码-全部.md→代码-全部.docx不为大项目输出全量代码 Word避免文件过大且不符合常规提交需求。if total_pages SPLIT_THRESHOLD_PAGES: front list(enumerate(pages[:30], start1)) back [(31 i, page) for i, page in enumerate(pages[-30:])] ... mode front30_back30 else: all_pages list(enumerate(pages, start1)) ... mode all_under_60_pages“后 30 页”的页码在草稿里从第 31 页起编号真实页码在 DOCX 中通过pageStart配置前 30 页文档从 1 编号后 30 页文档从 31 编号保证两份文档连起来是连续页码{command: set, path: /section[1], props: { pageWidth: 21cm, pageHeight: 29.7cm, orientation: portrait, ... pageStart: str(page_start)}},这里还有一个容易忽略的细节total_pages 60但候选清单里还有未选源码时抽取脚本会停止并要求用户补充选择而不是直接把不足 60 页的代码提交。见 extract_code_material.pyif total_pages SPLIT_THRESHOLD_PAGES and available_pages SPLIT_THRESHOLD_PAGES and unselected_count 0: raise SystemExit( STOP_FOR_USER\n fNEXT_ACTION: 当前已选代码只有 {total_pages} 页但候选源码足够补齐到 {SPLIT_THRESHOLD_PAGES} 页。 请在 草稿/代码文件选择.json 中继续选择补充文件重新记录 code-selection 门禁后再抽取。 )只有候选源码也用尽仍不足 60 页时才按规则生成全部代码材料。5. 代码材料必须来自项目源文件禁止 AI 编造代码材料必须来自项目源文件不能由 AI 生成。这是本 skill 区别于“模板套壳”服务的根本原则。真实性靠两层保障源码发现不依赖扩展名白名单common.py中is_source_candidate()用内容检测排除文档扩展名、二进制、超大文件、config、锁文件、minified 产物识别可读源码未知扩展名脚本同样进入候选清单common.py抽取范围完全由用户确认的选择文件决定extract_code_material.py只读取确认后的草稿/代码文件选择.json按完整文件抽取、去除纯空行不截取文件中间行段并在清单中记录每个文件的来源范围与材料行范围代码提取清单.md。抽取时还会为每个文件写入// File: 相对路径标记便于回溯extract_code_material.py。仓库 demo 中 代码-前30页.md 开头即可看到这种标记// File: frontend/src/app/layout.tsx import type { Metadata } from next; import { Providers } from ./providers; ... // File: frontend/src/app/page.tsx export default function Home() {6. 页眉必须包含软件全称和版本号页码连续清晰文件页眉或页首必须包含软件全称和版本号页码必须连续且清晰。页眉由 header_commands 写入左侧为“软件全称 版本号”SimSun 9pt右侧为“第 PAGE 字段 页”。def header_commands(software_name: str, version: str) - list[dict[str, Any]]: Create a left title and right page-number region in the default header. header_path /header[1]/p[1] return [ {command: add, parent: /, type: header, props: { type: default, text: f{software_name} {version}, align: left, font: SimSun, size: 9pt, color: #000000}}, {command: add, parent: header_path, type: ptab, props: {align: right, relativeTo: margin, leader: none}}, ... {command: add, parent: header_path, type: field, props: {fieldType: page, font: SimSun, size: 9pt, color: #000000}}, ... ]软件全称与版本号以草稿/申请表信息.md中已确认字段为准统一用于文件名、页眉、标题和正文防止“软件名称、版本号、页数不一致”这类常见的补正理由。7. 不把 Word 自动行号当登记规则行号是可选展示规则最后特别强调不把 Word 自动行号当成登记规则也不默认给源码添加逻辑行号需要行号时应作为单独的可选展示功能处理。也就是说代码正文就是源码物理行的连续排列是否显示行号不影响合规性脚本默认不开启 Word 自动行号。三、从草稿到 DOCXWord 真实页数的双重校验理解“选材估算 ≠ 最终页数”是本规则的核心要点。正式生成时build_docx_from_md.py 的docx_checks会执行完整校验链officecli validate file --jsonOpenXML 结构错误必须为 0重新读取/theme确认六个主题字体槽均为 Times New Roman / SimSun避免 WPS 因默认的 Calibri、Calibri Light、等线提示缺失字体officecli view file issues --json内容/格式提示写入生成报告Windows Word 时执行view stats --page-count --json读取自动分页后的真实页数生成全页联系表预览快速目检。其中对页数有硬性要求前 30 页/后 30 页文档经 Word 自动分页后必须分别正好 30 页否则生成失败并要求重新校准选材量而不是把不符页数的文档作为正式资料elif int(pages) ! estimated and estimated 30 and any( marker in output.name for marker in ((前30页), (后30页)) ): raise OfficeCliError( f{output.name} 经 Word 自动分页后为 {pages} 页不是要求的 30 页。 请根据生成报告重新校准代码选材量后再生成不能把页数不符的文档作为正式资料。 )仓库 demo 的 生成报告.md 展示了符合预期的校验结果- StudioAgent AI视频制片平台软件-代码(前30页).docx主题字体已统一为宋体/Times New RomanOpenXML 结构错误 0 个内容/格式提示 2271 个。 - StudioAgent AI视频制片平台软件-代码(前30页).docxWord 自动分页为 30 页与草稿选材估算一致文档未插入人工分页符。 - StudioAgent AI视频制片平台软件-代码(后30页).docxWord 自动分页为 30 页与草稿选材估算一致文档未插入人工分页符。在无 Word 的环境中生成流程仍会完成 OpenXML 校验与 OfficeCLI HTML 预览但提交前必须在 Word 或 WPS 中人工复核分页。四、运行方式与关键命令在实际项目中运行本 skill 生成代码材料时核心命令链如下。先生成代码候选清单并确认选择PYTHON SKILL_DIR/scripts/propose_code_selection.py \ --project 项目目录 \ --analysis 软件著作权申请资料/analysis/project.json \ --out-dir 软件著作权申请资料/草稿用户确认草稿/代码文件选择.json后抽取代码材料PYTHON SKILL_DIR/scripts/extract_code_material.py \ --project 项目目录 \ --analysis 软件著作权申请资料/analysis/project.json \ --selection 软件著作权申请资料/草稿/代码文件选择.json \ --software-name 软件全称 \ --version 版本号 \ --out-dir 软件著作权申请资料/草稿extract_code_material.py支持--lines-per-page参数默认55可在保持“每页不少于 50 行”前提下调整选材估算粒度。确认全部 Markdown 草稿后生成正式 DOCXPYTHON SKILL_DIR/scripts/build_docx_from_md.py \ --workdir 软件著作权申请资料 \ --software-name 软件全称 \ --version 版本号生成后可用 OfficeCLI 复核页数与结构officecli --version officecli validate 生成的docx --json officecli view 生成的docx issues --json officecli view 生成的代码docx stats --page-count --json officecli view 生成的docx screenshot --grid auto --render auto -o 预览.png五、与配套参考文档的关系copyright_material_rules.md是代码选材阶段的规则入口建议配合以下参考资料理解完整上下文code_selection_rules.md候选清单生成、selected/model_reason填写、排除项与真实性要求officecli_backend.mdDOCX 写入策略、页眉页码、主题字体归一与页数校验细节manual_structure.md文档鉴别材料操作手册的结构规则。相关实现与测试可直接在仓库中研读extract_code_material.py选材/折行/分档、common.py核心常量、build_docx_from_md.pyDOCX 构建与校验、test_code_layout.py折行与分页行为测试、test_workflow_integrity.py工作流门禁测试。仓库内还提供了完整生成样例 生成demo/软件著作权申请资料/可直接对照查看草稿、正式资料与生成报告。六、小结归纳本文核心结论便于直接引用规则落地参数校验方式源程序前后各连续 30 页 60 页时输出前 30 页 后 30 页Word 自动分页后必须各为 30 页不足 60 页提交全部 60 页且候选用尽时输出全部代码候选未用尽时先停止补充选择程序每页不少于 50 行每页按约 55 物理行估算选材量--lines-per-page可调不因代码宽度二次换行90 显示列确定性折行全角按 2 列测试锁定字符不丢失页眉/页码清晰左侧“软件全称 版本号”右侧 PAGE 字段OfficeCLI 页数 stats 复核代码必须真实只抽取确认后的完整源码文件// File:标记 代码提取清单回溯整套设计的核心哲学是Python 只负责确定性估算Word 才是最终分页的裁判。把折行、行距、页边距等影响页数漂移的因素在抽取阶段全部固定下来再用 OfficeCLI/Word 读取真实页数做最终门禁既满足《计算机软件著作权登记办法》第十条的鉴别材料规则又保证了同一份材料在重复生成时的结果稳定可复现。赞分享AI 技能文档【免费下载链接】SoftwareCopyright-Skill中国软件著作权申请材料 生成器 Skills本 Skills 通过阅读本地项目自动生成全套 .docx 软著申请材料全开源无须再付费购买任何软著申请服务项目地址https://gitcode.com/gh_mirrors/so/SoftwareCopyright-Skill点击查看免费下载相关推荐SoftwareCopyright-Skill 代码文件选择规则软著代码材料抽取的模型研判、内容检测与用户确认机制SoftwareCopyright Skill 代码文件选择规则软著代码材料抽取的模型研判、内容检测与用户确认机制 软件著作权申请材料中的代码鉴别材料必须来AI 技能文档SoftwareCopyright-Skill 使用指南用 Code Agent 从真实项目一键生成全套软著申请材料Word/TXTSoftwareCopyright Skill 使用指南用 Code Agent 从真实项目一键生成全套软著申请材料Word/TXT 中国软件著作权登记最AI 技能文档软著申请材料的业务理解规则SoftwareCopyright-Skill 如何把「理解软件业务」变成可校验的生成流程软著申请材料的业务理解规则SoftwareCopyright Skill 如何把「理解软件业务」变成可校验的生成流程 软件著作权申请材料的核心难点不在于排版AI 技能文档上一篇使用 Terraform AWS Provider 的 aws_kms_key 数据源查询 KMS 密钥详细信息下一篇tsParticles Branches 路径插件完全指南用分支运动路径打造树状粒子动画创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

ant-design-blazor Select 分组选择器(GroupName)实战指南:Option Group 实现与键盘导航

ant-design-blazor Select 分组选择器(GroupName)实战指南:Option Group 实现与键盘导航

前端UI组件设计系统 【免费下载链接】ant-design-blazor 基于 Ant Design 与 Blazor 的前端组件库。让开发者解放生产力,实现更大价值。 项目地址: https://gitcode.com/ant-design-blazor/ant-design-blazor 点击查看 免费下载 导读 本文以 ant-desig…

2026/10/12 2:19:18 阅读更多 →
Farm 项目调试方法论:Root Cause Tracing 根因回溯实战指南

Farm 项目调试方法论:Root Cause Tracing 根因回溯实战指南

前端构建构建工具开发工具 【免费下载链接】farm Extremely fast Vite-compatible web build tool written in Rust 项目地址: https://gitcode.com/gh_mirrors/fa/farm 点击查看 免费下载 导读 在调试复杂构建工具(如 Farm 这种以 Rust 为核心、Node.…

2026/10/12 2:19:18 阅读更多 →
GitHub Actions Toolkit 制品(Artifact)FAQ 实战指南:非法字符校验、ZIP 压缩策略、版本兼容与保留期

GitHub Actions Toolkit 制品(Artifact)FAQ 实战指南:非法字符校验、ZIP 压缩策略、版本兼容与保留期

CI/CD开发工具 【免费下载链接】toolkit The GitHub ToolKit for developing GitHub Actions. 项目地址: https://gitcode.com/gh_mirrors/to/toolkit 点击查看 免费下载 导读 本文以 GitHub Actions Toolkit 中 actions/artifact 包的官方 FAQ 文档(仓…

2026/10/12 2:19:18 阅读更多 →

最新新闻

实习考勤不内耗:习讯云打卡全流程避坑指南

实习考勤不内耗:习讯云打卡全流程避坑指南

实习第一个月,我差点被习讯云实习考勤打卡逼到内耗。每天到公司第一件事不是换工牌,而是掏出手机打开习讯云,看定位转圈、看按钮变灰、看页面弹“不在考勤范围”,一套流程下来,本来就不多的精气神先耗掉三分之一。后来…

2026/10/13 4:58:19 阅读更多 →
长连接与短连接:高并发系统中的TCP连接治理实战

长连接与短连接:高并发系统中的TCP连接治理实战

1. 从一次“连接超时”告警说起:为什么我们总在长连接和短连接之间反复横跳?上周五下午三点,某公司后台监控系统突然弹出一连串红色告警:“订单服务TCP连接数突增300%”“网关节点CPU持续92%”“下游支付接口响应延迟突破800ms”。…

2026/10/13 4:58:19 阅读更多 →
微电网风光柴储经济调度:Matlab建模与求解实战

微电网风光柴储经济调度:Matlab建模与求解实战

微电网经济调度,很多刚入门的同学一看“风光柴储”四个字就有点发怵,觉得光是理解拓扑就够复杂了,还要在Matlab里做优化,更是一头雾水。但实际做下来你会发现,它本质就是一个带约束的数学优化问题:把风机、…

2026/10/13 4:58:19 阅读更多 →
Llama 3 架构精读与 FP8 量化实战:长上下文部署全记录

Llama 3 架构精读与 FP8 量化实战:长上下文部署全记录

Llama 3 出来之后,圈子里聊得最多的其实就两件事:一是架构上到底改了些什么,二是它到底能不能被普通人跑起来。官方博客里的参数表人人都能搜到,但真正上手就会发现,一张表和你实际推理时的显存、吞吐、质量完全是两码…

2026/10/13 4:58:19 阅读更多 →
B端体验设计缓解视觉疲劳:色彩降噪、信息密度与深色模式实战

B端体验设计缓解视觉疲劳:色彩降噪、信息密度与深色模式实战

最近在复盘一个后台管理系统项目时,客户方的运营主管跟我说了一句特别真实的话:“连续录入三小时单据,眼睛胀得不行,下班后看什么都带重影。”这句话我一直记到现在。B端体验设计与C端最大的分野就在这里:C端用户是“看…

2026/10/13 4:58:19 阅读更多 →
UCINET数据导入实战:格式规范、Excel整理与高频排错

UCINET数据导入实战:格式规范、Excel整理与高频排错

1. 先搞清楚UCINET到底在等什么数据很多人在UCINET上栽的第一个跟头,不是不会跑算法,而是数据根本喂不进去。明明Excel里填得工工整整,一点Import却报错,或者导进去之后变成一团乱麻,节点对不上、值全错位。这些问题的…

2026/10/13 4:57:19 阅读更多 →

日新闻

物联网系统集成避坑指南:从选型到验收的关键要点

物联网系统集成避坑指南:从选型到验收的关键要点

做了这么多年物联网系统集成的项目,我最大的感受是,大部分坑不是出在技术前沿,而是出在一些看起来很平常的地方。设备选了便宜的、协议没问清楚、现场没摸透、验收标准写得含糊——这些细枝末节,最后都会变成延期、超支和扯皮的大…

2026/10/13 0:00:57 阅读更多 →
ESP32舵机控制全攻略:从PWM原理到高级玩法与常见故障排查

ESP32舵机控制全攻略:从PWM原理到高级玩法与常见故障排查

如果你玩ESP32有一阵子了,很难不碰到舵机控制这道坎。做智能小车要转方向,做机械臂要抬关节,做云台要偏航俯仰,背后都是同一个东西在干活:舵机。而我见过太多人卡在“代码能编译、舵机就是不听话”这个阶段&#xff0c…

2026/10/13 0:00:57 阅读更多 →
CAN总线原理与STM32实战:抗干扰、仲裁、错误处理全解析

CAN总线原理与STM32实战:抗干扰、仲裁、错误处理全解析

1. 为什么CAN总线至今仍是工业现场的“硬通货”?——从汽车底盘到智能温室的真实需求你有没有拆过一辆老款燃油车的中控台?或者调试过某高校实验室里那台跑着Modbus协议却频频丢帧的PLC控制柜?又或者,在某个农业物联网项目里&…

2026/10/13 0:00:57 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/13 2:54:56 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/12 0:16:38 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/13 1:58:08 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 21:05:09 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 14:48:49 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 18:11:17 阅读更多 →