V1.2.0 版本解读

AetherPDF V1.2.0
多文档多 Agent 协作

多文档 AI 会话 · 多 Agent 协作 · 技能系统 · 记忆系统

月末,财务同事拿到一个文件夹:30 张发票 PDF。要求汇总每张发票的发票号、开票日期、销售方、价税合计,再按供应商和月份分组统计,最后输出一张明细表。

在 V1.1,AetherPDF 的 AI 已经能很好地处理“一份文档”:提取文本、回答问题、编辑内容、操作表单。但面对这个任务,它无能为力。用户只能把同一段提示词重复 30 遍、开 30 次对话,再把 30 段结果自己抄进表格。

这不是个别需求。整理一批合同、审阅一组标书、给一套扫描件批量盖章——“多个文档、一个目标”,才是真实工作里的常态。

把这类任务拆开,会看到四个反复出现的痛点:

  1. 批量任务没法做:AI 一次只能看到一个文档;
  2. 复杂任务没有分工:所有步骤挤在一个对话里,上下文越来越长,又慢又容易出错;
  3. 可重复的流程每次重新教:同样的汇总步骤,下个月还得从头描述一遍;
  4. 关键信息每次重新输入:“我们是一般纳税人,税率 6%”这句话,用户已经说过无数遍。
V1.1 的批量之痛:30 份文档,同一段话要重复说 30 遍

V1.2.0 的核心工作,就是对这四个痛点的系统回答:多文档 AI 会话、多 Agent 协作、技能系统、记忆系统。这次更新包含 24 个提交、80 个文件、约 19000 行新增代码,其中最大的增量是一套全新的 C++ 多智能体引擎。

下面从使用视角逐个展开。

多文档 AI 会话:批量任务的第一块拼图

V1.2.0 新增了多文档 AI 会话:把整个文件夹拖进工作区,然后像和同事说话一样下任务——“把这批发票按供应商汇总金额”。

听起来简单,背后要解决两个工程问题。

第一,上下文里放什么? 30 个文档的文本不可能全塞进对话——几千页内容会瞬间击穿模型的上下文窗口,而且绝大多数和当前任务无关。

我们采用渐进披露:文件列表始终完整可见、可检索,但注入给模型的只有清单本身;当任务需要某个文档时,才把它的内容交给对应的处理单元。上下文永远只装“正在用的那一份”。

渐进披露:文件清单全部可见,上下文一次只装正在用的那一份

第二,大文件夹怎么撑住? 有用户的工作区是上万文件的目录。一次性扫描再渲染列表,主线程直接卡死。V1.2.0 把目录扫描整体后台化——扫描结果通过“收件箱 + 排水泵”的节奏分批回流到界面,用 generation 计数让过期批次自动作废;列表本身也换成了视图回收机制,滚动不再随文件数量恶化。结果是:万级目录打开即响应,扫描在后台悄悄完成。

另外,长会话不必霸占前台。多文档会话可以切到后台继续跑,用户回到正常编辑工作,随时切回查看进度——AI 任务和人的工作真正并行了。

多 Agent 分工:复杂任务的效率引擎

有了多文档入口,下一个问题是:30 张发票的汇总任务,到底谁来干?

如果只靠一个“超级对话”顺序处理 30 个文档,上下文会越滚越大,速度越来越慢,中途任何一步出错都会污染后面所有步骤。

V1.2.0 的答案是分工:采用 Master–Sub Agent 两层架构——

主智能体持任务账本调度,三个子代理在隔间里各看各的文档,并发上限 3

对用户来说,分工过程完全透明:界面上能看到每个子代理的实时状态与产出,谁在提取第几张发票、谁已经完成,一目了然。

并发的克制。 主智能体可以按需派出子代理,但同时活跃的子代理数上限是 3。这不是产品限制,而是对后端服务承载的诚实评估。超限时,派生请求会收到一个结构化错误:

{ "error": "max concurrent sub agents reached (3)" }

关键在于这个错误是还给模型的:主智能体会自行决定排队等前面的子代理完成,还是向用户说明情况——而不是静默失败。引擎侧保留了并发上限的设置接口,后端扩容后,放开只需要改一个数字。

长任务的记性与去处。 30 个文档的任务动辄几分钟,中间断了怎么办?我们提供了两个机制:

Skills:把教过的流程变成可复用资产

多文档和分工解决了“这一次怎么做”,但下个月再来一批发票呢?用户还得把汇总规则重新描述一遍。

V1.2.0 的技能(Skills)系统,就是让“教过 AI 的流程”沉淀下来。一个技能的本质很朴素:一份自然语言的操作手册 + 一份参数协议:

{
  "id": "invoice_amount_summary",
  "name": "发票金额统计汇总",
  "description": "从多张发票 PDF 提取金额、日期、供应商,汇总为结构化统计表",
  "instructions": "1. 用 pdf_get_page_text 提取全文;2. 定位发票号、开票日期、销售方、价税合计;3. 以 JSON 输出……",
  "inputs": [
    { "name": "date_range", "type": "string", "description": "可选:按日期范围过滤" }
  ]
}

instructions 不是代码,是写给 AI 看的步骤;inputs 是参数协议——同一技能既能处理“上个月所有发票”,也能处理“2025 年 Q1 的”,差别只在调用参数。技能创建后,用户下次只需要说:“用发票汇总技能处理这个文件夹。”

渐进披露:省 token 的三级设计。 技能可能有几十个,把全文都塞进系统提示词既贵又吵。我们采用三级披露:

  1. 系统提示词里只注入清单(名称 + 一句话描述)——AI 知道“有什么”;
  2. 需要了解细节时,调用 skill_get 读全文;
  3. 确认匹配后,skill_execute 取回步骤并逐步用常规工具执行。
技能像卡片盒:只看目录、读全文、照步骤执行

大部分对话停留在第一级,只在真正使用时才付出全文的成本。

技能也是可以被管理的。 V1.2.0 提供完整的技能管理窗口:独立编辑弹层(参数协议以 JSON 编辑、实时校验)、导入/导出(导入时做内容去重——完全相同的跳过,有差异的自动换新 id 保存,不会覆盖你的资产)、启用/禁用(禁用的技能既不注入提示词,也无法被执行,从所有渠道“消失”)。甚至 AI 自己在对话中就能创建和修订技能——用户口述流程,AI 落成技能,下次直接复用。

记忆:关键信息只说一次

“我们是一般纳税人,税率 6%,发票抬头是 XX 信息技术有限公司。”——这句话不该有第二遍。

V1.2.0 的记忆系统把“该记住的信息”分成三类,边界写死:

记忆类型内容特征生效范围
全局用户记忆税率、公司抬头、输出偏好所有会话,每轮注入
会话记忆当前这单任务的上下文约定仅本会话
AI 工作笔记AI 在长任务中自己记的中间结论随任务生命周期

边界写死意味着:AI 的临时工作笔记绝不会污染你的全局偏好;会话里聊的临时约定,也不会泄露到下一个客户的任务里。

三类记忆边界写死:全局记忆只说一次,工作笔记用完即弃

记忆同样有管理窗口:逐条启停、随时编辑。禁用一条记忆和禁用一个技能语义一致——从所有注入渠道消失。控制和透明,是记忆系统的设计底线:AI 记住了什么、为什么记住、什么时候用,用户全程可见、可改、可撤销。

场景串联:四个能力如何一起工作

单独看每个能力都是一个点,合在一起才是 V1.2.0 想交付的完整体验。

案例 A|财务批量汇总(30 张发票)

文件夹拖入 → 技能清单里出现「发票金额统计汇总」→ 一句话触发。主智能体派出子代理分批提取,每个子代理只读自己那几张;每完成一张就写任务账本;全部完成后汇总校验“账本张数 = 实际张数”,输出到用户指定的产物目录。整个过程用户只需要开始,和等待。

案例 B|合同审阅(一批标书)

把公司的红线条款存进全局记忆(“违约金上限 20%”“必须约定仲裁地”);把审阅套路固化成「合同审阅清单」技能。之后每来一批合同:选技能 → 子代理逐份并行审阅 → 输出风险点清单。规则更新时只改记忆,流程更新时只改技能。

案例 C|长报告后台跑

200 页行业报告的深度分析,不必守着进度条。切到后台,继续编辑手头的文档;分析结果落在产物目录,标题栏里会话名早已由 AI 自动总结好,回来看一眼就知道哪份是哪份。

数字与展望

回过头看,V1.2.0 之前,AetherPDF 的 AI 是“一个很会聊天的单文档助手”;V1.2.0 之后,它是一个能同时看多份文档、会分工、记得住事、把流程沉淀为资产的工作台。

从 V1.1 单文档助手到 V1.2 工作台:会分工、流程可复用、记得住

这次更新的支撑工程同样值得记录:长会话的两层历史治理(工具结果压实 + 工作笔记出上下文)解决了超长任务的请求超限;气泡懒加载与后台解析让万条消息的会话依然流畅;此外还修复了 XRef Stream 解析偏移、CID 字体渲染乱码、解析器无限递归等多个底层引擎问题。

往前看,我们正在对工具面做系统性的合理性与充分性评估,让 AI 使用工具的每一步更稳、更准;后端扩容后,子代理并发上限会随一个数字放开;技能的导入/导出格式已经就绪——把好流程分享给同事,是下一步自然会发生的事。

30 张发票只是开始。真正的目标是:凡是重复的,都该有技能;凡是重要的,都该被记住;凡是批量的,都值得同时进行。

AetherPDF V1.2.0 已发布,欢迎升级体验。

附:关于 agent 架构的必要性

如果你读完想问:“为什么这些功能是必须的?”——这里有一份简短的回答。

一个能处理真实工作流的 agent,需要具备四个基础能力。它们不是可选的功能,而是架构上的必要条件:

能力解决的问题没有它会怎样
多文档会话任务涉及的输入不止一个文档agent 只能在单文档内工作,批量任务无法启动
多 Agent 分工长任务的上下文和成本会失控单会话串行处理,越跑越慢,中途出错全盘污染
技能系统重复流程需要可复用每次任务都要重新描述,用户负担不会降低
记忆系统关键信息需要跨会话持久同一个偏好说一百遍,agent 始终是“第一次见你”

把这四个能力组合起来,agent 才从一个“对话界面”变成一个“工作系统”。

AetherPDF V1.2.0 做的,就是把这四个基础能力补齐。

如果你也有批量文档要处理

Mac App Store 下载 AetherPDF