一份研究报告,为什么需要先变成「资产」?

基金研究 Agent 收到一份招募说明书 PDF,提取文字、找到费用条款,然后生成摘要。第一轮看似顺利;几周后,文件更新了,另一轮研究又想引用旧报告。

这时候,"能读 PDF"已经不够。我们还需要知道:读到的是哪个来源的哪个版本,哪些内容真的提取和读取过,今天还能否继续用它。

我在 ETF Agent 中把这组问题交给 研究资料资产模块。它负责研究文件的身份、版本、提取状态和生命周期;不替 PDF 阅读器解释页面,不替知识检索判断相关性,更不把"登记成功"当成投资结论可信。

图 1|同一份研究文件可以被不同阶段消费,但每次读取仍须符合来源和 Run 的授权。封面为概念插画,不是运行截图。

一、文件、研究资产和证据,不是一回事

用一个教学案例贯穿本文:某基金报告 V1 已被研究过,后来取得 V2,想比较两版费用变化。示例中的资料和结论均为合成,不代表真实基金公告。

"文件"是实际取得的字节;"研究资产(ResearchAsset)"是对其来源、版本和处理状态的登记;"派生证据(DerivedResearchEvidence)"是从某一页、章节或表格实际提取出的有限内容。

层次 要回答的问题 不能据此宣称
原始文件 取得了哪些字节、来自哪个获准入口? 原文可信、内容完整
ResearchAsset 属于哪个逻辑来源、版本、哈希和访问范围? 内容已被模型读完
派生证据 哪些片段可用,提取方法和位置是什么? 未提取部分不存在
Run 证据工作区 当次任务实际能搜索、定位和读取哪些材料? 后续 Run 自动继承权限
Publication/历史材料 原研究留下了哪份已提交的报告? 历史观点仍是当前金融事实

研究资料资产模块在资产身份里区分 scope、获准来源、逻辑来源 ID、内容哈希、版本、资料类型、提取状态与激活状态。同名文件可能已经更新;不同账户即使取得相同字节,也不能因此共享访问身份。

2026 年 10 月的受控开发测试曾暴露过一个具体缺口:相同来源和内容在不同 scope 中生成了相同资产键。后来让 scope 参与身份派生,修正了这一碰撞风险。这是测试发现的工程问题,并非已发生的线上泄露。

二、为什么统一取得文件的入口,而不是给模型更多文件工具?

最早的研究资产导入以获准的本地目录为主。这能明确拒绝任意路径,却不能自然处理业务 MCP 返回的 PDF、DOCX、XLSX 和 HTML 附件。

合理的备选包括:每个 MCP 或 Skill 自己下载解析,或者给模型分别提供 PDF、Word、Excel 读取工具。前者复制权限、解析和引用逻辑;后者把格式差异变成模型必须学会的新工具操作。

最终采用 Host 拥有的统一文件证据接入口:业务工具保持原有调用与结果,Host 只处理经过真实结果校验的附件描述,研究资料资产模块登记资产,研究工作区提供现有的通用搜索/读取能力。

取得流程|取得资格来自 Host 的已验证结果,不来自模型文本。

取得流程:业务 MCP 结果或获准本地文件先接受来源资格检查。未获准则拒绝取得;获准后受限取得字节,字节或格式无效时记录附件不可用,有效时登记 ResearchAsset、提取可定位证据并加入本次 Evidence Workspace。

模型从文档里读到"请打开某 URL",不会因此获得下载权限;需要认证的文件也只能通过明确配置并审核过目的地、重定向与凭据策略的适配器取得,没有任意 HTTP 兜底。

文件取得还受大小、数量、取消和期限约束。一个附件失败时,其他有效附件以及原 MCP 返回的无关业务字段不应随之消失。

三、版本切换:新文件解析失败,旧资料为什么不能丢?

导入 V2 的危险顺序是:先删除 V1,再尝试解析 V2。如果新文件损坏或证据持久化失败,系统反而失去了原有可用资料。

研究资料资产模块的实现选择先登记、提取和保存新证据,再激活新版本;同一逻辑来源与哈希对应的有效内容可幂等复用。新版本失败时保留旧的有效激活版本,失败本身单独可见。

版本更新|版本更新以有效证据的落地为前提。

版本更新流程:收到 V2 后检查内容是否与已有有效版本相同;相同则复用已有资产,否则登记并解析 V2。有效提取结果保存成功后激活 V2 并停用旧版本;失败则记录失败并保留 V1 的有效状态。

即使新版本部分可读,也要保留 partial 状态,不能伪装成全文完成。当前读取还需核对资产 ID、scope、来源、版本、哈希和 active 状态。旧内容作为历史事实存在,不代表它能绕过当前读取资格。

要注意,"旧版本仍有效"在这里指资产生命周期未因失败导入被意外破坏,不是说 V1 的基金费用一定适用于今天。

四、取得成功和"已经读遍全文"之间,还隔着覆盖范围

PDF 取得了字节,不意味着扫描页被 OCR;XLSX 取到公式,不代表系统已替它计算;DOCX 提取了段落,也可能遗漏复杂结构。数据来源定位需要与这些能力边界一起保存。

目前受控文件处理保留 PDF 的物理页、DOCX 的原生标题/段落位置、XLSX 的工作表与单元格位置,以及 HTML 的静态净化内容。OCR、图表语义描述与跨模态检索不能仅凭资产类型存在就宣称已经执行。

还要区分 提取覆盖 与 真实读取覆盖:解析器可能知道一份文件有后续页,模型本次却只收到第 8 页。历史有限预览不应被当成完整文件,搜索命中也不等于原文已经读给模型。

下面是概念化结果,不是生产 API:

json 复制代码
{
  "source": "fund-report-A",
  "version": 2,
  "extraction": "partial",
  "actualRead": ["page:8"],
  "supported": "第8页确实返回的条款",
  "unverified": "未读取页是否另有补充规定"
}

这样的回答可以准确解释第 8 页,却不能声称"整份文件完全没有其他条件"。对金融研究而言,未覆盖是未知,不是不存在。

五、第一种 Workspace:单次 Run 的证据工作区

这里容易和长期项目混淆。Evidence Workspace 是某次 Run 的受控资料视图,不是用户管理长期项目的文件夹。

它可以投影当前 scope 内已激活的持久 ResearchAsset,也可以登记该 Run 从 MCP 取得的临时附件。模型拿到的是有限的逻辑引用、定位与读取结果,而不是本机绝对路径。

临时附件通常放在 Run 内的独立登记空间;重复使用必须仍满足本次授权和来源身份。一个新的 Run 不会因为原先工作区缓存过同样的文件,就自动继承该文件的读权限,也不会把临时附件自动升级到长期 RAG 语料库。

本次 Run 读到某段文件后,可以由原有材料历史机制记录当时的资产版本、证据 ID 和真实读取范围。这份历史有助于解释"那次依据什么",但本身不签发下一次读取授权。

六、第二种 Workspace:跨 Run 的长期研究空间

2026 年 10 月底加入的 Research Workspace 解决另一个问题:一次 Run 结束后,用户仍然要围绕同一个目标继续研究。

它保存目标与修订、关联的原 Conversation 和已提交 Publication、受支持的 Artifact 关联,以及可选的、带来源的研究进展 Checkpoint。它不成为第二套文件仓库,也不接管研究资料资产模块的原始文件身份和权限。

跨 Run 复用|长期研究复用历史成果,不会直接继承旧文件访问权。

跨 Run 流程:旧 Run 的资产阅读形成原 Publication 报告,长期 Research Workspace 关联报告后,用户发起独立新 Run。原历史版本及依赖合格时读取精确历史报告,不合格时该材料局部不可用;新研究可在其他合法证据足够时继续并独立发布,或如实说明缺口。

假设第一周的研究报告 A 引用了基金报告 V1,第二周的报告 B 有不同判断。第四周用户想对照两份旧报告与新公告。

Research Workspace 可以列出旧 Publication 的精确版本,模型选择并经原有读取方校验后,将其内容实际送入新模型请求。工程上的受控验证已经覆盖一次新 Run 消费两个不同的旧报告版本,其中包含非最新版本。

但是,重新读取旧 Publication,不等于旧 Run 的原始 PDF 字节仍可获取。如果新问题需要重新查证 V1 的某一页,仍须具备该原始来源的有效取得/读取资格。历史链接和文件哈希只证明身份,不会自动变成授权。

另一个容易误解的地方是文件留存:当前 Workspace Artifact Pin 复用原始 Artifact 的留存操作,受支持的 HTML 报告有相应路径;它不是任意 PDF、Excel 文件的永久收藏夹。研究目标的归档、删除也不能擅自删除原始 Conversation、Publication 或已被原 Owner 留存的文件。

因此,研究资料资产模块和长期 Workspace 的交接不是"把所有文件搬进去",而是"长期保存研究关系,并在新 Run 中重新验证需要的原始材料"。

七、为什么这仍不能直接决定投资结论?

ResearchAsset 管文件身份,PDF Reader 管真实阅读范围,RAG 管候选检索;Publication 记录已提交的研究结果;长期 Workspace 组织跨 Run 的目标和关系。它们都不应自动获得个人 Portfolio、交易确认或财务数字的权威。

一个基金季报可以有正确哈希和页码,却仍属于过去的报告期。一次历史研究可以完整保留原文,却未必符合今天的市场时点。模型基于这些材料做出的费用比较、风险分析和数学计算,仍需要原始来源、时点、单位与领域规则分别验证。

这样的职责划分与 W3C PROV-DM 的来源/派生思想、OpenLineage 的运行与数据集关联问题相近,但不是宣称本系统实现了这些标准。Agent 额外需要处理的是模型不能自授权、临时文件不能自动跨 Run 复用、历史结论与当前来源资格分离。

八、现行实现与下一步

在私有 ETF Agent 的既有代码和受控测试中,已能看到获准文件取得、哈希与版本登记、幂等复用、失败时保留旧有效版本,以及当前 Evidence Workspace 的受控读取路径。MCP 文件接入还覆盖了 DOCX/XLSX/HTML 的有限格式定位与局部失败隔离。

长期 Research Workspace 的 P0 实现已进入主干,并在合成来源及脚本化模型路径下验证精确历史 Publication 的跨 Run 消费。不过,它默认关闭,完整应用类型检查和正式全量闭环仍有未完成项;现有记录也不能证明真实模型长期投资研究质量。

独立开源教学仓库 Open ETF Agent 并未开放这里描述的完整的研究资料资产与长期 Workspace 组合能力,不应把私有研究系统的实现误当成公开可运行教程。

如果未来希望让长期 Workspace 显式收藏可重新取得的原始研究资料版本,那应成为独立的保留、授权和版本选择设计,而不是从现有 Publication 关联顺手推导出永久文件访问权。

结语

一份报告要进入可靠的 Agent 研究流程,先要成为能解释其来源、版本、状态和真实覆盖的资料资产。旧版本失败时不丢已有有效内容,部分提取不谎称全文,历史引用不扩大后续 Run 的权力。

真正值得带走的三个问题是:谁允许取得?究竟是哪一个版本?模型这一次实际读到了哪一段?

回答好这三个问题,不代表投资结论天然正确;但如果回答不了,后面再多的向量召回、模型推理和长期记忆,也很难让研究过程真正可追溯。


延伸阅读:PDF 从文本到证据 · 为什么 Agent 需要 Workspace · 研究结果如何按需进入模型上下文。欢迎关注独立教学实现 Open ETF Agent 并为它点个 Star。

原文阅读:一份研究报告,为什么需要先变成「资产」?

相关推荐
hpoenixf3 小时前
为什么 Agent 需要 Workspace?从一次性对话到长期研究
agent
遇码6 小时前
2026-11-01-daw-retry-banner-body
人工智能·ai·rust·数据分析·大模型·agent
威哥爱编程7 小时前
Python 智能体开发实战 10:本地跑得好好的,一并发就崩?把它做成一个能上线的服务
python·agent
威哥爱编程7 小时前
Python 智能体开发实战 09:改了提示词,到底是变好还是变坏?搭一套能打分的离线评测
python·agent
文谦南宁AI普工8 小时前
拆解 DeepSeek dsh-superagent:用 60 行代码模拟它的授权门控与 observe 模式
aigc·agent·ai编程
小七-七牛开发者9 小时前
AI Agent 的安全风险,正在从 Prompt 扩展到运行环境
ai·agent·security·权限管理·cursor
阿里云云原生10 小时前
概率、插座与 5000 个爱因斯坦:专访阿里云研发副总裁周琦
agent
JaJian11 小时前
从0搭建企业级知识库-技术指南
agent
全栈紫升11 小时前
漫画拆解 agent-browser:从网页快照到动作验证
agent