淘宝主播Agent以分层Harness分离业务与框架资产
概述
针对直播场景“操作即时生效且面向公众、主播注意力稀缺、多话题高频交织、长程可中断要恢复”四点压力,团队把 Harness 形式化为六元组(执行循环 E、工具注册 T、上下文管理 C、状态存储 S、生命周期钩子 L、评估接口 V),并按“业务方专注写 Skill、框架层兜住安全/状态/上下文/可观测脏活”划分责任边界:框架层提供执行循环、上下文治理、安全防护、状态持久化与审计观测,业务方只以 Skill 声明能力范围、风险等级与参数校验规则。工程载体上采用“逻辑统一工作区、物理分而治之”:会话与运行时状态存 MySQL(agent_session 表按 user_id+session_id+state_key 点查,支持多副本对等部署与跨节点一致)、长期记忆存 Hologres(向量+全文+JSONB 三位一体,混合检索)、技能存 GitLab(带 Schema 约束的代码资产,上线前走预检平台校验与 Code Review 再灰度)。 直播对话多话题交织、单轮可能同时涉及播前/播中/播后,放任历史增长会撞上上下文膨胀(Token 耗尽、延迟与成本失控)与注意力漂移两堵墙。三个手段:一是分层压缩而非无脑截断——Token 超阈值时走三层压缩(压缩历史工具调用、摘要历史对话轮次、压缩当前轮次消息),对话超过 N 轮触发 Session 级话题分段,把多轮压缩为结构化摘要并打 pre-live/on-live/post-live 场景标签以支持按场景聚合检索;二是借鉴前端状态管理的 Reducer 思想做职责分离——LLM 只产生 Action,Reducer 纯函数负责状态变更,每轮对话前把最新结构化 State 序列化后经 system-hint 注入(当前商品 SKU、价格、库存、本场目标一目了然),替代把每轮完整 JSON 工具结果追加进历史的做法;三是大上下文卸载——商品列表、长历史数据、用户上传大文件卸载到 OSS/Tair(路径 id + 预览),需要时由沙箱执行 shell 按 fileKey 过滤取用,只需摘要时直接返回摘要。 工具调用层做三件事:能力边界声明(每个 Skill 注册时声明能力范围与限制,调用前校验是否落在能力域内,上线前过预检平台,避免越权调用)、Schema 强约束 + 幂等设计(所有工具签名与决策输出用 JSON Schema 约束,改价/切品/发券等有副作用的写操作必须携带 UUID 幂等键,框架层执行前查幂等键缓存去重,杜绝“双切品”“双改价”)、结构化错误码 + 自动修复。安全上建从 Prompt 边界到执行审计的五层纵深防御:Prompt 边界硬编码能力边界与行为禁区 → Schema 强约束 → Approval 审批分层(平台级红线由框架定义、Skill 级风险由业务方声明,如调价范围、商品排序间隔)→ 工具执行业务规则校验并返回结构化错误码 → 执行审计记录(实时监控、事后回放、模型优化数据集、争议证据链)。代码类执行统一套沙箱:容器非特权用户、根文件系统只读,CPU 限额不超过 50%、进程数上限 64,网络默认禁止出站仅按最小化 allowlist 放行,系统调用白名单收敛,不注入宿主机环境变量,工具层强制 timeout 上限且 Agent 只能缩小、stdout/stderr 上限 64KB,执行记录完整入审计日志。 主播指令常为复合句(如“先生成开播提案→创建直播间→同步历史场次商品→给前 3 个商品生成讲解手卡→开启智能标题”),传统 ReAct 单步局部决策易顾此失彼。团队把单步局部决策升级为 DAG 全局规划,围绕五个目标建设:可恢复(每轮对话结束、每个子任务完成、整体计划变更三个粒度写 Checkpoint,支持断点续连与人工干预)、可观测(每个子任务独立 TraceID,Plan/SubTask/Tool Call 三级状态实时可见)、提升执行效率(无依赖子任务并行调度)、提升执行成功率(局部最优升级为全局最优、固定规则+语义双重 Schema 校验、失败子任务自动重试、仅对受影响后续节点增量 Replan、单任务/单场次 Token 预算上限)、降低上下文漂移(执行进度外挂不占 Context Window、复杂任务拆到独立 SubAgent 做上下文隔离、压缩前先落 Plan 快照、任务状态经 system-hint 动态注入)。planner 可基于小模型做 SFT 微调与强化学习提升垂直领域效率与准确性;官方对比测试用播前规划/直播策略/商品操作等工具组合构造的平均 7 步复杂 query,PlanEngine 在工具执行冗余率、迭代轮次、执行成功率、子任务覆盖率上优于原生 ReAct(基模 qwen3.7-max)。 长期记忆按“信任来源”分三层:L1 反映主播主观行为与声明(第一优先级),L2/L3 做客观信息补充与信任度评分;冷启动基于 L2/L3 历史数据推荐,使用中随交互反馈进化。核心机制是记忆对账:当主播“说的”与“做的”不一致(如口头说开场先上引流款、行为记忆显示近 3 场都上氛围款且效果好),不粗暴覆盖而是累积证据、达到阈值后由 Agent 主动与主播确认。支撑对账的是标准化 Decision Trace Log(记录“问什么/ Agent 答什么/ 主播选什么/ 最终效果”),把 Harness 评估接口的可观测数据反向喂给记忆系统;基于 trace 播后逐条归因更新 trust_score(衡量主播对 Agent 建议的信任程度),信任度高就大胆给建议、低就只摆数据不下结论。遗忘采用多因子加权衰减(直播场景相关性、信息新鲜度分级——偏好/话术慢衰减、价格/平台规则快衰减、时间衰减、可信度因子),配合定时任务清理(采纳/召回次数低于阈值或超期清理)与冲突处理(Last-Write-Wins + 优先级或呈现给 Agent 确认)。 Harness 六元组中的评估接口落成离线 + 在线两个维度:trace 分析接入 Langfuse 做可视化;离线评测构建播前/播中/播后各典型场景的标注数据集,并专门加入对抗样本(极端改价、违规诱导、模糊指令等边界 Case)用于验证五层防护是否有效;在线评测用实时指标看板盯四个核心指标——操作成功率(工具调用成功数/总调用数)、审批通过率(soft-gate/hard-gate 通过率,过低说明 Agent 决策质量下降)、主播干预率(主播主动纠正 Agent 行为的频率,反映自主决策可靠度)、端到端延迟(指令发出到操作完成全链路耗时);另有主播满意度评测,每场直播结束后由主播给 Agent 表现打 1–5 分作为会话级主观质量信号。