From 2762b052030842a93e3cc05760e4a77f6cb27fd8 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E5=BC=A0=E8=83=9C=E5=AE=87?=
<17412268+zzzzz11122222@user.noreply.gitee.com>
Date: Mon, 21 Sep 2026 14:36:08 +0800
Subject: [PATCH] =?UTF-8?q?docs(W24):=20=E4=BA=A4=E4=BB=98=E4=BB=B6?=
=?UTF-8?q?=E5=8F=A3=E5=BE=84=E7=BA=A0=E9=94=99=20=E2=80=94=E2=80=94=20D2.?=
=?UTF-8?q?4=20=E8=87=AA=E7=9B=B8=E7=9F=9B=E7=9B=BE=20/=20D2.5=20=E8=BF=87?=
=?UTF-8?q?=E6=9C=9F=E5=9D=97=E6=95=B0=20/=20D4.8=20=E5=A2=93=E7=A2=91?=
=?UTF-8?q?=E8=A1=8C=E8=AF=AF=E6=A0=87=20/=20D2.6=20=E8=A1=A5=20W24=20?=
=?UTF-8?q?=E7=8A=B6=E6=80=81?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
复核时发现四处「交付件里的事实错误」,逐条修:
- D2.4 §AC-04/AC-05 段:正文写「本仓库 _chunks.jsonl 当前 617 块全部为 public」,
与本文档自己的 v1.6/v1.8 版本行(public 730 / registered 25)自相矛盾。
改为标「设计当时」+ 补 v1.8 现状(755 块),并写明 AC-04/AC-05 现已可证伪、
不再需要「造一条测试块」(双向验证已于 2026-09-18 实测通过)。
- D2.5 演示脚本:「族判定(family_id 628 块全覆盖)」→ 755 块(W24 复测)。
这是答辩当天要照着念的稿子,块数必须与实库一致。
- D4.8 §9.2:把「新集合条数 basic 105 / product 398 / faq 300 / policy 576」
当成真实条数引用 —— 那组数字是 upsert 留下的墓碑行被计入
get_collection_stats().row_count 的结果(同 D2.1 v6.9:298/576/382 = 存活行
149/288/191 的两倍)。已补口径更正段,写明本轮复测的存活行数
251/154/288/62 = 755,并定下「引用块数一律用 _chunks.jsonl,不用 row_count」。
- D2.6 答辩报告:补一条 2026-09-21 W24 状态更新 —— ① docs/43 场内基金手册已入库
(20 只场内基金,702 → 755 块),「问在库产品却答另一只」的根因已根除;
② 出口经 E2c-my 细分后共六个(E1/E2/E2c-my/E3/E4/E5),转人工只在 E5c。
已复核:Milvus 四集合存活行数与 knowledge/_chunks.jsonl 逐集合一致(288/251/154/62 = 755),
无墓碑行残留;recalls_customer_memory 仍为 False,与 D2.7 记载一致。
D2.4 HTML 结构自检通过(table/tr/td 标签配平)。
---
docs/evidence/knowledge-collections.json | 8 ++++----
客服agent/D2.4-客服Agent知识库设计方案.html | 2 +-
客服agent/D2.5-客服Agent演示脚本与账号速查-2026-09-19.md | 2 +-
客服agent/D2.6-客服Agent答辩报告-2026-09-19.md | 2 ++
.../D4.8-客服Agent智能度体检与整改报告-W21-2026-09-21.md | 4 +++-
5 files changed, 11 insertions(+), 7 deletions(-)
diff --git a/docs/evidence/knowledge-collections.json b/docs/evidence/knowledge-collections.json
index 9e95290..63808f1 100644
--- a/docs/evidence/knowledge-collections.json
+++ b/docs/evidence/knowledge-collections.json
@@ -2,7 +2,7 @@
"collections": [
{
"collection": "fin_basic_collection",
- "row_count": 46,
+ "row_count": 62,
"field_names": [
"doc_id",
"title",
@@ -120,7 +120,7 @@
},
{
"collection": "fin_faq_collection",
- "row_count": 150,
+ "row_count": 154,
"field_names": [
"doc_id",
"title",
@@ -356,7 +356,7 @@
},
{
"collection": "fin_product_collection",
- "row_count": 191,
+ "row_count": 251,
"field_names": [
"doc_id",
"title",
@@ -578,7 +578,7 @@
},
{
"collection": "user_long_term_memory_v1",
- "row_count": 24,
+ "row_count": 42,
"field_names": [
"memory_uuid",
"content",
diff --git a/客服agent/D2.4-客服Agent知识库设计方案.html b/客服agent/D2.4-客服Agent知识库设计方案.html
index b2e432f..55d9653 100644
--- a/客服agent/D2.4-客服Agent知识库设计方案.html
+++ b/客服agent/D2.4-客服Agent知识库设计方案.html
@@ -1389,7 +1389,7 @@ RAG_QUERY_CACHE_TTL=300 # 秒;缓存键必须含主体标识
-
⚠️ AC-04 与 AC-05 必须同时满足(分别对应「过滤过紧」与「过滤失效」)。另:若语料 visibility 全为 public,AC-04/AC-05 无法证伪——必须造一条 registered 测试块做双向验证。(注:本仓库 _chunks.jsonl 当前 617 块全部为 public,属该情形。)
+⚠️ AC-04 与 AC-05 必须同时满足(分别对应「过滤过紧」与「过滤失效」)。另:若语料 visibility 全为 public,AC-04/AC-05 无法证伪——必须造一条 registered 测试块做双向验证。(注:设计当时本仓库 _chunks.jsonl 617 块全部为 public,属该情形。v1.8 现状(2026-09-21):755 块、public 730 / registered 25 —— HNW-* 与 10 条 registered FAQ 已在库 ⇒ AC-04 / AC-05 现已可证伪,不再需要「造一条测试块」;双向验证已于 2026-09-18 实测通过:访客 top1 FAQ-0024 0.5486(引导登录)/ 客户 top1 HNW-006 0.7604。)
11.3 端到端验证脚本(三条)
diff --git a/客服agent/D2.5-客服Agent演示脚本与账号速查-2026-09-19.md b/客服agent/D2.5-客服Agent演示脚本与账号速查-2026-09-19.md
index 03c52b1..58d322e 100644
--- a/客服agent/D2.5-客服Agent演示脚本与账号速查-2026-09-19.md
+++ b/客服agent/D2.5-客服Agent演示脚本与账号速查-2026-09-19.md
@@ -168,7 +168,7 @@ cd D:\桌面\金融\group_fqcd_jr
| 旧实现 | 现在 | 机制 |
|---|---|---|
-| 缺主语/口语问句 → **转人工** | 先问一句(`E1` 澄清) | 澄清出口 + 族判定(`family_id` 628 块全覆盖) |
+| 缺主语/口语问句 → **转人工** | 先问一句(`E1` 澄清) | 澄清出口 + 族判定(`family_id` **755 块全覆盖**,`W24` 复测) |
| 「买 10 万要交多少手续费」→ **转人工** | 直接算(`E2` 计算型) | 纯函数 + 公开参数位,**不调模型** |
| 概念题(如「什么叫七日年化」)→ **拒答** | 正常作答 | 概念豁免层(`CONCEPT_QUERY_PATTERNS`)+ 输出侧分档 |
| 答不上来 → **兜底转人工** | `E5b` 部分答 + 引导 | **「连续 2 轮兜底」已删除**,转人工收敛为 4 类白名单 |
diff --git a/客服agent/D2.6-客服Agent答辩报告-2026-09-19.md b/客服agent/D2.6-客服Agent答辩报告-2026-09-19.md
index 3bb2caa..d6e5f8d 100644
--- a/客服agent/D2.6-客服Agent答辩报告-2026-09-19.md
+++ b/客服agent/D2.6-客服Agent答辩报告-2026-09-19.md
@@ -6,6 +6,8 @@
> **口径**:本文所有数字均为**真机实测**(`_eval_harness` 46 条金标 + `http_probe` 全链路 + `e2e_smoke_test` 宽链路冒烟 + 12 条真机边界用例),**修复前基线如实并列**,不修饰。
> **配套**:架构依据 `D3.6`(五出口 + 安全不变量);判分规则 `D3.7`(46 条金标 / 10 项指标 / 4 项零容忍);演示脚本与账号 `D2.5`;执行看板 `D2.1`;密钥轮换 `D3.8`;会话留痕 `D1.6` §4.36 与 §4.37—§4.39。
> **状态更新(2026-09-20 · `W12`/`W13`)**:本文的**结论与金标数字全部不变**(金标仍是同一套用例、同一台机器)。但有三处外部事实需要并读:① **投顾模块已随合并恢复**(组员新功能取代「整体清除」,见 `D4.5` 顶部状态更新与 `D4.7`)—— 对本客服 Agent 的能力与门禁**无影响**;② 权威文档目录(`客服agent\` 24 份 / `开发文档\` 52 份)**已入库**,全量回归在其后复跑(**1909 passed / 3 skipped**,见 §6.3);③ 增加了**模型密钥轮换工具** `tools/rotate_api_keys.py`(操作手册 `D3.8`),§10 第 4 项由「手工 4 步」升级为「跑一个脚本」。
+> **状态更新(2026-09-21 · `W24`)**:本文**结论与金标数字仍然不变**(`M-1 46/46` / `M-4 46/46` / `M-6 5/46` / 四项零容忍全 0)。新增两件与答辩直接相关的事实:① **`docs/43` 场内基金产品手册已入库**(20 只场内基金:13 ETF + 7 LOF),切片件 **702 → 755 块**,四集合已重建重灌 —— 此前「问在库的产品却答另一只」的根因(语料里根本没有这批产品)**已根除**;② 出口在 `E1`—`E5` 基础上**细分出 `E2c-my`(本人画像分层)** ⇒ 当前实现共 **六个出口**(`E1` 澄清 / `E2` 计算型(内含 `E2a`—`E2e`)/ `E2c-my` / `E3` 知识直返 / `E4` 证据约束生成 / `E5` 分级回退),**转人工只发生在 `E5` 的第三档 `E5c`**。被问到「几个出口」时答「**六个出口,转人工只是 `E5` 里最小的那一档**」。详见 `D2.1` `v6.39`、`D4.8` §10。
+>
> **状态更新(2026-09-20 · `W19` · 演示前最后一次全量核验)**:本文**结论未变**,新增一次**演示前实测**(见 §6.4)与两项**已知边界**(见 §10 第 8/9 条)。另:原「建议 B(`embedding` 端点唯一性配置守卫)留到演示后做」**已于本轮闭环**(`app\service\model_gateway.py` + 2 条单测);`D-1`(**分层体系与门槛属公开宣传口径**,`D2.4` v1.7)与 `D-3`(**`M-2b` 分母统一为 18**,`D3.7` §3)**已落进文档**。
---
diff --git a/开发文档/D4.8-客服Agent智能度体检与整改报告-W21-2026-09-21.md b/开发文档/D4.8-客服Agent智能度体检与整改报告-W21-2026-09-21.md
index bd4e6db..dc69f80 100644
--- a/开发文档/D4.8-客服Agent智能度体检与整改报告-W21-2026-09-21.md
+++ b/开发文档/D4.8-客服Agent智能度体检与整改报告-W21-2026-09-21.md
@@ -317,7 +317,9 @@ E4 生成稿里出现「收益率 / 七日年化」等 YIELD_METRIC_TERMS
| `客服agent/D2.1-…Todolist.md` | 升 `v6.37`,登记本轮修订 |
| `开发文档/D1.1-文档索引与权威声明.md` | 升 `v1.13`,登记 `D4.8` 与本轮版本位移 |
-> `W21` 首轮已完成的部分(7 类缺陷 C-1~C-7、语料补强 4 组 FAQ / 3 个 basic 章节 / 1 个 product 章节、`FAQ_EXPECTED_COUNT 65→69`、新集合条数 `basic 105 / product 398 / faq 300 / policy 576`)见 `客服agent\D2.1` 的 `v6.37` 条目,不在此重复。
+> `W21` 首轮已完成的部分(7 类缺陷 C-1~C-7、语料补强 4 组 FAQ / 3 个 basic 章节 / 1 个 product 章节、`FAQ_EXPECTED_COUNT 65→69`、集合条数 `basic 105 / product 398 / faq 300 / policy 576`)见 `客服agent\D2.1` 的 `v6.37` 条目,不在此重复。
+>
+> ⚠️ **口径更正(2026-09-21 补注)**:上面那组「集合条数」`105 / 398 / 300 / 576` **不是存活行数** —— 它是 `upsert` 留下的**墓碑行被计入 `get_collection_stats().row_count`** 的结果(同 `D2.1` `v6.9` 条目:「重灌后脚本打印 298 / 576 / 382 = 存活行 149/288/191 的**两倍**」)。**判据**:按 `doc_id` 查单条只返回 1 行。**本轮(`W24`)复测的存活行数是 `product 251 / faq 154 / policy 288 / basic 62 = 755`**(`docs\evidence\knowledge-collections.json`),与 `knowledge\_chunks.jsonl` **逐集合一致**。**引用块数时一律用 `_chunks.jsonl` / `_chunks_report.txt`,不要用 `row_count`。**
---