<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>我的博客</title>
    <link>https://brookwillow.github.io/</link>
    <description>Recent content on 我的博客</description>
    <generator>Hugo</generator>
    <language>zh</language>
    <lastBuildDate>Wed, 20 May 2026 09:00:00 +0800</lastBuildDate>
    <atom:link href="https://brookwillow.github.io/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>关于我</title>
      <link>https://brookwillow.github.io/about/</link>
      <pubDate>Wed, 20 May 2026 09:00:00 +0800</pubDate>
      <guid>https://brookwillow.github.io/about/</guid>
      <description>了解博主和这个博客的故事</description>
      <content:encoded><![CDATA[<h2 id="-你好我是博主">👋 你好，我是博主</h2>
<p>欢迎来到我的个人博客！</p>
<p>我是一名热爱技术的开发者，平时喜欢钻研新技术、阅读、以及探索这个有趣的世界。</p>
<h2 id="-技术栈">🛠️ 技术栈</h2>
<p>我主要使用以下技术：</p>
<ul>
<li><strong>后端</strong>：Go、Python、Java</li>
<li><strong>前端</strong>：Vue.js、React、TypeScript</li>
<li><strong>数据库</strong>：MySQL、PostgreSQL、Redis</li>
<li><strong>工具</strong>：Docker、Kubernetes、Git</li>
</ul>
<h2 id="-兴趣爱好">📖 兴趣爱好</h2>
<p>除了写代码，我还喜欢：</p>
<ul>
<li>📚 阅读 — 技术书籍和人文社科都读</li>
<li>🎵 音乐 — 听各种风格的音乐</li>
<li>🚶 徒步 — 周末喜欢去郊外走走</li>
<li>☕ 咖啡 — 每天必备</li>
</ul>
<h2 id="-联系方式">📬 联系方式</h2>
<p>如果你想和我交流，可以通过以下方式找到我：</p>
<ul>
<li><strong>GitHub</strong>：<a href="https://github.com/yourusername">github.com/yourusername</a></li>
<li><strong>Twitter</strong>：<a href="https://twitter.com/yourusername">@yourusername</a></li>
<li><strong>邮箱</strong>：your@email.com</li>
</ul>
<h2 id="关于本博客">关于本博客</h2>
<p>本博客使用 <a href="https://gohugo.io/">Hugo</a> 静态网站生成器构建，采用 <a href="https://github.com/adityatelange/hugo-PaperMod">PaperMod</a> 主题。</p>
<p>托管在个人服务器上，所有文章均为原创，转载请注明出处。</p>
<hr>
<p><em>感谢你花时间了解我，希望我的博客对你有所帮助！</em></p>
]]></content:encoded>
    </item>
    <item>
      <title>智能语音架构演进史以及Agent时代语音架构新思考</title>
      <link>https://brookwillow.github.io/posts/%E6%99%BA%E8%83%BD%E8%AF%AD%E9%9F%B3%E6%9E%B6%E6%9E%84%E6%BC%94%E8%BF%9B%E5%8F%B2%E4%BB%A5%E5%8F%8Aagent%E6%97%B6%E4%BB%A3%E8%AF%AD%E9%9F%B3%E6%9E%B6%E6%9E%84%E6%96%B0%E6%80%9D%E8%80%83/</link>
      <pubDate>Wed, 28 Jan 2026 00:03:51 +0000</pubDate>
      <guid>https://brookwillow.github.io/posts/%E6%99%BA%E8%83%BD%E8%AF%AD%E9%9F%B3%E6%9E%B6%E6%9E%84%E6%BC%94%E8%BF%9B%E5%8F%B2%E4%BB%A5%E5%8F%8Aagent%E6%97%B6%E4%BB%A3%E8%AF%AD%E9%9F%B3%E6%9E%B6%E6%9E%84%E6%96%B0%E6%80%9D%E8%80%83/</guid>
      <description>&lt;h1 id=&#34;智能语音架构演进史与-agent-时代新思考&#34;&gt;智能语音架构演进史与 Agent 时代新思考&lt;/h1&gt;
&lt;p&gt;从科幻电影“Her”与漫威中的“贾维斯” 开始，人类一直幻想拥有一个可以像人一样的无所不能但毫无抱怨的智能助手。为此，业界前仆后继，始终在探索使用各种技术逼近这种“能听懂、会执行”的理想形态：从贝尔实验室在 1950 年代实现对 0–9 数字的识别，到 Siri、Alexa 等面向指令式需求的智能语音助手，再到国内小爱、小度、天猫精灵等覆盖生态设备控制的产品，都是这一路探索的里程碑。&lt;/p&gt;</description>
      <content:encoded><![CDATA[<h1 id="智能语音架构演进史与-agent-时代新思考">智能语音架构演进史与 Agent 时代新思考</h1>
<p>从科幻电影“Her”与漫威中的“贾维斯” 开始，人类一直幻想拥有一个可以像人一样的无所不能但毫无抱怨的智能助手。为此，业界前仆后继，始终在探索使用各种技术逼近这种“能听懂、会执行”的理想形态：从贝尔实验室在 1950 年代实现对 0–9 数字的识别，到 Siri、Alexa 等面向指令式需求的智能语音助手，再到国内小爱、小度、天猫精灵等覆盖生态设备控制的产品，都是这一路探索的里程碑。</p>
<p>如今，站在 2025 年这个时间节点，距离 ChatGPT 发布已三年，生成式 AI 的进展足以全面颠覆既往的智能语音助手实现思路，并将其能力推向更广阔的空间。</p>
<p>因此，我们有必要回顾智能语音技术架构的发展脉络，“以往之可鉴”帮助我们在大模型、Agent 等技术仍处混沌之际抓住核心抓手，方能“知未来之可追”。</p>
<p>回顾来看，智能语音架构的演进大致可分为五个阶段：信号初探、统计时代、深度神经网络时代、Transformer与预训练时代，以及大模型与Agent时代。下文将依此回顾各阶段的代表性架构及其主要特征。</p>
<p>需要强调的是，本文仅为一家之言，抛砖引玉，仅供参考。</p>
<h2 id="语音架构抽象">语音架构抽象</h2>
<p>为便于讨论，本文可以将一个智能语音系统大概的抽象为四个角色模块：<strong>声学模块</strong>、<strong>理解模块</strong>、<strong>决策模块</strong>、<strong>执行模块</strong>。这个抽象并不严谨，在实际的工程架构实现中也不会有严格的模块对应（很多情况下，可能多个角色糅合在一起，也可能一个角色被拆成多个模块实现），它是一种概念上的划分，能够帮助我们更清晰的看到不同的技术潮流下各个环节的演进过程和分分合合</p>
<p><img alt="1769058208023" loading="lazy" src="/posts/%E6%99%BA%E8%83%BD%E8%AF%AD%E9%9F%B3%E6%9E%B6%E6%9E%84%E6%BC%94%E8%BF%9B%E5%8F%B2%E4%BB%A5%E5%8F%8Aagent%E6%97%B6%E4%BB%A3%E8%AF%AD%E9%9F%B3%E6%9E%B6%E6%9E%84%E6%96%B0%E6%80%9D%E8%80%83/images/1769058208023.png"></p>
<h3 id="1-声学">1) 声学</h3>
<p>负责把物理世界的连续的音频信号稳定地转成离散的文本，负责“听到、听清”，是语音交互的“入口”。</p>
<ul>
<li>物理信号 -&gt; 文本</li>
<li><strong>典型能力</strong>：唤醒（KWS）、语音活动检测（VAD）、回声抵消/降噪/去混响（AEC/NS/DR）、麦阵与波束形成（可选）、语音识别（ASR）。</li>
</ul>
<h3 id="2-理解">2) 理解</h3>
<p>负责把计算机无法理解的自然语言文本 转成 计算机可以理解的结构化语义，负责 “听懂”，让系统“知道用户想要什么”。</p>
<ul>
<li>文本 -&gt; 语义</li>
<li><strong>典型能力</strong>：意图识别（Intent）、槽位/实体抽取（Slot/NER）、归一化（时间/地点/数值）、指代消解与上下文状态更新、多轮语义融合。</li>
</ul>
<h3 id="3-决策">3) 决策</h3>
<p>负责在用户意图与条件约束下做“下一步做什么”的执行选择，负责“会想”，给出符合用户意图的决策选择并给出对应的回复文本。</p>
<ul>
<li>语义 -&gt; 计划</li>
<li><strong>典型形态</strong>：传统对话管理（状态机/规则/策略学习）、Skill（路由/仲裁/API调用/NLG生成）、 LLM-based Agent（Plan/工具选择）等</li>
</ul>
<h3 id="4-执行">4) 执行</h3>
<p>负责把决策结果落到具体工具/API/TTS播报，负责“会做”，给用户实际的可交互响应。</p>
<ul>
<li>计划 -&gt; 动作</li>
<li><strong>典型能力</strong>：工具/API调用、TTS播报、鉴权与权限校验、参数校验、错误处理与重试。</li>
</ul>
<h2 id="五个时代">五个时代</h2>
<h3 id="时代一信号初探1950s1980s">时代一：信号初探（1950s–1980s）</h3>
<p>这个时期的探索主要集中在声学信号上，主要是实验室研发人员开始对数字化的音频信号进行了一些列的研究，初步总结出了一些特征，以及使用这些特征进行规则建模</p>
<p><img alt="1769074469927" loading="lazy" src="/posts/%E6%99%BA%E8%83%BD%E8%AF%AD%E9%9F%B3%E6%9E%B6%E6%9E%84%E6%BC%94%E8%BF%9B%E5%8F%B2%E4%BB%A5%E5%8F%8Aagent%E6%97%B6%E4%BB%A3%E8%AF%AD%E9%9F%B3%E6%9E%B6%E6%9E%84%E6%96%B0%E6%80%9D%E8%80%83/images/1769074469927.png"></p>
<p><img alt="1769074505648" loading="lazy" src="/posts/%E6%99%BA%E8%83%BD%E8%AF%AD%E9%9F%B3%E6%9E%B6%E6%9E%84%E6%BC%94%E8%BF%9B%E5%8F%B2%E4%BB%A5%E5%8F%8Aagent%E6%97%B6%E4%BB%A3%E8%AF%AD%E9%9F%B3%E6%9E%B6%E6%9E%84%E6%96%B0%E6%80%9D%E8%80%83/images/1769074505648.png"></p>
<h4 id="架构声音信号特征提取和规则匹配">架构：声音信号特征提取和规则匹配</h4>
<p><img alt="1769082666280" loading="lazy" src="/posts/%E6%99%BA%E8%83%BD%E8%AF%AD%E9%9F%B3%E6%9E%B6%E6%9E%84%E6%BC%94%E8%BF%9B%E5%8F%B2%E4%BB%A5%E5%8F%8Aagent%E6%97%B6%E4%BB%A3%E8%AF%AD%E9%9F%B3%E6%9E%B6%E6%9E%84%E6%96%B0%E6%80%9D%E8%80%83/images/1769082666280.png"></p>
<p>当前时代的初步结构是 “信号接收→特征粗提取→模板比对→固定检出” 的声学模块，无独立语义理解以及后续流程模块，本质是“声音与预设模板的一对一映射”。</p>
<ul>
<li><strong>信号预处理</strong>：以简单滤波、增益控制为主，缺少系统化降噪/去混响能力；</li>
<li><strong>典型特征</strong>：多带通滤波器能量轨迹、短时能量与过零率、倒谱/线性预测（LPC）等谱包络特征</li>
<li><strong>识别核心</strong>：以模板匹配为主（多为孤立词/小词表）；DTW（“伸缩”对齐）在 1970 年代逐步成为常用的时序对齐方法，用于将输入语音与模板进行对齐与比对；</li>
</ul>
<h4 id="代表案例与瓶颈">代表案例与瓶颈</h4>
<h5 id="里程碑"><strong>里程碑</strong>：</h5>
<p>1952 年贝尔实验室的 Audrey 系统，能识别特定人说的 0–9 十个数字，但需要在安静环境、受控语速下运行。</p>
<h5 id="痛点"><strong>痛点</strong>：</h5>
<ul>
<li>只能识别孤立词（通常仅几十词规模，&lt;100）</li>
<li>换个人说、换个环境就不行了</li>
<li>无法理解连续语音，更别提对话</li>
</ul>
<h3 id="时代二统计时代1990s-2014">时代二：统计时代（1990s-2014）</h3>
<p>随着时代进步，算力得到了很大的提升，人们对于语音的理解也更加深入，这时候开始使用基于数据统计的概率模型来进行语音各个环节的处理，计算&quot;这段语音最可能对应哪些音素/词&quot;，而不是死板的匹配。</p>
<p><img alt="1769083880712" loading="lazy" src="/posts/%E6%99%BA%E8%83%BD%E8%AF%AD%E9%9F%B3%E6%9E%B6%E6%9E%84%E6%BC%94%E8%BF%9B%E5%8F%B2%E4%BB%A5%E5%8F%8Aagent%E6%97%B6%E4%BB%A3%E8%AF%AD%E9%9F%B3%E6%9E%B6%E6%9E%84%E6%96%B0%E6%80%9D%E8%80%83/images/1769083880712.png"></p>
<p>这时确立了经典的流水线架构：特征提取 → 声学模型 → 语言模型 → 语义理解 → 合成输出。</p>
<h4 id="架构模块化分工的工厂流水线">架构：模块化分工的&quot;工厂流水线&quot;</h4>
<p><img alt="1769083880548" loading="lazy" src="/posts/%E6%99%BA%E8%83%BD%E8%AF%AD%E9%9F%B3%E6%9E%B6%E6%9E%84%E6%BC%94%E8%BF%9B%E5%8F%B2%E4%BB%A5%E5%8F%8Aagent%E6%97%B6%E4%BB%A3%E8%AF%AD%E9%9F%B3%E6%9E%B6%E6%9E%84%E6%96%B0%E6%80%9D%E8%80%83/images/1769083880548.png"></p>
<p>确立&quot;特征工程→声学模型→语言模型→语义理解→语音合成&quot;的流水线架构，各模块独立训练与优化，类似&quot;工厂组装线&quot;各司其职。<strong>核心特征是从规则匹配转向概率统计驱动，但专家经验仍主导框架设计（特征工程、模型拓扑）</strong>，实现了&quot;连续语音识别+基础语义理解&quot;的突破。</p>
<ul>
<li><strong>特征提取层</strong>：人工设计梅尔频率倒谱系数（MFCC），模拟人耳对频率的感知，通过预加重、分帧、FFT提取“声学指纹”；</li>
<li><strong>声学模型</strong>：高斯混合模型（GMM）+隐马尔可夫模型（HMM）组合——GMM计算声学特征与音素的匹配概率，HMM处理音素序列的时序转移（解决连续语音的“音素衔接”问题）；</li>
<li><strong>语言模型</strong>：基于N-gram算法，通过统计大规模文本中词序列共现概率，对声学模型的多个候选结果排序，选出最符合语言习惯的词序列（如“苹果”“平果”）；</li>
<li><strong>语义理解（NLU）</strong>：大量依赖人工特征工程（关键词、词性、规则模板），意图识别采用支持向量机（SVM）、朴素贝叶斯等浅层机器学习分类器，槽位提取使用条件随机场（CRF）进行序列标注或基于规则的模式匹配，需要为每个领域（天气、音乐、闹钟）单独标注训练数据；</li>
<li><strong>语音合成（TTS）</strong>：采用“片段拼接合成”，将预录的语音片段按文本序列拼接，音色机械（MOS评分＜3.5）。</li>
</ul>
<h4 id="示例流程">示例流程：</h4>
<p>下面用一个简单的例子来理解统计时代的语音识别流程。假设用户说出&quot;今天天气怎么样&quot;，系统如何把将声音识别成文字并最终执行呢？</p>
<h5 id="步骤1提取声音特征mfcc"><strong>步骤1：提取声音特征（MFCC）</strong></h5>
<p>麦克风录下你的声音波形，系统将其切成一小段一小段（每段约0.025秒），用MFCC算法提取每段的&quot;声学指纹&quot;——类似给每小段声音打上特征标签，模拟人耳对声音的感知方式。</p>
<p><strong>输出</strong>：一串特征向量序列，可以理解为&quot;这段声音的数学描述&quot;。</p>
<h5 id="步骤2声学模型识别音素gmm-hmm"><strong>步骤2：声学模型识别音素（GMM-HMM）</strong></h5>
<p>系统用声学模型（GMM-HMM）将特征序列匹配到拼音音素：</p>
<ul>
<li><strong>GMM（高斯混合模型）</strong>：描述每个音素（如&quot;tian&quot;）可能对应的特征分布（考虑不同人的音色差异）</li>
<li><strong>HMM（隐马尔可夫模型）</strong>：处理音素的时序关系（如&quot;天气&quot;的发音是&quot;tian&quot;和&quot;qi&quot;连在一起）</li>
</ul>
<p>系统通过概率计算，找到最可能的拼音序列：<code>jin-tian-tian-qi-zen-me-yang</code></p>
<h5 id="步骤3语言模型纠错n-gram"><strong>步骤3：语言模型纠错（N-gram）</strong></h5>
<p>声学模型可能给出多个候选：</p>
<ul>
<li>&ldquo;今天 天气 怎么样&rdquo;</li>
<li>&ldquo;今天 天齐 怎么样&rdquo;（发音相似但不常见）</li>
<li>&ldquo;金田 天气 怎么样&rdquo;（发音接近但罕见）</li>
</ul>
<p>语言模型通过统计大量文本数据，发现&quot;今天+天气&quot;的组合出现频率远高于&quot;今天+天齐&quot;，从而选择最符合语言习惯的结果。</p>
<h5 id="步骤4语义理解nlu"><strong>步骤4：语义理解（NLU）</strong></h5>
<p>ASR得到文本 <code>&quot;今天天气怎么样？&quot;</code> 后，需要进一步理解用户意图，将文本转为结构化语义。统计时代的NLU主要用以下方法：</p>
<p><strong>4.1 意图识别（Intent Classification）</strong></p>
<p>通过模式匹配或浅层机器学习（如SVM、朴素贝叶斯）判断用户意图：</p>
<ul>
<li>特征工程：提取关键词（&ldquo;天气&rdquo;、&ldquo;怎么样&rdquo;）、词性、N-gram特征</li>
<li>分类器训练：用标注数据训练分类器，将文本映射到预定义意图</li>
<li>结果：识别为 <code>QUERY_WEATHER</code> 意图</li>
</ul>
<p><strong>4.2 槽位提取（Slot Filling）</strong></p>
<p>提取关键信息，常用方法：</p>
<ul>
<li><strong>基于规则</strong>：模式匹配（如正则表达式识别&quot;今天&quot;为时间）</li>
<li><strong>条件随机场（CRF）</strong>：序列标注模型，学习词与词之间的依赖关系</li>
</ul>
<p>提取结果：</p>
<ul>
<li>时间槽（time）：<code>今天</code></li>
</ul>
<p><strong>4.3 结构化输出</strong></p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-json" data-lang="json"><span style="display:flex;"><span>{
</span></span><span style="display:flex;"><span>  <span style="color:#f92672">&#34;intent&#34;</span>: <span style="color:#e6db74">&#34;QUERY_WEATHER&#34;</span>,
</span></span><span style="display:flex;"><span>  <span style="color:#f92672">&#34;slots&#34;</span>: {
</span></span><span style="display:flex;"><span>    <span style="color:#f92672">&#34;time&#34;</span>: <span style="color:#e6db74">&#34;今天&#34;</span>
</span></span><span style="display:flex;"><span>  }
</span></span><span style="display:flex;"><span>}
</span></span></code></pre></div><h5 id="步骤5决策与执行"><strong>步骤5：决策与执行</strong></h5>
<p>系统根据结构化语义调用天气服务API，获取结果后用TTS（语音合成）播报：&ldquo;今天北京晴，温度15-25度。&rdquo;</p>
<h4 id="代表案例与瓶颈-1">代表案例与瓶颈</h4>
<h5 id="里程碑-1"><strong>里程碑</strong>：</h5>
<ul>
<li>1997年 Dragon NaturallySpeaking：首个消费级连续语音识别软件，开启PC端语音输入</li>
<li>2008年 Google Voice Search：移动端语音搜索起点，语音从实验室走向大众</li>
<li>2011年 Siri：首次让语音助手进入千万部手机（设备端唤醒 + 云端识别）</li>
<li>2014年 Amazon Echo：7麦克风阵列实现5-10米远场唤醒，从手机走向客厅</li>
</ul>
<h5 id="痛点-1"><strong>痛点</strong>：</h5>
<ul>
<li>模块割裂，误差层层累积（声学错了，后续模块无法修正）</li>
<li>人工特征工程依赖专家经验，泛化能力弱（换个说法可能识别不出）</li>
<li>冷启动困难：新领域需要大量人工标注和规则编写</li>
<li>无法处理复杂语义：多意图、嵌套逻辑、隐含信息等</li>
<li>封闭生态，功能全靠官方迭代</li>
</ul>
<h3 id="时代三深度神经网络时代2015-2018">时代三：深度神经网络时代（2015-2018）**</h3>
<p>这个阶段有两大核心特征：一是用深度神经网络逐个替换传统流水线中的人工设计模块，实现&quot;模块级端到端化&quot;——每个模块内部从特征到输出可学习，但模块间仍需显式对接；二是决策模块从封闭的内置功能转向开放的Skills生态，开发者可独立构建和发布技能，推动语音系统从&quot;功能产品&quot;向&quot;平台生态&quot;转变。
<img alt="1769083880813" loading="lazy" src="/posts/%E6%99%BA%E8%83%BD%E8%AF%AD%E9%9F%B3%E6%9E%B6%E6%9E%84%E6%BC%94%E8%BF%9B%E5%8F%B2%E4%BB%A5%E5%8F%8Aagent%E6%97%B6%E4%BB%A3%E8%AF%AD%E9%9F%B3%E6%9E%B6%E6%9E%84%E6%96%B0%E6%80%9D%E8%80%83/images/1769083880813.png"></p>
<h4 id="架构神经网络栈的模块化替换">架构：神经网络栈的模块化替换</h4>
<p><img alt="1769083880550" loading="lazy" src="/posts/%E6%99%BA%E8%83%BD%E8%AF%AD%E9%9F%B3%E6%9E%B6%E6%9E%84%E6%BC%94%E8%BF%9B%E5%8F%B2%E4%BB%A5%E5%8F%8Aagent%E6%97%B6%E4%BB%A3%E8%AF%AD%E9%9F%B3%E6%9E%B6%E6%9E%84%E6%96%B0%E6%80%9D%E8%80%83/images/1769083880550.png"></p>
<p>从&quot;人工特征+统计模型&quot;升级为&quot;端到端神经网络栈&quot;，但整体架构仍保持&quot;ASR → NLU → DM → TTS&quot;的流水线形态，各模块独立训练与优化。</p>
<ul>
<li><strong>远场语音前端成熟化</strong>：麦克风阵列 + DOA方向估计 + 波束形成（BF）+ AEC/NS/DR（回声抵消/噪声抑制/去混响）形成完整解决方案，解决远距离、强噪声、混响以及多人同时说话的&quot;鸡尾酒效应&quot;问题，显著提升客厅/车载等复杂环境下的识别稳定性；</li>
<li><strong>ASR模块级端到端</strong>：基于LSTM/RNN的深度神经网络让ASR从&quot;MFCC特征→GMM声学→HMM时序→N-gram解码&quot;简化为音频→文本的单一神经网络，神经网络自动学习音频与文本的对齐关系，WER大幅下降；循环神经网络开始探索流式识别；</li>
<li><strong>唤醒词检测（KWS）</strong>：DNN/CNN等深度神经网络替代传统GMM，降低误唤醒和漏唤醒率，支持多唤醒词；</li>
<li><strong>NLU初步神经化</strong>：BiLSTM/CNN开始用于意图分类与槽位抽取，但仍依赖大量标注数据，跨域泛化能力有限；</li>
<li><strong>决策模块生态化突破</strong>：从封闭的内置动作映射（Intent→Action）转向开放的Skills/Actions开发生态，第三方开发者可独立定义意图、构建服务并发布技能，极大推动了语音系统从&quot;功能产品&quot;向&quot;平台生态&quot;的转变；</li>
<li><strong>神经TTS起步</strong>：基于Seq2Seq（LSTM + Attention）的端到端神经网络实现文本→梅尔谱的端到端建模，配合深度卷积网络声码器，自然度首次接近真人（MOS &gt;4.0），但推理成本高。</li>
</ul>
<h4 id="示例流程-1">示例流程：</h4>
<p>同样以&quot;今天天气怎么样&quot;为例，看看深度神经网络时代相比统计时代有哪些变化：</p>
<h5 id="步骤1远场音频预处理"><strong>步骤1：远场音频预处理</strong></h5>
<p>用户在5米外说话，麦克风阵列采集多路音频信号，通过波束形成（BF）锁定说话方向，AEC/NS/DR模块去除回声、噪声和混响，输出干净的单通道音频。</p>
<h5 id="步骤2端到端asr识别"><strong>步骤2：端到端ASR识别</strong></h5>
<p>基于LSTM/RNN的深度神经网络直接将音频波形转为文本 <code>&quot;今天天气怎么样&quot;</code>。神经网络内部自动完成特征提取、声学建模、语言建模的联合优化，不再需要MFCC→GMM→HMM→N-gram的多步骤流水线。</p>
<h5 id="步骤3神经化nlu"><strong>步骤3：神经化NLU</strong></h5>
<p>BiLSTM/CNN神经网络对文本进行意图分类和槽位抽取：</p>
<ul>
<li><strong>意图识别</strong>：神经网络输出 <code>QUERY_WEATHER</code>（置信度0.95）</li>
<li><strong>槽位抽取</strong>：序列标注模型识别 <code>今天</code> 为时间槽</li>
</ul>
<h5 id="步骤4skill路由与决策"><strong>步骤4：Skill路由与决策</strong></h5>
<p>系统将意图路由到天气Skill，Skill内部通过人工编写的规则逻辑处理：</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-python" data-lang="python"><span style="display:flex;"><span><span style="color:#66d9ef">if</span> intent <span style="color:#f92672">==</span> <span style="color:#e6db74">&#34;QUERY_WEATHER&#34;</span>:
</span></span><span style="display:flex;"><span>    location <span style="color:#f92672">=</span> get_user_location()  <span style="color:#75715e"># 获取用户位置</span>
</span></span><span style="display:flex;"><span>    weather_data <span style="color:#f92672">=</span> call_weather_api(time<span style="color:#f92672">=</span><span style="color:#e6db74">&#34;今天&#34;</span>, location<span style="color:#f92672">=</span>location)
</span></span><span style="display:flex;"><span>    response <span style="color:#f92672">=</span> generate_response(weather_data)  <span style="color:#75715e"># 模板填槽</span>
</span></span></code></pre></div><p><strong>与统计时代对比</strong>：从封闭的内置功能转向开放的Skills生态，但决策逻辑仍需人工编写。</p>
<h5 id="步骤5tts语音合成"><strong>步骤5：TTS语音合成</strong></h5>
<p>基于Seq2Seq（LSTM + Attention）神经网络将回复文本 <code>&quot;今天北京晴，温度15-25度&quot;</code> 转为梅尔频谱，再通过深度卷积网络声码器合成自然的语音输出。</p>
<h4 id="消费级落地与瓶颈">消费级落地与瓶颈</h4>
<p><strong>里程碑</strong>：</p>
<ul>
<li>2015-2016 年各大厂商推出深度学习版ASR，WER相比统计时代下降30-50%</li>
<li>远场语音产品大规模出货（智能音箱、车载系统）</li>
<li>2015年 Alexa Skills Kit发布，开放第三方技能开发，从封闭的内置功能转向开放平台生态，开发者数量快速增长，极大丰富了语音助手的应用场景</li>
</ul>
<p><strong>痛点</strong>：</p>
<ul>
<li>RNN/LSTM训练效率低，难以处理超长序列</li>
<li>NLU仍依赖大量人工标注，冷启动成本高</li>
<li>跨任务迁移能力弱，每个新场景需重新训练</li>
<li>多轮对话仅支持槽位继承，不支持上下文文本继承和对话延续：基于规则/状态机的对话管理只能实现简单的槽位复用，无法理解前文语义和进行连贯对话</li>
<li>Skill决策逻辑需人工编写规则，对话生成（NLG）仍依赖模板填槽，难以应对灵活多变的交互需求</li>
</ul>
<hr>
<h3 id="时代四transformer与预训练时代2019-2022">时代四：Transformer与预训练时代（2019-2022）</h3>
<p>Transformer架构的引入带来了<strong>架构范式</strong>的根本性变革：从RNN的序列递归转向全局自注意力，实现了并行训练、长距离依赖建模与大规模预训练的可能性。这一阶段不仅是算法升级，更是整个系统能力的质的飞跃。</p>
<p>预训练+微调范式成为标准，开发者无需从头训练大模型，只需在预训练模型基础上用少量数据微调即可获得优秀性能，极大降低了技术门槛，让小公司和个人也能参与NLP/语音技术开发，堪称NLP领域的&quot;ImageNet时刻&quot;。</p>
<p><img alt="1769083880612" loading="lazy" src="/posts/%E6%99%BA%E8%83%BD%E8%AF%AD%E9%9F%B3%E6%9E%B6%E6%9E%84%E6%BC%94%E8%BF%9B%E5%8F%B2%E4%BB%A5%E5%8F%8Aagent%E6%97%B6%E4%BB%A3%E8%AF%AD%E9%9F%B3%E6%9E%B6%E6%9E%84%E6%96%B0%E6%80%9D%E8%80%83/images/1769083880612.png"></p>
<h4 id="架构预训练微调的新范式">架构：预训练+微调的新范式</h4>
<p><img alt="1769083881234" loading="lazy" src="/posts/%E6%99%BA%E8%83%BD%E8%AF%AD%E9%9F%B3%E6%9E%B6%E6%9E%84%E6%BC%94%E8%BF%9B%E5%8F%B2%E4%BB%A5%E5%8F%8Aagent%E6%97%B6%E4%BB%A3%E8%AF%AD%E9%9F%B3%E6%9E%B6%E6%9E%84%E6%96%B0%E6%80%9D%E8%80%83/images/1769083881234.png"></p>
<p>从&quot;单任务监督训练&quot;转向&quot;大规模无监督预训练 + 下游任务微调&quot;，Transformer成为语义理解和生成模块（ASR/NLU/NLG）的统一骨干架构，而远场前端、唤醒词检测等信号处理模块仍沿用深度神经网络时代的技术。<strong>整体仍保持&quot;ASR → NLU → DM → TTS&quot;的流水线形态，核心变化是模块内部算法从RNN/LSTM升级为Transformer</strong>。</p>
<ul>
<li><strong>自注意力机制引入ASR</strong>：Conformer（2020）将卷积与自注意力结合，取代RNN的序列递归，实现并行训练与长距离依赖建模，成为ASR新标准；流式Transducer架构成熟，设备端ASR实现&lt;500ms首字延迟；</li>
<li><strong>预训练NLU</strong>：BERT/RoBERTa/ERNIE等在意图分类、槽位抽取上大幅提升F1（典型提升10-15个百分点），少样本学习能力显著增强；</li>
<li><strong>生成式NLG</strong>：T5/BART/mT5/GPT系列用于对话生成，从模板填槽升级为灵活的自然语言生成；</li>
<li><strong>神经TTS工业化</strong>：声学模型引入Transformer（如FastSpeech从自回归转向非自回归并行生成），声码器引入GAN（生成对抗网络，如HiFi-GAN通过对抗训练实现高质量并行生成），两者结合让实时合成成为可能（RTF&lt;0.1），相比深度神经网络时代WaveNet的自回归慢速生成实现质量与速度的平衡，多说话人/情感/韵律可控性大幅提升；</li>
<li><strong>多模态探索</strong>：语音-文本联合预训练（如Wav2Vec 2.0）开始尝试，为后续多模态大模型铺路；</li>
<li><strong>平台工具链成熟</strong>：Alexa Skills Kit（ASK SDK/SMAPI/ASK CLI）、AVS Device SDK生态完善，开发者可快速构建并分发技能。</li>
</ul>
<h4 id="示例流程-2">示例流程：</h4>
<p>继续以&quot;今天天气怎么样&quot;为例，看看预训练时代相比深度神经网络时代的核心变化：</p>
<h5 id="步骤1远场音频预处理-1"><strong>步骤1：远场音频预处理</strong></h5>
<p>与深度神经网络时代相同，通过麦克风阵列、波束形成、AEC/NS/DR处理后输出干净音频。</p>
<h5 id="步骤2conformer-asr识别"><strong>步骤2：Conformer ASR识别</strong></h5>
<p>基于Conformer（卷积+自注意力）的神经网络将音频转为文本 <code>&quot;今天天气怎么样&quot;</code>。相比LSTM/RNN：</p>
<ul>
<li>自注意力机制实现全局并行建模，训练效率大幅提升</li>
<li>长距离依赖建模能力更强，识别准确率进一步提高</li>
</ul>
<h5 id="步骤3预训练nlu理解"><strong>步骤3：预训练NLU理解</strong></h5>
<p>使用预训练BERT模型进行意图分类和槽位抽取：</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-python" data-lang="python"><span style="display:flex;"><span><span style="color:#75715e"># 开发者只需少量数据微调预训练模型</span>
</span></span><span style="display:flex;"><span>pretrained_model <span style="color:#f92672">=</span> load_bert_pretrained()  <span style="color:#75715e"># 加载预训练模型</span>
</span></span><span style="display:flex;"><span>finetuned_model <span style="color:#f92672">=</span> finetune(pretrained_model, few_shot_data)  <span style="color:#75715e"># 用少量数据微调</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#75715e"># 推理</span>
</span></span><span style="display:flex;"><span>intent <span style="color:#f92672">=</span> finetuned_model<span style="color:#f92672">.</span>classify(<span style="color:#e6db74">&#34;今天天气怎么样&#34;</span>)  <span style="color:#75715e"># QUERY_WEATHER</span>
</span></span><span style="display:flex;"><span>slots <span style="color:#f92672">=</span> finetuned_model<span style="color:#f92672">.</span>extract_slots(<span style="color:#e6db74">&#34;今天天气怎么样&#34;</span>)  <span style="color:#75715e"># {time: &#34;今天&#34;}</span>
</span></span></code></pre></div><h5 id="步骤4skill路由与决策-1"><strong>步骤4：Skill路由与决策</strong></h5>
<p>与深度神经网络时代相同，仍然是基于规则的Skill路由和决策逻辑（这是该时代的瓶颈之一）。</p>
<h5 id="步骤5生成式nlg"><strong>步骤5：生成式NLG</strong></h5>
<p>使用T5/GPT等生成式模型生成自然回复，不再依赖固定模板，从模板填槽升级为灵活的自然语言生成，对话更自然。</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-python" data-lang="python"><span style="display:flex;"><span><span style="color:#75715e"># 深度神经网络时代：模板填槽</span>
</span></span><span style="display:flex;"><span>response <span style="color:#f92672">=</span> <span style="color:#e6db74">&#34;今天</span><span style="color:#e6db74">{location}{weather}</span><span style="color:#e6db74">，温度</span><span style="color:#e6db74">{temp}</span><span style="color:#e6db74">度&#34;</span>  <span style="color:#75715e"># 机械</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#75715e"># 预训练时代：生成式NLG</span>
</span></span><span style="display:flex;"><span>response <span style="color:#f92672">=</span> generate_response(weather_data, style<span style="color:#f92672">=</span><span style="color:#e6db74">&#34;friendly&#34;</span>)  
</span></span><span style="display:flex;"><span><span style="color:#75715e"># &#34;今天北京的天气不错哦，晴天，温度在15到25度之间，适合出门活动~&#34;  # 灵活自然</span>
</span></span></code></pre></div><h5 id="步骤6fastspeech--hifi-gan合成"><strong>步骤6：FastSpeech + HiFi-GAN合成</strong></h5>
<p>声学模型（FastSpeech的Transformer）生成梅尔频谱，声码器（HiFi-GAN的GAN）合成语音，实现实时高质量输出（RTF&lt;0.1），生成的音频更加实时、自然</p>
<h4 id="关键突破与瓶颈">关键突破与瓶颈</h4>
<p><strong>里程碑</strong>：</p>
<ul>
<li>2018年BERT发布，开启NLP领域&quot;ImageNet时刻&quot;，预训练+微调范式大幅降低技术门槛</li>
<li>2020年Conformer论文发布，迅速成为ASR业界标准</li>
<li>预训练模型让NLU冷启动时间从数周缩短至数天，小公司和个人开发者也能快速构建NLU应用</li>
<li>神经TTS达到可商用的实时性与自然度（MOS &gt;4.3）</li>
<li>设备端推理优化让更多能力下沉到边缘</li>
</ul>
<p><strong>瓶颈</strong>：</p>
<ul>
<li>预训练模型仍需大量标注数据微调</li>
<li>跨任务协同仍需人工编排（缺乏自主规划能力）</li>
<li>对话管理（DM）仍是基于规则/状态机，难以处理开放域交互</li>
<li>系统整体仍是&quot;多模块协作&quot;，端到端优化困难</li>
</ul>
<hr>
<h3 id="时代五大模型与agent时代2023-">时代五：大模型与Agent时代（2023-）</h3>
<p>大模型时代并未改变基础模型架构（仍是Transformer），但通过<strong>数据规模和参数量的指数级的扩张</strong>，使模型意外的<strong>涌现出推理能力</strong>。这种涌现推动了语音架构的<strong>范式转变</strong>：从模块化流水线转向<strong>以LLM为中枢的自主Agent系统</strong>。
Agent系统的核心特征在于：<strong>LLM作为推理引擎</strong>（理解意图、规划任务、生成决策）、<strong>工具调用能力</strong>（主动调用API/Skill完成子任务）、<strong>记忆与上下文管理</strong>（维护多轮对话状态）。这一范式目前仍在快速演进中，架构形态尚未定型，但我们仍然看到过去的几年呈现出的三个阶段性方向。</p>
<p>回看 2023 以来的产业实践，大致能看到三条比较常见的方向。它们并不是严格的时间切片，很多能力在并行推进、互相叠加；更重要的是，“流行”只代表阶段性性价比或关注度高，并不保证最后会被证明是最优路线。</p>
<h5 id="趋势一换脑与-scaling-law2023-2024"><strong>趋势一：换脑与 Scaling Law（2023-2024）</strong></h5>
<p>这一阶段一边是<strong>模型侧</strong>继续沿着 Scaling Law 拉数据与算力，把通用能力（语言理解、生成、一定程度的推理）快速抬高；另一边是<strong>应用侧</strong>开始做“换脑”：用 LLM 替代传统 NLU/DM，把原先靠意图/槽位/状态机硬编码的部分，改成“提示词 + 上下文 + 检索/工具”的组合来驱动对话与决策。它确实让开放域对话、长尾表达、复杂指令理解更容易了，但代价也很现实：<strong>时延与成本抬升、输出可控性下降、评测从单点准确率转向端到端任务成功率</strong>，因此工程上往往需要配套的防护与约束（检索增强、结构化输出、规则兜底、权限与风控）。</p>
<h5 id="趋势二多模态统一与-test-time-scaling2024-2025"><strong>趋势二：多模态统一与 Test-Time Scaling（2024-2025）</strong></h5>
<p>在语音交互里，一个显著变化是越来越多团队尝试把“听、想、说”放进同一个模型/同一套表示里：以 <strong>GPT-4o 这类 audio-to-audio</strong> 为代表的端到端形态，让传统 ASR/TTS 的硬边界开始变得可选，而不是必选——这对自然度、实时性与多模态一致性很有吸引力，但也意味着训练数据、在线推理成本、端侧部署与可观测性都要重新算账。与此同时，推理侧出现了另一条路：以 <strong>o1 这类 test-time compute / 思维链增强</strong> 的方法为代表，通过“多想一会儿”（采样、搜索、验证、反思）换取更强的推理与解题能力。它在可验证任务上很亮眼，但是否适合实时语音产品，往往取决于<strong>延迟预算、失败成本和是否能把推理过程产品化</strong>（比如把“慢”变成“更稳”，而不是“更贵”）。</p>
<h5 id="趋势三agentic-system-与强化学习2025-"><strong>趋势三：Agentic System 与强化学习（2025-）</strong></h5>
<p>进一步往前走，行业开始更系统地搭建 Agent：从“回答一句话”转向“把事办成”，强调<strong>计划—执行—反馈—修正</strong>的闭环，把工具调用、记忆/上下文、任务分解、异常恢复、可观测与审计做成一套工程体系。与之配套的训练思路也在演进：在代码、数学等<strong>可验证环境</strong>里，RLVR 等方法带来了可见的收益，为“如何把 Agent 的行为学出来”提供了新抓手。但这条路线的边界同样清晰——现实世界任务往往难以定义可验证奖励，安全与对齐成本高，离线评测与线上灰度也更复杂；因此更像是一场“能力 + 工程 + 机制设计”的综合赛跑，而不是单纯堆模型就能结束的竞赛。</p>
<p><img alt="1769083881235" loading="lazy" src="/posts/%E6%99%BA%E8%83%BD%E8%AF%AD%E9%9F%B3%E6%9E%B6%E6%9E%84%E6%BC%94%E8%BF%9B%E5%8F%B2%E4%BB%A5%E5%8F%8Aagent%E6%97%B6%E4%BB%A3%E8%AF%AD%E9%9F%B3%E6%9E%B6%E6%9E%84%E6%96%B0%E6%80%9D%E8%80%83/images/1769083881235.png"></p>
<h4 id="架构agent-系统--llm-负责规划决策--工具负责确定性执行把对话变成能办成事的闭环">架构：<strong>Agent 系统 = LLM 负责规划决策 + 工具负责确定性执行，把对话变成“能办成事”的闭环。</strong></h4>
<p><img alt="1769083880912" loading="lazy" src="/posts/%E6%99%BA%E8%83%BD%E8%AF%AD%E9%9F%B3%E6%9E%B6%E6%9E%84%E6%BC%94%E8%BF%9B%E5%8F%B2%E4%BB%A5%E5%8F%8Aagent%E6%97%B6%E4%BB%A3%E8%AF%AD%E9%9F%B3%E6%9E%B6%E6%9E%84%E6%96%B0%E6%80%9D%E8%80%83/images/1769083880912.png"></p>
<p>更具体一点，这个“Agent 系统”在大模型时代的模型/模块形态，常见会出现四个方向的重构（并不互斥，也不一定每个产品都需要走到最激进形态）：</p>
<ol>
<li><strong>感知层（ASR）端到端化</strong>：ASR 侧开始更多采用 Whisper 这类端到端模型，甚至在一些形态里被“语音-语言模型（Speech-LLM）/全模态模型”吸收，直接把语音输入映射到语义表示或可执行工具。它能显著降低传统特征工程与多模块耦合，但也会把实时性、在线成本、端侧部署与可观测性问题推到更核心的位置。</li>
<li><strong>理解与决策层（NLU/DM）弱化甚至跳过</strong>：NLU 不再只能是“意图分类+槽位抽取”。常见做法是 <strong>LLM +（轻量微调/对齐）+ 上下文/检索</strong> 来完成理解、澄清、决策；更进一步时，系统可能不显式产出 NLU 结构，而是直接利用大模型的推理能力选择下一步动作（当然，这往往需要结构化输出、约束解码或规则兜底来保证可控性）。</li>
<li><strong>记忆系统（短期/长期）成为基础设施</strong>：把多轮对话的“短期工作记忆”（当前目标、约束、上下文）与“长期记忆”（偏好、画像、历史任务与重要事实）分层管理，通过写入策略、检索召回与过期纠错机制，向理解与决策层提供更稳定的上下文参考。它的价值不在“记得更多”，而在<strong>记得准、给得对</strong>（避免把幻觉或噪声固化进长期记忆）。</li>
<li><strong>业务 Agent 层走向 Hybrid（编排 + 自规划）</strong>：真正落到业务决策时，纯“全自动自规划”并不总是性价比最高。很多团队会采用 <strong>人为编排（流程/策略/模板）+ 自规划（在局部空间搜索/补齐）</strong> 的混合形态：关键路径可控、长尾靠模型兜底。与此同时，“Skill/Tool 描述”变得更重要——它不仅是功能入口，也是在给自规划 Agent 注入<strong>背景、边界、偏好与可用知识</strong>，让规划更像“在规则内自由发挥”。</li>
<li><strong>执行与表达层（Tools + TTS）确定性增强</strong>：执行侧越来越强调“确定性”：通过 MCP 这类协议把外部能力标准化成可调用、可审计、可回滚的工具；表达侧则更多采用端到端的 text-to-audio（例如 Qwen TTS 等）来生成更自然的人声回复，配合流式输出、可打断、低延迟的交互体验。整体上是“概率决策在上层，确定性执行在下层”。</li>
</ol>
<h4 id="示例流程-3">示例流程：</h4>
<p>同样以&quot;今天天气怎么样&quot;为例，看看大模型与Agent时代相比预训练时代的根本性变化：</p>
<h5 id="步骤1多模态感知可选端到端路径"><strong>步骤1：多模态感知（可选端到端路径）</strong></h5>
<p>用户在5米外说话，系统有两种处理路径：</p>
<p><strong>路径A（传统流水线）</strong>：远场音频预处理 → Whisper等端到端ASR → 文本 <code>&quot;今天天气怎么样&quot;</code></p>
<p><strong>路径B（端到端多模态）</strong>：音频直接输入GPT-4o等多模态大模型 → 跳过ASR，直接理解语音语义</p>
<h5 id="步骤2llm-orchestrator-选择-agent"><strong>步骤2：LLM Orchestrator 选择 Agent</strong></h5>
<p>LLM Orchestrator 作为路由层，负责根据用户输入选择合适的 Agent：</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-python" data-lang="python"><span style="display:flex;"><span><span style="color:#75715e"># 构建Orchestrator上下文</span>
</span></span><span style="display:flex;"><span>context <span style="color:#f92672">=</span> {
</span></span><span style="display:flex;"><span>    <span style="color:#e6db74">&#34;user_input&#34;</span>: <span style="color:#e6db74">&#34;今天天气怎么样&#34;</span>,
</span></span><span style="display:flex;"><span>    <span style="color:#e6db74">&#34;conversation_history&#34;</span>: [<span style="color:#f92672">...</span>],  <span style="color:#75715e"># 短期记忆：最近3轮对话</span>
</span></span><span style="display:flex;"><span>    <span style="color:#e6db74">&#34;available_agents&#34;</span>: [
</span></span><span style="display:flex;"><span>        {
</span></span><span style="display:flex;"><span>            <span style="color:#e6db74">&#34;name&#34;</span>: <span style="color:#e6db74">&#34;weather_agent&#34;</span>,
</span></span><span style="display:flex;"><span>            <span style="color:#e6db74">&#34;description&#34;</span>: <span style="color:#e6db74">&#34;处理天气查询相关任务，包括当前天气、天气预报、空气质量等&#34;</span>,
</span></span><span style="display:flex;"><span>            <span style="color:#e6db74">&#34;capabilities&#34;</span>: [<span style="color:#e6db74">&#34;get_weather&#34;</span>, <span style="color:#e6db74">&#34;get_user_location&#34;</span>]
</span></span><span style="display:flex;"><span>        },
</span></span><span style="display:flex;"><span>        {
</span></span><span style="display:flex;"><span>            <span style="color:#e6db74">&#34;name&#34;</span>: <span style="color:#e6db74">&#34;music_agent&#34;</span>,
</span></span><span style="display:flex;"><span>            <span style="color:#e6db74">&#34;description&#34;</span>: <span style="color:#e6db74">&#34;处理音乐播放、搜索、推荐等任务&#34;</span>,
</span></span><span style="display:flex;"><span>            <span style="color:#e6db74">&#34;capabilities&#34;</span>: [<span style="color:#e6db74">&#34;play_music&#34;</span>, <span style="color:#e6db74">&#34;search_song&#34;</span>, <span style="color:#e6db74">&#34;control_playback&#34;</span>]
</span></span><span style="display:flex;"><span>        },
</span></span><span style="display:flex;"><span>        {
</span></span><span style="display:flex;"><span>            <span style="color:#e6db74">&#34;name&#34;</span>: <span style="color:#e6db74">&#34;general_agent&#34;</span>,
</span></span><span style="display:flex;"><span>            <span style="color:#e6db74">&#34;description&#34;</span>: <span style="color:#e6db74">&#34;处理通用对话、问答、闲聊等任务&#34;</span>,
</span></span><span style="display:flex;"><span>            <span style="color:#e6db74">&#34;capabilities&#34;</span>: [<span style="color:#e6db74">&#34;chat&#34;</span>, <span style="color:#e6db74">&#34;qa&#34;</span>, <span style="color:#e6db74">&#34;general_knowledge&#34;</span>]
</span></span><span style="display:flex;"><span>        }
</span></span><span style="display:flex;"><span>    ]
</span></span><span style="display:flex;"><span>}
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#75715e"># LLM Orchestrator 进行路由决策</span>
</span></span><span style="display:flex;"><span>response <span style="color:#f92672">=</span> llm<span style="color:#f92672">.</span>chat(
</span></span><span style="display:flex;"><span>    system_prompt<span style="color:#f92672">=</span><span style="color:#e6db74">&#34;&#34;&#34;你是一个智能语音助手的Orchestrator。
</span></span></span><span style="display:flex;"><span><span style="color:#e6db74">    根据用户输入，你需要：
</span></span></span><span style="display:flex;"><span><span style="color:#e6db74">    1. 理解用户意图
</span></span></span><span style="display:flex;"><span><span style="color:#e6db74">    2. 从可用的Agent列表中选择最合适的Agent来处理该任务
</span></span></span><span style="display:flex;"><span><span style="color:#e6db74">    3. 输出选择的Agent名称&#34;&#34;&#34;</span>,
</span></span><span style="display:flex;"><span>    user_message<span style="color:#f92672">=</span>context
</span></span><span style="display:flex;"><span>)
</span></span></code></pre></div><p><strong>Orchestrator 输出</strong>：</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-json" data-lang="json"><span style="display:flex;"><span>{
</span></span><span style="display:flex;"><span>  <span style="color:#f92672">&#34;selected_agent&#34;</span>: <span style="color:#e6db74">&#34;weather_agent&#34;</span>,
</span></span><span style="display:flex;"><span>  <span style="color:#f92672">&#34;confidence&#34;</span>: <span style="color:#ae81ff">0.95</span>,
</span></span><span style="display:flex;"><span>  <span style="color:#f92672">&#34;reasoning&#34;</span>: <span style="color:#e6db74">&#34;用户询问天气信息，weather_agent专门处理此类任务&#34;</span>
</span></span><span style="display:flex;"><span>}
</span></span></code></pre></div><h5 id="步骤3agent-加载-skill-并制定计划"><strong>步骤3：Agent 加载 Skill 并制定计划</strong></h5>
<p>根据 Orchestrator 的选择，weather_agent 加载对应的 weather_skill，Skill 定义了 Agent 的背景知识、遵循的事实、可用的工具以及预设的计划模板：</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-python" data-lang="python"><span style="display:flex;"><span><span style="color:#75715e"># weather_agent 加载 weather_skill</span>
</span></span><span style="display:flex;"><span>weather_skill <span style="color:#f92672">=</span> {
</span></span><span style="display:flex;"><span>    <span style="color:#e6db74">&#34;name&#34;</span>: <span style="color:#e6db74">&#34;weather_skill&#34;</span>,
</span></span><span style="display:flex;"><span>    <span style="color:#e6db74">&#34;background_knowledge&#34;</span>: <span style="color:#e6db74">&#34;&#34;&#34;
</span></span></span><span style="display:flex;"><span><span style="color:#e6db74">    - 天气查询需要明确时间和地点两个关键信息
</span></span></span><span style="display:flex;"><span><span style="color:#e6db74">    - 如果用户未指定地点，优先使用用户当前位置
</span></span></span><span style="display:flex;"><span><span style="color:#e6db74">    - 如果用户未指定时间，默认为今天
</span></span></span><span style="display:flex;"><span><span style="color:#e6db74">    - 天气信息包括：温度、天气状况、湿度、风速等
</span></span></span><span style="display:flex;"><span><span style="color:#e6db74">    &#34;&#34;&#34;</span>,
</span></span><span style="display:flex;"><span>    <span style="color:#e6db74">&#34;facts&#34;</span>: [
</span></span><span style="display:flex;"><span>        <span style="color:#e6db74">&#34;用户位置信息存储在user_profile中&#34;</span>,
</span></span><span style="display:flex;"><span>        <span style="color:#e6db74">&#34;天气API需要location和time参数&#34;</span>,
</span></span><span style="display:flex;"><span>        <span style="color:#e6db74">&#34;回复应该友好、简洁、包含关键信息&#34;</span>
</span></span><span style="display:flex;"><span>    ],
</span></span><span style="display:flex;"><span>    <span style="color:#e6db74">&#34;available_tools&#34;</span>: [
</span></span><span style="display:flex;"><span>        {
</span></span><span style="display:flex;"><span>            <span style="color:#e6db74">&#34;name&#34;</span>: <span style="color:#e6db74">&#34;get_user_location&#34;</span>,
</span></span><span style="display:flex;"><span>            <span style="color:#e6db74">&#34;description&#34;</span>: <span style="color:#e6db74">&#34;获取用户当前位置&#34;</span>,
</span></span><span style="display:flex;"><span>            <span style="color:#e6db74">&#34;parameters&#34;</span>: {},
</span></span><span style="display:flex;"><span>            <span style="color:#e6db74">&#34;returns&#34;</span>: <span style="color:#e6db74">&#34;location (string)&#34;</span>
</span></span><span style="display:flex;"><span>        },
</span></span><span style="display:flex;"><span>        {
</span></span><span style="display:flex;"><span>            <span style="color:#e6db74">&#34;name&#34;</span>: <span style="color:#e6db74">&#34;get_weather&#34;</span>,
</span></span><span style="display:flex;"><span>            <span style="color:#e6db74">&#34;description&#34;</span>: <span style="color:#e6db74">&#34;查询指定时间和地点的天气信息&#34;</span>,
</span></span><span style="display:flex;"><span>            <span style="color:#e6db74">&#34;parameters&#34;</span>: {
</span></span><span style="display:flex;"><span>                <span style="color:#e6db74">&#34;location&#34;</span>: <span style="color:#e6db74">&#34;string, 必填&#34;</span>,
</span></span><span style="display:flex;"><span>                <span style="color:#e6db74">&#34;time&#34;</span>: <span style="color:#e6db74">&#34;string, 可选，默认为&#39;今天&#39;&#34;</span>
</span></span><span style="display:flex;"><span>            },
</span></span><span style="display:flex;"><span>            <span style="color:#e6db74">&#34;returns&#34;</span>: <span style="color:#e6db74">&#34;weather_data (dict)&#34;</span>
</span></span><span style="display:flex;"><span>        }
</span></span><span style="display:flex;"><span>    ],
</span></span><span style="display:flex;"><span>    <span style="color:#e6db74">&#34;plan_templates&#34;</span>: [
</span></span><span style="display:flex;"><span>        <span style="color:#e6db74">&#34;如果缺少location → 调用get_user_location → 调用get_weather → 生成回复&#34;</span>,
</span></span><span style="display:flex;"><span>        <span style="color:#e6db74">&#34;如果location和time都明确 → 调用get_weather → 生成回复&#34;</span>
</span></span><span style="display:flex;"><span>    ]
</span></span><span style="display:flex;"><span>}
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#75715e"># Agent 基于 Skill 制定计划</span>
</span></span><span style="display:flex;"><span>agent_plan <span style="color:#f92672">=</span> weather_agent<span style="color:#f92672">.</span>plan(
</span></span><span style="display:flex;"><span>    user_input<span style="color:#f92672">=</span><span style="color:#e6db74">&#34;今天天气怎么样&#34;</span>,
</span></span><span style="display:flex;"><span>    skill<span style="color:#f92672">=</span>weather_skill,
</span></span><span style="display:flex;"><span>    conversation_history<span style="color:#f92672">=</span>[<span style="color:#f92672">...</span>],
</span></span><span style="display:flex;"><span>    user_profile<span style="color:#f92672">=</span>{<span style="color:#f92672">...</span>}
</span></span><span style="display:flex;"><span>)
</span></span></code></pre></div><p><strong>Agent 基于 Skill 制定计划的过程</strong>：</p>
<pre tabindex="0"><code>用户问&#34;今天天气怎么样&#34;
→ 加载 weather_skill，获取背景知识和可用工具
→ 分析：这是一个天气查询需求，time=&#34;今天&#34;已明确，但location缺失
→ 根据 plan_templates，选择模板1：缺少location → 先获取位置 → 再查询天气 → 生成回复
→ 制定执行计划：
   1. 调用 get_user_location() 获取用户位置
   2. 调用 get_weather(location=步骤1结果, time=&#34;今天&#34;)
   3. 基于返回结果生成友好回复（作为计划的一部分）
</code></pre><h5 id="步骤4执行-观察-反思循环"><strong>步骤4：执行-观察-反思循环</strong></h5>
<p>Agent 按照计划执行工具调用，然后观察结果并反思，必要时调整计划：</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-python" data-lang="python"><span style="display:flex;"><span><span style="color:#75715e"># 第一轮：执行计划的第一步</span>
</span></span><span style="display:flex;"><span>step1_result <span style="color:#f92672">=</span> weather_agent<span style="color:#f92672">.</span>execute_tool(
</span></span><span style="display:flex;"><span>    tool<span style="color:#f92672">=</span><span style="color:#e6db74">&#34;get_user_location&#34;</span>,
</span></span><span style="display:flex;"><span>    parameters<span style="color:#f92672">=</span>{}
</span></span><span style="display:flex;"><span>)
</span></span><span style="display:flex;"><span><span style="color:#75715e"># 观察结果</span>
</span></span><span style="display:flex;"><span>observation1 <span style="color:#f92672">=</span> {
</span></span><span style="display:flex;"><span>    <span style="color:#e6db74">&#34;tool&#34;</span>: <span style="color:#e6db74">&#34;get_user_location&#34;</span>,
</span></span><span style="display:flex;"><span>    <span style="color:#e6db74">&#34;result&#34;</span>: <span style="color:#e6db74">&#34;北京&#34;</span>,
</span></span><span style="display:flex;"><span>    <span style="color:#e6db74">&#34;status&#34;</span>: <span style="color:#e6db74">&#34;success&#34;</span>
</span></span><span style="display:flex;"><span>}
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#75715e"># Agent 反思：第一步成功，可以继续</span>
</span></span><span style="display:flex;"><span>weather_agent<span style="color:#f92672">.</span>reflect(
</span></span><span style="display:flex;"><span>    plan<span style="color:#f92672">=</span>agent_plan,
</span></span><span style="display:flex;"><span>    observations<span style="color:#f92672">=</span>[observation1],
</span></span><span style="display:flex;"><span>    current_step<span style="color:#f92672">=</span><span style="color:#ae81ff">1</span>
</span></span><span style="display:flex;"><span>)
</span></span><span style="display:flex;"><span><span style="color:#75715e"># 反思结果：计划正常，继续执行步骤2</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#75715e"># 第二轮：执行计划的第二步</span>
</span></span><span style="display:flex;"><span>step2_result <span style="color:#f92672">=</span> weather_agent<span style="color:#f92672">.</span>execute_tool(
</span></span><span style="display:flex;"><span>    tool<span style="color:#f92672">=</span><span style="color:#e6db74">&#34;get_weather&#34;</span>,
</span></span><span style="display:flex;"><span>    parameters<span style="color:#f92672">=</span>{
</span></span><span style="display:flex;"><span>        <span style="color:#e6db74">&#34;location&#34;</span>: observation1[<span style="color:#e6db74">&#34;result&#34;</span>],  <span style="color:#75715e"># &#34;北京&#34;</span>
</span></span><span style="display:flex;"><span>        <span style="color:#e6db74">&#34;time&#34;</span>: <span style="color:#e6db74">&#34;今天&#34;</span>
</span></span><span style="display:flex;"><span>    }
</span></span><span style="display:flex;"><span>)
</span></span><span style="display:flex;"><span><span style="color:#75715e"># 观察结果</span>
</span></span><span style="display:flex;"><span>observation2 <span style="color:#f92672">=</span> {
</span></span><span style="display:flex;"><span>    <span style="color:#e6db74">&#34;tool&#34;</span>: <span style="color:#e6db74">&#34;get_weather&#34;</span>,
</span></span><span style="display:flex;"><span>    <span style="color:#e6db74">&#34;result&#34;</span>: {
</span></span><span style="display:flex;"><span>        <span style="color:#e6db74">&#34;location&#34;</span>: <span style="color:#e6db74">&#34;北京&#34;</span>,
</span></span><span style="display:flex;"><span>        <span style="color:#e6db74">&#34;date&#34;</span>: <span style="color:#e6db74">&#34;2025-01-15&#34;</span>,
</span></span><span style="display:flex;"><span>        <span style="color:#e6db74">&#34;weather&#34;</span>: <span style="color:#e6db74">&#34;晴&#34;</span>,
</span></span><span style="display:flex;"><span>        <span style="color:#e6db74">&#34;temperature&#34;</span>: {<span style="color:#e6db74">&#34;min&#34;</span>: <span style="color:#ae81ff">15</span>, <span style="color:#e6db74">&#34;max&#34;</span>: <span style="color:#ae81ff">25</span>},
</span></span><span style="display:flex;"><span>        <span style="color:#e6db74">&#34;humidity&#34;</span>: <span style="color:#ae81ff">60</span>,
</span></span><span style="display:flex;"><span>        <span style="color:#e6db74">&#34;wind_speed&#34;</span>: <span style="color:#e6db74">&#34;5km/h&#34;</span>
</span></span><span style="display:flex;"><span>    },
</span></span><span style="display:flex;"><span>    <span style="color:#e6db74">&#34;status&#34;</span>: <span style="color:#e6db74">&#34;success&#34;</span>
</span></span><span style="display:flex;"><span>}
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#75715e"># Agent 反思：前两步完成，继续执行第三步（生成回复）</span>
</span></span><span style="display:flex;"><span>weather_agent<span style="color:#f92672">.</span>reflect(
</span></span><span style="display:flex;"><span>    plan<span style="color:#f92672">=</span>agent_plan,
</span></span><span style="display:flex;"><span>    observations<span style="color:#f92672">=</span>[observation1, observation2],
</span></span><span style="display:flex;"><span>    current_step<span style="color:#f92672">=</span><span style="color:#ae81ff">2</span>
</span></span><span style="display:flex;"><span>)
</span></span><span style="display:flex;"><span><span style="color:#75715e"># 反思结果：数据收集完成，执行步骤3：生成回复</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#75715e"># 第三轮：执行计划的第三步（生成回复）</span>
</span></span><span style="display:flex;"><span>response <span style="color:#f92672">=</span> weather_agent<span style="color:#f92672">.</span>generate_response(
</span></span><span style="display:flex;"><span>    skill<span style="color:#f92672">=</span>weather_skill,  <span style="color:#75715e"># 包含背景知识和遵循的事实</span>
</span></span><span style="display:flex;"><span>    observations<span style="color:#f92672">=</span>[observation1, observation2],  <span style="color:#75715e"># 工具执行结果</span>
</span></span><span style="display:flex;"><span>    conversation_history<span style="color:#f92672">=</span>[<span style="color:#f92672">...</span>],
</span></span><span style="display:flex;"><span>    user_profile<span style="color:#f92672">=</span>{<span style="color:#f92672">...</span>}
</span></span><span style="display:flex;"><span>)
</span></span><span style="display:flex;"><span><span style="color:#75715e"># 观察结果</span>
</span></span><span style="display:flex;"><span>observation3 <span style="color:#f92672">=</span> {
</span></span><span style="display:flex;"><span>    <span style="color:#e6db74">&#34;action&#34;</span>: <span style="color:#e6db74">&#34;generate_response&#34;</span>,
</span></span><span style="display:flex;"><span>    <span style="color:#e6db74">&#34;result&#34;</span>: <span style="color:#e6db74">&#34;今天北京天气很不错呢，晴朗的一天，气温在15到25度之间。对了，您上次说想去爬香山，今天就是个好日子哦~要不要帮您查一下公交路线？&#34;</span>,
</span></span><span style="display:flex;"><span>    <span style="color:#e6db74">&#34;status&#34;</span>: <span style="color:#e6db74">&#34;success&#34;</span>
</span></span><span style="display:flex;"><span>}
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#75715e"># Agent 反思：所有步骤完成，任务达成</span>
</span></span><span style="display:flex;"><span>weather_agent<span style="color:#f92672">.</span>reflect(
</span></span><span style="display:flex;"><span>    plan<span style="color:#f92672">=</span>agent_plan,
</span></span><span style="display:flex;"><span>    observations<span style="color:#f92672">=</span>[observation1, observation2, observation3],
</span></span><span style="display:flex;"><span>    current_step<span style="color:#f92672">=</span><span style="color:#ae81ff">3</span>
</span></span><span style="display:flex;"><span>)
</span></span><span style="display:flex;"><span><span style="color:#75715e"># 反思结果：计划全部完成，任务成功</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#75715e"># 表达侧（TTS）：将生成的文本转为语音</span>
</span></span><span style="display:flex;"><span><span style="color:#75715e"># 端到端路径：直接使用GPT-4o等模型的audio-to-audio能力，或使用Qwen TTS等端到端text-to-audio模型</span>
</span></span><span style="display:flex;"><span>tts_output <span style="color:#f92672">=</span> tts<span style="color:#f92672">.</span>synthesize(observation3[<span style="color:#e6db74">&#34;result&#34;</span>])
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#75715e"># 更新记忆系统</span>
</span></span><span style="display:flex;"><span>query <span style="color:#f92672">=</span> <span style="color:#e6db74">&#34;今天天气怎么样&#34;</span>  <span style="color:#75715e"># 用户输入</span>
</span></span><span style="display:flex;"><span>memory<span style="color:#f92672">.</span>update_short_term(query<span style="color:#f92672">=</span>query, tts_output<span style="color:#f92672">=</span>tts_output)
</span></span><span style="display:flex;"><span>memory<span style="color:#f92672">.</span>update_long_term(user_preference<span style="color:#f92672">=</span><span style="color:#e6db74">&#34;常用地点：北京&#34;</span>)
</span></span></code></pre></div><h4 id="代表案例与瓶颈-2">代表案例与瓶颈</h4>
<h5 id="产品实践">产品实践</h5>
<ol>
<li><strong>豆包手机</strong></li>
<li><strong>豆包、ChatGPT</strong></li>
<li><strong>Cursor / Claude Code</strong></li>
</ol>
<h5 id="瓶颈">瓶颈</h5>
<p>一句话概括：难点往往不在“能不能做”，而在“能不能<strong>稳定、可控、可规模化</strong>地做”。</p>
<ul>
<li><strong>成本与时延</strong>：多模态、长上下文、test-time compute 和多次工具调用会同时抬高推理成本与端到端延迟。</li>
<li><strong>可靠性与可控性（幻觉/漂移）</strong>：一旦理解/决策出错，错误会在多步链路里被放大且更难兜底。</li>
<li><strong>工具调用工程复杂度</strong>：真正的失败常来自权限、超时、幂等、依赖波动与一致性问题，而不是“不会调用”。</li>
<li><strong>记忆治理</strong>：长期记忆易被噪声或幻觉污染、短期记忆易爆上下文，写入/检索/过期策略不当会反噬效果。</li>
<li><strong>评测体系</strong>：从单点指标转向端到端成功率后，复现、归因与回放成本显著上升。</li>
<li><strong>黑盒与不可解释性</strong>：决策依据与中间推理难以解释和审计，排障、合规与建立用户信任的成本更高。</li>
<li><strong>安全与合规</strong>：可执行工具让系统具备“真实影响力”，必须默认具备最小权限、审计与敏感操作确认。</li>
<li><strong>数据与对齐</strong>：多模态与工具数据难规模化沉淀，现实业务的奖励函数也更难定义与对齐。</li>
</ul>
<h2 id="核心洞察">核心洞察</h2>
<h3 id="1-从专家知识驱动到数据驱动">1. 从专家知识驱动到数据驱动</h3>
<p>回头看这条演进路径，最根本的变化其实是“能力从哪里来”。规则时代靠专家手工写规则、调特征，系统能做多聪明，基本取决于专家能把多少经验显式化；统计学习时代开始由数据来“填参数”，但专家仍然在设计框架（比如特征、HMM 拓扑）；深度学习把特征学习也交给模型，工程与研究的重心逐渐转向网络结构与训练方法；到了大模型时代，架构形态越来越趋同（Transformer 几乎成了默认），真正拉开差距的往往是数据的规模、质量，以及围绕数据构建的工程能力。</p>
<p>于是三件事同时发生：能力的天花板被抬高（模型能学到很多专家也说不清的模式），迭代节奏被加快（从周级迭代变成日级甚至小时级），竞争要素也在迁移（从“算法技巧”转向“数据 + 算力 + 工程闭环”）。对应地，“专家”的定义也变了：不再只是规则设计者，更像是数据治理的负责人和系统架构师。</p>
<h3 id="2-端到端演进与优化重心上移">2. 端到端演进与优化重心上移</h3>
<p>架构的变化可以从两个维度来理解。横向上，它不断走向端到端：从模块内的多段流水线（MFCC→GMM→HMM→N-gram），到单一神经网络（CTC/Tacotron），再到系统级端到端（例如 audio in/out 的范式，逐步消解 ASR→NLU→DM→TTS 的传统边界）。更重要的是，端到端网络结构往往意味着更少的人为切分与手工“过桥”特征：减少那些为了对齐模块接口而做的维度降低与中间表征压缩，从源头降低信息损失与误差累积。纵向上，优化重心确实在上移：当底层识别能力逐渐进入收益递减、甚至被平台化/通用化之后，系统的成败更多由上层的“目标达成闭环”决定——怎么管理上下文、怎么做任务规划、怎么调用工具并校验结果，以及在失败时如何回退与澄清。关键不再只是把声音转成更准的文本，而是把一次交互稳稳落到可执行的结果上。</p>
<p>背后的机制更准确地说是：<strong>可学习的范围在不断扩张，系统边界也在被反复重划</strong>。一方面，越来越多原本靠人工拆分与手工规则“钉死”的环节被模型端到端吸收；另一方面，为了稳定、可控、可审计，也会把一部分能力从模型里“收回来”，交给更确定的工程与工具约束。随之而来，系统竞争力也从单点工程优化，转向更接近“认知建模”的能力：如何理解目标、如何规划路径、如何在复杂环境里稳稳落地。</p>
<h3 id="3-从识别理解到任务规划">3. 从识别理解到任务规划</h3>
<p>从能力形态看，语音系统大致经历了三次跃迁：规则时代更多是固定映射（声音→响应）；统计/深度学习时代把重点放在语义理解（文本→意图+槽位→单一功能）；而大模型与 Agent 时代，则把“规划”推到了舞台中央（意图→多步计划→跨服务编排→目标达成）。</p>
<p>这本质上是系统智能的“上移”：先解决“他说了什么”，再解决“他想要什么”，最后要解决“怎么把这件事办成”。LLM 把推理能力注入了决策层：能拆任务、能调用工具、能在多轮对话中维护上下文与记忆。于是语音不再只是一个输入方式，而逐渐变成承载任务、驱动执行的交互载体。</p>
<h3 id="4-向概率系统演进">4. 向概率系统演进</h3>
<p>另一个容易被低估的变化，是系统从“确定性”走向“概率性”。规则时代的行为几乎完全可预测；统计时代虽然底层是概率模型，但上层决策常常依然是确定逻辑；到了大模型时代，LLM 的输出天然带采样属性，Agent 的规划路径也未必固定，多模态融合又引入更多不确定性——整个链路逐渐变成端到端的概率系统。
概率系统并不可怕，关键是学会“驾驭概率”：一方面把概率采样带来的上限与泛化性释放出来，另一方面把下限兜住——让“更准确、少胡编”变成可预期的常态，而不是靠运气。与此同时，概率性也会倒逼产品认知发生变化：它不再是那种“同样输入必须得到完全一致输出”的确定性系统，产品要学会围绕不确定性做交互（比如允许合理的多解、在关键点主动澄清、在风险处更保守）。
除了上述变化，驯化概率系统的过程中我们常常忽视——工程侧的不确定性。因为一旦执行链路本身不稳定，概率性决策的波动就会被放大，最终很容易走向：<strong>概率性决策 × 不确定性工程 → 决策灾难</strong>。
因此，越是概率系统，工程架构越要追求更高的确定性与稳定性：执行层要可预期（超时、重试、权限、回滚、审计回放这些“基础件”得标准化）；高风险操作默认防呆（确认与分级授权）；同时把可观测性做完整（能记录、能回放、能解释）。最后，测试与评估范式也会随之改变：不再是“链路跑通=功能完成”，而需要用统计口径去刻画系统状态与退化趋势，比如任务成功率、稳定性分布、以及类似 <code>pass@1</code>（乃至 <code>pass@k</code>）这类反映“在给定采样预算下能否命中正确解”的指标。</p>
<h3 id="5-专业分工的模糊化">5. 专业分工的模糊化</h3>
<p>最后是组织与协作方式的变化。大模型把很多原本清晰的模块边界打散了，<strong>产品、研发、算法、测试</strong>这些角色的边界也在一起变得模糊：产品不再只写需求，还要设计“问不清就追问、风险高就更保守”的交互；研发不再只把 API 接好，还要考虑模型会怎么推理、怎么把任务一步步执行下去；算法不再只把模型调好，还要考虑怎么写提示、怎么让模型用工具；测试也不再只盯单次准确率，而要验证“任务能不能完成、过程稳不稳定”。</p>
<p>很多团队会从“专业化分工”走向“端到端小队”：每个角色都要对全链路有基本理解，小队对一个场景从头到尾负责到底，才能把一个概率系统做得稳、做得可控。某种意义上，这也是“逆康威定律”的结果，在系统架构往端到端演进的时候时，组织架构是没法仍然保持原有的分工，还能很好的运转。</p>
<h1 id="相关引用">相关引用：</h1>
<ol>
<li>
<p>The Path Ahead for Agentic AI: Challenges and Opportunities <a href="https://arxiv.org/html/2601.02749v1">https://arxiv.org/html/2601.02749v1</a></p>
</li>
<li>
<p>语音智能体商业落地的教训、经验与实践 <a href="https://www.bilibili.com/video/BV1dZsCzfEMV?spm_id_from=333.788.videopod.sections&amp;vd_source=ea6d84de12429b878dff8d7a0fa03636">https://www.bilibili.com/video/BV1dZsCzfEMV?spm_id_from=333.788.videopod.sections&amp;vd_source=ea6d84de12429b878dff8d7a0fa03636</a></p>
</li>
<li></li>
</ol>
]]></content:encoded>
    </item>
    <item>
      <title>拉里与伊莎贝尔的谈话</title>
      <link>https://brookwillow.github.io/posts/%E6%8B%89%E9%87%8C%E4%B8%8E%E4%BC%8A%E8%8E%8E%E8%B4%9D%E5%B0%94%E7%9A%84%E8%B0%88%E8%AF%9D/</link>
      <pubDate>Wed, 23 Oct 2024 10:37:03 +0000</pubDate>
      <guid>https://brookwillow.github.io/posts/%E6%8B%89%E9%87%8C%E4%B8%8E%E4%BC%8A%E8%8E%8E%E8%B4%9D%E5%B0%94%E7%9A%84%E8%B0%88%E8%AF%9D/</guid>
      <description>&lt;p&gt;一个钟头后，拉里来接伊莎贝尔。他们搭了出租车去圣米歇尔桥，漫步在行人川流不息的大街上。两人走着走着，看中了一家咖啡馆，便走了进去。他们在露台坐着，点了两杯杜本内甜酒。之后，两人又叫了出租车前往一家餐厅。伊莎贝尔的胃口很好，拉里点的各式美食她都吃得津津有味。这家餐厅挤得水泄不通，她喜欢观察周遭紧挨着的客人，看着他们对眼前的食物啧啧称奇，不禁令人发噱。但她最为开心的事，莫过于跟拉里坐在一张小桌前。伊莎贝尔说得兴高采烈之时，拉里的眼神洋溢着喜悦，令她深深倾心。两人相处起来这么舒服自在，让人心醉神迷。可是，伊莎贝尔内心却隐约感到不安，因为即使他看起来也很自在，她却觉得这并非自己的缘故，而是环境使然。她母亲早上那席话令她有些动摇，眼下虽漫无边际地聊着，她却注意着他的每个神情。现在的拉里和离开芝加哥前的他不太一样，但也说不上来哪里不同。他依然年轻、坦率，但神情已有变化，并非变得严肃，毕竟他放松时向来如此，而是有种备感陌生的笃定感，仿佛看开了某些事情，比以往更多了份泰然自若。两人吃完午餐后，拉里提议去卢森堡博物馆晃晃。
“不要，我不想去看画。​”
“好吧，那我们到花园坐坐吧。​”
“我也不想去花园，我想看看你住的地方。​”
“没什么好看的，我住在旅馆里，而且房间很小。​”
“艾略特舅舅说你有栋公寓，还跟一位画家的模特儿同居。​”
“那你就亲自看看吧，​”他笑着说，
​“离这里没几步路，我们可以走过去。​”
他带她穿越了几条弯曲难走的窄巷，尽管两旁高楼中可窥见一线蓝天，仍旧显得阴暗肮脏。走了一会儿，两人停在了一家外表装修得很离谱的小旅馆门口。
“就是这儿。​”&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>一个钟头后，拉里来接伊莎贝尔。他们搭了出租车去圣米歇尔桥，漫步在行人川流不息的大街上。两人走着走着，看中了一家咖啡馆，便走了进去。他们在露台坐着，点了两杯杜本内甜酒。之后，两人又叫了出租车前往一家餐厅。伊莎贝尔的胃口很好，拉里点的各式美食她都吃得津津有味。这家餐厅挤得水泄不通，她喜欢观察周遭紧挨着的客人，看着他们对眼前的食物啧啧称奇，不禁令人发噱。但她最为开心的事，莫过于跟拉里坐在一张小桌前。伊莎贝尔说得兴高采烈之时，拉里的眼神洋溢着喜悦，令她深深倾心。两人相处起来这么舒服自在，让人心醉神迷。可是，伊莎贝尔内心却隐约感到不安，因为即使他看起来也很自在，她却觉得这并非自己的缘故，而是环境使然。她母亲早上那席话令她有些动摇，眼下虽漫无边际地聊着，她却注意着他的每个神情。现在的拉里和离开芝加哥前的他不太一样，但也说不上来哪里不同。他依然年轻、坦率，但神情已有变化，并非变得严肃，毕竟他放松时向来如此，而是有种备感陌生的笃定感，仿佛看开了某些事情，比以往更多了份泰然自若。两人吃完午餐后，拉里提议去卢森堡博物馆晃晃。
“不要，我不想去看画。​”
“好吧，那我们到花园坐坐吧。​”
“我也不想去花园，我想看看你住的地方。​”
“没什么好看的，我住在旅馆里，而且房间很小。​”
“艾略特舅舅说你有栋公寓，还跟一位画家的模特儿同居。​”
“那你就亲自看看吧，​”他笑着说，
​“离这里没几步路，我们可以走过去。​”
他带她穿越了几条弯曲难走的窄巷，尽管两旁高楼中可窥见一线蓝天，仍旧显得阴暗肮脏。走了一会儿，两人停在了一家外表装修得很离谱的小旅馆门口。
“就是这儿。​”</p>
<p>伊莎贝尔随他走进狭窄的门廊，一旁有张书桌，有个男人坐在后头。他身穿衬衫和黄黑条纹的背心，围了条脏围裙，正在读报纸。拉里向他拿钥匙，那人便从身后架上取来递给他，好奇地瞥了伊莎贝尔一眼，扬起会意般的微笑，显然以为两人是要做那档子事。他们爬了两层楼，楼梯铺着破旧的红毯，拉里拿起钥匙开门。伊莎贝尔走进小小的房间，从仅有的两扇窗户望出去，对街是灰扑扑的公寓，一楼是家文具店。房间里有张单人床，一旁是床头柜，笨重的衣柜镶了面大镜子，另有张附了坐垫、椅背直挺的扶手椅，两扇窗之间则有张桌子，上头摆着打字机、纸张与几本书，壁炉台上也堆着不少平装书。
“你坐扶手椅吧，虽然不怎么好坐，但也只剩这把了。​”
他另外拉了把椅子坐下。
“你就住这儿吗？​”
伊莎贝尔问道。他瞧见她的表情，咯咯笑了出来。
“正是，我到巴黎后就一直住这儿。​”
“为什么呢？​”
“方便嘛。附近就是国家图书馆和巴黎索邦大学。​”
他指着另一扇她没注意到的门，​
“而且带有卫浴，我总在家吃早餐，晚餐通常就在刚才那家餐厅解决。​”
“这也太脏了吧。​”
“我觉得还好，这样就够了。​”
“可是，你的邻居都是哪些人呢？​”
“噢，我也不晓得。顶楼住了几个学生、两三名在公家机关服务的单身老人，一名奥德翁剧院的退休女演员。而剩下一个也有卫浴的房间，则住了一名被包养的女人，她的情人每隔一周都会在礼拜四过来。大概还有些暂住的房客。这地方基本上很安静，还不赖。​”伊莎贝尔略显不安，她晓得拉里已察觉并窃笑着，不禁稍有不悦。
伊莎贝尔略显不安，她晓得拉里已察觉并窃笑着，不禁稍有不悦。</p>
<p>“桌上那本大部头是什么啊？​”
她问。
“那本吗？噢，那是我的希腊文词典。​”
“你的什么？​”
她大声问道。
“别紧张，没什么大不了。​”
“你在学希腊文吗？​”
“对啊。​”
“为什么？​”
“我想多少学一点。​”
他看着她，眼神带着笑意，她也回以微笑。
“告诉我，你在巴黎的这两年，都在做什么事情呢？​”
“我读了很多书，一天读个八到十小时。我还去索邦大学听课，法国文学所有重要作品几乎都念过了。我也看得懂拉丁文，至少散文没问题，程度跟我的法文差不多。当然，希腊文比较难学，可是我的老师教得很好。你来到巴黎之前，我每个礼拜有三个晚上会去找他上课。​”
“这是为了什么呢？​”
“获得知识啊。​”
他微笑着说。
“听起来不太实用。​”
“可能不实用，也可能很实用，但是非常有趣。你真的很难想象，读懂《奥德赛》的原文有多么令人兴奋，仿佛只要踮起脚尖，伸出手来，就能碰到天上的星星。​”
他从椅子上站起来，好像乐不可支，在小房间内走来走去。
“这一两个月，我在读斯宾诺莎的作品，不敢说理解得透彻，可是非常开心，好像乘着飞机，降落在层层山峦中的一片高原，万籁俱寂，空气清新，有如好酒沁人心脾，实在太美妙了。​”
“你打算什么时候回芝加哥？​”
“芝加哥？不晓得，还没想过呢。​”
“你之前说过，如果花了两年还找不到目标，你就会放弃的。​”
“我现在还不能回去，毕竟才刚入门，面前有这么大片的精神文明沃土向我招手，我很想快点游历一番。​”
“你希望找到什么呢？​”
“心中问题的答案。​”
他瞥了她一眼，似乎在寻她开心。若非她十分了解他的个性，说不定真以为他在说笑。
​“我想确定究竟有没有上帝，想弄清楚为什么有邪恶存在，也想知道我的灵魂是不是不死，还是身体的死亡就是终点。​”
伊莎贝尔倒抽了一口气，听见拉里说这些，觉得浑身不对劲，幸亏他语气轻松，口吻和聊天一样，她才能保持镇静。
“但是，拉里，​”
她微笑着说，​
“这些大哉问存在好几千年了，如果有答案的话，肯定早就有人找到了。​”
拉里笑了笑。
“你笑什么？好像我说了什么蠢话似的。​”
她语气尖锐。
“我没这个意思，你说得也没错。但是，既然这些问题存在了几千年，那可能也证明了世人没法子不去问，而且不得不继续探究下去。另外，你说没有人得到答案，实情并非如此。答案比问题还多，而且不少人都找到了非常满意的答案，例如吕斯布鲁克这个老头儿。​”
“他是谁？​”
“噢，只是我在大学无缘认识的一个家伙。​”
拉里答得轻浮。伊莎贝尔不懂他的意思，但也没有多想。</p>
<p>“这些话听起来都很幼稚，应该是大学生才会有兴趣，毕业后就会忘光了，他们得设法讨生活啊。​”
“这也难怪，你看，幸好我还有些钱可以过活，否则也只好像别人那样，努力去赚钱了。​”
“难道你完全不把钱放在眼里吗？​”
“是啊。​”
他露齿而笑。
“那你觉得还得耗多久呢？​”
“这也说不准，五年或十年吧。​”
“然后呢？你开窍了以后能干吗？​”
“如果我真的开窍了，应该就晓得该怎么办了。​”
伊莎贝尔激动地紧握双手，坐着的身子不禁向前倾。
“你实在大错特错，拉里。你是美国人，并不属于这里，美国才是你安身立命的地方。​”
“等我准备好了，自然会回去。​”
“但这样你会错过很多机会。我们现在正经历前所未有的伟大冒险，你怎么能忍受待在这个寒酸的地方呢？欧洲玩完了。我们是全世界最伟大、最强大的民族，进步一日千里，什么都不缺。你应该尽一份心力，参与国家的发展。你已经忘了这种感觉，也不晓得现在的美国生活多么令人向往。该不会你之所以置身事外，是因为没勇气去扛起身为美国人的责任吧？唉，我知道你多少也算在工作，但这难道不是逃避责任吗？难道不是佯装努力，实则偷懒吗？如果人人都跟你一样推三阻四，美国会变成什么样子啊？​”
“你还真严厉啊，宝贝。​”他笑着说，​“我的回答是，并不是每个人的感受都跟我一样。幸好他们选择的都是所谓正常的道路。你忘了，我的求知欲非常旺盛，不亚于格雷的赚钱欲。难道花个几年充实自己，就是背叛国家吗？搞不好我学出名堂之后，就能回馈社会，造福一些人。当然，一切还得看机缘。但就算我白忙一场，跟做生意失败的人相比，也差不到哪儿去啊。​”</p>
<p>​“那我呢？难道我对你一点都不重要？​”
“你对我非常重要，我希望你能嫁给我。​”
“什么时候？再等十年吗？​”
“不是，就是现在。越快越好。​”
“怎么嫁给你？妈妈身上没什么钱，就算有也不会答应。她觉得不能鼓励你游手好闲。​”
“我不会向你妈妈拿半毛钱，​”
拉里说，
​“我一年有三千块的生活费，这在巴黎相当够用了。我们可以找间小公寓，请一位女佣，生活过得开心自在，宝贝。​”
“可是，拉里，一年三千块是活不下去的。​”
“当然活得下去，很多人还用不了那么多。​”
“但是我才不要一年只能花三千，根本没有道理。​”
“我都只花一半的钱。​”“这怎么可能！”
她看着破旧的小房间，厌恶得微微发抖。
“我的意思是，我存了点钱。我们可以去卡布里岛度蜜月，秋天再去希腊。我非常想到希腊看看。我们以前不是常说要一起环游世界吗？​”
“我当然想旅行啊，但不是用这种方式。我不想搭船坐二等舱，不想下榻连浴室都没有的三流旅馆，更不想每次都上廉价餐馆吃饭。​”
“去年十月，我就是这么玩遍意大利的，非常惬意。我们可以用三千块，花一整年的时间环游世界。​”
“可是我想要孩子啊，拉里。​”
“不要紧，我们带孩子一起去。​”
“你真够傻，​”她笑了出来，​“你知道生孩子要花多少钱？维奥莱特·汤姆林森去年生了宝宝，她省吃俭用，还是花了一千两百五十块。还有你知道请保姆要多少钱吗？​”她逐渐感到心烦意乱，因此语气愈来愈激动，​“你的想法太不切实际了。你不知道自己的要求有多无理。我还年轻，想把握人生，从事时下年轻人的活动，我想参加派对、舞会，打高尔夫和骑马。我也想穿好看的衣服。女孩子在朋友面前穿得相形见绌，你能想象那种感觉吗？买朋友穿腻的旧衣服，或是等别人施舍新衣服，你又能体会那种心情吗？我想找家像样的美容院做头发，都没有办法了。我才不要坐着电车和公交车到处跑，我想要有自己的车。况且，你在图书馆读书的时候，我该找什么事做呢？是要我漫无目的地逛街，还是待在卢森堡花园顾着孩子，以免他们闯祸？这样是交不到朋友的。​”
“唉，伊莎贝尔。​”他插了句话。“至少不是我们以前交的朋友。对了，到时艾略特舅舅的朋友大概会看在他的面子上，三不五时邀请我们参加聚会，但是我们想去也去不成，因为我没像样的衣服可穿，而且我们根本就不会想去，因为我们回请不起。我不想认识一堆既不体面又不修边幅的人。我想享受人生啊，拉里。​”她忽然察觉到，他的眼神依然温柔，却透露着些许笑意，​“你觉得我很蠢，对不对？你一定嫌我小题大做又惹人厌。​”“才没有，我不这么觉得。你说的这些，都是很自然的事。​”他背对壁炉站着，她站起身，朝他走去，两人面对面。
“拉里，如果你名下没有钱，但是有份年薪三千的工作，我会毫不犹豫地嫁给你。我会替你煮饭、帮你铺床，不会在乎穿什么衣服，什么都没有也没关系。我会当成是有趣的挑战，因为一切都只是暂时的，你终究会做出一番事业。但是现在这样结婚，就意味着永远都要过这种邋里邋遢的生活，对未来一点指望都没有。换句话说，我得辛苦一辈子，到死都不得闲，都是为了什么呢？只为了让你解答明知解决不了的问题。这太不像话了，男人就该工作，这才是人生的目的，也才是造福社会的方法。​”
“简单来说，就是有责任在芝加哥安顿下来，进入亨利·马图林的公司。你觉得哄朋友去买马图林看中的股票，就是大大造福社会吗？​”
“中介是少不了的啊，况且这样的赚钱方式既体面又值得敬重。​”
“你把巴黎的一般人说得一无是处。可是，实情跟你想象的并不一样。就算不买香奈儿的衣服，依旧可以穿得很体面。而且真正有意思的人，并不住在凯旋门和福煦大街那一带，因为这些人都不大富有。我在巴黎认识了很多人，有画家、作家、学生，其中有法国人、英国人和美国人，形形色色。我觉得都比艾略特那些虚伪的侯爵和公爵有趣多了。你的反应够快，又有幽默感，绝对会喜欢听他们边吃饭边斗嘴，不会去在意葡萄酒的等级，也不需要管家和用人来伺候。​”
“少说傻话了，拉里。我当然喜欢，你知道我又不是势利鬼，当然会想见见有趣的人。​”
“是啊，但前提是穿着香奈儿的服装吧。他们看到你的打扮，难道不会觉得你是来视察贫民窟的吗？他们会很不自在，你也会不舒服，什么收获也没有，顶多事后告诉埃米莉·蒙塔杜尔和格拉西·夏托加拉尔，说自己在拉丁区有多好玩，碰到一群怪里怪气的波希米亚人。​”
伊莎贝尔微微耸了耸肩膀。
“你说得没错。他们跟我从小到大的朋友很不一样，没有共通点。​”
“所以现在呢？​”
“就跟开始一样。从我懂事以来，就一直住在芝加哥，我的朋友全都在那里，平时的嗜好也在那里，芝加哥才是我的家，也是你的家。妈妈身体不好，看样子好不起来了，就算我想离开，也力不从心啊。​”
“也就是说，除非我准备好回芝加哥，否则你就不会嫁给我吗？​”
伊莎贝尔犹疑了一下。她深爱着拉里，也想嫁给他，全心全意想跟他在一起。她晓得拉里也想娶她。她相信就算两人最后摊牌，拉里终究也会让步。虽然心里害怕，但她不得不冒这个险。
“没错，拉里，就是这个意思。​”</p>
<p>拉里在壁炉台上划了根火柴，由于是老式的法国硫黄火柴，立即有辛辣气味扑鼻而来。他点燃烟斗后，走过她的身边，站在窗前向外眺望，一语不发，沉默的时间仿佛没有尽头。伊莎贝尔仍站在原地，瞧着炉台上的镜子，却看不见自己的身影。她的心跳极快，神情中满是煎熬。拉里终于转过身来。“我真希望能让你了解，我给予你的生活有多么充实，也希望能让你体会，精神生活有多么美妙，体验有多么丰富，没人可以设限，这样的生活才幸福。而唯一能跟它媲美的经历，就是独自架着飞机在天空翱翔，越飞越高，四周无边无际，让人沉醉在无垠的空间里，这种感觉无与伦比，远远超越世俗的权力和荣誉。前几天，我在读笛卡儿，他的作品，字里行间流露出一股自在、优雅和清明。真是美！”
“可是，拉里，​”她急着打断他，​“你难道不了解，你这些要求我既做不到，也没兴趣，更不想去装作感兴趣吗？我讲过好多遍了，我只是平凡的正常女生，现在是二十岁，但再过十年就老了。我想要及时行乐。唉，拉里，我真的好爱你。你说的那些都是无事生非，这样是不会有出息的。为了你自己好，我拜托你，求求你不要这样。像个男人吧，拉里，担起自己的责任。人家在分秒必争的时候，你却在浪费宝贵光阴。拉里，你要是真的爱我，就不会为了梦想抛弃我，你已经享乐过了，跟我们回美国吧。​”
“我办不到，亲爱的，这对我来说跟死了没两样，等于出卖我的灵魂。​”
“唉，拉里，为什么要说这种话？这是自以为高尚的疯女人才会说的话。这有什么意义呢？没有意义，完全没有意义啊。​”
“意义就在于我心里的感受啊。​”
他答道，眼神闪烁。
“你怎么还笑得出来？难道不晓得这是很严肃的事吗？我们站在十字路口，现在的作为会影响我们的一生哪。​”
“我知道。相信我，我也很严肃。​”
她叹了口气。
“跟你讲道理你不听，那就没什么好说的了。​”
“但我不认为这是道理，反而觉得你从头到尾都很无理。​”
“我无理？​”
要不是她当时很难过，搞不好就大笑出来了，
​“可怜的拉里，你真是够疯的。​”
她慢慢褪下手上的订婚戒指，放在掌心，盯着它瞧。那颗方形的红宝石，嵌在薄薄的白金戒环上，她一直都很珍惜。
“假如你真的爱我，就不会让我这么不快乐。​”
“我真的爱你。可惜有时候，做自己认为对的事情，难免会让别人不快乐。​”
她伸出放着戒指的手，颤抖的嘴唇勉强扬起微笑。
“还你，拉里。​”
“我拿了也没用。你要不要留着它，纪念我们的友谊？可以戴在小指上。我们还是可以当朋友，对吧？​”
“我还是会一直关心你，拉里。​”
“那就留着戒指吧，我希望你留着。​”
她迟疑了一下，才把戒指戴在右手小指上。
“太大了。​”
“你可以改小一点。走吧，我们去里兹酒吧喝杯酒。​”
“也好。​”</p>
]]></content:encoded>
    </item>
    <item>
      <title>溪柳自摇</title>
      <link>https://brookwillow.github.io/posts/%E6%BA%AA%E6%9F%B3%E8%87%AA%E6%91%87/</link>
      <pubDate>Wed, 16 Oct 2024 14:19:18 +0000</pubDate>
      <guid>https://brookwillow.github.io/posts/%E6%BA%AA%E6%9F%B3%E8%87%AA%E6%91%87/</guid>
      <description>&lt;p&gt;读书与写作的目的是满足自己的求知&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>读书与写作的目的是满足自己的求知</p>
]]></content:encoded>
    </item>
  </channel>
</rss>
