让 AI Agent 读写 Office 文档、看懂大图:几个绕开模型硬约束的工程技巧

一、模型读不了二进制文件?用「格式桥接」消化掉

很多 Agent 的 read 工具会直接拒绝二进制文件 ,导致 .docx / .xlsx 这类常见文档无法被模型读取。一个务实的解法是不引入重型依赖(MS Office / MCP 服务器),而是用纯 Python 脚本做格式桥接

复制代码
.docx  →  Markdown   (docx2md.py)
.xlsx  →  CSV        (xlsx2csv.py,每 sheet 一个文件)
Markdown → .docx     (md2docx.py)
CSV     → .xlsx      (csv2xlsx.py,每个 CSV 一个 sheet)

关键设计取舍:

  • 读取方向 :先转成纯文本/Markdown,让模型用普通 read 工具读,绕开二进制限制。
  • 写入方向 :让模型先产出 .md / .csv,再脚本转回 Office 格式。
  • 诚实标注有损 :这类转换是 lossy 的------复杂样式、内嵌图片、宏都不保留;编号列表会被 Markdown 渲染器重新编号而非保留原值;CSV 转 xlsx 时 007 会丢前导零、16 位以上 ID 会撞 Excel 的 15 位精度。需要高保真往返时,应明确指向更重的方案(如 MCP 文档服务器)。
  • 遗留格式兜底.doc / .xls 老格式脚本不处理,但可提供通过 Word/Excel COM 先转 .docx/.xlsx 的兜底路径。

核心思路:把「模型读不了二进制」这个硬约束,用一层薄薄的转换脚本消化掉,而不是让 Agent 每次去猜怎么处理。

二、视觉模型的两个硬限制与「切图」解法

处理视觉输入时,很多模型有两个硬性限制

  1. 拒绝 PDF 输入------只接受 JPEG/PNG/GIF/WebP,PDF 必须先栅格化成 PNG。
  2. 每张图会被降采样到约 800×800 的像素预算------大图里的小字会糊到认不出。

第二个限制尤其反直觉:很多框架本身会做自动 resize(如 2000×2000 / 5MiB),所以上传超大图不是真问题,真正的坑是模型内部的 800×800 降采样

解法是切图(tiling) :把大图切成 N×N 的带重叠网格,让每一块 tile 各自拥有一个 800×800 的预算

复制代码
PDF → PNG 页面      (pdf2png.py,--zoom 控制分辨率)
大图 → 重叠 tiles   (tile.py,--grid NxN,--overlap 0.10)

配套的决策表很清晰:

输入 动作
小图(长边 < ~1600px) 直接发,无需预处理
大图 / 密集小字 切成 2×2(或更细)网格
网格大小 N = ceil(长边 / 800),保证每块 ≤ ~800px
PDF 先栅格化成 PNG,页面大再切

10% 的重叠是为了防止文字正好跨在切割线上被截断。关键洞察是:「切图」解决的是可读性,不是文件大小------这是很多人会搞反的地方。

三、按模型成本差异化压缩上下文

当系统里有多个成本差异很大的模型时,上下文压缩策略可以按模型差异化。逻辑很直接:

贵的模型(如 pro)输入成本可能是便宜模型(如 flash)的 3 倍 ,所以贵模型的会话应该更早压缩,缩短昂贵的上下文窗口。

实现上,压缩工具支持按 providerID/modelID 精确覆盖阈值:

jsonc 复制代码
"modelMaxLimits": { "deepseek/deepseek-v4-pro": 55000 },
"modelMinLimits": { "deepseek/deepseek-v4-pro": 26000 }

贵的模型在 55K 就触发压缩(全局默认 77K),便宜的保持 77K/38K 基线。这是把「成本」这个维度显式编码进上下文管理策略------不是一刀切,而是让贵的模型更早瘦身。

四、配套的细节打磨

同一批工作里还有几处值得记录的工程细节:

  • 图片 token 成本上界:给视觉模型加图片附件配置------超过一定尺寸/字节数先自动 resize。因为模型内部会降采样,超大上传只是浪费 base64 字节。
  • 共享词汇表(glossary):为「模块 / 接口 / 深度 / 接缝」这类架构术语建立精确的共享词汇,让设计讨论更具体,而不是各说各话。
  • 调试纪律 :先建一个「能变红」的反馈回路再理论化------没有能复现失败的命令,任何假设都不值得验证;调试日志用 [DEBUG-<hex>] 标签,方便一次 grep 清理。
  • 易变区纪律:时间戳、随机 ID、动态文件列表这类易变内容要放在 payload 尾部,避免破坏 prompt-cache 的前缀命中。
  • 验证预算:明确「能通过 typecheck」不等于行为变更的 QA,要为变更预先设定最小非重复的验证证据。

小结

这些技巧背后有几条可复用的方法论:

  1. 模型硬约束要用工程手段消化,而不是让 Agent 硬扛------二进制文档用转换脚本桥接,800×800 降采样用切图破解。
  2. 成本要显式编码进策略------按模型差异化压缩阈值,贵的模型更早瘦身。
  3. 诚实标注能力边界------有损转换就明说,需要高保真时指向更重的方案。
  4. 先建反馈回路再调试------没有能复现失败的「红灯」命令,就不要开始猜根因。

项目地址:https://github.com/znlgis/my-opencode-deepseek-config

相关推荐
迪飞特科技3 小时前
开源大模型商用风险:开源协议梳理与项目避坑要点
开源·开源协议·deepseek
mbshqqb3 小时前
【无标题】
opencode
空堂与归7 小时前
南大 AI 课 Token 自费:用缓存命中率算一学期账单
人工智能·缓存·ai·deepseek
张忠琳1 天前
【deepseek-harness】Cordis 开源项目深度介绍
ai·agent·deepseek·harness·cordis·dsh
阿图灵1 天前
MakerHub 开发报告:v1.0.0 → v1.1.0(单日 26 提交,图片渲染、目录跟随与数据真实化)
前端·vue·个人网站·deepseek·开发报告
大模型真好玩1 天前
DeepSeek Harness 入门很简单(一)——认识DeepSeek Harness并安装
人工智能·agent·deepseek
程序员三明治1 天前
【体验毛坯房】Deep Harness 入门教程
java·人工智能·后端·大模型·llm·deepseek·dsh
苏灵凯1 天前
IT疑难杂症诊疗室:从故障定位到根治的技术实战指南
笔记·ai·域名·agent·deepseek
我才是银古1 天前
多智能体编排配置的工程化实践:权限、成本、上下文与可复现交付
deepseek·opencode