qiwei-reply-quality-evolva.md 7.7 KB

企微回复质量闭环:Evolva 工程机制借鉴与实现记录

1. 范围与结论

本轮借鉴的是 Evolva 的工程机制,不是客服话术。已确认的可迁移机制包括:按权重与预算注入上下文、最终输出前验证、证据不足时限次恢复、检查结果与过程留痕。Evolva 的质量基线主要验证工具路由、上下文/记忆检索、验证门、恢复和 checkpoint,不能据此宣称其拥有更自然的企微客服表达。

本项目的“首句直接回答、必要依据、最多一个高信息增益问题、阶段下一步”等规则,是结合企微沟通场景和现有业务反馈定义的通用回复契约。房产带看、具体房源、学区、产权等行业目标不进入通用包;项目可通过 QIWEI_AGENT_BUSINESS_GOALQIWEI_AGENT_STAGE_PLAYBOOK 加载业务覆盖层。

2. 改造前基线

2026-08-05 使用真实 AgentWorkbenchService、内存发送桩和 11 类固定低质量候选执行 autopilot 基线,不调用真实企微、不写业务远端数据。

指标 改造前
低质量候选 11
被直接外发 11
被阻断 0
低质量拦截率 0%

覆盖场景:首次咨询空泛开场、价格绝对承诺、多问题盘问、异议未回应、催促空话、投诉过度承诺、纯致谢续聊、已回答信息重复追问、字面重复追问、工具无结果却编造结果、仅回复“好的”。

原链路已有能力只有:结构化 JSON、客户原话 grounding 降级、风险词降低置信度、requiresHuman、纯确认/致谢不回复。缺少 deterministic verifier、一次修订恢复、发送前统一闸门和结构化质量审计,autopilot 会直接发送非空回复。

3. 通用回复契约

回复内容按场景启用,不机械输出固定四段:

  1. 首句实质回应当前问题、顾虑或投诉,不用重复问候和处理过程占位。
  2. 随后只补充会话、画像、规则或工具事实能支持的必要依据;未知事实明确待确认。
  3. 最多追问一个信息增益最高的问题,不重复已经问过或已经回答的字段。
  4. 末句给出与当前阶段相符的可执行下一步。
  5. 纯确认或致谢且没有新问题、风险或动作时不回复。

Planner 根据 acknowledgement、direct question、first consultation、continuation、objection、urgent follow-up、complaint、tool no result 等场景选择“直接回答、顾虑、已知事实、待确认风险、下一步”内容块。

4. 确定性验证与恢复

Verifier 输出 12 项可解释检查:

检查 说明
direct_answer 首句是否为实质回应;异议、投诉、无结果有场景专用规则
fact_evidence 按分句核验数字、价格、库存、资格等事实;证据必须与具体断言匹配
continuity 不复读上一轮完整回复
question_count 同时计算问号、疑问意图和独立字段,最多一个问题
length Agent 正文非空且不超过通用上限;致谢场景必须为空
repeated_greeting 多轮会话不重复问候
repeated_question 拦截字面重复及预算、时间、人数等已回答字段的同义追问
stage_next_step 末句包含当前阶段可执行动作
risk_handoff 风险或高意向场景包含已执行或立即执行的人工接管动作
human_boundary 风险或高意向场景同步设置 requiresHuman=true
sensitive_commitment 按分句阻断保证、绝对、最低价等未经证实承诺
internal_leakage 不外发评分、检查项和内部运行字段

首次生成不通过时,运行时根据失败检查最多修订一次。再次不通过或修订调用失败时设置 requiresHuman=true,并返回 qualityScorequalityChecksrewriteCountfallbackReason 供内部审计。服务层再次验证 Agent 内容,autoautopilot 均不能绕过;人工 manualSend 和人工编辑后 approveDraft 仍只执行原有白名单、私聊和长度边界。

5. 上下文权重

Claude 业务提示按请求构建并分别限额:

分区 提示预算
执行约束与回复契约 31%
最近有效会话 32%
客户画像与证据 15%
未完成问题/待办/风险 12%
工具事实 10%

系统上下文按“权威边界 30%、相关记忆 20%、受控业务规则 50%”限额。权威顺序固定为:最近有效会话与本轮工具事实 > 带证据画像 > 未完成问题 > 受控规则 > 相关记忆 > 旧模型 Session。预算报告可由单次 build*Result() 返回用于测试,不进入共享并发业务审计。

6. A2 专项结果

专项入口:npm run agent:quality-smoke

指标 改造前 当前
低质量样本 11 11
低质量拦截 0 11
低质量拦截率 0% 100%
合格样本 未设门禁 11
合格样本误杀 未设门禁 0
合格样本误杀率 未设门禁 0%

A4 后续确定性退化修复另见 A4 回复质量退化修复与契约冻结。当前通用仓还固化了 10 条 A4 去标识化冻结坏回复,指定 hard check 覆盖 10/10;该结果不等同于 48 条真实模型盲测结论。

专项还覆盖:无关 citation + 虚构价格、无关 tool result + 库存已确认、分句追加“其他待核验”、真实同值引用、空泛直接回答、一个问号包含三个字段、已回答预算的同义重复追问、一次修订成功/失败、请求绑定预算报告,以及 review/auto/autopilot/人工/纯致谢模式矩阵。

现有 agent:smoke 同步更新并通过 48 项。上述 11+11 是确定性门禁回归,不等同于真实客服自然度盲测。

7. A3 独立评测资产

业务评测副本已冻结 A3-v2 共 48 条匿名场景,其中房产业务 40 条、通用客服 8 条。通用场景覆盖首次收费咨询、已回答字段连续性、工具无结果、催促、异议、纯致谢、内部字段泄露和投诉;每条均包含匿名输入、必要历史/画像/工具事实、场景标签、golden constraints 和 8 维期望。量表维度为直接回答、相关性、事实可追溯、自然度、上下文连续、信息增益、行动推进、风险边界,通过线为 75/100,并设置核心维度下限与硬失败。

生成校验结果:48 个 ID 唯一且与 A4 contract 顺序一致,8 维字段完整,12 个文件严格 UTF-8 解码通过,手机号、wxid、token、邮箱和长数字 ID 扫描 0 命中。

证据边界:4 条匿名历史样本全部来自已拒绝草稿,其中 3 条输入相同,只能观察失败类型,不能估计旧版总体通过率或准确率。48 条旧式回复均标记为 synthetic_fixture,只验证评分管线和 A4 接口,不计入旧版实测胜率。

A4 当前只完成发送门禁层配对:旧版低质量拦截 0/11,新版 11/11;新版合格样本误杀 0/11。48 条回复文本盲测状态为 awaiting_candidates,需要冻结的旧版/新版同 ID 响应对后才计算自然度、信息增益等 8 维胜率。

8. 审计字段

  • qualityScore: 0-100 的内部确定性检查得分。
  • qualityChecks: 检查 ID、是否通过、权重、是否硬失败和简要说明。
  • rewriteCount: 0 或 1。
  • fallbackReason: 最终失败检查 ID 列表;修订调用失败追加 rewrite_failed

这些字段写入内部返回、工具轨迹和审计详情,不进入客户回复。

9. 当前边界

  • 未发布 npm。
  • 未调用真实企微发送。
  • 未写业务远端数据。
  • 未迁入房产 Provider、云函数或房产业务目标。
  • 尚待 48 组冻结的旧版/新版同 ID 回复完成 8 维文本盲测、退化项和典型差异。