AI / Agent 算法方向

关注长期记忆与 Agent 自进化。

电子科技大学 · 计算机科学与工程学院

字节跳动 Agent 算法实习生

基于真实反馈与轨迹归因的 Agent 自进化系统

2026.06.05 – 至今

以线上用户负反馈为起点,将真实问题转化为可复现训练样本,通过执行轨迹对比提炼可迁移的策略,更新 Skill,并以独立基准验证和规则疗效审计形成持续改进的闭环,用于 Word 与 PDF 生成的迭代。

构建自动化产题链路与人工金标基准

动态训练集:基于上游回流的线上负反馈 Trace 持续构建 Bad Case 训练题,并利用阶段性人审结果迭代校准产题 Skill;在人审通过率超过 70% 后转为自动化产题,使训练集能够随线上问题持续更新,支撑后续轨迹归因与 Skill 优化。

人工金标基准:从 40 万 + 真实线上 Query 中完成场景标注、覆盖采样、去重清洗与人工标注,构建并冻结 211 题人工金标基准;通过多模型交叉评测与重复执行检验题目的正确性、稳定性与区分度,作为候选 Skill 评估和版本准出的统一尺度。

设计文档产物评估器

文档产物评估器:构建 Analyzer–Checker 双阶段评估流程,将文档页面按“前一页–当前页–后一页”组成三页上下文,并通过多轮实验持续完善评测 Rubrics;Analyzer 负责问题发现与证据定位,Checker 完成纠错、补漏与去重,最终汇总为文档级评测结论。

评估器有效性验证:人工标注 100 个真实文档作为评测集,对照人工 GT 的问题识别准确率、召回率分别达到 88.0%/81.2%;在评测集上进行稳定性实验(同一评估器 ×5 次),将评估结果翻转率由 16.3% 降至 3.9%。

基于轨迹学习的自进化

线上回流与产题 → 进化归因 → 验证与效果审计。由真实执行轨迹提炼共性规则,再以独立基准与规则审计验证效果。

查看交互完整版

完整流程以三条横向泳道展示,所有模块与连接均在同一张图上;支持动态播放、节点聚焦与缩放。

补充说明G1–G9:一条规则写入 Skill 前的九道检查

在归纳阶段,逐项检查候选规则的证据、泛化能力与一致性;任一项不通过,即淘汰该候选。

  1. G1覆盖度

    有多少失败样本支持这条规则,是否只是一次偶发失误。

    看一个例子

    多份文档都漏查了后续页面,才为“检查全部页面”提供共同证据;仅一份文档出错,还不足以直接推广。

  2. G2多失败模式吻合

    能否解释多种独立失误,找到它们背后的共同问题。

    看一个例子

    漏看后续页、漏查后续表格、只验正文不验附录,表现不同,却都指向“检查范围不完整”,可归纳为全覆盖核验规则。

  3. G3不与已否决候选冲突

    对照本轮否决记录,避免同一个问题换种说法又被接受。

    看一个例子

    “只检查第一页”已因漏检被否决,改写成“验完首页即可结束”仍是同一做法,不能重新放行。

  4. G4禁止 Case 泄漏

    不把具体题目的输入、答案、ID 或专属数据写进规则。

    看一个例子

    不能写“这份周报的总额应改成 128 万”;应提炼为“汇总金额须与明细逐项核对”,让模型学会方法。

  5. G5替换测试

    换掉具体名称或对象后,规则是否仍然成立。

    看一个例子

    把“销售报表”换成“库存报表”,“逐项核对明细与汇总”仍然适用;若换个名称就失效,规则可能只针对原题。

  6. G6用户覆盖测试

    面对训练记录里没出现过的同类新任务,能否指导执行。

    看一个例子

    旧任务只有单张表,新任务包含多张工作表。“先列全核验范围,再逐项检查”仍能指导处理,才具备覆盖新任务的可能。

  7. G7跨模型可迁移性

    强模型的成功过程,能否写成弱模型也能执行的步骤。

    看一个例子

    “先渲染文档,再逐页检查布局”是可复制的流程;强模型直接凭推理得出答案,却没有可复现步骤,就不能据此写规则。

  8. G8不与现有规则矛盾

    对照当前 Skill,避免新增要求与已有约束互相冲突。

    看一个例子

    已有规则要求“保留用户模板样式”,就不能新增“所有文档强制统一字体”;必须先明确适用条件、消除冲突。

  9. G9描述纯净无例子

    规则正文只保留通用要求,例子与占位示意放在证据说明中。

    看一个例子

    正文写“交付前逐页核验表格完整性”;“例如某客户月报……”这类演示留在证据说明里,不追加进 Skill 正文。

G3–G4:可机械化门禁。有确定性标准,可脚本兜底,如 case 泄漏子串扫描。
G1–G2、G5–G9:LLM 判断型门禁。依赖语义推理,无机械判定标准。

RSI 迭代效果与线上收益

完成 16 轮 Skill 进化,DOCX 在人工金标基准上的文档级/页面级问题率分别由 61.82%/20.04% 降至 39.09%/12.48%。

上线后,真实 Query 文档级问题率由 37.5% 降至 33.0%,线上负反馈率相对下降 37.3%。

华为技术有限公司 AI 工程师

面向海量 Agent Skill 的 图联合检索与路由框架

2026.03.04 – 2026.05.29

项目背景

随着 Agent Skill 库持续增长,如何从大量语义相近、功能重叠的技能中,准确且高效地选择适合当前任务的 Skill,成为技能复用的关键问题。

为什么 Skill 库一变大,图联合重排就开始变得必要

随着 Skill 库从百级扩到万级,Top-K 候选会越来越集中在同一个语义邻域里。传统逐点打分只能回答“它和 query 像不像”,却很难回答“这几个都很像时到底谁更对”。

随着技能库扩大,Top-K 候选相似度结构变得更密的示意图
Top-K 候选的相似度结构示意。技能库越大,候选越挤在同一语义邻域里,真正困难的部分变成了相似候选之间的去歧。

从独立打分到图联合重排

  1. 独立打分的局限

    基于相似度的 RAG 检索采用 pointwise 打分,分别计算 Query 与每个 Skill 的相似度,再进行排序,缺少候选之间的直接比较。

  2. 我们的思路

    不能只看一个候选与任务有多相关,还要判断其他相近候选是否更合适。因此,我们将候选放在一起建模,让评分同时考虑自身匹配程度和其他候选的匹配情况。

  3. 用图实现候选联合重排

    将召回的 Top-K Skill 构建成图:节点表示候选 Skill,包含 Query–Skill 匹配信息与检索统计量;边表示候选 Skill 之间的相似关系。通过 GNN 在节点间传递信息,引入候选之间的比较与竞争,完成联合重排。

TopoSkill-R 的两阶段路由框架图
两阶段路由框架。先用 Embedding 从全库召回 Top-K,再对候选集建图做联合重排,让 query-skill 交互特征和候选间相似度一起参与决策。

构建真实业务场景评测集

构建了包含 16,208 个真实 Agent 技能的测试库(严格剔除低活跃(Stars 低于 1000)及结构残缺的低质数据)。同时,借助 GPT-5.4 生成并深度清洗了 20,500 条测试指令,打造了一个贴近真实开发场景的工业级评测基准。

对 Qwen3-Emb-8B 进行面向技能路由的 SFT 微调

由 GPT-5.4 合成 3 万 + 条 (query, skill) 对。为每个查询沿三条互补路径构造 10 个难负样本:语义相似(预计算 16K 技能 Embedding,余弦 Top-50 中采样 4 个)、词汇重叠(BM25 匹配 3 个)、同类别(3 个)。

针对技能库中不同名技能功能实际重叠的问题,对语义相似度 >90% 的候选使用 GPT-4o-min 二次校验并剔除假负样本,仅此一步 TopK@1 提升 4%

最终结果

在 10K 技能库下取得 81.0% Acc、0.869 MRR,较最强基线提升 +9.0 个百分点;在线推理平均延迟 97.7ms/query,较传统 LLM 路由方案提速 约 35 倍

方法 Emb 50 500 1,000 5,000 10,000
Acc MRR Acc MRR Acc MRR Acc MRR Acc MRR
Baseline -- 77.0% -- 75.0% -- 76.0% -- -- -- -- --
SkillRL 0.6B 90.0% 0.953 89.0% 0.906 85.0% 0.891 74.0% 0.837 68.0% 0.745
4B 91.0% 0.937 86.0% 0.954 86.0% 0.893 70.0% 0.728 62.0% 0.770
8B 95.0% 0.975 87.0% 0.974 82.0% 0.922 75.0% 0.830 72.0% 0.770
SkillRouter 0.6B 93.0% 0.961 91.0% 0.942 86.0% 0.910 71.0% 0.786 72.0% 0.800
4B 93.0% 0.961 91.0% 0.942 88.0% 0.921 69.0% 0.766 69.0% 0.782
8B 93.0% 0.961 91.0% 0.941 88.0% 0.917 71.0% 0.778 69.0% 0.790
Ours 0.6B 90.0% 0.931 90.0% 0.933 88.0% 0.917 74.0% 0.811 75.0% 0.825
4B 91.0% 0.944 93.0% 0.963 90.0% 0.934 77.0% 0.835 72.0% 0.804
8B 87.0% 0.929 92.0% 0.956 89.0% 0.929 77.0% 0.846 79.0% 0.852
FT-8B 95.0% 0.971 96.0% 0.976 90.0% 0.942 78.0% 0.856 81.0% 0.869

主结果表保留了论文里的五个 Skill 库规模。可以直接看出:从 500 到 10,000 的所有规模下,FT-8B 都保持了最强的 Accuracy 与 MRR;随着技能库增大,图联合重排的退化曲线也更平缓。

推理延迟对比

单位:ms · 越低越好

方法 Val Set Mean P50 P95 Retr. Graph Model LLM Rerank
Baseline 50 4108.18 4038.69 5329.13 4107.64
SkillRL 50 4058.93 3298.17 5458.94 0.61 4057.76
500 3931.56 3951.96 5053.46 1.45 3929.75
1,000 4332.23 4129.39 5206.77 1.28 4330.36
5,000 4639.88 4516.57 6132.87 4.31 4632.44
10,000 4392.15 4629.57 4972.23 10.17 4381.48
SkillRouter 50 3375.62 3382.61 3547.96 0.70 3374.93
500 3284.69 3208.12 3515.04 1.55 3283.14
1,000 3467.04 3428.91 3701.21 6.14 3460.90
5,000 3342.08 3215.58 3621.17 4.03 3338.05
10,000 3383.46 3433.33 3610.00 28.13 3355.33
Ours 50 17.20 17.45 18.58 0.49 3.06 13.65
500 81.60 86.20 97.87 10.51 23.41 47.68
1,000 87.22 92.74 93.55 10.05 31.49 45.68
5,000 98.59 100.26 101.18 12.43 28.27 57.89
10,000 97.74 97.74 123.18 10.73 32.09 54.92

Mean 为平均延迟,P50 / P95 为延迟分位数;后五列展示各阶段耗时,— 表示原表未报告该项。

项目经历 长期记忆 / Agent System

面向 Agent 长期记忆的 动态 LoRA 注入框架

2025.09 – 2026.01

当前 Agent 系统普遍将跨会话记忆以文本形式拼入上下文窗口,随记忆增长导致输入 Token 膨胀和 KV Cache 显存压力。本项目将长期记忆整体迁移到 LoRA 参数空间:通过 Hypernetwork 一次性将全部长期记忆直接生成 LoRA Adapter 并注入 Base Model,使记忆以参数化形式参与推理,不再每轮重复消费历史文本。

核心机制:长期记忆如何变成 LoRA

以长期记忆文本为输入,由预训练的 Hypernetwork 直接生成 LoRA 参数。生成时无需为每份记忆构造训练数据,也无需逐份微调。

  1. 文本编码

    将长期记忆送入冻结的 Context Encoder,提取各层的 Token 表示;较长记忆按块编码。

  2. 生成 LoRA 参数

    Hypernetwork 读取这些表示,通过前向计算生成目标层的 LoRA A/B 矩阵,将记忆映射为参数增量 ΔW。

  3. 注入模型,参与推理

    将 LoRA 加载到冻结的 Base Model,结合当前 Query 与短期上下文作答,无需再次拼入原始长期记忆文本。

冻结的编码器提取文档各层表示,Hypernetwork 生成 LoRA 参数并注入模型;右侧读取完整文档的教师模型在预训练阶段提供蒸馏监督。

图中包含预训练过程。右侧教师模型通过蒸馏监督 Hypernetwork;实际使用时,仅执行左侧的记忆编码、参数生成与注入链路。

Architecture

把长期记忆从“文本参与推理”改造成“参数参与推理”

构建长短期解耦的双层记忆架构

将 Agent 记忆按生命周期划分为两条路径。

短期记忆
Context

当前任务上下文、推理中间态、工具调用结果继续驻留在 Context 中维持实时感知,不参与参数化,优先保证实时、精确、可覆盖。

长期记忆
LoRA

用户偏好、项目背景等稳定信息,由 Auto Memory 管理模块统一维护:调用后台 Subagent 提取记忆,调度参数化,并在请求时加载 LoRA 参与推理。

优先级当前用户指令 > 当前会话约束 > Session Summary > Active LoRA > Base Model 先验

本地 Harness 中,Agent Loop 通过 Model Call 调用 Base Model;达到记忆整理条件后,Auto Memory Subagent 更新长期记忆 MD,经 Memory to LoRA 工具提交给 Context Encoder 和 Hypernetwork 生成 LoRA,供后续轮次使用。

Results

验证参数化记忆在长期任务里的实际价值

在长期记忆 Benchmark 上,这个项目最终回答的是一个非常具体的问题:对高复用、相对稳定的长期信息,是否值得从上下文路径迁移到参数化路径。

LongMemEval +15% 4K → 38 MB LoRA KV Cache ≈ 378 MB Hot Load ~30ms

我更看重这组结果背后的结论:稳定、高复用、允许有损表达的长期信息,可以不再每轮都占用上下文窗口;而精确、时效、敏感信息仍然保留在文本 / RAG 路径里,两者并不是互斥关系。

为什么这种参数化路径值得保留

传统文本记忆的优势在于可引用、可审计、易更新,但一旦跨会话记忆不断累积,输入 Token、Prefill 和 KV Cache 成本都会持续上升。参数化记忆的价值,则是把一次编译成本摊销到后续多轮推理里。

所以这个项目最终不是要“替代” RAG,而是把 Agent 长期记忆拆成两条更清晰的交付路径:稳定背景走参数,精确信息走文本,工程上各自发挥长处。

项目经历 主要负责人 / Multimodal FER

基于 Qwen2.5-VL 的 多模态表情识别推理大模型优化

2025.04 – 2025.07

基于 Qwen2.5-VL-7B 重构 FER 范式。通过数据工程与 SFT + RLVR 两阶段全量微调,实现了具备“视觉归因”能力的情感计算模型。

1.2 万 高质量 <think> CoT 数据
10 万 + Prompt Diversification 后训练集
70.6% → 80.8% SFT 后准确率提升
+26pt Neutral Recall 提升
+5.8pt Fear F1 提升
81.1% 最终整体 Acc

Method

让模型先观察面部动作依据,再完成情绪判断

这部分我把项目重点收成两条主线:一条是围绕 FACS 与思维链的数据构建,另一条是围绕极限显存约束下的 SFT 与 RLVR 训练优化。

FACS 专家知识蒸馏与 CoT 构建

设计基于 FACS(面部动作编码系统)的“反向推理”数据管线,利用 GPT-4o 蒸馏构建 1.2 万条包含 <think> 标签的高质量思维链数据。通过注入“先推理 AU 特征、后判定情绪”的专家范式,解决多模态模型的逻辑推理冷启动问题。

同时设计 10 种异构提问模板(Prompt Diversification)将数据扩充到 10 万 + 条,有效防止模型对固定指令过拟合,提升模型在不同交互场景下的泛化鲁棒性。

极限显存下的 SFT 全量对齐与 “3+1” RLVR

针对 4 × A40 的显存瓶颈,结合 DeepSpeed ZeRO-3 与 Gradient Checkpointing 实现 7B 模型全参数微调。SFT 阶段将准确率由 70.6% 拉升到 80.8%,并显著缓解“中性幻觉”,Neutral Recall 提升 26 个百分点。

后续针对 RL 长文本生成效率低的问题,使用“3+1”训推解耦架构(3 卡 ZeRO-3 训练 + 1 卡 vLLM 推理),并设计“格式 + 准确率”双重奖励函数,进一步把 Fear 类别 F1 再提升 5.8 个百分点,整体 Acc 达到 81.1%。

Results

把传统 FER 从“直接分类”升级成“可解释推理”

这个项目对我来说最关键的,不只是把准确率做上去,而是把模型输出改造成了更适合面试讲述和实际分析的“视觉归因式”结果。

1.2 万 CoT 10 万 + 数据 80.8% SFT 81.1% Final Acc

最终模型不仅能给出类别判断,还能围绕面部动作单元与视觉线索给出更清晰的推理过程;从训练视角看,这是一次把数据工程、全量微调和 RLVR 组合起来的完整多模态优化实践。