docs(W16): 中长期记忆与画像联动设计成文(D2.7)—— 三问直答 / 五道闸门取证 / INV-M1~M6 / 废弃理由更正
新增 客服agent\D2.7-客服Agent中长期记忆与画像联动设计-2026-09-20.md(域 2,D2.x 续号)。 - 主设计主张:让记忆改变「系统行为」而非「模型输入」——记忆只作确定性信号(检索分区加权 / 澄清候选排序 / E2 计算入参 / 适当性过滤),永不进生成上下文(FR-CS-009 + FR-CS-049)。 - 新增记忆子域不变量 INV-M1~INV-M6(INV-M6:记忆只能收窄、不能放宽)。 - 登记两处过期理由:D2.2 §1.7 第 12 项 + 第 998 行澄清框仍引「投顾已整体清除」,而投顾已于 2026-09-20 恢复(D4.7)。 - 计数同步:D1.1 v1.5→v1.6,58→59 份(57→58 份编号),客服agent\ 6→7 份;§4.0 总表与 §4.1 明细各新增 D2.7 行;注入校验 54→55 份;新增 §25 轮次段。 - D2.1 标题 v6.30→v6.31(新增 v6.31 段);D1.6 新增 §4.44。 - 本轮不改代码、不改行为;门禁:check_authoritative_docs.py 通过(54 份无编号冲突)+ _consistency.py GATE PASS。
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
# 客服 Agent 执行 Todolist(执行看板 · v6.30)
|
||||
# 客服 Agent 执行 Todolist(执行看板 · v6.31)
|
||||
|
||||
> **体系编号**:`D2.1` · 域:二、对外交付 · 编号体系见 `D1.1` §4.0
|
||||
|
||||
@@ -46,6 +46,20 @@
|
||||
|
||||
**看板状态更新**:`F-3` → **✅ 已落地**(新增 4 条单测)。批次 H 剩余:`H-05`。新增待办:**三项安全路由缺口收口**(`G-01` 优先,建议排在 `H-05` 前)。
|
||||
|
||||
## v6.31 本轮修订要点(2026-09-20 · `W16` 成文轮:中长期记忆与画像联动设计落档为 `D2.7`)
|
||||
|
||||
> **触发**:用户指令「把这个关于中长期记忆这部分的东西写一个文档放到我的 D:\桌面\金融\客服agent 这」。承接 `v6.30` 的咨询内容,**本轮不改代码**,把咨询结论落成一份可独立答辩的专项文档。
|
||||
|
||||
| # | 修订 | 依据 |
|
||||
|---|---|---|
|
||||
| 1 | ✅ **新增专项文档 `D2.7`**:`客服agent\D2.7-客服Agent中长期记忆与画像联动设计-2026-09-20.md`(域 2「对外交付」,`D2.x` 续号) | 本步 |
|
||||
| 2 | ✅ **主设计主张定稿**:「**让记忆改变系统行为,而不是改变模型输入**」—— 记忆只作**检索分区加权 / 澄清候选排序 / `E2` 计算入参 / 适当性过滤**四类确定性信号,**永不进生成上下文** | `FR-CS-009` + `FR-CS-049` |
|
||||
| 3 | ✅ **新增记忆子域不变量 `INV-M1`~`INV-M6`**(与 `D3.6` 的 `INV-1`~`INV-5` 并列):不进上下文 / `investor_type` 不可变 / 短期记忆恒开 / 写入门槛 / 13 键白名单 / **记忆只能收窄不能放宽** | `D2.7` §7 |
|
||||
| 4 | ✅ **登记两处过期理由**:`D2.2` §1.7 第 12 项与第 998 行澄清框均引「投顾已整体清除」,而投顾已于 2026-09-20 恢复 ⇒ 关闭长期记忆的**正确依据只剩「证据约束冲突」+ `DEC-19` 本身** | `D4.7`;`D2.7` §8 |
|
||||
| 5 | 🔴 **新增 3 条待补守卫**:`investor_type` 反向守卫(对话说「我是激进型」后画像必须不变)/ 生成上下文不含 `memory_unit` 片段 / 带记忆不得放宽档位 | `D2.7` §10 |
|
||||
| 6 | 📌 **计数同步**:`客服agent\` **6 → 7 份**(`D1.1` §0 / §3.1 / §3.2 / §4.0 / §4.1 五处)+ 本文件 §4.0 总表与 §4.1 明细各新增 `D2.7` 行 | `D1.1` §25 |
|
||||
|
||||
**看板状态更新**:批次 H 无新增任务(`D2.7` 属**文档交付**,非开发任务)。**待决 4 项**见 `D2.7` §12 —— 其中第 1 项(是否打开画像候选 + 中期记忆)建议**演示后**执行,且须**先改 `DEC-19` 口径、再动代码**。
|
||||
## v6.30 本轮修订要点(2026-09-20 · `W16` 咨询轮:Agent 与用户画像的关系 / 对话能否更新画像 / 要不要做中长期记忆)
|
||||
|
||||
> **触发**:用户提问「我们这个agent跟用户画像有什么关系 用户跟agent的对话能否作为更新用户画像的依据,如果可以做,是不是要做中长期记忆」。**本轮未改任何代码**,正本见 `开发文档\D1.6…md` §4.43。
|
||||
|
||||
@@ -0,0 +1,254 @@
|
||||
# 客服 Agent 中长期记忆与画像联动设计(2026-09-20)
|
||||
|
||||
> **体系编号**:`D2.7` · 域:二、对外交付 · 编号体系见 `D1.1` §4.0
|
||||
> **读者**:答辩评委 + 答辩当天答疑的人 + 接手记忆子系统的开发者。
|
||||
> **性质**:回答一个问题 —— 「这个 Agent 跟用户画像是什么关系?对话能不能更新画像?要不要做中长期记忆?」
|
||||
> **口径**:本文所有代码级结论均为**逐行读码取证**(2026-09-20,**本文件不改任何代码**)。
|
||||
> **配套**:`D2.2` §1.7 与 §1.8.3(记忆 / 画像口径,含第 12 / 18 / 21 项)、`D7.3` §1.3 与 §6.2(三层记忆模型上游依据)、`D4.7`(投顾恢复)、`D6.4.1`(研判规则与熔断)、`D2.4` 与 `D3.5`(知识库侧)、`D2.6`(答辩主文档)、`D1.6` §4.43(本轮咨询记录)。
|
||||
|
||||
---
|
||||
|
||||
## 0. 一句话结论
|
||||
|
||||
**Agent 与画像的关系是「读,不写」;「不写」不是技术限制,是 `DEC-19` 的合规裁定。**
|
||||
|
||||
「对话能不能更新画像」——**链路已经在仓库里**(`memory_unit` → `user_facts` → `fin_customer_profile` → 快照 + 投影),**技术上完全可行**。真正卡住它的是三件事:
|
||||
|
||||
| # | 卡点 | 性质 |
|
||||
|---|---|---|
|
||||
| 1 | 客服是重构前**唯一的画像候选来源**,而 `DEC-19` 裁定「客服不产生画像候选」 | 合规裁定 |
|
||||
| 2 | `FR-CS-009`(仅基于检索内容回答)+ `FR-CS-049`(证据约束生成)要求答案能追到 chunk id,**记忆注入生成上下文会直接破坏证据约束** | **结构性冲突** |
|
||||
| 3 | `investor_type`(风险等级)**只准来自问卷**,是代码级红线 | 合规底线 |
|
||||
|
||||
**因此本文的主设计主张是一句话:让记忆改变「系统行为」,而不是改变「模型输入」。**
|
||||
|
||||
---
|
||||
|
||||
## 1. 三问直答
|
||||
|
||||
| # | 用户的问题 | 直接回答 |
|
||||
|---|---|---|
|
||||
| 1 | 我们这个 Agent 跟用户画像**有什么关系**? | **单向只读**。Agent 可读本人画像的**白名单字段**(`risk_level` / `customer_level`),且**仅用于确定性规则**(适当性过滤 / 转人工优先级 / 画像问答字段直返)。不写、不回写、不把画像原文塞进生成上下文。 |
|
||||
| 2 | 用户跟 Agent 的对话**能否**作为更新画像的依据? | **能,且代码已在**(见 §4)。但必须遵守**字段分域**:3 个字段可由对话更新,1 个字段**绝对不可**(见 §5)。当前**整体关闭**,原因是 `DEC-19`,不是"做不到"。 |
|
||||
| 3 | 如果可以做,**是不是要做中长期记忆**? | **要做,但不做"把记忆塞进 prompt"那种**。要做的是「**面向行为的记忆**」:记忆只作为路由与排序的输入,不作为回答的素材。见 §6。 |
|
||||
|
||||
---
|
||||
|
||||
## 2. 现状取证:客服侧记忆相关的五道闸门
|
||||
|
||||
(逐行读码,2026-09-20;**均为显式不变量,不是"暂时没写"**)
|
||||
|
||||
| 层 | 载体 | 客服侧现状 | 证据(仓库相对路径:行号) |
|
||||
|---|---|---|---|
|
||||
| 短期会话记忆 | `conversation_message` + `conversation_session`(MySQL) | ✅ **开**(读 / 写) | `DEC-19` 裁定 (b);`D1.6` §4.40 |
|
||||
| 中期记忆 | `memory_unit`(+ `memory_evidence`) | ❌ **客服不写** | `app\worker\runtime.py:93` `NO_LONG_TERM_MEMORY_AGENT_TYPES = frozenset({"customer_service"})` |
|
||||
| 画像候选 | `memory_unit.status = 'candidate'` | ❌ **整体关闭** | `app\worker\runtime.py:84` `PROFILE_CANDIDATE_AGENT_TYPES: frozenset[str] = frozenset()` |
|
||||
| 长期记忆召回 | `memory_unit` / `user_facts` | ❌ **关** | `app\service\agent\implementations\customer_service.py:606` `recalls_customer_memory=False`;基类闸门 `app\service\agent\base.py:143` |
|
||||
| 画像读取 | `fin_customer_profile` → 快照 → 投影 | ⚠️ **字段级只读** | `query_customer_profile`(`self` 作用域)+ `app\core\profile_projection.py:36` `PROFILE_FIELD_POLICY` |
|
||||
|
||||
**`runtime.py:81-83` 的注释原文(关键)**:
|
||||
|
||||
> **当前为空集,且不是「重构期临时状态」**:`DEC-19` 裁定 (a) 明确「客服不产生画像候选」,而客服是重构前唯一的候选来源,故候选链路整体关闭。要重新打开必须先改 `DEC-19` 口径,**而不是往本集合里加 `agent_type`** —— 那样等于绕过合规裁定。
|
||||
|
||||
> 🔎 **这句话决定了本文的设计边界**:任何"打开记忆"的方案,**第一步都是改裁定,不是改代码**。
|
||||
|
||||
---
|
||||
|
||||
## 3. 上游模型:三层记忆(`D7.3` §1.3)
|
||||
|
||||
| 特性 | 人类记忆 | AI Agent 映射 | 技术实现 |
|
||||
|---|---|---|---|
|
||||
| 短期保持 | 工作记忆(几秒到几分钟) | 会话上下文 | Redis · 30 分钟 TTL |
|
||||
| 中期巩固 | 反复激活的记忆变牢固 | **用户画像 / 偏好标签** | **MySQL + Redis 缓存** |
|
||||
| 长期遗忘 | 不用的记忆逐渐模糊 | 知识库 / 历史经验向量 | Milvus + 时间衰减 |
|
||||
|
||||
`D7.3` 是通用技术教材体裁,但 **§6.2「记忆单元与身份标识」是被正式引用的上游依据**(`D2.2` §0.2、`D2.4` §0.2 / §1.8.3、`FR-CS-042` 裁决理由)。文档头部状态标注为 **保留,不归档**(2026-09-17 曾误归档,同日 16:40 撤销)。
|
||||
|
||||
> ⚠️ **读 `D7.3` 的正确姿势**:把它当**方法论来源**,不要当**本项目的实施方案** —— 它的三层划分是通用的,本项目对客服侧的裁剪(哪层开、哪层关)是 `DEC-19` 决定的。
|
||||
|
||||
---
|
||||
|
||||
## 4. 关键发现①:「对话 → 画像」链路已经在仓库里(不是待开发)
|
||||
|
||||
```
|
||||
对话 → memory_unit(中期) → user_facts(长期) → fin_customer_profile(画像)
|
||||
→ profile_snapshots(版本留痕) + Milvus / Neo4j 投影
|
||||
门槛:evidence_count ≥ 2 或 confidence ≥ 0.90
|
||||
```
|
||||
|
||||
**证据(三份服务,全部既有)**:
|
||||
|
||||
| 文件 | 职责 |
|
||||
|---|---|
|
||||
| `app\service\memory_taxonomy.py` | **受控记忆词表**:13 个记忆键 + 显式信号表述表;`MEMORY_TYPES = {preference, constraint, profile, goal, fact}` |
|
||||
| `app\service\profile_assembly_service.py` | 模块文档首句即写「这是**记忆系统为画像服务**的落地环节」;三段职责 = ① 事实提升(中期→长期)② 画像组装(长期→画像,按白名单)③ 版本留痕 |
|
||||
| `app\service\profile_generation_service.py` | 同事务写新版本 + 两条同步事件(`milvus` / `neo4j`);`is_current` 先清旧再插新;`snapshot_hash` 未变则不写行 |
|
||||
|
||||
**`profile_assembly_service.py` 关键常量**:`MIN_EVIDENCE = 2`(第 38 行)、`HIGH_CONFIDENCE = 0.90`(第 39 行)。
|
||||
|
||||
⇒ 「能不能做」在**技术上是既有能力**,卡点全在**合规裁定**。这也是本文档存在的意义:把"能不能"和"该不该"分开讲清楚。
|
||||
|
||||
---
|
||||
|
||||
## 5. 关键发现②:字段分域 —— 谁能被对话更新,谁绝对不能
|
||||
|
||||
| 画像字段 | 对话能否更新 | 机制 |
|
||||
|---|---|---|
|
||||
| `preferred_asset_class` | ✅ 能 | `FACT_TO_PROFILE_FIELD["preference:asset_class"]` |
|
||||
| `investment_horizon` | ✅ 能 | `FACT_TO_PROFILE_FIELD["preference:horizon"]` |
|
||||
| `risk_tags`(自述标签) | ✅ 能,**标注来源「自述」** | `SELF_REPORTED_PREFIXES = ("preference:risk_level", "preference:", "profile:")` |
|
||||
| **`investor_type`(风险等级)** | ❌ **绝对不可** | 只来自 `fin_risk_assessment` 最新一条 |
|
||||
| `total_asset` / `trading_frequency` / `behavior_score` | ❌ 不可 | 交易侧所有(字段所有权) |
|
||||
| `customer_tier` | ❌ 不参与 | 快照按设计排除该字段(`D-11`) |
|
||||
|
||||
**`profile_assembly_service.py` 第 15 行的红线原话**:
|
||||
|
||||
> **`investor_type` 只来自问卷测评**(`fin_risk_assessment` 最新一条)。……客户在对话里说"我是激进型"不会改变它 —— 这是合规底线,**不能只靠约定**。
|
||||
|
||||
**`PROFILE_OWNED_FIELDS = ("investor_type", "preferred_asset_class", "investment_horizon", "risk_tags")`**(第 59 行)—— 按**字段所有权**分域写入;`CRITICAL_FACTS = {preference:risk_level, preference:horizon, preference:asset_class}`(第 54 行)。
|
||||
|
||||
### 5.1 设计亮点(值得在答辩里主动讲)
|
||||
|
||||
**自述等级不丢** —— 客户说"我是激进型",这句话**不会被丢弃**:它进 `risk_tags` 并**标注来源「自述」**。
|
||||
|
||||
于是当出现「**问卷 C4 / 自述稳健 / 行为买 R4**」这种**三方不一致**时,这个**矛盾本身即风控信号**(`D3.1` `FR-CS-024` 的转人工摘要也含画像关键标签)。
|
||||
|
||||
> 一句话对外说法:**我们不是"不 update",而是"分层 update + 矛盾留痕"**。问卷管结论,对话管线索。
|
||||
|
||||
---
|
||||
|
||||
## 6. 关键设计主张:让记忆改变「系统行为」,而不是改变「模型输入」
|
||||
|
||||
### 6.1 五条允许的消费通道(记忆只到这里为止)
|
||||
|
||||
| 记忆键 | 消费点(代码位置) | 效果 | 碰生成上下文 |
|
||||
|---|---|---|---|
|
||||
| `preference:asset_class` | 检索层**分区 / 档位加权**(`_answer_from_knowledge` 的检索入参装配,`customer_service.py:784`) | 问「有什么产品」时优先生命中族 | ❌ 不碰 |
|
||||
| `preference:horizon` | `E1` 澄清候选排序(`_exit_clarify`,`customer_service.py:2071`) | **少问一轮** | ❌ 不碰 |
|
||||
| `constraint:*` / `goal:*` | `E2` 计算型入参装配(费率参数位 / 匹配矩阵,`customer_service.py:952` / `1341` / `_exit_calc_miss:1232`) | 试算带上已知约束,不必追问 | ❌ 不碰 |
|
||||
| `preference:risk_level` | **适当性过滤**(**已实现**) | 无需改动 | ❌ 不碰 |
|
||||
| 画像白名单字段 | 画像问答**字段直返**(`render_profile`,`customer_service.py:228`) | 已有能力 | ❌ 不碰 |
|
||||
|
||||
### 6.2 明确禁止
|
||||
|
||||
| 禁止项 | 理由 |
|
||||
|---|---|
|
||||
| ❌ 把任意记忆键**注入生成上下文 / prompt** | 违反 `FR-CS-009` + `FR-CS-049`:生成式回答必须能追到 chunk id |
|
||||
| ❌ 用记忆**提升知识档位** | 档位由鉴权结果推导(`knowledge_contracts.tiers_for_roles`),`customer_service.py` 内**零个档位字面量**,不得由记忆旁路 |
|
||||
| ❌ 用记忆**放宽适当性 / 降低转人工门槛** | 记忆只能"收窄"不能"放宽"(见 §7 `INV-M6`) |
|
||||
| ❌ 用记忆改动 `investor_type` | §5 红线 |
|
||||
|
||||
### 6.3 为什么「不进生成上下文」是**硬要求**,不是偏好
|
||||
|
||||
这条冲突是**结构性**的,不会因为换模型或调 prompt 而消失:
|
||||
|
||||
1. `FR-CS-009`:**仅基于检索内容回答**;
|
||||
2. `FR-CS-049`:**证据约束生成**;
|
||||
3. 输出**数字一致性校验**:答案里的数字要在已授权来源里找得到。
|
||||
|
||||
一旦把 `memory_unit` 的文本塞进 prompt,模型就会说出**"没有出处、但读起来像事实"**的句子 —— 这正是零容忍里的「**无出处数字**」与事实正确率的直接杀手。
|
||||
|
||||
> 🔑 **对外一句话**:**记忆是「路由与排序的输入」,不是「回答的素材」。**
|
||||
|
||||
---
|
||||
|
||||
## 7. 安全设计:记忆子系统不变量 `INV-M1` ~ `INV-M6`
|
||||
|
||||
(与 `D3.6` 的 `INV-1`~`INV-5` 并列,属记忆子域)
|
||||
|
||||
| 编号 | 不变量 | 违反后果 |
|
||||
|---|---|---|
|
||||
| `INV-M1` | **记忆永不进入生成上下文**;只作为确定性信号改变检索 / 排序 / 入参 | 无出处数字、事实正确率崩塌 |
|
||||
| `INV-M2` | **`investor_type` 永不因对话改变**;只来自 `fin_risk_assessment` 最新一条 | 合规事故 |
|
||||
| `INV-M3` | **短期会话记忆恒开**,与长期记忆开关**解耦** | 多轮指代消解失效(`H-01`/`H-02` 类问题暴增) |
|
||||
| `INV-M4` | 任何记忆写入须过 `evidence_count ≥ 2` **或** `confidence ≥ 0.90`,且**不得绕过** `FM-01`~`FM-05` | 画像被噪声 / 单次口误污染 |
|
||||
| `INV-M5` | 只允许写 **13 个受控记忆键**;客服侧**不写** `profile:occupation` / `profile:family` / `profile:income_stability` 三个 PII 键 | 个人信息越界采集 |
|
||||
| `INV-M6` | **记忆只能收窄、不能放宽**:不得提升知识档位、不得放宽适当性、不得降低转人工门槛 | 安全边界被记忆旁路 |
|
||||
|
||||
`FM-01`~`FM-05`(`D6.4.1` 第三章)速查:年龄限制 / 无收入且低资产 / 风险评估过期(>12 月冻结购买)/ 身份信息异常 / 异常交易熔断。
|
||||
|
||||
---
|
||||
|
||||
## 8. 已过期理由的更正登记(如实记录)
|
||||
|
||||
### 8.1 `D2.2` §1.7 第 12 项(`D2.2-客服Agent需求文档.html` 第 986 行)
|
||||
|
||||
| 原文理由 | 2026-09-20 现状 |
|
||||
|---|---|
|
||||
| ① 「收益方(**投顾**)已整体清除」 | 🔴 **已失效** —— 投顾模块 2026-09-20 已随合并**恢复**(见 `D4.7`) |
|
||||
| ② 「注入生成上下文与证据约束生成直接冲突」 | ✅ **仍然成立**,且是**结构性**的(见 §6.3) |
|
||||
|
||||
### 8.2 同文档第 998 行的澄清框(一并登记)
|
||||
|
||||
该框内同样写着「收益方投顾已清除」——**与 8.1 属同一处过期依据**,应与第 12 项**一并更正**。
|
||||
|
||||
> ⚠️ **为什么必须更正**:答辩追问「为什么关长期记忆」时,如果引的是**已失效的理由①**,等于把一个**已经被事实推翻的依据**当论据 —— 风险远大于收益。**关闭的正确依据只剩理由②(证据约束)+ `DEC-19` 裁定本身**。
|
||||
|
||||
---
|
||||
|
||||
## 9. 分期实施路径
|
||||
|
||||
| 期 | 时点 | 内容 | 前置 |
|
||||
|---|---|---|---|
|
||||
| **P0** | **演示前** | **什么都不开**。只做 §8 的**文档更正**与 §10 的**反向守卫单测**(加测试不改行为) | 无 |
|
||||
| **P1** | 演示后 | ① 先改 `DEC-19` 口径(书面);② 只开 `preference:*` / `constraint:*` / `goal:*`,**不开 3 个 PII 键**;③ 只接 §6.1 的五条**确定性消费通道** | P0 完成 + `DEC-19` 修订 |
|
||||
| **P2** | 可选 | 记忆→澄清排序的**效果量化**(用 `E1` 过度触发 14/46 这条基线做对照,目标:少问一轮) | P1 有数据 |
|
||||
|
||||
> 🔴 **P1 的硬前置是"先改裁定、再改代码"** —— 直接往 `PROFILE_CANDIDATE_AGENT_TYPES` 里加 `customer_service` 等于**绕过合规裁定**(`runtime.py:81-83` 注释已明确禁止)。
|
||||
|
||||
---
|
||||
|
||||
## 10. 验收与守卫清单
|
||||
|
||||
| # | 守卫 | 类型 | 现状 |
|
||||
|---|---|---|---|
|
||||
| 1 | 对话说「我是激进型」后,`fin_customer_profile.investor_type` **必须不变** | 单测(`INV-M2`) | 🔴 **缺失** —— 这条红线**目前只在服务文档里写着,没有测试固定** |
|
||||
| 2 | 生成上下文中**不含**任何 `memory_unit` 片段 | 单测(`INV-M1`) | 🔴 待补 |
|
||||
| 3 | 带记忆请求 `registered` 内容仍被拒(记忆不放宽档位) | 单测(`INV-M6`) | 🔴 待补 |
|
||||
| 4 | 46 条金标**不回归**(转人工率 10.9% / 出口准确率 100% / 事实正确率 100% / 四项零容忍全 0) | 回归 | ✅ 既有基线 |
|
||||
| 5 | `P0` / `P1` / `P2` / 明确要求 四类**仍确定性拦下** | 单测 + 回归 | ✅ 既有 |
|
||||
|
||||
> 📌 **第 1 条是本文档最推荐的立即动作**:成本为零、不影响演示行为、却把一条"只写在文档里的合规底线"变成"代码可验证的合规底线"。
|
||||
|
||||
---
|
||||
|
||||
## 11. 与知识库设计的关系(`D2.4` / `D3.5`)
|
||||
|
||||
记忆与知识库是**两层不同的东西**,答辩时最容易被混为一谈:
|
||||
|
||||
| 维度 | 知识库(`D2.4` / `D3.2`) | 记忆(本文 `D2.7`) |
|
||||
|---|---|---|
|
||||
| 内容 | **公开 / 通用**的产品、规则、FAQ | **个人**的偏好、约束、目标 |
|
||||
| 生命周期 | 版本化发布,**不被对话改变** | 随对话**累积**(若开启) |
|
||||
| 用途 | **回答的素材**(要能引用 chunk id) | **行为的路由输入**(不作出处) |
|
||||
| 当前状态 | ✅ 已建成(3 集合 / 3 档可见性 / 分区隔离) | ❌ 客服侧整体关闭(`DEC-19`) |
|
||||
|
||||
> 「知识库还有没有更优方案」属**另一个议题**,备选池与各方案否决理由见 `D3.5` 与 `D2.4`,本文不重复。
|
||||
|
||||
---
|
||||
|
||||
## 12. 待决项与我方最优建议
|
||||
|
||||
| # | 待决事项 | 我方最优建议 |
|
||||
|---|---|---|
|
||||
| 1 | 是否打开画像候选 + 中期记忆 | **演示后(P1)再做**;只开 `preference:*` / `constraint:*` / `goal:*`;**不开** `profile:occupation` / `profile:family` / `profile:income_stability` 三个 PII 键 |
|
||||
| 2 | 记忆消费方式 | **限定为确定性信号**,并把「记忆不进生成上下文」写进 `D2.2` §1.7 第 12 项,成为**可测试的不变量** |
|
||||
| 3 | 是否更正 `D2.2` §1.7 第 12 项**已过期的理由①**(含第 998 行澄清框) | **更正** —— 否则答辩被追问时引的是失效依据 |
|
||||
| 4 | `investor_type` 红线加回归 | **加一条单测**:对话说「我是激进型」后画像 `investor_type` 必须不变 |
|
||||
|
||||
---
|
||||
|
||||
## 13. 诚实声明
|
||||
|
||||
| 已做 | 未做(因此哪些结论仍是推断) |
|
||||
|---|---|
|
||||
| 逐行读码:`runtime.py` / `customer_service.py` / `base.py` / `profile_assembly_service.py` / `profile_generation_service.py` / `memory_taxonomy.py` / `profile_projection.py` | ❌ 本文件**未改任何代码**、**未跑任何测试** |
|
||||
| 本文件所有常量、行号、类名、注释原文均**已逐条核对** | ❌ 「记忆→检索加权的**效果增益**」**尚无实测数字**(P2 才有) |
|
||||
| 与 `D2.2` / `D7.3` / `D6.4.1` / `D4.7` 的口径对读 | ❌ `DEC-19` 的**书面修订文本**尚未起草(P1 前置) |
|
||||
|
||||
> **引用本文件时请注意**:§6.1 的五条消费通道是**设计主张**,除 `preference:risk_level`(适当性过滤)与画像字段直返**已实现**外,**其余三条尚未实现** —— 不要读成"已经能做"。
|
||||
|
||||
---
|
||||
|
||||
> **维护责任**:本文件为活文档。`DEC-19` 口径修订、或记忆消费通道落地后,须回填 §9 / §10 的状态列,并同步 `D2.1`(看板)与 `D1.6`(会话记录)。
|
||||
> **同步方向**:权威副本(`D:\桌面\金融\客服agent\`)→ 仓库(`group_fqcd_jr\客服agent\`)**单向覆盖**(`D1.6` §4.38 既定)。
|
||||
+29
-14
@@ -2,20 +2,20 @@
|
||||
|
||||
> **体系编号**:`D1.1` · 域:一、治理与索引 · 编号体系见 `D1.1` §4.0
|
||||
|
||||
> **编号**:CS-DOC-2026-017 | **版本**:v1.5 | **日期**:2026-09-17 | **状态**:**现行(活文档,随文档区变动同步更新)**
|
||||
> **编号**:CS-DOC-2026-017 | **版本**:v1.6 | **日期**:2026-09-17 | **状态**:**现行(活文档,随文档区变动同步更新)**
|
||||
> **性质**:本文件是 `开发文档\` 的**唯一入口**。任何人(含三个月后的自己)打开这一份,就应知道:先读什么、哪份为准、每份什么状态。
|
||||
> **盘点范围**:`开发文档\`(**52 个文件** = 51 份编号文档 + 1 份入口存根 `CLAUDE.md`,无归档子目录)+ `客服agent\`(**6 份**对外交付文档)。
|
||||
> **盘点范围**:`开发文档\`(**52 个文件** = 51 份编号文档 + 1 份入口存根 `CLAUDE.md`,无归档子目录)+ `客服agent\`(**7 份**对外交付文档)。
|
||||
|
||||
---
|
||||
|
||||
## 0. 一句话结论
|
||||
|
||||
**58 份文档(57 份编号 + 1 份不占编号的入口存根 `CLAUDE.md`)已按 8 个域统一编号为 `D<域>.<序>`(规则见 §4.0,层级见 §3)。开工只读 5 份 = `D2.1` / `D2.2` / `D2.3` / `D2.4` / `D3.3`(见 §2)。**
|
||||
**59 份文档(58 份编号 + 1 份不占编号的入口存根 `CLAUDE.md`)已按 8 个域统一编号为 `D<域>.<序>`(规则见 §4.0,层级见 §3)。开工只读 5 份 = `D2.1` / `D2.2` / `D2.3` / `D2.4` / `D3.3`(见 §2)。**
|
||||
|
||||
| 域 | 名称 | 份数 | 定位 |
|
||||
|---|---|---|---|
|
||||
| **D1** | 一、治理与索引 | 6 | 先读 `D1.1`(本文件)——编号体系、权威链、开工只读集 |
|
||||
| **D2** | 二、对外交付 | 6 | 🔴 **开工必读**(A1—A4;另含 `D2.5` 演示脚本、`D2.6` 答辩报告) |
|
||||
| **D2** | 二、对外交付 | 7 | 🔴 **开工必读**(A1—A4;另含 `D2.5` 演示脚本、`D2.6` 答辩报告、`D2.7` 记忆与画像联动) |
|
||||
| **D3** | 三、现行权威·完整版与专项 | 8 | 查证据、查 FR 推导过程(含 A5 鉴权专项 `D3.3`;检索升级 `D3.5`;架构 `D3.6`;**评测金标 `D3.7`**;**密钥轮换 `D3.8`**) |
|
||||
| **D4** | 四、清除与重建留痕 | 7 | 追溯「删了什么、怎么恢复」;`D4.1` 即**重建指南**,`D4.6` 为验收基线留痕,`D4.7` 为**投顾恢复现状** |
|
||||
| **D5** | 五、业务流程基线 | 1 | 两条业务线 / 三条红线 / 演示跑通验收 |
|
||||
@@ -26,7 +26,7 @@
|
||||
> 🔑 **编号三处必须一致**:① 索引 §4.0 总表;② 文档标题正下方(体系编号行);③ 文件名前缀(`<编号>-<描述名>`)。**唯一例外 `CLAUDE.md`**(规则见 §5 R7;迁移记录见 §11)。🔁 **2026-09-19 起**:语言规范正文已独立成文 `D8.1-项目语言规范.md`,`CLAUDE.md` 收缩为**三行入口存根**(见 §4.7 与 §20)。
|
||||
|
||||
> 🔑 **`客服agent\` 与 `开发文档\` 是「收敛版 vs 完整版」关系,不是分叉。**
|
||||
> `客服agent\` 的 6 份是**对外交付 + 唯一开工入口**;`开发文档\` 内的同名旧版是**取证底稿**(含被收敛掉的备选方案与逐条证据)。
|
||||
> `客服agent\` 的 7 份是**对外交付 + 唯一开工入口**;`开发文档\` 内的同名旧版是**取证底稿**(含被收敛掉的备选方案与逐条证据)。
|
||||
> 两者若冲突,**一律以 `客服agent\` 为准**。
|
||||
|
||||
---
|
||||
@@ -75,7 +75,7 @@ A5 [D3.3] 访客与角色分离的鉴权方案建议(仅此一份,无新旧
|
||||
第 0 层 唯一入口 D1.1 D1.1-文档索引与权威声明.md
|
||||
第 1 层 域(8 个) D1 ─ D8
|
||||
第 2 层 子域(仅域 6 有) D6.1 ─ D6.5
|
||||
第 3 层 文档(58 份) D<域>.<序> / D<域>.<子域>.<序>
|
||||
第 3 层 文档(59 份) D<域>.<序> / D<域>.<子域>.<序>
|
||||
```
|
||||
|
||||
### 3.2 八个域(=逻辑顺序=阅读优先级)
|
||||
@@ -83,7 +83,7 @@ A5 [D3.3] 访客与角色分离的鉴权方案建议(仅此一份,无新旧
|
||||
| 域 | 域名称 | 份数 | 状态 | 什么时候读 |
|
||||
|---|---|---|---|---|
|
||||
| **D1** | 一、治理与索引 | 6 | 现行 | **先读 D1.1**(唯一入口,本文件) |
|
||||
| **D2** | 二、对外交付 | 6 | 现行 | 🔴 **开工必读**(含「开工只读 5 份」的 4 份) |
|
||||
| **D2** | 二、对外交付 | 7 | 现行 | 🔴 **开工必读**(含「开工只读 5 份」的 4 份) |
|
||||
| **D3** | 三、现行权威·完整版与专项 | 8 | 现行 | 查证据、查 FR 推导过程时读 |
|
||||
| **D4** | 四、清除与重建留痕 | 7 | 已完成 | 追溯「删了什么、怎么恢复」时读(D4.1 是重建指南;D4.7 是投顾恢复现状) |
|
||||
| **D5** | 五、业务流程基线 | 1 | 现行 | 核对业务范围与三条红线时读(**冲突时以它为准**) |
|
||||
@@ -91,15 +91,15 @@ A5 [D3.3] 访客与角色分离的鉴权方案建议(仅此一份,无新旧
|
||||
| **D7** | 七、早期系统文档 | 5 | **待确认** | 只在追查历史口径时读;已被上游依据表引用,**不可删**(见 §10) |
|
||||
| **D8** | 八、AI 协作规则 | 8 | 现行 | 让 AI 接手时的规则文件(`D8.1`=语言规范正文;`CLAUDE.md`=入口存根,不占编号) |
|
||||
|
||||
> 合计:6 + 6 + 8 + 7 + 1 + 17 + 5 + **8** = **58 份**(其中 `客服agent\` 的 6 份不计入 `开发文档\` 的 52 个文件;域 D8 的 8 份含 1 份**不占编号**的入口存根 `CLAUDE.md`)。
|
||||
> 合计:7 + 6 + 8 + 7 + 1 + 17 + 5 + **8** = **59 份**(其中 `客服agent\` 的 7 份不计入 `开发文档\` 的 52 个文件;域 D8 的 8 份含 1 份**不占编号**的入口存根 `CLAUDE.md`)。
|
||||
|
||||
---
|
||||
|
||||
## 4. 全量文档清单
|
||||
|
||||
> **本节结构**:**§4.0 = 编号规则 + 全量编号总表(58 份,按编号顺序)——查找入口**;§4.1—§4.8 = 按类别展开的明细表(编号见 §4.0 总表,同一逻辑顺序)。
|
||||
> **本节结构**:**§4.0 = 编号规则 + 全量编号总表(59 份,按编号顺序)——查找入口**;§4.1—§4.8 = 按类别展开的明细表(编号见 §4.0 总表,同一逻辑顺序)。
|
||||
|
||||
### 4.0 编号规则与全量编号总表(58 份)
|
||||
### 4.0 编号规则与全量编号总表(59 份)
|
||||
|
||||
**编号规则**
|
||||
|
||||
@@ -123,12 +123,13 @@ 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.30** | 现行 | 🔴 **唯一开工入口**:**57 项 / 8 批次** / 12 步关键路径 / **批次 H 智能增强** |
|
||||
| **D2.1** | `客服agent\D2.1-客服Agent执行Todolist.md` | **v6.31** | 现行 | 🔴 **唯一开工入口**:**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** |
|
||||
| **D2.5** | `客服agent\D2.5-客服Agent演示脚本与账号速查-2026-09-19.md` | `F-03`+`F-04`+`A-05` | 现行 | 🔴 **演示当天照着念**:五项自检 / 账号速查(实测可登录)/ 游客线 5 条 + 客服线 6 组台词(带**实测答复**)/ 排障表 / 对「不智能」的正面回答 |
|
||||
| **D2.6** | `客服agent\D2.6-客服Agent答辩报告-2026-09-19.md` | 2026-09-19 | 现行 | 🔴 **答辩主文档**:批评 → 根因(2 个出口 / 10 处失败方向全指向转人工)→ 五出口 `E1`—`E5` → `INV-1`~`INV-5` → 金标 11 项**修复前 → 修复后**对比 → 零容忍词挂载点口径 → 坑与教训 → 诚实未做项 → 现场速答 |
|
||||
| **D2.7** | `客服agent\D2.7-客服Agent中长期记忆与画像联动设计-2026-09-20.md` | 2026-09-20 | 现行 | 🔴 **记忆与画像专项**:三问直答 / 客服侧五道闸门取证 / 字段分域(`investor_type` 红线)/ **主设计主张:记忆改「行为」不改「输入」** / `INV-M1`~`INV-M6` / 两处过期理由更正 / 分期 P0—P2 / 待决 4 项 |
|
||||
| **D3.1** | `开发文档\D3.1-客服Agent需求开发文档与设计方案.html` | **v2.5** | 现行 | D2.2 的**完整版**:逐条需求带证据引用与推导过程 |
|
||||
| **D3.2** | `开发文档\D3.2-知识库设计方案.html` | **v1.2** | 现行 | D2.4 的**完整版**:含被收敛掉的备选方案与否决理由 |
|
||||
| **D3.3** | `开发文档\D3.3-访客与角色分离的鉴权方案建议-2026-09-16.md` | CS-AUTH-2026-011 | 现行 | 🔴 鉴权专项(=开工只读 5 份之 A5):四方案 / 三不变量 / 甲乙时序 |
|
||||
@@ -176,18 +177,19 @@ A5 [D3.3] 访客与角色分离的鉴权方案建议(仅此一份,无新旧
|
||||
| **D8.6** | `开发文档\ai\D8.6-04_OUTPUT_RULES.md` | — | 现行 | 产出规则(§5 高风险变更须先确认) |
|
||||
| **D8.7** | `开发文档\ai\D8.7-05_PROJECT_CONTEXT.md` | — | 现行 | 项目背景速览 |
|
||||
|
||||
> **注入校验**:**54 份**可注入文档(**44** `开发文档\*.md` + 5 `开发文档\*.html` + 3 `客服agent\*.html` + `客服agent\D2.5-…md` + `客服agent\D2.6-…md`)**已全部带「体系编号」行**;3 份 `.txt` 按上表例外处理。(原表述的 49 份**未计入** `客服agent\D2.1` 的 `.md` —— 该漏计是历史口径,本轮**只补新增件、不追改历史**。)「开工只读 5 份」对应 **D2.1 / D2.2 / D2.3 / D2.4 / D3.3**。
|
||||
> **注入校验**:**55 份**可注入文档(**44** `开发文档\*.md` + 5 `开发文档\*.html` + 3 `客服agent\*.html` + `客服agent\D2.5-…md` + `客服agent\D2.6-…md` + `客服agent\D2.7-…md`)**已全部带「体系编号」行**;3 份 `.txt` 按上表例外处理。(原表述的 49 份**未计入** `客服agent\D2.1` 的 `.md` —— 该漏计是历史口径,本轮**只补新增件、不追改历史**。)「开工只读 5 份」对应 **D2.1 / D2.2 / D2.3 / D2.4 / D3.3**。
|
||||
|
||||
### 4.1 Ⅰ 对外交付 / 现行权威(`客服agent\`,6 份)
|
||||
### 4.1 Ⅰ 对外交付 / 现行权威(`客服agent\`,7 份)
|
||||
|
||||
| 文件名 | 版本 | 日期 | 定位 | 关联 |
|
||||
|---|---|---|---|---|
|
||||
| `D2.1-客服Agent执行Todolist.md` | **v6.30** | 2026-09-17 | 唯一开工入口 | 收敛自 `开发文档\D3.4-客服Agent重构Todolist.md` v5.1 |
|
||||
| `D2.1-客服Agent执行Todolist.md` | **v6.31** | 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 |
|
||||
| `D2.5-客服Agent演示脚本与账号速查-2026-09-19.md` | — | 2026-09-19 | 演示脚本(`F-03`/`F-04`/`A-05` 三合一) | 台词证据:`group_fqcd_jr\docs\evidence\20260919-t8-demo-lines*.json` |
|
||||
| `D2.6-客服Agent答辩报告-2026-09-19.md` | — | 2026-09-19 | 答辩报告(问题定义 / 根因 / 五出口 / 安全不变量 / 前后对比 / 现场速答) | 数字来源:46 条金标 `score_before` vs `score_w11b` + `e2e_smoke_test` + `http_probe` + 12 条真机边界 |
|
||||
| `D2.7-客服Agent中长期记忆与画像联动设计-2026-09-20.md` | — | 2026-09-20 | 中长期记忆与画像联动(读码取证 / `INV-M1`~`INV-M6` / 分期 P0—P2) | 上游依据:`开发文档\D7.3` §1.3 与 §6.2;口径:`D2.2` §1.7 第 12 / 18 / 21 项 |
|
||||
|
||||
### 4.2 Ⅱ 开发文档区内的现行权威(8 份)
|
||||
|
||||
@@ -760,6 +762,19 @@ A5 [D3.3] 访客与角色分离的鉴权方案建议(仅此一份,无新旧
|
||||
| **交叉引用** | `D1.6` 新增 §4.42(承接 §4.41);`D2.1` 标题 **v6.28 → v6.29** |
|
||||
| ⚠️ **判断更正(如实登记)** | ① `D1.6` §4.41 曾把画像出口误标为 `FR-CS-003` —— 实际 `FR-CS-003` 是**澄清(出口 `E1`)**,已更正两处;② 原建议「金标集加一条」,本轮**未采纳**:46 条是已发布指标的**冻结基线**,中途加第 47 条会让 `D2.6` / `D3.7` 的转人工率 / 出口准确率 / 事实正确率全部失效;改落在单元/集成守卫(覆盖等价、成本为零),**演示后可扩到 47 条再重算** |
|
||||
|
||||
## 25. 第二十一轮:`W16` 中长期记忆与画像联动设计成文(`D2.7`)+ 计数同步(2026-09-20)
|
||||
|
||||
> **本轮做什么**:把「Agent 与用户画像是什么关系 / 对话能否更新画像 / 要不要做中长期记忆」这个咨询问题,落成一份**可独立答辩的专项文档** `D2.7`,并同步本文件计数(**58 → 59 份**;`客服agent\` **6 → 7 份**)。**本轮不改代码**(咨询与成文两轮,代码口径见 `D1.6` §4.43)。
|
||||
|
||||
| 项 | 内容 |
|
||||
|---|---|
|
||||
| **新增文档** | `客服agent\D2.7-客服Agent中长期记忆与画像联动设计-2026-09-20.md`(域 2「对外交付」,`D2.x` 续号) |
|
||||
| **文档内容** | 三问直答 / 客服侧五道闸门逐行取证 / `D7.3` 三层记忆上游依据 / 「对话 → 画像」既有链路 / 字段分域(`investor_type` 代码级红线)/ **主设计主张:记忆改「行为」不改「输入」** / `INV-M1`~`INV-M6` / 两处过期理由更正 / 分期 P0—P2 / 验收守卫 / 待决 4 项 |
|
||||
| **计数同步** | §0 结论 58 → **59**(57 → **58 份编号**);§0 盘点范围 `客服agent\` 6 → **7 份**;§0 域表与 §3.2 表 D2 6 → **7**;§3.1 第 3 层 58 → **59**;「合计」行改 `7 + 6 + 8 + 7 + 1 + 17 + 5 + 8 = **59 份**`;§4.0 标题 / 说明 58 → **59**;§4.0 总表新增 `D2.7` 行;§4.1 标题(6 → **7 份**)与明细新增行;§4.0 尾「注入校验」**54 → 55 份**(+1 `客服agent\D2.7-…md`) |
|
||||
| **版本位同步** | 本文件头部 **v1.5 → v1.6**;`客服agent\D2.1` 标题 **v6.30 → v6.31**(新增 v6.31 段) |
|
||||
| **交叉引用** | `D1.6` 新增 §4.44;`D2.7` §8 登记 `D2.2` §1.7 第 12 项与第 998 行澄清框的**过期理由①**(投顾已于 2026-09-20 恢复) |
|
||||
| ⚠️ **未做(诚实声明)** | ① `D2.2` §1.7 第 12 项与第 998 行澄清框的**文本更正尚未执行** —— 属 `D2.7` §12 待决第 3 项,等用户裁定;② `INV-M1` / `INV-M2` / `INV-M6` 三条守卫单测**尚未补** —— 属 `D2.7` §10;③ **`§4.2` / `§4.4` 两类明细无需新增行**:`D2.7` 属 `客服agent\`(§4.1 一类),不在 `开发文档\` 的两类明细范围内 |
|
||||
|
||||
---
|
||||
|
||||
> **维护责任**:本文件为活文档。**新增 / 改名 / 归档 / 改版本号后,须同步更新本文件 §3 与 §4.0 总表对应行**。
|
||||
|
||||
@@ -2945,6 +2945,25 @@ pytest **2 failed / 1577 passed / 2 skipped**(= `T0` 基线同两项)、ruff
|
||||
|
||||
---
|
||||
|
||||
### 4.44 2026-09-20 第四十轮会话记录(`W16` 成文轮:把中长期记忆与画像联动落档为 `D2.7`)
|
||||
|
||||
> **本轮指令(原文)**:「把这个关于中长期记忆这部分的东西写一个文档放到我的 D:\桌面\金融\客服agent 这」
|
||||
|
||||
承接 §4.43 的咨询结论(Agent 对画像「读,不写」/「对话 → 画像」链路已在仓库 / `investor_type` 红线 / 一处过期理由),本轮**只落文档、不改代码**,把结论固化成 `客服agent\D2.7-客服Agent中长期记忆与画像联动设计-2026-09-20.md`。
|
||||
|
||||
| # | 落档内容 | 位置 |
|
||||
|---|---|---|
|
||||
| 1 | **三问直答**(什么关系 / 能否更新 / 要不要做) | `D2.7` §1 |
|
||||
| 2 | **客服侧记忆五道闸门**逐行取证(含 `runtime.py:81-83` 注释原文:要开候选**必须先改 `DEC-19` 口径**,不得直接往集合里加 `agent_type`) | `D2.7` §2 |
|
||||
| 3 | **主设计主张**:记忆改「行为」不改「输入」 —— 5 条允许消费通道 + 4 条明令禁止 + 「为什么是结构性冲突」 | `D2.7` §6 |
|
||||
| 4 | **新增 `INV-M1`~`INV-M6`** 记忆子域不变量(`INV-M6`:**记忆只能收窄、不能放宽**) | `D2.7` §7 |
|
||||
| 5 | **登记两处过期理由**(`D2.2` §1.7 第 12 项 + 第 998 行澄清框),并明确**关闭的正确依据只剩理由②(证据约束)** | `D2.7` §8 |
|
||||
| 6 | **分期 P0 / P1 / P2** + 硬前置「先改裁定、再改代码」 | `D2.7` §9 |
|
||||
| 7 | **验收守卫 5 条**(其中 3 条待补;第 1 条 `investor_type` 反向守卫为最推荐的立即动作:成本为零、不改行为) | `D2.7` §10 |
|
||||
| 8 | **待决 4 项** + 我方最优建议 | `D2.7` §12 |
|
||||
| 9 | 计数同步:`客服agent\` **6 → 7 份**;`D1.1` 新增 **§25** 轮次段;`D2.1` **v6.30 → v6.31** | `D1.1` §25;`D2.1` v6.31 |
|
||||
|
||||
⚠️ **诚实声明**:本轮**未改任何代码**、**未跑任何测试**。因此 `D2.7` §6.1 的五条消费通道中,除「适当性过滤」与「画像字段直返」**已实现**外,其余**均未实现** —— 文中已逐条标注为设计主张,请勿读成「已经能做」。`D2.2` 的文本更正(`D2.7` §12 待决第 3 项)**尚未执行**,等用户裁定。
|
||||
## 5. 建议的开工顺序(在 `DEC-11` 拍板后)
|
||||
|
||||
```
|
||||
|
||||
Reference in New Issue
Block a user