kba-cli 0.3.0rc4__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (39) hide show
  1. kba_cli-0.3.0rc4/CHANGELOG.md +92 -0
  2. kba_cli-0.3.0rc4/LICENSE +21 -0
  3. kba_cli-0.3.0rc4/MANIFEST.in +5 -0
  4. kba_cli-0.3.0rc4/PKG-INFO +135 -0
  5. kba_cli-0.3.0rc4/README.md +119 -0
  6. kba_cli-0.3.0rc4/kba/__init__.py +3 -0
  7. kba_cli-0.3.0rc4/kba/__main__.py +6 -0
  8. kba_cli-0.3.0rc4/kba/analyze.py +908 -0
  9. kba_cli-0.3.0rc4/kba/cli.py +552 -0
  10. kba_cli-0.3.0rc4/kba/doctor.py +73 -0
  11. kba_cli-0.3.0rc4/kba/eval.py +332 -0
  12. kba_cli-0.3.0rc4/kba/extract.py +511 -0
  13. kba_cli-0.3.0rc4/kba/fingerprint.py +333 -0
  14. kba_cli-0.3.0rc4/kba/jobs.py +69 -0
  15. kba_cli-0.3.0rc4/kba/links.py +38 -0
  16. kba_cli-0.3.0rc4/kba/pii.py +37 -0
  17. kba_cli-0.3.0rc4/kba/report.py +565 -0
  18. kba_cli-0.3.0rc4/kba/summary.py +55 -0
  19. kba_cli-0.3.0rc4/kba/tags.py +108 -0
  20. kba_cli-0.3.0rc4/kba/telemetry.py +78 -0
  21. kba_cli-0.3.0rc4/kba/util.py +204 -0
  22. kba_cli-0.3.0rc4/kba_cli.egg-info/PKG-INFO +135 -0
  23. kba_cli-0.3.0rc4/kba_cli.egg-info/SOURCES.txt +37 -0
  24. kba_cli-0.3.0rc4/kba_cli.egg-info/dependency_links.txt +1 -0
  25. kba_cli-0.3.0rc4/kba_cli.egg-info/entry_points.txt +2 -0
  26. kba_cli-0.3.0rc4/kba_cli.egg-info/requires.txt +6 -0
  27. kba_cli-0.3.0rc4/kba_cli.egg-info/top_level.txt +1 -0
  28. kba_cli-0.3.0rc4/pyproject.toml +27 -0
  29. kba_cli-0.3.0rc4/setup.cfg +4 -0
  30. kba_cli-0.3.0rc4/tests/fixtures/paged-header-footer.pdf +106 -0
  31. kba_cli-0.3.0rc4/tests/fixtures/sample.pdf +87 -0
  32. kba_cli-0.3.0rc4/tests/test_connector_local.py +43 -0
  33. kba_cli-0.3.0rc4/tests/test_eval.py +104 -0
  34. kba_cli-0.3.0rc4/tests/test_extract.py +392 -0
  35. kba_cli-0.3.0rc4/tests/test_paid_expert.py +58 -0
  36. kba_cli-0.3.0rc4/tests/test_scan_summary.py +44 -0
  37. kba_cli-0.3.0rc4/tests/test_smoke.py +330 -0
  38. kba_cli-0.3.0rc4/tests/test_tags_links.py +86 -0
  39. kba_cli-0.3.0rc4/tests/test_version_queue.py +52 -0
@@ -0,0 +1,92 @@
1
+ # Changelog
2
+
3
+ ## 0.3.0rc4 — 2026-11-05(内部预发布,未上传平台/PyPI)
4
+
5
+ - 新增 `kba scan-summary`:一次性扫描+分析,输出脱敏摘要(无正文/PII 原文)。
6
+ - 新增免费连接器 `connector-local` v0.1.0(`kba-local`):本地扫描、生成摘要,供付费专家读取。
7
+ - 付费专家 `plugin-paid-expert` v0.1.0 声明依赖 `kba-local`,不再要求用户手动粘贴摘要;连接器不可用时可回退粘贴。
8
+ - `tools/expert_check.py` 支持 `--pkg` 并校验 `dependencies`;免费专家回归 PASS。
9
+ - 新增 `tests/test_paid_expert.py`、`tests/test_connector_local.py`、`tests/test_scan_summary.py`;测试增至 38 个。
10
+ - 本地产物:CLI rc4 wheel/sdist、`kba-local-0.1.0.zip`、`kba-report-review-expert-0.1.0.zip`,均未提交平台。
11
+
12
+ ```bash
13
+ pip install "dist/kba_cli-0.3.0rc4-py3-none-any.whl[extract]"
14
+ ```
15
+
16
+ ---
17
+
18
+ ## 0.3.0rc3 — 2026-11-05(内部预发布,未上传平台/PyPI)
19
+
20
+ ### 修复
21
+ - 断链扫描跳过 URI scheme(`file:`/`javascript:` 等)与 `@ref` 占位符;真实语料误报从 113 降到 0。
22
+ - `kba eval` 新增 `scope_files`,支持只评测标注样本;PII 示例带相对路径,解决同名文件歧义。
23
+ - PII 预测不再把同名歧义当成 label 警告。
24
+ - 测试增至 33 个。
25
+
26
+ ### 真实语料基线(内部,非外部验证)
27
+ - `D:\content_hub\youdao_data` 只读跑通:215 文件 / 58.2MB;
28
+ - 抽取 110/113,失败 0,no_text 3(无 OCR);文本覆盖 97.4%,置信度 A;
29
+ - 健康分 80/100(权重覆盖 80%);重复 2 组(0.9%);标签有效覆盖 75.8%、推断 88.4%;自检索命中 48%;owner 0%;PII 8 文件;
30
+ - 54 文件 AI 辅助标注样本:抽取 97.35%;PII 8/8;近重复/同名/页级标签由预测簇反推,仅验证链路;标签 exact 0、Jaccard 0.13、P/R 0.13/0.28(粗标签+过标);
31
+ - 仍是一个内部语料,不等于 3 个外部语料,Gate 1 未通过;输出在 `D:\kba-real-youdao`,未改源目录。
32
+
33
+ ### 安装
34
+ ```bash
35
+ pip install "dist/kba_cli-0.3.0rc3-py3-none-any.whl[extract]"
36
+ ```
37
+ 仅限内部/本地验证,不发布。本地产物校验和见 `dist/SHA256SUMS`(不随包分发)。
38
+
39
+ ---
40
+
41
+ ## 0.3.0rc2 — 2026-11-05(内部预发布,未上传平台/PyPI)
42
+
43
+ **状态:Gate 1 仍未通过。** 新增 `kba eval` 标注评测,但当前只用合成语料验证回归;没有外部脱敏语料,不能宣称真实准确率。
44
+
45
+ ### 新增
46
+ - `kba eval --root --labels [--extract-dir] [--json] [--out]`:输出近重复/同名/页级/版本/PII 的 P/R/F1、标签 exact/Jaccard、抽取成功率。
47
+ - [docs/eval-labels.md](docs/eval-labels.md):labels schema、指标口径、Gate 1 用法。
48
+ - 合成回归测试:31 个 unittest。
49
+
50
+ ### 测试
51
+ - 31 个 unittest 通过;pyflakes clean;3.10 grammar 通过。
52
+ - 合成 5k 基准保持 ~scan 9.6s / analyze 1.9s。
53
+
54
+ ### 安装
55
+ ```bash
56
+ pip install "dist/kba_cli-0.3.0rc2-py3-none-any.whl[extract]"
57
+ ```
58
+ 仅限内部/本地验证,不发布。本地产物校验和见 `dist/SHA256SUMS`(不随包分发)。
59
+
60
+ ### 已知限制
61
+ - 合成评测不等于外部准确率;Gate 1 未过,不能对外承诺召回/准确率。
62
+ - 其余限制同 rc1:版本差异非逐段语义 diff、标签规则、owner/断链范围有限、PII 正则初筛、Big5/OCR/旧版 Office 边界、Windows CI 未实跑、平台资产未动。
63
+
64
+ ---
65
+
66
+ ## 0.3.0rc1 — 2026-11-05(内部预发布,未上传平台/PyPI)
67
+
68
+ **状态:Gate 1 未通过。** 已通过本地测试与合成基准,但尚未用 3 个外部语料验证抽取成功率、近重复召回和报告等级;不得对外宣称“完整审阅”或稳定版。
69
+
70
+ ### 新增
71
+ - P0:`text_coverage` A/B/C、健康分按可用指标归一化/权重覆盖度、抽取三态、Office 计入盘点、`job/text` TTL + `--purge-text`、报告“数据覆盖与结论适用范围”。
72
+ - P1 抽取:`kba extract`(pypdf/python-docx/python-pptx/openpyxl)、sidecar + `extract.json`、失败原因、Excel 结构指纹、旧版 Office unsupported。
73
+ - P1 准确性:PDF 去页眉页脚、PDF/PPT 页级切分、跨文档页级重合(不自动合并)、终稿/底稿信号、字数/相似度/增删字符摘要、人工裁决队列、PII 正则初筛、标签/领域三层推断、负责人/断链。
74
+ - 运维:`kba extract --workers` 并行、默认 7 天 sidecar TTL、`kba clean --purge-extract`、`tools/bench_scan.py`。
75
+
76
+ ### 测试
77
+ - 29 个 unittest 通过;pyflakes clean;Python 3.10 grammar 校验通过。
78
+ - 本机合成基准:5k 文本 scan 9.6s / analyze 1.9s。
79
+
80
+ ### 已知限制
81
+ - 无外部语料/标注,Gate 1 未通过;不能承诺真实召回率/准确率。
82
+ - 版本差异仅为摘要,不是逐段语义 diff。
83
+ - 标签/领域为关键词规则;owner 仅 frontmatter;断链仅 Markdown 本地相对链接;PII 为正则初筛。
84
+ - Big5/Shift-JIS 可能乱码;扫描件无 OCR;旧版 Office 不转换。
85
+ - Windows CI 已配置但未实际跑过;50k 真实语料未测。
86
+ - 平台资产(连接器/专家/技能/¥1)保持 0.1.x,未更新/未提交。
87
+
88
+ ### 安装
89
+ ```bash
90
+ pip install "dist/kba_cli-0.3.0rc1-py3-none-any.whl[extract]"
91
+ ```
92
+ 仅限内部/本地验证,不发布。本地产物校验和见 `dist/SHA256SUMS`(不随包分发)。
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 KBA
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,5 @@
1
+ include LICENSE
2
+ include README.md
3
+ include CHANGELOG.md
4
+ recursive-include tests *.py
5
+ recursive-include tests/fixtures *.pdf
@@ -0,0 +1,135 @@
1
+ Metadata-Version: 2.4
2
+ Name: kba-cli
3
+ Version: 0.3.0rc4
4
+ Summary: KBA - read-only knowledge base auditor (local-first)
5
+ Author: KBA
6
+ License-Expression: MIT
7
+ Requires-Python: >=3.10
8
+ Description-Content-Type: text/markdown
9
+ License-File: LICENSE
10
+ Provides-Extra: extract
11
+ Requires-Dist: pypdf>=4.0; extra == "extract"
12
+ Requires-Dist: python-docx>=1.1; extra == "extract"
13
+ Requires-Dist: python-pptx>=0.6.23; extra == "extract"
14
+ Requires-Dist: openpyxl>=3.1; extra == "extract"
15
+ Dynamic: license-file
16
+
17
+ # 知库体检(KBA)
18
+
19
+ > 只读体检本地知识库:健康分、重复裁决建议、治理计划;数据不出本机。
20
+ > 独立项目,不修改 `D:\content_hub`;复用其算法与规则(独立实现)。
21
+
22
+ ## 状态(2026-11-05)
23
+
24
+ **v0.3.0rc4(内部预发布):P0 报告诚实层 + P1 抽取层 + P1 准确性前两批 + 抽取并行/TTL + 标注评测。**
25
+ **Gate 1 外部语料验证未通过,不能对外称稳定版或“完整审阅”。**
26
+
27
+ - 真实内部语料(215 文件 / 58.2MB)只读跑通:抽取 110/113(失败 0、no_text 3)、文本覆盖 97.4%、健康 80、重复 2 组、标签有效覆盖 75.8%、自检索 48%、owner 0%;仍是单个内部语料,不是 Gate 1
28
+ - 真实语料 54 文件 AI 辅助标注样本:抽取 97.35%、PII 8/8;近重复/同名/页级标签由预测簇反推,仅验证链路;标签 exact 0、Jaccard 0.13,说明推断标签过标,需人工校准
29
+ - P0:A/B/C 数据置信度、健康分按可用指标归一化并显示权重覆盖度、抽取三态、Office 计入盘点、正文缓存 TTL 与 `--purge-text`、报告“数据覆盖与结论适用范围”;C 级元数据报告不展示综合健康分
30
+ - P1 抽取:`kba extract` 用 pypdf / python-docx / python-pptx / openpyxl 抽取 PDF、Word、PPT、Excel 正文;Excel 结构指纹(sheet/公式模式/named range)识别“同模型不同版本”;旧版 `.ppt/.xls/.doc` 显式标 unsupported
31
+ - P1 准确性:PDF 去页眉页脚、PDF/PPT 页级切分、跨文档页级重合(不自动合并)、终稿/底稿信号 + 正文字数/相似度差异、人工裁决队列、PII 正则初筛(仅计数)、标签/领域三层推断(frontmatter + 路径/文件名 + 内容)、负责人覆盖与本地断链检测、`kba clean --purge-extract`
32
+ - P1 运维:`kba extract --workers` 并行抽取、默认 7 天 sidecar TTL、`tools/bench_scan.py` 合成基准
33
+ - 评测:`kba eval` 读取标注 JSON,输出近重复/同名/页级/版本/PII 的 P/R/F1、标签 exact/Jaccard、抽取成功率;合成语料只证明回归,不代表外部准确率
34
+ - 本地连接器:免费 `connector-local`(kba-local)+ `kba scan-summary`;付费专家依赖它,连接器不可用才回退粘贴摘要
35
+ - 产出:[demo/report.html](demo/report.html)、[demo/share.md](demo/share.md)(均为 P0 前版本,重新生成后含新章节)
36
+ - 38 个测试通过(P0 验收 + 抽取/结构指纹/失败态/UTF-16/页级/版本/PII/标签/断链/purge/并行/TTL/评测)
37
+ - **免费入口已上线**:专家 v0.1.4 审核通过、平台可召唤,prompt-only,不依赖 CLI;**付费未开通**,付费专家/连接器包已就绪但未提交平台
38
+
39
+ ## 快速开始
40
+
41
+ ```bash
42
+ cd D:\kba
43
+ pip install -e ".[extract]" # 含 PDF/Office 抽取依赖;不装也能跑元数据模式
44
+ # 或安装内部预发布 wheel(本地构建,不对外发布):
45
+ # python -m pip install "dist/kba_cli-0.3.0rc4-py3-none-any.whl[extract]"
46
+
47
+ python -m kba doctor # 环境自检
48
+ python -m kba extract --root "D:\你的资料" --out "D:\kba-extract"
49
+ python -m kba audit start --root "D:\你的资料" --extract-dir "D:\kba-extract" --foreground
50
+ python -m kba audit analyze
51
+ python -m kba audit report --out report.html
52
+ python -m kba audit share --out share.md
53
+ python -m kba eval --root "D:\你的资料" --labels labels.json --json # 标注语料评测
54
+ python -m kba clean --purge-text # 立即清理 job/text 正文缓存(默认 TTL 7 天)
55
+ python -m kba clean --purge-extract --dir "D:\kba-extract" # 清理抽取 sidecar
56
+ ```
57
+
58
+ 只做元数据盘点时可跳过 `kba extract` 与 `--extract-dir`;报告会标 C 级且不展示综合健康分。
59
+
60
+ 平台内使用(WorkBuddy):
61
+
62
+ ```
63
+ 连接器:connector/(CLI + Skill 方案)
64
+ 技能:kb-audit / kb-clusters / kb-taxonomy
65
+ ```
66
+
67
+ ## 目录
68
+
69
+ ```
70
+ kba/
71
+ ├── kba/ # Python 包(cli/doctor/jobs/fingerprint/extract/tags/links/pii/analyze/report/telemetry)
72
+ ├── connector/ # WorkBuddy 发布包(meta / cli.json / 3 个 SKILL)
73
+ ├── plugin-free/ # 免费引导插件包(技能入口:.codebuddy-plugin + skills)
74
+ ├── plugin-free-expert/ # 免费引导专家包(专家入口:plugin.json + agents + avatar)
75
+ ├── plugin-paid-expert/ # 付费专家包 v0.1.0(报告解读;不读本地文件)
76
+ ├── plugin-paid/ # ¥1 付费试用插件包(旧方案)
77
+ ├── packs/generic/ # 通用行业包(taxonomy/tags/rules/report)
78
+ ├── tests/ # smoke tests
79
+ ├── tools/ # vendor 同步 / 插件打包 / 提审检查 / 合成基准
80
+ ├── demo/ # 真实语料报告(本地生成,不入库)
81
+ └── docs/ # PRD、平台 6 问、访谈提纲、定价实验
82
+ ```
83
+
84
+ ## 文档
85
+
86
+ | 文档 | 说明 |
87
+ |---|---|
88
+ | [CHANGELOG.md](CHANGELOG.md) | 版本变更与预发布说明(0.3.0rc4) |
89
+ | [docs/eval-labels.md](docs/eval-labels.md) | `kba eval` 标注格式、指标口径与 Gate 1 用法 |
90
+ | [docs/free-entry-runbook.md](docs/free-entry-runbook.md) | 免费专家 v0.1.4 召唤验收、冻结规则与反馈表 |
91
+ | [plugin-paid-expert/README.md](plugin-paid-expert/README.md) | 付费专家包 v0.1.0:定位、发布字段与提审检查 |
92
+ | [connector-local/README.md](connector-local/README.md) | 免费本地连接器 kba-local:结构、命令与包源前置 |
93
+ | [docs/handoff.md](docs/handoff.md) | **新任务交接**:现状、决策、P0/P1 状态、验收与启动提示词 |
94
+ | [docs/master-assessment-and-plan.md](docs/master-assessment-and-plan.md) | **单一事实源**:完整缺口、可信度分级、P0/P1/P2 计划与验收门 |
95
+ | [docs/prd-conformance-review.md](docs/prd-conformance-review.md) | PRD 与 WorkBuddy 专家规范符合性评审、偏差与修正清单 |
96
+ | [docs/PRD.md](docs/PRD.md) | PRD v1.8:需求、FR、接口、决策建议、v0.3.0rc4 实现状态 |
97
+ | [docs/platform-questions.md](docs/platform-questions.md) | 平台 6 问调研答案、提审避坑清单与剩余 2 个待验证项 |
98
+ | [docs/interview-guide.md](docs/interview-guide.md) | 10 人次访谈提纲与评分 |
99
+ | [docs/interview-guide-investment-research.md](docs/interview-guide-investment-research.md) | 投研首站的 10 人次访谈提纲(卖方/买方/独立/IT) |
100
+ | [docs/vertical-investment-research.md](docs/vertical-investment-research.md) | 投研垂直方案:ICP、痛点、体检产品、定价与 90 天验证 |
101
+ | [docs/pricing-experiment.md](docs/pricing-experiment.md) | 免费/付费切分与 ¥99/199/299 实验 |
102
+ | [docs/paid-trial-runbook.md](docs/paid-trial-runbook.md) | ¥1 付费试用技能的完整执行步骤、判据与分流 |
103
+ | [docs/pre-submit-review.md](docs/pre-submit-review.md) | 提审前评审:自动化检查、逐项合规、修复项与剩余风险 |
104
+ | [docs/submission-log.md](docs/submission-log.md) | 平台提交记录、审核状态与过审后的操作顺序 |
105
+ | [docs/repo-setup.md](docs/repo-setup.md) | 远程仓库、CI、分支保护与公开前的拆分计划 |
106
+ | [docs/developer-profile.md](docs/developer-profile.md) | 开发者主页:头像、昵称、简介与联系方式填写建议 |
107
+ | [docs/product-gap-assessment.md](docs/product-gap-assessment.md) | 产品缺口深度评估:数据接入、分析准确性、报告可信度与优先级 |
108
+
109
+ ## 已知限制
110
+
111
+ - **只读**:v0.3.0rc4 不提供 apply/undo,治理执行仍在服务侧。
112
+ - **抽取是可选的**:不跑 `kba extract` 时仍是元数据模式,报告标 C 级、不展示综合健康分;`pip install -e ".[extract]"` 是抽取前置。
113
+ - **旧版 Office 只计数**:`.ppt/.xls/.doc` 不做 LibreOffice 转换,显式标 unsupported;`.pptx/.xlsx` 已可抽取。
114
+ - **Excel 结构指纹只识别有公式/named range 的模型**:纯数值工作簿即使 sheet 同名也不会被当作“同模型不同版本”,避免误报。
115
+ - **页级重合不是整档裁决**:PDF/PPT 单页高重合会报告,但不进入重复簇、不自动折叠;版本差异目前是终稿/底稿信号 + 字数/相似度/增删字符摘要,未做逐段正文语义 diff。
116
+ - **PII 是正则初筛**:只覆盖邮箱/手机号/身份证/银行卡/密钥/合同编号模式,可能误报/漏报;报告只显示计数与文件名,不展示原文。
117
+ - **编码仍有边界**:UTF-8/GB18030/UTF-16(BOM) 可读;Big5/Shift-JIS 在 GB18030 可解码时仍可能是乱码(已报 `text_unreadable` 的只覆盖解码失败场景)。
118
+ - **正文缓存有 TTL 但不加密**:`job/text/` 默认保留 7 天;`kba extract` 默认在抽取前清理超过 7 天的 sidecar(`--ttl-days -1` 关闭);`kba clean --purge-text` / `--purge-extract` 可立即清理。金融/律所客户仍需显式说明缓存策略。
119
+ - **标签/领域推断是关键词规则**:frontmatter + 路径/文件名 + 内容关键词,单篇最多 6 个标签;可能误标/漏标,未接入行业词表校验。
120
+ - **负责人只读 frontmatter**:`owner/负责人` 字段;ACL、最后访问、文档系统 owner 未接。
121
+ - **断链只查 Markdown 本地相对链接**:跳过 http/https、`file:`/`javascript:` 等 URI scheme 和 `@ref` 占位符;不查外链、仓库外目标、非 Markdown 引用。
122
+ - **性能基线只是合成 5k**:`tools/bench_scan.py` 本机 5k 文本约 scan 9.6s / analyze 1.9s;50k 与真实 PDF/Office 语料未测。
123
+ - **时效判断不可靠**:文件系统 mtime 在复制/迁移后会重置;报告会提示“仅供参考”,后续接入文档系统 `updated`。
124
+ - **PDF/docx 标签不在文件内**:推断可补一部分,但二进制标签仍不如文本 frontmatter 可靠。
125
+ - **行业包未加载**:`packs/generic` 目前是配置草案,v0.4 起生效。
126
+ - **许可证暂用 MIT**:待 Q10 决策后可能切 Apache-2.0。
127
+
128
+ ## 下一步
129
+
130
+ 1. **P1 剩余准确性**:逐段正文语义 diff、ACL/文档系统 owner、标签误报治理与行业词表;用 3 个外部语料验收抽取 ≥90%、近重复召回 ≥80%。
131
+ 2. **报告可验收**:PDF 报告、报告哈希/签字页、执行摘要;默认脱敏分享。
132
+ 3. **工程门禁**:Windows CI 已在 `.gitcode/workflows/ci.yml` 增加;补 5 万文件性能基线、云占位/权限拒绝/Big5 fixtures。抽取并行与 sidecar TTL 已加。
133
+ 4. 按 [docs/paid-trial-runbook.md](docs/paid-trial-runbook.md) 走路径 B:免费包 → 过审 → 收入变现 → ¥1 付费技能验证。
134
+ 5. 按 [docs/interview-guide.md](docs/interview-guide.md) 约 10 人访谈;3 个外部语料跑通前不卖“完整审阅”。
135
+ 6. 连接器提审;根据 ¥1 验证结果决定付费报告形态。
@@ -0,0 +1,119 @@
1
+ # 知库体检(KBA)
2
+
3
+ > 只读体检本地知识库:健康分、重复裁决建议、治理计划;数据不出本机。
4
+ > 独立项目,不修改 `D:\content_hub`;复用其算法与规则(独立实现)。
5
+
6
+ ## 状态(2026-11-05)
7
+
8
+ **v0.3.0rc4(内部预发布):P0 报告诚实层 + P1 抽取层 + P1 准确性前两批 + 抽取并行/TTL + 标注评测。**
9
+ **Gate 1 外部语料验证未通过,不能对外称稳定版或“完整审阅”。**
10
+
11
+ - 真实内部语料(215 文件 / 58.2MB)只读跑通:抽取 110/113(失败 0、no_text 3)、文本覆盖 97.4%、健康 80、重复 2 组、标签有效覆盖 75.8%、自检索 48%、owner 0%;仍是单个内部语料,不是 Gate 1
12
+ - 真实语料 54 文件 AI 辅助标注样本:抽取 97.35%、PII 8/8;近重复/同名/页级标签由预测簇反推,仅验证链路;标签 exact 0、Jaccard 0.13,说明推断标签过标,需人工校准
13
+ - P0:A/B/C 数据置信度、健康分按可用指标归一化并显示权重覆盖度、抽取三态、Office 计入盘点、正文缓存 TTL 与 `--purge-text`、报告“数据覆盖与结论适用范围”;C 级元数据报告不展示综合健康分
14
+ - P1 抽取:`kba extract` 用 pypdf / python-docx / python-pptx / openpyxl 抽取 PDF、Word、PPT、Excel 正文;Excel 结构指纹(sheet/公式模式/named range)识别“同模型不同版本”;旧版 `.ppt/.xls/.doc` 显式标 unsupported
15
+ - P1 准确性:PDF 去页眉页脚、PDF/PPT 页级切分、跨文档页级重合(不自动合并)、终稿/底稿信号 + 正文字数/相似度差异、人工裁决队列、PII 正则初筛(仅计数)、标签/领域三层推断(frontmatter + 路径/文件名 + 内容)、负责人覆盖与本地断链检测、`kba clean --purge-extract`
16
+ - P1 运维:`kba extract --workers` 并行抽取、默认 7 天 sidecar TTL、`tools/bench_scan.py` 合成基准
17
+ - 评测:`kba eval` 读取标注 JSON,输出近重复/同名/页级/版本/PII 的 P/R/F1、标签 exact/Jaccard、抽取成功率;合成语料只证明回归,不代表外部准确率
18
+ - 本地连接器:免费 `connector-local`(kba-local)+ `kba scan-summary`;付费专家依赖它,连接器不可用才回退粘贴摘要
19
+ - 产出:[demo/report.html](demo/report.html)、[demo/share.md](demo/share.md)(均为 P0 前版本,重新生成后含新章节)
20
+ - 38 个测试通过(P0 验收 + 抽取/结构指纹/失败态/UTF-16/页级/版本/PII/标签/断链/purge/并行/TTL/评测)
21
+ - **免费入口已上线**:专家 v0.1.4 审核通过、平台可召唤,prompt-only,不依赖 CLI;**付费未开通**,付费专家/连接器包已就绪但未提交平台
22
+
23
+ ## 快速开始
24
+
25
+ ```bash
26
+ cd D:\kba
27
+ pip install -e ".[extract]" # 含 PDF/Office 抽取依赖;不装也能跑元数据模式
28
+ # 或安装内部预发布 wheel(本地构建,不对外发布):
29
+ # python -m pip install "dist/kba_cli-0.3.0rc4-py3-none-any.whl[extract]"
30
+
31
+ python -m kba doctor # 环境自检
32
+ python -m kba extract --root "D:\你的资料" --out "D:\kba-extract"
33
+ python -m kba audit start --root "D:\你的资料" --extract-dir "D:\kba-extract" --foreground
34
+ python -m kba audit analyze
35
+ python -m kba audit report --out report.html
36
+ python -m kba audit share --out share.md
37
+ python -m kba eval --root "D:\你的资料" --labels labels.json --json # 标注语料评测
38
+ python -m kba clean --purge-text # 立即清理 job/text 正文缓存(默认 TTL 7 天)
39
+ python -m kba clean --purge-extract --dir "D:\kba-extract" # 清理抽取 sidecar
40
+ ```
41
+
42
+ 只做元数据盘点时可跳过 `kba extract` 与 `--extract-dir`;报告会标 C 级且不展示综合健康分。
43
+
44
+ 平台内使用(WorkBuddy):
45
+
46
+ ```
47
+ 连接器:connector/(CLI + Skill 方案)
48
+ 技能:kb-audit / kb-clusters / kb-taxonomy
49
+ ```
50
+
51
+ ## 目录
52
+
53
+ ```
54
+ kba/
55
+ ├── kba/ # Python 包(cli/doctor/jobs/fingerprint/extract/tags/links/pii/analyze/report/telemetry)
56
+ ├── connector/ # WorkBuddy 发布包(meta / cli.json / 3 个 SKILL)
57
+ ├── plugin-free/ # 免费引导插件包(技能入口:.codebuddy-plugin + skills)
58
+ ├── plugin-free-expert/ # 免费引导专家包(专家入口:plugin.json + agents + avatar)
59
+ ├── plugin-paid-expert/ # 付费专家包 v0.1.0(报告解读;不读本地文件)
60
+ ├── plugin-paid/ # ¥1 付费试用插件包(旧方案)
61
+ ├── packs/generic/ # 通用行业包(taxonomy/tags/rules/report)
62
+ ├── tests/ # smoke tests
63
+ ├── tools/ # vendor 同步 / 插件打包 / 提审检查 / 合成基准
64
+ ├── demo/ # 真实语料报告(本地生成,不入库)
65
+ └── docs/ # PRD、平台 6 问、访谈提纲、定价实验
66
+ ```
67
+
68
+ ## 文档
69
+
70
+ | 文档 | 说明 |
71
+ |---|---|
72
+ | [CHANGELOG.md](CHANGELOG.md) | 版本变更与预发布说明(0.3.0rc4) |
73
+ | [docs/eval-labels.md](docs/eval-labels.md) | `kba eval` 标注格式、指标口径与 Gate 1 用法 |
74
+ | [docs/free-entry-runbook.md](docs/free-entry-runbook.md) | 免费专家 v0.1.4 召唤验收、冻结规则与反馈表 |
75
+ | [plugin-paid-expert/README.md](plugin-paid-expert/README.md) | 付费专家包 v0.1.0:定位、发布字段与提审检查 |
76
+ | [connector-local/README.md](connector-local/README.md) | 免费本地连接器 kba-local:结构、命令与包源前置 |
77
+ | [docs/handoff.md](docs/handoff.md) | **新任务交接**:现状、决策、P0/P1 状态、验收与启动提示词 |
78
+ | [docs/master-assessment-and-plan.md](docs/master-assessment-and-plan.md) | **单一事实源**:完整缺口、可信度分级、P0/P1/P2 计划与验收门 |
79
+ | [docs/prd-conformance-review.md](docs/prd-conformance-review.md) | PRD 与 WorkBuddy 专家规范符合性评审、偏差与修正清单 |
80
+ | [docs/PRD.md](docs/PRD.md) | PRD v1.8:需求、FR、接口、决策建议、v0.3.0rc4 实现状态 |
81
+ | [docs/platform-questions.md](docs/platform-questions.md) | 平台 6 问调研答案、提审避坑清单与剩余 2 个待验证项 |
82
+ | [docs/interview-guide.md](docs/interview-guide.md) | 10 人次访谈提纲与评分 |
83
+ | [docs/interview-guide-investment-research.md](docs/interview-guide-investment-research.md) | 投研首站的 10 人次访谈提纲(卖方/买方/独立/IT) |
84
+ | [docs/vertical-investment-research.md](docs/vertical-investment-research.md) | 投研垂直方案:ICP、痛点、体检产品、定价与 90 天验证 |
85
+ | [docs/pricing-experiment.md](docs/pricing-experiment.md) | 免费/付费切分与 ¥99/199/299 实验 |
86
+ | [docs/paid-trial-runbook.md](docs/paid-trial-runbook.md) | ¥1 付费试用技能的完整执行步骤、判据与分流 |
87
+ | [docs/pre-submit-review.md](docs/pre-submit-review.md) | 提审前评审:自动化检查、逐项合规、修复项与剩余风险 |
88
+ | [docs/submission-log.md](docs/submission-log.md) | 平台提交记录、审核状态与过审后的操作顺序 |
89
+ | [docs/repo-setup.md](docs/repo-setup.md) | 远程仓库、CI、分支保护与公开前的拆分计划 |
90
+ | [docs/developer-profile.md](docs/developer-profile.md) | 开发者主页:头像、昵称、简介与联系方式填写建议 |
91
+ | [docs/product-gap-assessment.md](docs/product-gap-assessment.md) | 产品缺口深度评估:数据接入、分析准确性、报告可信度与优先级 |
92
+
93
+ ## 已知限制
94
+
95
+ - **只读**:v0.3.0rc4 不提供 apply/undo,治理执行仍在服务侧。
96
+ - **抽取是可选的**:不跑 `kba extract` 时仍是元数据模式,报告标 C 级、不展示综合健康分;`pip install -e ".[extract]"` 是抽取前置。
97
+ - **旧版 Office 只计数**:`.ppt/.xls/.doc` 不做 LibreOffice 转换,显式标 unsupported;`.pptx/.xlsx` 已可抽取。
98
+ - **Excel 结构指纹只识别有公式/named range 的模型**:纯数值工作簿即使 sheet 同名也不会被当作“同模型不同版本”,避免误报。
99
+ - **页级重合不是整档裁决**:PDF/PPT 单页高重合会报告,但不进入重复簇、不自动折叠;版本差异目前是终稿/底稿信号 + 字数/相似度/增删字符摘要,未做逐段正文语义 diff。
100
+ - **PII 是正则初筛**:只覆盖邮箱/手机号/身份证/银行卡/密钥/合同编号模式,可能误报/漏报;报告只显示计数与文件名,不展示原文。
101
+ - **编码仍有边界**:UTF-8/GB18030/UTF-16(BOM) 可读;Big5/Shift-JIS 在 GB18030 可解码时仍可能是乱码(已报 `text_unreadable` 的只覆盖解码失败场景)。
102
+ - **正文缓存有 TTL 但不加密**:`job/text/` 默认保留 7 天;`kba extract` 默认在抽取前清理超过 7 天的 sidecar(`--ttl-days -1` 关闭);`kba clean --purge-text` / `--purge-extract` 可立即清理。金融/律所客户仍需显式说明缓存策略。
103
+ - **标签/领域推断是关键词规则**:frontmatter + 路径/文件名 + 内容关键词,单篇最多 6 个标签;可能误标/漏标,未接入行业词表校验。
104
+ - **负责人只读 frontmatter**:`owner/负责人` 字段;ACL、最后访问、文档系统 owner 未接。
105
+ - **断链只查 Markdown 本地相对链接**:跳过 http/https、`file:`/`javascript:` 等 URI scheme 和 `@ref` 占位符;不查外链、仓库外目标、非 Markdown 引用。
106
+ - **性能基线只是合成 5k**:`tools/bench_scan.py` 本机 5k 文本约 scan 9.6s / analyze 1.9s;50k 与真实 PDF/Office 语料未测。
107
+ - **时效判断不可靠**:文件系统 mtime 在复制/迁移后会重置;报告会提示“仅供参考”,后续接入文档系统 `updated`。
108
+ - **PDF/docx 标签不在文件内**:推断可补一部分,但二进制标签仍不如文本 frontmatter 可靠。
109
+ - **行业包未加载**:`packs/generic` 目前是配置草案,v0.4 起生效。
110
+ - **许可证暂用 MIT**:待 Q10 决策后可能切 Apache-2.0。
111
+
112
+ ## 下一步
113
+
114
+ 1. **P1 剩余准确性**:逐段正文语义 diff、ACL/文档系统 owner、标签误报治理与行业词表;用 3 个外部语料验收抽取 ≥90%、近重复召回 ≥80%。
115
+ 2. **报告可验收**:PDF 报告、报告哈希/签字页、执行摘要;默认脱敏分享。
116
+ 3. **工程门禁**:Windows CI 已在 `.gitcode/workflows/ci.yml` 增加;补 5 万文件性能基线、云占位/权限拒绝/Big5 fixtures。抽取并行与 sidecar TTL 已加。
117
+ 4. 按 [docs/paid-trial-runbook.md](docs/paid-trial-runbook.md) 走路径 B:免费包 → 过审 → 收入变现 → ¥1 付费技能验证。
118
+ 5. 按 [docs/interview-guide.md](docs/interview-guide.md) 约 10 人访谈;3 个外部语料跑通前不卖“完整审阅”。
119
+ 6. 连接器提审;根据 ¥1 验证结果决定付费报告形态。
@@ -0,0 +1,3 @@
1
+ """KBA - read-only knowledge base auditor."""
2
+
3
+ __version__ = "0.3.0rc4"
@@ -0,0 +1,6 @@
1
+ import sys
2
+
3
+ from .cli import main
4
+
5
+ if __name__ == "__main__":
6
+ sys.exit(main())