林子豪的 PKM
← 返回 Blog

Smart Read Layer

Agent 说“读这个文件”时,runtime 不一定要把原始字节流直接塞给模型。读操作可以先经过类型感知、可追溯、可展开的处理层。

2 min read
aiagentcontext

agent 说“读这个东西”,不一定意味着把原始内容直接塞进模型。

中间可以有一层 smart read layer

这层东西负责把外部材料变成更适合模型使用的形式,同时尽量保留来源和回到原文的能力。

因为不同对象的“读”并不一样。

读一个短 markdown 文件,可以直接给全文。

读一个几千行代码文件,直接塞全文可能不是最好。更好的第一步也许是给 symbol outline、import/export、相关函数位置,再按问题展开具体函数体。

读 PDF,要区分可提取文本的 PDF 和扫描件。前者可以走文本提取,后者可能要 OCR。OCR 结果还应该带置信度,而不是伪装成完全可靠的原文。

读 CSV 或 Excel,第一步也许不是给所有行,而是列名、schema、样本值、统计摘要,再根据问题展开相关行。

读日志文件,直接给几万行日志通常没有意义。可以先做去重、聚类、时间线、错误摘要,再保留 drill-down 到原始日志的入口。

这些都属于 smart read layer 的工作。

它的目标不是替模型思考结论,而是把“读取对象”这件事做得更类型感知、更节省 context、更可追溯。

一个好的 smart read layer 通常有几个性质。

第一,先给结构,再展开细节。

大文件、大文档、大日志不应该默认全文进入 context。先给目录、metadata、摘要、symbol、表格 schema,让 agent 判断下一步需要展开哪里。

第二,保留 provenance。

返回的内容最好带文件路径、行号、页码、symbol、时间戳或原始位置。这样后续回答、修改、验证都能回到来源。

第三,区分无损和有损处理。

编码修复、解压、抽取标题这类处理相对稳定。高度语义化摘要、OCR 猜测、意图分析就有损,需要标注不确定性。

第四,能恢复原文。

摘要和结构化视图只是工作视图,不应该切断回到 raw content 的路。需要精确判断时,agent 应该能展开原始片段。

smart read layer 也是 context 管理 的一部分。它决定工具读回来的 observation 以什么形态进入候选材料池,后续再由组装层决定哪些进入当前轮。

这里要小心一个边界:smart read layer 不应该完全隐藏带策略判断的过滤。

比如它可以说“这个日志有三类重复错误,下面是摘要和原始位置”。但如果它擅自判断“这些内容不重要,所以不告诉 agent”,就可能丢掉关键线索。

所以更稳的方式是 progressive disclosure:默认给轻量结构和摘要,需要时可以展开原文。

这样 agent 不需要每次都面对原始字节流,也不会被处理层彻底剥夺追溯能力。

读,不只是把内容搬进窗口。读也可以是一套可展开、可验证、可回到来源的 context pipeline。