- 企业让智能体生成一份报告,常见的麻烦出现在最后一步: 文件确实生成了,却不知道归到哪个任务;链接发给了不该看到的人;流程结束后找不到产物;外部系统只收到一段文字,没有拿到文件。生成动作完成,交付链路仍有几项工作需要安排。
- 一个可复用的交付流程,可以按四个环节检查: 先确认文件对象,再关联任务与用户,接着选择交付出口,最后约定访问范围和保留规则。每一步都留下字段,后续节点和人工都能知道文件从哪里来、交给谁、还能用多久。

- 概念示意图: 生成、归属、出口、保留四个环节组成文件交付链路。
先把文件当成业务产物
报告、表格、图片和压缩包都需要一个可识别的文件对象。名称、扩展名、类型、大小、来源节点和生成时间,构成后续处理的基础信息。只把文件当成消息附件,后面很难做权限判断、状态更新和重新下载。
- ZGI 的工作流文件保存器可以接收模型返回的二进制内容或远程地址,创建带有文件类型、扩展名、大小和 URL 的文件对象。对于设计流程的人,第一步可以先约定输出字段: 哪个字段代表产物,哪个字段保存说明,哪个字段记录生成节点。
让产物跟任务和身份连起来
同一份报告可能来自不同用户、不同项目和不同运行实例。交付时至少需要保留任务标识、用户或租户上下文,以及生成它的运行记录。这样,用户打开文件时能对应到自己的任务,管理员回溯时也能找到产生文件的那次执行。
文件关联还影响后续动作。审批节点需要知道审查哪份文件,通知节点需要知道把哪个链接发给谁,归档节点需要知道文件属于哪条业务记录。字段缺失时,流程容易出现"消息发出去了,文件却对不上"的情况。
| 环节 | 要留下的信息 | 常见风险 | 适合的检查方式 |
|---|---|---|---|
| 生成 | 文件类型、名称、大小、来源节点 | 输出只有文本,文件字段为空 | 查看节点输出与文件对象 |
| 归属 | 任务、用户、租户、运行标识 | 文件串到别的任务 | 用不同身份跑最小样本 |
| 出口 | 下载、通知、系统写回 | 下游只收到说明文字 | 检查出口节点是否读取文件字段 |
| 保留 | 访问范围、有效期、清理规则 | 链接过期或长期暴露 | 明确生命周期并做过期测试 |
选择合适的交付出口
内部协作可以发送下载链接,业务系统更适合接收文件标识或结构化字段,归档场景则需要写回指定记录。出口的选择取决于接收方怎样继续处理,不能只看当前页面是否能打开。
签名链接适合临时访问,调用方拿到链接后不需要暴露底层存储细节。若流程需要长期留存,可以把文件标识写入业务记录,再由系统在权限校验后生成访问地址。具体有效期和访问方式,应结合企业部署配置确认。
把失败情况写进流程
- 生成成功、上传失败、通知失败和权限拒绝,属于不同状态。后续节点需要知道当前状态,人工也需要看到失败发生在哪一步。可以为文件交付增加状态字段和错误说明: 生成是否完成,出口是否确认,是否等待人工处理。
ZGI 的运行历史输出支持记录生成文件信息,排查时可以把运行记录、文件对象和下游节点放在一起查看。遇到用户说"链接打不开",先确认文件是否存在,再确认链接是否过期,最后检查访问身份,定位会更快。
用三组测试覆盖交付边界
上线前准备正常文件、空文件和超出限制的文件各一组;再用不同用户、不同租户和过期时间做组合测试。记录生成结果、任务归属、出口响应和访问结果,形成一张交付验收表。
- 这类测试能提前暴露几个容易忽略的细节: 模型返回的文件扩展名是否正确,远程地址是否能被服务端读取,签名链接是否按预期失效,通知消息是否携带了正确文件。问题越靠近生成环节发现,修改成本越低。
文件交付安排清楚后,报告才能真正进入业务。生成节点负责产出,任务与身份负责归属,出口负责送达,生命周期负责后续访问。把四个环节写进 Workflow,团队就有了一套可复查的处理路径。
GitHub:github.com/zgiai/zgi
Gitee:gitee.com/zgiai/zgi