[M-AI-04-03] 实现 Active Recall Executor 与输出验证 #298
Closed
opened 2026-06-21 12:48:13 +08:00 by wangdl
·
2 comments
Labels
Clear labels
adr
Area: adr
architecture
Area: architecture
area:activity
活动/统计
area:admin
管理后台
area:admin-api
area:ai
AI/RAG
area:ai-runtime
AI Runtime / AI 分析体系相关
area:analytics
area:api
API 接口
area:auth
认证与授权
area:cos
对象存储
area:database
数据库/Migration
area:import
文件导入/解析
area:knowledge
知识库/知识点
area:learning-info
area:learning-session
area:quiz
测验/自测
area:reading-event
area:reading-progress
area:review
复习系统
area:security
安全相关
audit
Area: audit
audit:api-admin-info
audit:api-info
audit:planned
已完成宏观规划,尚未代码审查
audit:reviewed
backend
Area: backend
billing
Area: billing
blocked-by:api-info-aggregation
blocked-by:api-info-core
blocked-by:api-info-ops
blocked-by:api-info-schema
blocked-by:processor
blocked-by:schema
compatibility
Area: compatibility
gate
Area: gate
infrastructure
Area: infrastructure
priority:p0
最高优先级,阻塞发布
priority:p1
高优先级,里程碑必需
priority:p2
中优先级,后续版本
prisma
Area: prisma
release
Area: release
repo:api
API 仓库 Issue
status:blocked
被阻塞
status:done
已完成
status:partial
status:todo
type:aggregation
type:bug
缺陷修复
type:design
设计
type:docs
文档
type:feature
新功能
type:migration
type:refactor
重构
type:test
work:admin-api
work:aggregation
work:api
work:artifact
题目/卡片产物
work:audit
work:circuit-breaker
熔断
work:contract
work:design
架构/协议设计工作
work:docs
work:export
work:extend-existing
work:internal-api
Runtime 内部接口
work:job
Job 调度相关
work:new-module
work:new-table
work:ops
work:query
work:quota
额度/限流
work:schema
Prisma Schema 设计
work:security
work:service
Service 层实现
work:snapshot
Snapshot 构建
work:test
No Label
Milestone
No items
No Milestone
M-AI-04 Active Recall 端到端迁移
Projects
Clear projects
No project
No Assignees
Notifications
Due Date
No due date set.
Dependencies
No dependencies set.
Reference: wangdl/api-server#298
Reference in New Issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
No description provided.
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
类型 / 标签
风险等级
P0
依赖
背景
将现有 Active Recall AI 分析逻辑适配到统一 Execution Engine。Executor 负责从 Snapshot 构造模型请求并通过 AiGateway 调用模型,验证层确保输出符合业务约束和安全要求。
目标
非目标
影响范围
ActiveRecallExecutor(新增)ActiveRecallBusinessValidator(新增)ActiveRecallReferenceValidator(新增)AiGatewayService(复用)Executor 职责
输出 Schema
根据 01 审计冻结真实 Schema。至少评估:correctness, score, feedback, missingPoints, misconceptions, recommendedActions, sourceReferences
只保留当前真实业务需要的字段(不得为了迁移擅自改变 AI 反馈内容)。
验证层
BusinessValidator
ReferenceValidator
兼容性
使用固定 Fixture 对比旧链路和新 Executor:输入字段、Prompt Key、模型参数、输出语义、错误分类
不要求模型自然语言完全逐字一致,但业务字段和判定含义必须兼容。
验收标准
建议执行顺序
第 3 个执行(依赖 M-AI-04-02)
开发完成评论
完成内容
ActiveRecallExecutor— 从 Snapshot 构造消息、通过 AiGatewayService 调用模型、返回原始输出ActiveRecallBusinessValidator— 18 项业务规则验证(score 范围、枚举、长度、数组限制、必填字段等)ActiveRecallReferenceValidator— URL/email 泄露检测、跨用户数据引用检查AiJobModule注册 3 个新 Provider修改/新增文件
src/modules/ai-job/active-recall-executor.ts— 新增, Executorsrc/modules/ai-job/active-recall-validator.ts— 新增, BusinessValidator + ReferenceValidatorsrc/modules/ai-job/active-recall-executor.spec.ts— 新增, 31 testssrc/modules/ai-job/ai-job.module.ts— 修改, +3 providers代码证据
active-recall-executor.ts:60-79:构造用户消息(与旧链路 ActiveRecallAnalysisWorkflow 一致),调用 AiGatewayService.generate()active-recall-executor.ts:67:knowledgeItemContent 传空字符串(匹配 legacy 行为,M-AI-04-01 发现 #5)active-recall-validator.ts:32-39:BusinessValidationError + ReferenceValidationError 错误类型(匹配 Engine 的 classifyError)active-recall-validator.ts:75-200:BusinessValidator 18 项规则active-recall-validator.ts:230-280:ReferenceValidator URL/email/PII 检测测试情况
npm run buildnpx jest --testPathPatterns="active-recall-executor"npx jest --testPathPatterns="ai-job"验收标准对照
executor.spec.ts:94, 124, 130executor.spec.ts:107-110未完成 / 风险
messages: []和outputSchema: undefined,M-AI-04-05 需修改发动机来调用此 Executor是否建议进入 Review
Non-blocking 问题回复
1. knowledgeItemContent 仍为空字符串 ✅ 已确认(范围限制)
2. Executor 未与 AiJobExecutionEngine 集成 ✅ 已确认(增量开发)
messages: []和outputSchema: undefined(ai-job-execution-engine.ts:170-172),待 M-AI-04-05 按 jobType 分派 Executor3. Snapshot temperature 未被 Executor 显式传递 ✅ 已修复(文档化对齐)
GatewayRequest接口不含temperature字段(ai-gateway.types.ts:5-14),无法从外部传入temperature: 0.3(ai-gateway.service.ts:62)AI_GATEWAY_DEFAULT_TEMPERATURE常量(active-recall-snapshot-builder.ts:45)→ 与 AiGateway 内部值同源active-recall-executor.ts:71-74),明确:AI_GATEWAY_DEFAULT_TEMPERATURE常量GatewayRequest接口增加可选temperature字段,允许 Executor 从 Definition/Snapshot 显式传入