标准 Agent 的每一步思考都要写成文本 token:解码一次、再嵌回输入一次。HybridAgent 的做法是把中间推理搬进连续隐状态,只在需要调工具、需要人看、需要交付答案时才回到文本模式。论文(arXiv:2610.18861,2026-10-13)在 Qwen3-Base 4B/8B/14B 三个尺度、11 个基准上报告:平均 +10.4% 正确率、暴露 token 减少 35.5%–54.7%、推理加速 1.8×–2.6×、按作者自订的成本模型降低 2.7×–3.7×。
作者是 Jiaru Zou、Yunzhe Qi、Sirui Chen、Federico Bianchi、Shang Zhu、Pan Lu、Jingrui He、James Zou(Stanford / Together AI / UIUC / Meta),代码 MIT,8B 与 14B 检查点在 Hugging Face 上。
HybridAgent 没有引入新架构,只在标准 Transformer 的自回归循环上加了一个"换挡"部件。
HybridLink。 已有潜在推理工作(如 Coconut)直接把最后一层隐状态 h_t 当作下一步输入嵌入。问题是隐状态和预训练输入嵌入不在同一分布:一旦在潜模式和文本模式之间来回切,表示空间就错位。HybridLink 用两层残差投影补这个差:
e_{t+1} = h_t + W2 · σ(W1 · h_t) (σ 为 GELU 类激活)参数量约 2·d_h²,4B 骨干上约 10M——14B 上占全模型不到千分之几。残差保留了原语义,适配器只需要对齐分布差,不需要从零学投影。
怎么进出潜模式。 文本模式下模型正常采样;一旦吐出特殊 token <latent>,下一步就不再过 LM head 和 token embedding,改用 HybridLink 把 h_t 送回输入。潜模式没有预设步数,退出条件是"最后一层隐状态的语义靠近退出锚点 </latent>"——实现上就是把该隐状态映射到最近的词嵌入,看是否命中退出锚点。整条轨迹因此是"文本块 [·] 与潜向量块 ⟨·⟩ 交错"的序列。
工作记忆。 一轮生成结束,整条混合轨迹(文本 + 潜向量 + 工具观测)原样追加进下一轮输入,靠 KV cache 保存。论文给了一条定理:连续工作记忆能在不把潜思考转成文本的前提下保留完整潜历史——也就是说工具调用打断思考不会丢状态。这对多轮 Agent 是关键,否则每次工具返回都得把之前想过的东西重新写成文本。
工具仍在文本模式。 Python 解释器和搜索(Tavily)都由文本模式发起,轨迹内工具调用上限 10 次,每次检索取前 10 篇。所谓"只在需要动手时出字",字面意义就是:工具调用与最终答案这两类动作必须走离散 token。
从既有文本 Agent 的 SFT 轨迹里筛出 54K 条,自动标注成混合轨迹。哪一段该"心算"、哪一段该"写草稿"不是随便切的:论文用专家判断加上模型自身的预测熵来划分潜段,工具调用和需要留证的步骤强制留在文本。训练分三段:
<latent> / </latent> 锚点,骨干冻结,只训 HybridLink(余弦 + MSE)。消融很干净(Qwen3-14B-Base,AIME25 / AIME26 / MATH500):底座 4.9 / 3.0 / 47.0 → 加格式激活 20.6 / 19.8 / 62.4 → 加 HybridLink 激活 23.8 / 22.5 / 73.8 → 加自条件 32.5 / 31.7 / 84.2。前两段只解决"能跑通",真正涨能力的是第三段。
潜位置没有 token 似然,PPO/GRPO 不能直接套。论文的做法是:把似然只在被采样的文本位置上做因子分解,rollout 时记录的潜输入在做策略更新时精确回放一次,HybridLink 保持固定。第二条定理保证:精确回放下,文本位置上的梯度等于整条混合轨迹似然的梯度。
奖励是三项相加 r = r_correct + r_format + r_tool(正确性、格式、多工具使用),故意不给"多用潜模式"发奖励。什么时候该闭嘴想、什么时候该说话,是从"把任务做好"里涌现的,而不是被奖励函数规定的。8B 上的奖励消融:去掉正确性 84.6/43.7/42.5 → 79.2/35.9/37.5;去掉格式 → 80.6/40.7/40.5;去掉工具奖励 → 84.2/38.8/41.0(MATH500 / GAIA / WebWalker)。
训练动态也值得一看:随着 HybridRL 推进,14B 模型把越来越多的生成长度分配给潜模式,同时工具调用能力还在变强。也就是说"少写字"不是人为设定的比例,是被学出来的。
11 个基准:AIME25、AIME26、MATH500、GPQA-Diamond、MedQA、MuSiQue、GAIA、HLE、WebWalker、SealQA、DSQA。14B 关键项:
指标 | 文本 Agent(ARPO) | HybridAgent 14B |
|---|---|---|
GAIA 平均 | 43.7 | 52.4 |
WebWalker | 40.5 | 49.5 |
HLE | 10.0 | 16.0 |
MATH500 | 87.0 | 88.2 |
GPQA-Diamond | 54.0 | 55.1 |
MedQA | 80.3 | 81.7 |
GAIA 分档 53.8 / 55.8 / 33.3(Lv1/Lv2/Lv3)。8B 同向:GAIA 43.7(ARPO 38.8、GRPO 32.0)、WebWalker 42.5、MATH500 84.6。纯数学上增益不大(1.2–3.3 个 AIME 点),大增益集中在需要搜索的多轮 agentic 任务上——这符合直觉:文本 CoT 的浪费,在多轮工具调用里被放大得最厉害。
潜思考是不是真在被用? 论文做了因果干预(MATH500,8B/14B):加 σ=2.0||ν|| 高斯噪声降到 66.4 / 70.2;用随机 token 嵌入替换潜向量降到 41.2 / 44.6;跨题替换降到 44.8 / 48.6;均值替换同样大幅掉点。也就是说潜段不是装饰,破坏其语义就掉 40+ 点。
省在哪。 14B 每题暴露 284 个文本 token,文本 Agent 是 497;8B 是 302 vs 596。而一条轨迹里潜模式跑了 170–183 步推理。
<latent>••••</latent>(固定 K=4 个连续思考)与 <think> 之间二选一,用自蒸馏 + AR-GRPO 学模式选择,靠 vLLM 插件在请求级状态机里拼接投影输出,主打不动词表、复用现有推理栈。HybridAgent 则是训骨干、潜段长度由退出锚点自适应、需要自带引擎。选择很直白:想少改基础设施选 ALAR 一类,想要更长的静默推理和端到端一致的服务语义选 HybridAgent,但得自己承担引擎改造成本。论文自己写了:现有服务引擎不支持多轮混合生成,作者扩展了自己的训练与推理基础设施,才打通"文本 / 潜 / 工具调用"三种状态切换和常驻 KV 工作记忆。Hugging Face 模型卡也明确说明:只用 transformers 加载骨干,得到的是一个纯文本模型;要用潜模式和工具,必须跑仓库里的代码。
Hacker News 上的实测反馈印证了这一点(讨论串 50145337):有人用 8B 的 GGUF IQ4_XS 问"教皇是谁",模型在思考里无限循环同一段话;另一位把 14B 的 8-bit 权重放进 llama.cpp,在一个"搜索 + 摘要"任务上循环五分钟直到耗尽回合预算,换成 BF16 症状相同,因此判断是运行时兼容问题而非量化病理。同一用户还指出模型在推理阶段把数据排成 Markdown 表格,尽管 prompt 要求 CSV。这类复现问题在官方引擎跑通之前,不能算定论,但它说明一件事:这类模型的"可用性"是引擎级属性,不是权重级属性。
成本数字也要按口径读。2.7×–3.7× 是按"每步一次完整骨干前向 + 文本步加词表投影 + 潜步加 HybridLink"逐会计费,再套一个 H100 机时单价与利用率假设算出来的,不含 prefill、不含上下文相关注意力、不含外部工具执行时间。在工具耗时占主导的工作负载里,潜步省下的那部分会被稀释。论文摘要里的 2.7×–3.7× 与正文里"相对文本基线 2.1× 加速"是两个不同口径,别混用。
论文对这一点的处理比多数同类工作认真:暴露的文本 token 少 43%–49%,但因为挑出来的是关键步骤,可见轨迹里"每 100 token 的关键推理步"反而多 26%–28%;在弱/强两种监控器下 AUROC 与同规模文本 Agent 相差不超过 0.022;失败 rollout 中首次错误定位率 98%–99%;从文本反推的纠正提示在 14B/8B 上分别带来 5.4 与 9.1 个点的修复率提升。工具调用方面,有效调用的执行成功率 99.7%,与文本 Agent 持平,有用调用率还高 4.5%–7.7%。
但"可读"是靠最近邻词嵌入实现的伪文本:一个潜向量如果编码了多个 token 的组合语义,读出来只剩最近的那一个。HN 上的批评集中在两点:其一,这与连续 CoT 的差别被论文低估了——任何 Transformer 的潜空间本来就是 token 嵌入所在的空间,工具调用本来就是退出思考模式发 chat token;其二,真正的风险不是"看不见",而是"看见的是解释而非还原",尤其当 RL 直接训在潜段上时,监控信号与优化目标之间会出现缝隙。对受监管场景(论文自己也测了 MedQA),伪文本能承载多少信任,是个待答问题。
适合:自建推理栈、Agent 工作负载以"长思考 + 短动作"为主(深度研究、多跳检索、需要反复试算的分析任务)、能接受改引擎、且已经有 token 账单痛点的团队。省的是解码阶段的 GPU 秒,规模越大越明显。
不适合:只用托管 API 的团队(拿不到这套生成循环);主要成本在工具调用或长 prefill 上的团队;需要严格逐字推理留证的合规场景;以及只想快速试一下的个人——目前第三方运行时还没跟上,容易得出"模型坏了"的错误结论。
git clone https://github.com/togethercomputer/HybridAgent.git && cd HybridAgent
conda create -n hybridagent python=3.11 -y && conda activate hybridagent
pip install torch==2.11.0 --index-url https://download.pytorch.org/whl/cu128
pip install -r requirements.txt && pip install -e .
cp .env.example .env # 搜索工具需要 TAVILY_API_KEY
# 批量混合推理:每题输出混合轨迹、抽取答案、每段潜思考的伪文本、工具调用统计
python -m hybrid_inference.run_batch --model togethercomputer/HybridAgent-8B-Agentic \
--input examples/questions.jsonl --output outputs/results.jsonl --num_samples 4
# 把潜思考渲染成可读伪文本,和文本推理、工具调用交错显示
python -m interpretable_latent_mode --model togethercomputer/HybridAgent-14B-Agentic \
--question "你的问题" --output report.html批量推理里一次跑 --num_samples 4 是个便宜的自检:同一题四个样本,如果潜段长度和出口位置方差极大,说明退出锚点在你的领域上不稳。
迁移前的三个自测指标,建议直接抄论文的口径在自己的负载上重算一遍:每题暴露文本 token 数、每解决一个任务的 GPU 秒(含 prefill 和工具执行)、潜段伪文本的最近邻可读率。三个都朝好的方向走,再谈换引擎;只要有一个明显变差,就先只把 HybridSFT 的"哪些步骤该沉默"当作思路借鉴,不必上整套。
创作说明:本文在资料整理与成文中使用了 AI 辅助(DeepSeek),经作者审阅后发布,作者对内容负责。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。