【免费下载链接】AgentCPM
An End-to-End Infrastructure for Training and Evaluating Various LLM Agents
AgentCPM-Report 是清华、人大与 ModelBest 联合开源的 8B 参数本地 DeepResearch 智能体,它靠4 类 Prompt 模板驱动检索-写作状态机,平均执行约 40 轮深度检索与近 100 轮思维链推理,就能在本地生成媲美顶级闭源系统的万字研究报告。本文带你拆开它的核心原理。
一、它是什么:8B 模型做出“大模型级”调研报告 🎯
AgentCPM-Report 基于 MiniCPM4.1 的 80 亿参数基座,接受一句用户指令后自主完成“检索 → 规划 → 写作 → 扩展 → 再检索”的长程任务。在 DeepResearch Bench 与 DeepResearch Gym 等评测上,它的综合表现与 Gemini-2.5-Pro-DeepResearch 等闭源系统处于同一梯队,且支持完全离线的本地部署。
仓库中 AgentCPM-Report 的核心目录结构如下:
AgentCPM-Report/ ├── agentcpm-report-demo/ # 一键部署的 docker-compose 配置 ├── examples/ # AgentCPM-Report 的管线配置示例 ├── prompts/ # 报告生成所需的 Prompt 模板 ├── servers/ # 自定义服务(报告生成管线主体) └── UltraRAG/ # 部署框架 UltraRAG详细文档见 AgentCPM-Report/README_zh.md。
二、4 类 Prompt 模板:Analyst-Searcher-Writer 的“剧本” 📝
AgentCPM-Report 的多智能体系统由三类角色组成:Analyst(分析者)、Searcher(检索者)、Writer(写作者)。它们各自由一类 Prompt 模板驱动,模板都存放在AgentCPM-Report/prompts/目录:
| Prompt 模板 | 驱动角色 | 核心任务 | 输出动作 |
|---|---|---|---|
| surveycpm_search.jinja | Searcher | 根据用户问题、当前大纲与分析者指令,提炼 1~5 个检索关键词 | search |
| surveycpm_init_plan.jinja | Analyst | 基于最新检索信息,生成报告标题与顶层章节大纲 | init-plan |
| surveycpm_extend_plan.jinja | Analyst | 审视全文,判断某章节是否需要扩展出子章节 | extend-plan/nop |
| surveycpm_write.jinja | Writer | 按指令撰写指定章节正文,并附引用标注 | write |
其中 surveycpm_write_citation.jinja 是 write 模板的“强制引用”变体:它要求每条事实性陈述后必须紧跟[1]、[1][3][5]这类文档编号,禁止虚构不存在的引用,用于对引用准确率要求更高的场景。
统一“thought + action”输出协议
4 个模板共享同一套输出协议:模型必须先输出<thought>思维链,再输出 JSON 格式的<action>动作。这套设计带来两个关键好处:
- 可解析、可校验:状态机用正则在 surveycpm_parse_response 中抽取
<thought>与<action>,并校验动作名是否在["search", "init-plan", "extend-plan", "nop", "write"]白名单内、内容语言是否与用户指令一致; - 失败可重试:解析失败时状态原地保持并重新推理(hard mode 下更严格),这就是“近 100 轮推理”的来源——每一步都是一次完整的“思考 → 行动 → 校验”循环。
三、140 步状态机:万字报告是怎样“滚”出来的 ⚙️
整个生成流程由一份 YAML 管线配置调度,入口是 examples/AgentCPM-Report.yaml:一个times: 140的大循环,每轮先用router.surveycpm_state_router读取状态,再分派到 search、analyst-init_plan、write、analyst-extend_plan、done 五个分支之一。
状态转移逻辑集中在 surveycpm_update_state,核心规则可以浓缩成一条主循环:
search(提炼关键词→批量检索→更新检索信息) │ 大纲尚未生成(cursor == outline) ▼ analyst-init_plan(生成标题+顶层章节) │ 大纲就绪 ▼ write(写当前章节正文) ◄────────────┐ │ 章节写完 │ └──► search(为下一章节检索)────┘ │ 所有章节写完 ▼ analyst-extend_plan(最多扩展 5 轮,可 nop 直接结束) ▼ done → 格式化为最终 Markdown 报告几个关键参数定义在 servers/custom/parameter.yaml:surveycpm_max_step: 140是总步数上限(防死循环),surveycpm_max_extend_step: 5限制深度扩展轮数。实际运行中,模型平均每篇报告执行约40 轮检索、累计近100 轮推理,在 140 步预算内自然收敛。
写作进度由cursor(游标)追踪:surveycpm_state_init 初始化时游标为outline,随后 surveycpm_after_init_plan 把大纲写入结构化 survey(JSON 树),surveycpm_after_write 每写完一节就把内容填进对应节点并把游标推进到下一节——报告像“填格子”一样逐节成型,互不覆盖、不会重复。
四、引用系统:从 textid 到 [1][2][3] 的溯源闭环 🔗
万字报告的可信度来自一套闭环引用机制:
- 统一编号:surveycpm_process_passages_with_citation 对多路检索结果去重,并按 top-k 配额(大纲阶段 20 条、写作阶段 10 条)截取片段,给每条唯一文档分配
textid1、textid2…的持久编号,注册表由 surveycpm_init_citation_registry 在流程开始前初始化; - 写作期约束:Writer 模板要求正文使用
\cite{textidN}标注,surveycpm_after_write 还会提取本次检索到的 bibkey 集合用于一致性校验,杜绝“凭空引用”; - 输出期渲染:surveycpm_format_output 将 survey 树渲染为带
## 1 / ### 1.1层级的干净 Markdown,并把\cite{textid2, textid1}自动替换为去重排序后的[1][2]角标(见 格式化函数中的引用替换),最终交付一篇可追溯来源的万字报告。
五、如何快速部署体验 🚀
无需写一行代码,官方提供 docker-compose 一键部署(集成 RAG 框架 UltraRAG、推理引擎 vLLM 与向量数据库 Milvus):
git clone https://gitcode.com/gh_mirrors/ag/AgentCPM cd AgentCPM/AgentCPM-Report/agentcpm-report-demo cp env.example .env docker-compose -f docker-compose.yml up -d --build- 首次启动需拉取镜像、下载模型,约 30 分钟;
- 纯 CPU 机器可改用 docker-compose.cpu.yml(llama.cpp + GGUF 格式模型);
- 打开
http://localhost:5050即可在图形界面上传本地知识库、建索引,然后选择 AgentCPM-Report 管线开始生成报告。
模型与环境变量配置说明见 env.example,部署细节见 README_zh.md 快速开始章节。
六、总结 🏁
AgentCPM-Report 的精髓在于:用 4 类 Prompt 模板定义角色剧本,用 140 步状态机约束执行节奏,用引用注册表保障事实溯源。这种“模板 + 状态机 + 校验重试”的工程范式,让 8B 端侧模型也能稳定完成 40 轮检索、近 100 轮推理的复杂 DeepResearch 任务——这正是它比肩顶级闭源系统、又保持本地安全的底层原因。
【免费下载链接】AgentCPM
An End-to-End Infrastructure for Training and Evaluating Various LLM Agents
相关推荐
jQuery Timepicker 最佳实践:避免常见陷阱的 15 个技巧
jQuery Timepicker 最佳实践:避免常见陷阱的 15 个技巧 jQuery Timepicker 是一款受 Google Calendar 启发的
前端UI组件OOMWOO 扫地机器人 I/O 板驱动轮连接器与万向轮规格深度解析
OOMWOO 扫地机器人 I/O 板驱动轮连接器与万向轮规格深度解析 导读 本文基于 contributions/part specs/OsakaTX/io b
机器人ROS智能硬件嵌入式claude-code-skill-factory 代码实现原理:4大Factory Prompt模板如何驱动AI批量生成生产级Skill?
claude code skill factory 代码实现原理:4大Factory Prompt模板如何驱动AI批量生成生产级Skill? claude co
人工智能AI 技能提示工程开发工具
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考