坑库
子 agent 的长产出别走返回值
长文档经返回值传递会被静默截断,子 agent 的工具也可能和你想的不一样。防止下游拿着残缺输入继续干
亲历产品组织阶段 · 通用依据 · 2026-10 工作记录更新于 2026-10-30
一句话规则
长产出让子 agent 写文件、只回摘要;要读的内容直接嵌进提示词
发生了什么
2026-10,我用一个编排脚本跑了 14 个 agent 写一份长文档。终稿 agent 的返回值被截断,只剩尾部 5072 个字符,前五节全没了,下游 agent 拿到的也是这份残稿。脚本层没有任何报错。
好在运行日志里还留着上游的草稿和勘误。我从日志里取出它们,再派 2 个 agent 重建全文,不用整个重跑。
同一个月,另一组工作流里出了相关的问题:子 agent 的工具和我预想的不一样,有的没有 Bash 和 Read。前两次,任务直接返回了空结果。第三次,一个评审子 agent 拿不到文件工具,就用浏览器工具在我真实的 Chrome 里打开 file:// 标签读文档,连开 70 次,我手动终止了它。
为什么会这样
返回值是给摘要用的通道,有长度上限。截断发生在返回这一层,编排脚本感知不到,也就不会报错。
提示词里写“去读某个文件”时,默认了子 agent 有文件工具。工具不够时,它不一定停下来报告,可能返回空结果,也可能用手头能用的工具绕过去,而绕的方式你事先想不到。
怎么做
提示词里写死产出方式:
把全文用 Write 写入 <绝对路径>,返回内容只写不超过 300 字的摘要。
文档最后一行写 END。下游读文件,不读返回值。接力之前先确认文件完整:
test -s "<绝对路径>" && tail -n 1 "<绝对路径>"要读的内容直接嵌进提示词。子 agent 要读文件或跑命令时,把内容贴进去,或者先派一个探针任务,确认它实际有哪些工具。
给子 agent 限定工具。自定义子 agent 时用 frontmatter 的 tools 字段列清楚,浏览器这类有外部影响的工具不要放进去。
疑似截断,先查运行日志。看每个 agent 的完整返回,从上游产物补救,不用整个重跑。