【本文是笔者在 首届 FAISys’25 (The 1st Frontier AI Systems Workshop) 的受邀报告。】

查看演讲 Slides (HTML)

演讲 Slides 源代码

【以下内容为根据英文 slides 自动生成的中文翻译,建议阅读原始 slides

大家好,非常荣幸在 首届 FAISys’25 做报告,今天我分享的主题是 Self-Evolving Real-Time Agents: Think While Listening, Speak While Thinking, Learn While Acting (自我进化的实时 Agent:边听边想,边想边说,边做边学)。

我是 Pine AI 的联合创始人和首席科学家。目前我们 Pine AI 的业务是通过 AI 打电话和操作电脑,帮助用户处理日常事务。比如帮助用户砍价、取消订阅、投诉维权、获取赔偿等。我们已经为用户节省了超过 300 万美元,成功率达到 93% ,平均为每位用户节省 270 分钟的时间。

从经验中学习,代表了机器学习的根本挑战。当前自主 AI Agent 在实际应用中面临两大核心挑战:与环境的实时交互,以及从经验中学习。今天我将介绍我们在这两方面的技术突破。

两大核心挑战

挑战一:实时交互的高延迟

实时语音 Agent 必须像人类一样在 1 秒内响应,但传统架构使用推理型 LLM 会引入 2-10 秒的延迟

VAD(语音活动检测)的挑战:

  • 必须等待 500-800ms 的持续静音才能确认用户说完
  • “嗯哼”这样的回应词会被误判为打断
  • 丢失了声学信息(情绪、环境音)

ASR(语音识别)的挑战:

  • 没有上下文导致高错误率(邮箱、姓名、电话号码)
  • 缺乏世界知识导致转写错误

LLM 的挑战:

  • 被迫等待,无法边听边想
  • 无法边想边说(5-10 秒的沉默)
  • 说话时机(turn detection)判断差(何时该说话/保持沉默)

挑战二:从经验中学习

模型很聪明,但不熟练——就像顶尖毕业生缺乏实际工作经验。

固定模型无法学习:

  • 无法从成功的轨迹中学习
  • 无法从失败的轨迹中学习
  • 部署后参数冻结

大世界假说(Big World Hypothesis):
世界太大,无法预先编码所有知识:

  • 业务流程是动态且非公开的
  • 验证信息因公司而异
  • 服务规则不断变化
  • 预训练知识不足以支撑部署

Part I: 实时 Agent-环境交互

Agent 需要与三类目标进行实时交互:

  • 人类:通过实时语音进行对话和协作
  • 数字世界:操作电脑、浏览网页、使用移动设备
  • 物理世界:控制机器人、与真实环境交互

典型的语音 Agent 架构

传统架构分为三层:

  1. 感知层(Perception Layer):VAD + ASR

    • 输入:连续信号(音频流)
    • 输出:离散事件(speech_start, interrupt, laugh, speech_fragment 等)
    • 作用:将连续信号转换为离散事件
  2. 思考层(Thinking Layer):LLM

    • 输入:离散事件流(观察和工具调用结果)
    • 输出:交错的思考、工具调用和输出句子
    • 作用:异步处理
  3. 执行层(Execution Layer):TTS

    • 输入:离散事件(文本)
    • 输出:连续动作(音频流)
    • 作用:将离散事件转换为连续动作

传统 VAD + ASR 架构的问题

VAD 的三大问题:

  1. 不可避免的延迟:必须等待 500-800ms 的持续静音才能确认用户说完
  2. 打断检测差:无法区分背景噪音/音乐;”嗯哼”会误触发打断
  3. 语音检测准确率低:复杂声学环境中出错;句中停顿导致截断;背景噪音中的”你好”导致无响应

ASR 的三大问题:

  1. 缺乏上下文导致准确率低:VAD 将音频切成孤立片段;无法使用上下文消歧;邮箱、姓名、电话号码错误率高
  2. 缺乏世界知识:无法利用常识;地址、品牌、技术术语、金额准确率低
  3. 纯文本输出丢失声学细节
    • 丢失情绪:快乐、沮丧、兴奋
    • 丢失副语言信息:笑声、叹气、呼吸
    • 丢失环境信息:嘈杂、音乐、安静

解决方案:流式语音感知模型

我们提出了流式语音感知模型来替代 VAD + ASR:

多模态架构:

  1. 音频编码器(来自 Whisper):将音频转换为音频 token
  2. Qwen LLM(自回归):处理音频 token,输出文本 + 事件

关键优势:

  • 流式:实时输出(非批处理)
  • 上下文:保留完整对话历史
  • 上下文学习:对个人信息、领域术语识别更准确
  • 世界知识:对地址、品牌、金额准确率更高

丰富的输出:文本 + 声学事件

除了文本 token,还输出特殊 token(声学事件):

  • <speak_start> <speak_end>:语音边界
  • <interrupt>:打断意图
  • <emotion:happy>:情绪标记
  • <laugh> <sigh>:副语言信息
  • <music>:环境声音

Interactive ReAct:灵活交织观察、思考和行动

传统 ReAct 是刚性的 OTA 循环(Observation-Thinking-Action):

  • 固定循环:必须完成整个 观察-思考-行动 序列
  • 思考丢失:无法边听边想,延迟高
  • 刚性:必须等待完整输入才能思考

Interactive ReAct 实现灵活交织的 OTA:

  • 边听边想:新观察随时插入,思考得以保留
  • 边想边说:快速响应,然后继续思考
  • 智能转折点判断:决定何时说话、何时保持沉默

示例对比:

传统 ReAct(总耗时 20+ 秒):

1
2
3
4
5
O₁: "我想把我的 Xfinity 账单降到每月 79 美元"
T₁: (思考 5 秒... 然后被打断,全部丢失)
O₂: "而且我不想删减任何功能"
T₂: (思考 15 秒...)
A₁: "明白了!这是一个包含所有功能的 79 美元套餐..."

Interactive ReAct(总耗时 ~6 秒):

1
2
3
4
5
6
7
8
O₁: "我想把我的 Xfinity 账单降到每月 79 美元"
T₁: (快速思考 0.5 秒:用户话未说完,等待)
T₂: (思考 5 秒... 然后被打断)
O₂: "而且我不想删减任何功能"
T₃: (快速思考 0.5 秒:用户想降价到 79 美元)
A₁: "我可以帮你!让我查看可用的套餐"
T₄: (继续思考... 10 秒)
A₂: "明白了!这是一个包含所有功能的 79 美元套餐..."

边听边想(Think While Listening)

关键洞察:LLM 比人类语速快 20-100 倍——利用这个时间差来思考!

  • LLM 处理速度

    • Prefill(输入):1000+ tokens/sec
    • Decode(输出):100 tokens/sec
  • 人类语音速度

    • 说话:5 tokens/sec(文本)或 20 tokens/sec(音频 token)
    • LLM 比人类快 20-100 倍!

实例:面试 Agent 在候选人说话时异步调用工具

1
2
3
4
5
6
7
8
9
10
候选人:"我之前的工作涉及构建分布式系统..."
思考:分布式系统 - 需要评估深度。让我搜索...
工具调用:web_search("候选人分布式系统项目") (异步!)

候选人:"...我们使用 Kafka 和 Redis 处理每秒 1000 万请求" (说话的同时工具在运行)
思考:Kafka+Redis 对高吞吐量很稳定。继续听...

工具结果:GitHub 显示 3 个开源项目,总计 2K+ stars
思考:工具结果确认了经验!结合候选人说的内容...
助手:"规模很大!(<0.5 秒!) 告诉我你遇到的最艰难的扩展挑战..."

优势:异步工具 + 边听边想 → 无等待,超快响应

边想边说(Speak While Thinking)

理论:⚡ 快速 → 🐢 慢速 → 🐌 持续思考,使用填充语

三个思考阶段:

  1. ⚡ 快速(0.5s,50 tokens):快速判断 → 立即响应
  2. 🐢 慢速(5s,500 tokens):深入分析 → 完整答案
  3. 🐌 持续(交错思考和说话):持续思考 → 持续说话

关键:使用”填充语”在深度思考期间保持对话流畅

示例:面试 Agent 提出复杂问题

1
2
3
4
5
6
7
8
9
10
11
候选人:"我准备好回答技术问题了。"

思考:复杂问题,需要仔细设计
助手:"让我问你一个系统设计问题。" (⚡ 0.5 秒)

思考:需要涵盖可扩展性、一致性、延迟... (🐢 5 秒)
助手:"假设你在构建一个全球 CDN。"

思考:继续 - 指定缓存失效挑战...
助手:"当内容更新时,你如何处理
100+ 个边缘服务器的缓存失效?"

结果:问题逐句自然展开,没有尴尬的沉默

未来:AI Agent-环境交互的三个阶段

实时异步与环境交互是 Agent 的基础能力。

🗣️ 阶段 1:语音

  • 输入:语音
  • 输出:语音
  • 数据速率:15-50 token/s
  • 延迟:<500ms
  • 挑战:快慢思考平衡
  • 解决方案:Interactive ReAct

💻 阶段 2:电脑使用

  • 输入:视觉(截图)
  • 输出:鼠标/键盘动作
  • 数据速率:~2K token/frame
  • 延迟:<1 秒
  • 挑战:精确动作执行
  • 解决方案:VLA 模型 + RL

🤖 阶段 3:物理世界

  • 输入:视觉+语音+触觉
  • 输出:语音+关节动作
  • 数据速率:~20K token/s
  • 延迟:<100ms
  • 挑战:实时控制
  • 解决方案:VLA + 世界模型

关键洞察:复杂度递增(数据速率 ↑,延迟 ↓),但架构解决方案可以跨阶段迁移

Part II: Agent 从经验中学习

“We want AI agents that can discover like we can, not which contain what we have discovered.”
— Richard Sutton

为什么 Agent 必须从经验中学习:从”聪明”到”熟练”

🎓 SOTA 模型 ≈ 顶尖毕业生

知识渊博:掌握大量通用知识

缺乏经验:在专业任务上不如有经验的专业人士(如会计、税务申报)

💼 Pine AI 中的实际挑战

  1. 🔑 验证信息

    • 第一次通话:得知需要信用卡后 4 位数字
    • 第二次通话:应该主动请求
  2. 📋 服务流程

    • 第一次取消:被告知填写在线表单而不是电话
    • 第二次取消:应该直接填写在线表单
  3. 🎯 服务规则

    • 哪些折扣适用?(退伍军人、2 年忠诚度等)
  4. 💰 价格估算

    • 3Gbps 宽带每月 60 美元是高还是低?有讨价还价的空间吗?

核心问题:许多业务流程是动态且非公开的。单纯提升基础模型的通用能力无法解决这些”基于经验”的问题。

构建自我进化的 Agent

让 Agent 从经验中学习,有三种范式:

  1. 范式 1:后训练(Post-Training)
  2. 范式 2:上下文学习(In-Context Learning)
  3. 范式 3:外化学习(Externalized Learning)

方法 1:后训练 - SFT 记忆,RL 泛化

📚 监督微调(SFT)

优势

  • 样本效率极高(数千个样本即可)
  • 快速固化格式和协议
  • 训练稳定,快速收敛

局限

  • 记住表面模式
  • 在分布外数据上急剧退化
  • 难以学习可迁移的策略

🎯 强化学习(RL)

优势

  • 学习可迁移的策略表示
  • 在分布外场景中鲁棒
  • 发现训练数据之外的新策略

局限

  • 样本效率低(需要 100 倍的数据和计算)
  • 训练成本和时间高
  • 需要可验证的奖励信号

💡 工程实践:形式先于功能

  • SFT 阶段:建立格式稳定性,确保可解析的输出
  • RL 阶段:在稳定基础上突破泛化边界
  • 关键平衡:训练 SFT 直到”格式稳定,能力初现”

提高样本效率(I):在策略蒸馏(On-Policy Distillation)

三种训练方法的对比:

SFT(监督微调)

  • 采样:❌ 离策略(教师的轨迹)
  • 奖励:✅ 稠密(逐 token)
  • 问题:学生状态下的复合错误

RL(强化学习)

  • 采样:✅ 在策略(学生的推出)
  • 奖励:❌ 稀疏(仅最终结果)
  • 问题:每个 episode 一个信号,效率低

✨ 在策略蒸馏

  • 采样:✅ 在策略(学生的轨迹)
  • 奖励:✅ 稠密(教师为每个 token 打分)
  • 两全其美!

🔧 工作原理

1
2
3
4
5
6
7
8
9
10
# 从学生采样
trajectory = student.generate(prompt)

# 教师为每个 token 打分
for token in trajectory:
teacher_logprobs = teacher(token | ctx)
student_logprobs = student(token | ctx)

# 最小化反向 KL
loss = KL(student || teacher)

🎯 关键优势

  • 比 RL 效率高 10 倍
  • 学生学会从自己的错误中恢复
  • 可以重用训练数据(多轮)
  • 支持持续学习

提高样本效率(II):反馈引导采样(Feedback-Guided Sampling)

❌ 传统 GRPO/DAPO

流程:

  • 生成 N 个独立的推出
  • 后续尝试重复相同错误

示例:

1
2
3
4
推出 1:需要 SSN → ❌ 失败
推出 2:需要 SSN → ❌ 失败
推出 3:需要 SSN → ❌ 失败
...(浪费环境反馈)

✅ 反馈引导采样

顺序流程:

  • 第 1 次推出:从原始 prompt
  • 第 2 次推出:prompt + 第 1 次反馈在上下文中
  • 第 N 次推出:累积 N-1 次推出的反馈

示例:

1
2
3
4
推出 1:需要 SSN → ❌ 失败
推出 2:[知道 SSN] 准备好 → ✅ 成功
推出 3:[知道 SSN] 准备好 → ✅ 成功
...(批次内快速适应!)

📈 结果:每批次更多高质量样本

这本质上是一个在线学习过程

  • 外化学习:每次推出后反馈累积到知识库
  • 在线 RL:Agent 根据批次内累积的反馈调整策略

方法 2:上下文学习

⚠️ 常见误解

“有了长上下文,只需把所有历史放进去,让模型自动推理”

这是对上下文能力的严重误解!

🔍 上下文真正的作用

  • 本质:检索,而非推理引擎
  • 机制:键值相似度匹配(类似 RAG)
  • 擅长:查找相关信息
  • 不擅长:统计聚合和计数

⚠️ 实际案例:三次通话限制

  • 规则:最多给同一商家打 3 次电话
  • 上下文:轨迹中有多次 Xfinity 通话
  • 问题
    • 必须扫描整个轨迹来计数
    • 容易数错 → 打了第 4 次电话
    • 即使正确,也浪费推理 token
  • 成本:每次决策 O(轨迹长度)

System Hint:让隐式状态显式化

解决方案:预聚合信息 → 将 O(n) 降为 O(1) 的上下文查找

💡 System Hint 如何工作

1
2
3
4
5
6
7
8
<system_hint>
工具调用摘要:
- 'phone_call' 调用了 3 次
- Xfinity:3 次(已达限制)

约束检查:
- 不能再给 Xfinity 打电话
</system_hint>

✅ 优势

  • 复杂度:O(n) → O(1)
  • 模型直接使用聚合信息
  • 无需扫描或计数

📋 四种 System Hint 类型

  1. 任务规划

    1
    2
    TODO: [✅] 致电客服
    [ ] 致电保留部门
  2. 侧信道信息

    1
    [2025-06-25 11:00:20] 用户消息
  3. 环境状态

    1
    2
    当前目录:/home/ubuntu
    操作系统:Ubuntu 24.04
  4. LLM 生成的摘要

    1
    2
    对话摘要:
    用户想要 79 美元的 Xfinity 套餐,保留所有当前功能

方法 3:外化学习(知识库)

🚫 永远不要直接在知识库中存储原始案例

直接存储未经提炼的对话/案例会导致不完整检索和错误结论。

🐱 案例 1:猫计数问题

场景:100 个案例:90 只黑猫,10 只白猫(全部独立)
问题:”比例是多少?”

原始存储问题

  • Top-k=20 只检索部分案例
  • 不完整样本 → 错误推断

提炼方法

1
2
"总共 100 只猫:
90 只黑猫(90%),10 只白猫(10%)"

→ 单次检索,准确!

💼 案例 2:折扣规则错误

场景:3 个案例:退伍军人 John ✅、医生 Sarah ✅、教师 Mike ❌
问题:”我是护士,有折扣吗?”

原始存储问题

  • “护士” ≈ “医生” → 仅检索 Sarah
  • 案例 A、C 遗漏 → 错误推断

提炼方法

1
2
"Xfinity 折扣:仅
退伍军人和医生符合条件"

→ 完整规则,正确答案!

主动知识提炼:压缩即理解

核心原则:现在投入额外计算(LLM 摘要)→ 以后节省推理 token

💡 为什么要提炼?

原始轨迹(3 次通话)

1
2
3
4
5
10:00 致电 Xfinity(账单)
10:30 致电 Xfinity(转接)
11:00 致电 Xfinity(协商)

模型必须扫描 O(n) 来计数

提炼后

1
2
3
"致电 Xfinity 3 次(已达限制)"

O(1) 查找,立即识别

📊 三个层次的知识提炼

  1. 统计聚合

    • 100 个案例 → “90% 黑色,10% 白色”
    • 降低密度,改善检索
  2. 规则提炼

    • 3 个案例 → “仅退伍军人和医生”
    • 从案例到抽象规则的飞跃
  3. 结构化知识提取

    • RAPTOR:树状摘要
    • GraphRAG:实体网络

三种 Agent 持续学习范式总结

范式 1:后训练

  • 核心发现:SFT 记忆,RL 泛化
  • SFT:固化格式和协议,样本效率高
  • RL:学习可迁移策略,分布外鲁棒

范式 2:上下文学习

  • 核心洞察:上下文 ≠ 记忆
  • 本质:注意力类似于 RAG
  • 方法:system hints、显式摘要

范式 3:外化学习

3.1 知识库

  • 优势:利用额外计算进行知识提取
  • 方法:上下文检索、RAPTOR 层次摘要

3.2 工具生成

  • 优势:编码流程,高效、可靠、可组合
  • 哲学:最小预定义 + 最大自我进化(Alita)

总结

Part I: 实时交互

边听边想,边想边说

问题:串行架构:VAD 等待 → ASR 转写 → LLM 思考 → TTS 说话

解决方案

  • 感知:流式模型产生上下文感知转写和声学事件
  • 思考:事件驱动,可以边听边想、边想边说

💡 示例:电信套餐查询 - 无尴尬沉默

1
2
3
4
5
O: "我应该订这个套餐吗?"
T₁: (快速 0.5 秒) 需要更多时间
A₁: "让我查看详情..."
T₂: (慢速 5 秒) 分析套餐...
A₂: "可以,每月省 30 美元!"

Part II: 从经验中学习

边做边学

问题

  • 固定模型部署后无法从经验中学习
  • 大世界:业务流程动态且非公开

解决方案

  • 后训练:通过 RL 从交互中学习
  • 上下文:通过 system hints 聚合信息
  • 外化:提炼知识、生成工具

💡 示例:信用卡验证

1
2
3
4
第 1 次通话:❌ 没有信用卡后 4 位数字
学习:存储"Xfinity 需要后 4 位..."
第 2 次通话:✅ 主动请求
→ 基于经验的改进,样本效率高

“We want AI agents that can discover like we can, not which contain what we have discovered.”
— Richard Sutton


关于 Pine AI

Pine AI 是一个 AI Agent,可以打电话和使用电脑来完成任务。作为你的个人助理,代表你联系客服,帮助你:

  • 💰 降低账单(电信、水电等平均节省 20%)
  • ❌ 取消订阅
  • 📋 提交投诉
  • 💵 获取赔偿和退款
  • ✈️ 旅行协助

成绩:

  • 平均节省时间:270 分钟
  • 成功率:93%
  • 为消费者节省:300 万美元+

🔗 了解更多:19pine.ai


查看完整演讲 Slides

Comments