docs(W16): 落档「Agent 与用户画像关系 / 对话能否更新画像 / 中长期记忆」咨询轮 —— D2.1 v6.30 / D1.6 §4.43 / D1.1 §24 版本位
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
# 客服 Agent 执行 Todolist(执行看板 · v6.29)
|
||||
# 客服 Agent 执行 Todolist(执行看板 · v6.30)
|
||||
|
||||
> **体系编号**:`D2.1` · 域:二、对外交付 · 编号体系见 `D1.1` §4.0
|
||||
|
||||
@@ -46,6 +46,34 @@
|
||||
|
||||
**看板状态更新**:`F-3` → **✅ 已落地**(新增 4 条单测)。批次 H 剩余:`H-05`。新增待办:**三项安全路由缺口收口**(`G-01` 优先,建议排在 `H-05` 前)。
|
||||
|
||||
## v6.30 本轮修订要点(2026-09-20 · `W16` 咨询轮:Agent 与用户画像的关系 / 对话能否更新画像 / 要不要做中长期记忆)
|
||||
|
||||
> **触发**:用户提问「我们这个agent跟用户画像有什么关系 用户跟agent的对话能否作为更新用户画像的依据,如果可以做,是不是要做中长期记忆」。**本轮未改任何代码**,正本见 `开发文档\D1.6…md` §4.43。
|
||||
|
||||
**一、结论:Agent 对画像是「读,不写」**
|
||||
|
||||
| 层 | 载体 | 客服侧 |
|
||||
|---|---|---|
|
||||
| 短期会话记忆 | `conversation_message` | ✅ 开 |
|
||||
| 中期记忆 | `memory_unit` | ❌ 客服不写(`NO_LONG_TERM_MEMORY_AGENT_TYPES`) |
|
||||
| 画像候选 | `memory_unit.status='candidate'` | ❌ 整体关闭(`PROFILE_CANDIDATE_AGENT_TYPES = frozenset()`) |
|
||||
| 长期记忆召回 | `memory_unit` / `user_facts` | ❌ 关(`recalls_customer_memory=False`) |
|
||||
| 画像读取 | `fin_customer_profile` | ⚠️ 字段级只读(`query_customer_profile`) |
|
||||
|
||||
**二、「对话 → 画像」链路已在仓库里(不是待开发)**:`memory_unit` → `user_facts` → `fin_customer_profile` → `profile_snapshots`,门槛 `evidence ≥ 2` 或 `confidence ≥ 0.90`。卡点全在**合规裁定**。
|
||||
|
||||
**三、按字段所有权分域(不可逾越的红线)**
|
||||
|
||||
- ✅ 可由对话更新:`preferred_asset_class` / `investment_horizon` / `risk_tags`(自述标签,标注来源)
|
||||
- ❌ **绝对不可**:`investor_type`(风险等级)—— 只来自 `fin_risk_assessment` 问卷,代码级红线
|
||||
- ❌ 不可:`total_asset` / `trading_frequency` / `behavior_score`(交易侧所有)
|
||||
|
||||
**四、发现一处过期理由**:`D2.2` §1.7 第 12 项把「**收益方(投顾)已整体清除**」列为关闭长期记忆召回的理由之一,而投顾已于 2026-09-20 恢复 ⇒ **已失效**;另一条「注入生成上下文与证据约束生成直接冲突」仍然成立。
|
||||
|
||||
**五、我的建议**:记忆**不进生成上下文**,只作**确定性信号**(检索分区加权 / 澄清候选排序 / `E2` 计算入参 / 适当性过滤)。
|
||||
|
||||
**六、待决 3 项**:① 是否打开画像候选与中期记忆(建议演示后做,只开 `preference:*` / `constraint:*` / `goal:*`,不开 3 个 PII 键);② 记忆消费是否限定为确定性信号(建议是);③ 是否更正 §1.7 第 12 项已过期的理由①(建议更正)。
|
||||
|
||||
## v6.29 本轮修订要点(2026-09-20 · `W15` 执行轮:修掉 `P1` 错分「风险测评结果」+ 全量回归 + 推送)
|
||||
|
||||
> **触发**:用户批准 §4.41 三项待决后指令「按照你建议的来 然后跑测试并推送」。正本见 `开发文档\D1.6…md` §4.42。
|
||||
|
||||
@@ -36,7 +36,7 @@
|
||||
```
|
||||
对外交付(客服agent\) 配套完整版 / 前身(开发文档\)
|
||||
────────────────────────────────── ─────────────────────────────────────
|
||||
A1 [D2.1] D2.1-客服Agent执行Todolist.md v6.29 ←→ [D3.4] D3.4-客服Agent重构Todolist.md v5.1
|
||||
A1 [D2.1] D2.1-客服Agent执行Todolist.md v6.30 ←→ [D3.4] D3.4-客服Agent重构Todolist.md v5.1
|
||||
A2 [D2.2] D2.2-客服Agent需求文档.html v2.6 ←→ [D3.1] D3.1-客服Agent需求开发文档与设计方案.html v2.5
|
||||
A3 [D2.3] D2.3-客服Agent开发计划.html v1.1 ←→ (无旧版)
|
||||
A4 [D2.4] D2.4-客服Agent知识库设计方案.html v1.3 ←→ [D3.2] D3.2-知识库设计方案.html v1.2
|
||||
@@ -59,7 +59,7 @@ A5 [D3.3] 访客与角色分离的鉴权方案建议(仅此一份,无新旧
|
||||
|
||||
| # | 体系编号 | 文档 | 版本 | 作用 |
|
||||
|---|---|---|---|---|
|
||||
| **A1** | **D2.1** | `客服agent\D2.1-客服Agent执行Todolist.md` | **v6.29** | **唯一开工入口**。**57 项 / 8 批次(A—H)** / 12 步关键路径 / 2 组会签 / **完工判据 13 条**。**新增批次 H · 智能增强**(`H-01`~`H-06`) |
|
||||
| **A1** | **D2.1** | `客服agent\D2.1-客服Agent执行Todolist.md` | **v6.30** | **唯一开工入口**。**57 项 / 8 批次(A—H)** / 12 步关键路径 / 2 组会签 / **完工判据 13 条**。**新增批次 H · 智能增强**(`H-01`~`H-06`) |
|
||||
| **A2** | **D2.2** | `客服agent\D2.2-客服Agent需求文档.html` | **v2.6** | 对外需求:**FR-CS-001~052**(52 条,新增域 H)+ NFR-CS-001~021 全量、身份与鉴权模型、验收标准(**新增 AC-13 金标门禁**) |
|
||||
| **A3** | **D2.3** | `客服agent\D2.3-客服Agent开发计划.html` | **v1.1** | 前置条件、测试环境就位(G-00)、会签流程、门禁、交付物、**批次 H(§3.4b)** |
|
||||
| **A4** | **D2.4** | `客服agent\D2.4-客服Agent知识库设计方案.html` | **v1.3** | 三集合 / 三档可见性 / **集合内分区隔离(§7.2.1)** / 8 模块 / 7 步入库 8 步检索 / 8 项决策 / **附录F 五出口对接** |
|
||||
@@ -123,7 +123,7 @@ A5 [D3.3] 访客与角色分离的鉴权方案建议(仅此一份,无新旧
|
||||
| **D1.4** | `开发文档\D1.4-知识源与品牌整改变更说明-2026-09-17.md` | CS-CONTENT-2026-016 | 现行 | 逐份变更说明(§3.1—§3.9 改写映射 + G-01~G-09) |
|
||||
| **D1.5** | `开发文档\D1.5-开发前决策清单与阻塞项-2026-09-17.md` | CS-DOC-2026-018 v1.0 | 现行 | 🔴 **开工前唯一决策登记册**:28 项待你拍板 + 阻塞分级(P0 12 / P1 10 / P2 6)+ 需你提供的 7 项输入;§7 为回填表(增补项见 `D1.6` §4.3) |
|
||||
| **D1.6** | `开发文档\D1.6-对话上下文提取与开工前补充决策-2026-09-17.md` | CS-DOC-2026-019 v1.0 | 现行 | 🔴 **本轮会话上下文提取件**:已读清单与权威链校正 / 可复用事实(含实测)/ 旧实现 **7 条转人工通路** / 文档缺陷 `Q-1.1`~`Q-1.6` / 前提风险 `K-01`~`K-08` / 待拍板 `N-01`~`N-09` |
|
||||
| **D2.1** | `客服agent\D2.1-客服Agent执行Todolist.md` | **v6.29** | 现行 | 🔴 **唯一开工入口**:**57 项 / 8 批次** / 12 步关键路径 / **批次 H 智能增强** |
|
||||
| **D2.1** | `客服agent\D2.1-客服Agent执行Todolist.md` | **v6.30** | 现行 | 🔴 **唯一开工入口**:**57 项 / 8 批次** / 12 步关键路径 / **批次 H 智能增强** |
|
||||
| **D2.2** | `客服agent\D2.2-客服Agent需求文档.html` | **v2.6** | 现行 | 🔴 对外需求:**FR-CS-001~052** + NFR-CS-001~021 |
|
||||
| **D2.3** | `客服agent\D2.3-客服Agent开发计划.html` | **v1.1** | 现行 | 🔴 前置条件 / 批次 / 会签 / 门禁 / 交付物 |
|
||||
| **D2.4** | `客服agent\D2.4-客服Agent知识库设计方案.html` | **v1.3** | 现行 | 🔴 三集合 / 三档可见性 / **分区隔离** / 7 步入库 8 步检索 / **附录F** |
|
||||
@@ -182,7 +182,7 @@ A5 [D3.3] 访客与角色分离的鉴权方案建议(仅此一份,无新旧
|
||||
|
||||
| 文件名 | 版本 | 日期 | 定位 | 关联 |
|
||||
|---|---|---|---|---|
|
||||
| `D2.1-客服Agent执行Todolist.md` | **v6.29** | 2026-09-17 | 唯一开工入口 | 收敛自 `开发文档\D3.4-客服Agent重构Todolist.md` v5.1 |
|
||||
| `D2.1-客服Agent执行Todolist.md` | **v6.30** | 2026-09-17 | 唯一开工入口 | 收敛自 `开发文档\D3.4-客服Agent重构Todolist.md` v5.1 |
|
||||
| `D2.2-客服Agent需求文档.html` | **v2.6** | 2026-09-17 | 对外需求(FR **52** / NFR 21) | 完整版见 §4.2 |
|
||||
| `D2.3-客服Agent开发计划.html` | **v1.1** | 2026-09-17 | 批次 / 会签 / 门禁 | 与 A1 批次号一一对应 |
|
||||
| `D2.4-客服Agent知识库设计方案.html` | **v1.3** | 2026-09-17 | 三集合 / 三档 / 入库检索流程 | 完整版见 §4.2 |
|
||||
|
||||
@@ -2883,6 +2883,66 @@ pytest **2 failed / 1577 passed / 2 skipped**(= `T0` 基线同两项)、ruff
|
||||
|
||||
**八、临时产物**:`_w15_probe.py` 已归档为 `_eval_harness/http_probe_w15_profile.py`(与 `http_probe.py` 同目录,属既有留痕约定)。
|
||||
|
||||
### 4.43 2026-09-20 第三十九轮会话记录(`W16`:咨询轮 —— 「Agent 与用户画像的关系 / 对话能否更新画像 / 要不要做中长期记忆」)
|
||||
|
||||
> **本轮指令(原文)**:「我们这个agent跟用户画像有什么关系 用户跟agent的对话能否作为更新用户画像的依据,如果可以做,是不是要做中长期记忆」
|
||||
|
||||
**一、现状(逐条读码取证,本轮**未改任何代码**)**
|
||||
|
||||
| 层 | 载体 | 客服侧现状 | 证据 |
|
||||
|---|---|---|---|
|
||||
| 短期会话记忆 | `conversation_message` + `conversation_session`(MySQL) | ✅ 开(读 / 写) | `DEC-19`;见 §4.40 |
|
||||
| 中期记忆 | `memory_unit`(+ `memory_evidence`) | ❌ **客服不写** | `app\worker\runtime.py:93` `NO_LONG_TERM_MEMORY_AGENT_TYPES = frozenset({"customer_service"})` |
|
||||
| 画像候选 | `memory_unit.status='candidate'` | ❌ **整体关闭** | `runtime.py:84` `PROFILE_CANDIDATE_AGENT_TYPES = frozenset()`(注释写明「不是重构期临时状态」,要开必须先改 `DEC-19`) |
|
||||
| 长期记忆召回 | `memory_unit` / `user_facts` | ❌ **关** | `customer_service.py:606` `recalls_customer_memory=False` + `base.py:143` 基类闸门 |
|
||||
| 画像读取 | `fin_customer_profile` → 快照 → 投影 | ⚠️ **字段级只读** | `query_customer_profile`(self 作用域)+ `PROFILE_FIELD_POLICY` |
|
||||
|
||||
**二、关键发现①:整条「对话 → 画像」链路**已在仓库里**(不是待开发)**
|
||||
|
||||
```
|
||||
对话 → memory_unit(中期) → user_facts(长期) → fin_customer_profile(画像) → profile_snapshots + Milvus/Neo4j 投影
|
||||
门槛:evidence_count ≥ 2 或 confidence ≥ 0.90
|
||||
```
|
||||
证据:`app\service\profile_assembly_service.py`(模块文档即写「记忆系统为画像服务」)、`app\service\profile_generation_service.py`、`app\service\memory_taxonomy.py`(13 个受控记忆键)。⇒ 「能不能做」在**技术上是既有能力**,卡点全在**合规裁定**。
|
||||
|
||||
**三、关键发现②:按字段所有权分域,且有一条不可逾越的红线**
|
||||
|
||||
| 画像字段 | 对话能否更新 | 机制 |
|
||||
|---|---|---|
|
||||
| `preferred_asset_class` | ✅ 能 | `FACT_TO_PROFILE_FIELD["preference:asset_class"]` |
|
||||
| `investment_horizon` | ✅ 能 | `FACT_TO_PROFILE_FIELD["preference:horizon"]` |
|
||||
| `risk_tags`(自述标签) | ✅ 能,标注「来源:自述」 | `SELF_REPORTED_PREFIXES` |
|
||||
| `investor_type`(**风险等级**) | ❌ **绝对不可** | `profile_assembly_service` 文档原话:「客户在对话里说"我是激进型"不会改变它——这是合规底线,**不能只靠约定**」 |
|
||||
| `total_asset` / `trading_frequency` / `behavior_score` | ❌ 不可 | `PROFILE_OWNED_FIELDS` 按字段所有权写入,留给交易模块 |
|
||||
| `customer_tier` | ❌ 不参与 | 快照按设计排除该字段(见 `D-11`) |
|
||||
|
||||
设计亮点(值得在答辩里讲):自述等级**不丢**——进 `risk_tags` 并标注来源。当出现「问卷 C4 / 自述稳健 / 行为买 R4」**三方不一致**时,这个矛盾本身即风控信号(`D3.1` `FR-CS-024` 转人工摘要也含画像关键标签)。
|
||||
|
||||
**四、关键发现③:`D2.2` §1.7 第 12 项的关闭理由**有一条已过期**
|
||||
|
||||
| 原文理由 | 现状 |
|
||||
|---|---|
|
||||
| ① 「收益方(**投顾**)已整体清除」 | 🔴 **已失效** —— 投顾模块 2026-09-20 已随合并**恢复**(见 `D4.7`) |
|
||||
| ② 「注入生成上下文与证据约束生成直接冲突」 | ✅ **仍然成立**,且是**结构性**冲突(`FR-CS-009` 仅基于检索内容回答 + `FR-CS-049` 证据约束生成 + 输出数字一致性校验) |
|
||||
|
||||
**五、我的建议(本轮提交用户裁定,未执行)**
|
||||
|
||||
核心主张:**让记忆改变「系统行为」,而不是改变「模型输入」**。
|
||||
|
||||
| 记忆键 | 消费点 | 效果 | 碰生成上下文 |
|
||||
|---|---|---|---|
|
||||
| `preference:asset_class` | 检索层分区加权 | 问「有什么产品」时优先生命中族 | ❌ |
|
||||
| `preference:horizon` | `E1` 澄清候选排序 | 少问一轮 | ❌ |
|
||||
| `constraint:*` / `goal:*` | `E2` 计算型入参 | 试算带上已知约束 | ❌ |
|
||||
| `preference:risk_level` | 适当性过滤(**已实现**) | 无需改动 | ❌ |
|
||||
| 任意记忆 | 直接塞进 prompt | —— | ✅ **禁止** |
|
||||
|
||||
**六、待决 3 项**(详见下文给用户的回答)
|
||||
|
||||
1. 是否打开画像候选与中期记忆(建议:**演示后做**,且只开 `preference:*` / `constraint:*` / `goal:*`,**不开** `profile:occupation` / `family` / `income_stability` 三个 PII 键);
|
||||
2. 记忆消费方式是否**限定为确定性信号**(建议:**是**,并写进 `D2.2` §1.7 第 12 项);
|
||||
3. 是否更正 `D2.2` §1.7 第 12 项**已过期的理由①**(建议:**更正** —— 否则答辩被追问「为什么关长期记忆」时引的是失效依据)。
|
||||
|
||||
---
|
||||
|
||||
## 5. 建议的开工顺序(在 `DEC-11` 拍板后)
|
||||
|
||||
Reference in New Issue
Block a user