InternAgentS 跑出来的结果没法用,多数时候不是模型能力问题,而是运行前有两件事没固定:材料到底放在哪几个目录里,以及输出要长成什么样。材料散在下载目录、聊天记录、临时截图中,输出目标只写一句“整理一下”,工具只能自己猜,猜出来的东西自然对不上你的预期。上手前先把这两个入口写清楚——一个任务对应一个目录,一份说明对应一份可核对的输出清单——再让它跑。
把每个任务收进独立目录,原文、笔记、中间结果、最终输出分层存放;输出目标写成能被逐项核对的句子,标清格式、字段、篇幅和引用要求。这两件事在运行前固定下来,材料散、目标糊导致的返工通常能少很多。它不保证结果一定正确:材料本身读不到、范围没写清楚,后面照样会翻车,所以每次运行后仍要按检查点逐条核对。
把散落材料收进一个任务目录
先给这次运行建一个独立目录,目录名只带日期或任务编号,不要留空格和全角符号,避免路径在命令、脚本、日志里被拆开。目录内部按用途分层,原文和中间结果分开,最终输出单独一层,这样回看时能立刻分辨哪份是输入、哪份是工具生成的。
task-20240101/
├── 00_raw/ 原文,只读,不再覆盖
├── 10_notes/ 人工笔记、批注、补充说明
├── 20_intermediate/ 工具产出的中间结果、切分片段
├── 30_output/ 最终输出,只放验收通过的文件
└── task.md 任务说明:目标、范围、禁止项几条整理规则值得先定下来:00_raw 只读,需要修改就复制到 10_notes 再改,保留原始版本可回溯;20_intermediate 与 30_output 不混放,中间结果可以覆盖,最终输出不做原地改写;每个任务的目录不跨用,不要在同一个目录里跑两个目标不同的任务。目录结构确认后,用一条命令列一遍文件清单,确认没有漏拷或多拷:
find task-20240101 -type f | sort这一步的验证方式很直接:清单里的文件数量和来源文件夹能对上,说明材料收拢完成;对不上就先补材料,不要带着缺口开跑。
给输出目标写成可检查的句子
“总结一下这些材料”没法验收,“输出一份包含三段结构、正文 600 到 1000 字、每条结论带来源标注的 Markdown 文件”才能验收。差别在于后者把检查点显式写出来了,跑完你能逐条打勾,而不是凭感觉说“好像不太对”。
对比一下两种写法:
- 模糊目标:帮我把这批材料整理成一份总结。
- 可验收目标:在 30_output/summary.md 输出 Markdown,包含“背景 / 结论 / 待确认”三级标题;正文 600 到 1000 字;每条结论后另起一行写 source: 文件名#段落号;材料中未出现的数字不得写入。
可验收目标通常要覆盖这几类检查点:格式(Markdown、CSV、JSON、纯文本)、落盘路径与文件名、字段或表头(CSV 列名、JSON 的 key)、篇幅区间(字数或条目数)、必须出现的结构(固定小节标题)、必须带上的引用(来源文件名加段落或行号)、禁止出现的内容。把这些写成配置或写进 task.md 都可以,关键是运行时能读到、结束后能比对。
output:
path: 30_output/summary.md
format: markdown
required_sections: [背景, 结论, 待确认]
length_chars: [600, 1000]
cite: "source: <文件名>#<段落号>"验收动作建议固定成两条:检查文件是否落在指定路径且结构齐全;随机抽三条结论,回到 00_raw 或 10_notes 里核对来源是否真实存在。抽检不通过,先改任务说明和材料,而不是反复重跑指望结果变好。
确认材料格式在工具里能被读到
材料格式问题通常到运行中途才暴露:文件明明在目录里,工具读出来却是空字符串或乱码。开跑前先做一次最小读取,把每个文件的前 200 字打印出来看一眼,比事后排查省事得多。
常见格式的观察点:
- 纯文本 / Markdown:先确认编码是 UTF-8,中文没乱码,行尾没有异常字符。
- PDF:确认是否存在文本层。能选中文字说明有文本层;整页选中无内容,多半是扫描件,需要先走 OCR 或人工转录。
- DOCX:正文通常能读,但批注、修订记录、文本框里的内容不一定被提取,关键信息别只放在批注里。
- XLSX / CSV:确认读的是哪个 sheet、表头在第几行、合并单元格是否被拆开;CSV 还要确认分隔符和 BOM。
- 图片 / 截图:默认按二进制处理,读不到文字,需要先转成文本或在 10_notes 里手工补录关键信息。
- HTML / 网页另存:正文常混着导航和样式,必要时先抽正文再放进 00_raw。
读不到时的替代处理,按轻到重排:先转成纯文本或 Markdown 落到 00_raw;扫描 PDF 先 OCR,OCR 结果人工校对一遍再入库;表格统一成 UTF-8 编码的 CSV,固定第一行为表头;大文件切片时保留原始行号或页码,方便后续引用能对回原文。这些转换产物建议放在 00_raw 的对应子目录,不要覆盖原始文件。
运行前把任务范围和禁止项一起写进说明
材料收好、输出写好,还差一步:明确这次运行只能用哪些材料、哪些事不许做。范围不写,工具倾向于用常识补全空白,补出来的内容看着合理,但对不上你的材料,反而更难发现。
task.md 里建议至少写清这几条:可用材料范围(只允许读哪些目录、哪些文件)、不得自行补充(材料中没有的事实、数字、结论不许写,遇到就写“材料未提及”)、引用要求(每条结论标注来源文件和段落或行号)、写入限制(不改 00_raw,不读写其他任务目录,只向 30_output 落盘)。
任务范围:
- 只能使用 00_raw/ 和 10_notes/ 中的内容。
- 材料中没有的信息,写“材料未提及”,不要用常识补。
- 每个结论后另起一行:source: <文件名>#<段落或行号>。
- 不要修改 00_raw/ 下任何文件,不要读取 20_intermediate/。
- 输出写入 30_output/summary.md。验证方式是在结果里反向找证据:看到一条结论,就在可用目录里找它的出处;找不到出处,说明越界补充了,应当退回修改说明或补材料。范围说明和材料目录、输出目标一起在运行前固定,中途临时改说明会导致前后两次结果不可比,建议改完重新完整跑一轮。