新对话第一件事:读本文件。它把任务目标、硬规则、当前状态、可复用脚本、开工步骤、待办全部收在一起,不需要再读前面 5 份旧交接(2026-10-02 13:48 / 14:08 / 14:24 / 15:10 / 16:53 那几份,作为历史留档即可)。 数字均为本机实测,时间:2026-10-02 晚。
把 46 本中医 EPUB 从原件按「结构优先」重新分块,建进一个库;要求原文完整、出处可追溯、图片与脚注不丢,检索时能一次命中「一条」而不是半条或几千字一大块。
总原则(用户已多次确认)
理由:「穴名/脉名/病证名 + 别名 + 空格」的正则会命中针法口诀、手法连续论述的句首(形似穴名起首、实为同一段连续论述)。实测:《针灸大成》「一片内含 ≥2 穴条起首」= 0 例;《脈經校注》「以注释开头的片」= 0 例。此条是给古籍点校本预置的防误判约束。
理由:源 EPUB 的目录常是嵌套 div(同级内容被 level-1、level-2 各包一次),顺序/多重集判据必误报缺字。《针灸大成》目录 522 个嵌套元素实测触发过 1 处假缺口,查实是被父元素完整包含。 做法:把源 XHTML 每个元素的文本按 12 字滑窗,检查每个窗口是否出现在库内文本中;顺序无关,缺口 0 才算过。比对时先去掉 〔源:…〕 标记(标记夹在两片之间会把原文断口误报成缺口)。
理由:插件按整篇文档算 charsPerToken,各篇预算不同(实测 1296–3015)。不收口会被 windowBlock 带重叠切开 → 内容重复、不再逐字无损。
其他技术约束
splitBlocks 以空行为唯一边界)#/## 开头的行会被 splitBlocks 吃掉并变成该块的 heading;不想被吃就别用 #rawText → 删除 → 按 parentDirectoryId 重新入库」parseEpub 不读 OPF spine 的通用缺陷(本批 10 个 EPUB 实测 spine 序 == ZIP 序,无实际损害;上游 issue 未提)| 项 | 值 |
|---|---|
| 主库 | 中医·结构优先 = 8bf27782-5f61-49c8-8d9a-af2b89158239(由「经络腧穴学·结构优先」改名,库 id 未变) |
| 主库体量 | 文档 461(含 8 个目录条目);453 篇正文 / 4006 块 / 133.9 万字符 |
| 检索启用范围 | 开关值 enabled=True, enabledBaseIds=[8bf27782](但见第六节:此开关检索时不生效) |
| 库级配置 | 仅 siblingChunks=0,其余继承全局(未动) |
| 全局配置(未动) | 嵌入 Qwen/Qwen3-Embedding-4B(2560d)、重排 Qwen/Qwen3-Reranker-8B、chunkSize 800、chunkOverlap 100、smartChunk=true、topK=4 |
| 原 EPUB | 10 个,位于 C:\Users\xy192\DSH云端备份\4-原始底本\epubtest\00-原始EPUB\ —— 全部未动 |
| 旧库 | 「中医」c16b54af-…(47 文档)、「中医新」8c95794f-…(6535 块)—— 保留、停用、未改 |
| 临时验收库 | _tmp-素问语译-结构C(eff1d602,83 篇)、_tmp-针灸大成-结构C(5cde9779,233 篇)、_tmp-脈經校注-结构C(488695c9,105 篇)—— 保留备查 |
| 库总数 | 13 个(含 6 个可清理的 _tmp-*:五章 3 个、第三章策略 2 个、空壳 _tmp-针灸大成-结构C 73de11d4、中间态 _tmp-脈經校注-结构C acbabe9b) |
主库目录结构(4 个类 + 4 个书目录)
| 目录 | 篇数 | 块数 | 字符 | 处理记录 |
|---|---|---|---|---|
| 教材讲义类 / 经络腧穴学 | 29 | 676 | 297,000 | 无(第 1 本原型,验收在 新库抽查单-经络腧穴学-20261002.md) |
| 医经语译类 / 黄帝内经素问语译 | 84 | 963 | 386,200 | 有(《素问语译》验收报告 + 修订记录) |
| 针灸专著类 / 针灸大成 | 234 | 1,607 | 378,648 | 有(含书目信息、卷次决定、误报说明) |
| 医经校注类 / 脈經校注 | 106 | 760 | 276,841 | 有 |
目录 id 全部记在 工作区\_tmp\main_reorg.json。
| 书 | 书族 | 篇/片 | 核验 |
|---|---|---|---|
| 经络腧穴学 | 教材讲义类(首本原型) | 29 篇 / 676 块 | 逐篇块数一致、逐字无损、676/676 出处可回解 |
| 黄帝内经素问语译 | 医经语译类(首本) | 83 篇正文 / 931 片 | 84/84 篇块数一致;12 字滑窗 0 缺口;931/931 出处;558/558 图片;【注解】771、【语译】864 |
| 针灸大成 | 针灸专著类(首本) | 233 篇正文 / 1573 片 | 232/233 篇块数一致(唯一差异=书目篇多 1 块=插件注入的标题上下文);0 缺口;1859/1859 出处;考正穴法穴条 359/359 逐经吻合 |
| 脈經校注 | 医经校注类(首本) | 105 篇正文 / 743 片 | 105/105 篇块数一致;0 缺口;2557/2557 出处;图片 155/155 |
检索实测(显式限定 baseId=主库,TopK=4,均单块精确命中):中府 定位(经络腧穴学,339 字符完整条目)、上古天真论 女子七岁(451 字符,原文+注解+语译同块)、考正穴法 中府(针灸大成,192 字符)、标幽赋 注解(195 字符)、浮脈 舉之有餘(脈經校注,371 字符;旧 md 版是 1294 字一大块)、寸口脈浮 中風 發熱(341 字符)。
_tmp\five\boundaries_fixed.json(38 本合集内图书的页码表,格式 start/end/cip;start = CIP 页 −2,含本书封面/内封)。_tmp\gen_mj.py 头部写一个 probe,打印「每页首元素 + 元素类分布 + 标题层级计数」,据此定文档层级(卷/篇/门)与单元规则(一条=什么)。遇到新体例先给用户确认再铺开。EPUB 路径、P0,P1 页范围、BOOK 名,再改单元组装与 BIB_PAGES(书目信息页)。verify_xx.py 导入临时库 _tmp-<书名>-结构C,看四项:逐篇块数一致、逐篇无损、12 字滑窗 0 缺口、出处全可回解。_tmp\import_book_main.py(改 CONF 段)导入主库对应书目录,再写「处理记录」与「抽查单」,并把处理记录也作为文档放进该书目录。三族模板现成可用
| 书族 | 生成器 | 单元规则 |
|---|---|---|
| 医经语译类 | _tmp\gen_suwen.py | 一条 = 原文段 +【注解】+注文 +【语译】+译文;篇 = 文档 |
| 针灸专著类 | _tmp\gen_jd.py | 四模式自适应(歌赋注解/短行打包/长段/考正穴法穴条);一穴一条;相邻短条 ≤400 字打包 |
| 医经校注类 | _tmp\gen_mj.py | 一条 = 原文段 + 紧随其后的注释段(注释段以〔N〕开头,遇新原文/标题收束);篇标题+提要+按语同片;相邻短条打包 |
剩余 42 本:医经校注类剩 4 本(鍼灸甲乙經校注上下、難經校注、傷寒論校注、中藏經校注)、医经语译类 2 本(灵枢经、伤寒论语译)、针灸专著类 2 本(针灸甲乙经、单玉堂针灸配穴通俗讲话)、教材讲义类 5 本(刺法灸法学、中药学 OCR、针灸治疗学、方剂学讲稿、中药学讲稿等)、方书类 6 本(千金翼方、备急千金要方、局方、证治准绳六部)、其余「较粗」的书 —— 这批要连图片、脚注、字形图一起从 EPUB 重做。 书单与分类:_tmp\five\worklist.json、md_classified.json。
GET /knowledge/knowledge-toggle 的 enabledBaseIds 只被存取、供面板显示;检索链路 search() / searchSingle() 只认请求里的 baseId / baseIds,从不读 getEnabledBaseIds()。
baseId 检索时,旧「中医」库 + 6 个 _tmp-* 库都会参与竞争(实测问「浮脈 舉之有餘 按之不足」,前 3 名全是旧库,新库排第 4)。docIds 也不是硬过滤,只有 baseId / baseIds 是硬过滤。knowledge_search 工具调用时也没能限定到主库(它的默认范围是全部库)。baseId;② 改插件让检索回落到 getEnabledBaseIds()(属 DSH 本体改动,需批准 + 重启);③ 删掉 6 个废弃 _tmp-* 库。C:\Users\xy192\DeepSeekHarness\.secrets\cloudflare-pages.conf(含 CLOUDFLARE_ACCOUNT_ID、CF_PAGES_PROJECT)+ …\.secrets\cloudflare-pages.tokennpx --yes wrangler@3 pages deploy <舞台目录> --project-name=kb-xy919 --commit-dirty=true工作区\_tmp\deploy-kb\:必须有 index.html;_headers 必须 LF 行尾(CRLF 会被静默忽略);每次部署别忘带旧文件,否则旧直链 404https://kb-xy919.pages.dev/;最新首页 https://kb-xy919.pages.dev//dl/*.md),不要顺手做 HTML 阅读页、入口页、zip 等变体。**工作区\静态发布说明.md。工作区\抽查单-脈經校注-20261002.md(已发布直链 https://kb-xy919.pages.dev/dl/kb-spotcheck-mj-20261002.md)〔缺字〕;建议先做 1 本验证准确率,机器输出标「机器识别/待核」,不直接当权威正文GET /knowledge/config 与 /knowledge/bases 明文返回 key 且本机接口无鉴权)、parseEpub 不读 spine 的上游 issue、清理 6 个废弃 _tmp-* 库| 文件 | 说明 |
|---|---|
知识库结构优先-本轮总结-20261002.md | 本轮进度与成果总结(可转外部评审) |
处理记录-针灸大成-20261002.md | 含书目信息页处理、卷次决定表、连续起首不拆分 |
处理记录-脈經校注-20261002.md | 医经校注类模板 + 核验数据 |
验收报告-素问语译-20261002.md | 含第五节修订记录(书目信息篇、12 字滑窗判据) |
抽查单-脈經校注-20261002.md | 34 条待复核 |
抽查单-素问语译-20261002.md / 抽查单-针灸大成-20261002.md | 已通过复核 |
静态发布说明.md | 直链台账与部署方法 |
脚本(工作区\_tmp\,权威清单)
gen_jd.py、gen_suwen.py、gen_mj.py(三族模板)verify_jd.py、verify_suwen.py、verify_mj.pyaccept_jd.py、accept_mj.py、make_spotcheck2.pymain_reorg.py(改名+建目录+迁入)、import_book_main.py(按目录导书)、import_jd_main.py、refresh_records.pyfix_boundaries.py、align_books3.py、_tmp\five\boundaries_fixed.json、worklist.jsonstage_deploy7.py(最新,保留全部旧直链)本文件不含任何 API key 或凭据。