feat(agents): add 4-layer response quality control — structured outputs, LLM judge, smart truncation
AI回复质量硬约束系统,解决核心问题:AI无法用最少的语言精准回答用户问题。
## 四层防线架构
### Layer 1 — Prompt 优化 (软约束)
- coordinator-system-prompt.ts: 新增"最高优先级原则:精准回答"章节
- 意图分类表(7种)+ 每种对应长度和回答策略
- 错误示范 vs 正确示范对比
- "宁可太短,不可太长"原则
- 最终提醒三条:精准回答 > 准确性 > 简洁就是专业
- policy-expert-prompt.ts: 精简输出格式
- objection-handler-prompt.ts: 微调
### Layer 2 — Structured Outputs (格式约束)
- 新文件 coordinator-response.schema.ts: Zod schema 定义
- intent: 7种意图分类 (factual/yes_no/comparison/assessment/objection/detailed/casual)
- answer: 回复文本
- followUp: 可选跟进问题
- agent-loop.ts: 通过 output_config 传入 Claude API,强制 JSON 输出
- 流式模式下抑制 text delta(JSON 片段不展示给用户)
- 流结束后解析 JSON,提取 answer 字段 yield 给前端
- JSON 解析失败时回退到原始文本(安全降级)
- coordinator-agent.service.ts: 传入 zodOutputFormat(CoordinatorResponseSchema)
- agent.types.ts: AgentLoopParams 新增 outputConfig 字段
### Layer 3 — LLM-as-Judge (语义质检)
- evaluation-rule.entity.ts: 新增 LLM_JUDGE 规则类型(第9种)
- evaluation-gate.service.ts:
- 注入 ConfigService + 初始化 Anthropic client (Haiku 4.5)
- evaluateRule 改为 async(支持异步 LLM 调用)
- 新增 checkLlmJudge():评估 relevance/conciseness/noise 三维度
- 可配置阈值:minRelevance(7), minConciseness(6), maxNoise(3)
- 5s 超时 + 异常默认通过(非阻塞)
- EvaluationContext 新增 userMessage 字段
- coordinator-agent.service.ts: 传入 userMessage 到评估门控
### Layer 4 — 程序级硬截断 (物理约束)
- coordinator-response.schema.ts:
- INTENT_MAX_ANSWER_LENGTH: 按意图限制字符数
factual=200, yes_no=120, comparison=250, assessment=400,
objection=200, detailed=500, casual=80
- MAX_FOLLOWUP_LENGTH: 80 字符
- smartTruncate(): 在句子边界处智能截断(中英文标点)
- agent-loop.ts: JSON 解析后按 intent 强制截断 answer 和 followUp
- max_tokens 从 4096 降至 2048
## Bug 修复
- agent-loop.ts: currentTextContent 在 content_block_stop 时被重置为空字符串,
导致评估门控收到空文本。改为从 finalMessage.content 提取 responseText。
## 依赖升级
- @anthropic-ai/sdk: 0.52.0 → 0.73.0 (支持 output_config)
- 新增 zod@4.3.6 (Structured Output schema 定义)
## 文件清单 (1 new + 10 modified)
- NEW: agents/schemas/coordinator-response.schema.ts
- MOD: agents/coordinator/agent-loop.ts (核心改造)
- MOD: agents/coordinator/coordinator-agent.service.ts
- MOD: agents/coordinator/evaluation-gate.service.ts
- MOD: agents/types/agent.types.ts
- MOD: agents/prompts/coordinator-system-prompt.ts
- MOD: agents/prompts/policy-expert-prompt.ts
- MOD: agents/prompts/objection-handler-prompt.ts
- MOD: domain/entities/evaluation-rule.entity.ts
- MOD: package.json + pnpm-lock.yaml
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>