LLM · 技术报告速读 | MiroThinker 系列
开一个新系列,记录一下这段时间速读的技术报告,以免忘掉。
技术报告列表
MiroThinker 目前发布的核心技术报告(截至 202603):
- MiroThinker: Pushing the Performance Boundaries of Open-Source Research Agents via Model, Context, and Interactive Scaling,https://arxiv.org/abs/2511.11793
- MiroFlow: Towards High-Performance and Robust Open-Source Agent Framework for General Deep Research Tasks,https://arxiv.org/abs/2602.22808
- MiroThinker-1.7 & H1: Towards Heavy-Duty Research Agents via Verification,https://arxiv.org/abs/2603.15726
个人收获记录:
感觉 mirothinker 的技术报告,是我的 agentic 能力 + context 管理启蒙。
MiroThinker
1 故事核心
scaling 的新维度 - 除了“扩大模型参数”和“增加上下文长度”之外,“interactive scaling”,即 agent 与外部环境(如工具、网络)的交互深度和频率,是提升性能的第三个关键维度。它不像传统方法那样让模型在长 cot 中闭门造车,而是通过频繁与外部环境互动来获取反馈、纠正错误,从而提升可靠性。
2 具体技术
模型基座与架构:
- 基座模型:基于 Qwen2.5 系列(8B、30B、72B)进行后训练。选择 Qwen2.5 是因为其本身具有不错的指令跟随和工具调用基础。
- 上下文窗口:原生支持 128K,通过 RoPE 扩展等方式微调到 256K,以满足长交互链的需求。
- 工具接口:模型以函数调用(function call) 形式与工具交互,输出包含工具名和参数的结构化 JSON,环境返回结果后继续推理。这种设计保证了交互的可控性和可解析性。
构建 agentic 训练数据:
- 种子任务来源:
- 从 GAIA、WebArena、复杂问答等数据集中,收集需要多步推理和工具使用的任务。
- 通过构建知识图谱、事实提取和“约束混淆”,生成需要跨文档多跳推理的复杂问答数据。
- 轨迹生成:
- 结合单智能体(ReAct)和多智能体(MiroFlow)范式,使用多种 SOTA 大模型生成高质量的工具调用轨迹。
- 对于部分任务,会人工编写或通过规则构造“理想交互过程”,以保证策略多样性。
- 最终轨迹不仅包含模型输出,还包含每次工具调用的返回结果,形成完整的(用户问题 → 交替的工具调用与观察 → 最终答案)序列。
- 数据过滤:只保留最终答案正确且交互逻辑合理的轨迹,确保训练数据的质量。
三阶段训练流程:
- SFT 冷启动:在高质量的交互数据上进行初步训练,让模型获得基本的工具调用能力和多步交互的格式感。
- 偏好学习:通过直接偏好优化(DPO)技术,让模型学习更符合人类偏好的行为。
- 偏好对构建:对于同一个任务,收集两条不同的交互轨迹:一条是成功且高效的(chosen),另一条是失败的、走弯路的或有工具调用错误的(rejected)。
- 失败轨迹可以来自 SFT 模型早期版本的采样,或者教师模型故意犯错的生成。
- 偏好对在整个轨迹级别构建,而不是单步级别,这使得模型学会从全局优化交互策略。
- 强化学习:采用 GRPO 等算法,在真实环境中进行交互试错,最终习得“交互扩展”能力。
- 环境设计:任务环境会真实调用搜索引擎、Python 解释器等,模型得到真实的观察反馈。是 Linux 沙盒(支持 Shell 命令和 Python 代码执行)。
- 奖励设计:奖励是基于结果的验证奖励:对于有明确答案的任务(如 GAIA),直接比对答案字符串或等价性判断;对于开放式任务,则用规则或 LLM-as-judge 给出奖励(0 或 1,或连续值)。
- 没有过程奖励:不针对中间推理或工具调用是否合理给予奖励,完全依赖最终结果。这让模型能自由探索调用工具的时机和策略。
- 交互步数的课程学习(curriculum learning):RL 训练初期,把最大交互步数设得较小(如 20 步),让模型先学会短程有效交互。随着训练推进,逐步提高允许的最大步数,直至 600 步。这种课程策略避免了训练初期因长序列导致的不稳定。
- 结果显示,允许更多交互步数能持续提升任务成功率,直到接近 600 步才逐渐饱和。而如果不允许交互(纯推理)或交互很少,即便是 72B 模型表现也很差。
tool set 与交互协议:
- tool 包括:
- 网络搜索:可以发起搜索查询,返回页面摘要和链接。支持多轮搜索,以便深入查找信息。
- 网页阅读:给定 URL,工具返回页面的全文(或可读文本),模型能从中提取关键信息。
- Python 代码执行:模型可以写代码进行数值计算、数据处理、画图,甚至通过 API 调用其他在线服务。执行结果(标准输出、错误、返回值)会返回。
- 其他工具:可能包括简单的文件操作、知识库查询等,但对性能影响最大的是搜索和代码执行。
- 交互形式采用 ReAct 风格:模型输出 Thought(可选)、Action(工具调用)→ 环境返回 Observation → 模型继续输出。所有历史都保留在 256K 窗口内。
上下文管理:
- 为了在 256K 窗口内容纳 600 次工具调用,团队设计了基于近期的上下文保留策略(Recency-Based Context Retention)。模型保留完整的 thought、action 轨迹,但仅保留最近 K 次的 tool observation,省略早期冗余信息,极大提高了上下文利用效率。
- 关于长 context:尽管推理时可能生成 256K tokens,但其中大量是工具返回的观察结果,模型真正生成的 tokens 只占一部分。通过 KV cache 复用等技术,可以大幅降低推理延迟。
当前的局限性:
- 工具使用效率:RL 导致工具调用频率大幅增加,但其中部分调用是冗余或低效的。
- 思维链过长:RL 倾向于生成极长的推理链以提高准确率,这降低了人类阅读的体验并拖慢了任务完成速度。
- 语言混合:在处理非英语(如中文)输入时,模型的内部推理过程可能会出现中英文混杂的现象。
- 沙盒熟练度:对代码执行和文件管理工具的使用仍不够完美,偶尔会导致超时或误用工具(例如用代码工具去硬抓取网页,而不是用专门的爬虫工具)。
MiroFlow
MiroFlow 是清华大学与 MiroMind AI 于 2026 年 2 月联合发布的一个面向通用 deep research 任务的开源 Agent 框架。
相关链接:
- MiroFlow,Agent 框架,https://github.com/MiroMindAI/MiroFlow
- MiroThinker,基础模型,https://github.com/MiroMindAI/mirothinker
- MiroVerse,训练数据集,https://huggingface.co/datasets/miromind-ai/MiroVerse-v0.1
还没太看。感觉有点复杂。
MiroThinker-1.7 & H1
1 主要内容
- MiroThinker-1.7:一款为复杂长时程推理任务设计的新型研究智能体。它通过在“智能体中期训练”(agentic mid-training)阶段强调结构化规划、情境推理和工具交互,显著提升了每个交互步骤的可靠性,从而在复杂任务中实现更有效的多步交互与持续推理。
- MiroThinker-H1:基于 1.7 构建,进一步引入 直接嵌入推理过程的验证机制。该机制可在推理过程中对每一步中间决策进行局部评估与修正,并在全局层面审计整个推理轨迹,确保最终答案由连贯的证据链支撑。
- 基础架构:基于 阿里巴巴 Qwen3 系列进行微调,30B-mini 版使用 Qwen3-30B-A3B-Thinking-2507,235B 版使用 Qwen3-235B-A22B-Thinking-2507。
- 技术规格:支持 256K 超长上下文窗口,单任务最多进行 300 次工具调用(1.0 版本甚至可达 600 次),使模型具备搜索、浏览、分析、验证、总结的完整闭环能力。
2 具体技术
似乎 mirothinker-1.7 在上一个版本的基础上,在 SFT-DPO-RL 之前,加了一个 mid-training 的过程。
- 似乎就是为了学 结构化规划、情境推理、工具调用 等等的原子能力的。
- 这是为 Agent 核心能力设计专门的训练阶段。使用高质量、多样化的合成数据。
Agentic Workflow 设计:
- 仅保留最近 5 次的 observation,但保留全部 thought 和 action,以优化上下文管理。
- 若当前 episode 达到最大步数(T_max)仍未给出合法答案,则触发 restart(重启),并丢弃历史记录以全新状态继续,最多允许 R_max 次重试。
- 最后一次 episode 中若仍不理想,会从历史中抽取“最好的中间答案”作为兜底输出。
H1 的核心则是“Heavy-Duty Reasoning”(重型推理),核心是在推理链中直接嵌入验证,实现“边思考,边检查”。它在推理中嵌入了双重验证体系:
- 局部验证:评估并优化每一步推理决策,及时发现并修正偏差。
- 全局验证:审计整个推理轨迹,确保最终答案建立在连贯的证据链之上。
局部验证:在生成每一个关键中间决策(如一段推理、一个搜索查询)之后,会立即触发一次局部自检。
- 实现机制:可能通过一个隐式或显式的“验证者”子模块,或通过提示工程,让模型质问自己:“这个查询在当前语境下是否精准?有没有更优的词?上一步得到的结论有逻辑漏洞吗?”
- 效果:如果发现偏差,它会在同一个推理回合内立刻修正,比如重写一个更精确的搜索 query,或者否定上一步的逻辑推理并给出新的推理。这就避免了错误向后传播。
全局验证:当模型准备输出最终答案前,会进行全局审计,检查“最终结论是否完全由推理链中的证据支撑”。
- 核心逻辑:它会回溯所有步骤,检查是否存在“跳跃式结论”或“忽略反例”。只有确认证据链是完整、连贯、没有矛盾的,才会输出最终答案。
- 价值:这对金融分析、科学报告等要求高度事实准确性的任务至关重要,它能大幅减少幻觉和逻辑断层。
3 关于“长尾样本”
(是 stepfun 的人跟我说 长尾样本很重要之类的,忘记具体怎么说的了,所以特意关注了一下)
- 这里提到的“长尾样本”并不是指数据分布中罕见的冷门数据,而是指在强化学习(RL)训练过程中,那些难度极大、耗时极长、难以快速收敛或容易失败的任务样本。具体的,
- 特征:需要极多的推理步数、复杂的工具调用序列,或者极易陷入死循环/错误路径。
- 问题: 在传统的并行训练架构中,如果一批任务中混入了几个“长尾样本”,其他简单的任务早就跑完了,而这几个难的任务还在运行。这会导致:
- 计算资源闲置:等待长尾样本完成时,其他 GPU/CPU 可能在空转。
- 训练偏差:如果因为超时直接丢弃这些长尾样本,模型就永远学不会解决最难的问题,导致性能上限被锁死。
- 分布扭曲:训练数据中缺乏高难度样本的正确轨迹。
- 解决方案:为了解决长尾样本被“饿死”或拖慢整体进度的问题,MiroThinker 引入了优先级调度:识别那些正在运行且尚未完成的、可能属于“长尾”难度的任务,给予这些任务更高的执行优先级或更多的资源保障,确保它们能尽早完成,并把它们的轨迹及时纳入训练。
- 一个配套技术:
- 问题:在面对极难任务时,模型可能会因为多次失败而变得“过度自信”或“过早坍缩”,即对某些错误路径的概率赋予极低值,导致不再探索。
- 解决方案:引入针对性的熵控制机制。对于负样本中低概率的 token,施加额外的 KL 散度惩罚。
(未整理的原始笔记)
GAIA、tau-bench 都是什么?
===
为什么 miro thinker 在预测未来时,不是已经把结果内化了 然后输出看似合理的 cot,而是真的在预测呢?如果预测未来的 benchmark 被放在数据集里了,那 LLM 应该都学会了(那其他人也都可以在这个 benchmark 上训;
这好像是一个实时更新的 benchmark。
miroflow 居然只有 2 个 cite… 但是好像有 1k 的 star。
MiroThinker v1.0 我关注 3 点:1. 系统架构怎么搭(对应 react 怎么搞,上下文怎么维护),2. 这个模型具体怎么训(对应三阶段),3. 具体(每个阶段)用什么数据来训练,数据怎么造。
截断。怪不得我调用 copilot 经常说输出被截断了。
DPO 数据咋造的:正样本 n 个,负样本 m 个,于是有 mn 个 preference 数据。同时再加一个对正样本的 sft loss,防止 DPO 过拟合。
(有趣,这种方式能不能在传统 RL 上做)
让 small_model 的 action 分布靠近 strong_model:这难道不是直接蒸馏大模型吗?
Priority Scheduling(解决长尾问题)这个 estimate_success_rate 是怎么做到的

浙公网安备 33010602011771号